diff --git a/Configuration/ReadMe.txt b/Configuration/ReadMe.txt deleted file mode 100644 index 592e5e1..0000000 --- a/Configuration/ReadMe.txt +++ /dev/null @@ -1 +0,0 @@ - 3.0 \ No newline at end of file diff --git "a/Configuration/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 3.0.cf" "b/Configuration/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 3.0.cf" deleted file mode 100644 index c923fbe..0000000 Binary files "a/Configuration/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 3.0.cf" and /dev/null differ diff --git "a/TestingTool_3-0/src/CommonForms/\320\236\320\261\321\211\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\270\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Form.form" "b/TestingTool_3-0/src/CommonForms/\320\236\320\261\321\211\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\270\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Form.form" index 5ea9094..c247ab1 100644 --- "a/TestingTool_3-0/src/CommonForms/\320\236\320\261\321\211\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\270\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Form.form" +++ "b/TestingTool_3-0/src/CommonForms/\320\236\320\261\321\211\320\270\320\265\320\235\320\260\321\201\321\202\321\200\320\276\320\271\320\270\320\241\320\270\321\201\321\202\320\265\320\274\321\213/Form.form" @@ -788,6 +788,88 @@ DontUse + + ГруппаПолнотекстовыйПоиск + 54 + + ИспользоватьПолнотекстовыйПоиск + 51 + true + true + + true + + + НаборКонстант.ИспользоватьПолнотекстовыйПоиск + + Right + + РасширеннаяПодсказка + 53 + true + true + + true + + Label + true + true + + Left + + + + КонтекстноеМеню + 52 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Полнотекстовый поиск</value> + + + Группа2РасширеннаяПодсказка + 55 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + WeakSeparation + true + true + true + Auto + DontUse + + ФормаКоманднаяПанель -1 diff --git "a/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/Form.form" "b/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/Form.form" new file mode 100644 index 0000000..41c9162 --- /dev/null +++ "b/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/Form.form" @@ -0,0 +1,905 @@ + + + + СостояниеПоиска + 75 + + СостояниеПоискаПредупреждение + 77 + + <key>ru</key> + <value>Состояние поиска предупреждение</value> + + true + true + + true + + + СостояниеПоискаПредупреждениеРасширеннаяПодсказка + 79 + true + true + + true + + Label + true + true + + Left + + + + СостояниеПоискаПредупреждениеКонтекстноеМеню + 78 + true + true + + true + + true + + true + true + + + CommonPicture.Предупреждение + + + + + СостояниеПоискаПредставление + 80 + true + true + + true + + + + СостояниеПоискаПредставление + + + None + + СостояниеПоискаПредставлениеРасширеннаяПодсказка + 82 + true + true + + true + + Label + true + true + + Left + + + + СостояниеПоискаПредставлениеКонтекстноеМеню + 81 + true + true + + true + + true + + LabelField + Center + Enter + true + Left + true + + true + + + true + true + + true + + + <key>ru</key> + <value>Состояние поиска</value> + + true + + СостояниеПоискаРасширеннаяПодсказка + 76 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + Center + true + true + + Style.ЦветФонаПредупреждения + + Auto + DontUse + + + + Шапка + 42 + VeryHigh + + СтрокаПоиска + 3 + true + true + + true + + + + СтрокаПоиска + + + None + + ru + Введите искомый текст или часть фразы + + + СтрокаПоискаExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + + СтрокаПоискаКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + + ChoiceProcessing + СтрокаПоискаОбработкаВыбора + + 40 + true + true + true + true + true + + String + + + + Style.BorderColor + + + ru + Введите искомый текст или часть фразы + + + + + Найти + 4 + true + true + + true + + false + + НайтиExtendedTooltip + 54 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыполнитьПоиск + PictureAndText + true + 10 + true + 1 + true + UserCmds + + Style.ButtonBackColor + + + Style.BorderColor + + + + Справка + 44 + true + true + + true + + + СправкаExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.StandardCommand.Help + Picture + true + true + UserCmds + + Style.ButtonTextColor + + + Style.ButtonBackColor + + + Style.BorderColor + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ШапкаРасширеннаяПодсказка + 52 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + DontUse + + + + ОбластьПоиска + 73 + + ОбластиПоискаПредставление + 70 + + <key>ru</key> + <value>Область поиска</value> + + true + true + + true + + + + ОбластиПоискаПредставление + + + + ОбластиПоискаПредставлениеРасширеннаяПодсказка + 72 + true + true + + true + + Label + true + true + + Left + + + + ОбластиПоискаПредставлениеКонтекстноеМеню + 71 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + + Click + ОбластиПоискаПредставлениеНажатие + + true + true + + + true + + true + + + <key>ru</key> + <value>Область поиска</value> + + + ОбластьПоискаРасширеннаяПодсказка + 74 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + DontUse + + + + ГруппаИнформацияОНайденном + 31 + + ГруппаНавигация + 51 + + Предыдущие + 8 + true + true + + true + + false + + ПредыдущиеРасширеннаяПодсказка + 58 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Предыдущие + Auto + true + true + UserCmds + + Style.ButtonBackColor + + + Style.BorderColor + + + + Следующие + 9 + true + true + + true + + false + + СледующиеРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Следующие + PictureAndText + true + true + UserCmds + + Style.ButtonBackColor + + + Style.BorderColor + + + true + true + + true + + + <key>ru</key> + <value>Навигация</value> + + false + + ГруппаНавигацияExtendedTooltip + 57 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Left + + + + ИнформацияОНайденномПредставление + 16 + true + true + + true + + + + ИнформацияОНайденномПредставление + + + None + + ИнформацияОНайденномПредставлениеРасширеннаяПодсказка + 60 + true + true + + true + + Label + true + true + + Left + + + + ИнформацияОНайденномПредставлениеКонтекстноеМеню + 17 + true + true + + true + + true + + LabelField + Enter + true + Left + true + Left + + true + true + + Style.ПоясняющийТекст + + + + true + true + + true + + + <key>ru</key> + <value>Информация о найденном</value> + + true + + ГруппаИнформацияОНайденномExtendedTooltip + 56 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + AlwaysHorizontal + true + true + Auto + DontUse + + + + HTMLСтраницаПредставление + 39 + VeryHigh + true + true + + true + + + + HTMLСтраницаПредставление + + + None + + HTMLСтраницаПредставлениеРасширеннаяПодсказка + 61 + true + true + + true + + Label + true + true + + Left + + + + HTMLСтраницаПредставлениеКонтекстноеМеню + 40 + true + true + + true + + true + + HTMLDocumentField + Enter + true + Left + true + + + OnClick + HTMLТекстПриНажатии + + 50 + true + 10 + true + true + true + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + Vertical + true + true + UseIfNecessary + true + true + + Объект + + <key>ru</key> + <value>Объект</value> + + 1 + + DataProcessorObject.ПолнотекстовыйПоискВДанных + + + true + + + true + +
true
+
+ + СтрокаПоиска + + <key>ru</key> + <value>Строка поиска</value> + + 2 + + String + + + + true + + + true + + + + ИнформацияОНайденномПредставление + 7 + + String + + + + true + + + true + + + + HTMLСтраницаПредставление + + <key>ru</key> + <value>HTMLСтраница представление</value> + + 14 + + String + + + + true + + + true + + + + КонтейнерСостояний + + <key>ru</key> + <value>Контейнер состояний</value> + + 6 + + + true + + + true + + + + ОбластиПоискаПредставление + + <key>ru</key> + <value>Области поиска представление</value> + + 16 + + String + + + + true + + + true + + + + СостояниеПоискаПредставление + + <key>ru</key> + <value>Состояние поиска представление</value> + + 17 + + String + + + + true + + + true + + + + ВыполнитьПоиск + + <key>ru</key> + <value>Найти</value> + + 2 + + ru + Найти текст + + + true + + + StdPicture.Find + + + + ВыполнитьПоиск + + + Text + DontUse + + + Следующие + + <key>ru</key> + <value>Следующие</value> + + 3 + + ru + Следующие результаты поиска + + + true + + + StdPicture.MoveRight + + + + Следующие + + + Picture + DontUse + + + Предыдущие + + <key>ru</key> + <value>Предыдущие</value> + + 4 + + ru + Предыдущие результаты поиска + + + true + + + StdPicture.MoveLeft + + + + Предыдущие + + + Picture + DontUse + + + ПереданнаяСтрокаПоиска + + String + + + + + + + + +
diff --git "a/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/Help/ru.html" "b/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/Help/ru.html" new file mode 100644 index 0000000..af376da --- /dev/null +++ "b/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/Help/ru.html" @@ -0,0 +1,23 @@ + +

Предназначена для полнотекстового поиска.

+

Можно выполнять поиск прямо с Начальной страницы.

+

Полнотекстовый поиск

+

Ограничение области поиска

+

Ошибки поиска и методы исправления

+

См. также:

+ \ No newline at end of file diff --git "a/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/Module.bsl" "b/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/Module.bsl" new file mode 100644 index 0000000..56d57cb --- /dev/null +++ "b/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/Module.bsl" @@ -0,0 +1,660 @@ + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + //Если ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда + // Возврат; + //КонецЕсли; + + КонтейнерСостояний = Новый Структура; + КонтейнерСостояний.Вставить("СостояниеПоиска", ПолнотекстовыйПоискСервер.СостояниеПолнотекстовогоПоиска()); + // Возможные значения: + // "ПоискРазрешен" + // "ВыполняетсяОбновлениеИндекса" + // "ВыполняетсяСлияниеИндекса" + // "ТребуетсяОбновлениеИндекса" + // "ОшибкаНастройкиПоиска" + // "ПоискЗапрещен". + КонтейнерСостояний.Вставить("ИскатьВРазделах", Ложь); + КонтейнерСостояний.Вставить("ОбластиПоиска", Новый СписокЗначений); // Идентификаторы объектов метаданных. + КонтейнерСостояний.Вставить("ТекущаяПозиция", 0); + КонтейнерСостояний.Вставить("Количество", 0); + КонтейнерСостояний.Вставить("ПолноеКоличество", 0); + КонтейнерСостояний.Вставить("КодОшибки", ""); + // Возможные значения: + // "ОшибкаПоиска" + // "СлишкомМногоРезультатов" + // "НичегоНеНайдено" + КонтейнерСостояний.Вставить("ОписаниеОшибки", ""); + КонтейнерСостояний.Вставить("РезультатыПоиска", Новый Массив); // см. ВыполнитьПолнотекстовыйПоиск. + КонтейнерСостояний.Вставить("ИсторияПоиска", Новый Массив); // Список поисковых фраз. + + ЗагрузитьНастройкиИИсториюПоиска(КонтейнерСостояний); + + Если Не ПустаяСтрока(Параметры.ПереданнаяСтрокаПоиска) Тогда + СтрокаПоиска = Параметры.ПереданнаяСтрокаПоиска; + ПриВыполненииПоискаНаСервере(КонтейнерСостояний, СтрокаПоиска); + КонецЕсли; + + ОбновитьИсториюПоиска(Элементы.СтрокаПоиска, КонтейнерСостояний); + ОбластиПоискаПредставление = ПредставлениеОбластиПоиска(КонтейнерСостояний); + ОбновитьДоступностьКнопокНавигации(Элементы.Следующие, Элементы.Предыдущие, КонтейнерСостояний); + ИнформацияОНайденномПредставление = ПредставлениеИнформацииОНайденном(КонтейнерСостояний); + HTMLСтраницаПредставление = ПредставлениеHTMLСтраницы(СтрокаПоиска, КонтейнерСостояний); + СостояниеПоискаПредставление = ПредставлениеСостоянияПоиска(КонтейнерСостояний); + ОбновитьВидимостьСостояниеПоиска(КонтейнерСостояний); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + //Если ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда + // Отказ = Истина; + // ПоказатьПредупреждение(, НСтр("ru = 'Недостаточно прав для выполнения поиска'")); + //КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СтрокаПоискаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + // Обход ошибки платформы. +#Если ВебКлиент Тогда + Если Элементы.СтрокаПоиска.СписокВыбора.Количество() = 1 Тогда + ВыбранноеЗначение = Элемент.ТекстРедактирования; + КонецЕсли; +#КонецЕсли + + СтрокаПоиска = ВыбранноеЗначение; + ПриВыполненииПоиска("ПерваяЧасть"); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбластиПоискаПредставлениеНажатие(Элемент, СтандартнаяОбработка) + + //СтандартнаяОбработка = Ложь; + // + //ОбластиПоиска = КонтейнерСостояний.ОбластиПоиска; + //ИскатьВРазделах = КонтейнерСостояний.ИскатьВРазделах; + // + //ПараметрыОткрытия = Новый Структура; + //ПараметрыОткрытия.Вставить("ОбластиПоиска", ОбластиПоиска); + //ПараметрыОткрытия.Вставить("ИскатьВРазделах", ИскатьВРазделах); + // + //Оповещение = Новый ОписаниеОповещения("ПослеПолученияНастроекОбластиПоиска", ЭтотОбъект); + // + //ОткрытьФорму("Обработка.ПолнотекстовыйПоискВДанных.Форма.ВыборОбластиПоиска", + // ПараметрыОткрытия,,,,, Оповещение); + +КонецПроцедуры + +&НаКлиенте +Процедура HTMLТекстПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + СсылкаHTML = ДанныеСобытия.Anchor; + + Если СсылкаHTML = Неопределено Тогда + Возврат; + КонецЕсли; + + Оповещение = Новый ОписаниеОповещения("ПослеОткрытияНавигационнойСсылки", ЭтотОбъект); + ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку(СсылкаHTML.href, Оповещение); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполнитьПоиск(Команда) + + ПриВыполненииПоиска("ПерваяЧасть"); + +КонецПроцедуры + +&НаКлиенте +Процедура Предыдущие(Команда) + + ПриВыполненииПоиска("ПредыдущаяЧасть"); + +КонецПроцедуры + +&НаКлиенте +Процедура Следующие(Команда) + + ПриВыполненииПоиска("СледующаяЧасть"); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область СлужебныеОбработчикиСобытий + +&НаКлиенте +Процедура ПослеПолученияНастроекОбластиПоиска(Результат, ДополнительныеПараметры) Экспорт + + Если ТипЗнч(Результат) = Тип("Структура") Тогда + ПриУстановкеОбластиПоиска(Результат); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриУстановкеОбластиПоиска(НастройкиОбластиПоиска) + + СохранитьНастройкиПоиска(НастройкиОбластиПоиска.ИскатьВРазделах, НастройкиОбластиПоиска.ОбластиПоиска); + + ЗаполнитьЗначенияСвойств(КонтейнерСостояний, НастройкиОбластиПоиска, + "ОбластиПоиска, ИскатьВРазделах"); + + ОбластиПоискаПредставление = ПредставлениеОбластиПоиска(КонтейнерСостояний); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриВыполненииПоиска(НаправлениеПоиска) + + Если ПустаяСтрока(СтрокаПоиска) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Введите, что нужно найти'")); + Возврат; + КонецЕсли; + + Если ОбщегоНазначенияСлужебныйКлиент.ЭтоНавигационнаяСсылка(СтрокаПоиска) Тогда + ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку(СтрокаПоиска); + СтрокаПоиска = ""; + Возврат; + КонецЕсли; + + ПриВыполненииПоискаНаСервере(КонтейнерСостояний, СтрокаПоиска, НаправлениеПоиска); + + ПодключитьОбработчикОжидания("ПослеВыполненияПоиска", 0.1, Истина); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ПриВыполненииПоискаНаСервере(КонтейнерСостояний, СтрокаПоиска, НаправлениеПоиска = "ПерваяЧасть") + + СохранитьСтрокуПоискаВИстории(СтрокаПоиска, КонтейнерСостояний.ИсторияПоиска); + + ПараметрыПоиска = ПолнотекстовыйПоискСервер.ПараметрыПоиска(); + ЗаполнитьЗначенияСвойств(ПараметрыПоиска, КонтейнерСостояний, + "ТекущаяПозиция, ИскатьВРазделах, ОбластиПоиска"); + ПараметрыПоиска.СтрокаПоиска = СтрокаПоиска; + ПараметрыПоиска.НаправлениеПоиска = НаправлениеПоиска; + + РезультатПоиска = ПолнотекстовыйПоискСервер.ВыполнитьПолнотекстовыйПоиск(ПараметрыПоиска); + + ЗаполнитьЗначенияСвойств(КонтейнерСостояний, РезультатПоиска, + "ТекущаяПозиция, Количество, ПолноеКоличество, КодОшибки, ОписаниеОшибки, РезультатыПоиска"); + + КонтейнерСостояний.СостояниеПоиска = ПолнотекстовыйПоискСервер.СостояниеПолнотекстовогоПоиска(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеВыполненияПоиска() + + ОбновитьИсториюПоиска(Элементы.СтрокаПоиска, КонтейнерСостояний); + ОбновитьДоступностьКнопокНавигации(Элементы.Следующие, Элементы.Предыдущие, КонтейнерСостояний); + ИнформацияОНайденномПредставление = ПредставлениеИнформацииОНайденном(КонтейнерСостояний); + HTMLСтраницаПредставление = ПредставлениеHTMLСтраницы(СтрокаПоиска, КонтейнерСостояний); + СостояниеПоискаПредставление = ПредставлениеСостоянияПоиска(КонтейнерСостояний); + ОбновитьВидимостьСостояниеПоиска(КонтейнерСостояний); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеОткрытияНавигационнойСсылки(ПриложениеЗапущено, Контекст) Экспорт + + Если Не ПриложениеЗапущено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Открытие объектов данного типа не предусмотрено'")); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область Представления + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьИсториюПоиска(Элемент, КонтейнерСостояний) + + ИсторияПоиска = КонтейнерСостояний.ИсторияПоиска; + + Если ТипЗнч(ИсторияПоиска) = Тип("Массив") Тогда + Элемент.СписокВыбора.ЗагрузитьЗначения(ИсторияПоиска); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПредставлениеОбластиПоиска(КонтейнерСостояний) + + ИскатьВРазделах = КонтейнерСостояний.ИскатьВРазделах; + ОбластиПоиска = КонтейнерСостояний.ОбластиПоиска; + + УказаныОбластиПоиска = ОбластиПоиска.Количество() > 0; + + Если Не ИскатьВРазделах Или Не УказаныОбластиПоиска Тогда + Возврат НСтр("ru = 'Везде'"); + КонецЕсли; + + Если ОбластиПоиска.Количество() < 5 Тогда + ПредставлениеОбластиПоиска = ""; + Для каждого Область Из ОбластиПоиска Цикл + ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(Область.Значение); + ПредставлениеОбластиПоиска = ПредставлениеОбластиПоиска + ПредставлениеФормыСписка(ОбъектМетаданных) + ", "; + КонецЦикла; + Возврат Лев(ПредставлениеОбластиПоиска, СтрДлина(ПредставлениеОбластиПоиска) - 2); + КонецЕсли; + + Возврат НСтр("ru = 'В выбранных разделах'"); + +КонецФункции + +&НаСервереБезКонтекста +Функция ПредставлениеФормыСписка(ОбъектМетаданных) + + Если Не ПустаяСтрока(ОбъектМетаданных.РасширенноеПредставлениеСписка) Тогда + Представление = ОбъектМетаданных.РасширенноеПредставлениеСписка; + ИначеЕсли Не ПустаяСтрока(ОбъектМетаданных.ПредставлениеСписка) Тогда + Представление = ОбъектМетаданных.ПредставлениеСписка; + Иначе + Представление = ОбъектМетаданных.Представление(); + КонецЕсли; + + Возврат Представление; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьДоступностьКнопокНавигации(ЭлементКнопкиСледующие, ЭлементКнопкиПредыдущие, КонтейнерСостояний) + + Количество = КонтейнерСостояний.Количество; + + Если Количество = 0 Тогда + ЭлементКнопкиСледующие.Доступность = Ложь; + ЭлементКнопкиПредыдущие.Доступность = Ложь; + Иначе + + ПолноеКоличество = КонтейнерСостояний.ПолноеКоличество; + ТекущаяПозиция = КонтейнерСостояний.ТекущаяПозиция; + + ЭлементКнопкиСледующие.Доступность = (ПолноеКоличество - ТекущаяПозиция) > Количество; + ЭлементКнопкиПредыдущие.Доступность = (ТекущаяПозиция > 0); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеИнформацииОНайденном(КонтейнерСостояний) + + Количество = КонтейнерСостояний.Количество; + + Если Количество <> 0 Тогда + + ТекущаяПозиция = КонтейнерСостояний.ТекущаяПозиция; + ПолноеКоличество = КонтейнерСостояний.ПолноеКоличество; + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Показаны %1 - %2 из %3'"), + Формат(ТекущаяПозиция + 1, "ЧН=0; ЧГ="), + Формат(ТекущаяПозиция + Количество, "ЧН=0; ЧГ="), + Формат(ПолноеКоличество, "ЧН=0; ЧГ=")); + + КонецЕсли; + + Возврат ""; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеHTMLСтраницы(СтрокаПоиска, КонтейнерСостояний) + + КодОшибки = КонтейнерСостояний.КодОшибки; + + Если ПустаяСтрока(КодОшибки) Тогда + HTMLСтраница = НоваяHTMLСтраницаРезультата(КонтейнерСостояний); + Иначе + HTMLСтраница = НоваяHTMLСтраницаОшибки(КонтейнерСостояний); + КонецЕсли; + + Возврат HTMLСтраница; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция НоваяHTMLСтраницаРезультата(КонтейнерСостояний) + + ШаблонСтраницы = + " + | + | + | + | + | + |
+ |
    + |%Строки% + |
+ |
+ | + |"; + + ШаблонСтроки = + "
  • + |
    %Представление%
    + | %ОписаниеHTML% + |
  • "; + + ШаблонНеактивнойСтроки = + "
  • + |
    %Представление%
    + | %ОписаниеHTML% + |
  • "; + + РезультатыПоиска = КонтейнерСостояний.РезультатыПоиска; + ТекущаяПозиция = КонтейнерСостояний.ТекущаяПозиция; + + Строки = ""; + + Для каждого СтрокаРезультатаПоиска Из РезультатыПоиска Цикл + + Ссылка = СтрокаРезультатаПоиска.Ссылка; + Представление = СтрокаРезультатаПоиска.Представление; + ОписаниеHTML = СтрокаРезультатаПоиска.ОписаниеHTML; + + Если Ссылка = "#" Тогда + Строка = ШаблонНеактивнойСтроки; + Иначе + Строка = СтрЗаменить(ШаблонСтроки, "%Ссылка%", Ссылка); + КонецЕсли; + + Строка = СтрЗаменить(Строка, "%Представление%", Представление); + Строка = СтрЗаменить(Строка, "%ОписаниеHTML%", ОписаниеHTML); + + Строки = Строки + Строка; + + КонецЦикла; + + HTMLСтраница = СтрЗаменить(ШаблонСтраницы, "%Строки%", Строки); + HTMLСтраница = СтрЗаменить(HTMLСтраница , "%ТекущаяПозиция%", ТекущаяПозиция + 1); + + Возврат HTMLСтраница; + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция НоваяHTMLСтраницаОшибки(КонтейнерСостояний) + + ШаблонСтраницы = + " + | + | + | + | + | + |
    + |
    %1
    + |

    %2

    + |
    + | + |"; + + РекомендацииHTML = + НСтр("ru = '

    Рекомендации:

    + | + |
    Полное описание формата поисковых выражений
    '"); + + ОписаниеОшибки = КонтейнерСостояний.ОписаниеОшибки; + КодОшибки = КонтейнерСостояний.КодОшибки; + ИскатьВРазделах = КонтейнерСостояний.ИскатьВРазделах; + ОбластиПоиска = КонтейнерСостояний.ОбластиПоиска; + + УказаныОбластиПоиска = ОбластиПоиска.Количество() > 0; + + РекомендацияОбластиПоискаHTML = ""; + РекомендацияТекстЗапросаHTML = ""; + + Если КодОшибки = "НичегоНеНайдено" Тогда + + Если ИскатьВРазделах И УказаныОбластиПоиска Тогда + + РекомендацияОбластиПоискаHTML = + НСтр("ru = '
  • Уточните область поиска.
    + |Попробуйте выбрать больше областей поиска или все разделы.
  • '"); + КонецЕсли; + + РекомендацияТекстЗапросаHTML = + НСтр("ru = '
  • Упростите запрос, исключив из него какое-либо слово.
  • '"); + + ИначеЕсли КодОшибки = "СлишкомМногоРезультатов" Тогда + + Если Не ИскатьВРазделах Или Не УказаныОбластиПоиска Тогда + + РекомендацияОбластиПоискаHTML = + НСтр("ru = '
  • Уточните область поиска.
    + |Попробуйте выбрать область поиска, задав точный раздел или список.
  • '"); + КонецЕсли; + + КонецЕсли; + + РекомендацииHTML = СтрЗаменить(РекомендацииHTML, "%РекомендацияОбластиПоиска%", РекомендацияОбластиПоискаHTML); + РекомендацииHTML = СтрЗаменить(РекомендацииHTML, "%РекомендацияТекстЗапроса%", РекомендацияТекстЗапросаHTML); + + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтраницы, ОписаниеОшибки, РекомендацииHTML); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Функция ПредставлениеСостоянияПоиска(КонтейнерСостояний) + + СостояниеПоиска = КонтейнерСостояний.СостояниеПоиска; + + Если СостояниеПоиска = "ПоискРазрешен" Тогда + Представление = ""; + ИначеЕсли СостояниеПоиска = "ВыполняетсяОбновлениеИндекса" + Или СостояниеПоиска = "ВыполняетсяСлияниеИндекса" + Или СостояниеПоиска = "ТребуетсяОбновлениеИндекса" Тогда + + Представление = НСтр("ru = 'Результаты поиска могут быть неточными, повторите поиск позднее.'"); + ИначеЕсли СостояниеПоиска = "ОшибкаНастройкиПоиска" Тогда + + // Для не администратора + Представление = НСтр("ru = 'Полнотекстовый поиск не настроен, обратитесь к администратору.'"); + + ИначеЕсли СостояниеПоиска = "ПоискЗапрещен" Тогда + Представление = НСтр("ru = 'Полнотекстовый поиск отключен.'"); + КонецЕсли; + + Возврат Представление; + +КонецФункции + +&НаСервере +Процедура ОбновитьВидимостьСостояниеПоиска(КонтейнерСостояний) + + СостояниеПоиска = КонтейнерСостояний.СостояниеПоиска; + Элементы.СостояниеПоиска.Видимость = (СостояниеПоиска <> "ПоискРазрешен"); + +КонецПроцедуры + +#КонецОбласти + +#Область БизнесЛогика + +&НаСервереБезКонтекста +Процедура ЗагрузитьНастройкиИИсториюПоиска(НастройкиПоиска) + + ИсторияПоиска = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ПолнотекстовыйПоискСтрокиПолнотекстовогоПоиска", ""); + СохраненныеНастройкиПоиска = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("НастройкиПолнотекстовогоПоиска", ""); + + ИскатьВРазделах = Неопределено; + ОбластиПоиска = Неопределено; + + Если ТипЗнч(СохраненныеНастройкиПоиска) = Тип("Структура") Тогда + СохраненныеНастройкиПоиска.Свойство("ИскатьВРазделах", ИскатьВРазделах); + СохраненныеНастройкиПоиска.Свойство("ОбластиПоиска", ОбластиПоиска); + КонецЕсли; + + НастройкиПоиска.ИскатьВРазделах = ?(ИскатьВРазделах = Неопределено, Ложь, ИскатьВРазделах); + НастройкиПоиска.ОбластиПоиска = ?(ОбластиПоиска = Неопределено, Новый СписокЗначений, ОбластиПоиска); + НастройкиПоиска.ИсторияПоиска = ?(ИсторияПоиска = Неопределено, Новый Массив, ИсторияПоиска); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СохранитьСтрокуПоискаВИстории(СтрокаПоиска, ИсторияПоиска) + + СохраненнаяСтрока = ИсторияПоиска.Найти(СтрокаПоиска); + + Если СохраненнаяСтрока <> Неопределено Тогда + ИсторияПоиска.Удалить(СохраненнаяСтрока); + КонецЕсли; + + ИсторияПоиска.Вставить(0, СтрокаПоиска); + + КоличествоСтрок = ИсторияПоиска.Количество(); + + Если КоличествоСтрок > 20 Тогда + ИсторияПоиска.Удалить(КоличествоСтрок - 1); + КонецЕсли; + + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( + "ПолнотекстовыйПоискСтрокиПолнотекстовогоПоиска", + "", + ИсторияПоиска); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура СохранитьНастройкиПоиска(ИскатьВРазделах, ОбластиПоиска) + + Настройки = Новый Структура; + Настройки.Вставить("ИскатьВРазделах", ИскатьВРазделах); + Настройки.Вставить("ОбластиПоиска", ОбластиПоиска); + + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("НастройкиПолнотекстовогоПоиска", "", Настройки); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти diff --git "a/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260.mdo" "b/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260.mdo" new file mode 100644 index 0000000..4e8aa1a --- /dev/null +++ "b/TestingTool_3-0/src/CommonForms/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260/\320\244\320\276\321\200\320\274\320\260\320\237\320\276\320\270\321\201\320\272\320\260.mdo" @@ -0,0 +1,16 @@ + + + ФормаПоиска + + ru + Форма поиска + + + + ru + + + PersonalComputer + MobileDevice + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Module.bsl" index ddd6a4c..b1b36c1 100644 --- "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Module.bsl" +++ "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217/Module.bsl" @@ -1,4 +1,3 @@ - // Возвращает ссылку, соответствующую объекту метаданных, для // использования в базе данных. // Например: @@ -44,110 +43,278 @@ КонецФункции -// Возвращает структуру, содержащую значения реквизитов прочитанные из информационной базы -// по ссылке на объект. -// -// Если доступа к одному из реквизитов нет, возникнет исключение прав доступа. +// Значения реквизитов, прочитанные из информационной базы для нескольких объектов. +// // Если необходимо зачитать реквизит независимо от прав текущего пользователя, // то следует использовать предварительный переход в привилегированный режим. +// +// Параметры: +// Ссылки - Массив - массив ссылок на объекты одного типа. +// Значения массива должны быть ссылками на объекты одного типа. +// если массив пуст, то результатом будет пустое соответствие. +// Реквизиты - Строка - имена реквизитов перечисленные через запятую, в формате требований к свойствам +// структуры. Например, "Код, Наименование, Родитель". +// ВыбратьРазрешенные - Булево - если Истина, то запрос к объектам выполняется с учетом прав пользователя, и в случае, +// - если какой-либо объект будет исключен из выборки по правам, то этот объект +// будет исключен и из результата; +// - если Ложь, то возникнет исключение при отсутствии прав на таблицу +// или любой из реквизитов. +// +// Возвращаемое значение: +// Соответствие - список объектов и значений их реквизитов: +// * Ключ - ЛюбаяСсылка - ссылка на объект; +// * Значение - Структура - значения реквизитов: +// ** Ключ - Строка - имя реквизита; +// ** Значение - Произвольный - значение реквизита. // -// Функция не предназначена для получения значений реквизитов пустых ссылок. +Функция ЗначенияРеквизитовОбъектов(Ссылки, Знач Реквизиты, ВыбратьРазрешенные = Ложь) Экспорт + + Если ПустаяСтрока(Реквизиты) Тогда + ВызватьИсключение НСтр("ru = 'Неверный второй параметр Реквизиты: + |- Поле объекта должно быть указано'"); + КонецЕсли; + + Если СтрНайти(Реквизиты, ".") <> 0 Тогда + ВызватьИсключение НСтр("ru = 'Неверный второй параметр Реквизиты: + |- Обращение через точку не поддерживается'"); + КонецЕсли; + + ЗначенияРеквизитов = Новый Соответствие; + Если Ссылки.Количество() = 0 Тогда + Возврат ЗначенияРеквизитов; + КонецЕсли; + + ПерваяСсылка = Ссылки[0]; + + Попытка + ПолноеИмяОбъектаМетаданных = ПерваяСсылка.Метаданные().ПолноеИмя(); + Исключение + ВызватьИсключение НСтр("ru = 'Неверный первый параметр Ссылки: + |- Значения массива должны быть ссылками'"); + КонецПопытки; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ " + ?(ВыбратьРазрешенные, "РАЗРЕШЕННЫЕ", "") + " + | Ссылка КАК Ссылка, " + Реквизиты + " + |ИЗ + | " + ПолноеИмяОбъектаМетаданных + " КАК Таблица + |ГДЕ + | Таблица.Ссылка В (&Ссылки)"; + Запрос.УстановитьПараметр("Ссылки", Ссылки); + + Попытка + Выборка = Запрос.Выполнить().Выбрать(); + Исключение + + // Удаление пробелов. + Реквизиты = СтрЗаменить(Реквизиты, " ", ""); + // Преобразование параметра в массив полей. + Реквизиты = СтрРазделить(Реквизиты, ","); + + // Не удалось распознать ошибку, проброс первичной ошибки. + ВызватьИсключение; + + КонецПопытки; + + Пока Выборка.Следующий() Цикл + Результат = Новый Структура(Реквизиты); + ЗаполнитьЗначенияСвойств(Результат, Выборка); + ЗначенияРеквизитов[Выборка.Ссылка] = Результат; + КонецЦикла; + + Возврат ЗначенияРеквизитов; + +КонецФункции + +// Структура, содержащая значения реквизитов, прочитанные из информационной базы по ссылке на объект. +// +// Если необходимо зачитать реквизит независимо от прав текущего пользователя, +// то следует использовать предварительный переход в привилегированный режим. // // Параметры: // Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. -// +// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить. // Реквизиты - Строка - имена реквизитов, перечисленные через запятую, в формате -// требований к свойствам структуры. -// Например, "Код, Наименование, Родитель". +// требований к свойствам структуры. +// Например, "Код, Наименование, Родитель". // - Структура, ФиксированнаяСтруктура - в качестве ключа передается -// псевдоним поля для возвращаемой структуры с результатом, а в качестве -// значения (опционально) фактическое имя поля в таблице. -// Если значение не определено, то имя поля берется из ключа. +// псевдоним поля для возвращаемой структуры с результатом, а в качестве +// значения (опционально) фактическое имя поля в таблице. +// Если ключ задан, а значение не определено, то имя поля берется из ключа. // - Массив, ФиксированныйМассив - имена реквизитов в формате требований -// к свойствам структуры. +// к свойствам структуры. +// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя, и в случае, +// - если есть ограничение на уровне записей, то все реквизиты вернутся +// со значением Неопределено; +// - если нет прав для работы с таблицей, то возникнет исключение. +// - если Ложь, то возникнет исключение при отсутствии прав на таблицу +// или любой из реквизитов. // // Возвращаемое значение: // Структура - содержит имена (ключи) и значения затребованных реквизитов. -// Если строка затребованных реквизитов пуста, то возвращается пустая структура. -// Если в качестве объекта передана пустая ссылка, то все реквизиты вернутся со значением Неопределено. +// - если в параметр Реквизиты передана пустая строка, то возвращается пустая структура. +// - если в параметр Ссылка передана пустая ссылка, то возвращается структура, +// соответствующая именам реквизитов со значениями Неопределено. +// - если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка), +// то все реквизиты вернутся со значением Неопределено. // -Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты) Экспорт +Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты, ВыбратьРазрешенные = Ложь) Экспорт + + Попытка + ПолноеИмяОбъектаМетаданных = Ссылка.Метаданные().ПолноеИмя(); + Исключение + ВызватьИсключение НСтр("ru = 'Неверный первый параметр Ссылка: + |- Значение должно быть ссылкой или именем предопределенного элемента'"); + КонецПопытки; + // Разбор реквизитов, если второй параметр Строка. Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда Если ПустаяСтрока(Реквизиты) Тогда Возврат Новый Структура; КонецЕсли; - Реквизиты = СтрРазделить(Реквизиты, ",", Ложь); + + // Удаление пробелов. + Реквизиты = СтрЗаменить(Реквизиты, " ", ""); + // Преобразование параметра в массив полей. + Реквизиты = СтрРазделить(Реквизиты, ","); КонецЕсли; - СтруктураРеквизитов = Новый Структура; - Если ТипЗнч(Реквизиты) = Тип("Структура") Или ТипЗнч(Реквизиты) = Тип("ФиксированнаяСтруктура") Тогда - СтруктураРеквизитов = Реквизиты; - ИначеЕсли ТипЗнч(Реквизиты) = Тип("Массив") Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда + // Приведение реквизитов к единому формату. + СтруктураПолей = Новый Структура; + Если ТипЗнч(Реквизиты) = Тип("Структура") + Или ТипЗнч(Реквизиты) = Тип("ФиксированнаяСтруктура") Тогда + + СтруктураПолей = Реквизиты; + + ИначеЕсли ТипЗнч(Реквизиты) = Тип("Массив") + Или ТипЗнч(Реквизиты) = Тип("ФиксированныйМассив") Тогда + Для Каждого Реквизит Из Реквизиты Цикл - СтруктураРеквизитов.Вставить(СтрЗаменить(Реквизит, ".", ""), Реквизит); + + Попытка + ПсевдонимПоля = СтрЗаменить(Реквизит, ".", ""); + СтруктураПолей.Вставить(ПсевдонимПоля, Реквизит); + Исключение + // Если псевдоним не является ключом. + // Не удалось распознать ошибку, проброс первичной ошибки. + ВызватьИсключение; + + КонецПопытки; КонецЦикла; Иначе - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неверный тип второго параметра Реквизиты: %1'"), Строка(ТипЗнч(Реквизиты))); + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный тип второго параметра Реквизиты: %1'"), Строка(ТипЗнч(Реквизиты))); КонецЕсли; - ТекстПолей = ""; - Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл - ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), - СокрЛП(КлючИЗначение.Значение), - СокрЛП(КлючИЗначение.Ключ)); + // Подготовка результата (после выполнения запроса переопределится). + Результат = Новый Структура; + + // Формирование текста запроса к выбираемым полям. + ТекстЗапросаПолей = ""; + Для каждого КлючИЗначение Из СтруктураПолей Цикл + + ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), + КлючИЗначение.Значение, + КлючИЗначение.Ключ); + ПсевдонимПоля = КлючИЗначение.Ключ; - Псевдоним = СокрЛП(КлючИЗначение.Ключ); + ТекстЗапросаПолей = + ТекстЗапросаПолей + ?(ПустаяСтрока(ТекстЗапросаПолей), "", ",") + " + | " + ИмяПоля + " КАК " + ПсевдонимПоля; + + + // Предварительное добавление поля по псевдониму в возвращаемый результат. + Результат.Вставить(ПсевдонимПоля); - ТекстПолей = ТекстПолей + ?(ПустаяСтрока(ТекстПолей), "", ",") + " - | " + ИмяПоля + " КАК " + Псевдоним; КонецЦикла; + // Если предопределенного нет в ИБ. + // - приведение результата к отсутствию объекта в ИБ или передаче пустой ссылки. + Если Ссылка = Неопределено Тогда + Возврат Результат; + КонецЕсли; + + ТекстЗапроса = + "ВЫБРАТЬ " + ?(ВыбратьРазрешенные, "РАЗРЕШЕННЫЕ", "") + " + |" + ТекстЗапросаПолей + " + |ИЗ + | " + ПолноеИмяОбъектаМетаданных + " КАК Таблица + |ГДЕ + | Таблица.Ссылка = &Ссылка + |"; + + // Выполнение запроса. Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", Ссылка); - Запрос.Текст = - "ВЫБРАТЬ - |" + ТекстПолей + " - |ИЗ - | " + Ссылка.Метаданные().ПолноеИмя() + " КАК ПсевдонимЗаданнойТаблицы - |ГДЕ - | ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка - |"; - Выборка = Запрос.Выполнить().Выбрать(); - Выборка.Следующий(); + Запрос.Текст = ТекстЗапроса; - Результат = Новый Структура; - Для Каждого КлючИЗначение Из СтруктураРеквизитов Цикл - Результат.Вставить(КлючИЗначение.Ключ); - КонецЦикла; - ЗаполнитьЗначенияСвойств(Результат, Выборка); + Попытка + Выборка = Запрос.Выполнить().Выбрать(); + Исключение + + // Если реквизиты были переданы строкой, то они уже конвертированы в массив. + // Если реквизиты - массив, оставляем без изменений. + // Если реквизиты - структура - конвертируем в массив. + // В остальных случаях уже было бы выброшено исключение. + Если Тип("Структура") = ТипЗнч(Реквизиты) Тогда + Реквизиты = Новый Массив; + Для каждого КлючИЗначение Из СтруктураПолей Цикл + ИмяПоля = ?(ЗначениеЗаполнено(КлючИЗначение.Значение), + КлючИЗначение.Значение, + КлючИЗначение.Ключ); + Реквизиты.Добавить(ИмяПоля); + КонецЦикла; + КонецЕсли; + + // Не удалось распознать ошибку, проброс первичной ошибки. + ВызватьИсключение; + + КонецПопытки; + + // Заполнение реквизитов. + Если Выборка.Следующий() Тогда + ЗаполнитьЗначенияСвойств(Результат, Выборка); + КонецЕсли; Возврат Результат; КонецФункции -// Возвращает значение реквизита, прочитанного из информационной базы по ссылке на объект. -// -// Если доступа к реквизиту нет, возникнет исключение прав доступа. -// Если необходимо зачитать реквизит независимо от прав текущего пользователя, -// то следует использовать предварительный переход в привилегированный режим. +// Значение реквизита, прочитанного из информационной базы по ссылке на объект. +// +// Если необходимо зачитать реквизит независимо от прав текущего пользователя, +// то следует использовать предварительный переход в привилегированный режим. // -// Функция не предназначена для получения значений реквизитов пустых ссылок. -// // Параметры: -// Ссылка - ссылка на объект, - элемент справочника, документ, ... -// ИмяРеквизита - Строка, например, "Код". -// +// Ссылка - ЛюбаяСсылка - объект, значения реквизитов которого необходимо получить. +// - Строка - полное имя предопределенного элемента, значения реквизитов которого необходимо получить. +// ИмяРеквизита - Строка - имя получаемого реквизита. +// ВыбратьРазрешенные - Булево - если Истина, то запрос к объекту выполняется с учетом прав пользователя, и в случае, +// - если есть ограничение на уровне записей, то возвращается Неопределено; +// - если нет прав для работы с таблицей, то возникнет исключение. +// - если Ложь, то возникнет исключение при отсутствии прав на таблицу +// или любой из реквизитов. +// // Возвращаемое значение: -// Произвольный - зависит от типа значения прочитанного реквизита. -// -Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита) Экспорт +// Произвольный - зависит от типа значения прочитанного реквизита. +// - если в параметр Ссылка передана пустая ссылка, то возвращается Неопределено. +// - если в параметр Ссылка передана ссылка несуществующего объекта (битая ссылка), +// то возвращается Неопределено. +// +Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь) Экспорт + + Если ПустаяСтрока(ИмяРеквизита) Тогда + ВызватьИсключение НСтр("ru = 'Неверный второй параметр ИмяРеквизита: + |- Имя реквизита должно быть заполнено'"); + КонецЕсли; - Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита); + Результат = ЗначенияРеквизитовОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные); Возврат Результат[СтрЗаменить(ИмяРеквизита, ".", "")]; КонецФункции + // Возвращает признак того, что реквизит входит в подмножество стандартных реквизитов. // // Параметры: @@ -300,3 +467,293 @@ Возврат Метаданные.ПланыВидовРасчета.Содержит(ОбъектМетаданных); КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Сохранение, чтение и удаление настроек из хранилищ. + +// Сохраняет настройку в хранилище общих настроек, как метод платформы Сохранить, +// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, +// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, +// которая превышает 96 символов. +// Если нет права СохранениеДанныхПользователя, сохранение пропускается без ошибки. +// +// Параметры: +// КлючОбъекта - Строка - см. синтакс-помощник платформы. +// КлючНастроек - Строка - см. синтакс-помощник платформы. +// Настройки - Произвольный - см. синтакс-помощник платформы. +// ОписаниеНастроек - ОписаниеНастроек - см. синтакс-помощник платформы. +// ИмяПользователя - Строка - см. синтакс-помощник платформы. +// ОбновитьПовторноИспользуемыеЗначения - Булево - выполнить одноименный метод платформы. +// +Процедура ХранилищеОбщихНастроекСохранить(КлючОбъекта, КлючНастроек, Настройки, + ОписаниеНастроек = Неопределено, + ИмяПользователя = Неопределено, + ОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт + + ХранилищеСохранить(ХранилищеОбщихНастроек, + КлючОбъекта, + КлючНастроек, + Настройки, + ОписаниеНастроек, + ИмяПользователя, + ОбновитьПовторноИспользуемыеЗначения); + +КонецПроцедуры + +// Сохраняет несколько настроек в хранилище общих настроек, как метод платформы Сохранить, +// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, +// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, +// которая превышает 96 символов. +// Если нет права СохранениеДанныхПользователя, сохранение пропускается без ошибки. +// +// Параметры: +// НесколькоНастроек - Массив - со значениями: +// * Значение - Структура - со свойствами: +// * Объект - Строка - см. параметр КлючОбъекта в синтакс-помощнике платформы. +// * Настройка - Строка - см. параметр КлючНастроек в синтакс-помощнике платформы. +// * Значение - Произвольный - см. параметр Настройки в синтакс-помощнике платформы. +// +// ОбновитьПовторноИспользуемыеЗначения - Булево - выполнить одноименный метод платформы. +// +Процедура ХранилищеОбщихНастроекСохранитьМассив(НесколькоНастроек, + ОбновитьПовторноИспользуемыеЗначения = Ложь) Экспорт + + Если Не ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + Возврат; + КонецЕсли; + + Для Каждого Элемент Из НесколькоНастроек Цикл + ХранилищеОбщихНастроек.Сохранить(Элемент.Объект, КлючНастроек(Элемент.Настройка), Элемент.Значение); + КонецЦикла; + + Если ОбновитьПовторноИспользуемыеЗначения Тогда + ОбновитьПовторноИспользуемыеЗначения(); + КонецЕсли; + +КонецПроцедуры + +// Загружает настройку из хранилища общих настроек, как метод платформы Загрузить, +// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, +// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, +// которая превышает 96 символов. +// Кроме того, возвращает указанное значение по умолчанию, если настройки не найдены. +// Если нет права СохранениеДанныхПользователя, возвращается значение по умолчанию без ошибки. +// +// В возвращаемом значении очищаются ссылки на несуществующий объект в базе данных, а именно +// - возвращаемая ссылка заменяется на указанное значение по умолчанию; +// - из данных типа Массив ссылки удаляются; +// - у данных типа Структура и Соответствие ключ не меняется, а значение устанавливается Неопределено; +// - анализ значений в данных типа Массив, Структура, Соответствие выполняется рекурсивно. +// +// Параметры: +// КлючОбъекта - Строка - см. синтакс-помощник платформы. +// КлючНастроек - Строка - см. синтакс-помощник платформы. +// ЗначениеПоУмолчанию - Произвольный - значение, которое возвращается, если настройки не найдены. +// Если не указано, возвращается значение Неопределено. +// ОписаниеНастроек - ОписаниеНастроек - см. синтакс-помощник платформы. +// ИмяПользователя - Строка - см. синтакс-помощник платформы. +// +// Возвращаемое значение: +// Произвольный - см. синтакс-помощник платформы. +// +Функция ХранилищеОбщихНастроекЗагрузить(КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию = Неопределено, + ОписаниеНастроек = Неопределено, ИмяПользователя = Неопределено) Экспорт + + Возврат ХранилищеЗагрузить(ХранилищеОбщихНастроек, + КлючОбъекта, + КлючНастроек, + ЗначениеПоУмолчанию, + ОписаниеНастроек, + ИмяПользователя); + +КонецФункции + +// Удаляет настройку из хранилища общих настроек, как метод платформы Удалить, +// объектов СтандартноеХранилищеНастроекМенеджер или ХранилищеНастроекМенеджер.<Имя хранилища>, +// но с поддержкой длины ключа настроек более 128 символов путем хеширования части, +// которая превышает 96 символов. +// Если нет права СохранениеДанныхПользователя, удаление пропускается без ошибки. +// +// Параметры: +// КлючОбъекта - Строка, Неопределено - см. синтакс-помощник платформы. +// КлючНастроек - Строка, Неопределено - см. синтакс-помощник платформы. +// ИмяПользователя - Строка, Неопределено - см. синтакс-помощник платформы. +// +Процедура ХранилищеОбщихНастроекУдалить(КлючОбъекта, КлючНастроек, ИмяПользователя) Экспорт + + ХранилищеУдалить(ХранилищеОбщихНастроек, + КлючОбъекта, + КлючНастроек, + ИмяПользователя); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Хранилища настроек. + +Процедура ХранилищеСохранить(МенеджерХранилища, КлючОбъекта, КлючНастроек, Настройки, + ОписаниеНастроек, ИмяПользователя, ОбновитьПовторноИспользуемыеЗначения) + + Если Не ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + Возврат; + КонецЕсли; + + МенеджерХранилища.Сохранить(КлючОбъекта, КлючНастроек(КлючНастроек), Настройки, + ОписаниеНастроек, ИмяПользователя); + + Если ОбновитьПовторноИспользуемыеЗначения Тогда + ОбновитьПовторноИспользуемыеЗначения(); + КонецЕсли; + +КонецПроцедуры + +Функция ХранилищеЗагрузить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ЗначениеПоУмолчанию, + ОписаниеНастроек, ИмяПользователя) + + Результат = Неопределено; + + Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + Результат = МенеджерХранилища.Загрузить(КлючОбъекта, КлючНастроек(КлючНастроек), + ОписаниеНастроек, ИмяПользователя); + КонецЕсли; + + Если Результат = Неопределено Тогда + Результат = ЗначениеПоУмолчанию; + Иначе + УстановитьПривилегированныйРежим(Истина); + Если УдалитьБитыеСсылки(Результат) Тогда + Результат = ЗначениеПоУмолчанию; + КонецЕсли; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Удаляет битые ссылки из переменной. +// +// Параметры: +// СсылкаИлиКоллекция - ЛюбаяСсылка, Произвольный - Проверяемый объект или очищаемая коллекция. +// +// Возвращаемое значение: +// Булево - +// * Истина - СсылкаИлиКоллекция ссылочного типа и объект не найден в базе данных. +// * Ложь - Когда СсылкаИлиКоллекция не ссылочного типа или объект найден в базе данных. +// +Функция УдалитьБитыеСсылки(СсылкаИлиКоллекция) + + Тип = ТипЗнч(СсылкаИлиКоллекция); + + Если Тип = Тип("Неопределено") + Или Тип = Тип("Булево") + Или Тип = Тип("Строка") + Или Тип = Тип("Число") + Или Тип = Тип("Дата") Тогда // Оптимизация - часто используемые примитивные типы. + + Возврат Ложь; // Не ссылка. + + ИначеЕсли Тип = Тип("Массив") Тогда + + Количество = СсылкаИлиКоллекция.Количество(); + Для Номер = 1 По Количество Цикл + ОбратныйИндекс = Количество - Номер; + Значение = СсылкаИлиКоллекция[ОбратныйИндекс]; + Если УдалитьБитыеСсылки(Значение) Тогда + СсылкаИлиКоллекция.Удалить(ОбратныйИндекс); + КонецЕсли; + КонецЦикла; + + Возврат Ложь; // Не ссылка. + + ИначеЕсли Тип = Тип("Структура") + Или Тип = Тип("Соответствие") Тогда + + Для Каждого КлючИЗначение Из СсылкаИлиКоллекция Цикл + Значение = КлючИЗначение.Значение; + Если УдалитьБитыеСсылки(Значение) Тогда + СсылкаИлиКоллекция.Вставить(КлючИЗначение.Ключ, Неопределено); + КонецЕсли; + КонецЦикла; + + Возврат Ложь; // Не ссылка. + + ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(Тип) + Или Справочники.ТипВсеСсылки().СодержитТип(Тип) + Или Перечисления.ТипВсеСсылки().СодержитТип(Тип) + Или ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(Тип) + Или ПланыСчетов.ТипВсеСсылки().СодержитТип(Тип) + Или ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(Тип) + Или ПланыОбмена.ТипВсеСсылки().СодержитТип(Тип) + Или БизнесПроцессы.ТипВсеСсылки().СодержитТип(Тип) + Или Задачи.ТипВсеСсылки().СодержитТип(Тип) Тогда + // Ссылочный тип, исключая ТочкаМаршрутаБизнесПроцессаСсылка. + + Если СсылкаИлиКоллекция.Пустая() Тогда + Возврат Ложь; // Ссылка пустая. + ИначеЕсли ЗначениеРеквизитаОбъекта(СсылкаИлиКоллекция, "Ссылка") = Неопределено Тогда + СсылкаИлиКоллекция = Неопределено; + Возврат Истина; // "Битая" ссылка. + Иначе + Возврат Ложь; // Объект найден. + КонецЕсли; + + Иначе + + Возврат Ложь; // Не ссылка. + + КонецЕсли; + +КонецФункции + +Процедура ХранилищеУдалить(МенеджерХранилища, КлючОбъекта, КлючНастроек, ИмяПользователя) + + Если ПравоДоступа("СохранениеДанныхПользователя", Метаданные) Тогда + МенеджерХранилища.Удалить(КлючОбъекта, КлючНастроек(КлючНастроек), ИмяПользователя); + КонецЕсли; + +КонецПроцедуры + +// Возвращает строку ключа настроек, не превышающую допустимую длину 128 символов. +// Если указанная строка превышает 128, тогда вместо символов сверх 96 символов +// добавляется их хеш-сумма по алгоритму MD5 размером 32 символа. +// +// Параметры: +// Строка - Строка - строка произвольной длины. +// +// Возвращаемое значение: +// Строка - не более 128 символов. +// +Функция КлючНастроек(Знач Строка) + Возврат СократитьСтрокуКонтрольнойСуммой(Строка, 128); +КонецФункции + +// Сокращает строку до нужной длины, при этом обрезанная часть хешируется, +// обеспечивая уникальность строки. Проверяет длину строки на входе и, в случае +// превышения максимальной длины, преобразует ее конец по алгоритму MD5 в +// уникальную строку из 32 символов. +// +// Параметры: +// Строка - Строка - исходная строка произвольной длины. +// МаксимальнаяДлина - Число - требуемое максимальное количество символов в строке, +// минимальное значение: 32. +// +// Возвращаемое значение: +// Строка - строка, не превышающая максимальную длину. +// +Функция СократитьСтрокуКонтрольнойСуммой(Строка, МаксимальнаяДлина) Экспорт + ОбщегоНазначенияКлиентСервер.Проверить(МаксимальнаяДлина >= 32, НСтр("ru = 'Параметр МаксимальнаяДлина не может быть меньше 32'"), + "ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой"); + + Результат = Строка; + Если СтрДлина(Строка) > МаксимальнаяДлина Тогда + Результат = Лев(Строка, МаксимальнаяДлина - 32); + ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5); + ХешированиеДанных.Добавить(Сред(Строка, МаксимальнаяДлина - 32 + 1)); + Результат = Результат + СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); + КонецЕсли; + Возврат Результат; +КонецФункции + +Процедура ПриНачалеВыполненияРегламентногоЗадания(РегламентноеЗадание = Неопределено) Экспорт + //пустая (для совместимости) +КонецПроцедуры \ No newline at end of file diff --git "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" new file mode 100644 index 0000000..91f1e4e --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -0,0 +1,9 @@ + +// пробросили из клиента +Функция ЗначенияРеквизитовОбъекта(Ссылка, Знач Реквизиты, ВыбратьРазрешенные = Ложь) Экспорт + Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, Реквизиты, ВыбратьРазрешенные ); +КонецФункции + +Функция ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные = Ложь) Экспорт + Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, ИмяРеквизита, ВыбратьРазрешенные ); +КонецФункции \ No newline at end of file diff --git "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" new file mode 100644 index 0000000..ec619fa --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -0,0 +1,12 @@ + + + ОбщегоНазначенияВызовСервера + + ru + Общего назначения вызов сервера + + true + true + true + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" index eafbdf7..9a2d1e4 100644 --- "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" +++ "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" @@ -1,3 +1,85 @@ +//////////////////////////////////////////////////////////////////////////////// +// Подсистема "Базовая функциональность". +// Клиентские процедуры и функции общего назначения: +// - для работы со списками в формах; +// - для работы с журналом регистрации; +// - для обработки действий пользователя в процессе редактирования +// многострочного текста, например комментария в документах; +// - прочее. +// +//////////////////////////////////////////////////////////////////////////////// + +#Область ПрограммныйИнтерфейс + +//////////////////////////////////////////////////////////////////////////////// +// Функции работы со списками в формах. + +// Проверяет, что в параметре команды Параметр передан объект ожидаемого типа ОжидаемыйТип. +// В противном случае, выдает стандартное сообщение и возвращает Ложь. +// Такая ситуация возможна, например, если в списке выделена строка группировки. +// +// Для использования в командах, работающих с элементами динамических списков в формах. +// Пример использования: +// +// Если НЕ ПроверитьТипПараметраКоманды(Элементы.Список.ВыделенныеСтроки, +// Тип("ЗадачаСсылка.ЗадачаИсполнителя")) Тогда +// Возврат; +// КонецЕсли; +// ... +// +// Параметры: +// Параметр - Массив или ссылочный тип - параметр команды. +// ОжидаемыйТип - Тип - ожидаемый тип параметра. +// +// Возвращаемое значение: +// Булево - Истина, если параметр ожидаемого типа. +// +Функция ПроверитьТипПараметраКоманды(Знач Параметр, Знач ОжидаемыйТип) Экспорт + + Если Параметр = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + Результат = Истина; + + Если ТипЗнч(Параметр) = Тип("Массив") Тогда + // Если в массиве один элемент и он неправильного типа... + Результат = НЕ (Параметр.Количество() = 1 И ТипЗнч(Параметр[0]) <> ОжидаемыйТип); + Иначе + Результат = ТипЗнч(Параметр) = ОжидаемыйТип; + КонецЕсли; + + Если НЕ Результат Тогда + ПоказатьПредупреждение(,НСтр("ru = 'Действие не может быть выполнено для выбранного элемента.'")); + КонецЕсли; + + Возврат Результат; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Клиентские процедуры общего назначения. + +// Возвращает текущую дату, приведенную к часовому поясу сеанса. +// +// Функция возвращает время, близкое к результату функции ТекущаяДатаСеанса() в серверном контексте. +// Погрешность обусловлена временем выполнения серверного вызова. +// Предназначена для использования вместо функции ТекущаяДата(). +// +Функция ДатаСеанса() Экспорт + Возврат ТекущаяДата(); +КонецФункции + +// Возвращает универсальную дату сеанса, получаемую из текущей даты сеанса. +// +// Функция возвращает время, близкое к результату функции УниверсальноеВремя() в серверном контексте. +// Погрешность обусловлена временем выполнения серверного вызова. +// Предназначена для использования вместо функции УниверсальноеВремя(). +// +Функция ДатаУниверсальная() Экспорт + ДатаСеанса = ТекущаяДата(); + Возврат ДатаСеанса; +КонецФункции // Предлагает пользователю установить расширение работы с файлами в веб-клиенте. // @@ -30,46 +112,489 @@ Процедура ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(ОписаниеОповещенияОЗакрытии, ТекстПредложения = "", ВозможноПродолжениеБезУстановки = Истина) Экспорт - ОписаниеОповещенияЗавершение = Новый ОписаниеОповещения("ПоказатьВопросОбУстановкеРасширенияРаботыСФайламиЗавершение", - ЭтотОбъект, ОписаниеОповещенияОЗакрытии); - + Оповещение = Новый ОписаниеОповещения("ПоказатьВопросОбУстановкеРасширенияРаботыСФайламиЗавершение", ЭтотОбъект, ОписаниеОповещенияОЗакрытии); #Если Не ВебКлиент Тогда // В тонком и толстом клиентах расширение подключено всегда. - ВыполнитьОбработкуОповещения(ОписаниеОповещенияЗавершение, "ПодключениеНеТребуется"); + ВыполнитьОбработкуОповещения(Оповещение); Возврат; #КонецЕсли - ДополнительныеПараметры = Новый Структура; - ДополнительныеПараметры.Вставить("ОписаниеОповещенияЗавершение", ОписаниеОповещенияЗавершение); - ДополнительныеПараметры.Вставить("ТекстПредложения", ТекстПредложения); - ДополнительныеПараметры.Вставить("ВозможноПродолжениеБезУстановки", ВозможноПродолжениеБезУстановки); + // Если расширение и так уже подключено, незачем про него спрашивать. + РасширениеПодключено = ПодключитьРасширениеРаботыСФайлами(); + Если РасширениеПодключено Тогда + ВыполнитьОбработкуОповещения(Оповещение); + Возврат; + КонецЕсли; + + // В веб клиенте под MacOS расширение не доступно. + СистемнаяИнформация = Новый СистемнаяИнформация; + ЭтоMacКлиент = (СистемнаяИнформация.ТипПлатформы = ТипПлатформы.MacOS_x86 + Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.MacOS_x86_64); + Если ЭтоMacКлиент Тогда + ВыполнитьОбработкуОповещения(Оповещение); + Возврат; + КонецЕсли; - Оповещение = Новый ОписаниеОповещения("ПоказатьВопросОбУстановкеРасширенияРаботыСФайламиПриУстановкеРасширения", - ЭтотОбъект, ДополнительныеПараметры); - НачатьПодключениеРасширенияРаботыСФайлами(Оповещение); + ВыполнитьОбработкуОповещения(Оповещение); КонецПроцедуры -Процедура ПоказатьВопросОбУстановкеРасширенияРаботыСФайламиЗавершение(Действие, ОповещениеОЗакрытии) Экспорт +// Предлагает пользователю подключить расширение работы с файлами в веб-клиенте, +// и в случае отказа выдает предупреждение о невозможности продолжения операции. +// +// Предназначена для использования в начале участков кода, в которых ведется работа с файлами +// только при подключенном расширении. +// Например: +// +// Оповещение = Новый ОписаниеОповещения("ПечатьДокументаЗавершение", ЭтотОбъект); +// ТекстСообщения = НСтр("ru = 'Для печати документа необходимо установить расширение работы с файлами.'"); +// ОбщегоНазначенияКлиент.ПроверитьРасширениеРаботыСФайламиПодключено(Оповещение, ТекстСообщения); +// +// Процедура ПечатьДокументаЗавершение(Результат, ДополнительныеПараметры) Экспорт +// // код печати документа, рассчитывающий на то, что расширение подключено. +// // ... +// +// Параметры: +// ОписаниеОповещенияОЗакрытии - ОписаниеОповещения - описание процедуры, которая будет вызвана, если расширение +// подключено со следующими параметрами: +// Результат - Булево - всегда Истина. +// ДополнительныеПараметры - Неопределено +// ТекстПредложения - Строка - текст с предложением подключить расширение работы с файлами. +// Если не указан, то выводится текст по умолчанию. +// ТекстПредупреждения - Строка - текст предупреждения о невозможности продолжения операции. +// Если не указан, то выводится текст по умолчанию. +// +// Возвращаемое значение: +// Булево - Истина, если расширение подключено. +// +Процедура ПроверитьРасширениеРаботыСФайламиПодключено(ОписаниеОповещенияОЗакрытии, Знач ТекстПредложения = "", + Знач ТекстПредупреждения = "") Экспорт + + Параметры = Новый Структура("ОписаниеОповещенияОЗакрытии,ТекстПредупреждения", + ОписаниеОповещенияОЗакрытии, ТекстПредупреждения, ); + Оповещение = Новый ОписаниеОповещения("РасширениеРаботыСФайламиПодключеноЗавершение", ЭтотОбъект, Параметры); + ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Оповещение, ТекстПредложения); + +КонецПроцедуры + + +// Задает вопрос о продолжении действия, влекущего к потере изменений. +// Для использования в обработчиках события ПередЗакрытием модулей форм. +// +// Параметры: +// ОповещениеСохранитьИЗакрыть - ОписаниеОповещения - содержит имя процедуры, вызываемой при нажатии на кнопку OK. +// Отказ - Булево - возвращаемый параметр, признак отказа от выполняемого действия. +// ТекстПредупреждения - Строка - переопределяемый текст предупреждения, выводимый пользователю. +// +// Пример: +// Оповещение = Новый ОписаниеОповещения("ВыбратьИЗакрыть", ЭтотОбъект); +// ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ); +// +// &НаКлиенте +// Процедура ВыбратьИЗакрыть(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт +// // записываем данные формы. +// // ... +// Модифицированность = Ложь; // не выводить подтверждение о закрытии формы еще раз. +// Закрыть(<РезультатВыбораВФорме>); +// КонецПроцедуры +// +Процедура ПоказатьПодтверждениеЗакрытияФормы(ОповещениеСохранитьИЗакрыть, Отказ, ТекстПредупреждения = "") Экспорт + + Форма = ОповещениеСохранитьИЗакрыть.Модуль; + Если Не Форма.Модифицированность Тогда + Возврат; + КонецЕсли; + + Отказ = Истина; + + Параметры = Новый Структура(); + Параметры.Вставить("ОповещениеСохранитьИЗакрыть", ОповещениеСохранитьИЗакрыть); + Параметры.Вставить("ТекстПредупреждения", ТекстПредупреждения); + + ПодключитьОбработчикОжидания("ПодтвердитьЗакрытиеФормыСейчас", 0.1, Истина); + +КонецПроцедуры + +// Задает вопрос о продолжении действия, ведущего к закрытию формы. +// Для использования в обработчиках события ПередЗакрытием модулей форм. +// +// Параметры: +// Форма - УправляемаяФорма - форма, которая вызывает диалог предупреждения. +// Отказ - Булево - возвращаемый параметр, признак отказа от выполняемого действия. +// ТекстПредупреждения - Строка - текст предупреждения, выводимый пользователю. +// ИмяРеквизитаЗакрытьФормуБезПодтверждения - Строка - имя реквизита, содержащего в себе признак того, нужно +// выводить предупреждение или нет. +// ОписаниеОповещенияЗакрыть - ОписаниеОповещения - содержит имя процедуры, вызываемой при нажатии на кнопку да. +// +// Пример: +// ТекстПредупреждения = НСтр("ru = 'Закрыть помощник?'"); +// ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияПроизвольнойФормы( +// ЭтотОбъект, Отказ, ТекстПредупреждения, "ЗакрытьФормуБезПодтверждения"); +// +Процедура ПоказатьПодтверждениеЗакрытияПроизвольнойФормы(Форма, Отказ, ТекстПредупреждения, + ИмяРеквизитаЗакрытьФормуБезПодтверждения, ОписаниеОповещенияЗакрыть = Неопределено) Экспорт + + Если Форма[ИмяРеквизитаЗакрытьФормуБезПодтверждения] Тогда + Возврат; + КонецЕсли; + + Отказ = Истина; + + Параметры = Новый Структура(); + Параметры.Вставить("Форма", Форма); + Параметры.Вставить("ТекстПредупреждения", ТекстПредупреждения); + Параметры.Вставить("ИмяРеквизитаЗакрытьФормуБезПодтверждения", ИмяРеквизитаЗакрытьФормуБезПодтверждения); + Параметры.Вставить("ОписаниеОповещенияЗакрыть", ОписаниеОповещенияЗакрыть); + + ПодключитьОбработчикОжидания("ПодтвердитьЗакрытиеПроизвольнойФормыСейчас", 0.1, Истина); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Процедуры и функции для обработки событий и вызова необязательных подсистем. + +// Возвращает ссылку на общий модуль по имени. +// +// Параметры: +// Имя - Строка - имя общего модуля, например: +// "ОбщегоНазначения", +// "ОбщегоНазначенияКлиент". +// +// Возвращаемое значение: +// ОбщийМодуль. +// +Функция ОбщийМодуль(Имя) Экспорт + + Модуль = Вычислить(Имя); + +#Если НЕ ВебКлиент Тогда + Если ТипЗнч(Модуль) <> Тип("ОбщийМодуль") Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Общий модуль ""%1"" не найден.'"), Имя); + КонецЕсли; +#КонецЕсли + + Возврат Модуль; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Функции для обработки действий пользователя в процессе редактирования +// многострочного текста, например комментария в документах. + +// Открывает форму редактирования произвольного многострочного текста. +// +// Параметры: +// ОповещениеОЗакрытии - ОписаниеОповещения - содержит описание процедуры, которая будет вызвана +// после закрытия формы ввода текста с теми же параметрами, что и для метода +// ПоказатьВводСтроки. +// МногострочныйТекст - Строка - произвольный текст, который необходимо отредактировать; +// Заголовок - Строка - текст, который необходимо отобразить в заголовке формы. +// +// Пример: +// +// Оповещение = Новый ОписаниеОповещения("КомментарийЗавершениеВвода", ЭтотОбъект); +// ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияМногострочногоТекста(Оповещение, Элемент.ТекстРедактирования); +// +// &НаКлиенте +// Процедура КомментарийЗавершениеВвода(Знач ВведенныйТекст, Знач ДополнительныеПараметры) Экспорт +// Если ВведенныйТекст = Неопределено Тогда +// Возврат; +// КонецЕсли; +// +// Объект.МногострочныйКомментарий = ВведенныйТекст; +// Модифицированность = Истина; +// КонецПроцедуры +// +Процедура ПоказатьФормуРедактированияМногострочногоТекста(Знач ОповещениеОЗакрытии, + Знач МногострочныйТекст, Знач Заголовок = Неопределено) Экспорт + + Если Заголовок = Неопределено Тогда + ПоказатьВводСтроки(ОповещениеОЗакрытии, МногострочныйТекст,,, Истина); + Иначе + ПоказатьВводСтроки(ОповещениеОЗакрытии, МногострочныйТекст, Заголовок,, Истина); + КонецЕсли; + +КонецПроцедуры + +// Открывает форму редактирования многострочного комментария. +// +// Параметры: +// МногострочныйТекст - Строка - произвольный текст, который необходимо отредактировать. +// ФормаВладелец - УправляемаяФорма - форма, в поле которой выполняется ввод комментария. +// ИмяРеквизита - Строка - имя реквизита формы, в который будет помещен введенный пользователем +// комментарий. +// Заголовок - Строка - текст, который необходимо отобразить в заголовке формы. +// По умолчанию: "Комментарий". +// +// Пример использования: +// +// ОбщегоНазначенияКлиент.ПоказатьФормуРедактированияКомментария(Элемент.ТекстРедактирования, ЭтотОбъект, "Объект.Комментарий"); +// +Процедура ПоказатьФормуРедактированияКомментария(Знач МногострочныйТекст, Знач ФормаВладелец, Знач ИмяРеквизита, + Знач Заголовок = Неопределено) Экспорт + + ДополнительныеПараметры = Новый Структура("ФормаВладелец,ИмяРеквизита", ФормаВладелец, ИмяРеквизита); + Оповещение = Новый ОписаниеОповещения("КомментарийЗавершениеВвода", ЭтотОбъект, ДополнительныеПараметры); + ЗаголовокФормы = ?(Заголовок <> Неопределено, Заголовок, НСтр("ru='Комментарий'")); + ПоказатьФормуРедактированияМногострочногоТекста(Оповещение, МногострочныйТекст, ЗаголовокФормы); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Процедуры и функции для выполнения резервного копирования в пользовательском режиме. + + +// ИспользованиеМодальности + +//////////////////////////////////////////////////////////////////////////////// +// Устаревшие процедуры и функции, использующие модальные окна. + +// Устарела. Следует использовать ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами. +// Предлагает пользователю установить расширение работы с файлами в веб-клиенте. +// При этом инициализирует параметр сеанса ПредлагатьУстановкуРасширенияРаботыСФайлами. +// +// Предназначена для использования в начале участков кода, в которых ведется работа с файлами. +// Например: +// +// ПредложитьУстановкуРасширенияРаботыСФайлами("Для печати документа необходимо установить расширение работы с файлами."); +// // далее располагается код печати документа +// //... +// +// Параметры +// Сообщение - Строка - текст сообщения. Если не указан, то выводится текст по умолчанию. +// +// Возвращаемое значение: +// Строка - возможные значения: +// Подключено - расширение подключено +// НеПодключено - пользователь отказался от подключения +// НеподдерживаемыйВебКлиент - расширение не может быть подключено, так как не поддерживается в Веб-клиенте +// +Функция ПредложитьУстановкуРасширенияРаботыСФайлами(ТекстПредложения = Неопределено) Экспорт - РасширениеПодключено = (Действие = "РасширениеПодключено" Или Действие = "ПодключениеНеТребуется"); #Если ВебКлиент Тогда - Если Действие = "БольшеНеПредлагать" - Или Действие = "РасширениеПодключено" Тогда - СистемнаяИнформация = Новый СистемнаяИнформация(); - ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента; - ПараметрыПриложения["СтандартныеПодсистемы.ПредлагатьУстановкуРасширенияРаботыСФайлами"] = Ложь; + РасширениеПодключено = ПодключитьРасширениеРаботыСФайлами(); + Если РасширениеПодключено Тогда + Возврат "Подключено"; // если расширение и так уже есть, незачем про него спрашивать + КонецЕсли; + + СистемнаяИнформация = Новый СистемнаяИнформация(); + ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента; + + ПервоеОбращениеЗаСеанс = ПараметрыПриложения["СтандартныеПодсистемы.ПредлагатьУстановкуРасширенияРаботыСФайлами"] = Неопределено; + + ИмяПараметра = "СтандартныеПодсистемы.ПредлагатьУстановкуРасширенияРаботыСФайлами"; + Если ПараметрыПриложения[ИмяПараметра] = Неопределено Тогда + ПараметрыПриложения.Вставить(ИмяПараметра, ПредлагатьУстановкуРасширенияРаботыСФайлами()); + КонецЕсли; + + Если Не ПараметрыПриложения["СтандартныеПодсистемы.ПредлагатьУстановкуРасширенияРаботыСФайлами"] Тогда + Возврат ?(РасширениеПодключено, "Подключено", "НеПодключено"); + КонецЕсли; + + Если ПервоеОбращениеЗаСеанс Тогда + ПараметрыФормы = Новый Структура("Сообщение,ВозможноПродолжениеБезУстановки", ТекстПредложения, Истина); + КодВозврата = ОткрытьФормуМодально("ОбщаяФорма.ВопросОбУстановкеРасширенияРаботыСФайлами", ПараметрыФормы); + Если КодВозврата = Неопределено Тогда + КодВозврата = Истина; + КонецЕсли; + + ПараметрыПриложения["СтандартныеПодсистемы.ПредлагатьУстановкуРасширенияРаботыСФайлами"] = КодВозврата; ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить( - "НастройкиПрограммы/ПредлагатьУстановкуРасширенияРаботыСФайлами", ИдентификаторКлиента, Ложь); + "НастройкиПрограммы/ПредлагатьУстановкуРасширенияРаботыСФайлами", ИдентификаторКлиента, + ПараметрыПриложения["СтандартныеПодсистемы.ПредлагатьУстановкуРасширенияРаботыСФайлами"]); КонецЕсли; + Возврат ?(ПодключитьРасширениеРаботыСФайлами(), "Подключено", "НеПодключено"); + +#Иначе + Возврат "Подключено"; #КонецЕсли - ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, РасширениеПодключено); +КонецФункции + +// Устарела. Следует использовать ПроверитьРасширениеРаботыСФайламиПодключено. +// Предлагает пользователю подключить расширение работы с файлами в веб-клиенте, +// и в случае отказа выдает предупреждение о невозможности продолжения операции. +// +// Предназначена для использования в начале участков кода, в которых ведется работа с файлами +// только при подключенном расширении. +// Например: +// +// Если Не РасширениеРаботыСФайламиПодключено("Для печати документа необходимо установить расширение работы с файлами.") Тогда +// Возврат; +// КонецЕсли; +// // далее располагается код печати документа +// //... +// +// Параметры +// ТекстПредложения - Строка - текст с предложением подключить расширение работы с файлами. +// Если не указан, то выводится текст по умолчанию. +// ТекстПредупреждения - Строка - текст предупреждения о невозможности продолжения операции. +// Если не указан, то выводится текст по умолчанию. +// +// Возвращаемое значение: +// Булево - Истина, если расширение подключено. +// +Функция РасширениеРаботыСФайламиПодключено(ТекстПредложения = Неопределено, ТекстПредупреждения = Неопределено) Экспорт + + Результат = ПредложитьУстановкуРасширенияРаботыСФайлами(ТекстПредложения); + ТекстСообщения = ""; + Если Результат = "НеПодключено" Тогда + Если ТекстПредупреждения <> Неопределено Тогда + ТекстСообщения = ТекстПредупреждения; + Иначе + ТекстСообщения = НСтр("ru = 'Действие недоступно, так как не подключено расширение работы с файлами в Веб-клиенте.'") + КонецЕсли; + КонецЕсли; + Если Не ПустаяСтрока(ТекстСообщения) Тогда + ПоказатьПредупреждение(,ТекстСообщения); + КонецЕсли; + Возврат Результат = "Подключено"; + +КонецФункции + +// Устарела. Следует использовать ПоказатьПодтверждениеЗакрытияФормы или ПоказатьПодтверждениеЗакрытияПроизвольнойФормы. +// Задает вопрос о продолжении действия, влекущего к потере изменений. +// +// Параметры: +// Отказ - Булево - возвращаемый параметр, признак отказа от выполняемого действия; +// Модифицированность - Булево - признак модифицированности формы, из которой вызывается данная процедура; +// ДействиеВыбрано - Булево - признак выбора пользователем действия, приводящего к закрытию формы; +// ТекстПредупреждения - Строка - текст диалога с пользователем. +// +Процедура ЗапроситьПодтверждениеЗакрытияФормы(Отказ, Модифицированность = Истина, ДействиеВыбрано = Ложь, ТекстПредупреждения = "") Экспорт + + Если ДействиеВыбрано = Истина Или Не Модифицированность Тогда + Возврат; + КонецЕсли; + + ТекстВопроса = ?(ПустаяСтрока(ТекстПредупреждения), + НСтр("ru = 'Данные были изменены, внесенные изменения будут отменены. + |Отменить и закрыть?'"), + ТекстПредупреждения); + Результат = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, + НСтр("ru = 'Отмена изменений'")); + + Если Результат = КодВозвратаДиалога.Нет Тогда + Отказ = Истина; + КонецЕсли; КонецПроцедуры -// Обновляет интерфейс программы сохраняя текущее активное окно. +// Устарела. +// Позволяет выбрать время из выпадающего списка. +// +// Параметры: +// Форма - управляемая форма / форма - форма, на которой располагается элемент, +// для которого будет выбираться время +// ПолеВводаФормы - ПолеФормы - элемент-владелец списка, у которого будет +// показан выпадающий список значений времен +// ТекущееЗначение - Дата - значение, на которое будет спозиционирован выпадающий список +// Интервал - число - интервал времени (в секундах), с которым необходимо заполнить список, по умолчанию час +// +// Возвращаемое значение: +// Число - значение времени в секундах. Либо Неопределено, если пользователь отказался от выбора. // +Функция ВыбратьВремя(Форма, ПолеВводаФормы, Знач ТекущееЗначение, Интервал = 3600) Экспорт + + НачалоРабочегоДня = '00010101000000'; + ОкончаниеРабочегоДня = '00010101235959'; + + СписокВремен = Новый СписокЗначений; + НачалоРабочегоДня = НачалоЧаса(НачалоДня(ТекущееЗначение) + + Час(НачалоРабочегоДня) * 3600 + + Минута(НачалоРабочегоДня)*60); + ОкончаниеРабочегоДня = КонецЧаса(НачалоДня(ТекущееЗначение) + + Час(ОкончаниеРабочегоДня) * 3600 + + Минута(ОкончаниеРабочегоДня)*60); + + ВремяСписка = НачалоРабочегоДня; + + Пока НачалоЧаса(ВремяСписка) <= НачалоЧаса(ОкончаниеРабочегоДня) Цикл + + Если НЕ ЗначениеЗаполнено(ВремяСписка) Тогда + ПредставлениеВремени = "00:00"; + Иначе + ПредставлениеВремени = Формат(ВремяСписка,"ДФ=ЧЧ:мм"); + КонецЕсли; + + СписокВремен.Добавить(ВремяСписка, ПредставлениеВремени); + + ВремяСписка = ВремяСписка + Интервал; + + КонецЦикла; + + НачальноеЗначение = СписокВремен.НайтиПоЗначению(ТекущееЗначение); + + Если НачальноеЗначение = Неопределено Тогда + ВыбранноеВремя = Форма.ВыбратьИзСписка(СписокВремен, ПолеВводаФормы); + Иначе + ВыбранноеВремя = Форма.ВыбратьИзСписка(СписокВремен, ПолеВводаФормы, НачальноеЗначение); + КонецЕсли; + + Если ВыбранноеВремя = Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Возврат ВыбранноеВремя.Значение; + +КонецФункции + +// Устарела. Следует использовать ПоказатьФормуРедактированияМногострочногоТекста. +// Открывает форму редактирования произвольного многострочного текста модально. +// +// Параметры: +// МногострочныйТекст - Строка - произвольный текст, который необходимо отредактировать; +// РезультатРедактирования - Строка - в этот параметр будет помещен результат редактирования; +// Модифицированность - Строка - флаг модифицированности формы; +// Заголовок - Строка - текст, который необходимо отобразить в заголовке формы. +// +Процедура ОткрытьФормуРедактированияМногострочногоТекста(Знач МногострочныйТекст, РезультатРедактирования, Модифицированность = Ложь, + Знач Заголовок = Неопределено) Экспорт + + Если Заголовок = Неопределено Тогда + ТекстВведен = ВвестиСтроку(МногострочныйТекст,,, Истина); + Иначе + ТекстВведен = ВвестиСтроку(МногострочныйТекст, Заголовок,, Истина); + КонецЕсли; + + Если Не ТекстВведен Тогда + Возврат; + КонецЕсли; + + РезультатРедактирования = МногострочныйТекст; + Если Не Модифицированность Тогда + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +// Устарела. Следует использовать ПоказатьФормуРедактированияКомментария. +// Открывает форму редактирования многострочного комментария модально. +// +// Параметры: +// МногострочныйТекст - Строка - произвольный текст, который необходимо отредактировать +// РезультатРедактирования - Строка - переменная, в которую будет помещен результат редактирования +// Модифицированность - Строка - флаг модифицированности формы +// +// Пример использования: +// ОткрытьФормуРедактированияКомментария(Элемент.ТекстРедактирования, Объект.Комментарий, Модифицированность); +// +Процедура ОткрытьФормуРедактированияКомментария(Знач МногострочныйТекст, РезультатРедактирования, + Модифицированность = Ложь) Экспорт + + ОткрытьФормуРедактированияМногострочногоТекста(МногострочныйТекст, РезультатРедактирования, Модифицированность, + НСтр("ru='Комментарий'")); + +КонецПроцедуры + +// Конец ИспользованиеМодальности + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + + +// Обновляет интерфейс программы сохраняя текущее активное окно. Процедура ОбновитьИнтерфейсПрограммы() Экспорт ТекущееАктивноеОкно = АктивноеОкно(); @@ -78,4 +603,178 @@ ТекущееАктивноеОкно.Активизировать(); КонецЕсли; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПоказатьВопросОбУстановкеРасширенияРаботыСФайламиЗавершение(Действие, ОповещениеОЗакрытии) Экспорт + +#Если ВебКлиент Тогда + Если Действие = "БольшеНеПредлагать" Тогда + СистемнаяИнформация = Новый СистемнаяИнформация(); + ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента; + ПараметрыПриложения["СтандартныеПодсистемы.ПредлагатьУстановкуРасширенияРаботыСФайлами"] = Ложь; + ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить( + "НастройкиПрограммы/ПредлагатьУстановкуРасширенияРаботыСФайлами", ИдентификаторКлиента, + ПараметрыПриложения["СтандартныеПодсистемы.ПредлагатьУстановкуРасширенияРаботыСФайлами"]); + КонецЕсли; +#КонецЕсли + + ВыполнитьОбработкуОповещения(ОповещениеОЗакрытии, ПодключитьРасширениеРаботыСФайлами()); + +КонецПроцедуры + +Процедура РасширениеРаботыСФайламиПодключеноЗавершение(Действие, Параметры) Экспорт + + ТекстСообщения = ""; + Если ПодключитьРасширениеРаботыСФайлами() Тогда + ВыполнитьОбработкуОповещения(Параметры.ОписаниеОповещенияОЗакрытии); + Возврат; + КонецЕсли; + + Если ПустаяСтрока(Параметры.ТекстПредупреждения) Тогда + ТекстСообщения = НСтр("ru = 'Действие недоступно, так как не установлено расширение для веб-клиента 1С:Предприятие.'") + Иначе + ТекстСообщения = Параметры.ТекстПредупреждения; + КонецЕсли; + ПоказатьПредупреждение(, ТекстСообщения); + +КонецПроцедуры + +Процедура КомментарийЗавершениеВвода(Знач ВведенныйТекст, Знач ДополнительныеПараметры) Экспорт + + Если ВведенныйТекст = Неопределено Тогда + Возврат; + КонецЕсли; + + РеквизитФормы = ДополнительныеПараметры.ФормаВладелец; + + ПутьКРеквизитуФормы = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ДополнительныеПараметры.ИмяРеквизита, "."); + // Если реквизит вида "Объект.Комментарий" и т.п. + Если ПутьКРеквизитуФормы.Количество() > 1 Тогда + Для Индекс = 0 По ПутьКРеквизитуФормы.Количество() - 2 Цикл + РеквизитФормы = РеквизитФормы[ПутьКРеквизитуФормы[Индекс]]; + КонецЦикла; + КонецЕсли; + + РеквизитФормы[ПутьКРеквизитуФормы[ПутьКРеквизитуФормы.Количество() - 1]] = ВведенныйТекст; + ДополнительныеПараметры.ФормаВладелец.Модифицированность = Истина; + +КонецПроцедуры + + +Процедура ПодтвердитьЗакрытиеФормыЗавершение(Ответ, Параметры) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + ВыполнитьОбработкуОповещения(Параметры.ОповещениеСохранитьИЗакрыть); + ИначеЕсли Ответ = КодВозвратаДиалога.Нет Тогда + Форма = Параметры.ОповещениеСохранитьИЗакрыть.Модуль; + Форма.Модифицированность = Ложь; + Форма.Закрыть(); + Иначе + Форма = Параметры.ОповещениеСохранитьИЗакрыть.Модуль; + Форма.Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +Процедура ПодтвердитьЗакрытиеПроизвольнойФормыЗавершение(Ответ, Параметры) Экспорт + + Форма = Параметры.Форма; + Если Ответ = КодВозвратаДиалога.Да + Или Ответ = КодВозвратаДиалога.ОК Тогда + Форма[Параметры.ИмяРеквизитаЗакрытьФормуБезПодтверждения] = Истина; + Если Параметры.ОписаниеОповещенияЗакрыть <> Неопределено Тогда + ВыполнитьОбработкуОповещения(Параметры.ОписаниеОповещенияЗакрыть); + КонецЕсли; + Форма.Закрыть(); + Иначе + Форма[Параметры.ИмяРеквизитаЗакрытьФормуБезПодтверждения] = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +// Открывает навигационную ссылку в программе, которая ассоциирована с протоколом навигационной ссылки. +// +// Допустимые протоколы: http, https, e1c, v8help, mailto, tel, skype. +// +// Для открытия проводника или файла в программе просмотра не следует формировать ссылку по протоколу file:// +// - для открытия проводника см. ОткрытьПроводник. +// - для открытия файла по расширению см. ОткрытьФайлВПрограммеПросмотра. +// +// Параметры: +// НавигационнаяСсылка - Строка - ссылка, которую требуется открыть. +// Оповещение - ОписаниеОповещения, Неопределено - оповещение о результате открытия. +// - если оповещение не задано - в случае ошибки будет показано предупреждение. +// * ПриложениеЗапущено - Булево - Истина, если внешнее приложение не вызвало ошибок при открытии. +// * ДополнительныеПараметры - Структура - значение, которое было указано при создании объекта ОписаниеОповещения. +// +// Пример: +// ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку("e1cib/navigationpoint/startpage"); // начальная страница. +// ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку("v8help://1cv8/QueryLanguageFullTextSearchInData"); +// ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку("https://1c.ru"); +// ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку("mailto:help@1c.ru"); +// ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку("skype:echo123?call"); +// +Процедура ОткрытьНавигационнуюСсылку(НавигационнаяСсылка, Знач Оповещение = Неопределено) Экспорт + + Контекст = Новый Структура; + Контекст.Вставить("НавигационнаяСсылка", НавигационнаяСсылка); + Контекст.Вставить("Оповещение", Оповещение); + + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Не удалось перейти по ссылке ""%1"" по причине: + |Неверно задана навигационная ссылка.'"), + НавигационнаяСсылка); + + Если Не ОбщегоНазначенияСлужебныйКлиент.ЭтоДопустимаяСсылка(НавигационнаяСсылка) Тогда + ОбщегоНазначенияСлужебныйКлиент.ОткрытьНавигационнуюСсылкуОповеститьОбОшибке(ОписаниеОшибки, Контекст); + Возврат; + КонецЕсли; + + Если ОбщегоНазначенияСлужебныйКлиент.ЭтоВебСсылка(НавигационнаяСсылка) + Или ОбщегоНазначенияСлужебныйКлиент.ЭтоНавигационнаяСсылка(НавигационнаяСсылка) Тогда + + Попытка + +#Если ТолстыйКлиентОбычноеПриложение Тогда + // Особенность платформы: ПерейтиПоНавигационнойСсылке не доступен в толстом клиенте обычного приложения. + Оповещение = Новый ОписаниеОповещения(,, Контекст, + "ОткрытьНавигационнуюСсылкуПриОбработкеОшибки", ОбщегоНазначенияСлужебныйКлиент); + НачатьЗапускПриложения(Оповещение, НавигационнаяСсылка); +#Иначе + ПерейтиПоНавигационнойСсылке(НавигационнаяСсылка); +#КонецЕсли + + Исключение + ОбщегоНазначенияСлужебныйКлиент.ОткрытьНавигационнуюСсылкуОповеститьОбОшибке(ОписаниеОшибки, Контекст); + Возврат; + КонецПопытки; + + Если Оповещение <> Неопределено Тогда + ПриложениеЗапущено = Истина; + ВыполнитьОбработкуОповещения(Оповещение, ПриложениеЗапущено); + КонецЕсли; + + Возврат; + КонецЕсли; + + Если ОбщегоНазначенияСлужебныйКлиент.ЭтоСсылкаНаСправку(НавигационнаяСсылка) Тогда + ОткрытьСправку(НавигационнаяСсылка); + Возврат; + КонецЕсли; + + //Оповещение = Новый ОписаниеОповещения( + // "ОткрытьНавигационнуюСсылкуПослеПроверкиРасширенияРаботыСФайлами", ОбщегоНазначенияСлужебныйКлиент, Контекст); + // + //ТекстПредложения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + // НСтр("ru = 'Для открытия ссылки ""%1"" необходимо установить расширение работы с файлами.'"), + // НавигационнаяСсылка); + //ПоказатьВопросОбУстановкеРасширенияРаботыСФайлами(Оповещение, ТекстПредложения, Ложь); + +КонецПроцедуры + diff --git "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" new file mode 100644 index 0000000..e161c41 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" @@ -0,0 +1,53 @@ +#Область СлужебныеПроцедурыИФункции + +// Функция получает цвет стиля по имени элемента стиля. +// +// Параметры: +// ИмяЦветаСтиля - Строка - Имя элемента стиля. +// +// Возвращаемое значение: +// Цвет. +// +Функция ЦветСтиля(ИмяЦветаСтиля) Экспорт + + Возврат ОбщегоНазначенияВызовСервера.ЦветСтиля(ИмяЦветаСтиля); + +КонецФункции + +// Функция получает шрифт стиля по имени элемента стиля. +// +// Параметры: +// ИмяШрифтаСтиля - Строка - Имя шрифта стиля. +// +// Возвращаемое значение: +// Шрифт. +// +Функция ШрифтСтиля(ИмяШрифтаСтиля) Экспорт + + Возврат ОбщегоНазначенияВызовСервера.ШрифтСтиля(ИмяШрифтаСтиля); + +КонецФункции + +// См. ОбщегоНазначенияКлиентСервер.ЭтоВебКлиентПодMacOS. +Функция ЭтоВебКлиентПодMacOS() Экспорт + +#Если Не ВебКлиент Тогда + Возврат Ложь; // Только в веб клиенте этот код работает. +#КонецЕсли + + СистемнаяИнфо = Новый СистемнаяИнформация; + Если СтрНайти(СистемнаяИнфо.ИнформацияПрограммыПросмотра, "Macintosh") <> 0 Тогда + Возврат Истина; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +// См. ОбщегоНазначенияКлиент.ТипПлатформыКлиента. +Функция ТипПлатформыКлиента() Экспорт + СистемнаяИнфо = Новый СистемнаяИнформация; + Возврат СистемнаяИнфо.ТипПлатформы; +КонецФункции + +#КонецОбласти diff --git "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" new file mode 100644 index 0000000..3c4048b --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" @@ -0,0 +1,11 @@ + + + ОбщегоНазначенияКлиентПовтИсп + + ru + Общего назначения клиент повт исп + + true + true + DuringSession + diff --git "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index 20c9d58..b71daa0 100644 --- "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -131,3 +131,115 @@ Файл = новый Файл(ПутьКФайлу); Возврат Файл.Путь; КонецФункции + +// Возвращает Истина, если включен режим отладки. +Функция РежимОтладки() Экспорт + +//#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда +// ПараметрЗапускаПриложения = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПараметрЗапуска"); +//#Иначе +// ПараметрЗапускаПриложения = ПараметрЗапуска; +//#КонецЕсли +// +// Возврат Найти(ПараметрЗапускаПриложения, "РежимОтладки") > 0; + Возврат Ложь; + +КонецФункции + +// Вызывает исключение с текстом Сообщение, если Условие не равно Истина. +// Применяется для самодиагностики кода. +// +// Параметры: +// Условие - Булево - если не равно Истина, то вызывается исключение. +// КонтекстПроверки - Строка - например, имя процедуры или функции, в которой выполняется проверка. +// Сообщение - Строка - текст сообщения. Если не задан, то исключение вызывается с сообщением по +// умолчанию. +// +Процедура Проверить(Знач Условие, Знач Сообщение = "", Знач КонтекстПроверки = "") Экспорт + + Если Не РежимОтладки() Тогда + Возврат; + КонецЕсли; + + Если Условие <> Истина Тогда + Если ПустаяСтрока(Сообщение) Тогда + ТекстИсключения = НСтр("ru = 'Недопустимая операция'"); // Assertion failed + Иначе + ТекстИсключения = Сообщение; + КонецЕсли; + Если Не ПустаяСтрока(КонтекстПроверки) Тогда + ТекстИсключения = ТекстИсключения + " " + + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'в %1'"), КонтекстПроверки); + КонецЕсли; + ВызватьИсключение ТекстИсключения; + КонецЕсли; + +КонецПроцедуры + +// Вызывает исключение, если тип значения параметра ИмяПараметра процедуры или функции ИмяПроцедурыИлиФункции +// отличается от ожидаемого. +// Для диагностики типов параметров, передаваемых в процедуры и функции программного интерфейса. +// +// Параметры: +// ИмяПроцедурыИлиФункции - Строка - имя процедуры или функции, параметр которой проверяется. +// ИмяПараметра - Строка - имя проверяемого параметра процедуры или функции. +// ЗначениеПараметра - Произвольный - фактическое значение параметра. +// ОжидаемыеТипы - ОписаниеТипов, Тип - тип(ы) параметра процедуры или функции. +// ОжидаемыеТипыСвойств - Структура - если ожидаемый тип - структура, то +// в этом параметре можно указать типы ее свойств. +// +Процедура ПроверитьПараметр(Знач ИмяПроцедурыИлиФункции, Знач ИмяПараметра, Знач ЗначениеПараметра, + Знач ОжидаемыеТипы, Знач ОжидаемыеТипыСвойств = Неопределено) Экспорт + + Если Не РежимОтладки() Тогда + Возврат; + КонецЕсли; + + Контекст = "ОбщегоНазначенияКлиентСервер.ПроверитьПараметр"; + Проверить(ТипЗнч(ИмяПроцедурыИлиФункции) = Тип("Строка"), + НСтр("ru = 'Недопустимо значение параметра ИмяПроцедурыИлиФункции'"), Контекст); + Проверить(ТипЗнч(ИмяПараметра) = Тип("Строка"), + НСтр("ru = 'Недопустимо значение параметра ИмяПараметра'"), Контекст); + + ЭтоОписаниеТипов = ТипЗнч(ОжидаемыеТипы) = Тип("ОписаниеТипов"); + Проверить(ЭтоОписаниеТипов Или ТипЗнч(ОжидаемыеТипы) = Тип("Тип"), + НСтр("ru = 'Недопустимо значение параметра ОжидаемыеТипы'"), Контекст); + + НедопустимыйПараметр = НСтр("ru = 'Недопустимое значение параметра %1 в %2. + |Ожидалось: %3; передано значение: %4 (тип %5).'"); + Проверить((ЭтоОписаниеТипов И ОжидаемыеТипы.СодержитТип(ТипЗнч(ЗначениеПараметра))) + Или (Не ЭтоОписаниеТипов И ОжидаемыеТипы = ТипЗнч(ЗначениеПараметра)), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НедопустимыйПараметр, + ИмяПараметра, ИмяПроцедурыИлиФункции, ОжидаемыеТипы, + ?(ЗначениеПараметра <> Неопределено, ЗначениеПараметра, НСтр("ru = 'Неопределено'")), ТипЗнч(ЗначениеПараметра))); + + Если ТипЗнч(ЗначениеПараметра) = Тип("Структура") И ОжидаемыеТипыСвойств <> Неопределено Тогда + + Проверить(ТипЗнч(ОжидаемыеТипыСвойств) = Тип("Структура"), + НСтр("ru = 'Недопустимо значение параметра ИмяПроцедурыИлиФункции'"), Контекст); + + НетСвойства = НСтр("ru = 'Недопустимое значение параметра %1 (Структура) в %2. + |В структуре ожидалось свойство %3 (тип %4).'"); + НедопустимоеСвойство = НСтр("ru = 'Недопустимое значение свойства %1 в параметре %2 (Структура) в %3. + |Ожидалось: %4; передано значение: %5 (тип %6).'"); + Для каждого Свойство Из ОжидаемыеТипыСвойств Цикл + + ОжидаемоеИмяСвойства = Свойство.Ключ; + ОжидаемыйТипСвойства = Свойство.Значение; + ЗначениеСвойства = Неопределено; + + Проверить(ЗначениеПараметра.Свойство(ОжидаемоеИмяСвойства, ЗначениеСвойства), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НетСвойства, + ИмяПараметра, ИмяПроцедурыИлиФункции, ОжидаемоеИмяСвойства, ОжидаемыйТипСвойства)); + + ЭтоОписаниеТипов = ТипЗнч(ОжидаемыйТипСвойства) = Тип("ОписаниеТипов"); + Проверить((ЭтоОписаниеТипов И ОжидаемыйТипСвойства.СодержитТип(ТипЗнч(ЗначениеСвойства))) + Или (Не ЭтоОписаниеТипов И ОжидаемыйТипСвойства = ТипЗнч(ЗначениеСвойства)), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НедопустимоеСвойство, + ОжидаемоеИмяСвойства, ИмяПараметра, ИмяПроцедурыИлиФункции, ОжидаемыйТипСвойства, + ?(ЗначениеСвойства <> Неопределено, ЗначениеСвойства, НСтр("ru = 'Неопределено'")), ТипЗнч(ЗначениеСвойства))); + + КонецЦикла; + КонецЕсли; + +КонецПроцедуры diff --git "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" new file mode 100644 index 0000000..11017bc --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" @@ -0,0 +1,115 @@ +#Область ОткрытьНавигационнуюСсылку + +// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку. +Процедура ОткрытьНавигационнуюСсылкуПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт + + НавигационнаяСсылка = Контекст.НавигационнаяСсылка; + + Если РасширениеПодключено Тогда + + Оповещение = Контекст.Оповещение; + ДождатьсяЗавершения = (Оповещение <> Неопределено); + + Оповещение = Новый ОписаниеОповещения("ОткрытьНавигационнуюСсылкуПослеЗапускаПриложения", ЭтотОбъект, Контекст, + "ОткрытьНавигационнуюСсылкуПриОбработкеОшибки", ЭтотОбъект); + НачатьЗапускПриложения(Оповещение, НавигационнаяСсылка,, ДождатьсяЗавершения); + + Иначе + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Расширение для работы с файлами не установлено, переход по ссылке ""%1"" невозможен.'"), + НавигационнаяСсылка); + ОткрытьНавигационнуюСсылкуОповеститьОбОшибке(ОписаниеОшибки, Контекст); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку. +Процедура ОткрытьНавигационнуюСсылкуПослеЗапускаПриложения(КодВозврата, Контекст) Экспорт + + Оповещение = Контекст.Оповещение; + + Если Оповещение <> Неопределено Тогда + ПриложениеЗапущено = (КодВозврата = 0 Или КодВозврата = Неопределено); + ВыполнитьОбработкуОповещения(Оповещение, ПриложениеЗапущено); + КонецЕсли; + +КонецПроцедуры + +// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку. +Процедура ОткрытьНавигационнуюСсылкуПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт + + СтандартнаяОбработка = Ложь; + ОткрытьНавигационнуюСсылкуОповеститьОбОшибке("", Контекст); + +КонецПроцедуры + +// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку. +Процедура ОткрытьНавигационнуюСсылкуОповеститьОбОшибке(ОписаниеОшибки, Контекст) Экспорт + + Оповещение = Контекст.Оповещение; + + Если Оповещение = Неопределено Тогда + Если Не ПустаяСтрока(ОписаниеОшибки) Тогда + ПоказатьПредупреждение(, ОписаниеОшибки); + КонецЕсли; + Иначе + ПриложениеЗапущено = Ложь; + ВыполнитьОбработкуОповещения(Оповещение, ПриложениеЗапущено); + КонецЕсли; + +КонецПроцедуры + +// Проверяет, является ли переданная строка веб ссылкой. +// +// Параметры: +// Строка - Строка - переданная ссылка. +// +Функция ЭтоВебСсылка(Строка) Экспорт + + Возврат СтрНачинаетсяС(Строка, "http://") // обычное соединение. + Или СтрНачинаетсяС(Строка, "https://");// защищенное соединение. + +КонецФункции + +// Проверяет, является ли переданная строка ссылкой на встроенную справку. +// +// Параметры: +// Строка - Строка - переданная ссылка. +// +Функция ЭтоСсылкаНаСправку(Строка) Экспорт + + Возврат СтрНачинаетсяС(Строка, "v8help://"); + +КонецФункции + +// Проверяет, является ли переданная строка допустимой ссылкой по белому списку протоколов. +// +// Параметры: +// Строка - Строка - переданная ссылка. +// +Функция ЭтоДопустимаяСсылка(Строка) Экспорт + + Возврат СтрНачинаетсяС(Строка, "e1cib/") + Или СтрНачинаетсяС(Строка, "http:") + Или СтрНачинаетсяС(Строка, "https:") + Или СтрНачинаетсяС(Строка, "e1c:") + Или СтрНачинаетсяС(Строка, "v8help:") + Или СтрНачинаетсяС(Строка, "mailto:") + Или СтрНачинаетсяС(Строка, "tel:") + Или СтрНачинаетсяС(Строка, "skype:"); + +КонецФункции + +#КонецОбласти + +// Проверяет, является ли переданная строка внутренней навигационной ссылкой. +// +// Параметры: +// Строка - Строка - навигационная ссылка. +// +Функция ЭтоНавигационнаяСсылка(Строка) Экспорт + + Возврат СтрНачинаетсяС(Строка, "e1c:") + Или СтрНачинаетсяС(Строка, "e1cib/"); + +КонецФункции diff --git "a/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" new file mode 100644 index 0000000..5e66cad --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202/\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271\320\232\320\273\320\270\320\265\320\275\321\202.mdo" @@ -0,0 +1,9 @@ + + + ОбщегоНазначенияСлужебныйКлиент + + ru + Общего назначения служебный клиент + + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" new file mode 100644 index 0000000..21bcae1 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\232\320\273\320\270\320\265\320\275\321\202/Module.bsl" @@ -0,0 +1,11 @@ +#Область ПрограммныйИнтерфейс + +// Открывает форму управления полнотекстовым поиском и извлечения текстов. +// +Процедура ПоказатьУправлениеПолнотекстовымПоискомИИзвлечениемТекстов() Экспорт + + ОткрытьФорму("Обработка.ПолнотекстовыйПоискВДанных.Форма.УправлениеПолнотекстовымПоискомИИзвлечениемТекстов"); + +КонецПроцедуры + +#КонецОбласти diff --git "a/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\232\320\273\320\270\320\265\320\275\321\202/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\232\320\273\320\270\320\265\320\275\321\202.mdo" "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\232\320\273\320\270\320\265\320\275\321\202/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\232\320\273\320\270\320\265\320\275\321\202.mdo" new file mode 100644 index 0000000..5379f7b --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\232\320\273\320\270\320\265\320\275\321\202/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\232\320\273\320\270\320\265\320\275\321\202.mdo" @@ -0,0 +1,10 @@ + + + ПолнотекстовыйПоискКлиент + + ru + Полнотекстовый поиск клиент + + true + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" new file mode 100644 index 0000000..177d003 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -0,0 +1,468 @@ +#Область ПрограммныйИнтерфейс + +// Обновляет индекс полнотекстового поиска. +Процедура ОбновлениеИндексаППД() Экспорт + + ОбновитьИндекс(НСтр("ru = 'Обновление индекса ППД'"), Ложь, Истина); + +КонецПроцедуры + +// Выполняет слияние индексов полнотекстового поиска. +Процедура СлияниеИндексаППД() Экспорт + + ОбновитьИндекс(НСтр("ru = 'Слияние индекса ППД'"), Истина); + +КонецПроцедуры + +// Возвращает, актуален ли индекс полнотекстового поиска. +// Проверка функциональной опции "ИспользоватьПолнотекстовыйПоиск" выполняется в вызывающем коде. +// +// Возвращаемое значение: +// Булево - Истина - полнотекстовый поиск содержит актуальные данные. +// +Функция ИндексПоискаАктуален() Экспорт + + Возврат ( + // Операции не разрешены, + // или индекс полностью соответствует текущему состоянию информационной базы, + // или индекс обновлялся менее 5 минут назад. + Не ОперацииРазрешены() + Или ПолнотекстовыйПоиск.ИндексАктуален() + Или ТекущаяДата() < (ПолнотекстовыйПоиск.ДатаАктуальности() + 300)); // Исключение из правила ТекущаяДатаСеанса(). + +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Возвращает разрешены ли операции полнотекстового поиска: обновление индексов, очистка индексов, поиск. +Функция ОперацииРазрешены() Экспорт + + Возврат (ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Разрешить); + +КонецФункции + +Функция ИспользоватьПолнотекстовыйПоиск() Экспорт + + Возврат Метаданные.ФункциональныеОпции.ИспользоватьПолнотекстовыйПоиск; + +КонецФункции + +#Область ОбработчикиСобытийПодсистемКонфигурации + +// См. ТекущиеДелаПереопределяемый.ПриОпределенииОбработчиковТекущихДел. +Процедура ПриЗаполненииСпискаТекущихДел(ТекущиеДела) Экспорт +//отключено +КонецПроцедуры + +// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления. +Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт + + Обработчик = Обработчики.Добавить(); + Обработчик.НачальноеЗаполнение = Истина; + Обработчик.Процедура = "ПолнотекстовыйПоискСервер.ИнициализироватьФункциональнуюОпциюПолнотекстовыйПоиск"; + Обработчик.Версия = "1.0.0.1"; + Обработчик.ОбщиеДанные = Истина; + +КонецПроцедуры + +// См. РегламентныеЗаданияПереопределяемый.ПриОпределенииНастроекРегламентныхЗаданий. +Процедура ПриОпределенииНастроекРегламентныхЗаданий(Зависимости) Экспорт + + Зависимость = Зависимости.Добавить(); + Зависимость.РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОбновлениеИндексаППД; + Зависимость.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ИспользоватьПолнотекстовыйПоиск; + + Зависимость = Зависимости.Добавить(); + Зависимость.РегламентноеЗадание = Метаданные.РегламентныеЗадания.СлияниеИндексаППД; + Зависимость.ФункциональнаяОпция = Метаданные.ФункциональныеОпции.ИспользоватьПолнотекстовыйПоиск; + +КонецПроцедуры + +#КонецОбласти + +// Устанавливает значение константы ИспользоватьПолнотекстовыйПоиск. +// Используется для синхронизации значения +// функциональной опции "ИспользоватьПолнотекстовыйПоиск" +// с "ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска()". +// +Процедура ИнициализироватьФункциональнуюОпциюПолнотекстовыйПоиск() Экспорт + + ЗначениеКонстанты = ОперацииРазрешены(); + Константы.ИспользоватьПолнотекстовыйПоиск.Установить(ЗначениеКонстанты); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +#Область ОбработчикиРегламентныхЗаданий + +// Обработчик регламентного задания ОбновлениеИндексаППД. +Процедура ОбновлениеИндексаППДПоРасписанию() Экспорт + + ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.ОбновлениеИндексаППД); + + Если ВыполняетсяФоновоеЗаданиеСлияниеИндекса() Тогда + Возврат; + КонецЕсли; + + ОбновлениеИндексаППД(); + +КонецПроцедуры + +// Обработчик регламентного задания СлияниеИндексаППД. +Процедура СлияниеИндексаППДПоРасписанию() Экспорт + + ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(Метаданные.РегламентныеЗадания.СлияниеИндексаППД); + + Если ВыполняетсяФоновоеЗаданиеОбновлениеИндекса() Тогда + Возврат; + КонецЕсли; + + СлияниеИндексаППД(); + +КонецПроцедуры + +#КонецОбласти + +#Область БизнесЛогикаПоиска + +#Область СостояниеПоиска + +Функция СостояниеПолнотекстовогоПоиска() Экспорт + + Если ПолучитьФункциональнуюОпцию("ИспользоватьПолнотекстовыйПоиск") Тогда + + Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Разрешить Тогда + + // Исключение из правила ТекущаяДатаСеанса(). + Если ТекущаяДата() < (ПолнотекстовыйПоиск.ДатаАктуальности() + 300) Тогда + Возврат "ПоискРазрешен"; + Иначе + Если ПолнотекстовыйПоиск.ИндексАктуален() Тогда + Возврат "ПоискРазрешен"; + ИначеЕсли ВыполняетсяФоновоеЗаданиеОбновлениеИндекса() Тогда + Возврат "ВыполняетсяОбновлениеИндекса"; + ИначеЕсли ВыполняетсяФоновоеЗаданиеСлияниеИндекса() Тогда + Возврат "ВыполняетсяСлияниеИндекса"; + Иначе + Возврат "ТребуетсяОбновлениеИндекса"; + КонецЕсли; + КонецЕсли; + + Иначе + // Рассинхронизация значения константы ИспользоватьПолнотекстовыйПоиск + // и установленного режима полнотекстового поиска в информационной базе. + Возврат "ОшибкаНастройкиПоиска"; + КонецЕсли; + + Иначе + Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Разрешить Тогда + // Рассинхронизация значения константы ИспользоватьПолнотекстовыйПоиск + // и установленного режима полнотекстового поиска в информационной базе. + Возврат "ОшибкаНастройкиПоиска"; + Иначе + Возврат "ПоискЗапрещен"; + КонецЕсли; + КонецЕсли; + +КонецФункции + +Функция ВыполняетсяФоновоеЗаданиеОбновлениеИндекса() + + РегламентноеЗадание = Метаданные.РегламентныеЗадания.ОбновлениеИндексаППД; + + Отбор = Новый Структура; + Отбор.Вставить("ИмяМетода", РегламентноеЗадание.ИмяМетода); + Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно); + ТекущиеФоновыеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор); + + Возврат ТекущиеФоновыеЗадания.Количество() > 0; + +КонецФункции + +Функция ВыполняетсяФоновоеЗаданиеСлияниеИндекса() + + РегламентноеЗадание = Метаданные.РегламентныеЗадания.СлияниеИндексаППД; + + Отбор = Новый Структура; + Отбор.Вставить("ИмяМетода", РегламентноеЗадание.ИмяМетода); + Отбор.Вставить("Состояние", СостояниеФоновогоЗадания.Активно); + ТекущиеФоновыеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор); + + Возврат ТекущиеФоновыеЗадания.Количество() > 0; + +КонецФункции + +#КонецОбласти + +#Область ВыполнениеПоиска + +Функция ПараметрыПоиска() Экспорт + + Параметры = Новый Структура; + Параметры.Вставить("СтрокаПоиска", ""); + Параметры.Вставить("НаправлениеПоиска", "ПерваяЧасть"); + Параметры.Вставить("ТекущаяПозиция", 0); + Параметры.Вставить("ИскатьВРазделах", Ложь); + Параметры.Вставить("ОбластиПоиска", Новый Массив); + + Возврат Параметры; + +КонецФункции + +Функция ВыполнитьПолнотекстовыйПоиск(ПараметрыПоиска) Экспорт + + СтрокаПоиска = ПараметрыПоиска.СтрокаПоиска; + Направление = ПараметрыПоиска.НаправлениеПоиска; + ТекущаяПозиция = ПараметрыПоиска.ТекущаяПозиция; + ИскатьВРазделах = ПараметрыПоиска.ИскатьВРазделах; + ОбластиПоиска = ПараметрыПоиска.ОбластиПоиска; + + РазмерПорции = 10; + ОписаниеОшибки = ""; + КодОшибки = ""; + + СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок(СтрокаПоиска, РазмерПорции); + + Если ИскатьВРазделах И ОбластиПоиска.Количество() > 0 Тогда + СписокПоиска.ИспользованиеМетаданных = ИспользованиеМетаданныхПолнотекстовогоПоиска.НеИспользовать; + + Для каждого Область Из ОбластиПоиска Цикл + ОбъектМетаданных = ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(Область.Значение); + СписокПоиска.ОбластьПоиска.Добавить(ОбъектМетаданных); + КонецЦикла; + КонецЕсли; + + Попытка + Если Направление = "ПерваяЧасть" Тогда + СписокПоиска.ПерваяЧасть(); + ИначеЕсли Направление = "ПредыдущаяЧасть" Тогда + СписокПоиска.ПредыдущаяЧасть(ТекущаяПозиция); + ИначеЕсли Направление = "СледующаяЧасть" Тогда + СписокПоиска.СледующаяЧасть(ТекущаяПозиция); + Иначе + ВызватьИсключение НСтр("ru = 'Параметр НаправлениеПоиска задан неверно.'"); + КонецЕсли; + Исключение + ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КодОшибки = "ОшибкаПоиска"; + КонецПопытки; + + Если СписокПоиска.СлишкомМногоРезультатов() Тогда + ОписаниеОшибки = НСтр("ru = 'Слишком много результатов, уточните запрос'"); + КодОшибки = "СлишкомМногоРезультатов"; + КонецЕсли; + + ПолноеКоличество = СписокПоиска.ПолноеКоличество(); + + Если ПолноеКоличество = 0 Тогда + ОписаниеОшибки = НСтр("ru = 'По запросу ничего не найдено'"); + КодОшибки = "НичегоНеНайдено"; + КонецЕсли; + + Если ПустаяСтрока(КодОшибки) Тогда + РезультатыПоиска = РезультатыПолнотекстовогоПоиска(СписокПоиска); + Иначе + РезультатыПоиска = Новый Массив; + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("ТекущаяПозиция", СписокПоиска.НачальнаяПозиция()); + Результат.Вставить("Количество", СписокПоиска.Количество()); + Результат.Вставить("ПолноеКоличество", ПолноеКоличество); + Результат.Вставить("КодОшибки", КодОшибки); + Результат.Вставить("ОписаниеОшибки", ОписаниеОшибки); + Результат.Вставить("РезультатыПоиска", РезультатыПоиска); + + Возврат Результат; + +КонецФункции + +Функция РезультатыПолнотекстовогоПоиска(СписокПоиска) + + // Разбор списка посредством выделения блока описания HTML. + СтрокиПоискаHTML = СтрокиРезультатаПоискаHTML(СписокПоиска); + + Результат = Новый Массив; + + // Обход строк списка поиска. + Для Индекс = 0 По СписокПоиска.Количество() - 1 Цикл + + ОписаниеHTML = СтрокиПоискаHTML.ОписанияHTML.Получить(Индекс); + Представление = СтрокиПоискаHTML.Представления.Получить(Индекс); + СтрокаСпискаПоиска = СписокПоиска.Получить(Индекс); + + МетаданныеОбъекта = СтрокаСпискаПоиска.Метаданные; + Значение = СтрокаСпискаПоиска.Значение; + + Переопределяемый_ПриПолученииПолнотекстовымПоиском(МетаданныеОбъекта, Значение, Представление); + + Ссылка = ""; + Попытка + Ссылка = ПолучитьНавигационнуюСсылку(Значение); + Исключение + Ссылка = "#"; // Непредусмотренное для открытия. + КонецПопытки; + + СтрокаРезультата = Новый Структура; + СтрокаРезультата.Вставить("Ссылка", Ссылка); + СтрокаРезультата.Вставить("ОписаниеHTML", ОписаниеHTML); + СтрокаРезультата.Вставить("Представление", Представление); + + Результат.Добавить(СтрокаРезультата); + + КонецЦикла; + + Возврат Результат; + +КонецФункции + +Функция СтрокиРезультатаПоискаHTML(СписокПоиска) + + ОтображениеСпискаHTML = СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст); + + // Получение DOM для отображения списка. + // Нельзя выносить в отдельную функцию получения DOM из-за ошибки платформы в стеке вызовов потока чтения DOM. + ЧтениеHTML = Новый ЧтениеHTML; + ЧтениеHTML.УстановитьСтроку(ОтображениеСпискаHTML); + ПостроительDOM = Новый ПостроительDOM; + ОтображениеСпискаDOM = ПостроительDOM.Прочитать(ЧтениеHTML); + ЧтениеHTML.Закрыть(); + + СписокЭлементовDivDOM = ОтображениеСпискаDOM.ПолучитьЭлементыПоИмени("div"); + СтрокиОписанияHTML = СтрокиОписанияHTML(СписокЭлементовDivDOM); + + СписокЭлементовAnchorDOM = ОтображениеСпискаDOM.ПолучитьЭлементыПоИмени("a"); + СтрокиПредставления = СтрокиПредставления(СписокЭлементовAnchorDOM); + + Результат = Новый Структура; + Результат.Вставить("ОписанияHTML", СтрокиОписанияHTML); + Результат.Вставить("Представления", СтрокиПредставления); + + Возврат Результат; + +КонецФункции + +Функция СтрокиОписанияHTML(СписокЭлементовDivDOM) + + СтрокиОписанияHTML = Новый Массив; + Для каждого ЭлементDOM Из СписокЭлементовDivDOM Цикл + + Если ЭлементDOM.ИмяКласса = "textPortion" Тогда + + ЗаписьDOM = Новый ЗаписьDOM; + ЗаписьHTML = Новый ЗаписьHTML; + ЗаписьHTML.УстановитьСтроку(); + ЗаписьDOM.Записать(ЭлементDOM, ЗаписьHTML); + + ОписаниеHTMLСтрокиРезультата = ЗаписьHTML.Закрыть(); + + СтрокиОписанияHTML.Добавить(ОписаниеHTMLСтрокиРезультата); + + КонецЕсли; + КонецЦикла; + + Возврат СтрокиОписанияHTML; + +КонецФункции + +Функция СтрокиПредставления(СписокЭлементовAnchorDOM) + + СтрокиПредставления = Новый Массив; + Для каждого ЭлементDOM Из СписокЭлементовAnchorDOM Цикл + + Представление = ЭлементDOM.ТекстовоеСодержимое; + СтрокиПредставления.Добавить(Представление); + + КонецЦикла; + + Возврат СтрокиПредставления; + +КонецФункции + +// Позволяет переопределить: +// - Значение +// - Представление +// +// См. тип данных ЭлементСпискаПолнотекстовогоПоиска +// +Процедура Переопределяемый_ПриПолученииПолнотекстовымПоиском(МетаданныеОбъекта, Значение, Представление) + + +КонецПроцедуры + +#КонецОбласти + +#Область ОбновлениеИндексаПоиска + +// Общая процедура для обновления и слияния индекса ППД. +Процедура ОбновитьИндекс(ПредставлениеПроцедуры, РазрешитьСлияние = Ложь, Порциями = Ложь) + + Если НЕ ОперацииРазрешены() Тогда + Возврат; + КонецЕсли; + + ОбщегоНазначения.ПриНачалеВыполненияРегламентногоЗадания(); + + ЗаписьЖурнала(Неопределено, НСтр("ru = 'Запуск процедуры ""%1"".'"), , ПредставлениеПроцедуры); + + Попытка + ПолнотекстовыйПоиск.ОбновитьИндекс(РазрешитьСлияние, Порциями); + ЗаписьЖурнала(Неопределено, НСтр("ru = 'Успешное завершение процедуры ""%1"".'"), , ПредставлениеПроцедуры); + Исключение + ЗаписьЖурнала(Неопределено, НСтр("ru = 'Ошибка выполнения процедуры ""%1"":'"), ИнформацияОбОшибке(), ПредставлениеПроцедуры); + КонецПопытки; + +КонецПроцедуры + +// Создает запись в журнале регистрации и сообщениях пользователю; +// +// Параметры: +// УровеньЖурнала - УровеньЖурналаРегистрации - Важность сообщения для администратора. +// КомментарийСПараметрами - Строка - Комментарий, который может содержать параметры %1. +// ИнформацияОбОшибке - ИнформацияОбОшибке, Строка - Информация об ошибке, которая будет размещена после комментария. +// Параметр - Строка - Для подстановки в КомментарийСПараметрами вместо %1. +// +Процедура ЗаписьЖурнала(УровеньЖурнала, КомментарийСПараметрами, ИнформацияОбОшибке = Неопределено, + Параметр = Неопределено) + + // Определение уровня журнала регистрации на основе типа переданного сообщения об ошибке. + Если ТипЗнч(УровеньЖурнала) <> Тип("УровеньЖурналаРегистрации") Тогда + Если ТипЗнч(ИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") Тогда + УровеньЖурнала = УровеньЖурналаРегистрации.Ошибка; + ИначеЕсли ТипЗнч(ИнформацияОбОшибке) = Тип("Строка") Тогда + УровеньЖурнала = УровеньЖурналаРегистрации.Предупреждение; + Иначе + УровеньЖурнала = УровеньЖурналаРегистрации.Информация; + КонецЕсли; + КонецЕсли; + + // Комментарий для журнала регистрации. + ТекстДляЖурнала = КомментарийСПараметрами; + Если Параметр <> Неопределено Тогда + ТекстДляЖурнала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстДляЖурнала, Параметр); + КонецЕсли; + Если ТипЗнч(ИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") Тогда + ТекстДляЖурнала = ТекстДляЖурнала + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); + ИначеЕсли ТипЗнч(ИнформацияОбОшибке) = Тип("Строка") Тогда + ТекстДляЖурнала = ТекстДляЖурнала + Символы.ПС + ИнформацияОбОшибке; + КонецЕсли; + ТекстДляЖурнала = СокрЛП(ТекстДляЖурнала); + + // Запись в журнал регистрации. + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Полнотекстовое индексирование'", ), + УровеньЖурнала, , , + ТекстДляЖурнала); + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#КонецОбласти diff --git "a/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200.mdo" new file mode 100644 index 0000000..97c1dad --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -0,0 +1,11 @@ + + + ПолнотекстовыйПоискСервер + + ru + Полнотекстовый поиск сервер + + true + true + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Module.bsl" new file mode 100644 index 0000000..df0a3df --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/Module.bsl" @@ -0,0 +1,37 @@ +#Область ПрограммныйИнтерфейс + +// Позволяет внести изменения в дерево с разделами полнотекстового поиска, отображаемого при выборе области поиска. +// По умолчанию дерево разделов формируется на основании состава подсистем конфигурации. +// Структура дерева описана в форме Обработка.ПолнотекстовыйПоискВДанных.Форма.ВыборОбластиПоиска. +// Все колонки, неуказанные в параметрах, будут автоматически рассчитаны. +// При необходимости построить дерево разделов самостоятельно требуется сохранить состав колонок. +// +// Параметры: +// РазделыПоиска - ДеревоЗначений - области поиска. Содержит колонки: +// ** Раздел - Строка - Представление раздела: подсистемы или объекта метаданных. +// ** Картинка - Картинка - Картинка раздела, рекомендуется только для корневых разделов. +// ** ОбъектМД - СправочникСсылка.ИдентификаторыОбъектовМетаданных - Задается только для объектов метаданных, +// для разделов остается пустым. +// Пример: +// +// НовыйРаздел = РазделыПоиска.Строки.Добавить(); +// НовыйРаздел.Раздел = "Главное"; +// НовыйРаздел.Картинка = БиблиотекаКартинок._ДемоРазделГлавное; +// +// ОбъектМетаданных = Метаданные.Документы._ДемоСчетНаОплатуПокупателю; +// +// Если ПравоДоступа("Просмотр", ОбъектМетаданных) +// И ОбщегоНазначения.ОбъектМетаданныхДоступенПоФункциональнымОпциям(ОбъектМетаданных) Тогда +// +// НовыйОбъектРаздела = НовыйРаздел.Строки.Добавить(); +// НовыйОбъектРаздела.Раздел = ОбъектМетаданных.ПредставлениеСписка; +// НовыйОбъектРаздела.ОбъектМД = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(ОбъектМетаданных); +// КонецЕсли; +// +Процедура ПриПолученииРазделовПолнотекстовогоПоиска(РазделыПоиска) Экспорт + + + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271.mdo" "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271.mdo" new file mode 100644 index 0000000..8e7dcdd --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\241\320\265\321\200\320\262\320\265\321\200\320\237\320\265\321\200\320\265\320\276\320\277\321\200\320\265\320\264\320\265\320\273\321\217\320\265\320\274\321\213\320\271.mdo" @@ -0,0 +1,11 @@ + + + ПолнотекстовыйПоискСерверПереопределяемый + + ru + Полнотекстовый поиск сервер переопределяемый + + true + true + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" new file mode 100644 index 0000000..47f64c9 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -0,0 +1,113 @@ +// Программно размещает элемент на форме +// СтруктураЭлемента может содержать параметры: +// ИмяРодителя - Имя элемента-родителя добавляемого элемента. Если не указан - добавляется на верхний уровень +// ИмяСледующегоЭлемента - Имя элемента, перед которым мы вставляем новый элемент. Если не указан - добавляется в конец +// Прочие параметры совпадают с именами свойств добавляемого элемента(Видимость, ширина, и т.п.) +// +// Параметры: +// Форма - УправляемаяФорма - Форма, на которой размещается элемент +// Имя - Строка - Уникальное имя элемента формы +// Тип - Тип - Тип добавляемого элемента (Поле формы, группа формы, таблица формы и т.п.) +// СтруктураЭлемента - Структура - Структура, содержащая параметры создаваемого элемента +// +// Возвращаемое значение: +// ЭлементФормы - Добавленный элемент +// +Функция ВставитьЭлемент(Форма, Имя, Тип, СтруктураЭлемента) Экспорт + + Родитель=Форма; + ИмяРодителя=""; + Если СтруктураЭлемента.Свойство("ИмяРодителя", ИмяРодителя) И ЗначениеЗаполнено(ИмяРодителя) Тогда + Родитель = Форма.Элементы[ИмяРодителя]; + КонецЕсли; + + СледующийЭлемент=Неопределено; + ИмяСледующегоЭлемента=""; + Если СтруктураЭлемента.Свойство("ИмяСледующегоЭлемента", ИмяСледующегоЭлемента) + И ЗначениеЗаполнено(ИмяСледующегоЭлемента) Тогда + СледующийЭлемент=Форма.Элементы[ИмяСледующегоЭлемента]; + КонецЕсли; + + Элемент=Форма.Элементы.Вставить(Имя, Тип, Родитель, СледующийЭлемент); + + ЗаполнитьЗначенияСвойств(Элемент,СтруктураЭлемента); + + Возврат Элемент; + +КонецФункции + +// Программно удаляет элемент с формы, не может удалять элементы добавленные конструктором через конфигуратор +// +// Параметры: +// Форма - УправляемаяФорма - Форма, на которой размещается элемент +// Имя - Строка - Уникальное имя элемента формы +// +Процедура УдалитьЭлемент(Форма, Имя) Экспорт + + Элемент = Форма.Элементы.Найти(Имя); + Если НЕ Элемент=Неопределено Тогда + Форма.Элементы.Удалить(Элемент); + КонецЕсли; + +КонецПроцедуры + +// Программно размещает элемент на форме +// СтруктураЭлемента может содержать параметры: +// ИмяРодителя - Имя элемента-родителя добавляемого элемента. Если не указан - добавляется на верхний уровень +// ИмяСледующегоЭлемента - Имя элемента, перед которым мы вставляем новый элемент. Если не указан - добавляется в конец +// Прочие параметры совпадают с именами свойств добавляемого элемента(Видимость, ширина, и т.п.) +// +// Параметры: +// Форма - УправляемаяФорма - Форма, на которой размещается элемент +// Имя - Строка - Уникальное имя элемента формы +// Тип - Тип - Тип добавляемого элемента (Поле формы, группа формы, таблица формы и т.п.) +// СтруктураЭлемента - Структура - Структура, содержащая параметры создаваемого элемента +// +// Возвращаемое значение: +// ЭлементФормы - Добавленный элемент +// +Функция ВставитьЭлементДинамическогоСписка(Форма, Имя, Тип, Знач СтруктураЭлемента) Экспорт + + ПолныйПутьКДаннымПоля = Неопределено; + Если СтруктураЭлемента.Свойство("ПутьКДанным", ПолныйПутьКДаннымПоля) И ЗначениеЗаполнено(ПолныйПутьКДаннымПоля) Тогда + МассивИменЭлементов = СтрРазделить(ПолныйПутьКДаннымПоля, ".", Ложь); + Если МассивИменЭлементов.Количество()>1 Тогда + ДинамическийСписок = Форма[МассивИменЭлементов[0]]; + Если ТипЗнч(ДинамическийСписок)=Тип("ДинамическийСписок") Тогда //на всякий случай чтобы при опиське не было ошибки + ПутьКДаннымПоля = Сред(ПолныйПутьКДаннымПоля, СтрДлина(МассивИменЭлементов[0])+2); + Если ДинамическийСписок.КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.НайтиПоле(Новый ПолеКомпоновкиДанных(ПутьКДаннымПоля))=Неопределено Тогда + //если поле в списке недоступно, то не будем заполнять реквизит "ПутьКДанным" + СтруктураЭлемента.Удалить("ПутьКДанным"); + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Возврат ВставитьЭлемент(Форма, Имя, Тип, СтруктураЭлемента); + +КонецФункции + +// Программно првоеряет наличие реквизиты +// +// Параметры: +// Форма - УправляемаяФорма - Форма, на которой размещается элемент +// Имя - Строка - Уникальное имя элемента формы +// +// Возвращаемое значение: +// РеквизитНайден - Найден или нет реквизит (Истина, Ложь) +// +Функция ЕстьРеквизит(Форма, Имя) Экспорт + + РеквизитНайден=Ложь; + + МассивРеквизитов=Форма.ПолучитьРеквизиты(); + Для Каждого Реквизит Из МассивРеквизитов Цикл + Если Реквизит.Имя=Имя Тогда + РеквизитНайден=Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Возврат РеквизитНайден; + +КонецФункции diff --git "a/TestingTool_3-0/src/CommonModules/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274\320\241\320\265\321\200\320\262\320\265\321\200/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/TestingTool_3-0/src/CommonModules/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274\320\241\320\265\321\200\320\262\320\265\321\200/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274\320\241\320\265\321\200\320\262\320\265\321\200.mdo" new file mode 100644 index 0000000..2032742 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274\320\241\320\265\321\200\320\262\320\265\321\200/\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\275\320\276\320\265\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\265\320\244\320\276\321\200\320\274\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -0,0 +1,11 @@ + + + ПрограммноеИзменениеФормСервер + + ru + Программное изменение форм сервер + + true + true + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" new file mode 100644 index 0000000..f8c8822 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -0,0 +1,162 @@ +//////////////////////////////////////////////////////////////////////////////// +// Подсистема "Регламентные задания". +// +//////////////////////////////////////////////////////////////////////////////// + +#Область ПрограммныйИнтерфейс + +// Возвращает использование регламентного задания. +// Перед вызовом требуется иметь право Администрирования или УстановитьПривилегированныйРежим. +// +// Параметры: +// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска +// предопределенного регламентного задания. +// - УникальныйИдентификатор - идентификатор регламентного задания. +// - Строка - строка уникального идентификатора регламентного задания. +// - РегламентноеЗадание - регламентное задание. +// +// Возвращаемое значение: +// Булево - если Истина, регламентное задание используется. +// +Функция ПолучитьИспользованиеРегламентногоЗадания(Знач Идентификатор) Экспорт + + РегламентныеЗаданияСлужебный.ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Задание = ПолучитьРегламентноеЗадание(Идентификатор); + + Возврат Задание.Использование; + +КонецФункции + +// Устанавливает использование регламентного задания. +// Перед вызовом требуется иметь право Администрирования или УстановитьПривилегированныйРежим. +// +// Параметры: +// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска +// предопределенного регламентного задания. +// - УникальныйИдентификатор - идентификатор регламентного задания. +// - Строка - строка уникального идентификатора регламентного задания. +// - РегламентноеЗадание - регламентное задание. +// +// Использование - Булево - значение использования которое нужно установить. +// +Процедура УстановитьИспользованиеРегламентногоЗадания(Знач Идентификатор, Знач Использование) Экспорт + + РегламентныеЗаданияСлужебный.ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Задание = ПолучитьРегламентноеЗадание(Идентификатор); + + Если Задание.Использование <> Использование Тогда + Задание.Использование = Использование; + КонецЕсли; + + Задание.Записать(); + +КонецПроцедуры + +// Возвращает расписание регламентного задания. +// Перед вызовом требуется иметь право Администрирования или УстановитьПривилегированныйРежим. +// +// Параметры: +// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска +// предопределенного регламентного задания. +// - УникальныйИдентификатор - идентификатор регламентного задания. +// - Строка - строка уникального идентификатора регламентного задания. +// - РегламентноеЗадание - регламентное задание. +// +// ВСтруктуре - Булево - если Истина, тогда расписание будет преобразовано +// в структуру, которую можно передать на клиент. +// +// Возвращаемое значение: +// РасписаниеРегламентногоЗадания, Структура - структура содержит те же свойства, что и расписание. +// +Функция ПолучитьРасписаниеРегламентногоЗадания(Знач Идентификатор, Знач ВСтруктуре = Ложь) Экспорт + + РегламентныеЗаданияСлужебный.ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Задание = ПолучитьРегламентноеЗадание(Идентификатор); + + Если ВСтруктуре Тогда + Возврат ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(Задание.Расписание); + КонецЕсли; + + Возврат Задание.Расписание; + +КонецФункции + +// Устанавливает расписание регламентного задания. +// Перед вызовом требуется иметь право Администрирования или УстановитьПривилегированныйРежим. +// +// Параметры: +// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска +// предопределенного регламентного задания. +// - УникальныйИдентификатор - идентификатор регламентного задания. +// - Строка - строка уникального идентификатора регламентного задания. +// - РегламентноеЗадание - регламентное задание. +// +// Расписание - РасписаниеРегламентногоЗадания - расписание. +// - Структура - значение возвращаемое функцией РасписаниеВСтруктуру +// общего модуля ОбщегоНазначенияКлиентСервер. +// +Процедура УстановитьРасписаниеРегламентногоЗадания(Знач Идентификатор, Знач Расписание) Экспорт + + РегламентныеЗаданияСлужебный.ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Задание = ПолучитьРегламентноеЗадание(Идентификатор); + + Если ТипЗнч(Расписание) = Тип("РасписаниеРегламентногоЗадания") Тогда + Задание.Расписание = Расписание; + Иначе + Задание.Расписание = ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(Расписание); + КонецЕсли; + + Задание.Записать(); + +КонецПроцедуры + +// Возвращает РегламентноеЗадание из информационной базы. +// +// Параметры: +// Идентификатор - ОбъектМетаданных - объект метаданных регламентного задания для поиска +// предопределенного регламентного задания. +// - УникальныйИдентификатор - идентификатор регламентного задания. +// - Строка - строка уникального идентификатора регламентного задания. +// - РегламентноеЗадание - регламентное задание из которого нужно получить +// уникальный идентификатор для получения свежей копии регламентного задания. +// +// Возвращаемое значение: +// РегламентноеЗадание - прочитано из базы данных. +// +Функция ПолучитьРегламентноеЗадание(Знач Идентификатор) Экспорт + + РегламентныеЗаданияСлужебный.ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Если ТипЗнч(Идентификатор) = Тип("РегламентноеЗадание") Тогда + Идентификатор = Идентификатор.УникальныйИдентификатор; + КонецЕсли; + + Если ТипЗнч(Идентификатор) = Тип("Строка") Тогда + Идентификатор = Новый УникальныйИдентификатор(Идентификатор); + КонецЕсли; + + Если ТипЗнч(Идентификатор) = Тип("ОбъектМетаданных") Тогда + РегламентноеЗадание = РегламентныеЗадания.НайтиПредопределенное(Идентификатор); + Иначе + РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Идентификатор); + КонецЕсли; + + Если РегламентноеЗадание = Неопределено Тогда + ВызватьИсключение( НСтр("ru = 'Регламентное задание не найдено. + |Возможно, оно удалено другим пользователем.'") ); + КонецЕсли; + + Возврат РегламентноеЗадание; + +КонецФункции + +#КонецОбласти diff --git "a/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.mdo" new file mode 100644 index 0000000..1aad82a --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -0,0 +1,11 @@ + + + РегламентныеЗаданияСервер + + ru + Регламентные задания сервер + + true + true + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" new file mode 100644 index 0000000..143ce50 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/Module.bsl" @@ -0,0 +1,559 @@ +//////////////////////////////////////////////////////////////////////////////// +// Подсистема "Регламентные задания". +// +//////////////////////////////////////////////////////////////////////////////// + +#Область СлужебныйПрограммныйИнтерфейс + +// См. описание этой же процедуры в модуле СтандартныеПодсистемыСервер. +Процедура ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики) Экспорт + + // СЕРВЕРНЫЕ ОБРАБОТЧИКИ. + + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Вызывает исключение, если у пользователя нет права администрирования. +Процедура ВызватьИсключениеЕслиНетПраваАдминистрирования() Экспорт + + Если НЕ ПривилегированныйРежим() Тогда + ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики событий подсистем БСП. + +// Формирует список параметров ИБ. +// +// Параметры: +// ТаблицаПараметров - ТаблицаЗначений - таблица описания параметров. +// Описание состав колонок - см. РаботаВМоделиСервиса.ПолучитьТаблицуПараметровИБ(). +// +Процедура ПриЗаполненииТаблицыПараметровИБ(Знач ТаблицаПараметров) Экспорт + + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Процедуры и функции для работы с регламентными заданиями. + +// Предназначена для "ручного" немедленного выполнения процедуры регламентного задания +// либо в сеансе клиента (в файловой ИБ), либо в фоновом задании на сервере (в серверной ИБ). +// Применяется в любом режиме соединения. +// СРучной" режим запуска не влияет на выполнение регламентного задания по аварийному +// и основному расписаниям, т.к. не указывается ссылка на регламентное задание у фонового задания. +// Тип ФоновоеЗадание не допускает установки такой ссылки, поэтому для файлового режима применяется +// тоже правило. +// +// Параметры: +// Задание - РегламентноеЗадание, Строка - уникального идентификатора РегламентногоЗадания. +// +// Возвращаемое значение: +// Структура - со свойствами +// * МоментЗапуска - Неопределено, Дата - для файловой ИБ устанавливает переданный момент, как момент запуска +// метода регламентного задания. +// Для серверной ИБ - возвращает момент запуска фонового задания по факту. +// * ИдентификаторФоновогоЗадания - Строка - для серверной ИБ возвращает идентификатор запущенного фонового задания. +// +Функция ВыполнитьРегламентноеЗаданиеВручную(Знач Задание) Экспорт + + ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + ПараметрыВыполнения = ПараметрыВыполненияРегламентногоЗадания(); + ПараметрыВыполнения.ПроцедураУжеВыполняется = Ложь; + Задание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Задание); + + ПараметрыВыполнения.ЗапускВыполнен = Ложь; + СвойстваПоследнегоФоновогоЗадания = ПолучитьСвойстваПоследнегоФоновогоЗаданияВыполненияРегламентногоЗадания(Задание); + + Если СвойстваПоследнегоФоновогоЗадания <> Неопределено + И СвойстваПоследнегоФоновогоЗадания.Состояние = СостояниеФоновогоЗадания.Активно Тогда + + ПараметрыВыполнения.МоментЗапуска = СвойстваПоследнегоФоновогоЗадания.Начало; + Если ЗначениеЗаполнено(СвойстваПоследнегоФоновогоЗадания.Наименование) Тогда + ПараметрыВыполнения.ПредставлениеФоновогоЗадания = СвойстваПоследнегоФоновогоЗадания.Наименование; + Иначе + ПараметрыВыполнения.ПредставлениеФоновогоЗадания = ПредставлениеРегламентногоЗадания(Задание); + КонецЕсли; + Иначе + НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Запуск вручную: %1'"), ПредставлениеРегламентногоЗадания(Задание)); + ФоновоеЗадание = ФоновыеЗадания.Выполнить(Задание.Метаданные.ИмяМетода, Задание.Параметры, Строка(Задание.УникальныйИдентификатор), НаименованиеФоновогоЗадания); + ПараметрыВыполнения.ИдентификаторФоновогоЗадания = Строка(ФоновоеЗадание.УникальныйИдентификатор); + ПараметрыВыполнения.МоментЗапуска = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ФоновоеЗадание.УникальныйИдентификатор).Начало; + ПараметрыВыполнения.ЗапускВыполнен = Истина; + КонецЕсли; + + ПараметрыВыполнения.ПроцедураУжеВыполняется = НЕ ПараметрыВыполнения.ЗапускВыполнен; + Возврат ПараметрыВыполнения; + +КонецФункции + +Функция ПараметрыВыполненияРегламентногоЗадания() + + Результат = Новый Структура; + Результат.Вставить("МоментЗапуска"); + Результат.Вставить("ИдентификаторФоновогоЗадания"); + Результат.Вставить("ПредставлениеФоновогоЗадания"); + Результат.Вставить("ПроцедураУжеВыполняется"); + Результат.Вставить("ЗапускВыполнен"); + Возврат Результат; + +КонецФункции + +// Возвращает представление регламентного задания, +// это по порядку исключения незаполненных реквизитов: +// Наименование, Метаданные.Синоним, Метаданные.Имя. +// +// Параметры: +// Задание - РегламентноеЗадание, Строка - если строка, тогда УникальныйИдентификатор строкой. +// +// Возвращаемое значение: +// Строка. +// +Функция ПредставлениеРегламентногоЗадания(Знач Задание) Экспорт + + ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Если ТипЗнч(Задание) = Тип("РегламентноеЗадание") Тогда + РегламентноеЗадание = Задание; + Иначе + РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(Задание)); + КонецЕсли; + + Если РегламентноеЗадание <> Неопределено Тогда + Представление = РегламентноеЗадание.Наименование; + + Если ПустаяСтрока(РегламентноеЗадание.Наименование) Тогда + Представление = РегламентноеЗадание.Метаданные.Синоним; + + Если ПустаяСтрока(Представление) Тогда + Представление = РегламентноеЗадание.Метаданные.Имя; + КонецЕсли + КонецЕсли; + Иначе + Представление = ТекстНеОпределено(); + КонецЕсли; + + Возврат Представление; + +КонецФункции + +// Возвращает текст "<не определено>". +Функция ТекстНеОпределено() Экспорт + + Возврат НСтр("ru = '<не определено>'"); + +КонецФункции + +// Возвращает многострочную Строку содержащую Сообщения и ОписаниеИнформацииОбОшибке, +// последнее фоновое задание найдено по идентификатору регламентного задания +// и сообщения/ошибки есть. +// +// Параметры: +// Задание - РегламентноеЗадание, Строка - УникальныйИдентификатор +// РегламентногоЗадания строкой. +// +// Возвращаемое значение: +// Строка. +// +Функция СообщенияИОписанияОшибокРегламентногоЗадания(Знач Задание) Экспорт + + ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + ИдентификаторРегламентногоЗадания = ?(ТипЗнч(Задание) = Тип("РегламентноеЗадание"), Строка(Задание.УникальныйИдентификатор), Задание); + СвойстваПоследнегоФоновогоЗадания = ПолучитьСвойстваПоследнегоФоновогоЗаданияВыполненияРегламентногоЗадания(ИдентификаторРегламентногоЗадания); + Возврат ?(СвойстваПоследнегоФоновогоЗадания = Неопределено, + "", + СообщенияИОписанияОшибокФоновогоЗадания(СвойстваПоследнегоФоновогоЗадания.Идентификатор) ); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Процедуры и функции для работы с фоновыми заданиями. + +// Отменяет фоновое задание, если это возможно, а именно, если оно выполняется на сервере, и активно. +// +// Параметры: +// Идентификатор - Строка уникального идентификатора ФоновогоЗадания. +// +Процедура ОтменитьФоновоеЗадание(Идентификатор) Экспорт + + ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Отбор = Новый Структура("УникальныйИдентификатор", Новый УникальныйИдентификатор(Идентификатор)); + МассивФоновыхЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор); + Если МассивФоновыхЗаданий.Количество() = 1 Тогда + ФоновоеЗадание = МассивФоновыхЗаданий[0]; + Иначе + ВызватьИсключение НСтр("ru = 'Фоновое задание не найдено на сервере.'"); + КонецЕсли; + + Если ФоновоеЗадание.Состояние <> СостояниеФоновогоЗадания.Активно Тогда + ВызватьИсключение НСтр("ru = 'Задание не выполняется, его нельзя отменить.'"); + КонецЕсли; + + ФоновоеЗадание.Отменить(); + +КонецПроцедуры + +// Возвращает таблицу свойств фоновых заданий. +// Структуру таблицы смотри в функции ПустаяТаблицаСвойствФоновыхЗаданий(). +// +// Параметры: +// Отбор - Структура - допустимые поля: +// Идентификатор, Ключ, Состояние, Начало, Конец, +// Наименование, ИмяМетода, РегламентноеЗадание. +// +// Возвращаемое значение: +// ТаблицаЗначений - возвращается таблица после отбора. +// +Функция ПолучитьТаблицуСвойствФоновыхЗаданий(Отбор = Неопределено) Экспорт + + ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Таблица = ПустаяТаблицаСвойствФоновыхЗаданий(); + + Если ЗначениеЗаполнено(Отбор) И Отбор.Свойство("ПолучитьПоследнееФоновоеЗаданиеРегламентногоЗадания") Тогда + Отбор.Удалить("ПолучитьПоследнееФоновоеЗаданиеРегламентногоЗадания"); + ПолучитьПоследнее = Истина; + Иначе + ПолучитьПоследнее = Ложь; + КонецЕсли; + + РегламентноеЗадание = Неопределено; + + // Добавление истории фоновых заданий, полученных с сервера. + Если ЗначениеЗаполнено(Отбор) И Отбор.Свойство("ИдентификаторРегламентногоЗадания") Тогда + Если Отбор.ИдентификаторРегламентногоЗадания <> "" Тогда + РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору( + Новый УникальныйИдентификатор(Отбор.ИдентификаторРегламентногоЗадания)); + ТекущийОтбор = Новый Структура("Ключ", Отбор.ИдентификаторРегламентногоЗадания); + ФоновыеЗаданияЗапущенныеВручную = ФоновыеЗадания.ПолучитьФоновыеЗадания(ТекущийОтбор); + Если РегламентноеЗадание <> Неопределено Тогда + ПоследнееФоновоеЗадание = РегламентноеЗадание.ПоследнееЗадание; + КонецЕсли; + Если НЕ ПолучитьПоследнее ИЛИ ПоследнееФоновоеЗадание = Неопределено Тогда + ТекущийОтбор = Новый Структура("РегламентноеЗадание", РегламентноеЗадание); + АвтоматическиеФоновыеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(ТекущийОтбор); + КонецЕсли; + Если ПолучитьПоследнее Тогда + Если ПоследнееФоновоеЗадание = Неопределено Тогда + ПоследнееФоновоеЗадание = ПоследнееФоновоеЗаданиеВМассиве(АвтоматическиеФоновыеЗадания); + КонецЕсли; + + ПоследнееФоновоеЗадание = ПоследнееФоновоеЗаданиеВМассиве( + ФоновыеЗаданияЗапущенныеВручную, ПоследнееФоновоеЗадание); + + Если ПоследнееФоновоеЗадание <> Неопределено Тогда + МассивФоновыхЗаданий = Новый Массив; + МассивФоновыхЗаданий.Добавить(ПоследнееФоновоеЗадание); + ДобавитьСвойстваФоновыхЗаданий(МассивФоновыхЗаданий, Таблица); + КонецЕсли; + Возврат Таблица; + КонецЕсли; + ДобавитьСвойстваФоновыхЗаданий(ФоновыеЗаданияЗапущенныеВручную, Таблица); + ДобавитьСвойстваФоновыхЗаданий(АвтоматическиеФоновыеЗадания, Таблица); + Иначе + МассивФоновыхЗаданий = Новый Массив; + ВсеИдентификаторыРегламентныхЗаданий = Новый Соответствие; + Для каждого ТекущееЗадание Из РегламентныеЗадания.ПолучитьРегламентныеЗадания() Цикл + ВсеИдентификаторыРегламентныхЗаданий.Вставить( + Строка(ТекущееЗадание.УникальныйИдентификатор), Истина); + КонецЦикла; + ВсеФоновыеЗадания = ФоновыеЗадания.ПолучитьФоновыеЗадания(); + Для каждого ТекущееЗадание Из ВсеФоновыеЗадания Цикл + Если ТекущееЗадание.РегламентноеЗадание = Неопределено + И ВсеИдентификаторыРегламентныхЗаданий[ТекущееЗадание.Ключ] = Неопределено Тогда + + МассивФоновыхЗаданий.Добавить(ТекущееЗадание); + КонецЕсли; + КонецЦикла; + ДобавитьСвойстваФоновыхЗаданий(МассивФоновыхЗаданий, Таблица); + КонецЕсли; + Иначе + Если НЕ ЗначениеЗаполнено(Отбор) Тогда + МассивФоновыхЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(); + Иначе + Если Отбор.Свойство("Идентификатор") Тогда + Отбор.Вставить("УникальныйИдентификатор", Новый УникальныйИдентификатор(Отбор.Идентификатор)); + Отбор.Удалить("Идентификатор"); + КонецЕсли; + МассивФоновыхЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор); + Если Отбор.Свойство("УникальныйИдентификатор") Тогда + Отбор.Вставить("Идентификатор", Строка(Отбор.УникальныйИдентификатор)); + Отбор.Удалить("УникальныйИдентификатор"); + КонецЕсли; + КонецЕсли; + ДобавитьСвойстваФоновыхЗаданий(МассивФоновыхЗаданий, Таблица); + КонецЕсли; + + Если ЗначениеЗаполнено(Отбор) И Отбор.Свойство("ИдентификаторРегламентногоЗадания") Тогда + РегламентныеЗаданияДляОбработки = Новый Массив; + Если Отбор.ИдентификаторРегламентногоЗадания <> "" Тогда + Если РегламентноеЗадание = Неопределено Тогда + РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору( + Новый УникальныйИдентификатор(Отбор.ИдентификаторРегламентногоЗадания)); + КонецЕсли; + Если РегламентноеЗадание <> Неопределено Тогда + РегламентныеЗаданияДляОбработки.Добавить(РегламентноеЗадание); + КонецЕсли; + КонецЕсли; + Иначе + РегламентныеЗаданияДляОбработки = РегламентныеЗадания.ПолучитьРегламентныеЗадания(); + КонецЕсли; + + Таблица.Сортировать("Начало Убыв, Конец Убыв"); + + // Отбор фоновых заданий. + Если ЗначениеЗаполнено(Отбор) Тогда + Начало = Неопределено; + Конец = Неопределено; + Состояние = Неопределено; + Если Отбор.Свойство("Начало") Тогда + Начало = ?(ЗначениеЗаполнено(Отбор.Начало), Отбор.Начало, Неопределено); + Отбор.Удалить("Начало"); + КонецЕсли; + Если Отбор.Свойство("Конец") Тогда + Конец = ?(ЗначениеЗаполнено(Отбор.Конец), Отбор.Конец, Неопределено); + Отбор.Удалить("Конец"); + КонецЕсли; + Если Отбор.Свойство("Состояние") Тогда + Если ТипЗнч(Отбор.Состояние) = Тип("Массив") Тогда + Состояние = Отбор.Состояние; + Отбор.Удалить("Состояние"); + КонецЕсли; + КонецЕсли; + + Если Отбор.Количество() <> 0 Тогда + Строки = Таблица.НайтиСтроки(Отбор); + Иначе + Строки = Таблица; + КонецЕсли; + // Выполнение дополнительного отбора по периоду и состоянию (если отбор определен). + НомерЭлемента = Строки.Количество() - 1; + Пока НомерЭлемента >= 0 Цикл + Если Начало <> Неопределено И Начало > Строки[НомерЭлемента].Начало ИЛИ + Конец <> Неопределено И Конец < ?(ЗначениеЗаполнено(Строки[НомерЭлемента].Конец), Строки[НомерЭлемента].Конец, ТекущаяДатаСеанса()) ИЛИ + Состояние <> Неопределено И Состояние.Найти(Строки[НомерЭлемента].Состояние) = Неопределено Тогда + Строки.Удалить(НомерЭлемента); + КонецЕсли; + НомерЭлемента = НомерЭлемента - 1; + КонецЦикла; + // Удаление лишних строк из таблицы. + Если ТипЗнч(Строки) = Тип("Массив") Тогда + НомерСтроки = Таблица.Количество() - 1; + Пока НомерСтроки >= 0 Цикл + Если Строки.Найти(Таблица[НомерСтроки]) = Неопределено Тогда + Таблица.Удалить(Таблица[НомерСтроки]); + КонецЕсли; + НомерСтроки = НомерСтроки - 1; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Возврат Таблица; + +КонецФункции + +// Возвращает свойства ФоновогоЗадания по строке уникального идентификатора. +// +// Параметры: +// Идентификатор - Строка - уникального идентификатора ФоновогоЗадания. +// ИменаСвойств - Строка, если заполнено, возвращается структура с указанными свойствами. +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений, Структура - свойства ФоновогоЗадания. +// +Функция ПолучитьСвойстваФоновогоЗадания(Идентификатор, ИменаСвойств = "") Экспорт + + ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Отбор = Новый Структура("Идентификатор", Идентификатор); + ТаблицаСвойствФоновыхЗаданий = ПолучитьТаблицуСвойствФоновыхЗаданий(Отбор); + + Если ТаблицаСвойствФоновыхЗаданий.Количество() > 0 Тогда + Если ЗначениеЗаполнено(ИменаСвойств) Тогда + Результат = Новый Структура(ИменаСвойств); + ЗаполнитьЗначенияСвойств(Результат, ТаблицаСвойствФоновыхЗаданий[0]); + Иначе + Результат = ТаблицаСвойствФоновыхЗаданий[0]; + КонецЕсли; + Иначе + Результат = Неопределено; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +// Возвращает свойства последнего фонового задания выполненного при выполнении регламентного задания, если оно есть. +// Процедура работает, как в файл-серверном, так и в клиент-серверном режимах. +// +// Параметры: +// РегламентноеЗадание - РегламентноеЗадание, Строка - строка уникального идентификатора РегламентногоЗадания. +// +// Возвращаемое значение: +// СтрокаТаблицыЗначений, Неопределено. +// +Функция ПолучитьСвойстваПоследнегоФоновогоЗаданияВыполненияРегламентногоЗадания(РегламентноеЗадание) Экспорт + + ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + ИдентификаторРегламентногоЗадания = ?(ТипЗнч(РегламентноеЗадание) = Тип("РегламентноеЗадание"), Строка(РегламентноеЗадание.УникальныйИдентификатор), РегламентноеЗадание); + Отбор = Новый Структура; + Отбор.Вставить("ИдентификаторРегламентногоЗадания", ИдентификаторРегламентногоЗадания); + Отбор.Вставить("ПолучитьПоследнееФоновоеЗаданиеРегламентногоЗадания"); + ТаблицаСвойствФоновыхЗаданий = ПолучитьТаблицуСвойствФоновыхЗаданий(Отбор); + ТаблицаСвойствФоновыхЗаданий.Сортировать("Конец Возр"); + + Если ТаблицаСвойствФоновыхЗаданий.Количество() = 0 Тогда + СвойстваФоновогоЗадания = Неопределено; + ИначеЕсли НЕ ЗначениеЗаполнено(ТаблицаСвойствФоновыхЗаданий[0].Конец) Тогда + СвойстваФоновогоЗадания = ТаблицаСвойствФоновыхЗаданий[0]; + Иначе + СвойстваФоновогоЗадания = ТаблицаСвойствФоновыхЗаданий[ТаблицаСвойствФоновыхЗаданий.Количество()-1]; + КонецЕсли; + + Возврат СвойстваФоновогоЗадания; + +КонецФункции + +// Возвращает многострочную Строку содержащую Сообщения и ОписаниеИнформацииОбОшибке, +// если фоновое задание найдено по идентификатору и сообщения/ошибки есть. +// +// Параметры: +// Задание - Строка - УникальныйИдентификатор ФоновогоЗадания строкой. +// +// Возвращаемое значение: +// Строка. +// +Функция СообщенияИОписанияОшибокФоновогоЗадания(Идентификатор, СвойстваФоновогоЗадания = Неопределено) Экспорт + + ВызватьИсключениеЕслиНетПраваАдминистрирования(); + УстановитьПривилегированныйРежим(Истина); + + Если СвойстваФоновогоЗадания = Неопределено Тогда + СвойстваФоновогоЗадания = ПолучитьСвойстваФоновогоЗадания(Идентификатор); + КонецЕсли; + + Строка = ""; + Если СвойстваФоновогоЗадания <> Неопределено Тогда + Для каждого Сообщение Из СвойстваФоновогоЗадания.СообщенияПользователю Цикл + Строка = Строка + ?(Строка = "", + "", + " + | + |") + Сообщение.Текст; + КонецЦикла; + Если ЗначениеЗаполнено(СвойстваФоновогоЗадания.ОписаниеИнформацииОбОшибке) Тогда + Строка = Строка + ?(Строка = "", + СвойстваФоновогоЗадания.ОписаниеИнформацииОбОшибке, + " + | + |" + СвойстваФоновогоЗадания.ОписаниеИнформацииОбОшибке); + КонецЕсли; + КонецЕсли; + + Возврат Строка; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Вспомогательные процедуры и функции. + +// Возвращает новую таблицу свойств фоновых заданий. +// +// Возвращаемое значение: +// ТаблицаЗначений. +// +Функция ПустаяТаблицаСвойствФоновыхЗаданий() + + НоваяТаблица = Новый ТаблицаЗначений; + НоваяТаблица.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); + НоваяТаблица.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка")); + НоваяТаблица.Колонки.Добавить("Ключ", Новый ОписаниеТипов("Строка")); + НоваяТаблица.Колонки.Добавить("Начало", Новый ОписаниеТипов("Дата")); + НоваяТаблица.Колонки.Добавить("Конец", Новый ОписаниеТипов("Дата")); + НоваяТаблица.Колонки.Добавить("ИдентификаторРегламентногоЗадания", Новый ОписаниеТипов("Строка")); + НоваяТаблица.Колонки.Добавить("Состояние", Новый ОписаниеТипов("СостояниеФоновогоЗадания")); + НоваяТаблица.Колонки.Добавить("ИмяМетода", Новый ОписаниеТипов("Строка")); + НоваяТаблица.Колонки.Добавить("Расположение", Новый ОписаниеТипов("Строка")); + НоваяТаблица.Колонки.Добавить("ОписаниеИнформацииОбОшибке", Новый ОписаниеТипов("Строка")); + НоваяТаблица.Колонки.Добавить("ПопыткаЗапуска", Новый ОписаниеТипов("Число")); + НоваяТаблица.Колонки.Добавить("СообщенияПользователю", Новый ОписаниеТипов("Массив")); + НоваяТаблица.Колонки.Добавить("НомерСеанса", Новый ОписаниеТипов("Число")); + НоваяТаблица.Колонки.Добавить("НачалоСеанса", Новый ОписаниеТипов("Дата")); + НоваяТаблица.Индексы.Добавить("Идентификатор, Начало"); + + Возврат НоваяТаблица; + +КонецФункции + +Процедура ДобавитьСвойстваФоновыхЗаданий(Знач МассивФоновыхЗаданий, Знач ТаблицаСвойствФоновыхЗаданий) + + Индекс = МассивФоновыхЗаданий.Количество() - 1; + Пока Индекс >= 0 Цикл + ФоновоеЗадание = МассивФоновыхЗаданий[Индекс]; + Строка = ТаблицаСвойствФоновыхЗаданий.Добавить(); + ЗаполнитьЗначенияСвойств(Строка, ФоновоеЗадание); + Строка.Идентификатор = ФоновоеЗадание.УникальныйИдентификатор; + РегламентноеЗадание = ФоновоеЗадание.РегламентноеЗадание; + + Если РегламентноеЗадание = Неопределено + И СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(ФоновоеЗадание.Ключ) Тогда + + РегламентноеЗадание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(ФоновоеЗадание.Ключ)); + КонецЕсли; + Строка.ИдентификаторРегламентногоЗадания = ?( + РегламентноеЗадание = Неопределено, + "", + РегламентноеЗадание.УникальныйИдентификатор); + + Строка.ОписаниеИнформацииОбОшибке = ?( + ФоновоеЗадание.ИнформацияОбОшибке = Неопределено, + "", + ПодробноеПредставлениеОшибки(ФоновоеЗадание.ИнформацияОбОшибке)); + + Индекс = Индекс - 1; + КонецЦикла; + +КонецПроцедуры + +Функция ПоследнееФоновоеЗаданиеВМассиве(МассивФоновыхЗаданий, ПоследнееФоновоеЗадание = Неопределено) + + Для каждого ТекущееФоновоеЗадание Из МассивФоновыхЗаданий Цикл + Если ПоследнееФоновоеЗадание = Неопределено Тогда + ПоследнееФоновоеЗадание = ТекущееФоновоеЗадание; + Продолжить; + КонецЕсли; + Если ЗначениеЗаполнено(ПоследнееФоновоеЗадание.Конец) Тогда + Если НЕ ЗначениеЗаполнено(ТекущееФоновоеЗадание.Конец) + ИЛИ ПоследнееФоновоеЗадание.Конец < ТекущееФоновоеЗадание.Конец Тогда + ПоследнееФоновоеЗадание = ТекущееФоновоеЗадание; + КонецЕсли; + Иначе + Если НЕ ЗначениеЗаполнено(ТекущееФоновоеЗадание.Конец) + И ПоследнееФоновоеЗадание.Начало < ТекущееФоновоеЗадание.Начало Тогда + ПоследнееФоновоеЗадание = ТекущееФоновоеЗадание; + КонецЕсли; + КонецЕсли; + КонецЦикла; + + Возврат ПоследнееФоновоеЗадание; + +КонецФункции + +#КонецОбласти diff --git "a/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" "b/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" new file mode 100644 index 0000000..1c2c580 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217\320\241\320\273\321\203\320\266\320\265\320\261\320\275\321\213\320\271.mdo" @@ -0,0 +1,11 @@ + + + РегламентныеЗаданияСлужебный + + ru + Регламентные задания служебный + + true + true + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" new file mode 100644 index 0000000..ba62e59 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -0,0 +1,32 @@ +// Устанавливает размер шрифта заголовков групп формы для их корректного отображения в интерфейсе 8.2. +// +// Параметры: +// Форма - УправляемаяФорма - Форма для изменения шрифта заголовков групп; +// ИменаГрупп - Строка - Список имен групп формы, разделенных запятыми. +// +Процедура УстановитьОтображениеЗаголовковГрупп(Форма, ИменаГрупп = "") Экспорт + + Если ВариантИнтерфейсаКлиентскогоПриложения= ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда + ЖирныйШрифт = Новый Шрифт(,, Истина); + Если НЕ ЗначениеЗаполнено(ИменаГрупп) Тогда + Для Каждого Элемент Из Форма.Элементы Цикл + Если Тип(Элемент) = Тип("ГруппаФормы") + И Элемент.Вид = ВидГруппыФормы.ОбычнаяГруппа + И Элемент.ОтображатьЗаголовок = Истина + И (Элемент.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение + Или Элемент.Отображение = ОтображениеОбычнойГруппы.Нет) Тогда + Элемент.ШрифтЗаголовка = ЖирныйШрифт; + КонецЕсли; + КонецЦикла; + Иначе + МассивЗаголовков = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИменаГрупп,,, Истина); + Для Каждого ИмяЗаголовка Из МассивЗаголовков Цикл + Элемент = Форма.Элементы[ИмяЗаголовка]; + Если Элемент.Отображение = ОтображениеОбычнойГруппы.ОбычноеВыделение ИЛИ Элемент.Отображение = ОтображениеОбычнойГруппы.Нет Тогда + Элемент.ШрифтЗаголовка = ЖирныйШрифт; + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры diff --git "a/TestingTool_3-0/src/CommonModules/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\265\321\200\320\262\320\265\321\200/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\265\321\200\320\262\320\265\321\200.mdo" "b/TestingTool_3-0/src/CommonModules/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\265\321\200\320\262\320\265\321\200/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\265\321\200\320\262\320\265\321\200.mdo" new file mode 100644 index 0000000..dc8cff2 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\265\321\200\320\262\320\265\321\200/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213\320\241\320\265\321\200\320\262\320\265\321\200.mdo" @@ -0,0 +1,11 @@ + + + СтандартныеПодсистемыСервер + + ru + Стандартные подсистемы сервер + + true + true + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" index dacfd9d..985737f 100644 --- "a/TestingTool_3-0/src/CommonModules/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" +++ "b/TestingTool_3-0/src/CommonModules/\320\241\321\202\321\200\320\276\320\272\320\276\320\262\321\213\320\265\320\244\321\203\320\275\320\272\321\206\320\270\320\270\320\232\320\273\320\270\320\265\320\275\321\202\320\241\320\265\321\200\320\262\320\265\321\200/Module.bsl" @@ -228,3 +228,33 @@ Возврат СтроковыеФункции.СравнитьВерсии(СтрокаВерсии1,СтрокаВерсии2); КонецФункции + +// Проверяет, является ли строка уникальным идентификатором. +// В качестве уникального идентификатора предполагается строка вида +// "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", где X = [0..9,a..f]. +// +// Параметры: +// ИдентификаторСтрока - Строка - проверяемая строка. +// +// Возвращаемое значение: +// Булево - Истина, если переданная строка является уникальным идентификатором. +Функция ЭтоУникальныйИдентификатор(Знач Строка) Экспорт + + Шаблон = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; + + Если СтрДлина(Шаблон) <> СтрДлина(Строка) Тогда + Возврат Ложь; + КонецЕсли; + Для Позиция = 1 По СтрДлина(Строка) Цикл + Если КодСимвола(Шаблон, Позиция) = 88 // X + И ((КодСимвола(Строка, Позиция) < 48 Или КодСимвола(Строка, Позиция) > 57) // 0..9 + И (КодСимвола(Строка, Позиция) < 97 Или КодСимвола(Строка, Позиция) > 102) // a..f + И (КодСимвола(Строка, Позиция) < 65 Или КодСимвола(Строка, Позиция) > 70)) // A..F + Или КодСимвола(Шаблон, Позиция) = 45 И КодСимвола(Строка, Позиция) <> 45 Тогда // - + Возврат Ложь; + КонецЕсли; + КонецЦикла; + + Возврат Истина; + +КонецФункции diff --git "a/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" new file mode 100644 index 0000000..40598b9 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/Module.bsl" @@ -0,0 +1,177 @@ +#Область СохранениеЗагрузкаНастроек + +Процедура СохранитьНастройкиПользователя(Знач КлючОбъекта, Знач КлючНастроек,Знач Настройки, Знач Пользователь="") Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Если ТипЗнч(Настройки)=Тип("ХранилищеЗначения") ИЛИ Настройки=Неопределено Тогда + Иначе + Настройки = Новый ХранилищеЗначения(Настройки); + КонецЕсли; + + МенеджерЗаписи = РегистрыСведений.ОбщееХранениеНастроек.СоздатьМенеджерЗаписи(); + + МенеджерЗаписи.КлючНастроек = КлючНастроек; + МенеджерЗаписи.КлючОбъекта = КлючОбъекта; + МенеджерЗаписи.Пользователь = Пользователь; + МенеджерЗаписи.Настройки = Настройки; + МенеджерЗаписи.ДатаАктуальности = ТекущаяДата(); + + МенеджерЗаписи.Записать(); + +КонецПроцедуры + +Функция ЗагрузитьНастройкиПользователя(Знач КлючОбъекта, Знач КлючНастроек, Знач Пользователь="", СрокЖизниКэша = 86400, КэшУстарел=Ложь) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ЗначениеНастройки = Неопределено; + + КлючОбъекта = Строка(КлючОбъекта); + КлючНастроек = Строка(КлючНастроек); + Пользователь = Строка(Пользователь); + + Запрос = новый Запрос; + Запрос.Текст ="ВЫБРАТЬ + | ОбщееХранениеНастроек.КлючОбъекта КАК КлючОбъекта, + | ОбщееХранениеНастроек.КлючНастроек КАК КлючНастроек, + | ОбщееХранениеНастроек.Пользователь КАК Пользователь, + | ОбщееХранениеНастроек.Настройки КАК Настройки, + | ОбщееХранениеНастроек.ДатаАктуальности КАК ДатаАктуальности + |ИЗ + | РегистрСведений.ОбщееХранениеНастроек КАК ОбщееХранениеНастроек + |ГДЕ + | ОбщееХранениеНастроек.КлючОбъекта = &КлючОбъекта + | И ОбщееХранениеНастроек.КлючНастроек = &КлючНастроек + | И ОбщееХранениеНастроек.Пользователь = &Пользователь"; + Запрос.УстановитьПараметр("КлючОбъекта",КлючОбъекта); + Запрос.УстановитьПараметр("КлючНастроек",КлючНастроек); + Запрос.УстановитьПараметр("Пользователь",Пользователь); + + РезультатЗапроса = Запрос.Выполнить(); + + Если НЕ РезультатЗапроса.Пустой() Тогда + Выборка = РезультатЗапроса.Выбрать(); + Если Выборка.Следующий() Тогда + ЗначениеНастройки = Выборка.Настройки; + ДатаАктуальности = Выборка.ДатаАктуальности; + + // пока смотрим сутки + Если ТекущаяДата() > ДатаАктуальности + СрокЖизниКэша Тогда + КэшУстарел = Истина; + КонецЕсли; + + Если ТипЗнч(ЗначениеНастройки)<>Тип("ХранилищеЗначения") ИЛИ ЗначениеНастройки=Неопределено Тогда + Иначе + ЗначениеНастройки = ЗначениеНастройки.Получить(); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Возврат ЗначениеНастройки; +КонецФункции + +Процедура УдалитьНастройкиПользователя(Знач КлючОбъекта, Знач КлючНастроек, Знач Пользователь="") Экспорт + + УстановитьПривилегированныйРежим(Истина); + + МенеджерЗаписи = РегистрыСведений.ОбщееХранениеНастроек.СоздатьМенеджерЗаписи(); + МенеджерЗаписи.КлючОбъекта = КлючОбъекта; + МенеджерЗаписи.КлючНастроек = КлючНастроек; + МенеджерЗаписи.Пользователь = Пользователь; + + МенеджерЗаписи.Удалить(); + +КонецПроцедуры + +#КонецОбласти + +#Область РаботаСБЕзопаснымХранилищем + +// Помещает настройки в безопасное хранилище +Процедура ЗаписатьДанныеВБезопасноеХранилище(Знач Владелец,Знач Данные, Знач Ключ = "") Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Если ТипЗнч(Данные)=Тип("ХранилищеЗначения") ИЛИ Данные=Неопределено Тогда + Иначе + Данные = Новый ХранилищеЗначения(Данные); + КонецЕсли; + + МенеджерЗаписи = РегистрыСведений.БезопасноеХранилищеДанных.СоздатьМенеджерЗаписи(); + + МенеджерЗаписи.Владелец = Владелец; + МенеджерЗаписи.Ключ = Ключ; + МенеджерЗаписи.Данные = Данные; + + МенеджерЗаписи.Записать(); + +КонецПроцедуры + +// Помещает настройки в безопасное хранилище +Процедура ЗаписатьДанныеВБезопасноеХранилищеРасширенный(Знач Владелец, Знач Данные, Знач Комментарий="", Знач Ключ = "") Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Если ТипЗнч(Данные)=Тип("ХранилищеЗначения") ИЛИ Данные=Неопределено Тогда + Иначе + Данные = Новый ХранилищеЗначения(Данные); + КонецЕсли; + + МенеджерЗаписи = РегистрыСведений.БезопасноеХранилищеДанных.СоздатьМенеджерЗаписи(); + + МенеджерЗаписи.Владелец = Владелец; + МенеджерЗаписи.Ключ = Ключ; + МенеджерЗаписи.Данные = Данные; + МенеджерЗаписи.Комментарий = Комментарий; + + МенеджерЗаписи.Записать(); + +КонецПроцедуры + +// Получает данные из безопасного хранилища +Функция ДанныеИзБезопасногоХранилища(Знач Владелец,Знач Ключ = "") Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Результат = Неопределено; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | БезопасноеХранилищеДанных.Данные КАК Данные + |ИЗ + | РегистрСведений.БезопасноеХранилищеДанных КАК БезопасноеХранилищеДанных + |ГДЕ + | БезопасноеХранилищеДанных.Владелец = &Владелец + | И БезопасноеХранилищеДанных.Ключ = &Ключ"; + + Запрос.УстановитьПараметр("Владелец", Владелец); + Запрос.УстановитьПараметр("Ключ", Ключ); + РезультатЗапроса = Запрос.Выполнить().Выбрать(); + + Если РезультатЗапроса.Следующий() Тогда + Если ЗначениеЗаполнено(РезультатЗапроса.Данные) Тогда + Результат = РезультатЗапроса.Данные.Получить(); + КонецЕсли; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Удаляет конфиденциальные данные в безопасное хранилище. +Процедура УдалитьДанныеИзБезопасногоХранилища(Знач Владелец,Знач Ключ = "") Экспорт + + УстановитьПривилегированныйРежим(Истина); + + БезопасноеХранилищеДанных = РегистрыСведений.БезопасноеХранилищеДанных.СоздатьМенеджерЗаписи(); + + БезопасноеХранилищеДанных.Владелец = Владелец; + БезопасноеХранилищеДанных.Ключ = Ключ; + + БезопасноеХранилищеДанных.Удалить(); + +КонецПроцедуры + + +#КонецОбласти \ No newline at end of file diff --git "a/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" "b/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" new file mode 100644 index 0000000..99fc869 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260.mdo" @@ -0,0 +1,10 @@ + + + УправлениеХранилищемНастроекВызовСервера + + ru + Управление хранилищем настроек вызов сервера + + true + true + diff --git "a/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" "b/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" new file mode 100644 index 0000000..3093f21 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260\320\237\320\276\320\262\321\202\320\230\321\201\320\277/Module.bsl" @@ -0,0 +1,8 @@ + +#Область ЗагрузкаНастроек + +Функция ЗагрузитьНастройкиПользователя(Знач КлючОбъекта, Знач КлючНастроек, Знач Пользователь="") Экспорт + Возврат УправлениеХранилищемНастроекВызовСервера.ЗагрузитьНастройкиПользователя(КлючОбъекта, КлючНастроек, Пользователь); +КонецФункции + +#КонецОбласти diff --git "a/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" "b/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" new file mode 100644 index 0000000..1766ca2 --- /dev/null +++ "b/TestingTool_3-0/src/CommonModules/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260\320\237\320\276\320\262\321\202\320\230\321\201\320\277/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\245\321\200\320\260\320\275\320\270\320\273\320\270\321\211\320\265\320\274\320\235\320\260\321\201\321\202\321\200\320\276\320\265\320\272\320\222\321\213\320\267\320\276\320\262\320\241\320\265\321\200\320\262\320\265\321\200\320\260\320\237\320\276\320\262\321\202\320\230\321\201\320\277.mdo" @@ -0,0 +1,11 @@ + + + УправлениеХранилищемНастроекВызовСервераПовтИсп + + ru + Управление хранилищем настроек вызов сервера повт исп + + true + true + DuringSession + diff --git a/TestingTool_3-0/src/Configuration/Configuration.mdo b/TestingTool_3-0/src/Configuration/Configuration.mdo index c18dd03..ebad1d9 100644 --- a/TestingTool_3-0/src/Configuration/Configuration.mdo +++ b/TestingTool_3-0/src/Configuration/Configuration.mdo @@ -18,8 +18,9 @@ PersonalComputer Russian ivanov660 - 3.20.03.11 + 3.20.06.27 https://github.com/ivanov660/TestingTool-3 + CommonForm.ФормаПоиска Language.Русский @@ -51,6 +52,7 @@ ru + Subsystem.СтандартныеПодсистемы Subsystem.Администрирование Subsystem.ИгровоеМоделирование Subsystem.Информация @@ -61,6 +63,9 @@ Subsystem.НагрузочноеТестирование Subsystem.УправлениеРелизами Subsystem.ОценкаЭффективности + StyleItem.НедоступныеДанныеЦвет + StyleItem.ПоясняющийТекст + StyleItem.ЦветФонаПредупреждения CommonPicture.BrokenQuad_32x32 CommonPicture.clock CommonPicture.FailedQuad_32x33 @@ -149,7 +154,9 @@ CommonModule.ОбновлениеИнформационнойБазыКлиентПереопределяемый CommonModule.ОбновлениеИнформационнойБазыПереопределяемый CommonModule.ОбщегоНазначения + CommonModule.ОбщегоНазначенияВызовСервера CommonModule.ОбщегоНазначенияКлиент + CommonModule.ОбщегоНазначенияКлиентПовтИсп CommonModule.ОбщегоНазначенияКлиентСервер CommonModule.ОбщегоНазначенияСервер CommonModule.ОсновноеРабочееМестоВызовСервера @@ -158,28 +165,41 @@ CommonModule.ПланировщикЗаданийВызовСервера CommonModule.ПланировщикЗаданийКлиентСервер CommonModule.ПланировщикЗаданийСервер + CommonModule.ОбщегоНазначенияСлужебныйКлиент + CommonModule.ПолнотекстовыйПоискКлиент + CommonModule.ПолнотекстовыйПоискСервер + CommonModule.ПолнотекстовыйПоискСерверПереопределяемый CommonModule.Пользователи CommonModule.ПользователиВызовСервера CommonModule.ПользователиКлиентСервер CommonModule.ПользователиСервер CommonModule.РабочееМестоСервер + CommonModule.РегламентныеЗаданияСервер + CommonModule.РегламентныеЗаданияСлужебный CommonModule.СлужебныйВызовСервереПовтИсп CommonModule.СлужебныйКлиент CommonModule.СлужебныйСервер CommonModule.СлужебныйСерверВызовСервера CommonModule.СтандартныеПодсистемыКлиент CommonModule.СтандартныеПодсистемыПовтИсп + CommonModule.СтандартныеПодсистемыСервер CommonModule.СтроковыеФункции CommonModule.СтроковыеФункцииКлиентСервер CommonModule.СценарноеТестированиеВызовСервера CommonModule.СценарноеТестированиеКлиентСервер CommonModule.СценарноеТестированиеСервер + CommonModule.УправлениеХранилищемНастроекВызовСервера + CommonModule.УправлениеХранилищемНастроекВызовСервераПовтИсп + CommonModule.ПрограммноеИзменениеФормСервер WebService.RemoteControl HTTPService.RemoteControl HTTPService.Reports + ScheduledJob.ОбновлениеИндексаППД + ScheduledJob.СлияниеИндексаППД ScheduledJob.ОбработкаЗаданий ScheduledJob.ОбработкаДействийЗаданий ScheduledJob.УдалениеУстаревшихСобытий + FunctionalOption.ИспользоватьПолнотекстовыйПоиск FunctionalOption.ИспользоватьИгровоеМоделирование FunctionalOption.ИспользоватьНагрузочноеТестирование FunctionalOption.ИспользоватьОценкуЭффективности @@ -203,6 +223,7 @@ CommonCommand.ПросмотрРезультатовВыполненияПроверок CommonCommand.ПросмотрУправлениеЗаданиями CommonCommand.УправлениеОбновлениемПлагинов + Constant.ИспользоватьПолнотекстовыйПоиск Constant.ЗаголовокСистемы Constant.ИспользоватьИгровоеМоделирование Constant.ИспользоватьНагрузочноеТестирование @@ -215,6 +236,7 @@ CommonForm.ДополнительныеОтчетыИОбработки CommonForm.ОбщиеНастройиСистемы CommonForm.ОписаниеИзмененийСистемы + CommonForm.ФормаПоиска Catalog.АгентыТестирования Catalog.Алгоритмы Catalog.Базы1С @@ -278,6 +300,8 @@ Report.ВыполнениеТестовПоПроверкам Report.НакопительныйГрафикВыполненияТестовПоПроверкам Report.ОтчетПоИерархииРезультатовТестированияПоПроверкам + DataProcessor.ПолнотекстовыйПоискВДанных + DataProcessor.РегламентныеИФоновыеЗадания DataProcessor.КонсольЗаданий DataProcessor.ОсновноеРабочееМестоПользователя DataProcessor.УправлениеСпискомПроцессовОСWindows diff --git a/TestingTool_3-0/src/Configuration/MainSectionCommandInterface.cmi b/TestingTool_3-0/src/Configuration/MainSectionCommandInterface.cmi index e375026..7259526 100644 --- a/TestingTool_3-0/src/Configuration/MainSectionCommandInterface.cmi +++ b/TestingTool_3-0/src/Configuration/MainSectionCommandInterface.cmi @@ -1,23 +1,29 @@ - - - - - DataProcessor.ОсновноеРабочееМестоПользователя.Command.ОсновноеРабочееМесто - - true - - - - - - NavigationPanelImportant - DataProcessor.ОсновноеРабочееМестоПользователя.Command.ОсновноеРабочееМесто - - - - - NavigationPanelImportant - DataProcessor.ОсновноеРабочееМестоПользователя.Command.ОсновноеРабочееМесто - - - + + + + + DataProcessor.ОсновноеРабочееМестоПользователя.Command.ОсновноеРабочееМесто + + true + + + + + + NavigationPanelImportant + DataProcessor.ОсновноеРабочееМестоПользователя.Command.ОсновноеРабочееМесто + CommonCommand.ПросмотрУправлениеЗаданиями + CommonCommand.ПросмотрРезультатовВыполненияПроверок + CommonCommand.МенеджерВыполненияЧекЛистТестов + + + + + NavigationPanelImportant + DataProcessor.ОсновноеРабочееМестоПользователя.Command.ОсновноеРабочееМесто + CommonCommand.ПросмотрУправлениеЗаданиями + CommonCommand.ПросмотрРезультатовВыполненияПроверок + CommonCommand.МенеджерВыполненияЧекЛистТестов + + + diff --git "a/TestingTool_3-0/src/Constants/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/ValueManagerModule.bsl" "b/TestingTool_3-0/src/Constants/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/ValueManagerModule.bsl" new file mode 100644 index 0000000..e69de29 diff --git "a/TestingTool_3-0/src/Constants/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272.mdo" "b/TestingTool_3-0/src/Constants/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272.mdo" new file mode 100644 index 0000000..a744520 --- /dev/null +++ "b/TestingTool_3-0/src/Constants/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272.mdo" @@ -0,0 +1,19 @@ + + + + + + + + ИспользоватьПолнотекстовыйПоиск + + ru + Использовать полнотекстовый поиск + + + Boolean + + + + Managed + diff --git "a/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Commands/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/CommandModule.bsl" "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Commands/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/CommandModule.bsl" new file mode 100644 index 0000000..64a2523 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Commands/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/CommandModule.bsl" @@ -0,0 +1,12 @@ + +#Область ОбработчикиСобытий + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ОткрытьФорму("ОбщаяФорма.ФормаПоиска",, + ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); + +КонецПроцедуры + +#КонецОбласти diff --git "a/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\274\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\230\320\230\320\267\320\262\320\273\320\265\321\207\320\265\320\275\320\270\320\265\320\274\320\242\320\265\320\272\321\201\321\202\320\276\320\262/Form.form" "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\274\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\230\320\230\320\267\320\262\320\273\320\265\321\207\320\265\320\275\320\270\320\265\320\274\320\242\320\265\320\272\321\201\321\202\320\276\320\262/Form.form" new file mode 100644 index 0000000..c127774 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\274\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\230\320\230\320\267\320\262\320\273\320\265\321\207\320\265\320\275\320\270\320\265\320\274\320\242\320\265\320\272\321\201\321\202\320\276\320\262/Form.form" @@ -0,0 +1,1542 @@ + + + + ГруппаЗаголовок + 134 + + ОписаниеРаздела + 136 + + <key>ru</key> + <value>Обновление, очистка и проверка индекса полнотекстового поиска, а также настройка извлечения текстов из файлов для использования при поиске.</value> + + true + true + + true + + + ОписаниеРазделаРасширеннаяПодсказка + 138 + true + true + + true + + Label + true + true + + Left + + + + ОписаниеРазделаКонтекстноеМеню + 137 + true + true + + true + + true + + Label + true + + Left + + + + ГруппаСправка + 142 + + Справка + 144 + true + true + + true + + + СправкаExtendedTooltip + 145 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + + true + true + + true + + + <key>ru</key> + <value>Справка</value> + + + ГруппаСправкаExtendedTooltip + 143 + true + true + + true + + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Заголовок</value> + + + ГруппаЗаголовокExtendedTooltip + 135 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + DontUse + + + + Группа1 + 151 + + ГруппаИспользоватьПолнотекстовыйПоиск + 101 + + ОбработкаАктивныеПользователи + 102 + true + + true + + + ОбработкаАктивныеПользователиExtendedTooltip + 116 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + 0 + Auto + true + true + UserCmds + + true + true + + true + + + <key>ru</key> + <value>Использовать полнотекстовый поиск</value> + + + ГруппаИспользоватьПолнотекстовыйПоискРасширеннаяПодсказка + 114 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + DontUse + + + + ГруппаУправлениеПолнотекстовымПоиском + 30 + + ДатаАктуальностиИндекса + 5 + true + true + + true + + + + ДатаАктуальностиИндекса + + + true + + ДатаАктуальностиИндексаExtendedTooltip + 118 + true + true + + true + + Label + true + true + + Left + + + + ДатаАктуальностиИндексаКонтекстноеМеню + 6 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + СтатусИндекса + 3 + true + true + + true + + + + СтатусИндекса + + + true + + СтатусИндексаExtendedTooltip + 119 + true + true + + true + + Label + true + true + + Left + + + + СтатусИндексаКонтекстноеМеню + 4 + true + true + + true + + true + + LabelField + Enter + true + Left + true + + true + true + + + + ГруппаКнопки1 + 93 + + ОбновитьИндекс + 11 + true + true + + true + + + ОбновитьИндексExtendedTooltip + 121 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОбновитьИндекс + Auto + true + true + UserCmds + + + ОчиститьИндекс + 12 + true + true + + true + + + ОчиститьИндексExtendedTooltip + 122 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ОчиститьИндекс + Auto + true + true + UserCmds + + + ПроверитьИндекс + 155 + true + true + + true + + + ПроверитьИндексРасширеннаяПодсказка + 156 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ПроверитьИндекс + Auto + true + true + UserCmds + + true + true + + true + + + <key>ru</key> + <value>Кнопки 1</value> + + + ГруппаКнопки1ExtendedTooltip + 120 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + DontUse + + + true + true + + true + + + <key>ru</key> + <value>Полнотекстовый поиск</value> + + + System.DefaultGUIFont + true + false + false + false + + + ru + Группа управление автоматическим извлечением текстов + + + ГруппаУправлениеПолнотекстовымПоискомExtendedTooltip + 117 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + DontUse + + + + ГруппаМаксимальныйРазмерИндексируемыхДанных + 193 + + ГруппаМаксимальныйРазмерИндексируемыхДанныхЗначение + 195 + + ОграничитьМаксимальныйРазмерИндексируемыхДанных + 209 + true + true + + true + + + + ОграничитьМаксимальныйРазмерИндексируемыхДанных + + + None + + OnChange + ОграничитьМаксимальныйРазмерИндексируемыхДанныхПриИзменении + + + ОграничитьМаксимальныйРазмерИндексируемыхДанныхРасширеннаяПодсказка + 211 + true + true + + true + + Label + true + true + + Left + + + + ОграничитьМаксимальныйРазмерИндексируемыхДанныхКонтекстноеМеню + 210 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + МаксимальныйРазмерИндексируемыхДанных + 197 + true + true + + true + + + + МаксимальныйРазмерИндексируемыхДанных + + + + OnChange + МаксимальныйРазмерИндексируемыхДанныхПриИзменении + + + МаксимальныйРазмерИндексируемыхДанныхРасширеннаяПодсказка + 199 + true + true + + true + + Label + true + true + + Left + + + + МаксимальныйРазмерИндексируемыхДанныхКонтекстноеМеню + 198 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДекорацияМб + 200 + + <key>ru</key> + <value>Мб</value> + + true + true + + true + + + ДекорацияМбРасширеннаяПодсказка + 202 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияМбКонтекстноеМеню + 201 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Максимальный размер индексируемых данных значение</value> + + + ГруппаМаксимальныйРазмерИндексируемыхДанныхЗначениеРасширеннаяПодсказка + 196 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + true + Auto + DontUse + + + + МаксимальныйРазмерИндексируемыхДанныхПодсказка + 203 + + <key>ru</key> + <value>Ограничение размера позволяет повысить скорость индексации и полнотекстового поиска.</value> + + true + true + + true + + + МаксимальныйРазмерИндексируемыхДанныхПодсказкаРасширеннаяПодсказка + 205 + true + true + + true + + Label + true + true + + Left + + + + МаксимальныйРазмерИндексируемыхДанныхПодсказкаКонтекстноеМеню + 204 + true + true + + true + + true + + Label + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Максимальный размер индексируемых данных</value> + + + ГруппаМаксимальныйРазмерИндексируемыхДанныхРасширеннаяПодсказка + 194 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + DontUse + + + true + true + + true + + + Группа1РасширеннаяПодсказка + 152 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + DontUse + + + + ГруппаАвтоматическоеИзвлечениеТекстов + 56 + + ПояснениеИзвлекатьТекстыФайловНаСервере4 + 103 + + <key>ru</key> + <value>Извлечение текстов из файлов необходимо для полнотекстового поиска в программе.</value> + + true + true + + true + + + ПояснениеИзвлекатьТекстыФайловНаСервере4ExtendedTooltip + 124 + true + true + + true + + Label + true + true + + Left + + + + ПояснениеИзвлекатьТекстыФайловНаСервере4КонтекстноеМеню + 104 + true + true + + true + + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + + Группа2 + 189 + + ГруппаКолонки + 157 + + ИзвлекатьТекстыФайловНаСервереWindows + 159 + true + true + + true + + + + ИзвлекатьТекстыФайловНаСервере + + + None + + OnChange + ИзвлекатьТекстыФайловНаСервереПриИзменении + + + ИзвлекатьТекстыФайловНаСервереWindowsРасширеннаяПодсказка + 161 + true + true + + true + + Label + true + true + + Left + + + + ИзвлекатьТекстыФайловНаСервереWindowsКонтекстноеМеню + 160 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 2 + + + ru + В кластере серверов настроено выполнение на сервере под управлением ОС Windows + + + 1 + + + + + + РедактироватьРегламентноеЗадание + 187 + + <key>ru</key> + <value>Настроить расписание</value> + + true + true + + true + + + РедактироватьРегламентноеЗаданиеРасширеннаяПодсказка + 188 + + <key>ru</key> + <value><Настроенное расписание></value> + + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.РедактироватьРегламентноеЗадание + Auto + true + true + true + UserCmds + ShowBottom + + true + true + + true + + + <key>ru</key> + <value>Колонки</value> + + + ГруппаКолонкиРасширеннаяПодсказка + 158 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + DontUse + + + + Группа5 + 171 + + ИзвлекатьТекстыФайловНаСервереLinux + 175 + true + true + + true + + + + ИзвлекатьТекстыФайловНаСервере + + + None + + OnChange + ИзвлекатьТекстыФайловНаСервереПриИзменении + + + ИзвлекатьТекстыФайловНаСервереLinuxРасширеннаяПодсказка + 177 + true + true + + true + + Label + true + true + + Left + + + + ИзвлекатьТекстыФайловНаСервереLinuxКонтекстноеМеню + 176 + true + true + + true + + true + + RadioButtonField + Enter + true + Left + true + + 2 + + + ru + В кластере нет серверов под управлением ОС Windows (все сервера в кластере только под управлением ОС Linux) + + + 0 + + + + + + ЗапуститьИзвлечениеТекстов + 191 + + <key>ru</key> + <value>Запустить извлечение текстов</value> + + true + true + + true + + + ЗапуститьИзвлечениеТекстовРасширеннаяПодсказка + 192 + + <key>ru</key> + <value>Извлечение текстов в тонком клиенте на рабочей станции под управлением ОС Windows.</value> + + true + true + + true + + Label + true + + Left + + + Hyperlink + 0 + Auto + true + true + UserCmds + ShowBottom + + true + true + + true + + + Группа5РасширеннаяПодсказка + 172 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + HorizontalIfPossible + true + Auto + DontUse + + + true + true + + true + + + Группа2РасширеннаяПодсказка + 190 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + Auto + DontUse + + + true + + true + + + <key>ru</key> + <value>Автоматическое извлечение текстов</value> + + false + + ГруппаАвтоматическоеИзвлечениеТекстовExtendedTooltip + 123 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + NormalSeparation + true + true + true + Auto + DontUse + + + Top + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + Abort + Cancel + Ignore + No + OK + RestoreValues + Retry + SaveValues + Write + WriteAndClose + Yes + true + true + Vertical + true + true + true + true + + СтатусИндекса + + <key>ru</key> + <value>Статус индекса</value> + + 3 + + String + + + + true + + + true + + + + ДатаАктуальностиИндекса + + <key>ru</key> + <value>Дата актуальности индекса</value> + + 4 + + Date + + + + true + + + true + + + + ИзвлекатьТекстыФайловНаСервере + + <key>ru</key> + <value>Извлекать тексты файлов</value> + + 9 + + Number + + 1 + + + + true + + + true + + + + НаборКонстант + + <key>ru</key> + <value>Набор констант</value> + + 7 + + ConstantsSet + + + true + + + true + + + НаборКонстант.ИспользоватьПолнотекстовыйПоиск + +
    true
    +
    + + ИндексАктуален + + <key>ru</key> + <value>Индекс актуален</value> + + 1 + + Boolean + + + true + + + true + + + + ИспользоватьПолнотекстовыйПоиск + + <key>ru</key> + <value>Использовать полнотекстовый поиск</value> + + 5 + + Number + + 1 + + + + true + + + true + + + + СведенияОРегламентныхЗаданиях + + <key>ru</key> + <value>Сведения о регламентных заданиях</value> + + 11 + + + true + + + true + + + + Задания + + <key>ru</key> + <value>Задания</value> + + 6 + + ValueTable + + + true + + + true + + + ИмяПредопределенного + + <key>ru</key> + <value>Имя предопределенного</value> + + 1 + + String + + + + true + + + true + + + + Идентификатор + + <key>ru</key> + <value>Идентификатор</value> + + 2 + + UUID + + + true + + + true + + + + Расписание + + <key>ru</key> + <value>Расписание</value> + + 3 + + String + + + + true + + + true + + + + + ИндексСодержитКорректныеДанные + + <key>ru</key> + <value>Индекс содержит корректные данные</value> + + 12 + + Boolean + + + true + + + true + + + + МаксимальныйРазмерИндексируемыхДанных + + <key>ru</key> + <value>Ограничить максимальный размер индексируемых данных</value> + + 13 + + Number + + 6 + true + + + + true + + + true + + + + ОграничитьМаксимальныйРазмерИндексируемыхДанных + + <key>ru</key> + <value>Ограничить максимальный размер индексируемых данных</value> + + 14 + + Boolean + + + true + + + true + + + + ОбновитьИндекс + + <key>ru</key> + <value>Обновить индекс</value> + + 1 + + ru + Обновить индекс + + + true + + + + ОбновитьИндекс + + + DontUse + + + ОчиститьИндекс + + <key>ru</key> + <value>Очистить индекс</value> + + 2 + + ru + Очистить индекс + + + true + + + + ОчиститьИндекс + + + DontUse + + + РедактироватьРегламентноеЗадание + + <key>ru</key> + <value>Расписание</value> + + 4 + + ru + Расписание и другие параметры регламентного задания по извлечению текстов из файлов. + + + true + + + + РедактироватьРегламентноеЗадание + + + DontUse + + + ПроверитьИндекс + + <key>ru</key> + <value>Проверить индекс</value> + + 5 + + ru + Проверить индекс + + + true + + + + ПроверитьИндекс + + + DontUse + + + + + + +
    diff --git "a/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\274\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\230\320\230\320\267\320\262\320\273\320\265\321\207\320\265\320\275\320\270\320\265\320\274\320\242\320\265\320\272\321\201\321\202\320\276\320\262/Help/ru.html" "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\274\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\230\320\230\320\267\320\262\320\273\320\265\321\207\320\265\320\275\320\270\320\265\320\274\320\242\320\265\320\272\321\201\321\202\320\276\320\262/Help/ru.html" new file mode 100644 index 0000000..ae2665c --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\274\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\230\320\230\320\267\320\262\320\273\320\265\321\207\320\265\320\275\320\270\320\265\320\274\320\242\320\265\320\272\321\201\321\202\320\276\320\262/Help/ru.html" @@ -0,0 +1,30 @@ + +

    Предназначена для включения и отключения полнотекстового поиска, обновления индекса полнотекстового поиска, а также настройки извлечения текстов из файлов для использования при поиске.

    +

    Открывается по команде Управление полнотекстовым поиском раздела Администрирование - Общие настройки - Полнотекстовый поиск данных.

    +

    Программа позволяет производить полнотекстовый поиск в любых справочниках, документах и других объектах, отыскивая заданную строку во всех полях объектов. При наличии присоединенных файлов, содержащих текстовую информацию, поиск осуществляется также и по ним. Полнотекстовый поиск используется при поиске данных в программе по содержимому справочников, документов и других объектов программы.

    +

    Также полнотекстовый поиск предоставляет такие возможности как: поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ); поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами); нечеткий поиск (буквы в найденных словах могут отличаться).

    +

    Для начала работы с полнотекстовым поиском необходимо включить флажок Полнотекстовый поиск данных. В этом случае становятся доступными команды, которые позволяют настроить полнотекстовый поиск данных в программе, управлять индексом полнотекстового поиска, обновлять и очищать его.  По умолчанию флажок включен.

    +

    В файловом режиме работы программы доступны только команды управления полнотекстовым индексом, тексты извлекаются автоматически при загрузке файла в программу.

    +

    Обновление индекса полнотекстового поиска

    +
    • Для того чтобы можно было осуществлять поиск по всем введенным в программу данным, необходимо регулярно актуализировать индекс полнотекстового поиска. Для регулярного автоматического обновления индекса предназначены регламентные задания Обновление индекса ППД и Слияние индекса ППД (выполняется раз в сутки). +
    • Если индекс уже был обновлен, то отображается Дата актуальности индекса - дата последнего обновления индекса. +
    • Если в программе есть данные, которые не прошли индексирование, то становится доступна кнопка Обновить индекс и выводится Статус индекса "Требуется обновление".

    Очистка индекса полнотекстового поиска

    +
    • Если работа поиска по каким-то причинам нарушена, то с помощью кнопки Очистить индекс можно удалить все файлы полнотекстового индекса. После удаления индекса необходимо заново его построить, используя кнопку Обновить индекс.

    Проверка индекса полнотекстового поиска

    +
    • +
      В любой момент можно проверить состояние индекса полнотекстового поиска с помощью кнопки Проверить индекс.

    В клиент-серверном режиме доступны команды по настройке автоматического извлечения текстов.

    +

    Автоматическое извлечение текстов

    +

    Извлечение текстов из файлов необходимо для полнотекстового поиска в программе. 

    +

    Для настройки необходимо с помощью переключателя выбрать:

    +
      +
    • В кластере серверов настроено выполнение на сервере под управлением ОС Windows - в этом случае становится доступной команда Настроить расписание, с помощью которой можно  настроить регламентное задание. Укажите расписание и другие параметры регламентного задания по извлечению текстов из файлов.

    • Данный вариант подходит, когда в Администрировании серверов 1С Предприятия задано следующее правило для сервера под управлением ОС Microsoft Windows: +
      • Объект требования: Клиентское соединение с ИБ. +
      • Тип требования: Назначать. +
      • Имя ИБ: не указывается. +
      • Значение дополнительного параметра: BackgroundJob.CommonModule.ПолнотекстовыйПоискСервер.ОбновлениеИндексаППДПоРасписанию.
    • В кластере нет серверов под управлением ОС Windows (все сервера в кластере только под управлением ОС Linux) - в этом случае с помощью команды Запустить извлечение текстов можно начать извлечение текстов в тонком клиенте на рабочей станции под управлением ОС Windows.
      • Если в клиент-серверном варианте один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows, нужно запустить тонкий или толстый клиент, и на нем выполнить команду Извлечение текстов, для того чтобы в автоматическом режиме извлекать текст из файлов. По умолчанию интервал времени выполнения равен 60 секундам.

    См. также:

    +
  • Работа с формами.
  • \ No newline at end of file diff --git "a/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\274\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\230\320\230\320\267\320\262\320\273\320\265\321\207\320\265\320\275\320\270\320\265\320\274\320\242\320\265\320\272\321\201\321\202\320\276\320\262/Module.bsl" "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\274\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\230\320\230\320\267\320\262\320\273\320\265\321\207\320\265\320\275\320\270\320\265\320\274\320\242\320\265\320\272\321\201\321\202\320\276\320\262/Module.bsl" new file mode 100644 index 0000000..43d93c8 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\274\320\237\320\276\320\270\321\201\320\272\320\276\320\274\320\230\320\230\320\267\320\262\320\273\320\265\321\207\320\265\320\275\320\270\320\265\320\274\320\242\320\265\320\272\321\201\321\202\320\276\320\262/Module.bsl" @@ -0,0 +1,395 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем ОбновитьИнтерфейс; + +#КонецОбласти + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + АвтоЗаголовок = Ложь; + Заголовок = НСтр("ru = 'Управление полнотекстовым поиском'"); + Элементы.ОписаниеРаздела.Заголовок = + НСтр("ru = 'Включение и отключение полнотекстового поиска, обновление индекса полнотекстового поиска.'"); + + // Обновление состояния элементов. + УстановитьДоступность(); + + //СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп( + // ЭтотОбъект, "ГруппаАвтоматическоеИзвлечениеТекстов"); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии(ЗавершениеРаботы) + Если ЗавершениеРаботы Тогда + Возврат; + КонецЕсли; + ОбновитьИнтерфейсПрограммы(); +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ИзвлекатьТекстыФайловНаСервереПриИзменении(Элемент) + Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура МаксимальныйРазмерИндексируемыхДанныхПриИзменении(Элемент) + + Подключаемый_ПриИзмененииРеквизита(Элемент); + +КонецПроцедуры + +&НаКлиенте +Процедура ОграничитьМаксимальныйРазмерИндексируемыхДанныхПриИзменении(Элемент) + + Подключаемый_ПриИзмененииРеквизита(Элемент); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОбновитьИндекс(Команда) + ОбновитьИндексСервер(); + ПоказатьОповещениеПользователя(НСтр("ru = 'Полнотекстовый поиск'"),, НСтр("ru = 'Индекс успешно обновлен'")); +КонецПроцедуры + +&НаКлиенте +Процедура ОчиститьИндекс(Команда) + ОчиститьИндексСервер(); + ПоказатьОповещениеПользователя(НСтр("ru = 'Полнотекстовый поиск'"),, НСтр("ru = 'Индекс успешно очищен'")); +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьИндекс(Команда) + Попытка + ПроверитьИндексСервер(); + Исключение + ТекстСообщенияОбОшибке = + НСтр("ru = 'В настоящее время проверка индекса невозможна, так как выполняется его очистка или обновление.'"); + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщенияОбОшибке); + КонецПопытки; + + ПоказатьОповещениеПользователя(НСтр("ru = 'Полнотекстовый поиск'"),, НСтр("ru = 'Индекс содержит корректные данные'")); +КонецПроцедуры + +&НаКлиенте +Процедура РедактироватьРегламентноеЗадание(Команда) + РегламентныеЗаданияГиперссылкаНажатие("ИзвлечениеТекста"); +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +//////////////////////////////////////////////////////////////////////////////// +// Клиент + +&НаКлиенте +Процедура Подключаемый_ПриИзмененииРеквизита(Элемент, ОбновлятьИнтерфейс = Истина) + + Результат = ПриИзмененииРеквизитаСервер(Элемент.Имя); + + ОбновитьПовторноИспользуемыеЗначения(); + + Если Результат.Свойство("НеУдалосьУстановитьРежимПолнотекстовогоПоиска") Тогда + // Выдача предупреждающего сообщения. + ТекстВопроса = НСтр("ru = 'Для изменения режима полнотекстового поиска требуется завершение сеансов всех пользователей, кроме текущего.'"); + + Кнопки = Новый СписокЗначений; + Кнопки.Добавить("АктивныеПользователи", НСтр("ru = 'Активные пользователи'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена); + + Обработчик = Новый ОписаниеОповещения("ПриИзмененииРеквизитаПослеОтветаНаВопрос", ЭтотОбъект); + ПоказатьВопрос(Обработчик, ТекстВопроса, Кнопки, , "АктивныеПользователи"); + Возврат; + КонецЕсли; + + Если ОбновлятьИнтерфейс Тогда + ОбновитьИнтерфейс = Истина; + ПодключитьОбработчикОжидания("ОбновитьИнтерфейсПрограммы", 2, Истина); + КонецЕсли; + + Если Результат.КонстантаИмя <> "" Тогда + Оповестить("Запись_НаборКонстант", Новый Структура, Результат.КонстантаИмя); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РегламентныеЗаданияГиперссылкаНажатие(ИмяПредопределенного) + Сведения = СведенияОРегламентныхЗаданиях[ИмяПредопределенного]; + Если Сведения.Идентификатор = Неопределено Тогда + Возврат; + КонецЕсли; + Контекст = Новый Структура; + Контекст.Вставить("ИмяПредопределенного", ИмяПредопределенного); + Контекст.Вставить("ФлажокИзменен", Ложь); + Обработчик = Новый ОписаниеОповещения("РегламентныеЗаданияПослеИзмененияРасписания", ЭтотОбъект, Контекст); + Диалог = Новый ДиалогРасписанияРегламентногоЗадания(Сведения.Расписание); + Диалог.Показать(Обработчик); +КонецПроцедуры + +&НаКлиенте +Процедура РегламентныеЗаданияПослеИзмененияРасписания(Расписание, Контекст) Экспорт + Если Расписание = Неопределено Тогда + Если Контекст.ФлажокИзменен Тогда + ЭтотОбъект[Контекст.ИмяФлажка] = Ложь; + КонецЕсли; + Возврат; + КонецЕсли; + + Изменения = Новый Структура("Расписание", Расписание); + Если Контекст.ФлажокИзменен Тогда + ЭтотОбъект[Контекст.ИмяФлажка] = Истина; + Изменения.Вставить("Использование", Истина); + КонецЕсли; + РегламентныеЗаданияСохранить(Контекст.ИмяПредопределенного, Изменения, Истина); +КонецПроцедуры + +&НаКлиенте +Процедура ПриИзмененииРеквизитаПослеОтветаНаВопрос(Ответ, ПараметрыВыполнения) Экспорт + Если Ответ = "АктивныеПользователи" Тогда + //СтандартныеПодсистемыКлиент.ОткрытьСписокАктивныхПользователей(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИнтерфейсПрограммы() + + Если ОбновитьИнтерфейс = Истина Тогда + ОбновитьИнтерфейс = Ложь; + ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы(); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Вызов сервера + +&НаСервере +Процедура ОбновитьИндексСервер() + ПолнотекстовыйПоиск.ОбновитьИндекс(Ложь, Ложь); + УстановитьДоступность("Команда.ОбновитьИндекс"); +КонецПроцедуры + +&НаСервере +Процедура ОчиститьИндексСервер() + ПолнотекстовыйПоиск.ОчиститьИндекс(); + УстановитьДоступность("Команда.ОчиститьИндекс"); +КонецПроцедуры + +&НаСервере +Процедура ПроверитьИндексСервер() + ИндексСодержитКорректныеДанные = ПолнотекстовыйПоиск.ПроверитьИндекс(); + УстановитьДоступность("Команда.ПроверитьИндекс", Истина); +КонецПроцедуры + +&НаСервере +Функция ПриИзмененииРеквизитаСервер(ИмяЭлемента) + + РеквизитПутьКДанным = Элементы[ИмяЭлемента].ПутьКДанным; + + Результат = СохранитьЗначениеРеквизита(РеквизитПутьКДанным); + + УстановитьДоступность(РеквизитПутьКДанным); + + Если Результат.Свойство("НеУдалосьУстановитьРежимПолнотекстовогоПоиска") Тогда + Возврат Результат; + КонецЕсли; + + ОбновитьПовторноИспользуемыеЗначения(); + + Возврат Результат; + +КонецФункции + +&НаСервере +Процедура РегламентныеЗаданияСохранить(ИмяПредопределенного, Изменения, УстановитьВидимостьДоступность) + Сведения = СведенияОРегламентныхЗаданиях[ИмяПредопределенного]; + Если Сведения.Идентификатор = Неопределено Тогда + Возврат; + КонецЕсли; + РегламентныеЗаданияСервер.ИзменитьЗадание(Сведения.Идентификатор, Изменения); + ЗаполнитьЗначенияСвойств(Сведения, Изменения); + СведенияОРегламентныхЗаданиях.Вставить(ИмяПредопределенного, Сведения); + Если УстановитьВидимостьДоступность Тогда + УстановитьДоступность("РегламентноеЗадание." + ИмяПредопределенного); + КонецЕсли; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Сервер + +&НаСервере +Функция СохранитьЗначениеРеквизита(РеквизитПутьКДанным) + Результат = Новый Структура("КонстантаИмя", ""); + + // Сохранение значений реквизитов, не связанных с константами напрямую (в отношении один-к-одному). + Если РеквизитПутьКДанным = "" Тогда + Возврат Результат; + КонецЕсли; + + // Определение имени константы. + КонстантаИмя = ""; + Если НРег(Лев(РеквизитПутьКДанным, 14)) = НРег("НаборКонстант.") Тогда + // Если путь к данным реквизита указан через "НаборКонстант". + КонстантаИмя = Сред(РеквизитПутьКДанным, 15); + Иначе + // Определение имени и запись значения реквизита в соответствующей константе из "НаборКонстант". + // Используется для тех реквизитов формы, которые связаны с константами напрямую (в отношении один-к-одному). + Если РеквизитПутьКДанным = "ИзвлекатьТекстыФайловНаСервере" Тогда + КонстантаИмя = "ИзвлекатьТекстыФайловНаСервере"; + НаборКонстант.ИзвлекатьТекстыФайловНаСервере = ИзвлекатьТекстыФайловНаСервере; + Изменения = Новый Структура("Использование", НаборКонстант.ИзвлекатьТекстыФайловНаСервере); + РегламентныеЗаданияСохранить("ИзвлечениеТекста", Изменения, Ложь); + ИначеЕсли РеквизитПутьКДанным = "МаксимальныйРазмерИндексируемыхДанных" + Или РеквизитПутьКДанным = "ОграничитьМаксимальныйРазмерИндексируемыхДанных" Тогда + Попытка + Если ОграничитьМаксимальныйРазмерИндексируемыхДанных Тогда + // При первом включении ограничения устанавливается значение по умолчанию платформы - 1 Мб. + Если МаксимальныйРазмерИндексируемыхДанных = 0 Тогда + МаксимальныйРазмерИндексируемыхДанных = 1; + КонецЕсли; + Если ПолнотекстовыйПоиск.ПолучитьМаксимальныйРазмерИндексируемыхДанных() <> МаксимальныйРазмерИндексируемыхДанных * 1048576 Тогда + ПолнотекстовыйПоиск.УстановитьМаксимальныйРазмерИндексируемыхДанных(МаксимальныйРазмерИндексируемыхДанных * 1048576); + КонецЕсли; + Иначе + ПолнотекстовыйПоиск.УстановитьМаксимальныйРазмерИндексируемыхДанных(0); + КонецЕсли; + Исключение + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Полнотекстовый поиск'", ), + УровеньЖурналаРегистрации.Ошибка, + , + , + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Результат.Вставить("НеУдалосьУстановитьРежимПолнотекстовогоПоиска", Истина); + Возврат Результат; + КонецПопытки; + КонецЕсли; + КонецЕсли; + + // Сохранения значения константы. + Если КонстантаИмя <> "" Тогда + КонстантаМенеджер = Константы[КонстантаИмя]; + КонстантаЗначение = НаборКонстант[КонстантаИмя]; + + Если КонстантаМенеджер.Получить() <> КонстантаЗначение Тогда + КонстантаМенеджер.Установить(КонстантаЗначение); + КонецЕсли; + + Результат.КонстантаИмя = КонстантаИмя; + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаСервере +Процедура УстановитьДоступность(РеквизитПутьКДанным = "", ИндексПроверен = Ложь) + + Если РеквизитПутьКДанным = "" Или РеквизитПутьКДанным = "ИспользоватьПолнотекстовыйПоиск" Тогда + Если НаборКонстант.ИспользоватьПолнотекстовыйПоиск <> ПолнотекстовыйПоискСервер.ОперацииРазрешены() Тогда + ИспользоватьПолнотекстовыйПоиск = 2; + Иначе + ИспользоватьПолнотекстовыйПоиск = НаборКонстант.ИспользоватьПолнотекстовыйПоиск; + КонецЕсли; + Элементы.ГруппаУправлениеПолнотекстовымПоиском.Доступность = (ИспользоватьПолнотекстовыйПоиск = 1); + Элементы.ГруппаАвтоматическоеИзвлечениеТекстов.Доступность = (ИспользоватьПолнотекстовыйПоиск = 1); + + КонецЕсли; + + Если РеквизитПутьКДанным = "" + Или РеквизитПутьКДанным = "ОграничитьМаксимальныйРазмерИндексируемыхДанных" + Или РеквизитПутьКДанным = "МаксимальныйРазмерИндексируемыхДанных" + Или РеквизитПутьКДанным = "ИспользоватьПолнотекстовыйПоиск" + Или РеквизитПутьКДанным = "Команда.ОбновитьИндекс" + Или РеквизитПутьКДанным = "Команда.ОчиститьИндекс" + Или РеквизитПутьКДанным = "Команда.ПроверитьИндекс" Тогда + + Если ИспользоватьПолнотекстовыйПоиск = 1 Тогда + ДатаАктуальностиИндекса = ПолнотекстовыйПоиск.ДатаАктуальности(); + ИндексАктуален = ПолнотекстовыйПоискСервер.ИндексПоискаАктуален(); + ФлагДоступность = НЕ ИндексАктуален; + Если ИндексПроверен И Не ИндексСодержитКорректныеДанные Тогда + СтатусИндекса = НСтр("ru = 'Требуется очистка и обновление'"); + ИначеЕсли ИндексАктуален Тогда + СтатусИндекса = НСтр("ru = 'Обновление не требуется'"); + Иначе + СтатусИндекса = НСтр("ru = 'Требуется обновление'"); + КонецЕсли; + Иначе + ДатаАктуальностиИндекса = '00010101'; + ИндексАктуален = Ложь; + ФлагДоступность = Ложь; + СтатусИндекса = НСтр("ru = 'Полнотекстовый поиск отключен'"); + КонецЕсли; + МаксимальныйРазмерИндексируемыхДанных = ПолнотекстовыйПоиск.ПолучитьМаксимальныйРазмерИндексируемыхДанных() / 1048576; + ОграничитьМаксимальныйРазмерИндексируемыхДанных = МаксимальныйРазмерИндексируемыхДанных <> 0; + + Элементы.МаксимальныйРазмерИндексируемыхДанных.Доступность = ОграничитьМаксимальныйРазмерИндексируемыхДанных; + Элементы.ДекорацияМб.Доступность = ОграничитьМаксимальныйРазмерИндексируемыхДанных; + + Если (ИндексПроверен И Не ИндексСодержитКорректныеДанные) + Или Не ИндексАктуален Тогда + Элементы.СтатусИндекса.Шрифт = Новый Шрифт(, , Истина); + Иначе + Элементы.СтатусИндекса.Шрифт = Новый Шрифт; + КонецЕсли; + + Элементы.ОбновитьИндекс.Доступность = ФлагДоступность; + + КонецЕсли; + + Если Элементы.ГруппаАвтоматическоеИзвлечениеТекстов.Видимость + И (РеквизитПутьКДанным = "" + Или РеквизитПутьКДанным = "ИзвлекатьТекстыФайловНаСервере" + Или РеквизитПутьКДанным = "РегламентноеЗадание.ИзвлечениеТекста") Тогда + Элементы.РедактироватьРегламентноеЗадание.Доступность = НаборКонстант.ИзвлекатьТекстыФайловНаСервере; + Элементы.ЗапуститьИзвлечениеТекстов.Доступность = Не НаборКонстант.ИзвлекатьТекстыФайловНаСервере; + Если НаборКонстант.ИзвлекатьТекстыФайловНаСервере Тогда + Сведения = СведенияОРегламентныхЗаданиях["ИзвлечениеТекста"]; + РасписаниеПредставление = Строка(Сведения.Расписание); + РасписаниеПредставление = ВРег(Лев(РасписаниеПредставление, 1)) + Сред(РасписаниеПредставление, 2); + Иначе + РасписаниеПредставление = НСтр("ru = 'Автоматическое извлечение текстов не выполняется.'"); + КонецЕсли; + Элементы.РедактироватьРегламентноеЗадание.РасширеннаяПодсказка.Заголовок = РасписаниеПредставление; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСведенияОРегламентномЗадании(ИмяПредопределенного) + Сведения = Новый Структура("Идентификатор, Использование, Расписание"); + СведенияОРегламентныхЗаданиях.Вставить(ИмяПредопределенного, Сведения); + Задание = РегламентныеЗаданияНайтиПредопределенное(ИмяПредопределенного); + Если Задание = Неопределено Тогда + Возврат; + КонецЕсли; + Сведения.Идентификатор = Задание.УникальныйИдентификатор; + Сведения.Использование = Задание.Использование; + Сведения.Расписание = Задание.Расписание; +КонецПроцедуры + +&НаСервере +Функция РегламентныеЗаданияНайтиПредопределенное(ИмяПредопределенного) + Фильтр = Новый Структура("Метаданные", ИмяПредопределенного); + Найденные = РегламентныеЗаданияСервер.НайтиЗадания(Фильтр); + Возврат ?(Найденные.Количество() = 0, Неопределено, Найденные[0]); +КонецФункции + +#КонецОбласти diff --git "a/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\276\321\211\320\265\320\275\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Form.form" "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\276\321\211\320\265\320\275\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Form.form" new file mode 100644 index 0000000..bd022df --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\276\321\211\320\265\320\275\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Form.form" @@ -0,0 +1,199 @@ + + + + СтрокаПоиска + 3 + true + true + + true + + + + СтрокаПоиска + + + None + + СтрокаПоискаExtendedTooltip + 7 + true + true + + true + + Label + true + true + + Left + + + + СтрокаПоискаКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + Left + + 25 + 40 + true + true + true + true + + String + + + + Style.BorderColor + + + ru + Найти документ или файл + + + + + Найти + 4 + true + true + + true + + false + + НайтиExtendedTooltip + 8 + true + true + + true + + Label + true + true + + Left + + + UsualButton + Form.Command.ВыполнитьПоиск + Auto + true + true + 1 + true + UserCmds + + Style.ButtonTextColor + + + Style.ButtonBackColor + + + Style.BorderColor + + + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + true + true + HorizontalIfPossible + true + true + true + true + + Объект + + <key>ru</key> + <value>Объект</value> + + 1 + + DataProcessorObject.ПолнотекстовыйПоискВДанных + + + true + + + true + +
    true
    +
    + + СтрокаПоиска + + <key>ru</key> + <value>Строка поиска</value> + + 2 + + String + + + + true + + + true + + + + ВыполнитьПоиск + + <key>ru</key> + <value>Найти</value> + + 2 + + ru + Найти документ по наименованию или части фразы + + + true + + + StdPicture.Find + + + + ВыполнитьПоиск + + + Picture + DontUse + + + + + + +
    diff --git "a/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\276\321\211\320\265\320\275\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Module.bsl" "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\276\321\211\320\265\320\275\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Module.bsl" new file mode 100644 index 0000000..821441f --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Forms/\320\243\320\277\321\200\320\276\321\211\320\265\320\275\320\275\320\260\321\217\320\244\320\276\321\200\320\274\320\260/Module.bsl" @@ -0,0 +1,57 @@ + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + ОбновитьИсториюПоиска(Элементы.СтрокаПоиска); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ВыполнитьПоиск(Команда) + + Если ПустаяСтрока(СтрокаПоиска) Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Введите, что нужно найти.'")); + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПереданнаяСтрокаПоиска", СтрокаПоиска); + + ОткрытьФорму("ОбщаяФорма.ФормаПоиска", ПараметрыФормы,, Истина); + + ОбновитьИсториюПоиска(Элементы.СтрокаПоиска); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьИсториюПоиска(Элемент) + + ИсторияПоиска = СохраненнаяИсторияПоиска(); + Если ТипЗнч(ИсторияПоиска) = Тип("Массив") Тогда + Элемент.СписокВыбора.ЗагрузитьЗначения(ИсторияПоиска); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция СохраненнаяИсторияПоиска() + + Возврат ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ПолнотекстовыйПоискСтрокиПолнотекстовогоПоиска", ""); + +КонецФункции + +#КонецОбласти diff --git "a/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" new file mode 100644 index 0000000..e48eb59 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/Help/ru.html" @@ -0,0 +1,33 @@ + +

    Полнотекстовый поиск данных позволяет находить любые сведения не только по полям карточек, но и по содержимому присоединенных файлов.

    +

    Полнотекстовый поиск можно выполнять прямо с Начальной страницы программы.

    +

    Полнотекстовый поиск предоставляет такие возможности как:

    +
    • Поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ); +
    • Поддержка замещения (написание русских слов в английской раскладке); +
    • Нечеткий поиск (буквы в найденных словах могут отличаться).

    Для поиска данных в программе наберите слово или его начало. Нажмите Найти. Поиск может осуществляться по одному или нескольким словам. В строке ввода допускается использование поисковых операторов типа И, ИЛИ, НЕ.

    +

    В поле ввода строки поиска можно вставить навигационную ссылку на данные. В этом случае поиск произведен не будет, а будет сразу открыта нужная карточка. Навигационную ссылку на любой объект информационной базы можно получить при помощи команды  в заголовке каждого окна 1С:Предприятия 8.

    +

    Обновление индекса

    +

    В файловом варианте информационной базы индекс полнотекстового поиска не обновляется автоматически и поэтому должен периодически обновляться вручную. Если индекс полнотекстового поиска не актуален (т.е. есть такие данные, которые еще не прошли индексирование), то в файловом варианте информационной базы становится доступна кнопка Обновить индекс.

    +

    Примеры

    +

    + + + + + + + +
    Пример поискаРезультат
    «Реализация 00016422»Найдет документ «реализация товаров и услуг» с номером «00016422»
    «Платежное 120000»Найдет платежные поручения на суммы 120000 и 120000,50
    «Иванов Акация»Найдет все документы, выписанные Ивановым для контрагента ООО «Акация»
    «Реализация Акация»Найдет все документы «реализация товаров и услуг» по контрагенту ООО «Акация»
    «Акация 05.07»Найдет все документы по контрагенту ООО «Акация», оформленные 5-го июля
    «Кроссовки»Найдет все упоминания товаров типа «кроссовки» по порядку:
    • Кроссовки белые (Товар)
    • Кроссовки черные (Товар)
    • Поступление товаров и услуг № 00086822
    • Реализация товаров и услуг № 00016422

     

    +

    Советы

    +
    +
    • Если нашлось много данных, то уточните поисковый запрос, добавив к нему какое-либо уточнение (дату, сумму, название контрагента).  +
    • Если нашлось мало данных, то упростите запрос, исключив из него какое-либо слово. +
    • Для точного поиска используйте:
    +
    • Кавычки - для поиска точной фразы, например: «"мини пылесос"». +
    • ИЛИ - для поиска одного из двух слов, например «Акация ИЛИ Стройпромвсе» - найдет все упоминания контрагентов ООО "Акация" и ЗАО "Стройпромвсе". +
    • Скобки - для группировки выражений, например поиск «Иванов (Акация ИЛИ Стройпромвсе)» найдет все документы, выписанные Ивановым по контрагентам ООО "Акация" и ЗАО "Стройпромвсе".
    +
    • Для поиска с учетом синонимов используйте "!", например, поиск "!номер" найдет все документы в которых встречается слово "номер" или "число". +
    • Для "нечеткого" поиска используйте "#", например поиск "Стройпромвсе#2" найдет все документы, содержащие такие слова, которые отличаются от слова "Стройпромвсе" на одну или две буквы. +
    • Для поиска по началу слова используйте "*", например, поиск "Строй*" найдет все документы, которые содержат слова, начинающиеся на "Строй" - "Стройка", "Стройпромвсе"  и т.д.
    +

    См. также:

    + \ No newline at end of file diff --git "a/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/ManagerModule.bsl" "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/ManagerModule.bsl" new file mode 100644 index 0000000..8b49124 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/ManagerModule.bsl" @@ -0,0 +1,12 @@ +#Область ОбработчикиСобытий + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + + Если ВидФормы = "Форма" Тогда + СтандартнаяОбработка = Ложь; + ВыбраннаяФорма = "ОбщаяФорма.ФормаПоиска"; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205.mdo" "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205.mdo" new file mode 100644 index 0000000..941bd48 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272\320\222\320\224\320\260\320\275\320\275\321\213\321\205.mdo" @@ -0,0 +1,53 @@ + + + + + + + ПолнотекстовыйПоискВДанных + + ru + Полнотекстовый поиск + + DataProcessor.ПолнотекстовыйПоискВДанных.Form.УпрощеннаяФорма + true + + + ru + + + + УпрощеннаяФорма + + ru + Поиск + + PersonalComputer + MobileDevice + + + УправлениеПолнотекстовымПоискомИИзвлечениемТекстов + + ru + Управление полнотекстовым поиском и извлечением текстов + + + + ru + + + PersonalComputer + MobileDevice + + + ПолнотекстовыйПоиск + + ru + Полнотекстовый поиск + + ActionsPanelTools + + Auto + Ctrl+Shift+F + + diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Form.form" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Form.form" new file mode 100644 index 0000000..740607a --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Form.form" @@ -0,0 +1,1491 @@ + + + + <key>ru</key> + <value>Регламентное задание</value> + + + Основное + 30 + + ГруппаВключениеИРасписание + 71 + + Использование + 9 + true + true + + true + + + + Использование + + + Right + + ru + Включено - выполнять задание. + + + ИспользованиеExtendedTooltip + 51 + true + true + + true + + Label + true + true + + Left + + + + ИспользованиеКонтекстноеМеню + 10 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + НастроитьРасписание + 73 + true + true + + true + + + НастроитьРасписаниеРасширеннаяПодсказка + 74 + true + true + + true + + Label + true + true + + Left + + + Hyperlink + Form.Command.НастроитьРасписание + Auto + true + true + UserCmds + + true + true + + true + + + <key>ru</key> + <value>Группа включение и расписание</value> + + + ru + Группа включение и расписание + + + ГруппаВключениеИРасписаниеРасширеннаяПодсказка + 72 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + DontUse + + + + Наименование + 7 + true + true + + true + + + + Наименование + + + + ru + Пользовательское представление регламентного задания + + + OnChange + НаименованиеПриИзменении + + + НаименованиеExtendedTooltip + 52 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>1. Основное</value> + + + ОсновноеExtendedTooltip + 50 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + DontUse + + + + ДействияПриОшибках + 40 + + КоличествоПовторовПриАварийномЗавершении + 13 + true + true + + true + + + + КоличествоПовторовПриАварийномЗавершении + + + + КоличествоПовторовПриАварийномЗавершенииExtendedTooltip + 55 + true + true + + true + + Label + true + true + + Left + + + + КоличествоПовторовПриАварийномЗавершенииКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДекорацияРаз + 43 + + <key>ru</key> + <value>раз</value> + + true + true + + true + + + ДекорацияРазРасширеннаяПодсказка + 56 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияРазКонтекстноеМеню + 44 + true + true + + true + + true + + Label + true + true + + Left + + + + ИнтервалПовтораПриАварийномЗавершении + 11 + + <key>ru</key> + <value>через</value> + + true + true + + true + + + + ИнтервалПовтораПриАварийномЗавершении + + + + ИнтервалПовтораПриАварийномЗавершенииExtendedTooltip + 58 + true + true + + true + + Label + true + true + + Left + + + + ИнтервалПовтораПриАварийномЗавершенииКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДекорацияСекунд + 45 + + <key>ru</key> + <value>секунд</value> + + true + true + + true + + + ДекорацияСекундРасширеннаяПодсказка + 59 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияСекундКонтекстноеМеню + 46 + true + true + + true + + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>2. Действия при ошибках</value> + + + ru + Действия при ошибках + + + ДействияПриОшибкахExtendedTooltip + 53 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + true + Auto + DontUse + + + + Дополнительно + 25 + + Предопределенное + 38 + true + true + + true + + + + Предопределенное + + + true + + ru + Предопределенное задание, +созданное в конфигураторе, +которое нельзя удалить. + + + ПредопределенноеExtendedTooltip + 61 + true + true + + true + + Label + true + true + + Left + + + + ПредопределенноеКонтекстноеМеню + 39 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + + + Идентификатор + 1 + true + true + + true + + + + Идентификатор + + + + ИдентификаторExtendedTooltip + 62 + true + true + + true + + Label + true + true + + Left + + + + ИдентификаторКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + 28 + true + true + false + true + true + true + + + + Ключ + 5 + true + true + + true + + + + Ключ + + + + КлючExtendedTooltip + 63 + true + true + + true + + Label + true + true + + Left + + + + КлючКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ИмяПользователя + 15 + true + true + + true + + + + ИмяПользователя + + + + ru + Имя пользователя информационной базы для выполнения фонового задания (имеет смысл только для серверной информационной базы) + + + ИмяПользователяExtendedTooltip + 64 + true + true + + true + + Label + true + true + + Left + + + + ИмяПользователяКонтекстноеМеню + 16 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 35 + true + true + false + true + true + true + true + + String + + + + + true + true + + true + + + <key>ru</key> + <value>3. Дополнительно</value> + + + ДополнительноExtendedTooltip + 60 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + DontUse + + + + Метаданные + 26 + + ИмяМетаданных + 19 + true + true + + true + + + + ИмяМетаданных + + + + ИмяМетаданныхExtendedTooltip + 66 + true + true + + true + + Label + true + true + + Left + + + + ИмяМетаданныхКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + СинонимМетаданных + 21 + true + true + + true + + + + СинонимМетаданных + + + true + + СинонимМетаданныхExtendedTooltip + 67 + true + true + + true + + Label + true + true + + Left + + + + СинонимМетаданныхКонтекстноеМеню + 22 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + + ИмяМетодаМетаданных + 23 + true + true + + true + + + + ИмяМетодаМетаданных + + + + ИмяМетодаМетаданныхExtendedTooltip + 68 + true + true + + true + + Label + true + true + + Left + + + + ИмяМетодаМетаданныхКонтекстноеМеню + 24 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>4. Метаданные</value> + + + МетаданныеExtendedTooltip + 65 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + DontUse + + + + СообщенияПользователюИОписаниеИнформацииОбОшибке + 33 + + СообщенияИОписаниеИнформацииОбОшибке + 27 + true + true + + true + + + + СообщенияПользователюИОписаниеИнформацииОбОшибке + + + true + None + + СообщенияИОписаниеИнформацииОбОшибкеExtendedTooltip + 70 + true + true + + true + + Label + true + true + + Left + + + + СообщенияИОписаниеИнформацииОбОшибкеКонтекстноеМеню + 28 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>5. Сообщения пользователю и описание информации об ошибке</value> + + + СообщенияПользователюИОписаниеИнформацииОбОшибкеExtendedTooltip + 69 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + DontUse + + + + ФормаКоманднаяПанель + -1 + + ЗаписатьИЗакрыть + 17 + true + true + + true + + false + + ЗаписатьИЗакрытьExtendedTooltip + 47 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + + + Записать + 34 + true + true + + true + + + ЗаписатьExtendedTooltip + 48 + true + true + + true + + Label + true + true + + Left + + + Form.Command.Записать + Auto + true + true + UserCmds + + true + true + + true + + Left + true + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + 65 + LockOwnerWindow + true + Vertical + true + true + true + UseIfNecessary + true + true + + Идентификатор + + <key>ru</key> + <value>Идентификатор</value> + + 2 + + String + + + + true + + + true + + + + Ключ + + <key>ru</key> + <value>Ключ</value> + + 5 + + String + + + + true + + + true + + true + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 6 + + String + + 128 + + + + true + + + true + + true + + + Использование + + <key>ru</key> + <value>Включено</value> + + 7 + + Boolean + + + true + + + true + + true + + + ИнтервалПовтораПриАварийномЗавершении + + <key>ru</key> + <value>Повторять через</value> + + 9 + + Number + + 10 + true + + + + true + + + true + + true + + + КоличествоПовторовПриАварийномЗавершении + + <key>ru</key> + <value>Повторять</value> + + 10 + + Number + + 10 + true + + + + true + + + true + + true + + + ИмяПользователя + + <key>ru</key> + <value>Имя пользователя</value> + + 8 + + String + + + + true + + + true + + true + + + ИмяМетаданных + + <key>ru</key> + <value>Имя</value> + + 3 + + String + + + + true + + + true + + + + СинонимМетаданных + + <key>ru</key> + <value>Синоним</value> + + 4 + + String + + + + true + + + true + + + + ИмяМетодаМетаданных + + <key>ru</key> + <value>Имя метода</value> + + 11 + + String + + + + true + + + true + + + + СообщенияПользователюИОписаниеИнформацииОбОшибке + + <key>ru</key> + <value>Сообщения пользователю и описание информации об ошибке</value> + + 12 + + String + + + + true + + + true + + + + Расписание + + <key>ru</key> + <value>Расписание</value> + + 13 + + + true + + + true + + true + + + ОписанияМетаданныхРегламентныхЗаданий + + <key>ru</key> + <value>Описания метаданных регламентных заданий</value> + + 14 + + ValueList + + + true + + + true + + + + + + + Действие + + <key>ru</key> + <value>Действие</value> + + 15 + + String + + + + true + + + true + + + + Предопределенное + + <key>ru</key> + <value>Предопределенное</value> + + 1 + + Boolean + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 2 + + ru + Записать и закрыть + + + true + + + StdPicture.WriteAndClose + + + + ЗаписатьИЗакрытьВыполнить + + + Text + DontUse + + + НастроитьРасписание + + <key>ru</key> + <value>Расписание</value> + + 1 + + ru + Настроить расписание + + + true + + + StdPicture.SetTime + + + + НастроитьРасписаниеВыполнить + + + TextPicture + DontUse + + + Записать + + <key>ru</key> + <value>Записать</value> + + 3 + + ru + Записать + + + true + + + StdPicture.Write + + + + Записать + + + Text + DontUse + + + Идентификатор + + String + + + true + + + Действие + + String + + 20 + + + + + + + + diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Help/ru.html" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Help/ru.html" new file mode 100644 index 0000000..391debf --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Help/ru.html" @@ -0,0 +1,21 @@ + +

    Описание свойств регламентного задания.

    +

    Как правило, необходимость в изменении свойств регламентных заданий возникает редко. Чаще всего, используется флажок Включено, с помощью которого можно отключить выполнение регламентного задания. 

    +

    В некоторых случаях бывает необходимо задать два разных расписания для одного регламентного задания. Тогда в список можно добавить новое регламентное задание по одному из предопределенных шаблонов, предусмотренных в программе.

    +

    Основное

    +

    Это наиболее нужные свойства при настройке регламентного задания. Но, как и все остальные свойства, они уже установлены в поставке, и необходимость их изменения возникает в исключительных случаях.

    +
    • Наименование - наименование регламентного задания. Обычно пустое, и в качестве него применяется синоним, указанный в шаблоне регламентного задания, заданного в конфигураторе. Если синоним шаблона не задан, используется его имя. +
    • Включено - флажок позволяет включить или отключить выполнение регламентного задания.
      Полезно, когда нужно ненадолго отключить регламентное задание, не меняя расписание. +
    • С помощью ссылки Расписание можно настроить расписание регламентного задания.

    Действия при ошибках

    +
    • Повторять, раз - число попыток выполнения регламентного задания, при возникновении ошибки. +
    • Повторять через, сек - пауза (в секундах) между попытками выполнения регламентного задания, при возникновении ошибки.

    +

    Дополнительно

    +
    • Предопределенное - принимает значения Да и Нет. Непредопределенные (введенные вручную) регламентные задания используются в редких случаях. +
    • Идентификатор - нужен только для продвинутого администратора, знающего встроенный язык. Требуется для исследования нестандартных проблем в работе регламентных заданий, если таковые есть. +
    • Ключ - нужен только для продвинутого администратора. Требуется для тонкой настройки выполнения регламентных заданий и для исследования нестандартных проблем в работе регламентных заданий, если таковые есть. Если ключ указан, то перед запуском фонового задания проверяется, что нет других активных фоновых заданий по тому же шаблону регламентного задания, который применен в экземпляре регламентного задания. +
    • Имя пользователя - имя пользователя информационной базы, который будет использован для выполнения регламентного задания. Выбирается из списка Пользователи.

    Метаданные

    +
    • Имя - имя шаблона регламентного задания, определенного в конфигураторе. +
    • Синоним - синоним шаблона регламентного задания, определенного в конфигураторе. +
    • Имя метода - имя процедуры в конфигурации, которая будет выполняться в фоновом задании, созданным по расписанию регламентного задания.

    Сообщения пользователю и описание информации об ошибке

    +
    • Поле содержит текст сообщений и текст сведений об ошибке, если сообщения и/или ошибки произошли при выполнении последнего фонового задания созданного по этому регламентному заданию. То же содержание доступно, если открыть последнее фоновое задание этого регламентного задания.

    См. также:

    + \ No newline at end of file diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Module.bsl" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Module.bsl" new file mode 100644 index 0000000..0ace770 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Module.bsl" @@ -0,0 +1,256 @@ + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + + Действие = Параметры.Действие; + + Если Найти(", Добавить, Скопировать, Изменить,", ", " + Действие + ",") = 0 Тогда + + ВызватьИсключение НСтр("ru = 'Неверные параметры открытия формы ""Регламентное задание"".'"); + КонецЕсли; + + Если Действие = "Добавить" Тогда + + Расписание = Новый РасписаниеРегламентногоЗадания; + + Для каждого РегламентноеЗаданиеМетаданные Из Метаданные.РегламентныеЗадания Цикл + ОписанияМетаданныхРегламентныхЗаданий.Добавить( + РегламентноеЗаданиеМетаданные.Имя + + Символы.ПС + + РегламентноеЗаданиеМетаданные.Синоним + + Символы.ПС + + РегламентноеЗаданиеМетаданные.ИмяМетода, + ?(ПустаяСтрока(РегламентноеЗаданиеМетаданные.Синоним), + РегламентноеЗаданиеМетаданные.Имя, + РегламентноеЗаданиеМетаданные.Синоним) ); + КонецЦикла; + Иначе + Задание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Параметры.Идентификатор); + ЗаполнитьЗначенияСвойств( + ЭтотОбъект, + Задание, + "Ключ, + |Предопределенное, + |Использование, + |Наименование, + |ИмяПользователя, + |ИнтервалПовтораПриАварийномЗавершении, + |КоличествоПовторовПриАварийномЗавершении"); + + Идентификатор = Строка(Задание.УникальныйИдентификатор); + Если Задание.Метаданные = Неопределено Тогда + ИмяМетаданных = НСтр("ru = '<нет метаданных>'"); + СинонимМетаданных = НСтр("ru = '<нет метаданных>'"); + ИмяМетодаМетаданных = НСтр("ru = '<нет метаданных>'"); + Иначе + ИмяМетаданных = Задание.Метаданные.Имя; + СинонимМетаданных = Задание.Метаданные.Синоним; + ИмяМетодаМетаданных = Задание.Метаданные.ИмяМетода; + КонецЕсли; + Расписание = Задание.Расписание; + + СообщенияПользователюИОписаниеИнформацииОбОшибке = РегламентныеЗаданияСлужебный + .СообщенияИОписанияОшибокРегламентногоЗадания(Задание); + КонецЕсли; + + Если Действие <> "Изменить" Тогда + Идентификатор = НСтр("ru = '<будет создан при записи>'"); + Использование = Ложь; + + Наименование = ?( + Действие = "Добавить", + "", + РегламентныеЗаданияСлужебный.ПредставлениеРегламентногоЗадания(Задание)); + КонецЕсли; + + // Заполнение списка выбора имени пользователя. + МассивПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей(); + + Для каждого Пользователь Из МассивПользователей Цикл + Элементы.ИмяПользователя.СписокВыбора.Добавить(Пользователь.Имя); + КонецЦикла; + + //СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(ЭтотОбъект); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Действие = "Добавить" Тогда + ПодключитьОбработчикОжидания("ВыборШаблонаНовогоРегламентногоЗадания", 0.1, Истина); + Иначе + ОбновитьЗаголовокФормы(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) + + Оповещение = Новый ОписаниеОповещения("ЗаписатьИЗакрытьЗавершение", ЭтотОбъект); + ОбщегоНазначенияКлиент.ПоказатьПодтверждениеЗакрытияФормы(Оповещение, Отказ); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + + ОбновитьЗаголовокФормы(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура Записать(Команда) + + ЗаписатьРегламентноеЗадание(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрытьВыполнить() + + ЗаписатьИЗакрытьЗавершение(); + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьРасписаниеВыполнить() + + Диалог = Новый ДиалогРасписанияРегламентногоЗадания(Расписание); + Диалог.Показать(Новый ОписаниеОповещения("ОткрытьРасписаниеЗавершение", ЭтотОбъект)); + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаКлиенте +Процедура ЗаписатьИЗакрытьЗавершение(Результат = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт + + ЗаписатьРегламентноеЗадание(); + Модифицированность = Ложь; + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыборШаблонаНовогоРегламентногоЗадания() + + // Выбор шаблона регламентного задания (метаданные). + ОписанияМетаданныхРегламентныхЗаданий.ПоказатьВыборЭлемента( + Новый ОписаниеОповещения("ВыборШаблонаНовогоРегламентногоЗаданияЗавершение", ЭтотОбъект), + НСтр("ru = 'Выберите шаблон регламентного задания'")); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыборШаблонаНовогоРегламентногоЗаданияЗавершение(ЭлементСписка, Неопределен) Экспорт + + Если ЭлементСписка = Неопределено Тогда + Закрыть(); + Возврат; + КонецЕсли; + + ИмяМетаданных = СтрПолучитьСтроку(ЭлементСписка.Значение, 1); + СинонимМетаданных = СтрПолучитьСтроку(ЭлементСписка.Значение, 2); + ИмяМетодаМетаданных = СтрПолучитьСтроку(ЭлементСписка.Значение, 3); + Наименование = ЭлементСписка.Представление; + + ОбновитьЗаголовокФормы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьРасписаниеЗавершение(НовоеРасписание, Неопределен) Экспорт + + Если НовоеРасписание <> Неопределено Тогда + Расписание = НовоеРасписание; + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьРегламентноеЗадание() + + Если НЕ ЗначениеЗаполнено(ИмяМетаданных) Тогда + Возврат; + КонецЕсли; + + ТекущийИдентификатор = ?(Действие = "Изменить", Идентификатор, Неопределено); + + ЗаписатьРегламентноеЗаданиеНаСервере(); + ОбновитьЗаголовокФормы(); + + Оповестить("Запись_РегламентныеЗадания", ТекущийИдентификатор); + +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьРегламентноеЗаданиеНаСервере() + + Если Действие = "Изменить" Тогда + Задание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Идентификатор); + Иначе + Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание( + Метаданные.РегламентныеЗадания[ИмяМетаданных]); + + Идентификатор = Строка(Задание.УникальныйИдентификатор); + Действие = "Изменить"; + КонецЕсли; + + ЗаполнитьЗначенияСвойств( + Задание, + ЭтотОбъект, + "Ключ, + |Наименование, + |Использование, + |ИмяПользователя, + |ИнтервалПовтораПриАварийномЗавершении, + |КоличествоПовторовПриАварийномЗавершении"); + + Задание.Расписание = Расписание; + Задание.Записать(); + + Модифицированность = Ложь; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьЗаголовокФормы() + + Если НЕ ПустаяСтрока(Наименование) Тогда + Представление = Наименование; + + ИначеЕсли НЕ ПустаяСтрока(СинонимМетаданных) Тогда + Представление = СинонимМетаданных; + Иначе + Представление = ИмяМетаданных; + КонецЕсли; + + Если Действие = "Изменить" Тогда + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 (Регламентное задание)'"), Представление); + Иначе + Заголовок = НСтр("ru = 'Регламентное задание (создание)'"); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Form.form" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Form.form" new file mode 100644 index 0000000..99d3189 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Form.form" @@ -0,0 +1,3558 @@ + + + + Задания + 10 + + РегламентныеЗадания + 27 + + ТаблицаРегламентныеЗадания + 29 + true + true + + true + + + ТаблицаРегламентныеЗадания + + false + None + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + Использование + 42 + + <key>ru</key> + <value>Вкл.</value> + + true + true + + true + + + + ТаблицаРегламентныеЗадания.Использование + + + None + + ru + Включено - выполнять задание. + + + ИспользованиеExtendedTooltip + 197 + true + true + + true + + Label + true + true + + Left + + + + ИспользованиеКонтекстноеМеню + 43 + true + true + + true + + true + + CheckBoxField + true + Enter + true + + StdPicture.ScheduledJob + + Left + true + + + + Наименование + 40 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + ТаблицаРегламентныеЗадания.Наименование + + + + НаименованиеExtendedTooltip + 198 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 41 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + СостояниеВыполнения + 61 + + <key>ru</key> + <value>Состояние</value> + + true + true + + true + + + + ТаблицаРегламентныеЗадания.СостояниеВыполнения + + + + ru + Состояние фонового задания + + + СостояниеВыполненияExtendedTooltip + 200 + true + true + + true + + Label + true + true + + Left + + + + СостояниеВыполненияКонтекстноеМеню + 62 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + + + + ДатаОкончания + 52 + true + true + + true + + + + ТаблицаРегламентныеЗадания.ДатаОкончания + + + + ru + Дата и время окончания последнего завершенного фонового задания + + + ДатаОкончанияExtendedTooltip + 201 + true + true + + true + + Label + true + true + + Left + + + + ДатаОкончанияКонтекстноеМеню + 53 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ИмяПользователя + 141 + true + true + + + + ТаблицаРегламентныеЗадания.ИмяПользователя + + + + ru + Имя пользователя для запуска фонового задания + + + ИмяПользователяExtendedTooltip + 199 + true + true + + true + + Label + true + true + + Left + + + + ИмяПользователяКонтекстноеМеню + 142 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Предопределенное + 34 + + <key>ru</key> + <value>Предопределенное</value> + + true + true + + + + ТаблицаРегламентныеЗадания.Предопределенное + + + + ru + Предопределенное задание поставляется в составе программы, и его нельзя удалить + + + ПредопределенноеExtendedTooltip + 196 + true + true + + true + + Label + true + true + + Left + + + + ПредопределенноеКонтекстноеМеню + 35 + true + true + + true + + true + + CheckBoxField + true + Enter + true + Left + true + + + + ТаблицаРегламентныеЗаданияКоманднаяПанель + 31 + + ТаблицаРегламентныеЗаданияОбновитьДанные + 146 + true + true + + true + + false + + ТаблицаРегламентныеЗаданияОбновитьДанныеExtendedTooltip + 185 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьРегламентныеЗадания + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияИзменить + 172 + true + true + + true + + + ТаблицаРегламентныеЗаданияИзменитьExtendedTooltip + 187 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.Change + Auto + true + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияСкопировать + 158 + true + true + + true + + + ТаблицаРегламентныеЗаданияСкопироватьExtendedTooltip + 188 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.Copy + Auto + true + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияУдалить + 160 + true + true + + true + + + ТаблицаРегламентныеЗаданияУдалитьExtendedTooltip + 189 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.Delete + Auto + true + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияНастроитьРасписание + 135 + true + true + + true + + false + + ТаблицаРегламентныеЗаданияНастроитьРасписаниеРасширеннаяПодсказка + 190 + true + true + + true + + Label + true + true + + Left + + + Form.Command.НастроитьРасписание + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияВыполнитьСейчас + 152 + true + true + + true + + false + + ТаблицаРегламентныеЗаданияВыполнитьСейчасExtendedTooltip + 191 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыполнитьРегламентноеЗаданиеВручную + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияДобавить + 157 + true + true + + true + + + ТаблицаРегламентныеЗаданияДобавитьExtendedTooltip + 186 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.Add + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияИзменитьФорму + 244 + true + true + + true + + + ТаблицаРегламентныеЗаданияИзменитьФормуРасширеннаяПодсказка + 245 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияСправка + 153 + true + true + + true + + false + + ТаблицаРегламентныеЗаданияСправкаExtendedTooltip + 194 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + + true + true + + true + + Left + true + + + Selection + ТаблицаРегламентныеЗаданияВыбор + + + BeforeAddRow + ТаблицаРегламентныеЗаданияПередНачаломДобавления + + + BeforeDeleteRow + ТаблицаРегламентныеЗаданияПередУдалением + + + BeforeRowChange + ТаблицаРегламентныеЗаданияПередНачаломИзменения + + + true + true + + true + + ТаблицаРегламентныеЗаданияСтрокаПоиска + 246 + + ТаблицаРегламентныеЗаданияСтрокаПоискаРасширеннаяПодсказка + 248 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаРегламентныеЗаданияСтрокаПоискаКонтекстноеМеню + 247 + true + true + + true + + true + + + true + + + + true + true + + true + + ТаблицаРегламентныеЗаданияСостояниеПросмотра + 249 + + ТаблицаРегламентныеЗаданияСостояниеПросмотраРасширеннаяПодсказка + 251 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаРегламентныеЗаданияСостояниеПросмотраКонтекстноеМеню + 250 + true + true + + true + + true + + ViewStatusAddition + + true + Left + + + + true + true + + true + + ТаблицаРегламентныеЗаданияУправлениеПоиском + 252 + + ТаблицаРегламентныеЗаданияУправлениеПоискомРасширеннаяПодсказка + 254 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаРегламентныеЗаданияУправлениеПоискомКонтекстноеМеню + 253 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТаблицаРегламентныеЗаданияExtendedTooltip + 195 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаРегламентныеЗаданияКонтекстноеМеню + 30 + + ТаблицаРегламентныеЗаданияКонтекстноеМенюОбновитьДанные + 165 + true + true + + true + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюОбновитьДанныеExtendedTooltip + 178 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьФоновыеЗадания + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюВключитьРегламентноеЗадание + 234 + true + true + + true + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюВключитьРегламентноеЗаданиеРасширеннаяПодсказка + 235 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВключитьРегламентноеЗадание + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюВыключитьРегламентноеЗадание + 236 + true + true + + true + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюВыключитьРегламентноеЗаданиеРасширеннаяПодсказка + 237 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ВыключитьРегламентноеЗадание + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюВывестиСписок + 170 + true + true + + true + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюВывестиСписокExtendedTooltip + 179 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.OutputList + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюКопироватьВБуферОбмена + 171 + true + true + + true + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюКопироватьВБуферОбменаExtendedTooltip + 180 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.CopyToClipboard + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюДобавить + 166 + true + + true + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюДобавитьExtendedTooltip + 181 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.Add + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюСкопировать + 167 + true + + true + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюСкопироватьExtendedTooltip + 182 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.Copy + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюИзменить + 168 + true + + true + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюИзменитьExtendedTooltip + 183 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.Change + Auto + true + true + UserCmds + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюУдалить + 169 + true + + true + + + ТаблицаРегламентныеЗаданияКонтекстноеМенюУдалитьExtendedTooltip + 184 + true + true + + true + + Label + true + true + + Left + + + Form.Item.ТаблицаРегламентныеЗадания.StandardCommand.Delete + Auto + true + true + UserCmds + + true + true + + true + + true + + true + true + true + true + true + MultiRow +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + None + None + None + +
    + true + true + + true + + + <key>ru</key> + <value>Регламентные задания</value> + + + РегламентныеЗаданияExtendedTooltip + 177 + true + true + + true + + Label + true + true + + Left + + + Page + + + StdPicture.ScheduledJobs + + Vertical + true + +
    + + ФоновыеЗадания + 28 + + ПоСостоянию + 97 + + ДекорацияСостояние + 238 + + <key>ru</key> + <value>Состояние:</value> + + true + true + + true + + + ДекорацияСостояниеРасширеннаяПодсказка + 240 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияСостояниеКонтекстноеМеню + 239 + true + true + + true + + true + + Label + true + true + + Left + + + + ОтборПоСостояниюЗавершено + 100 + true + true + + true + + + + ОтборПоСостояниюЗавершено + + + Right + + ru + Показывать выполненные фоновые задания + + + ОтборПоСостояниюЗавершеноExtendedTooltip + 207 + true + true + + true + + Label + true + true + + Left + + + + ОтборПоСостояниюЗавершеноКонтекстноеМеню + 101 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ОтборПоСостояниюЗавершеноАварийно + 102 + true + true + + true + + + + ОтборПоСостояниюЗавершеноАварийно + + + Right + + ru + Показывать фоновые задания завершенные с ошибкой + + + ОтборПоСостояниюЗавершеноАварийноExtendedTooltip + 208 + true + true + + true + + Label + true + true + + Left + + + + ОтборПоСостояниюЗавершеноАварийноКонтекстноеМеню + 103 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ОтборПоСостояниюОтменено + 104 + true + true + + true + + + + ОтборПоСостояниюОтменено + + + Right + + ru + Показывать фоновые задания отмененные пользователем + + + ОтборПоСостояниюОтмененоExtendedTooltip + 209 + true + true + + true + + Label + true + true + + Left + + + + ОтборПоСостояниюОтмененоКонтекстноеМеню + 105 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + ОтборПоСостояниюАктивно + 98 + true + true + + true + + + + ОтборПоСостояниюАктивно + + + Right + + ru + Показывать фоновые задания, которые сейчас выполняются + + + ОтборПоСостояниюАктивноExtendedTooltip + 210 + true + true + + true + + Label + true + true + + Left + + + + ОтборПоСостояниюАктивноКонтекстноеМеню + 99 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>По состоянию</value> + + + ПоСостояниюExtendedTooltip + 206 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + DontUse + + + + ПоПериоду + 150 + + ДекорацияЗаПериод + 241 + + <key>ru</key> + <value>За период:</value> + + true + true + + true + + + ДекорацияЗаПериодРасширеннаяПодсказка + 243 + true + true + + true + + Label + true + true + + Left + + + + ДекорацияЗаПериодКонтекстноеМеню + 242 + true + true + + true + + true + + Label + true + true + + Left + + + + ВидОтбораПоПериоду + 110 + true + true + + true + + + + ВидОтбораПоПериоду + + + None + + OnChange + ВидОтбораПоПериодуПриИзменении + + + ВидОтбораПоПериодуExtendedTooltip + 213 + true + true + + true + + Label + true + true + + Left + + + + ВидОтбораПоПериодуКонтекстноеМеню + 111 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + + ru + Все время + + + 0 + + + + + ru + Прошлая ночь + + + 1 + + + + + ru + Вчера + + + 2 + + + + + ru + Сегодня + + + 3 + + + + + ru + Произвольный + + + 4 + + + + + + УстановкаПроизвольногоПериода + 112 + + ОтборПериодС + 113 + true + true + + true + + + + ОтборПериодС + + + + ОтборПериодСExtendedTooltip + 217 + true + true + + true + + Label + true + true + + Left + + + + ОтборПериодСКонтекстноеМеню + 114 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ОтборПериодПо + 115 + true + true + + true + + + + ОтборПериодПо + + + + ОтборПериодПоExtendedTooltip + 218 + true + true + + true + + Label + true + true + + Left + + + + ОтборПериодПоКонтекстноеМеню + 116 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + + true + + + ru + Укажите период для отбора информации о фоновых заданий + + 35 + false + + УстановкаПроизвольногоПериодаРасширеннаяПодсказка + 216 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + DontUse + + + true + true + + true + + + <key>ru</key> + <value>По периоду</value> + + + ПоПериодуExtendedTooltip + 211 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + DontUse + + + + ПоРегламентномуЗаданию + 96 + + ОтбиратьПоРегламентномуЗаданию + 94 + true + true + + true + + + + ОтбиратьПоРегламентномуЗаданию + + + Right + + ru + Включить отбор по регламентному заданию + + + OnChange + ОтбиратьПоРегламентномуЗаданиюПриИзменении + + + ОтбиратьПоРегламентномуЗаданиюExtendedTooltip + 220 + true + true + + true + + Label + true + true + + Left + + + + ОтбиратьПоРегламентномуЗаданиюКонтекстноеМеню + 95 + true + true + + true + + true + + CheckBoxField + Enter + true + Left + true + + + + РегламентноеЗаданиеДляОтбора + 56 + true + + true + + + + РегламентноеЗаданиеДляОтбораИдентификатор + + + None + + ru + Регламентное задание для отбора + + + РегламентноеЗаданиеДляОтбораExtendedTooltip + 221 + true + true + + true + + Label + true + true + + Left + + + + РегламентноеЗаданиеДляОтбораКонтекстноеМеню + 57 + true + true + + true + + true + + InputField + Enter + true + Left + true + + + Clearing + РегламентноеЗаданиеДляОтбораОчистка + + true + true + true + false + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>По регламентному заданию</value> + + + ПоРегламентномуЗаданиюExtendedTooltip + 219 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + true + true + Auto + DontUse + + + + ТаблицаФоновыеЗадания + 65 + true + true + + true + + + ТаблицаФоновыеЗадания + + false + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SortListAsc + SortListDesc + + Состояние + 76 + true + true + + true + + + + ТаблицаФоновыеЗадания.Состояние + + + + СостояниеExtendedTooltip + 228 + true + true + + true + + Label + true + true + + Left + + + + СостояниеКонтекстноеМеню + 77 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + + + + НаименованиеФоновогоЗадания + 139 + true + true + + true + + + + ТаблицаФоновыеЗадания.Наименование + + + + НаименованиеФоновогоЗаданияExtendedTooltip + 227 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеФоновогоЗаданияКонтекстноеМеню + 140 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Начало + 78 + true + true + + true + + + + ТаблицаФоновыеЗадания.Начало + + + + НачалоExtendedTooltip + 229 + true + true + + true + + Label + true + true + + Left + + + + НачалоКонтекстноеМеню + 79 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + + + + Конец + 80 + + <key>ru</key> + <value>Окончание</value> + + true + true + + true + + + + ТаблицаФоновыеЗадания.Конец + + + + КонецExtendedTooltip + 230 + true + true + + true + + Label + true + true + + Left + + + + КонецКонтекстноеМеню + 81 + true + true + + true + + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + + + + НаименованиеРегламентногоЗадания + 90 + + <key>ru</key> + <value>Регламентное задание</value> + + true + true + + true + + + + ТаблицаФоновыеЗадания.НаименованиеРегламентногоЗадания + + + + НаименованиеРегламентногоЗаданияExtendedTooltip + 231 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеРегламентногоЗаданияКонтекстноеМеню + 91 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ТаблицаФоновыеЗаданияКоманднаяПанель + 67 + + ТаблицаФоновыеЗаданияОбновитьДанные + 92 + true + true + + true + + false + + ТаблицаФоновыеЗаданияОбновитьДанныеExtendedTooltip + 222 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОбновитьФоновыеЗадания + Auto + true + true + UserCmds + + + ТаблицаФоновыеЗаданияОткрыть + 121 + true + true + + true + + true + false + + ТаблицаФоновыеЗаданияОткрытьExtendedTooltip + 223 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОткрытьФоновоеЗадание + Auto + true + true + UserCmds + + + ТаблицаФоновыеЗаданияОтменить + 122 + + <key>ru</key> + <value>Отменить</value> + + true + true + + true + + false + + ТаблицаФоновыеЗаданияОтменитьExtendedTooltip + 224 + true + true + + true + + Label + true + true + + Left + + + Form.Command.ОтменитьФоновоеЗадание + Auto + true + true + UserCmds + + + ТаблицаФоновыеЗаданияСправка + 154 + true + true + + true + + false + + ТаблицаФоновыеЗаданияСправкаExtendedTooltip + 225 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Help + Auto + true + true + UserCmds + + true + true + + true + + Left + true + + + Selection + ТаблицаФоновыеЗаданияВыбор + + + true + true + + true + + ТаблицаФоновыеЗаданияСтрокаПоиска + 255 + + ТаблицаФоновыеЗаданияСтрокаПоискаРасширеннаяПодсказка + 257 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаФоновыеЗаданияСтрокаПоискаКонтекстноеМеню + 256 + true + true + + true + + true + + + true + + + + true + true + + true + + ТаблицаФоновыеЗаданияСостояниеПросмотра + 258 + + ТаблицаФоновыеЗаданияСостояниеПросмотраРасширеннаяПодсказка + 260 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаФоновыеЗаданияСостояниеПросмотраКонтекстноеМеню + 259 + true + true + + true + + true + + ViewStatusAddition + + true + Left + + + + true + true + + true + + ТаблицаФоновыеЗаданияУправлениеПоиском + 261 + + ТаблицаФоновыеЗаданияУправлениеПоискомРасширеннаяПодсказка + 263 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаФоновыеЗаданияУправлениеПоискомКонтекстноеМеню + 262 + true + true + + true + + true + + SearchControlAddition + + true + + + + ТаблицаФоновыеЗаданияExtendedTooltip + 226 + true + true + + true + + Label + true + true + + Left + + + + ТаблицаФоновыеЗаданияКонтекстноеМеню + 66 + true + true + + true + + true + + true + true + true + true + true + true +
    true
    + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + None + None + None + +
    + true + true + + true + + + <key>ru</key> + <value>Фоновые задания</value> + + + ФоновыеЗаданияExtendedTooltip + 202 + true + true + + true + + Label + true + true + + Left + + + Page + + Vertical + true + +
    + true + true + + true + + + ЗаданияExtendedTooltip + 176 + true + true + + true + + Label + true + true + + Left + + + Pages + + + OnCurrentPageChange + ЗаданияПриСменеСтраницы + + TabsOnTop + DontUse + +
    + None + + ФормаКоманднаяПанель + -1 + true + true + + true + + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + BeforeLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + Abort + Cancel + Ignore + No + OK + Retry + Yes + 87 + Use + true + true + Vertical + true + true + true + UseIfNecessary + true + true + + ТаблицаРегламентныеЗадания + + <key>ru</key> + <value>Таблица регламентные задания</value> + + 3 + + ValueTable + + + true + + + true + + + Идентификатор + + <key>ru</key> + <value>Идентификатор</value> + + 1 + + String + + + + true + + + true + + + + Предопределенное + + <key>ru</key> + <value>Предопределенное</value> + + 2 + + Boolean + + + true + + + true + + + + Ключ + + <key>ru</key> + <value>Ключ</value> + + 4 + + String + + + + true + + + true + + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 5 + + String + + + + true + + + true + + + + Использование + + <key>ru</key> + <value>Использование</value> + + 6 + + Boolean + + + true + + + true + + + + Расписание + + <key>ru</key> + <value>Расписание</value> + + 7 + + String + + + + true + + + true + + + + ИнтервалПовтораПриАварийномЗавершении + + <key>ru</key> + <value>При ошибке повторять через, сек</value> + + 8 + + Number + + 10 + true + + + + true + + + true + + + + КоличествоПовторовПриАварийномЗавершении + + <key>ru</key> + <value>При ошибке повторять, раз</value> + + 9 + + Number + + 10 + true + + + + true + + + true + + + + УникальныйИдентификаторПоследнегоФЗ + + <key>ru</key> + <value>Уникальный идентификатор последнего ФЗ</value> + + 10 + + String + + + + true + + + true + + + + СостояниеВыполнения + + <key>ru</key> + <value>Состояние выполнения</value> + + 12 + + String + + + + true + + + true + + + + ДатаОкончания + + <key>ru</key> + <value>Дата окончания</value> + + 13 + + String + + + + true + + + true + + + + ИмяПользователя + + <key>ru</key> + <value>Имя пользователя</value> + + 3 + + String + + + + true + + + true + + + + + ТаблицаФоновыеЗадания + + <key>ru</key> + <value>Таблица фоновые задания</value> + + 4 + + ValueTable + + + true + + + true + + + Идентификатор + + <key>ru</key> + <value>Идентификатор</value> + + 1 + + String + + + + true + + + true + + + + Ключ + + <key>ru</key> + <value>Ключ</value> + + 2 + + String + + + + true + + + true + + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 3 + + String + + + + true + + + true + + + + ИмяМетода + + <key>ru</key> + <value>Имя метода</value> + + 4 + + String + + + + true + + + true + + + + Состояние + + <key>ru</key> + <value>Состояние</value> + + 5 + + String + + + + true + + + true + + + + Начало + + <key>ru</key> + <value>Начало</value> + + 6 + + String + + + + true + + + true + + + + Конец + + <key>ru</key> + <value>Конец</value> + + 7 + + Date + + + + true + + + true + + + + Расположение + + <key>ru</key> + <value>Расположение</value> + + 8 + + String + + + + true + + + true + + + + СообщенияПользователюИОписаниеИнформацииОбОшибке + + <key>ru</key> + <value>Сообщения пользователю и описание информации об ошибке</value> + + 9 + + String + + + + true + + + true + + + + ИдентификаторРегламентногоЗадания + + <key>ru</key> + <value>Идентификатор регламентного задания</value> + + 11 + + String + + + + true + + + true + + + + НаименованиеРегламентногоЗадания + + <key>ru</key> + <value>Наименование регламентного задания</value> + + 12 + + String + + + + true + + + true + + + + + ОтбиратьПоРегламентномуЗаданию + + <key>ru</key> + <value>Отбирать по регламентному заданию</value> + + 2 + + Boolean + + + true + + + true + + + ОтбиратьПоРегламентномуЗаданию + + + + ОтборПоСостояниюАктивно + + <key>ru</key> + <value>Выполняется</value> + + 7 + + Boolean + + + true + + + true + + + ОтборПоСостояниюАктивно + + + + ОтборПоСостояниюЗавершено + + <key>ru</key> + <value>Выполнено</value> + + 8 + + Boolean + + + true + + + true + + + ОтборПоСостояниюЗавершено + + + + ОтборПоСостояниюЗавершеноАварийно + + <key>ru</key> + <value>Завершено с ошибками</value> + + 9 + + Boolean + + + true + + + true + + + ОтборПоСостояниюЗавершеноАварийно + + + + ОтборПоСостояниюОтменено + + <key>ru</key> + <value>Отменено</value> + + 10 + + Boolean + + + true + + + true + + + ОтборПоСостояниюОтменено + + + + ВидОтбораПоПериоду + + <key>ru</key> + <value>Вид отбора по периоду</value> + + 11 + + Number + + 10 + + + + true + + + true + + + ВидОтбораПоПериоду + + + + ОтборПериодС + + <key>ru</key> + <value>С</value> + + 12 + + Date + + + + true + + + true + + + ОтборПериодС + + + + ОтборПериодПо + + <key>ru</key> + <value>По</value> + + 13 + + Date + + + + true + + + true + + + ОтборПериодПо + + + + КоличествоФоновыхЗаданийВТаблице + + <key>ru</key> + <value>Количество фоновых заданий в таблице</value> + + 14 + + Number + + 10 + + + + true + + + true + + + + Объект + + <key>ru</key> + <value>Нужен для механизма сохранения настроек</value> + + 1 + + DataProcessorObject.РегламентныеИФоновыеЗадания + + + true + + + true + +
    true
    +
    + + НастройкиЗагружены + + <key>ru</key> + <value>Настройки загружены</value> + + 19 + + Boolean + + + true + + + true + + + + ТекстНеопределено + + <key>ru</key> + <value>Текст неопределено</value> + + 20 + + String + + + + true + + + true + + + + РегламентноеЗаданиеДляОтбораИдентификатор + + <key>ru</key> + <value>Регламентное задание для отбора идентификатор</value> + + 22 + + String + + 50 + + + + true + + + true + + + РегламентноеЗаданиеДляОтбораИдентификатор + + + + ПустойИдентификатор + + <key>ru</key> + <value>Пустой идентификатор</value> + + 5 + + String + + 50 + + + + true + + + true + + + + ИдентификаторыФоновыхЗаданийПриРучномВыполнении + + <key>ru</key> + <value>Идентификаторы фоновых заданий при ручном выполнении</value> + + 6 + + ValueList + + + true + + + true + + + + + + + СтраницаФоновыеЗаданияОткрывалась + + <key>ru</key> + <value>Страница фоновые задания открывалась</value> + + 15 + + Boolean + + + true + + + true + + + + ОбновитьФоновыеЗадания + + <key>ru</key> + <value>Обновить</value> + + 1 + + ru + Обновить список фоновых заданий (с учетом отбора) + + + true + + F5 + + StdPicture.Refresh + + + + ОбновитьФоновыеЗадания + + + Text + DontUse + + + ОткрытьФоновоеЗадание + + <key>ru</key> + <value>Открыть...</value> + + 2 + + ru + Открыть фоновое задание + + + true + + + StdPicture.Magnifier + + + + ОткрытьФоновоеЗаданиеНаКлиенте + + + Text + DontUse + + + ОтменитьФоновоеЗадание + + <key>ru</key> + <value>Отменить фоновое задание</value> + + 3 + + ru + Отменить фоновое задание + + + true + + + + ОтменитьФоновоеЗадание + + + Text + DontUse + + + НастроитьРасписание + + <key>ru</key> + <value>Настроить расписание...</value> + + 4 + + ru + Настроить расписание + + + true + + + StdPicture.SetTime + + + + НастроитьРасписание + + + Text + DontUse + + + ВыполнитьРегламентноеЗаданиеВручную + + <key>ru</key> + <value>Выполнить сейчас</value> + + 5 + + ru + Выполнить процедуру регламентного задания либо в этом сеансе (для файловой ИБ), либо в фоновом задании на сервере (для серверной ИБ) + + + true + + + + ВыполнитьРегламентноеЗаданиеВручную + + + Text + DontUse + + + ВключитьРегламентноеЗадание + + <key>ru</key> + <value>Включить</value> + + 6 + + ru + Включить регламентное задание + + + true + + + + ВключитьРегламентноеЗадание + + + DontUse + + + ВыключитьРегламентноеЗадание + + <key>ru</key> + <value>Выключить</value> + + 7 + + ru + Выключить регламентное задание + + + true + + + + ВыключитьРегламентноеЗадание + + + DontUse + + + ОбновитьРегламентныеЗадания + + <key>ru</key> + <value>Обновить</value> + + 8 + + ru + Обновить список регламентных заданий + + + true + + + + ОбновитьРегламентныеЗадания + + + DontUse + + + + + 0:f7ccc574-d6c3-495a-86b4-7e24e75502d9 + FormNavigationPanelImportant + 2 + + + 0:49440928-bbd6-4c6a-bf40-af70a34d7372 + FormNavigationPanelImportant + 0 + + + 0:721481be-40e4-45b6-9530-ad7fb0c60429 + FormNavigationPanelImportant + 1 + + + 0:f7ccc574-d6c3-495a-86b4-7e24e75502d9 + Added + FormNavigationPanelGoTo + 1 + + true + + + + 0:49440928-bbd6-4c6a-bf40-af70a34d7372 + Added + FormNavigationPanelImportant + 0 + + true + + + + 0:721481be-40e4-45b6-9530-ad7fb0c60429 + Added + FormNavigationPanelGoTo + 0 + + true + + + + + + +
    diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Module.bsl" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Module.bsl" new file mode 100644 index 0000000..6a79980 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Module.bsl" @@ -0,0 +1,919 @@ +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + УстановитьУсловноеОформление(); + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + + ПустойИдентификатор = Строка(Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000")); + ТекстНеОпределено = РегламентныеЗаданияСлужебный.ТекстНеОпределено(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если НЕ НастройкиЗагружены Тогда + ЗаполнитьНастройкиФормы(Новый Соответствие); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "Запись_РегламентныеЗадания" Тогда + + Если ЗначениеЗаполнено(Параметр) Тогда + ОбновитьТаблицуРегламентныхЗаданий(Параметр); + Иначе + ПодключитьОбработчикОжидания("ОтложенноеОбновлениеРегламентныхЗаданий", 0.1, Истина); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + ЗаполнитьНастройкиФормы(Настройки); + + НастройкиЗагружены = Истина; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовШапкиФормы + +&НаКлиенте +Процедура ЗаданияПриСменеСтраницы(Элемент, ТекущаяСтраница) + + Если ТекущаяСтраница = Элементы.ФоновыеЗадания + И Не СтраницаФоновыеЗаданияОткрывалась Тогда + + СтраницаФоновыеЗаданияОткрывалась = Истина; + ОбновитьТаблицуФоновыхЗаданий(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВидОтбораПоПериодуПриИзменении(Элемент) + + ТекущаяДатаСеанса = ТекущаяДатаСеансаНаСервере(); + + Элементы.ОтборПериодС.ТолькоПросмотр = НЕ (ВидОтбораПоПериоду = 4); + Элементы.ОтборПериодПо.ТолькоПросмотр = НЕ (ВидОтбораПоПериоду = 4); + + Если ВидОтбораПоПериоду = 0 Тогда + ОтборПериодС = '00010101'; + ОтборПериодПо = '00010101'; + Элементы.УстановкаПроизвольногоПериода.Видимость = Ложь; + ИначеЕсли ВидОтбораПоПериоду = 4 Тогда + ОтборПериодС = НачалоДня(ТекущаяДатаСеанса); + ОтборПериодПо = ОтборПериодС; + Элементы.УстановкаПроизвольногоПериода.Видимость = Истина; + Иначе + ОбновитьАвтоматическийПериод(ЭтотОбъект, ТекущаяДатаСеанса); + Элементы.УстановкаПроизвольногоПериода.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтбиратьПоРегламентномуЗаданиюПриИзменении(Элемент) + + Элементы.РегламентноеЗаданиеДляОтбора.Доступность = ОтбиратьПоРегламентномуЗаданию; + +КонецПроцедуры + +&НаКлиенте +Процедура РегламентноеЗаданиеДляОтбораОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + РегламентноеЗаданиеДляОтбораИдентификатор = ПустойИдентификатор; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаФоновыеЗадания + +&НаКлиенте +Процедура ТаблицаФоновыеЗаданияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + ОткрытьФоновоеЗадание(); + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиСобытийЭлементовТаблицыФормыТаблицаРегламентныеЗадания + +&НаКлиенте +Процедура ТаблицаРегламентныеЗаданияВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + Если Поле = "Предопределенное" + ИЛИ Поле = "Использование" Тогда + + ДобавитьСкопироватьИзменитьРегламентноеЗадание("Изменить"); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ТаблицаРегламентныеЗаданияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + + Отказ = Истина; + + ДобавитьСкопироватьИзменитьРегламентноеЗадание(?(Копирование, "Скопировать", "Добавить")); + +КонецПроцедуры + +&НаКлиенте +Процедура ТаблицаРегламентныеЗаданияПередНачаломИзменения(Элемент, Отказ) + + Отказ = Истина; + + ДобавитьСкопироватьИзменитьРегламентноеЗадание("Изменить"); + +КонецПроцедуры + +&НаКлиенте +Процедура ТаблицаРегламентныеЗаданияПередУдалением(Элемент, Отказ) + + Отказ = Истина; + + Если Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки.Количество() > 1 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите одно регламентное задание.'")); + + ИначеЕсли Элемент.ТекущиеДанные.Предопределенное Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Невозможно удалить предопределенное регламентное задание.'") ); + Иначе + ПоказатьВопрос( + Новый ОписаниеОповещения("ТаблицаРегламентныеЗаданияПередУдалениемЗавершение", ЭтотОбъект), + НСтр("ru = 'Удалить регламентное задание?'"), РежимДиалогаВопрос.ДаНет); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область ОбработчикиКомандФормы + +&НаКлиенте +Процедура ОбновитьРегламентныеЗадания(Команда) + + ОбновитьТаблицуРегламентныхЗаданий(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьРегламентноеЗаданиеВручную(Команда) + + Если Элементы.ТаблицаРегламентныеЗадания.ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите регламентное задание.'")); + Возврат; + КонецЕсли; + + ВыделенныеСтроки = Новый Массив; + Для каждого ВыделеннаяСтрока Из Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки Цикл + ВыделенныеСтроки.Добавить(ВыделеннаяСтрока); + КонецЦикла; + Индекс = 0; + + МассивСообщенийОбОшибках = Новый Массив; + + Для каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл + ОбновитьВсе = (Индекс = ВыделенныеСтроки.Количество() - 1); + ТекущиеДанные = ТаблицаРегламентныеЗадания.НайтиПоИдентификатору(ВыделеннаяСтрока); + + ПараметрыВыполнения = ВыполнитьРегламентноеЗаданиеВручнуюНаСервере(ТекущиеДанные.Идентификатор, ОбновитьВсе); + Если ПараметрыВыполнения.ЗапускВыполнен Тогда + + ПоказатьОповещениеПользователя( + НСтр("ru = 'Запущена процедура регламентного задания'"), , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1. + |Процедура запущена в фоновом задании %2'"), + ТекущиеДанные.Наименование, + Строка(ПараметрыВыполнения.МоментЗапуска)), + БиблиотекаКартинок.ВыполнитьЗадачу); + + ИдентификаторыФоновыхЗаданийПриРучномВыполнении.Добавить( + ПараметрыВыполнения.ИдентификаторФоновогоЗадания, + ТекущиеДанные.Наименование); + + ПодключитьОбработчикОжидания( + "СообщитьОбОкончанииРучногоВыполненияРегламентногоЗадания", 0.1, Истина); + ИначеЕсли ПараметрыВыполнения.ПроцедураУжеВыполняется Тогда + МассивСообщенийОбОшибках.Добавить( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Процедура регламентного задания ""%1"" + | уже выполняется в фоновом задании ""%2"", начатом %3.'"), + ТекущиеДанные.Наименование, + ПараметрыВыполнения.ПредставлениеФоновогоЗадания, + Строка(ПараметрыВыполнения.МоментЗапуска))); + Иначе + Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки.Удалить( + Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки.Найти(ВыделеннаяСтрока)); + КонецЕсли; + + Индекс = Индекс + 1; + КонецЦикла; + + КоличествоОшибок = МассивСообщенийОбОшибках.Количество(); + Если КоличествоОшибок > 0 Тогда + ЗаголовокТекстаПроОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Задания выполнены с ошибками (%1 из %2)'"), + Формат(КоличествоОшибок, "ЧГ="), + Формат(ВыделенныеСтроки.Количество(), "ЧГ=")); + + ТекстВсехОшибок = Новый ТекстовыйДокумент; + ТекстВсехОшибок.ДобавитьСтроку(ЗаголовокТекстаПроОшибки + ":"); + Для Каждого ТекстЭтойОшибки Из МассивСообщенийОбОшибках Цикл + ТекстВсехОшибок.ДобавитьСтроку(""); + ТекстВсехОшибок.ДобавитьСтроку(ТекстЭтойОшибки); + КонецЦикла; + + Если КоличествоОшибок > 5 Тогда + Кнопки = Новый СписокЗначений; + Кнопки.Добавить(1, НСтр("ru = 'Показать ошибки'")); + Кнопки.Добавить(КодВозвратаДиалога.Отмена); + + ПоказатьВопрос( + Новый ОписаниеОповещения( + "ВыполнитьРегламентноеЗаданиеВручнуюЗавершение", ЭтотОбъект, ТекстВсехОшибок), + ЗаголовокТекстаПроОшибки, Кнопки); + Иначе + ПоказатьПредупреждение(, СокрЛП(ТекстВсехОшибок.ПолучитьТекст())); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьФоновыеЗадания(Команда) + + ОбновитьТаблицуФоновыхЗаданий(); + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьРасписание(Команда) + + ТекущиеДанные = Элементы.ТаблицаРегламентныеЗадания.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите регламентное задание.'")); + + ИначеЕсли Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки.Количество() > 1 Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите одно регламентное задание.'")); + Иначе + Диалог = Новый ДиалогРасписанияРегламентногоЗадания( + ПолучитьРасписание(ТекущиеДанные.Идентификатор)); + + Диалог.Показать(Новый ОписаниеОповещения( + "ОткрытьРасписаниеЗавершение", ЭтотОбъект, ТекущиеДанные)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВключитьРегламентноеЗадание(Команда) + + УстановитьИспользованиеРегламентногоЗадания(Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ВыключитьРегламентноеЗадание(Команда) + + УстановитьИспользованиеРегламентногоЗадания(Ложь); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФоновоеЗаданиеНаКлиенте(Команда) + + ОткрытьФоновоеЗадание(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтменитьФоновоеЗадание(Команда) + + Если Элементы.ТаблицаФоновыеЗадания.ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите фоновое задание.'")); + Иначе + ОтменитьФоновоеЗаданиеНаСервере(Элементы.ТаблицаФоновыеЗадания.ТекущиеДанные.Идентификатор); + + ПоказатьПредупреждение(, + НСтр("ru = 'Задание отменено, но состояние отмены будет + |установлено сервером только через секунды, + |возможно потребуется обновить данные вручную.'")); + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +&НаСервере +Процедура УстановитьУсловноеОформление() + + УсловноеОформление.Элементы.Очистить(); + + // + + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.Конец.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаФоновыеЗадания.Конец"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено; + Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<>'")); + + // + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.СостояниеВыполнения.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаРегламентныеЗадания.СостояниеВыполнения"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = НСтр("ru = '<не определено>'"); + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НедоступныеДанныеЦвет); + + // + Элемент = УсловноеОформление.Элементы.Добавить(); + + ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); + ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаОкончания.Имя); + + ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ТаблицаРегламентныеЗадания.ДатаОкончания"); + ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ОтборЭлемента.ПравоеЗначение = НСтр("ru = '<не определено>'"); + Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.НедоступныеДанныеЦвет); + + +КонецПроцедуры + +&НаКлиенте +Процедура ТаблицаРегламентныеЗаданияПередУдалениемЗавершение(Ответ, Неопределен) Экспорт + + Если Ответ = КодВозвратаДиалога.Да Тогда + УдалитьРегламентноеЗаданиеВыполнитьНаСервере( + Элементы.ТаблицаРегламентныеЗадания.ТекущиеДанные.Идентификатор); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьРегламентноеЗаданиеВручнуюЗавершение(Ответ, ТекстВсехОшибок) Экспорт + + Если Ответ = 1 Тогда + ТекстВсехОшибок.Показать(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьРасписаниеЗавершение(НовоеРасписание, ТекущиеДанные) Экспорт + + Если НовоеРасписание <> Неопределено Тогда + УстановитьРасписание(ТекущиеДанные.Идентификатор, НовоеРасписание); + ОбновитьТаблицуРегламентныхЗаданий(ТекущиеДанные.Идентификатор); + КонецЕсли; + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ПолучитьРасписание(Знач ИдентификаторРегламентногоЗадания) + + УстановитьПривилегированныйРежим(Истина); + + Возврат РегламентныеЗаданияСервер.ПолучитьРасписаниеРегламентногоЗадания( + ИдентификаторРегламентногоЗадания); + +КонецФункции + +&НаСервереБезКонтекста +Процедура УстановитьРасписание(Знач ИдентификаторРегламентногоЗадания, Знач Расписание) + + УстановитьПривилегированныйРежим(Истина); + + РегламентныеЗаданияСервер.УстановитьРасписаниеРегламентногоЗадания( + ИдентификаторРегламентногоЗадания, + Расписание); + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьНастройкиФормы(Знач Настройки) + + ОбновитьТаблицуРегламентныхЗаданий(); + + НастройкиПоУмолчанию = Новый Структура; + + // Настройка отбора фоновых заданий. + Если Настройки.Получить("ОтборПоСостояниюАктивно") = Неопределено Тогда + Настройки.Вставить("ОтборПоСостояниюАктивно", Истина); + КонецЕсли; + + Если Настройки.Получить("ОтборПоСостояниюЗавершено") = Неопределено Тогда + Настройки.Вставить("ОтборПоСостояниюЗавершено", Истина); + КонецЕсли; + + Если Настройки.Получить("ОтборПоСостояниюЗавершеноАварийно") = Неопределено Тогда + Настройки.Вставить("ОтборПоСостояниюЗавершеноАварийно", Истина); + КонецЕсли; + + Если Настройки.Получить("ОтборПоСостояниюОтменено") = Неопределено Тогда + Настройки.Вставить("ОтборПоСостояниюОтменено", Истина); + КонецЕсли; + + Если Настройки.Получить("ОтбиратьПоРегламентномуЗаданию") = Неопределено + ИЛИ Настройки.Получить("РегламентноеЗаданиеДляОтбораИдентификатор") = Неопределено Тогда + Настройки.Вставить("ОтбиратьПоРегламентномуЗаданию", Ложь); + Настройки.Вставить("РегламентноеЗаданиеДляОтбораИдентификатор", ПустойИдентификатор); + КонецЕсли; + + // Настройка отбора по периоду "За все время". + // См. также обработчик события ВидОтбораПоПериодуПриИзменении переключателя. + Если Настройки.Получить("ВидОтбораПоПериоду") = Неопределено + ИЛИ Настройки.Получить("ОтборПериодС") = Неопределено + ИЛИ Настройки.Получить("ОтборПериодПо") = Неопределено Тогда + + Настройки.Вставить("ВидОтбораПоПериоду", 0); + ТекущаяДатаСеанса = ТекущаяДатаСеанса(); + Настройки.Вставить("ОтборПериодС", НачалоДня(ТекущаяДатаСеанса) - 3*3600); + Настройки.Вставить("ОтборПериодПо", НачалоДня(ТекущаяДатаСеанса) + 9*3600); + КонецЕсли; + + Для Каждого Настройка Из Настройки Цикл + НастройкиПоУмолчанию.Вставить(Настройка.Ключ, Настройка.Значение); + КонецЦикла; + + ЗаполнитьЗначенияСвойств(ЭтотОбъект, НастройкиПоУмолчанию); + + // Настройка видимости и доступности. + Элементы.ОтборПериодС.ТолькоПросмотр = НЕ (ВидОтбораПоПериоду = 4); + Элементы.ОтборПериодПо.ТолькоПросмотр = НЕ (ВидОтбораПоПериоду = 4); + Элементы.РегламентноеЗаданиеДляОтбора.Доступность = ОтбиратьПоРегламентномуЗаданию; + + ОбновитьАвтоматическийПериод(ЭтотОбъект, ТекущаяДатаСеанса()); + + ОбновитьТаблицуФоновыхЗаданий(); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФоновоеЗадание() + + Если Элементы.ТаблицаФоновыеЗадания.ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите фоновое задание.'")); + Возврат; + КонецЕсли; + + СписокПередаваемыхСвойств = + "Идентификатор, + |Ключ, + |Наименование, + |ИмяМетода, + |Состояние, + |Начало, + |Конец, + |Расположение, + |СообщенияПользователюИОписаниеИнформацииОбОшибке, + |ИдентификаторРегламентногоЗадания, + |НаименованиеРегламентногоЗадания"; + ЗначенияТекущихДанных = Новый Структура(СписокПередаваемыхСвойств); + ЗаполнитьЗначенияСвойств(ЗначенияТекущихДанных, Элементы.ТаблицаФоновыеЗадания.ТекущиеДанные); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Идентификатор", Элементы.ТаблицаФоновыеЗадания.ТекущиеДанные.Идентификатор); + ПараметрыФормы.Вставить("СвойстваФоновогоЗадания", ЗначенияТекущихДанных); + + ОткрытьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.ФоновоеЗадание", ПараметрыФормы, ЭтотОбъект); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ТекущаяДатаСеансаНаСервере() + + Возврат ТекущаяДатаСеанса(); + +КонецФункции + +&НаСервере +Функция ОповещенияОбОкончанииВыполненияРегламентныхЗаданий() + + ОповещенияОбОкончанииВыполнения = Новый Массив; + + Если ИдентификаторыФоновыхЗаданийПриРучномВыполнении.Количество() > 0 Тогда + Индекс = ИдентификаторыФоновыхЗаданийПриРучномВыполнении.Количество() - 1; + + УстановитьПривилегированныйРежим(Истина); + Пока Индекс >= 0 Цикл + + Отбор = Новый Структура("УникальныйИдентификатор", Новый УникальныйИдентификатор( + ИдентификаторыФоновыхЗаданийПриРучномВыполнении[Индекс].Значение)); + + МассивФоновыхЗаданий = ФоновыеЗадания.ПолучитьФоновыеЗадания(Отбор); + + Если МассивФоновыхЗаданий.Количество() = 1 Тогда + МоментОкончания = МассивФоновыхЗаданий[0].Конец; + + Если ЗначениеЗаполнено(МоментОкончания) Тогда + + ОповещенияОбОкончанииВыполнения.Добавить( + Новый Структура( + "ПредставлениеРегламентногоЗадания, + |МоментОкончания", + ИдентификаторыФоновыхЗаданийПриРучномВыполнении[Индекс].Представление, + МоментОкончания)); + + ИдентификаторыФоновыхЗаданийПриРучномВыполнении.Удалить(Индекс); + КонецЕсли; + Иначе + ИдентификаторыФоновыхЗаданийПриРучномВыполнении.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + + ОбновитьТаблицуРегламентныхЗаданий(); + + Возврат ОповещенияОбОкончанииВыполнения; + +КонецФункции + +&НаКлиенте +Процедура СообщитьОбОкончанииРучногоВыполненияРегламентногоЗадания() + + ОповещенияОбОкончанииВыполнения = ОповещенияОбОкончанииВыполненияРегламентныхЗаданий(); + + Для каждого Оповещение Из ОповещенияОбОкончанииВыполнения Цикл + + ПоказатьОповещениеПользователя( + НСтр("ru = 'Выполнена процедура регламентного задания'"), + , + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1. + |Процедура завершена в фоновом задании %2'"), + Оповещение.ПредставлениеРегламентногоЗадания, + Строка(Оповещение.МоментОкончания)), + БиблиотекаКартинок.ВыполнитьЗадачу); + КонецЦикла; + + Если ИдентификаторыФоновыхЗаданийПриРучномВыполнении.Количество() > 0 Тогда + + ПодключитьОбработчикОжидания( + "СообщитьОбОкончанииРучногоВыполненияРегламентногоЗадания", 2, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСписокВыбораРегламентногоЗадания() + + Таблица = ТаблицаРегламентныеЗадания; + Список = Элементы.РегламентноеЗаданиеДляОтбора.СписокВыбора; + + // Добавление предопределенного элемента. + Если Список.Количество() = 0 Тогда + Список.Добавить(ПустойИдентификатор, ТекстНеОпределено); + КонецЕсли; + + Индекс = 1; + Для каждого Задание Из Таблица Цикл + Если Индекс >= Список.Количество() + ИЛИ Список[Индекс].Значение <> Задание.Идентификатор Тогда + // Вставка нового задания. + Список.Вставить(Индекс, Задание.Идентификатор, Задание.Наименование); + Иначе + Список[Индекс].Представление = Задание.Наименование; + КонецЕсли; + Индекс = Индекс + 1; + КонецЦикла; + + // Удаление лишних строк. + Пока Индекс < Список.Количество() Цикл + Список.Удалить(Индекс); + КонецЦикла; + + ЭлементСписка = Список.НайтиПоЗначению(РегламентноеЗаданиеДляОтбораИдентификатор); + Если ЭлементСписка = Неопределено Тогда + РегламентноеЗаданиеДляОтбораИдентификатор = ПустойИдентификатор; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ВыполнитьРегламентноеЗаданиеВручнуюНаСервере(Знач ИдентификаторРегламентногоЗадания, ОбновитьВсе = Ложь) + + Результат = РегламентныеЗаданияСлужебный.ВыполнитьРегламентноеЗаданиеВручную(ИдентификаторРегламентногоЗадания); + Если ОбновитьВсе Тогда + ОбновитьТаблицуРегламентныхЗаданий(); + Иначе + ОбновитьТаблицуРегламентныхЗаданий(ИдентификаторРегламентногоЗадания); + КонецЕсли; + Возврат Результат; + +КонецФункции + +&НаСервере +Процедура ОтменитьФоновоеЗаданиеНаСервере(Знач Идентификатор) + + РегламентныеЗаданияСлужебный.ОтменитьФоновоеЗадание(Идентификатор); + + ОбновитьТаблицуРегламентныхЗаданий(); + ОбновитьТаблицуФоновыхЗаданий(); + +КонецПроцедуры + +&НаСервере +Процедура УдалитьРегламентноеЗаданиеВыполнитьНаСервере(Знач Идентификатор) + + Задание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Идентификатор); + Строка = ТаблицаРегламентныеЗадания.НайтиСтроки(Новый Структура("Идентификатор", Идентификатор))[0]; + Задание.Удалить(); + ТаблицаРегламентныеЗадания.Удалить(ТаблицаРегламентныеЗадания.Индекс(Строка)); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьСкопироватьИзменитьРегламентноеЗадание(Знач Действие) + + Если Элементы.ТаблицаРегламентныеЗадания.ТекущиеДанные = Неопределено Тогда + ПоказатьПредупреждение(, НСтр("ru = 'Выберите регламентное задание.'")); + Иначе + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Идентификатор", Элементы.ТаблицаРегламентныеЗадания.ТекущиеДанные.Идентификатор); + ПараметрыФормы.Вставить("Действие", Действие); + + ОткрытьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.РегламентноеЗадание", ПараметрыФормы, ЭтотОбъект); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОтложенноеОбновлениеРегламентныхЗаданий() + + ОбновитьТаблицуРегламентныхЗаданий(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьТаблицуРегламентныхЗаданий(ИдентификаторРегламентногоЗадания = Неопределено) + + // Обновление таблицы РегламентныеЗадания и списка СписокВыбора регламентного задания для отбора. + ТекущиеЗадания = РегламентныеЗадания.ПолучитьРегламентныеЗадания(); + Таблица = ТаблицаРегламентныеЗадания; + + ЗаданияВМоделиСервиса = Новый Соответствие; + + + Если ИдентификаторРегламентногоЗадания = Неопределено Тогда + + Индекс = 0; + Для каждого Задание Из ТекущиеЗадания Цикл + + + Идентификатор = Строка(Задание.УникальныйИдентификатор); + + Если Индекс >= Таблица.Количество() + ИЛИ Таблица[Индекс].Идентификатор <> Идентификатор Тогда + + // Вставка нового задания. + Обновляемое = Таблица.Вставить(Индекс); + + // Установка уникального идентификатора. + Обновляемое.Идентификатор = Идентификатор; + Иначе + Обновляемое = Таблица[Индекс]; + КонецЕсли; + ОбновитьСтрокуТаблицыРегламентныхЗаданий(Обновляемое, Задание); + Индекс = Индекс + 1; + КонецЦикла; + + // Удаление лишних строк. + Пока Индекс < Таблица.Количество() Цикл + Таблица.Удалить(Индекс); + КонецЦикла; + Иначе + Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору( + Новый УникальныйИдентификатор(ИдентификаторРегламентногоЗадания)); + + Строки = Таблица.НайтиСтроки( + Новый Структура("Идентификатор", ИдентификаторРегламентногоЗадания)); + + Если Задание <> Неопределено + И Строки.Количество() > 0 Тогда + + ОбновитьСтрокуТаблицыРегламентныхЗаданий(Строки[0], Задание); + КонецЕсли; + КонецЕсли; + + Элементы.ТаблицаРегламентныеЗадания.Обновить(); + + ПозицияСкобки = Найти(Элементы.РегламентныеЗадания.Заголовок, " ("); + Если ПозицияСкобки > 0 Тогда + Элементы.РегламентныеЗадания.Заголовок = Лев(Элементы.РегламентныеЗадания.Заголовок, ПозицияСкобки - 1); + КонецЕсли; + ЭлементовВСписке = ТаблицаРегламентныеЗадания.Количество(); + Если ЭлементовВСписке > 0 Тогда + Элементы.РегламентныеЗадания.Заголовок = Элементы.РегламентныеЗадания.Заголовок + " (" + Формат(ЭлементовВСписке, "ЧГ=") + ")"; + КонецЕсли; + + ОбновитьСписокВыбораРегламентногоЗадания(); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСтрокуТаблицыРегламентныхЗаданий(Строка, Задание); + + ЗаполнитьЗначенияСвойств(Строка, Задание); + + // Уточнение наименования + Строка.Наименование = РегламентныеЗаданияСлужебный.ПредставлениеРегламентногоЗадания(Задание); + + // Установка Даты завершения и Состояния завершения по последней фоновой процедуре. + СвойстваПоследнегоФоновогоЗадания = РегламентныеЗаданияСлужебный + .ПолучитьСвойстваПоследнегоФоновогоЗаданияВыполненияРегламентногоЗадания(Задание); + + Если СвойстваПоследнегоФоновогоЗадания = Неопределено Тогда + + Строка.ДатаОкончания = ТекстНеОпределено; + Строка.СостояниеВыполнения = ТекстНеОпределено; + Иначе + Строка.ДатаОкончания = ?(ЗначениеЗаполнено(СвойстваПоследнегоФоновогоЗадания.Конец), + СвойстваПоследнегоФоновогоЗадания.Конец, + "<>"); + Строка.СостояниеВыполнения = СвойстваПоследнегоФоновогоЗадания.Состояние; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьТаблицуФоновыхЗаданий() + + Если Не СтраницаФоновыеЗаданияОткрывалась Тогда + Возврат; + КонецЕсли; + + // 1. Подготовка отбора. + Отбор = Новый Структура; + + // 1.1. Добавление отбора по состояниям. + МассивСостояний = Новый Массив; + + Если ОтборПоСостояниюАктивно Тогда + МассивСостояний.Добавить(СостояниеФоновогоЗадания.Активно); + КонецЕсли; + + Если ОтборПоСостояниюЗавершено Тогда + МассивСостояний.Добавить(СостояниеФоновогоЗадания.Завершено); + КонецЕсли; + + Если ОтборПоСостояниюЗавершеноАварийно Тогда + МассивСостояний.Добавить(СостояниеФоновогоЗадания.ЗавершеноАварийно); + КонецЕсли; + + Если ОтборПоСостояниюОтменено Тогда + МассивСостояний.Добавить(СостояниеФоновогоЗадания.Отменено); + КонецЕсли; + + Если МассивСостояний.Количество() <> 4 Тогда + Если МассивСостояний.Количество() = 1 Тогда + Отбор.Вставить("Состояние", МассивСостояний[0]); + Иначе + Отбор.Вставить("Состояние", МассивСостояний); + КонецЕсли; + КонецЕсли; + + // 1.2. Добавление отбора по регламентному заданию. + Если ОтбиратьПоРегламентномуЗаданию Тогда + Отбор.Вставить( + "ИдентификаторРегламентногоЗадания", + ?(РегламентноеЗаданиеДляОтбораИдентификатор = ПустойИдентификатор, + "", + РегламентноеЗаданиеДляОтбораИдентификатор)); + КонецЕсли; + + // 1.3. Добавление отбора по периоду. + Если ВидОтбораПоПериоду <> 0 Тогда + ОбновитьАвтоматическийПериод(ЭтотОбъект, ТекущаяДатаСеанса()); + Отбор.Вставить("Начало", ОтборПериодС); + Отбор.Вставить("Конец", ОтборПериодПо); + КонецЕсли; + + // 2. Обновление списка фоновых заданий. + Таблица = ТаблицаФоновыеЗадания; + + ТекущаяТаблица = РегламентныеЗаданияСлужебный.ПолучитьТаблицуСвойствФоновыхЗаданий(Отбор); + + Индекс = 0; + Для каждого Задание Из ТекущаяТаблица Цикл + + Если Индекс >= Таблица.Количество() + ИЛИ Таблица[Индекс].Идентификатор <> Задание.Идентификатор Тогда + // Вставка нового задания. + Обновляемое = Таблица.Вставить(Индекс); + // Установка уникального идентификатора. + Обновляемое.Идентификатор = Задание.Идентификатор; + Иначе + Обновляемое = Таблица[Индекс]; + КонецЕсли; + + ЗаполнитьЗначенияСвойств(Обновляемое, Задание); + + // Установка наименования регламентного задания из коллекции ТаблицаРегламентныеЗадания. + Если ЗначениеЗаполнено(Обновляемое.ИдентификаторРегламентногоЗадания) Тогда + + Обновляемое.ИдентификаторРегламентногоЗадания + = Обновляемое.ИдентификаторРегламентногоЗадания; + + Строки = ТаблицаРегламентныеЗадания.НайтиСтроки( + Новый Структура("Идентификатор", Обновляемое.ИдентификаторРегламентногоЗадания)); + + Обновляемое.НаименованиеРегламентногоЗадания + = ?(Строки.Количество() = 0, НСтр("ru = '<не найдено>'"), Строки[0].Наименование); + Иначе + Обновляемое.НаименованиеРегламентногоЗадания = ТекстНеОпределено; + Обновляемое.ИдентификаторРегламентногоЗадания = ТекстНеОпределено; + КонецЕсли; + + // Получение информации об ошибках. + Обновляемое.СообщенияПользователюИОписаниеИнформацииОбОшибке + = РегламентныеЗаданияСлужебный.СообщенияИОписанияОшибокФоновогоЗадания( + Обновляемое.Идентификатор, Задание); + + // Увеличение индекса + Индекс = Индекс + 1; + КонецЦикла; + + // Удаление лишних строк. + Пока Индекс < Таблица.Количество() Цикл + Таблица.Удалить(Таблица.Количество()-1); + КонецЦикла; + + Элементы.ТаблицаФоновыеЗадания.Обновить(); + + ПозицияСкобки = Найти(Элементы.ФоновыеЗадания.Заголовок, " ("); + Если ПозицияСкобки > 0 Тогда + Элементы.ФоновыеЗадания.Заголовок = Лев(Элементы.ФоновыеЗадания.Заголовок, ПозицияСкобки - 1); + КонецЕсли; + ЭлементовВСписке = ТаблицаФоновыеЗадания.Количество(); + Если ЭлементовВСписке > 0 Тогда + Элементы.ФоновыеЗадания.Заголовок = Элементы.ФоновыеЗадания.Заголовок + " (" + Формат(ЭлементовВСписке, "ЧГ=") + ")"; + КонецЕсли; + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура ОбновитьАвтоматическийПериод(Форма, ТекущаяДатаСеанса) + + Если Форма.ВидОтбораПоПериоду = 1 Тогда + Форма.ОтборПериодС = НачалоДня(ТекущаяДатаСеанса) - 3*3600; + Форма.ОтборПериодПо = НачалоДня(ТекущаяДатаСеанса) + 9*3600; + + ИначеЕсли Форма.ВидОтбораПоПериоду = 2 Тогда + Форма.ОтборПериодС = НачалоДня(ТекущаяДатаСеанса) - 24*3600; + Форма.ОтборПериодПо = КонецДня(Форма.ОтборПериодС); + + ИначеЕсли Форма.ВидОтбораПоПериоду = 3 Тогда + Форма.ОтборПериодС = НачалоДня(ТекущаяДатаСеанса); + Форма.ОтборПериодПо = КонецДня(Форма.ОтборПериодС); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьИспользованиеРегламентногоЗадания(Включено) + + Для каждого ВыделеннаяСтрока Из Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки Цикл + ТекущиеДанные = ТаблицаРегламентныеЗадания.НайтиПоИдентификатору(ВыделеннаяСтрока); + Задание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(ТекущиеДанные.Идентификатор); + Если Задание.Использование <> Включено Тогда + Задание.Использование = Включено; + Задание.Записать(); + ТекущиеДанные.Использование = Включено; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\320\275\320\276\320\262\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Form.form" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\320\275\320\276\320\262\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Form.form" new file mode 100644 index 0000000..fd1e8e6 --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\320\275\320\276\320\262\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Form.form" @@ -0,0 +1,1023 @@ + + + + <key>ru</key> + <value>Фоновое задание</value> + + + Основное + 23 + + Наименование + 5 + true + true + + true + + + + Наименование + + + + НаименованиеExtendedTooltip + 32 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеКонтекстноеМеню + 6 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Состояние + 19 + true + true + + true + + + + Состояние + + + + СостояниеExtendedTooltip + 33 + true + true + + true + + Label + true + true + + Left + + + + СостояниеКонтекстноеМеню + 20 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Начало + 7 + true + true + + true + + + + Начало + + + + НачалоExtendedTooltip + 34 + true + true + + true + + Label + true + true + + Left + + + + НачалоКонтекстноеМеню + 8 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Конец + 9 + true + true + + true + + + + Конец + + + + КонецExtendedTooltip + 35 + true + true + + true + + Label + true + true + + Left + + + + КонецКонтекстноеМеню + 10 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Расположение + 11 + true + true + + true + + + + Расположение + + + + РасположениеExtendedTooltip + 36 + true + true + + true + + Label + true + true + + Left + + + + РасположениеКонтекстноеМеню + 12 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>1. Основное</value> + + true + + ОсновноеExtendedTooltip + 31 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + DontUse + + + + Дополнительно + 24 + + Идентификатор + 1 + true + true + + true + + + + Идентификатор + + + + ИдентификаторExtendedTooltip + 38 + true + true + + true + + Label + true + true + + Left + + + + ИдентификаторКонтекстноеМеню + 2 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + Ключ + 3 + true + true + + true + + + + Ключ + + + + КлючExtendedTooltip + 39 + true + true + + true + + Label + true + true + + Left + + + + КлючКонтекстноеМеню + 4 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ИмяМетода + 17 + true + true + + true + + + + ИмяМетода + + + + ИмяМетодаExtendedTooltip + 40 + true + true + + true + + Label + true + true + + Left + + + + ИмяМетодаКонтекстноеМеню + 18 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>2. Дополнительно</value> + + true + + ДополнительноExtendedTooltip + 37 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + DontUse + + + + РегламентноеЗадание + 25 + + НаименованиеРегламентногоЗадания + 15 + + <key>ru</key> + <value>Наименование</value> + + true + true + + true + + + + НаименованиеРегламентногоЗадания + + + + НаименованиеРегламентногоЗаданияExtendedTooltip + 42 + true + true + + true + + Label + true + true + + Left + + + + НаименованиеРегламентногоЗаданияКонтекстноеМеню + 16 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + + ИдентификаторРегламентногоЗадания + 13 + true + true + + true + + + + ИдентификаторРегламентногоЗадания + + + + ИдентификаторРегламентногоЗаданияExtendedTooltip + 43 + true + true + + true + + Label + true + true + + Left + + + + ИдентификаторРегламентногоЗаданияКонтекстноеМеню + 14 + true + true + + true + + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>3. Регламентное задание</value> + + true + + РегламентноеЗаданиеExtendedTooltip + 41 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + DontUse + + + + СообщенияПользователюИОписаниеИнформацииОбОшибке + 29 + + СообщенияИОписаниеИнформацииОбОшибке + 26 + true + true + + true + + + + СообщенияПользователюИОписаниеИнформацииОбОшибке + + + None + + СообщенияИОписаниеИнформацииОбОшибкеExtendedTooltip + 45 + true + true + + true + + Label + true + true + + Left + + + + СообщенияИОписаниеИнформацииОбОшибкеКонтекстноеМеню + 27 + true + true + + true + + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>4. Сообщения пользователю и описание информации об ошибке</value> + + + СообщенияПользователюИОписаниеИнформацииОбОшибкеExtendedTooltip + 44 + true + true + + true + + Label + true + true + + Left + + + UsualGroup + + Vertical + true + true + true + Auto + DontUse + + + + ФормаКоманднаяПанель + -1 + + Закрыть + 28 + true + true + + true + + false + + ЗакрытьExtendedTooltip + 30 + true + true + + true + + Label + true + true + + Left + + + Form.StandardCommand.Close + true + true + true + UserCmds + + true + true + + true + + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + CustomizeForm + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + 49 + LockOwnerWindow + true + Vertical + true + true + true + UseIfNecessary + true + true + + Объект + 1 + + DataProcessorObject.РегламентныеИФоновыеЗадания + + + true + + + true + +
    true
    +
    + + Идентификатор + + <key>ru</key> + <value>Идентификатор</value> + + 2 + + String + + + + true + + + true + + + + Ключ + + <key>ru</key> + <value>Ключ</value> + + 3 + + String + + + + true + + + true + + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 4 + + String + + + + true + + + true + + + + Начало + + <key>ru</key> + <value>Дата начала</value> + + 5 + + Date + + + + true + + + true + + + + Конец + + <key>ru</key> + <value>Дата окончания</value> + + 6 + + Date + + + + true + + + true + + + + Расположение + + <key>ru</key> + <value>Место выполнения </value> + + 7 + + String + + + + true + + + true + + + + ИдентификаторРегламентногоЗадания + + <key>ru</key> + <value>Идентификатор</value> + + 8 + + String + + + + true + + + true + + + + НаименованиеРегламентногоЗадания + + <key>ru</key> + <value>Наименование регламентного задания</value> + + 9 + + String + + + + true + + + true + + + + ИмяМетода + + <key>ru</key> + <value>Имя метода метаданных</value> + + 10 + + String + + + + true + + + true + + + + Состояние + + <key>ru</key> + <value>Состояние</value> + + 11 + + String + + + + true + + + true + + + + СообщенияПользователюИОписаниеИнформацииОбОшибке + + <key>ru</key> + <value>Сообщения пользователю и описание информации об ошибке</value> + + 12 + + String + + + + true + + + true + + + + Идентификатор + + String + + + true + + + СвойстваФоновогоЗадания + + + + + + + +
    diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\320\275\320\276\320\262\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Help/ru.html" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\320\275\320\276\320\262\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Help/ru.html" new file mode 100644 index 0000000..293630c --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\320\275\320\276\320\262\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Help/ru.html" @@ -0,0 +1,18 @@ + +

    Описание свойств фонового задания.

    +

    Основное

    +
    • Наименование - копия поля Наименование регламентного задания. При применении кнопки Выполнить сейчас на командной панели регламентного задания, наименованию фонового задания присваивается значение "Запуск вручную: <Представление регламентного задания>". +
    • Состояние - возможны значения: "Задание выполнено", "Задание завершено с ошибками", "Задание отменено пользователем", "Задание выполняется". +
    • Дата начала - дата и время начала выполнения фонового задания. +
    • Дата окончания - дата и время окончания выполнения фонового задания (если задание еще выполняется, тогда пустая дата и время: <>). +
    • Место выполнения - имя компьютера сети без домена, на котором выполнялось фоновое задание. Это либо имя сервера, либо имя компьютера пользователя, если регламентные задания обрабатывались в файловой информационной базе.

    Дополнительно

    +
    • Идентификатор - нужен только для продвинутого администратора, знающего внутренний язык 1С. Требуется для исследования нестандартных проблем в работе фоновых заданий, если таковые есть. +
    • Ключ - значение поля Ключ, указанного в регламентном задании (на момент создания фонового задания) или другое, указанное явно, если фоновое задание создано программно, а не планировщиком сервера. +
    • Имя метода метаданных - имя процедуры в конфигурации, которая выполняется или выполнялась в фоновом задании. Обычно соответствует значению поля Имя метода соответствующего регламентного задания.

    Регламентное задание

    +
    • Наименование - выбирается одно из значений полей (по порядку поиска заполненного): +
      • Наименование; +
      • Синоним; +
      • Имя.
    • Идентификатор - идентификатор регламентного задания, соответствующий фоновому заданию.

    Сообщения пользователю и описание информации об ошибке

    +
    • Поле содержит текст сообщений и текст сведений об ошибке, если сообщения и/или ошибки произошли при выполнении фонового задания.

    См. также:

    + \ No newline at end of file diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\320\275\320\276\320\262\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Module.bsl" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\320\275\320\276\320\262\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Module.bsl" new file mode 100644 index 0000000..8b78c4f --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Forms/\320\244\320\276\320\275\320\276\320\262\320\276\320\265\320\227\320\260\320\264\320\260\320\275\320\270\320\265/Module.bsl" @@ -0,0 +1,61 @@ + +#Область ОбработчикиСобытийФормы + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + Если Параметры.СвойстваФоновогоЗадания = Неопределено Тогда + + СвойстваФоновогоЗадания = РегламентныеЗаданияСлужебный + .ПолучитьСвойстваФоновогоЗадания(Параметры.Идентификатор); + + Если СвойстваФоновогоЗадания = Неопределено Тогда + ВызватьИсключение(НСтр("ru = 'Фоновое задание не найдено.'")); + КонецЕсли; + + СообщенияПользователюИОписаниеИнформацииОбОшибке = РегламентныеЗаданияСлужебный + .СообщенияИОписанияОшибокФоновогоЗадания(Параметры.Идентификатор); + + Если ЗначениеЗаполнено(СвойстваФоновогоЗадания.ИдентификаторРегламентногоЗадания) Тогда + + ИдентификаторРегламентногоЗадания + = СвойстваФоновогоЗадания.ИдентификаторРегламентногоЗадания; + + НаименованиеРегламентногоЗадания + = РегламентныеЗаданияСлужебный.ПредставлениеРегламентногоЗадания( + СвойстваФоновогоЗадания.ИдентификаторРегламентногоЗадания); + Иначе + НаименованиеРегламентногоЗадания = РегламентныеЗаданияСлужебный.ТекстНеОпределено(); + ИдентификаторРегламентногоЗадания = РегламентныеЗаданияСлужебный.ТекстНеОпределено(); + КонецЕсли; + Иначе + СвойстваФоновогоЗадания = Параметры.СвойстваФоновогоЗадания; + ЗаполнитьЗначенияСвойств( + ЭтотОбъект, + СвойстваФоновогоЗадания, + "СообщенияПользователюИОписаниеИнформацииОбОшибке, + |ИдентификаторРегламентногоЗадания, + |НаименованиеРегламентногоЗадания"); + КонецЕсли; + + ЗаполнитьЗначенияСвойств( + ЭтотОбъект, + СвойстваФоновогоЗадания, + "Идентификатор, + |Ключ, + |Наименование, + |Начало, + |Конец, + |Расположение, + |Состояние, + |ИмяМетода"); + + СтандартныеПодсистемыСервер.УстановитьОтображениеЗаголовковГрупп(ЭтотОбъект); + +КонецПроцедуры + +#КонецОбласти diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Help/ru.html" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Help/ru.html" new file mode 100644 index 0000000..e9ae33f --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/Help/ru.html" @@ -0,0 +1,72 @@ + +

    Предназначен для администрирования регламентных и фоновых заданий.

    +

    Ряд действий в программе может выполняться автоматически в фоновом режиме, по определенному расписанию. Такие действия называются регламентными заданиями, например, это ежедневная загрузка курсов валют, регулярная рассылка отчетов, отложенное проведение документов и т.п. Регламентные задания облегчают работу в программе, позволяя перенести выполнение рутинных задач в саму программу, и в то же время они снижают человеческий фактор (например, можно забыть загрузить курсы валют в один из перегруженных другими задачами дней).

    +

    Открывается по команде Регламентные и фоновые задания в разделе Администрирование - Поддержка и обслуживание.

    +

    Список предоставляет следующие возможности: 

    +

    Регламентные задания

    +

    В списке можно включить (или отключить) то или иное регламентное задание и поменять расписание.

    +

    В списке выводится:

    +
    •  - флажок в колонке означает, что регламентное задание Включено и выполняется в соответствии с заданным расписанием; +
    • Наименование - полное наименование регламентного задания; +
    • Состояние - информация о выполнении регламентного задания; +
    • Дата окончания - дата и время завершения регламентного задания.

    Обновление списка

    +
    • +
      С помощью кнопки Обновить можно актуализировать информацию в списке регламентных заданий, а также на вкладке Фоновые задания, т.к. списки связаны, при этом будет произведен отбор в соответствии с указанными ранее настройками.

    Настройка расписания

    +
    • +
      Для каждого регламентного задания может быть задано расписание, в соответствии с которым регламентное задание будет автоматически запущено на исполнение. В программе поддерживаются однократные и периодические расписания.
      +
    • +
      Нажмите Настроить расписание.

    Выполнение регламентного задания

    +
    • +
      Для того чтобы начать выполнение регламентного задания сразу же, нажмите Выполнить сейчас
      +
    • +
      В файловом режиме работы программы оно будет выполнено в текущем сеансе.
      +
    • +
      В клиент-серверном режиме работы программы выполнение произойдет в фоновом задании на сервере. При выполнении процедуры в фоновом задании на сервере не меняется дата последнего выполнения, используемая для запуска по расписанию.
      +
    • +
      Одновременное выполнение двух версий одного и того же регламентного задания невозможно. Если запустить то же самое регламентное задание, которое выполняется в данный момент, то программа выведет сообщение о невозможности вторичного запуска регламентного задания.

    Ввод нового регламентного задания

    +
    • +
      В некоторых случаях бывает необходимо задать два разных расписания для одного регламентного задания. Тогда в список можно добавить новое регламентное задание по одному из предопределенных шаблонов, предусмотренных в программе.
      +
    • +
      Нажмите Добавить, выберите из списка шаблон, нажмите кнопку ОК. Заполните необходимые поля.

    Включение регламентного задания

    +
    • +
      С помощью соответствующей команды контекстного меню по правой кнопке мыши можно Включить или Выключить регламентное задание.

    Фоновые задания

    +

    Технически, в соответствии с заданным расписанием для выполнения регламентного задания создается фоновое задание, которое выполняет регламентные действия. Например, если задано ежедневное расписание на 9:15, то каждый день в 9:15 будет запускаться новый сеанс фонового задания. После завершения регламентной операции фоновое задание автоматически завершается.

    +

    В списке выводится:

    +
    • Состояние - выполнение задания; +
    • Наименование - наименование фонового задания; +
    • Начало - дата и время начала выполнения фонового задания; +
    • Окончание - дата и время окончания выполнения фонового задания; +
    • Регламентное задание - наименование регламентного задания.

    Для контроля выполнения регламентных заданий можно воспользоваться отбором фоновых заданий по различным признакам:

    +

    + + + + +
    ОтборОписание
    По состоянию +
    • Позволяет выполнить отбор по состоянию (дополнительно к отбору по периоду и по регламентному заданию): +
      • Выполнено; +
      • Завершено с ошибками; +
      • Отменено; +
      • Выполняется.
    • Включите нужные отборы с помощью флажков.
    По периоду +
    • +
      Позволяет выполнить отбор по периоду (дополнительно к отбору по состоянию и по регламентному заданию):
      +
      • произвольный - можно установить нестандартный период; +
      • все время - отбор по периоду не выполняется; +
      • прошлая ночь - стандартный период 12 часов с 21:00-09:00; +
      • вчера - стандартный период 24 часа с 00:00-23:59 вчерашнего дня; +
      • сегодня - стандартный период 24 часа с 00:00-23:59 сегодняшнего дня.
    По регламентному заданию +
    • Позволяет выполнить отбор по регламентному заданию (дополнительно к отбору по состоянию и по периоду). +
    • Включите флажок Отбирать по регламентному заданию. +
    • Выберите наименование регламентного задания из списка. +
    • Наименование регламентного задания "<не определено>" используется для отбора фоновых заданий,
      запущенных для выполнения прочих (не регламентных) заданий.

    Внимание! Для того чтобы отобрать фоновые задания в соответствии с выбранными настройками, нажмите Обновить.

    +

    Просмотр информации о фоновом задании

    +
    • Для того чтобы просмотреть свойства фонового задания, дважды щелкните мышью по нужной строке. Также можно нажать Открыть.

    Контроль выполнения регламентных заданий

    +
    • Контроль может быть либо простым, либо детальным. +
    • Простой контроль - это анализ колонок Состояние и Дата окончания на вкладке Регламентные задания, а также анализ текста поля Сообщения пользователю и описание информации об ошибке в окне редактирования регламентного задания. +
    • Детальный контроль - это анализ списка фоновых заданий (на вкладке Фоновые задания), которые были созданы и выполнены для выполнения регламентного задания. +
    • Детальный контроль производится отбором фоновых заданий по интересующему регламентному заданию, и анализом реквизитов фоновых заданий. Следует учитывать, что сведения о выполнении регламентного задания получаются выборкой части сведений о выполнении последнего фонового задания. +
    • Отбор фоновых заданий производится только по команде Обновить, поэтому после изменения настройки отбора нужно выполнить эту команду. +
    • Для детального анализа хода выполнения регламентных заданий в клиент-серверном режиме см. отчет Продолжительность работы регламентных заданий из группы отчетов Анализ журнала регистрации, который открывается по соответствующей команде в разделе Администрирование - Поддержка и обслуживание - Отчеты администратора.

    См. также

    + \ No newline at end of file diff --git "a/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217.mdo" "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217.mdo" new file mode 100644 index 0000000..390f16f --- /dev/null +++ "b/TestingTool_3-0/src/DataProcessors/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217/\320\240\320\265\320\263\320\273\320\260\320\274\320\265\320\275\321\202\320\275\321\213\320\265\320\230\320\244\320\276\320\275\320\276\320\262\321\213\320\265\320\227\320\260\320\264\320\260\320\275\320\270\321\217.mdo" @@ -0,0 +1,56 @@ + + + + + + + РегламентныеИФоновыеЗадания + + ru + Регламентные и фоновые задания + + true + DataProcessor.РегламентныеИФоновыеЗадания.Form.РегламентныеИФоновыеЗадания + + + ru + + + + РегламентныеИФоновыеЗадания + + ru + Регламентные и фоновые задания + + PersonalComputer + MobileDevice + + + ФоновоеЗадание + + ru + Фоновое задание + + + + ru + + + PersonalComputer + MobileDevice + + + РегламентноеЗадание + + ru + Регламентное задание + + + + ru + + + PersonalComputer + MobileDevice + + diff --git "a/TestingTool_3-0/src/FunctionalOptions/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272.mdo" "b/TestingTool_3-0/src/FunctionalOptions/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272.mdo" new file mode 100644 index 0000000..0061e34 --- /dev/null +++ "b/TestingTool_3-0/src/FunctionalOptions/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/\320\230\321\201\320\277\320\276\320\273\321\214\320\267\320\276\320\262\320\260\321\202\321\214\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272.mdo" @@ -0,0 +1,12 @@ + + + ИспользоватьПолнотекстовыйПоиск + + ru + Использовать полнотекстовый поиск + + Constant.ИспользоватьПолнотекстовыйПоиск + true + DataProcessor.ПолнотекстовыйПоискВДанных + DataProcessor.ПолнотекстовыйПоискВДанных.Command.ПолнотекстовыйПоиск + diff --git "a/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" "b/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" index 10958bd..cc89c24 100644 --- "a/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" +++ "b/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/Forms/\320\244\320\276\321\200\320\274\320\260\320\227\320\260\320\277\320\270\321\201\320\270/Form.form" @@ -320,11 +320,6 @@ true - - - Запись.Сборка - - СборкаРасширеннаяПодсказка 21 @@ -350,19 +345,10 @@ true - InputField Enter true Left true - - true - true - true - true - true - true - ЭтоЗавершениеЗадания diff --git "a/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271.mdo" "b/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271.mdo" index 2dc0773..02d5e65 100644 --- "a/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271.mdo" +++ "b/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271.mdo" @@ -19,24 +19,6 @@ InDialog InformationRegister.ЛогВыполненныхЗаданий.Form.ФормаЗаписи Managed - - Сборка - - ru - Сборка - - - - CatalogRef.Сборки - - - - - Use - Use - - Index - ЭтоЗавершениеЗадания @@ -182,6 +164,24 @@ true + + Сборка + + ru + Сборка + + + + CatalogRef.Сборки + + + + + Use + Use + + true + Задание diff --git "a/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\224\320\276\320\277\320\230\320\275\321\204\320\276/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\224\320\276\320\277\320\230\320\275\321\204\320\276.mdo" "b/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\224\320\276\320\277\320\230\320\275\321\204\320\276/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\224\320\276\320\277\320\230\320\275\321\204\320\276.mdo" index 0af6184..0e9acbe 100644 --- "a/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\224\320\276\320\277\320\230\320\275\321\204\320\276/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\224\320\276\320\277\320\230\320\275\321\204\320\276.mdo" +++ "b/TestingTool_3-0/src/InformationRegisters/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\224\320\276\320\277\320\230\320\275\321\204\320\276/\320\233\320\276\320\263\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\275\321\213\321\205\320\227\320\260\320\264\320\260\320\275\320\270\320\271\320\224\320\276\320\277\320\230\320\275\321\204\320\276.mdo" @@ -108,10 +108,10 @@ - Index Use Use + true ФормаЗаписи diff --git "a/TestingTool_3-0/src/ScheduledJobs/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/Schedule.schedule" "b/TestingTool_3-0/src/ScheduledJobs/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/Schedule.schedule" new file mode 100644 index 0000000..ffe5359 --- /dev/null +++ "b/TestingTool_3-0/src/ScheduledJobs/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/Schedule.schedule" @@ -0,0 +1,22 @@ + + + Mon + Tue + Wed + Thu + Fri + Sat + Sun + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + diff --git "a/TestingTool_3-0/src/ScheduledJobs/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224.mdo" "b/TestingTool_3-0/src/ScheduledJobs/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224.mdo" new file mode 100644 index 0000000..3437cbc --- /dev/null +++ "b/TestingTool_3-0/src/ScheduledJobs/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224.mdo" @@ -0,0 +1,12 @@ + + + ОбновлениеИндексаППД + + ru + Обновление индекса ППД + + CommonModule.ПолнотекстовыйПоискСервер.ОбновлениеИндексаППДПоРасписанию + true + 3 + 10 + diff --git "a/TestingTool_3-0/src/ScheduledJobs/\320\241\320\273\320\270\321\217\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/Schedule.schedule" "b/TestingTool_3-0/src/ScheduledJobs/\320\241\320\273\320\270\321\217\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/Schedule.schedule" new file mode 100644 index 0000000..ae865e6 --- /dev/null +++ "b/TestingTool_3-0/src/ScheduledJobs/\320\241\320\273\320\270\321\217\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/Schedule.schedule" @@ -0,0 +1,22 @@ + + + Mon + Tue + Wed + Thu + Fri + Sat + Sun + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + diff --git "a/TestingTool_3-0/src/ScheduledJobs/\320\241\320\273\320\270\321\217\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/\320\241\320\273\320\270\321\217\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224.mdo" "b/TestingTool_3-0/src/ScheduledJobs/\320\241\320\273\320\270\321\217\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/\320\241\320\273\320\270\321\217\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224.mdo" new file mode 100644 index 0000000..f892ce1 --- /dev/null +++ "b/TestingTool_3-0/src/ScheduledJobs/\320\241\320\273\320\270\321\217\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224/\320\241\320\273\320\270\321\217\320\275\320\270\320\265\320\230\320\275\320\264\320\265\320\272\321\201\320\260\320\237\320\237\320\224.mdo" @@ -0,0 +1,12 @@ + + + СлияниеИндексаППД + + ru + Слияние индекса ППД + + CommonModule.ПолнотекстовыйПоискСервер.СлияниеИндексаППДПоРасписанию + true + 3 + 10 + diff --git "a/TestingTool_3-0/src/StyleItems/\320\235\320\265\320\264\320\276\321\201\321\202\321\203\320\277\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\246\320\262\320\265\321\202/\320\235\320\265\320\264\320\276\321\201\321\202\321\203\320\277\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\246\320\262\320\265\321\202.mdo" "b/TestingTool_3-0/src/StyleItems/\320\235\320\265\320\264\320\276\321\201\321\202\321\203\320\277\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\246\320\262\320\265\321\202/\320\235\320\265\320\264\320\276\321\201\321\202\321\203\320\277\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\246\320\262\320\265\321\202.mdo" new file mode 100644 index 0000000..a98f49d --- /dev/null +++ "b/TestingTool_3-0/src/StyleItems/\320\235\320\265\320\264\320\276\321\201\321\202\321\203\320\277\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\246\320\262\320\265\321\202/\320\235\320\265\320\264\320\276\321\201\321\202\321\203\320\277\320\275\321\213\320\265\320\224\320\260\320\275\320\275\321\213\320\265\320\246\320\262\320\265\321\202.mdo" @@ -0,0 +1,13 @@ + + + НедоступныеДанныеЦвет + + ru + Недоступные данные + + + + Web.LightGray + + + diff --git "a/TestingTool_3-0/src/StyleItems/\320\237\320\276\321\217\321\201\320\275\321\217\321\216\321\211\320\270\320\271\320\242\320\265\320\272\321\201\321\202/\320\237\320\276\321\217\321\201\320\275\321\217\321\216\321\211\320\270\320\271\320\242\320\265\320\272\321\201\321\202.mdo" "b/TestingTool_3-0/src/StyleItems/\320\237\320\276\321\217\321\201\320\275\321\217\321\216\321\211\320\270\320\271\320\242\320\265\320\272\321\201\321\202/\320\237\320\276\321\217\321\201\320\275\321\217\321\216\321\211\320\270\320\271\320\242\320\265\320\272\321\201\321\202.mdo" new file mode 100644 index 0000000..1877724 --- /dev/null +++ "b/TestingTool_3-0/src/StyleItems/\320\237\320\276\321\217\321\201\320\275\321\217\321\216\321\211\320\270\320\271\320\242\320\265\320\272\321\201\321\202/\320\237\320\276\321\217\321\201\320\275\321\217\321\216\321\211\320\270\320\271\320\242\320\265\320\272\321\201\321\202.mdo" @@ -0,0 +1,16 @@ + + + ПоясняющийТекст + + ru + Поясняющий текст + + Оформление справочного текста в форме + + + 128 + 122 + 89 + + + diff --git "a/TestingTool_3-0/src/StyleItems/\320\246\320\262\320\265\321\202\320\244\320\276\320\275\320\260\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217/\320\246\320\262\320\265\321\202\320\244\320\276\320\275\320\260\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217.mdo" "b/TestingTool_3-0/src/StyleItems/\320\246\320\262\320\265\321\202\320\244\320\276\320\275\320\260\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217/\320\246\320\262\320\265\321\202\320\244\320\276\320\275\320\260\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217.mdo" new file mode 100644 index 0000000..44dc220 --- /dev/null +++ "b/TestingTool_3-0/src/StyleItems/\320\246\320\262\320\265\321\202\320\244\320\276\320\275\320\260\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217/\320\246\320\262\320\265\321\202\320\244\320\276\320\275\320\260\320\237\321\200\320\265\320\264\321\203\320\277\321\200\320\265\320\266\320\264\320\265\320\275\320\270\321\217.mdo" @@ -0,0 +1,15 @@ + + + ЦветФонаПредупреждения + + ru + Цвет фона предупреждения + + + + 251 + 212 + 212 + + + diff --git "a/TestingTool_3-0/src/Subsystems/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandInterface.cmi" "b/TestingTool_3-0/src/Subsystems/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandInterface.cmi" index f4fd0f1..11e3de3 100644 --- "a/TestingTool_3-0/src/Subsystems/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandInterface.cmi" +++ "b/TestingTool_3-0/src/Subsystems/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandInterface.cmi" @@ -1,67 +1,78 @@ - - - - - InformationRegister.НастройкаРабочегоМестаНачальнойСтранцы.StandardCommand.OpenList - - true - - - - InformationRegister.НастройкиРаботыПользователяНаРабочемМесте.StandardCommand.OpenList - - true - - - - CommonCommand.ОбщиеНастройкиСистемы - - true - - - - Catalog.РабочиеМеста.StandardCommand.OpenList - - true - - - - - - NavigationPanelImportant - InformationRegister.НастройкаРабочегоМестаНачальнойСтранцы.StandardCommand.OpenList - InformationRegister.НастройкиРаботыПользователяНаРабочемМесте.StandardCommand.OpenList - - - NavigationPanelOrdinary - CommonCommand.ОбщиеНастройкиСистемы - - - NavigationPanelSeeAlso - Catalog.РабочиеМеста.StandardCommand.OpenList - - - - - NavigationPanelImportant - CommonCommand.УправлениеОбновлениемПлагинов - InformationRegister.НастройкаРабочегоМестаНачальнойСтранцы.StandardCommand.OpenList - InformationRegister.НастройкиРаботыПользователяНаРабочемМесте.StandardCommand.OpenList - - - NavigationPanelOrdinary - CommonCommand.ОбщиеНастройкиСистемы - Catalog.ГруппыДоступа.StandardCommand.OpenList - Catalog.ДополнительныеОтчетыИОбработки.StandardCommand.OpenList - Catalog.ИдентификаторыОбъектовМетаданных.StandardCommand.OpenList - InformationRegister.ИсточникиПлагинов.StandardCommand.OpenList - InformationRegister.НастройкаСозданияЗаданий.StandardCommand.OpenList - Catalog.Пользователи.StandardCommand.OpenList - Catalog.ПрофилиГруппДоступа.StandardCommand.OpenList - - - NavigationPanelSeeAlso - Catalog.РабочиеМеста.StandardCommand.OpenList - - - + + + + + InformationRegister.НастройкаРабочегоМестаНачальнойСтранцы.StandardCommand.OpenList + + true + + + + InformationRegister.НастройкиРаботыПользователяНаРабочемМесте.StandardCommand.OpenList + + true + + + + CommonCommand.ОбщиеНастройкиСистемы + + true + + + + Catalog.РабочиеМеста.StandardCommand.OpenList + + true + + + + + + NavigationPanelImportant + InformationRegister.НастройкаРабочегоМестаНачальнойСтранцы.StandardCommand.OpenList + InformationRegister.НастройкиРаботыПользователяНаРабочемМесте.StandardCommand.OpenList + + + NavigationPanelOrdinary + CommonCommand.ОбщиеНастройкиСистемы + + + NavigationPanelSeeAlso + Catalog.РабочиеМеста.StandardCommand.OpenList + + + + + NavigationPanelImportant + CommonCommand.УправлениеОбновлениемПлагинов + InformationRegister.НастройкаРабочегоМестаНачальнойСтранцы.StandardCommand.OpenList + InformationRegister.НастройкиРаботыПользователяНаРабочемМесте.StandardCommand.OpenList + + + NavigationPanelOrdinary + CommonCommand.ОбщиеНастройкиСистемы + Catalog.ГруппыДоступа.StandardCommand.OpenList + Catalog.ДополнительныеОтчетыИОбработки.StandardCommand.OpenList + Catalog.ИдентификаторыОбъектовМетаданных.StandardCommand.OpenList + InformationRegister.ИсточникиПлагинов.StandardCommand.OpenList + InformationRegister.НастройкаСозданияЗаданий.StandardCommand.OpenList + Catalog.Пользователи.StandardCommand.OpenList + Catalog.ПрофилиГруппДоступа.StandardCommand.OpenList + + + NavigationPanelSeeAlso + Catalog.РабочиеМеста.StandardCommand.OpenList + + + ActionsPanelTools + CommonCommand.ДополнительныеОбработкиАдминистрирование + CommonCommand.ДополнительныеОтчетыАдминистрирование + DataProcessor.ПолнотекстовыйПоискВДанных.Command.ПолнотекстовыйПоиск + DataProcessor.РегламентныеИФоновыеЗадания.StandardCommand.Open + DataProcessor.УдалениеДанных.StandardCommand.Open + DataProcessor.УправлениеСпискомПроцессовОСWindows.StandardCommand.Open + DataProcessor.УстановкаКомпактногоИнтерфейсаТакси.StandardCommand.Open + DataProcessor.КонсольЗаданий.StandardCommand.Open + + + diff --git "a/TestingTool_3-0/src/Subsystems/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" "b/TestingTool_3-0/src/Subsystems/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" index f32aeb1..eefb470 100644 --- "a/TestingTool_3-0/src/Subsystems/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" +++ "b/TestingTool_3-0/src/Subsystems/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/\320\220\320\264\320\274\320\270\320\275\320\270\321\201\321\202\321\200\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265.mdo" @@ -1,36 +1,38 @@ - - - Администрирование - - ru - Администрирование - - - true - true - - CommonPicture.ПодсистемаАдминистрирование - - Catalog.Пользователи - InformationRegister.НастройкиРаботыПользователяНаРабочемМесте - Catalog.РабочиеМеста - DataProcessor.УправлениеСпискомПроцессовОСWindows - DataProcessor.КонсольЗаданий - Catalog.ДополнительныеОтчетыИОбработки - CommonCommand.ДополнительныеОбработкиАдминистрирование - Catalog.ИдентификаторыОбъектовМетаданных - DataProcessor.УстановкаКомпактногоИнтерфейсаТакси - CommonCommand.ДополнительныеОтчетыАдминистрирование - InformationRegister.НастройкаРабочегоМестаНачальнойСтранцы - InformationRegister.НастройкаСозданияЗаданий - CommonCommand.ОбщиеНастройкиСистемы - Catalog.ГруппыДоступа - Catalog.ПрофилиГруппДоступа - InformationRegister.ИсточникиПлагинов - CommonCommand.УправлениеОбновлениемПлагинов - InformationRegister.ПеременныеЗаданий - InformationRegister.ПользовательскиеПеременныеЗаданий - InformationRegister.НовостиПользователей - Catalog.Новости - DataProcessor.УдалениеДанных - + + + Администрирование + + ru + Администрирование + + + true + true + + CommonPicture.ПодсистемаАдминистрирование + + Catalog.Пользователи + InformationRegister.НастройкиРаботыПользователяНаРабочемМесте + Catalog.РабочиеМеста + DataProcessor.УправлениеСпискомПроцессовОСWindows + DataProcessor.КонсольЗаданий + Catalog.ДополнительныеОтчетыИОбработки + CommonCommand.ДополнительныеОбработкиАдминистрирование + Catalog.ИдентификаторыОбъектовМетаданных + DataProcessor.УстановкаКомпактногоИнтерфейсаТакси + CommonCommand.ДополнительныеОтчетыАдминистрирование + InformationRegister.НастройкаРабочегоМестаНачальнойСтранцы + InformationRegister.НастройкаСозданияЗаданий + CommonCommand.ОбщиеНастройкиСистемы + Catalog.ГруппыДоступа + Catalog.ПрофилиГруппДоступа + InformationRegister.ИсточникиПлагинов + CommonCommand.УправлениеОбновлениемПлагинов + InformationRegister.ПеременныеЗаданий + InformationRegister.ПользовательскиеПеременныеЗаданий + InformationRegister.НовостиПользователей + Catalog.Новости + DataProcessor.УдалениеДанных + DataProcessor.ПолнотекстовыйПоискВДанных + DataProcessor.РегламентныеИФоновыеЗадания + diff --git "a/TestingTool_3-0/src/Subsystems/\320\237\320\273\320\260\320\275\320\270\321\200\320\276\320\262\321\211\320\270\320\272/CommandInterface.cmi" "b/TestingTool_3-0/src/Subsystems/\320\237\320\273\320\260\320\275\320\270\321\200\320\276\320\262\321\211\320\270\320\272/CommandInterface.cmi" index e528103..465adf2 100644 --- "a/TestingTool_3-0/src/Subsystems/\320\237\320\273\320\260\320\275\320\270\321\200\320\276\320\262\321\211\320\270\320\272/CommandInterface.cmi" +++ "b/TestingTool_3-0/src/Subsystems/\320\237\320\273\320\260\320\275\320\270\321\200\320\276\320\262\321\211\320\270\320\272/CommandInterface.cmi" @@ -49,6 +49,10 @@ InformationRegister.ЛогВыполненныхЗаданийДопИнфо.StandardCommand.OpenList InformationRegister.СоставЗаданийПулл.StandardCommand.OpenList + + ActionsPanelTools + InformationRegister.ЛогВыполненныхЗаданий.Command.ОчиститьВесьРегистрЛогаВыполненныхЗаданий + @@ -60,10 +64,15 @@ NavigationPanelSeeAlso - InformationRegister.ЛогВыполненныхЗаданий.Command.ОчиститьВесьРегистрЛогаВыполненныхЗаданий InformationRegister.СоставЗаданийПулл.StandardCommand.OpenList InformationRegister.ЛогВыполненныхЗаданий.StandardCommand.OpenList InformationRegister.ЛогВыполненныхЗаданийДопИнфо.StandardCommand.OpenList + + ActionsPanelTools + CommonCommand.ДополнительныеОбработкиПланировщик + CommonCommand.ДополнительныеОтчетыПланировщик + InformationRegister.ЛогВыполненныхЗаданий.Command.ОчиститьВесьРегистрЛогаВыполненныхЗаданий + diff --git "a/TestingTool_3-0/src/Subsystems/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/Subsystems/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/Help/ru.html" "b/TestingTool_3-0/src/Subsystems/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/Subsystems/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/Help/ru.html" new file mode 100644 index 0000000..64562a8 --- /dev/null +++ "b/TestingTool_3-0/src/Subsystems/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/Subsystems/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/Help/ru.html" @@ -0,0 +1,7 @@ + +

    Конфигурация позволяет производить полнотекстовый поиск в любых объектах конфигурации, отыскивая заданную строку во всех реквизитах объектов. При наличии присоединенных файлов, содержащих текстовую информацию, поиск осуществляется также и по ним.

    +

    Полнотекстовый поиск предоставляет такие возможности как: поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ); поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами); нечеткий поиск (буквы в найденных словах могут отличаться).

    +

    Для включения и настройки полнотекстового поиска необходимо воспользоваться формой настройки параметров системы в разделе Настройка и администрирование.

    +

    См. также

    + \ No newline at end of file diff --git "a/TestingTool_3-0/src/Subsystems/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/Subsystems/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272.mdo" "b/TestingTool_3-0/src/Subsystems/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/Subsystems/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272.mdo" new file mode 100644 index 0000000..2719c8d --- /dev/null +++ "b/TestingTool_3-0/src/Subsystems/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/Subsystems/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272/\320\237\320\276\320\273\320\275\320\276\321\202\320\265\320\272\321\201\321\202\320\276\320\262\321\213\320\271\320\237\320\276\320\270\321\201\320\272.mdo" @@ -0,0 +1,23 @@ + + + ПолнотекстовыйПоиск + + ru + Полнотекстовый поиск + + + + ru + + + CommonModule.ПолнотекстовыйПоискСервер + ScheduledJob.ОбновлениеИндексаППД + ScheduledJob.СлияниеИндексаППД + DataProcessor.ПолнотекстовыйПоискВДанных + Constant.ИспользоватьПолнотекстовыйПоиск + FunctionalOption.ИспользоватьПолнотекстовыйПоиск + CommonModule.ПолнотекстовыйПоискСерверПереопределяемый + CommonForm.ФормаПоиска + CommonModule.ПолнотекстовыйПоискКлиент + Subsystem.СтандартныеПодсистемы + diff --git "a/TestingTool_3-0/src/Subsystems/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213.mdo" "b/TestingTool_3-0/src/Subsystems/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213.mdo" new file mode 100644 index 0000000..555ca5a --- /dev/null +++ "b/TestingTool_3-0/src/Subsystems/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213/\320\241\321\202\320\260\320\275\320\264\320\260\321\200\321\202\320\275\321\213\320\265\320\237\320\276\320\264\321\201\320\270\321\201\321\202\320\265\320\274\321\213.mdo" @@ -0,0 +1,9 @@ + + + СтандартныеПодсистемы + + ru + Стандартные подсистемы + + ПолнотекстовыйПоиск + diff --git "a/TestingTool_3-0/src/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandInterface.cmi" "b/TestingTool_3-0/src/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandInterface.cmi" index c64f65e..b80d1c7 100644 --- "a/TestingTool_3-0/src/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandInterface.cmi" +++ "b/TestingTool_3-0/src/Subsystems/\320\242\320\265\321\201\321\202\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265/CommandInterface.cmi" @@ -55,14 +55,10 @@ Catalog.ПланыТестирования.StandardCommand.OpenList - NavigationPanelSeeAlso - InformationRegister.СвязиТестовКонфигураций.StandardCommand.OpenList - InformationRegister.СвзяиТестовОбъектовКонфигураций.StandardCommand.OpenList - InformationRegister.ПротоколыВыполненияТестов.StandardCommand.OpenList - InformationRegister.ПротоколыВыполненияТестовыхСлучаев.StandardCommand.OpenList - InformationRegister.ПротоколыВыполненияШаговТестов.StandardCommand.OpenList - InformationRegister.ПриложенияПротоколовВыполненияТестов.StandardCommand.OpenList + ActionsPanelTools InformationRegister.ПротоколыВыполненияШаговТестов.Command.ОчиститьВесьРегистрПротоколыВыполненияШаговСценария + InformationRegister.ПриложенияПротоколовВыполненияТестов.Command.ОчиститьВесьРегистрПриложений + InformationRegister.ПротоколыВыполненияТестовыхСлучаев.Command.ОчиститьВесьРегистрПротоколыВыполненияТестовыхСценария @@ -82,13 +78,9 @@ Catalog.Проекты.StandardCommand.OpenList - NavigationPanelSeeAlso - InformationRegister.СвязиТестовКонфигураций.StandardCommand.OpenList - InformationRegister.СвзяиТестовОбъектовКонфигураций.StandardCommand.OpenList - InformationRegister.ПротоколыВыполненияТестов.StandardCommand.OpenList - InformationRegister.ПротоколыВыполненияТестовыхСлучаев.StandardCommand.OpenList - InformationRegister.ПротоколыВыполненияШаговТестов.StandardCommand.OpenList - InformationRegister.ПриложенияПротоколовВыполненияТестов.StandardCommand.OpenList + ActionsPanelTools + CommonCommand.ДополнительныеОбработкиТестирование + CommonCommand.ДополнительныеОтчетыТестирование InformationRegister.ПротоколыВыполненияШаговТестов.Command.ОчиститьВесьРегистрПротоколыВыполненияШаговСценария InformationRegister.ПротоколыВыполненияТестовыхСлучаев.Command.ОчиститьВесьРегистрПротоколыВыполненияТестовыхСценария InformationRegister.ПриложенияПротоколовВыполненияТестов.Command.ОчиститьВесьРегистрПриложений diff --git "a/UI-ScenarioTestManager/bin/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\321\206\320\265\320\275\320\260\321\200\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" "b/UI-ScenarioTestManager/bin/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\321\206\320\265\320\275\320\260\321\200\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" index c9dbf6d..6c373ca 100644 Binary files "a/UI-ScenarioTestManager/bin/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\321\206\320\265\320\275\320\260\321\200\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" and "b/UI-ScenarioTestManager/bin/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\321\206\320\265\320\275\320\260\321\200\320\275\320\276\320\263\320\276\320\242\320\265\321\201\321\202\320\260.epf" differ