diff --git a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form index 5f18d9707..2c552e2f4 100644 --- a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form +++ b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Form.form @@ -1124,6 +1124,10 @@ Left true + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии diff --git a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Module.bsl b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Module.bsl index 33afebffe..0c38fd32c 100644 --- a/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Module.bsl +++ b/SSL/src/BusinessProcesses/Задание/Forms/ФормаБизнесПроцесса/Module.bsl @@ -2,6 +2,8 @@ Перем ОткрытаФормаВыбораИсполнителя; // признак того, что исполнитель выбирается из формы, а не быстрым вводом &НаКлиенте Перем ОткрытаФормаВыбораПроверяющего; // признак того, что проверяющий выбирается из формы, а не быстрым вводом +&НаКлиенте +Перем КонтекстВыбора; //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -21,14 +23,14 @@ Элементы.Дата.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); Элементы.Предмет.Гиперссылка = Объект.Предмет <> Неопределено И НЕ Объект.Предмет.Пустая(); - ПредметСтрокой = ОбщегоНазначения.ПредметСтрокой(Объект.Предмет); + ПредметСтрокой = ОбщегоНазначения.ПредметСтрокой(Объект.Предмет); Элементы.ГруппаСостояние.Видимость = Объект.Завершен; Если Объект.Завершен Тогда ДатаЗавершенияСтрокой = ?(ИспользоватьДатуИВремяВСрокахЗадач, Формат(Объект.ДатаЗавершения, "ДЛФ=DT"), Формат(Объект.ДатаЗавершения, "ДЛФ=D")); ТекстСостояния = ?(Объект.Выполнено, НСтр("ru = 'Задание выполнено %1.'"), - НСтр("ru = 'Задание отменено %1.'")); + НСтр("ru = 'Задание отменено %1.'")); Элементы.ДекорацияТекст.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСостояния, ДатаЗавершенияСтрокой); @@ -38,7 +40,7 @@ Продолжить; КонецЕсли; Элемент.ТолькоПросмотр = Истина; - КонецЦикла; + КонецЦикла; КонецЕсли; @@ -51,7 +53,7 @@ Если Не ПолучитьФункциональнуюОпцию("ИспользоватьПодчиненныеБизнесПроцессы") Тогда Элементы.ГлавнаяЗадача.Видимость = Ложь; - КонецЕсли; + КонецЕсли; БизнесПроцессыИЗадачиСервер.ПриОпределенииИспользованияВнешнихЗадачИБизнесПроцессов(ИспользоватьВнешниеЗадачиИБизнесПроцессы); @@ -66,6 +68,32 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборРолиИсполнителя") Тогда + + Если КонтекстВыбора = "ИсполнительПриИзменении" Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Объект.Исполнитель = ВыбранноеЗначение.РольИсполнителя; + КонецЕсли; + + УстановитьДоступностьПроверяющего(ЭтаФорма); + + + ИначеЕсли КонтекстВыбора = "ПроверяющийПриИзменении" Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Объект.Проверяющий = ВыбранноеЗначение.РольИсполнителя; + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) @@ -134,19 +162,21 @@ Если ТипЗнч(Объект.Исполнитель) = Тип("СправочникСсылка.РолиИсполнителей") И ЗначениеЗаполнено(Объект.Исполнитель) Тогда Если ИспользуетсяСОбъектамиАдресации(Объект.Исполнитель) Тогда - Результат = ОткрытьФормуМодально("ОбщаяФорма.ВыборРолиИсполнителя", - Новый Структура("РольИсполнителя, ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации", - Объект.Исполнитель, - ОсновнойОбъектАдресации, - ДополнительныйОбъектАдресации), - ЭтаФорма); - Если ТипЗнч(Результат) = Тип("Структура") Тогда - Объект.Исполнитель = Результат.РольИсполнителя; - КонецЕсли; - КонецЕсли; + КонтекстВыбора = "ИсполнительПриИзменении"; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РольИсполнителя", Объект.Исполнитель); + ПараметрыФормы.Вставить("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации); + ПараметрыФормы.Вставить("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации); + + ОткрытьФорму("ОбщаяФорма.ВыборРолиИсполнителя", ПараметрыФормы, ЭтаФорма); + + Возврат; + + КонецЕсли; - КонецЕсли; + КонецЕсли; УстановитьДоступностьПроверяющего(ЭтаФорма); @@ -160,7 +190,7 @@ СтандартнаяОбработка = Ложь; Объект.Исполнитель = ВыбранноеЗначение.РольИсполнителя; Модифицированность = Истина; - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -170,7 +200,7 @@ Если ЗначениеЗаполнено(Текст) Тогда СтандартнаяОбработка = Ложь; ДанныеВыбора = БизнесПроцессыИЗадачиВызовСервера.СформироватьДанныеВыбораИсполнителя(Текст); - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -202,22 +232,22 @@ ОсновнойОбъектАдресации = Неопределено; ДополнительныйОбъектАдресации = Неопределено; - Если ТипЗнч(Объект.Проверяющий) = Тип("СправочникСсылка.РолиИсполнителей") И ЗначениеЗаполнено(Объект.Проверяющий) Тогда + Если ТипЗнч(Объект.Проверяющий) = Тип("СправочникСсылка.РолиИсполнителей") И ЗначениеЗаполнено(Объект.Проверяющий) Тогда - Если ИспользуетсяСОбъектамиАдресации(Объект.Проверяющий) Тогда - Результат = ОткрытьФормуМодально("ОбщаяФорма.ВыборРолиИсполнителя", - Новый Структура("РольИсполнителя, ОсновнойОбъектАдресации, ДополнительныйОбъектАдресации", - Объект.Проверяющий, - ОсновнойОбъектАдресации, - ДополнительныйОбъектАдресации), - ЭтаФорма); + Если ИспользуетсяСОбъектамиАдресации(Объект.Проверяющий) Тогда - Если ТипЗнч(Результат) = Тип("Структура") Тогда - Объект.Проверяющий = Результат.РольИсполнителя; - КонецЕсли; - КонецЕсли; + КонтекстВыбора = "ПроверяющийПриИзменении"; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РольИсполнителя", Объект.Проверяющий); + ПараметрыФормы.Вставить("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации); + ПараметрыФормы.Вставить("ДополнительныйОбъектАдресации", ДополнительныйОбъектАдресации); + + ОткрытьФорму("ОбщаяФорма.ВыборРолиИсполнителя", ПараметрыФормы, ЭтаФорма); + + КонецЕсли; - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -241,7 +271,7 @@ Если ЗначениеЗаполнено(Текст) Тогда СтандартнаяОбработка = Ложь; ДанныеВыбора = БизнесПроцессыИЗадачиВызовСервера.СформироватьДанныеВыбораИсполнителя(Текст); - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -308,7 +338,7 @@ Иначе Элементы.ФормаОстановить.Доступность = Истина; Элементы.ФормаПродолжить.Доступность = Ложь; - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -333,7 +363,7 @@ Форма.Элементы.ГруппаПроверка.Доступность = Ложь; Иначе Форма.Элементы.ГруппаПроверка.Доступность = Истина; - КонецЕсли; + КонецЕсли; Иначе Форма.Элементы.ГруппаПроверка.Доступность = Истина; КонецЕсли; @@ -350,4 +380,4 @@ &НаСервереБезКонтекста Функция ВнешняяРольИсполнителя(Исполнитель) Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Исполнитель, "ВнешняяРоль"); -КонецФункции \ No newline at end of file +КонецФункции diff --git a/SSL/src/BusinessProcesses/Задание/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/BusinessProcesses/Задание/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index dc28febc7..19e2f0520 100644 --- a/SSL/src/BusinessProcesses/Задание/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/BusinessProcesses/Задание/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ - - ЗадачаИсточник - Equal - Задача.ЗадачаИсполнителя.ПустаяСсылка - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/BusinessProcesses/Задание/Forms/ФормаСписка/Module.bsl b/SSL/src/BusinessProcesses/Задание/Forms/ФормаСписка/Module.bsl index 41dccfb8a..c148c5914 100644 --- a/SSL/src/BusinessProcesses/Задание/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/BusinessProcesses/Задание/Forms/ФормаСписка/Module.bsl @@ -9,6 +9,12 @@ КонецЕсли; ПоАвтору = Пользователи.ТекущийПользователь(); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ЗадачаИсточник", Задачи.ЗадачаИсполнителя.ПустаяСсылка(), + ВидСравненияКомпоновкиДанных.Равно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + УстановитьОтбор(); КонецПроцедуры @@ -76,40 +82,40 @@ ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору); ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю); ПараметрыОтбора.Вставить("ПоПроверяющему", ПоПроверяющему); - УстановитьОтборСписка(ПараметрыОтбора); -КонецПроцедуры + УстановитьОтборСписка(ПараметрыОтбора); +КонецПроцедуры &НаСервере Процедура УстановитьОтборСписка(ПараметрыОтбора) - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Завершен"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Завершен"); Если НЕ ПараметрыОтбора["ПоказыватьЗавершенныеЗадания"] Тогда ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Завершен", Ложь); КонецЕсли; - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Остановлен"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Остановлен"); Если НЕ ПараметрыОтбора["ПоказыватьОстановленные"] Тогда ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Остановлен", Ложь); КонецЕсли; Если ПараметрыОтбора["ПоАвтору"].Пустая() Тогда - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Автор"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Автор"); Иначе ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Автор", ПараметрыОтбора["ПоАвтору"]); КонецЕсли; Если ПараметрыОтбора["ПоИсполнителю"].Пустая() Тогда - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Исполнитель"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Исполнитель"); Иначе ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Исполнитель", ПараметрыОтбора["ПоИсполнителю"]); КонецЕсли; Если ПараметрыОтбора["ПоПроверяющему"].Пустая() Тогда - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Проверяющий"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Проверяющий"); Иначе ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Проверяющий", ПараметрыОтбора["ПоПроверяющему"]); diff --git a/SSL/src/BusinessProcesses/Задание/Help/ru.html b/SSL/src/BusinessProcesses/Задание/Help/ru.html index cb3d13f54..9dc8d1ef9 100644 --- a/SSL/src/BusinessProcesses/Задание/Help/ru.html +++ b/SSL/src/BusinessProcesses/Задание/Help/ru.html @@ -1,3 +1,3 @@ - +

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

См. также: Общая информация о бизнес-процессах.

\ No newline at end of file diff --git a/SSL/src/Catalogs/Валюты/Forms/ПодборВалютИзКлассификатора/Help/ru.html b/SSL/src/Catalogs/Валюты/Forms/ПодборВалютИзКлассификатора/Help/ru.html index 1cdaf8f45..1162be1b4 100644 --- a/SSL/src/Catalogs/Валюты/Forms/ПодборВалютИзКлассификатора/Help/ru.html +++ b/SSL/src/Catalogs/Валюты/Forms/ПодборВалютИзКлассификатора/Help/ru.html @@ -1,4 +1,4 @@ - +

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

Реквизиты:

diff --git a/SSL/src/Catalogs/Валюты/Forms/ПодборВалютИзКлассификатора/Module.bsl b/SSL/src/Catalogs/Валюты/Forms/ПодборВалютИзКлассификатора/Module.bsl index 6e0229f6a..43186224d 100644 --- a/SSL/src/Catalogs/Валюты/Forms/ПодборВалютИзКлассификатора/Module.bsl +++ b/SSL/src/Catalogs/Валюты/Forms/ПодборВалютИзКлассификатора/Module.bsl @@ -111,8 +111,7 @@ ПоказатьОповещениеПользователя( НСтр("ru = 'Валюты добавлены.'"), , ?(ОбщегоНазначенияПовтИсп.РазделениеВключено() И ЕстьКурсы, НСтр("ru = 'Курсы будут загружены автоматически через непродолжительное время.'"), ""), - БиблиотекаКартинок.Информация32 - ); + БиблиотекаКартинок.Информация32); Закрыть(); КонецПроцедуры diff --git a/SSL/src/Catalogs/Валюты/Forms/ФормаВыбора/Module.bsl b/SSL/src/Catalogs/Валюты/Forms/ФормаВыбора/Module.bsl index f1185d8ec..dd42fd93a 100644 --- a/SSL/src/Catalogs/Валюты/Forms/ФормаВыбора/Module.bsl +++ b/SSL/src/Catalogs/Валюты/Forms/ФормаВыбора/Module.bsl @@ -11,8 +11,7 @@ ДатаКурса = НачалоДня(ТекущаяДатаСеанса()); Элементы.Курс.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Курс на %1'"), - Формат(ДатаКурса, "ДЛФ=DD") - ); + Формат(ДатаКурса, "ДЛФ=DD")); Элементы.Курс.Подсказка = Элементы.Курс.Заголовок; Список.Параметры.УстановитьЗначениеПараметра("КонецПериода", ДатаКурса); diff --git a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Help/ru.html index 99969a27e..3d3f5b0a4 100644 --- a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ - +

Справочник «Валюты» предназначен для хранения списка используемых валют и их курсов.

Реквизиты:

diff --git a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Module.bsl index a04d351f2..065b79db8 100644 --- a/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/Валюты/Forms/ФормаЭлемента/Module.bsl @@ -55,8 +55,7 @@ ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Необходимо указать основную валюту'"), , "Объект.ОсновнаяВалюта", , - Отказ - ); + Отказ); КонецЕсли; Иначе Объект.ОсновнаяВалюта = Неопределено; @@ -285,9 +284,6 @@ &НаКлиентеНаСервереБезКонтекста Процедура УстановитьСвойстваЭлементовГруппыЗависимойВалюты(Форма) - // Управляет видимостью реквизитов зависимости от базовой валюты: - // ссылки на базовую валюту и коэфициента - Объект = Форма.Объект; Элементы = Форма.Элементы; diff --git a/SSL/src/Catalogs/Валюты/Help/ru.html b/SSL/src/Catalogs/Валюты/Help/ru.html index c052e48de..4110f6741 100644 --- a/SSL/src/Catalogs/Валюты/Help/ru.html +++ b/SSL/src/Catalogs/Валюты/Help/ru.html @@ -1,4 +1,4 @@ - +

Справочник «Валюты» предназначен для хранения списка используемых валют и их курсов.

Реквизиты:

diff --git a/SSL/src/Catalogs/Валюты/ObjectModule.bsl b/SSL/src/Catalogs/Валюты/ObjectModule.bsl index d2775b8ee..b8757f60e 100644 --- a/SSL/src/Catalogs/Валюты/ObjectModule.bsl +++ b/SSL/src/Catalogs/Валюты/ObjectModule.bsl @@ -7,15 +7,13 @@ Если ЗагружаетсяИзИнтернета И ЗначениеЗаполнено(ОсновнаяВалюта) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( - НСтр("ru = 'Зависимая валюта не может быть загружена с сайта РБК'") - ); + НСтр("ru = 'Зависимая валюта не может быть загружена с сайта РБК'")); Отказ = Истина; КонецЕсли; Если ЗначениеЗаполнено(ОсновнаяВалюта.ОсновнаяВалюта) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( - НСтр("ru = 'Основная валюта не может быть зависимой.'") - ); + НСтр("ru = 'Основная валюта не может быть зависимой.'")); Отказ = Истина; КонецЕсли; @@ -29,8 +27,7 @@ И РаботаСКурсамиВалют.ПолучитьСписокЗависимыхВалют(Ссылка).Количество() > 0 И ЗначениеЗаполнено(ОсновнаяВалюта) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( - НСтр("ru = 'Валюта не может быть подчиненной, так как она является основной для других валют.'") - ); + НСтр("ru = 'Валюта не может быть подчиненной, так как она является основной для других валют.'")); Отказ = Истина; КонецЕсли; @@ -68,4 +65,4 @@ КонецПроцедуры -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/Catalogs/Валюты/Templates/ОбщероссийскийКлассификаторВалют/Template.txt b/SSL/src/Catalogs/Валюты/Templates/ОбщероссийскийКлассификаторВалют/Template.txt index da504e588..95bb19dbc 100644 --- a/SSL/src/Catalogs/Валюты/Templates/ОбщероссийскийКлассификаторВалют/Template.txt +++ b/SSL/src/Catalogs/Валюты/Templates/ОбщероссийскийКлассификаторВалют/Template.txt @@ -107,6 +107,7 @@ + @@ -133,6 +134,7 @@ + diff --git a/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаВыбора/Module.bsl b/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаВыбора/Module.bsl index ec37d84a7..e633362d9 100644 --- a/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаВыбора/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтветовАнкет/Forms/ФормаВыбора/Module.bsl @@ -9,6 +9,4 @@ Возврат; КонецЕсли; - Анкетирование.УстановитьПараметрыОтбораФормуВыбора(Параметры,Список.Отбор); - КонецПроцедуры diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиПользователей/CommandModule.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиПользователей/CommandModule.bsl index c7b73ac15..6551ce333 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиПользователей/CommandModule.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиПользователей/CommandModule.bsl @@ -12,9 +12,7 @@ Предупреждение( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Пользовательские настройки выбранных вариантов отчетов (%1 шт) не заданы или уже сброшены.'"), - Формат(КоличествоВариантов, "ЧГ=") - ) - ); + Формат(КоличествоВариантов, "ЧГ="))); Возврат; КонецЕсли; @@ -24,8 +22,7 @@ | |Нажмите ""Продолжить"" что бы сбросить пользовательские настройки |быстрого доступа и видимости выбранных вариантов отчетов (%1 шт).'"), - Формат(КоличествоВариантов, "ЧГ=") - ); + Формат(КоличествоВариантов, "ЧГ=")); Кнопки = Новый СписокЗначений; Кнопки.Добавить(1, НСтр("ru = 'Продолжить'")); @@ -41,8 +38,7 @@ ПоказатьОповещениеПользователя( НСтр("ru = 'Сброшены пользовательские настройки варианта отчета'"), ПолучитьНавигационнуюСсылку(МассивВариантов[0]), - Строка(МассивВариантов[0]) - ); + Строка(МассивВариантов[0])); Иначе ПоказатьОповещениеПользователя( , @@ -50,9 +46,7 @@ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Сброшены пользовательские настройки |вариантов отчетов (%1 шт.).'"), - Формат(МассивВариантов.Количество(), "ЧН=0; ЧГ=0") - ) - ); + Формат(МассивВариантов.Количество(), "ЧН=0; ЧГ=0"))); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиРазмещения/CommandModule.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиРазмещения/CommandModule.bsl index d8f0b2789..d9a1a268f 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиРазмещения/CommandModule.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Commands/СброситьНастройкиРазмещения/CommandModule.bsl @@ -18,9 +18,7 @@ |- Выбраны только пользовательские варианты отчетов. |- Выбранные варианты отчетов помечены на удаление. |- Выбраны варианты дополнительных или внешних отчетов.'"), - Формат(КоличествоПредопределенных, "ЧГ=") - ) - ); + Формат(КоличествоПредопределенных, "ЧГ="))); Возврат; КонецЕсли; @@ -30,8 +28,7 @@ | |Нажмите ""Продолжить"" что бы сбросить настройки размещения, |видимости и доступности выбранных вариантов отчетов (%1 шт).'"), - Формат(КоличествоПредопределенных, "ЧГ=") - ); + Формат(КоличествоПредопределенных, "ЧГ=")); Кнопки = Новый СписокЗначений; Кнопки.Добавить(1, НСтр("ru = 'Продолжить'")); @@ -48,8 +45,7 @@ ПоказатьОповещениеПользователя( НСтр("ru = 'Сброшены настройки размещения варианта отчета'"), ПолучитьНавигационнуюСсылку(ВариантСсылка), - Строка(ВариантСсылка) - ); + Строка(ВариантСсылка)); Иначе ПоказатьОповещениеПользователя( , @@ -57,9 +53,7 @@ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Сброшены настройки размещения |вариантов отчетов (%1 шт.).'"), - Формат(МассивВариантов.Количество(), "ЧН=0; ЧГ=0") - ) - ); + Формат(МассивВариантов.Количество(), "ЧН=0; ЧГ=0"))); КонецЕсли; ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(); diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Help/ru.html b/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Help/ru.html index 52148d8c5..b6a810744 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Help/ru.html +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Help/ru.html @@ -1,3 +1,3 @@ - +

Позволяет настраивать размещение нескольких вариантов отчетов в разделах программы.

См. также: Вариант отчета, Общая информация о формах.

\ No newline at end of file diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl index 0a8948027..25f01a20a 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/РазмещениеВРазделах/Module.bsl @@ -104,8 +104,7 @@ ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Необходимо заполнить список ""Варианты отчетов""'"), , - "ИзменяемыеВарианты" - ); + "ИзменяемыеВарианты"); Возврат Ложь; КонецЕсли; Возврат Истина; @@ -119,9 +118,7 @@ , СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Изменены настройки вариантов отчетов (%1 шт.).'"), - Формат(ИзменяемыеВарианты.Количество(), "ЧН=0; ЧГ=0") - ) - ); + Формат(ИзменяемыеВарианты.Количество(), "ЧН=0; ЧГ=0"))); Модифицированность = Ложь; ВариантыОтчетовКлиент.ОбновитьОткрытыеФормы(); @@ -320,14 +317,12 @@ ТекстСообщения = СтрЗаменить( НСтр("ru = 'После проверки варианты отчетов (%1 шт.) были исключены из списка выбранных.'"), "%1", - Формат(КоличествоОшибок, "ЧГ=") - ); + Формат(КоличествоОшибок, "ЧГ=")); Элементы.ДеревоПодсистем.Доступность = Истина; КонецЕсли; РезультатВыполнения.Вставить("ВыводПредупреждения", - Новый Структура("Использование, Текст, ПутьКРеквизитуФормы, ТекстОшибок", Истина, ТекстСообщения, "ИзменяемыеВарианты", ТекстОшибок) - ); + Новый Структура("Использование, Текст, ПутьКРеквизитуФормы, ТекстОшибок", Истина, ТекстСообщения, "ИзменяемыеВарианты", ТекстОшибок)); РезультатВыполнения = Новый ФиксированнаяСтруктура(РезультатВыполнения); Иначе Элементы.ДеревоПодсистем.Доступность = Истина; diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Form.form index a4b1bd7f8..489b38537 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Form.form @@ -711,7 +711,6 @@ ExpandTopLevel true true - true true None None @@ -1593,6 +1592,23 @@ ОтборАвтор + + КорневаяПодсистема + + <key>ru</key> + <value>Корневая подсистема</value> + + 8 + + CatalogRef.ИдентификаторыОбъектовМетаданных + + + true + + + true + + ОтборНаименование diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl index 6eda4f563..a62c324a0 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаСписка/Module.bsl @@ -9,6 +9,7 @@ ВключаяПодчиненные = Истина; + //КорневаяПодсистема = Справочники.ИдентификаторыОбъектовМетаданных.Подсистемы; ДеревоЗначений = ВариантыОтчетовПовтИсп.ПодсистемыТекущегоПользователя(); ЗначениеВРеквизитФормы(ДеревоЗначений, "ДеревоПодсистем"); @@ -57,7 +58,6 @@ ПолныеПраваНаВарианты = ВариантыОтчетов.ПолныеПраваНаВарианты(); Если НЕ ПолныеПраваНаВарианты Тогда Элементы.ОтборТипОтчета.Видимость = Ложь; - ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Список.Отбор, "ПометкаУдаления", ВидСравненияКомпоновкиДанных.Равно, Ложь,,Истина,РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный); КонецЕсли; СписокВыбора = Элементы.ОтборТипОтчета.СписокВыбора; @@ -79,6 +79,12 @@ Список.Параметры.УстановитьЗначениеПараметра("ОтборТипОтчета", ОтборТипОтчета); ТекущийЭлемент = Элементы.Список; + + // Установка отбора динамического списка. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, ВидСравненияКомпоновкиДанных.Равно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + КонецПроцедуры &НаКлиенте @@ -105,11 +111,10 @@ Элементы.ОтборНаименование.СписокВыбора.ЗагрузитьЗначения(ОтборНаименованиеСписокВыбора); КонецЕсли; - ДеревоПодсистемУстановитьПараметрыСписка(); - Список.Параметры.УстановитьЗначениеПараметра("ОтборНаименование", ОтборНаименование); Список.Параметры.УстановитьЗначениеПараметра("ОтборАвтор", ОтборАвтор); Список.Параметры.УстановитьЗначениеПараметра("ОтборТипОтчета", ОтборТипОтчета); + //Список.Параметры.УстановитьЗначениеПараметра("ВключаяПодчиненные", ВключаяПодчиненные); КонецПроцедуры &НаСервере @@ -161,6 +166,7 @@ &НаКлиенте Процедура ВключаяПодчиненныеПриИзменении(Элемент) + //Список.Параметры.УстановитьЗначениеПараметра("ВключаяПодчиненные", ВключаяПодчиненные); ДеревоПодсистемТекущаяСтрока = -1; ПодключитьОбработчикОжидания("ДеревоПодсистемОбработчикАктивизацииСтроки", 0.1, Истина); КонецПроцедуры @@ -261,8 +267,7 @@ Размещение.Варианты.Представление, Формат(Размещение.Варианты.Всего, "ЧГ=0"), Размещение.Источник.ПолноеПредставление, - Размещение.Приемник.ПолноеПредставление - ); + Размещение.Приемник.ПолноеПредставление); Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да); Если Ответ <> КодВозвратаДиалога.Да Тогда Возврат; @@ -488,8 +493,7 @@ ВыводОповещения.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Вариант отчета ""%1"" размещен в ""%2"".'"), Размещение.Варианты.Представление, - Размещение.Приемник.ПолноеПредставление - ); + Размещение.Приемник.ПолноеПредставление); ВыводОповещения.Текст = Размещение.Варианты.Представление; ВыводОповещения.Ссылка = ПолучитьНавигационнуюСсылку(Размещение.Варианты.Массив[0]); Иначе @@ -497,8 +501,7 @@ НСтр("ru = 'Варианты отчетов ""%1"" (%2 шт.) размещены в ""%3"".'"), Размещение.Варианты.Представление, Формат(Размещение.Варианты.Всего, "ЧН=0; ЧГ=0"), - Размещение.Приемник.ПолноеПредставление - ); + Размещение.Приемник.ПолноеПредставление); КонецЕсли; Иначе РезультатВыполнения.Вставить("ВыводПредупреждения", Новый Структура("Использование, Текст, ТекстОшибок")); @@ -507,8 +510,7 @@ ВыводПредупреждения.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Размещено вариантов отчетов: %1 из %2'"), Формат(Размещено, "ЧН=0; ЧГ=0"), - Формат(Размещение.Варианты.Всего, "ЧН=0; ЧГ=0") - ); + Формат(Размещение.Варианты.Всего, "ЧН=0; ЧГ=0")); ВыводПредупреждения.ТекстОшибок = НСтр("ru = 'Варианты отчетов, которые не могут размещаться в командном интерфейсе:'") + Символы.ПС + ТекстОшибок; diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Help/ru.html index 210547771..a98448d86 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Справочник предназначен для хранения вариантов отчетов и настройки их размещения в командном интерфейсе.</p> <h2><a name="Реквизиты">Реквизиты:</a></h2> <p></p> diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl index ecdd0e360..219cf9d5f 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/Forms/ФормаЭлемента/Module.bsl @@ -120,8 +120,7 @@ Объект.Описание, Объект.Описание, Модифицированность, - НСтр("ru = 'Описание'") - ); + НСтр("ru = 'Описание'")); КонецПроцедуры &НаКлиенте diff --git a/SSL/src/Catalogs/ВариантыОтчетов/Help/ru.html b/SSL/src/Catalogs/ВариантыОтчетов/Help/ru.html index d6a3dc1c8..059916d38 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/Help/ru.html +++ b/SSL/src/Catalogs/ВариантыОтчетов/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Редактирование, открытие и выбор вариантов отчетов.</p> <p>В левой части формы расположено дерево разделов и групп командного интерфейса.<br>Перемещаясь по узлам дерева, список "<strong>Варианты отчетов</strong>" автоматически фильтруется по выбранному разделу или группе.<br>Варианты отчетов можно перемещать из текущего раздела/группы в другие при помощи перетаскивания. Если при перетаскивании зажать клавишу Ctrl, то вариант отчета будет добавлен в новую группу, а также останется в текущей группе.</p> <p>Чтобы быстро найти нужный вариант отчета в списке "<strong>Варианты отчетов</strong>" также можно применять быстрые отборы по <strong>Наименованию</strong> и <strong>Автору</strong>. Для этого нужно указать искомые значения в соответствующих полях, расположенных над списком.</p> diff --git a/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl b/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl index 166a1d27f..d1cda85b8 100644 --- a/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl +++ b/SSL/src/Catalogs/ВариантыОтчетов/ObjectModule.bsl @@ -20,8 +20,7 @@ Наименование ), , - "Наименование" - ); + "Наименование"); КонецЕсли; КонецПроцедуры @@ -33,8 +32,7 @@ ПользователемИзмененаПометкаУдаления = ( НЕ ЭтоНовый() И ПометкаУдаления <> Ссылка.ПометкаУдаления - И НЕ ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных") - ); + И НЕ ДополнительныеСвойства.Свойство("ЗаполнениеПредопределенных")); Если НЕ Пользовательский И ПользователемИзмененаПометкаУдаления Тогда Если ПометкаУдаления Тогда @@ -54,13 +52,11 @@ Если НаименованиеЗанято Тогда ТекстОшибки = ТекстОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Наименование ""%1"" уже занято другим вариантом этого отчета.'"), - Наименование - ); + Наименование); Иначе ТекстОшибки = ТекстОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ключ варианта ""%1"" уже занят другим вариантом этого отчета.'"), - КлючВарианта - ); + КлючВарианта); КонецЕсли; ТекстОшибки = ТекстОшибки + НСтр("ru = 'Перед снятием пометки удаления варианта отчета |необходимо установить пометку удаления конфликтующего варианта отчета.'"); @@ -89,4 +85,4 @@ КонецПроцедуры -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss index e66dc8781..91027f589 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">DeletionMark</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">false</right> - </item> <viewMode>Normal</viewMode> <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Form.form b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Form.form index 17b2def98..dce3d5353 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Form.form +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Form.form @@ -321,6 +321,10 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> <width>70</width> <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Module.bsl b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Module.bsl new file mode 100644 index 000000000..70d3fb2d8 --- /dev/null +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбора/Module.bsl @@ -0,0 +1,31 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + // Отбор не помеченных на удаление. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + + // Оформление помеченных на удаление. + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.НедоступныеДанныеЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.ПометкаУдаления"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Истина; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("Список"); + ЭлементОформляемогоПоля.Использование = Истина; + +КонецПроцедуры diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбораСпособаСравненияВерсий/Form.form b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбораСпособаСравненияВерсий/Form.form index afb3de3dd..1ffc01a29 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбораСпособаСравненияВерсий/Form.form +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбораСпособаСравненияВерсий/Form.form @@ -137,7 +137,7 @@ <horizontalAlign>Right</horizontalAlign> </autoCommandBar> <excludedCommands>CustomizeForm</excludedCommands> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoUrl>true</autoUrl> <group>Vertical</group> diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбораСпособаСравненияВерсий/Module.bsl b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбораСпособаСравненияВерсий/Module.bsl index 4118488e1..982d0a54f 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбораСпособаСравненияВерсий/Module.bsl +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаВыбораСпособаСравненияВерсий/Module.bsl @@ -20,6 +20,8 @@ ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранитьМассивИОбновитьПовторноИспользуемыеЗначения( МассивСтруктур); - Закрыть(КодВозвратаДиалога.ОК); + РезультатВыбора = КодВозвратаДиалога.ОК; + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры + diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index 75d0a5f47..91027f589 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,41 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> <filter> - <item xsi:type="FilterItemComparison"> - <use>false</use> - <left xsi:type="dcscor:Field">ПометкаУдаления</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">false</right> - </item> <viewMode>Normal</viewMode> <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> <order> - <item xsi:type="OrderItemField"> - <use>false</use> - <field>ДатаСоздания</field> - <orderType>Asc</orderType> - </item> <viewMode>Normal</viewMode> <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> </order> <conditionalAppearance> - <item> - <selection/> - <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">ПометкаУдаления</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">true</right> - </item> - </filter> - <appearance> - <dcscor:item xsi:type="SettingsParameterValue"> - <dcscor:parameter>ЦветТекста</dcscor:parameter> - <dcscor:value xsi:type="v8ui:Color">web:Gray</dcscor:value> - </dcscor:item> - </appearance> - </item> <viewMode>Normal</viewMode> <userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID> </conditionalAppearance> diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Form.form index 02f19bce1..2096fe479 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Form.form @@ -657,6 +657,10 @@ <event>NotificationProcessing</event> <name>ОбработкаОповещения</name> </handlers> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> <excludedCommands>Copy</excludedCommands> <excludedCommands>Create</excludedCommands> <excludedCommands>Delete</excludedCommands> diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Module.bsl index 8a96d4178..1abdd84ad 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСписка/Module.bsl @@ -1,6 +1,32 @@ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + // Оформление помеченных на удаление. + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.НедоступныеДанныеЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.ПометкаУдаления"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Истина; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("Список"); + ЭлементОформляемогоПоля.Использование = Истина; + +КонецПроцедуры + &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Attributes/Список/ExtInfo/ListSettings.dcss index 583141cee..91027f589 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,45 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> <filter> - <item xsi:type="FilterItemComparison"> - <use>false</use> - <left xsi:type="dcscor:Field">DeletionMark</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">false</right> - </item> <viewMode>Normal</viewMode> <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> <order> - <item xsi:type="OrderItemField"> - <use>false</use> - <field>ДатаСоздания</field> - <orderType>Asc</orderType> - </item> <viewMode>Normal</viewMode> <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> </order> <conditionalAppearance> - <item> - <selection/> - <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">ПометкаУдаления</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">true</right> - </item> - </filter> - <appearance> - <dcscor:item xsi:type="SettingsParameterValue"> - <dcscor:parameter>ЦветТекста</dcscor:parameter> - <dcscor:value xsi:type="v8ui:Color">web:Gray</dcscor:value> - </dcscor:item> - <dcscor:item xsi:type="SettingsParameterValue"> - <dcscor:parameter>Шрифт</dcscor:parameter> - <dcscor:value xsi:type="v8ui:Font" ref="sys:DefaultGUIFont" bold="false" italic="false" underline="false" strikeout="true" kind="WindowsFont"/> - </dcscor:item> - </appearance> - </item> <viewMode>Normal</viewMode> <userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID> </conditionalAppearance> diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Form.form b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Form.form index e9cd255bf..1d67c78b8 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Form.form +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Form.form @@ -948,6 +948,10 @@ </items> <horizontalAlign>Left</horizontalAlign> </autoCommandBar> + <handlers> + <event>ChoiceProcessing</event> + <name>ОбработкаВыбора</name> + </handlers> <handlers> <event>NotificationProcessing</event> <name>ОбработкаОповещения</name> diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Module.bsl b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Module.bsl index 826f1d1ad..afb833274 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Module.bsl +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаСпискаВерсийФайла/Module.bsl @@ -1,3 +1,9 @@ +&НаКлиенте +Перем Ссылка1; + +&НаКлиенте +Перем Ссылка2; + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -8,12 +14,25 @@ Возврат; КонецЕсли; + Элементы.ФормаСравнить.Видимость = Не ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент(); + УникальныйИдентификаторКарточкиФайла = Параметры.УникальныйИдентификаторКарточкиФайла; ЗаполнитьДеревоВерсий(); КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.ВерсииФайлов.Форма.ФормаВыбораСпособаСравненияВерсий") Тогда + Если ВыбранноеЗначение <> КодВозвратаДиалога.ОК Тогда + Возврат; + КонецЕсли; + СпособСравненияВерсийФайлов = ФайловыеФункцииСлужебныйКлиентСервер.ПерсональныеНастройкиРаботыСФайлами().СпособСравненияВерсийФайлов; + ПродолжитьСравнениеВерсий(СпособСравненияВерсийФайлов); + КонецЕсли; +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -23,7 +42,7 @@ ТекущиеДанные = Элементы.Список.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; - КонецЕсли; + КонецЕсли; ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайла(Неопределено, ТекущиеДанные.Ссылка); Если ДанныеФайла.Редактирует.Пустая() Тогда @@ -32,7 +51,7 @@ Оповестить("Запись_Файл", Новый Структура("Событие", "АктивнаяВерсияИзменена"), Параметры.Файл); Иначе Предупреждение(НСтр("ru = 'Смена активной версии разрешена только для не занятых файлов.'")); - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -44,13 +63,13 @@ Если Версия.Ссылка = ТекущаяВерсия Тогда Идентификатор = Версия.ПолучитьИдентификатор(); Возврат Идентификатор; - КонецЕсли; + КонецЕсли; КодВозврата = ОбойтиВсеУзлыДерева(Версия.ПолучитьЭлементы(), ТекущаяВерсия); Если КодВозврата <> -1 Тогда Возврат КодВозврата; - КонецЕсли; - КонецЦикла; + КонецЕсли; + КонецЦикла; Возврат -1; КонецФункции @@ -100,7 +119,7 @@ ПараметрыОткрытияФормы = Новый Структура("Ключ", Версия); ОткрытьФорму("Справочник.ВерсииФайлов.ФормаОбъекта", ПараметрыОткрытияФормы); - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -139,9 +158,6 @@ // Сравнить 2 выбранные версии. &НаКлиенте Процедура Сравнить(Команда) - Перем Ссылка1; - Перем Ссылка2; - ЧислоВыделенныхСтрок = Элементы.Список.ВыделенныеСтроки.Количество(); Если ЧислоВыделенныхСтрок = 2 ИЛИ ЧислоВыделенныхСтрок = 1 Тогда @@ -180,63 +196,18 @@ Если Расширение = "odt" Тогда СпособСравненияВерсийФайлов = "OpenOfficeOrgWriter"; - КонецЕсли; - Если Расширение = "htm" ИЛИ Расширение = "html" Тогда + ИначеЕсли Расширение = "htm" ИЛИ Расширение = "html" Тогда СпособСравненияВерсийФайлов = "MicrosoftOfficeWord"; - КонецЕсли; - - Если СпособСравненияВерсийФайлов = Неопределено Тогда + ИначеЕсли СпособСравненияВерсийФайлов = Неопределено Тогда СпособСравненияВерсийФайлов = ФайловыеФункцииСлужебныйКлиентСервер.ПерсональныеНастройкиРаботыСФайлами().СпособСравненияВерсийФайлов; - КонецЕсли; - - Если СпособСравненияВерсийФайлов = Неопределено Тогда // первый вызов - еще не инициализирована настройка - Результат = ОткрытьФормуМодально("Справочник.ВерсииФайлов.Форма.ФормаВыбораСпособаСравненияВерсий"); - - Если Результат <> КодВозвратаДиалога.ОК Тогда + Если СпособСравненияВерсийФайлов = Неопределено Тогда // первый вызов - еще не инициализирована настройка + ПараметрыФормы = Новый Структура; + ОткрытьФорму("Справочник.ВерсииФайлов.Форма.ФормаВыбораСпособаСравненияВерсий", ПараметрыФормы, ЭтаФорма); Возврат; - КонецЕсли; - - СпособСравненияВерсийФайлов = ФайловыеФункцииСлужебныйКлиентСервер.ПерсональныеНастройкиРаботыСФайлами().СпособСравненияВерсийФайлов; - КонецЕсли; - - Если СпособСравненияВерсийФайлов = Неопределено Тогда - Возврат; - КонецЕсли; - - ДанныеФайла1 = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаДляОткрытия(Неопределено, Ссылка1, УникальныйИдентификатор); - ДанныеФайла2 = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаДляОткрытия(Неопределено, Ссылка2, УникальныйИдентификатор); - - ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Выполняется сравнение версий файла ""%1""...'"), ДанныеФайла1.Ссылка); - Состояние(ТекстСостояния); - - ПолноеИмяФайла1 = ""; - Результат1 = РаботаСФайламиСлужебныйКлиент.ПолучитьФайлВерсииВРабочийКаталог( - ДанныеФайла1, ПолноеИмяФайла1); - - ПолноеИмяФайла2 = ""; - Результат2 = РаботаСФайламиСлужебныйКлиент.ПолучитьФайлВерсииВРабочийКаталог( - ДанныеФайла2, ПолноеИмяФайла2); - - Если Результат1 И Результат2 Тогда - - ПутьКФайлу1 = ""; - ПутьКФайлу2 = ""; - - Если ДанныеФайла1.НомерВерсии < ДанныеФайла2.НомерВерсии Тогда - ПутьКФайлу1 = ПолноеИмяФайла1; - ПутьКФайлу2 = ПолноеИмяФайла2; - Иначе - ПутьКФайлу1 = ПолноеИмяФайла2; - ПутьКФайлу2 = ПолноеИмяФайла1; КонецЕсли; - - РаботаСФайламиСлужебныйКлиент.СравнитьФайлы( - ПутьКФайлу1, ПутьКФайлу2, СпособСравненияВерсийФайлов); - КонецЕсли; - Состояние(); + ПродолжитьСравнениеВерсий(СпособСравненияВерсийФайлов); #Иначе Предупреждение(НСтр("ru = 'Сравнение версий в веб-клиенте не поддерживается.'")); #КонецЕсли @@ -280,7 +251,7 @@ ТекущиеДанные = Элементы.Список.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; - КонецЕсли; + КонецЕсли; РаботаСФайламиСлужебныйКлиент.ОткрытьВерсиюФайла( РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаДляОткрытия( @@ -295,7 +266,7 @@ ТекущиеДанные = Элементы.Список.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; - КонецЕсли; + КонецЕсли; ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаДляСохранения( Неопределено, ТекущиеДанные.Ссылка, УникальныйИдентификатор); @@ -377,16 +348,16 @@ Если Строка.ЭтоТекущая Тогда НайденнаяСтрока = Строка; Прервать; - КонецЕсли; - КонецЦикла; + КонецЕсли; + КонецЦикла; Иначе Для Каждого Строка Из Данные Цикл Если Строка.Ссылка = ТекущаяВетвь.РодительскаяВерсия Тогда НайденнаяСтрока = Строка; Прервать; - КонецЕсли; + КонецЕсли; КонецЦикла; - КонецЕсли; + КонецЕсли; Если НайденнаяСтрока <> Неопределено Тогда Ветвь = Дерево.Строки.Добавить(); @@ -395,7 +366,7 @@ ДобавитьПодчиненныеВерсии(Ветвь, Данные); ДобавитьПредыдущуюВерсию(Ветвь, Дерево, Данные); - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -432,18 +403,18 @@ Если ТекущиеДанные.ПометкаУдаления Тогда ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Cнять с ""%1"" пометку на удаление?'"), + НСтр("ru = 'Снять с ""%1"" пометку на удаление?'"), Строка(ТекущиеДанные.Ссылка)); Иначе ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Пометить ""%1"" на удаление?'"), Строка(ТекущиеДанные.Ссылка)); - КонецЕсли; + КонецЕсли; Результат = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); Если Результат <> КодВозвратаДиалога.Да Тогда Возврат; - КонецЕсли; + КонецЕсли; ТекущиеДанные.ПометкаУдаления = Не ТекущиеДанные.ПометкаУдаления; УстановитьПометкуУдаления(ТекущиеДанные.Ссылка, ТекущиеДанные.ПометкаУдаления); @@ -456,4 +427,47 @@ КонецПроцедуры - +&НаКлиенте +Процедура ПродолжитьСравнениеВерсий(СпособСравненияВерсийФайлов) + #Если НЕ ВебКлиент Тогда + + Если СпособСравненияВерсийФайлов = Неопределено Тогда + Возврат; + КонецЕсли; + + ДанныеФайла1 = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаДляОткрытия(Неопределено, Ссылка1, УникальныйИдентификатор); + ДанныеФайла2 = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаДляОткрытия(Неопределено, Ссылка2, УникальныйИдентификатор); + + ТекстСостояния = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполняется сравнение версий файла ""%1""...'"), ДанныеФайла1.Ссылка); + Состояние(ТекстСостояния); + + ПолноеИмяФайла1 = ""; + Результат1 = РаботаСФайламиСлужебныйКлиент.ПолучитьФайлВерсииВРабочийКаталог( + ДанныеФайла1, ПолноеИмяФайла1); + + ПолноеИмяФайла2 = ""; + Результат2 = РаботаСФайламиСлужебныйКлиент.ПолучитьФайлВерсииВРабочийКаталог( + ДанныеФайла2, ПолноеИмяФайла2); + + Если Результат1 И Результат2 Тогда + + ПутьКФайлу1 = ""; + ПутьКФайлу2 = ""; + + Если ДанныеФайла1.НомерВерсии < ДанныеФайла2.НомерВерсии Тогда + ПутьКФайлу1 = ПолноеИмяФайла1; + ПутьКФайлу2 = ПолноеИмяФайла2; + Иначе + ПутьКФайлу1 = ПолноеИмяФайла2; + ПутьКФайлу2 = ПолноеИмяФайла1; + КонецЕсли; + + РаботаСФайламиСлужебныйКлиент.СравнитьФайлы( + ПутьКФайлу1, ПутьКФайлу2, СпособСравненияВерсийФайлов); + + КонецЕсли; + + Состояние(); + #КонецЕсли +КонецПроцедуры diff --git a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаЭлемента/Module.bsl index 698f1d516..3b8806f47 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВерсииФайлов/Forms/ФормаЭлемента/Module.bsl @@ -4,6 +4,10 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + Если ТипЗнч(Объект.Владелец) = Тип("СправочникСсылка.Файлы") Тогда Элементы.ПолноеНаименование.ТолькоПросмотр = Истина; КонецЕсли; diff --git a/SSL/src/Catalogs/ВерсииФайлов/Help/ru.html b/SSL/src/Catalogs/ВерсииФайлов/Help/ru.html index 5ae9dc878..08a4f0df3 100644 --- a/SSL/src/Catalogs/ВерсииФайлов/Help/ru.html +++ b/SSL/src/Catalogs/ВерсииФайлов/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Для просмотра списка всех версий файла откройте его карточку (<strong>F2</strong> или команда "<strong>Открыть карточку</strong>") и перейдите в раздел "<strong>Версии файлов</strong>".</p> <p>В списке версий можно:</p> <ul><li>открыть файл версии соответствующим приложением для просмотра (команда "<strong>Открыть карточку</strong>"); diff --git a/SSL/src/Catalogs/ВидыДокументовФизическихЛиц/Help/ru.html b/SSL/src/Catalogs/ВидыДокументовФизическихЛиц/Help/ru.html index 0686fdbc2..1f123e498 100644 --- a/SSL/src/Catalogs/ВидыДокументовФизическихЛиц/Help/ru.html +++ b/SSL/src/Catalogs/ВидыДокументовФизическихЛиц/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p class="Usual">Для каждого физического лица можно указать реквизиты документа, удостоверяющего личность. Для указания вида документа и используется этот справочник.</p> <p class="Usual">Справочник уже содержит основные документы, удостоверяющие личность, но может быть расширен пользователем.</p> <p class="Usual"> </p> diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss index 784796455..91027f589 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">ЭтоГруппа</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">true</right> - </item> <viewMode>Normal</viewMode> <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Form.form index 15abae079..b5b71662c 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Form.form +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Form.form @@ -198,6 +198,10 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> <excludedCommands>Copy</excludedCommands> <excludedCommands>Create</excludedCommands> <excludedCommands>CreateFolder</excludedCommands> diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Module.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Module.bsl new file mode 100644 index 000000000..24aa767ae --- /dev/null +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаВыбораГруппы/Module.bsl @@ -0,0 +1,12 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "ЭтоГруппа", Истина); +КонецПроцедуры diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form index d8008aa9f..0f08570a7 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаСписка/Form.form @@ -211,13 +211,13 @@ <autoMaxHeight>true</autoMaxHeight> <autoMaxRowsCount>true</autoMaxRowsCount> <selectionMode>MultiRow</selectionMode> - <header>true</header> <headerHeight>1</headerHeight> <footerHeight>1</footerHeight> <horizontalScrollBar>AutoUse</horizontalScrollBar> <verticalScrollBar>AutoUse</verticalScrollBar> <horizontalLines>true</horizontalLines> <verticalLines>true</verticalLines> + <horizontalLinesBWA>false</horizontalLinesBWA> <searchOnInput>Auto</searchOnInput> <initialListView>Auto</initialListView> <initialTreeView>ExpandAllLevels</initialTreeView> diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html index 4446115b8..7e8afe0d4 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Конфигурация позволяет хранить следующие типы контактной информации:</p> <ul><li> <div>Адрес — реквизит с таким типом контактной информации предназначен для хранения адреса в виде произвольной строки или в виде шаблона адреса. Позволяет заполнять адрес, используя адресный классификатор, из формы‑шаблона ввода адреса. Если адрес заполняется с помощью адресного классификатора, то индекс адреса устанавливается из классификатора автоматически, после окончания ввода адреса. Предопределенные фактический и юридический адреса используются в печатных формах документов.</div> diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl index 17b7f06f3..0a935bb1d 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Forms/ФормаЭлемента/Module.bsl @@ -1,4 +1,3 @@ - //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -21,25 +20,19 @@ КонецЕсли; Если ОбъектНаСервере.ЭтоНовый() Тогда - Объект.МожноИзменятьСпособРедактирования = Истина; - + Объект.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес; Иначе - Если ЭтоПредопределенный Тогда - Элементы.Наименование.ТолькоПросмотр = Истина; Элементы.Родитель.ТолькоПросмотр = Истина; Элементы.Тип.ТолькоПросмотр = Истина; Элементы.Подсказка.ТолькоПросмотр = Истина; Иначе - Если Не ИспользуетсяЗапретРедактированияРеквизитов Тогда - Элементы.Родитель.ТолькоПросмотр = Истина; Элементы.Тип.ТолькоПросмотр = Истина; - КонецЕсли; КонецЕсли; @@ -49,11 +42,9 @@ Элементы.РазрешитьВводНесколькихЗначений.Доступность = ?(ОбъектНаСервере.Уровень() = 2, Ложь, Истина); Если Не Объект.МожноИзменятьСпособРедактирования Тогда - Элементы.РедактированиеТолькоВДиалоге.Доступность = Ложь; Элементы.РазрешитьВводНесколькихЗначений.Доступность = Ложь; Элементы.ГруппаНаименованиеНастройкиПоТипам.Доступность = Ложь; - КонецЕсли; КонецПроцедуры @@ -61,7 +52,7 @@ &НаКлиенте Процедура ПриОткрытии(Отказ) - ПриИзмененииТип(); + ИзменитьОтображениеПриИзмененииТипа(); КонецПроцедуры @@ -78,10 +69,8 @@ Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Если Не ЭтоПредопределенный Тогда - // Обработчик подсистемы запрета редактирования реквизитов объектов. УправлениеКонтактнойИнформацией.ПриБлокировкеРеквизитовОбъекта(ЭтаФорма); - КонецЕсли; КонецПроцедуры @@ -99,21 +88,30 @@ &НаКлиенте Процедура ТипПриИзменении(Элемент) - ПриИзмененииТип(); + ИзменитьРеквизитыПриИзмененииТипа(); + ИзменитьОтображениеПриИзмененииТипа(); КонецПроцедуры &НаКлиенте Процедура АдресТолькоРоссийскийПриИзменении(Элемент) - ПриИзмененииАдресТолькоРоссийский(); + ИзменитьРеквизитыПриИзмененииТолькоРоссии(); + ИзменитьОтображениеПриИзмененииТолькоРоссии(); КонецПроцедуры &НаКлиенте Процедура ПроверятьПоКлассификаторуПриИзменении(Элемент) - ПриИзмененииПроверятьКорректность(); + ИзменитьРеквизитыПриИзмененииПроверятьКорректность(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверятьКорректностьПриИзменении(Элемент) + + ИзменитьРеквизитыПриИзмененииПроверятьКорректность(); КонецПроцедуры @@ -124,16 +122,12 @@ Процедура Подключаемый_РазрешитьРедактированиеРеквизитовОбъекта(Команда) Если Не ЭтоПредопределенный Тогда - РедактированиеРазрешено = Ложь; УправлениеКонтактнойИнформациейКлиент.ПриРазрешенииРедактированияРеквизитовОбъекта(ЭтаФорма, РедактированиеРазрешено); Если РедактированиеРазрешено Тогда - УправлениеКонтактнойИнформациейКлиент.ПриУстановкеДоступностиЭлементовФормы(ЭтаФорма); - КонецЕсли; - КонецЕсли; КонецПроцедуры @@ -142,58 +136,75 @@ // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ &НаКлиенте -Процедура ПриИзмененииАдресТолькоРоссийский() - - Элементы.ПроверятьПоКлассификатору.Доступность = Объект.АдресТолькоРоссийский; - Элементы.СкрыватьНеактуальныеАдреса.Доступность = Объект.АдресТолькоРоссийский; - - Если Не Объект.АдресТолькоРоссийский Тогда - - Объект.ПроверятьКорректность = Ложь; - Объект.СкрыватьНеактуальныеАдреса = Ложь; - - КонецЕсли; - - ПриИзмененииПроверятьКорректность(); - -КонецПроцедуры - -&НаКлиенте -Процедура ПриИзмененииТип() +Процедура ИзменитьОтображениеПриИзмененииТипа() Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Адрес; Элементы.РедактированиеТолькоВДиалоге.Доступность = Объект.МожноИзменятьСпособРедактирования; - ПриИзмененииАдресТолькоРоссийский(); + + ИзменитьОтображениеПриИзмененииТолькоРоссии(); + ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.АдресЭлектроннойПочты; Элементы.РедактированиеТолькоВДиалоге.Доступность = Ложь; - Объект.РедактированиеТолькоВДиалоге = Ложь; - ПриИзмененииПроверятьКорректность(); + ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") Или Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Факс") Тогда Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Другое; Элементы.РедактированиеТолькоВДиалоге.Доступность = Объект.МожноИзменятьСпособРедактирования; + Иначе Элементы.Проверки.ТекущаяСтраница = Элементы.Проверки.ПодчиненныеЭлементы.Другое; Элементы.РедактированиеТолькоВДиалоге.Доступность = Ложь; - Объект.РедактированиеТолькоВДиалоге = Ложь; + КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура ПроверятьКорректностьПриИзменении(Элемент) - - ПриИзмененииПроверятьКорректность(); +Процедура ИзменитьРеквизитыПриИзмененииТипа() + Если Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Адрес") Тогда + ИзменитьРеквизитыПриИзмененииТолькоРоссии(); + + ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты") Тогда + Объект.РедактированиеТолькоВДиалоге = Ложь; + ИзменитьРеквизитыПриИзмененииПроверятьКорректность(); + + ИначеЕсли Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон") + Или Объект.Тип = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Факс") Тогда + // Нет изменений + + Иначе + Объект.РедактированиеТолькоВДиалоге = Ложь; + + КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура ПриИзмененииПроверятьКорректность() +Процедура ИзменитьОтображениеПриИзмененииТолькоРоссии() + + Элементы.ПроверятьПоКлассификатору.Доступность = Объект.АдресТолькоРоссийский; + Элементы.СкрыватьНеактуальныеАдреса.Доступность = Объект.АдресТолькоРоссийский; + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРеквизитыПриИзмененииТолькоРоссии() + + Если Не Объект.АдресТолькоРоссийский Тогда + Объект.ПроверятьКорректность = Ложь; + Объект.СкрыватьНеактуальныеАдреса = Ложь; + КонецЕсли; + + ИзменитьРеквизитыПриИзмененииПроверятьКорректность(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРеквизитыПриИзмененииПроверятьКорректность() Объект.ЗапрещатьВводНекорректного = Объект.ПроверятьКорректность; КонецПроцедуры - diff --git a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Help/ru.html b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Help/ru.html index bb0aa15e9..88e7af97a 100644 --- a/SSL/src/Catalogs/ВидыКонтактнойИнформации/Help/ru.html +++ b/SSL/src/Catalogs/ВидыКонтактнойИнформации/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Справочник <strong>Виды контактной информации</strong> имеет двухуровневую иерархию.  Группы справочника соответствуют справочникам-носителям контактной информации, а элементы внутри этих групп определяют состав контактной информации этих справочников. Добавление новых групп в этот справочник запрещено. Поставка конфигурации осуществляется c предопределенными группами и элементами справочника. Для добавления произвольного реквизита в один из этих справочников, необходимо добавить в справочник <strong>Виды контактной информации</strong> в соответствующую группу новый элемент.</p> <p><strong><font size="2">См. также</font></strong></p> <ul><li><font size="1"><a href="Catalog.ВидыКонтактнойИнформации.Form.ФормаЭлемента/Help">Типы контактной информации</a></font></li></ul></body></html> \ No newline at end of file diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Attributes/ВнешниеПользователиСписок/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Attributes/ВнешниеПользователиСписок/ExtInfo/ListSettings.dcss index c8ebe3063..91027f589 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Attributes/ВнешниеПользователиСписок/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Attributes/ВнешниеПользователиСписок/ExtInfo/ListSettings.dcss @@ -1,45 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">Недействителен</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">false</right> - </item> - <item xsi:type="FilterItemComparison"> - <use>false</use> - <left xsi:type="dcscor:Field">ПометкаУдаления</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">false</right> - </item> <viewMode>Normal</viewMode> <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> <order> - <item xsi:type="OrderItemField"> - <field>Наименование</field> - <orderType>Asc</orderType> - </item> <viewMode>Normal</viewMode> <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> </order> <conditionalAppearance> - <item> - <selection/> - <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">Недействителен</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">true</right> - </item> - </filter> - <appearance> - <dcscor:item xsi:type="SettingsParameterValue"> - <dcscor:parameter>ЦветТекста</dcscor:parameter> - <dcscor:value xsi:type="v8ui:Color">style:ТекстЗапрещеннойЯчейкиЦвет</dcscor:value> - </dcscor:item> - </appearance> - </item> <viewMode>Normal</viewMode> <userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID> </conditionalAppearance> diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Attributes/ГруппыВнешнихПользователей/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Attributes/ГруппыВнешнихПользователей/ExtInfo/ListSettings.dcss index 31e6269dc..91027f589 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Attributes/ГруппыВнешнихПользователей/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Attributes/ГруппыВнешнихПользователей/ExtInfo/ListSettings.dcss @@ -5,14 +5,6 @@ <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> <order> - <item xsi:type="OrderItemField"> - <field>Предопределенный</field> - <orderType>Desc</orderType> - </item> - <item xsi:type="OrderItemField"> - <field>Наименование</field> - <orderType>Asc</orderType> - </item> <viewMode>Normal</viewMode> <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> </order> diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Form.form index d913d23e4..0c68387f4 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Form.form @@ -1455,7 +1455,7 @@ </handlers> <handlers> <event>BeforeLoadDataFromSettingsAtServer</event> - <name>ПриЗагрузкеДанныхИзНастроекНаСервере</name> + <name>ПередЗагрузкеДанныхИзНастроекНаСервере</name> </handlers> <excludedCommands>Create</excludedCommands> <width>80</width> @@ -1488,6 +1488,9 @@ <edit> <common>true</common> </edit> + <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> + <segments>ВнешниеПользователиСписок.Недействителен</segments> + </notDefaultUseAlwaysAttributes> <main>true</main> <extInfo xsi:type="form:DynamicListExtInfo"> <queryText>ВЫБРАТЬ diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl index e74290369..086fc82cf 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаСписка/Module.bsl @@ -31,11 +31,10 @@ ЗаполнитьПараметрыДинамическихСписков(); Если Параметры.РежимВыбора Тогда + КлючНазначенияИспользования = "ВыборПодбор"; РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; КонецЕсли; - ОбновитьОтборНедействительныхПользователей(ЭтаФорма); - // Скрытие пользователей с пустым идентификатором, если значение параметра Истина. Если Параметры.ДоступКИнформационнойБазеРазрешен Тогда @@ -62,9 +61,11 @@ "Ссылка", Параметры.СкрываемыеПользователи, ВидСравненияКД); - КонецЕсли; + НастроитьПорядокГруппыВсеВнешниеПользователи(ГруппыВнешнихПользователей); + ОформитьИСкрытьНедействительныхВнешнихПользователей(); + ХранимыеПараметры.Вставить("РасширенныйПодбор", Параметры.РасширенныйПодбор); Элементы.ВыбранныеПользователиИГруппы.Видимость = ХранимыеПараметры.РасширенныйПодбор; ХранимыеПараметры.Вставить( @@ -81,7 +82,9 @@ КонецЕсли; // Отбор не помеченных на удаление. - ВнешниеПользователиСписок.Отбор.Элементы[0].Использование = Истина; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, "ПометкаУдаления", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); Элементы.ВнешниеПользователиСписок.РежимВыбора = Истина; Элементы.ГруппыВнешнихПользователей.РежимВыбора = @@ -140,7 +143,7 @@ КонецПроцедуры &НаСервере -Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) +Процедура ПередЗагрузкеДанныхИзНастроекНаСервере(Настройки) Если ТипЗнч(Настройки["ВыбиратьИерархически"]) = Тип("Булево") Тогда ВыбиратьИерархически = Настройки["ВыбиратьИерархически"]; @@ -208,7 +211,7 @@ ОповеститьОВыборе(Значение); Иначе - ПолучитьКартинкиИзаполнитьСписокВыбранных(Значение); + ПолучитьКартинкиИЗаполнитьСписокВыбранных(Значение); КонецЕсли; @@ -314,7 +317,7 @@ ИначеЕсли Не ГруппаПомеченаНаУдаление Тогда ШаблонВопроса = НСтр("ru = '%1 пользователей (%2) в группу ""%3""?'"); Иначе - ТекстВопроса = НСтр("ru = '%1 пользователей (%2) в эту группу?'"); + ШаблонВопроса = НСтр("ru = '%1 пользователей (%2) в эту группу?'"); КонецЕсли; ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ШаблонВопроса, ДействиеСПользователем, КоличествоПользователей, @@ -382,7 +385,7 @@ ОповеститьОВыборе(Значение); Иначе - ПолучитьКартинкиИзаполнитьСписокВыбранных(Значение); + ПолучитьКартинкиИЗаполнитьСписокВыбранных(Значение); КонецЕсли; @@ -445,7 +448,12 @@ &НаКлиенте Процедура ПоказыватьНедействительныхПользователей(Команда) - ОбновитьОтборНедействительныхПользователей(ЭтаФорма, Истина); + Элементы.ПоказыватьНедействительныхПользователей.Пометка = + НЕ Элементы.ПоказыватьНедействительныхПользователей.Пометка; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, "Недействителен", Ложь, , , + НЕ Элементы.ПоказыватьНедействительныхПользователей.Пометка); КонецПроцедуры @@ -566,6 +574,61 @@ КонецПроцедуры +&НаСервере +Процедура НастроитьПорядокГруппыВсеВнешниеПользователи(Список) + + Перем Порядок; + + // Порядок. + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + Иначе + Порядок = Список.Порядок; + КонецЕсли; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Предопределенный"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры + +&НаСервере +Процедура ОформитьИСкрытьНедействительныхВнешнихПользователей() + + // Оформление. + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.НедоступныеДанныеЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВнешниеПользователиСписок.Недействителен"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Истина; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ВнешниеПользователиСписок"); + ЭлементОформляемогоПоля.Использование = Истина; + + // Скрытие. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ВнешниеПользователиСписок, "Недействителен", Ложь, , , Истина); + +КонецПроцедуры + &НаСервере Процедура УдалитьИзСпискаВыбранных(УдалитьВсех = Ложь) @@ -585,7 +648,7 @@ КонецПроцедуры &НаКлиенте -Процедура ПолучитьКартинкиИзаполнитьСписокВыбранных(МассивВыбранныхЭлементов) +Процедура ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивВыбранныхЭлементов) ВыбранныеЭлементыИКартинки = Новый Массив; Для Каждого ВыбранныйЭлемент Из МассивВыбранныхЭлементов Цикл @@ -621,7 +684,7 @@ ВыбранныеПользователиИГруппы.Загрузить(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи); ХранимыеПараметры.Вставить("ЗаголовокФормыПодбора", ПараметрыРасширеннойФормыПодбора.ЗаголовокФормыПодбора); Пользователи.ЗаполнитьНомераКартинокПользователей(ВыбранныеПользователиИГруппы, "Пользователь", "НомерКартинки"); - // Установка параметров раширенной формы подбора. + // Установка параметров расширенной формы подбора. Элементы.ЗавершитьИЗакрыть.Видимость = Истина; Элементы.ГруппаВыбратьПользователя.Видимость = Истина; // Включение видимости списка выбранных пользователей. @@ -699,34 +762,6 @@ КонецПроцедуры -&НаКлиентеНаСервереБезКонтекста -Процедура ОбновитьОтборНедействительныхПользователей(Форма, ИзменитьОтбор = Ложь) - - Элементы = Форма.Элементы; - - Если ИзменитьОтбор Тогда - - Элементы.ПоказыватьНедействительныхПользователей.Пометка = - НЕ Элементы.ПоказыватьНедействительныхПользователей.Пометка; - - ИначеЕсли Форма.Параметры.Отбор.Свойство("Недействителен") Тогда - - Элементы.ПоказыватьНедействительныхПользователей.Пометка = - Форма.Параметры.Отбор.Недействителен; - - КонецЕсли; - - Если Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда - - ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( - Форма.ВнешниеПользователиСписок, "Недействителен", Ложь, , , Ложь); - Иначе - ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( - Форма.ВнешниеПользователиСписок, "Недействителен", Ложь, , , Истина); - КонецЕсли; - -КонецПроцедуры - &НаКлиенте Процедура ПриИзмененииИспользованияГруппПользователей() diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Help/ru.html index 62e8ca2ac..fd5225672 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Для редактирования сведений о внешнем ользователе необходимы права администрирования или права ответственного за внешних пользователей. В остальных случаях, доступен только просмотр сведений о себе, а также возможность изменить свой пароль, язык программы и контактную информацию.</p> <p>Внешний пользователь связан с каким-то объектом программы (например, контрагентом, сотрудником и т.п.), указанным в поле <strong>Объект</strong>.</p> <p>Флажок <strong>Недействителен</strong> по умолчанию снят для всех внешних пользователей. Но если пользователь по каким-либо причинам более не работает с программой, и в то же время его нельзя удалить из-за наличия ссылок на него из других объектов программы, то рекомендуется установить флажок <strong>Недействителен</strong>. Такого внешнего пользователя нельзя выбрать, и он не отображается в списке внешних пользователей.</p> diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl index f7bc963a1..7c74d75e9 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ВнешниеПользователи/Forms/ФормаЭлемента/Module.bsl @@ -205,8 +205,12 @@ &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) - ПараметрыЗаписи.Вставить( - ТекущийОбъект.ДополнительныеСвойства.ОписаниеПользователяИБ.РезультатДействия); + Если ДействияВФорме.СвойстваПользователяИБ = "РедактированиеВсех" + ИЛИ ДействияВФорме.СвойстваПользователяИБ = "РедактированиеСвоих" Тогда + + ПараметрыЗаписи.Вставить( + ТекущийОбъект.ДополнительныеСвойства.ОписаниеПользователяИБ.РезультатДействия); + КонецЕсли; ПрочитатьПользователяИБ(); @@ -417,7 +421,7 @@ ИначеЕсли РольДоступна("ДобавлениеИзменениеВнешнихПользователей") Тогда // Менеджер внешних пользователей. ДействияВФорме.Роли = ""; - ДействияВФорме.СвойстваПользователяИБ = "РедактированиеВсех"; + ДействияВФорме.СвойстваПользователяИБ = "ПросмотрВсех"; ДействияВФорме.СвойстваЭлемента = "Просмотр"; ИначеЕсли Объект.Ссылка = ПользователиКлиентСервер.АвторизованныйПользователь() Тогда diff --git a/SSL/src/Catalogs/ВнешниеПользователи/Help/ru.html b/SSL/src/Catalogs/ВнешниеПользователи/Help/ru.html index ce4203dfd..873d50838 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/Help/ru.html +++ b/SSL/src/Catalogs/ВнешниеПользователи/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В этом списке ведется учет пользователей, которые работают с программой "извне". Их доступ, как правило, сильно ограничен, они не принимают активного участия в процессах учета, работают обособленно, не взаимодействуют между собой.</p> <p>Основной способ создания и редактирования внешних пользователей через команду <strong>Внешний доступ</strong>, которая размещается в командной панели формы объектов, например, в карточке контрагента, физического лица. При выполнении команды сразу создается внешний пользователь, связанный с объектом, или открывается существующий внешний пользователь.</p> <p>В случае большого количества внешних пользователей список может быть сгруппирован, например, по видам отношений с ними: партнеры, контрагенты и т.д. Для того чтобы увидеть всех внешних пользователей, включенных в дочерние группы с учетом иерархии, необходимо установить флажок <strong>Показывать внешних пользователей дочерних групп</strong> в нижней части списка. Для добавления новых групп внешних пользователей воспользуйтесь командами в левой части списка. Для добавления в группу большого числа внешних пользователей можно открыть форму группы и воспользоваться командой <strong>Подобрать</strong>. Один и тот же внешний пользователь может одновременно входить в разные группы внешних пользователей.</p> diff --git a/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl b/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl index c34684cd2..ca0981afe 100644 --- a/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl +++ b/SSL/src/Catalogs/ВнешниеПользователи/ManagerModule.bsl @@ -13,25 +13,7 @@ Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) - Если ВидФормы = "ФормаВыбора" Тогда - - ПараметрИзменен = Ложь; - - Если Не Параметры.Свойство("Отбор") Тогда - Параметры.Вставить("Отбор", Новый Структура("Недействителен", Ложь)); - ПараметрИзменен = Истина; - - ИначеЕсли Не Параметры.Отбор.Свойство("Недействителен") Тогда - Параметры.Отбор.Вставить("Недействителен", Ложь); - ПараметрИзменен = Истина; - КонецЕсли; - - Если ПараметрИзменен Тогда - СтандартнаяОбработка = Ложь; - ВыбраннаяФорма = "ФормаСписка"; - КонецЕсли; - - ИначеЕсли ВидФормы = "ФормаОбъекта" И Параметры.Свойство("ОбъектАвторизации") Тогда + Если ВидФормы = "ФормаОбъекта" И Параметры.Свойство("ОбъектАвторизации") Тогда СтандартнаяОбработка = Ложь; ВыбраннаяФорма = "ФормаЭлемента"; diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index a7bf3074a..91027f589 100644 --- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,30 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> <filter> - <item xsi:type="FilterItemComparison"> - <use>false</use> - <left xsi:type="dcscor:Field">ПометкаУдаления</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">false</right> - </item> - <item xsi:type="FilterItemComparison"> - <use>false</use> - <left xsi:type="dcscor:Field">Ссылка</left> - <comparisonType>NotInList</comparisonType> - <right xsi:type="dcscor:DesignTimeValue">Справочник.ГруппыВнешнихПользователей.ВсеВнешниеПользователи</right> - </item> <viewMode>Normal</viewMode> <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> <order> - <item xsi:type="OrderItemField"> - <field>Предопределенный</field> - <orderType>Desc</orderType> - </item> - <item xsi:type="OrderItemField"> - <field>Наименование</field> - <orderType>Asc</orderType> - </item> <viewMode>Normal</viewMode> <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> </order> diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Form.form index bc3040128..4cff6a4d9 100644 --- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Form.form @@ -240,6 +240,7 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> + <width>65</width> <windowOpeningMode>DontBlock</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Module.bsl index a5e2eb3bb..8ce442e58 100644 --- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаСписка/Module.bsl @@ -8,14 +8,24 @@ Возврат; КонецЕсли; + НастроитьПорядокГруппыВсеВнешниеПользователи(Список); + Если Параметры.РежимВыбора Тогда + КлючНазначенияИспользования = "ВыборПодбор"; РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; Элементы.Список.РежимВыбора = Истина; + // Отбор не помеченных на удаление. - Список.Отбор.Элементы[0].Использование = Истина; - Список.Отбор.Элементы[1].Использование = Параметры.Свойство("ВыборРодителя"); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + + // Исключение выбора группы Все внешние пользователи в качестве родителя. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи, + ВидСравненияКомпоновкиДанных.НеРавно, , Параметры.Свойство("ВыборРодителя")); Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда // Режим подбора. @@ -28,3 +38,35 @@ КонецЕсли; КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Процедура НастроитьПорядокГруппыВсеВнешниеПользователи(Список) + + Перем Порядок; + + // Порядок. + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + Иначе + Порядок = Список.Порядок; + КонецЕсли; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Предопределенный"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Help/ru.html index 889e4eb46..c05c31be2 100644 --- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Карточка группы внешних пользователей позволяет просматривать и редактировать свойства группы.</p> <p>Для группы пользователей можно установить <strong>Тип участников </strong>(например, контрагенты). Группа может неявно включать всех внешних пользователей для установленного типа участников. Для этого нужно установить флажок <strong>Все</strong>.</p> <p>При редактировании состава пользователей группы нужно учитывать, что они неявно входят в состав групп-родителей. Для добавления большого числа пользователей можно использовать команду <strong>Подобрать</strong>.</p> diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl index 70494bca7..4fad007b8 100644 --- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Forms/ФормаЭлемента/Module.bsl @@ -16,14 +16,17 @@ // Подготовка вспомогательных данных. ЗаполнитьСписокТиповОбъектовАвторизации(); - ОтобратьДоступныеДляВыбораТипыУчастниковГруппы(); - - Если Объект.Ссылка = Справочники.ГруппыВнешнихПользователей.ПустаяСсылка() - И Объект.Родитель = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи Тогда + Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда + + Если Объект.Родитель = Справочники.ГруппыВнешнихПользователей.ВсеВнешниеПользователи + Или ОбщегоНазначения.ПолучитьЗначениеРеквизита(Объект.Родитель, "ВсеОбъектыАвторизации") Тогда + Объект.Родитель = Справочники.ГруппыВнешнихПользователей.ПустаяСсылка(); + КонецЕсли; - Объект.Родитель = Справочники.ГруппыВнешнихПользователей.ПустаяСсылка(); КонецЕсли; + ОтобратьДоступныеДляВыбораТипыУчастниковГруппы(); + ОпределитьДействияВФорме(); // Установка постоянной доступности свойств. @@ -179,7 +182,7 @@ ПредставлениеТипаОбъектовАвторизации = ТипыОбъектовАвторизации[0].Представление; Объект.ТипОбъектовАвторизации = ТипыОбъектовАвторизации[0].Значение; КонецЕсли; - Иначе + Иначе ПредставлениеТипаОбъектовАвторизации = ""; Объект.ТипОбъектовАвторизации = Неопределено; КонецЕсли; diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Help/ru.html b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Help/ru.html index 3a18ddebd..ec744cbaf 100644 --- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/Help/ru.html +++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p class="Usual">В этом списке ведется учет групп внешних пользователей.</p> <p class="Usual">Группы внешних пользователей могут использоваться для группировки большого числа внешних пользователей, а также когда нужно указывать не только внешнего пользователя, но и группу внешних пользователей, например, при настройке доступа.<br></p> <p class="Usual">Группы создаются плоским списком или иерархическим. В иерархическом списке, внешние пользователи вложенных групп неявно входят в группы-родители.</p> diff --git a/SSL/src/Catalogs/ГруппыВнешнихПользователей/ObjectModule.bsl b/SSL/src/Catalogs/ГруппыВнешнихПользователей/ObjectModule.bsl index 64d0fa846..4417b704c 100644 --- a/SSL/src/Catalogs/ГруппыВнешнихПользователей/ObjectModule.bsl +++ b/SSL/src/Catalogs/ГруппыВнешнихПользователей/ObjectModule.bsl @@ -110,6 +110,10 @@ ВызватьИсключение НСтр("ru = 'Предопределенная группа ""Все внешние пользователи"" |не может быть родителем.'"); + ИначеЕсли Родитель.ВсеОбъектыАвторизации Тогда + ВызватьИсключение + НСтр("ru = 'Группа, у которой стоит тип участников ""Все пользователи заданного типа"" + |не может быть родителем.'"); КонецЕсли; Если ТипОбъектовАвторизации = Неопределено Тогда @@ -172,6 +176,31 @@ КонецЕсли; КонецЕсли; + // Если группе внешних пользователей устанавливается тип участников "Все пользователи заданного типа", + // проверяем наличие подчиненных групп. + Если ВсеОбъектыАвторизации + И ЗначениеЗаполнено(Ссылка) Тогда + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | ПРЕДСТАВЛЕНИЕ(ГруппыВнешнихПользователей.Ссылка) КАК СсылкаПредставление + |ИЗ + | Справочник.ГруппыВнешнихПользователей КАК ГруппыВнешнихПользователей + |ГДЕ + | ГруппыВнешнихПользователей.Родитель = &Ссылка"; + + РезультатЗапроса = Запрос.Выполнить(); + Если НЕ РезультатЗапроса.Пустой() Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У группы внешних пользователей ""%1"" + |невозможно изменить тип участников, + |так как существует нижестоящая группа внешних пользователей'"), + Наименование); + КонецЕсли; + + КонецЕсли; + // Проверка, что при изменении типа объектов авторизации // нет подчиненных элементов другого типа (очистка типа допустима). Если ТипОбъектовАвторизации <> Неопределено diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ВыборПоОтветственному/Module.bsl b/SSL/src/Catalogs/ГруппыДоступа/Forms/ВыборПоОтветственному/Module.bsl index 9cfef127a..b0376dad3 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ВыборПоОтветственному/Module.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ВыборПоОтветственному/Module.bsl @@ -37,19 +37,20 @@ | Справочник.ГруппыДоступа КАК ГруппыДоступа |ГДЕ | ВЫБОР - | КОГДА ГруппыДоступа.ПометкаУдаления - | ТОГДА ЛОЖЬ | КОГДА ГруппыДоступа.ЭтоГруппа | ТОГДА ИСТИНА - | КОГДА ГруппыДоступа.Ссылка = ЗНАЧЕНИЕ(Справочник.ГруппыДоступа.Администраторы) - | ТОГДА ЛОЖЬ | КОГДА ГруппыДоступа.Ссылка В (&Выбранные) | ТОГДА ЛОЖЬ - | КОГДА &ПолноправныйОтветственный = ЛОЖЬ - | И ГруппыДоступа.Ответственный <> &Ответственный + | КОГДА ГруппыДоступа.ПометкаУдаления | ТОГДА ЛОЖЬ | КОГДА ГруппыДоступа.Профиль.ПометкаУдаления | ТОГДА ЛОЖЬ + | КОГДА ГруппыДоступа.Ссылка = ЗНАЧЕНИЕ(Справочник.ГруппыДоступа.Администраторы) + | ТОГДА &ПолноправныйОтветственный + | И ТИПЗНАЧЕНИЯ(&ПользовательГрупп) = ТИП(Справочник.Пользователи) + | КОГДА &ПолноправныйОтветственный = ЛОЖЬ + | И ГруппыДоступа.Ответственный <> &Ответственный + | ТОГДА ЛОЖЬ | ИНАЧЕ ВЫБОР | КОГДА ГруппыДоступа.Пользователь = НЕОПРЕДЕЛЕНО | ТОГДА ИСТИНА @@ -167,7 +168,7 @@ Элементы.ГруппыДоступа.Развернуть(Элементы.ГруппыДоступа.ТекущаяСтрока); КонецЕсли; Иначе - Закрыть(ТекущиеДанные.Ссылка); + ОповеститьОВыборе(ТекущиеДанные.Ссылка); КонецЕсли; КонецЕсли; diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ОбновлениеДанныхОграниченияДоступа/Form.form b/SSL/src/Catalogs/ГруппыДоступа/Forms/ОбновлениеДанныхОграниченияДоступа/Form.form index e046daf92..d7f42bb1f 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ОбновлениеДанныхОграниченияДоступа/Form.form +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ОбновлениеДанныхОграниченияДоступа/Form.form @@ -193,7 +193,7 @@ <excludedCommands>Retry</excludedCommands> <excludedCommands>SaveValues</excludedCommands> <excludedCommands>Yes</excludedCommands> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> <autoUrl>true</autoUrl> diff --git a/SSL/src/Catalogs/СтраныМира/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss similarity index 100% rename from SSL/src/Catalogs/СтраныМира/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss rename to SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаВыбораГруппы/Form.form b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаВыбораГруппы/Form.form new file mode 100644 index 000000000..ff6c39986 --- /dev/null +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаВыбораГруппы/Form.form @@ -0,0 +1,238 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <items xsi:type="form:Table"> + <name>Список</name> + <id>1</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Список</segments> + </dataPath> + <defaultItem>true</defaultItem> + <titleLocation>None</titleLocation> + <excludedCommands>Create</excludedCommands> + <items xsi:type="form:FormField"> + <name>Наименование</name> + <id>4</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Список.Description</segments> + </dataPath> + <defaultItem>true</defaultItem> + <extendedTooltip> + <name>НаименованиеРасширеннаяПодсказка</name> + <id>16</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>НаименованиеКонтекстноеМеню</name> + <id>5</id> + <autoFill>true</autoFill> + </contextMenu> + <type>LabelField</type> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:LabelFieldExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + </extInfo> + </items> + <commandBarLocation>None</commandBarLocation> + <autoCommandBar> + <name>СписокКоманднаяПанель</name> + <id>3</id> + <horizontalAlign>Left</horizontalAlign> + </autoCommandBar> + <searchStringAddition> + <name>СписокСтрокаПоиска</name> + <id>7</id> + <extendedTooltip> + <name>СписокСтрокаПоискаРасширеннаяПодсказка</name> + <id>9</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокСтрокаПоискаКонтекстноеМеню</name> + <id>8</id> + <autoFill>true</autoFill> + </contextMenu> + <source>Список</source> + <extInfo xsi:type="form:SearchStringAdditionExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + </extInfo> + </searchStringAddition> + <viewStatusAddition> + <name>СписокСостояниеПросмотра</name> + <id>10</id> + <extendedTooltip> + <name>СписокСостояниеПросмотраРасширеннаяПодсказка</name> + <id>12</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокСостояниеПросмотраКонтекстноеМеню</name> + <id>11</id> + <autoFill>true</autoFill> + </contextMenu> + <type>ViewStatusAddition</type> + <source>Список</source> + <extInfo xsi:type="form:ViewStatusAdditionExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + </extInfo> + </viewStatusAddition> + <searchControlAddition> + <name>СписокУправлениеПоиском</name> + <id>13</id> + <extendedTooltip> + <name>СписокУправлениеПоискомРасширеннаяПодсказка</name> + <id>15</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокУправлениеПоискомКонтекстноеМеню</name> + <id>14</id> + <autoFill>true</autoFill> + </contextMenu> + <type>SearchControlAddition</type> + <source>Список</source> + <extInfo xsi:type="form:SearchControlAdditionExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + </extInfo> + </searchControlAddition> + <extendedTooltip> + <name>СписокРасширеннаяПодсказка</name> + <id>6</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокКонтекстноеМеню</name> + <id>2</id> + <autoFill>true</autoFill> + </contextMenu> + <representation>Tree</representation> + <changeRowSet>true</changeRowSet> + <changeRowOrder>true</changeRowOrder> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <autoMaxRowsCount>true</autoMaxRowsCount> + <choiceMode>true</choiceMode> + <selectionMode>MultiRow</selectionMode> + <headerHeight>1</headerHeight> + <footerHeight>1</footerHeight> + <horizontalScrollBar>AutoUse</horizontalScrollBar> + <verticalScrollBar>AutoUse</verticalScrollBar> + <horizontalLines>true</horizontalLines> + <verticalLines>true</verticalLines> + <horizontalLinesBWA>false</horizontalLinesBWA> + <verticalLinesBWA>false</verticalLinesBWA> + <useAlternationRowColorBWA>false</useAlternationRowColorBWA> + <searchOnInput>Auto</searchOnInput> + <initialListView>Auto</initialListView> + <initialTreeView>ExpandTopLevel</initialTreeView> + <horizontalStretch>true</horizontalStretch> + <verticalStretch>true</verticalStretch> + <enableStartDrag>true</enableStartDrag> + <enableDrag>true</enableDrag> + <rowPictureDataPath xsi:type="form:DataPath"> + <segments>Список.DefaultPicture</segments> + </rowPictureDataPath> + <searchStringLocation>None</searchStringLocation> + <viewStatusLocation>None</viewStatusLocation> + <searchControlLocation>None</searchControlLocation> + <autoMaxCardHeight>true</autoMaxCardHeight> + <extInfo xsi:type="form:DynamicListTableExtInfo"> + <autoRefreshPeriod>60</autoRefreshPeriod> + <period> + <startDate>0001-01-01T00:00:00</startDate> + <endDate>0001-01-01T00:00:00</endDate> + </period> + <choiceFoldersAndItems>Folders</choiceFoldersAndItems> + <topLevelParent xsi:type="core:UndefinedValue"/> + <showRoot>true</showRoot> + <allowRootChoice>true</allowRootChoice> + <allowGettingCurrentRowURL>true</allowGettingCurrentRowURL> + </extInfo> + </items> + <autoCommandBar> + <name>ФормаКоманднаяПанель</name> + <id>-1</id> + <horizontalAlign>Left</horizontalAlign> + <autoFill>true</autoFill> + </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> + <excludedCommands>Create</excludedCommands> + <windowOpeningMode>LockOwner</windowOpeningMode> + <saveWindowSettings>true</saveWindowSettings> + <autoTitle>true</autoTitle> + <autoUrl>true</autoUrl> + <group>Vertical</group> + <autoFillCheck>true</autoFillCheck> + <allowFormCustomize>true</allowFormCustomize> + <enabled>true</enabled> + <verticalScroll>UseIfNecessary</verticalScroll> + <showTitle>auto</showTitle> + <showCloseButton>true</showCloseButton> + <attributes> + <name>Список</name> + <id>1</id> + <valueType> + <types>DynamicList</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <main>true</main> + <extInfo xsi:type="form:DynamicListExtInfo"> + <mainTable>Catalog.ГруппыДоступа</mainTable> + <dynamicDataRead>true</dynamicDataRead> + <autoFillAvailableFields>true</autoFillAvailableFields> + <autoSaveUserSettings>true</autoSaveUserSettings> + <getInvisibleFieldPresentations>true</getInvisibleFieldPresentations> + </extInfo> + </attributes> + <commandInterface> + <navigationPanel/> + <commandBar/> + </commandInterface> + <extInfo xsi:type="form:DynamicListFormExtInfo"/> +</form:Form> diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаВыбораГруппы/Module.bsl b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаВыбораГруппы/Module.bsl new file mode 100644 index 000000000..5c5df988e --- /dev/null +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаВыбораГруппы/Module.bsl @@ -0,0 +1,18 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + // Отбор только групп. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ЭтоГруппа", Истина, , , Истина); + + // Отбор не помеченных на удаление. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + +КонецПроцедуры diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаГруппы/Form.form b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаГруппы/Form.form index bf2dc6469..7463d7201 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаГруппы/Form.form +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаГруппы/Form.form @@ -11,6 +11,10 @@ <dataPath xsi:type="form:DataPath"> <segments>Объект.Description</segments> </dataPath> + <toolTip> + <key>ru</key> + <value>Наименование группы (папки)</value> + </toolTip> <extendedTooltip> <name>НаименованиеРасширеннаяПодсказка</name> <id>5</id> @@ -44,6 +48,10 @@ <items xsi:type="form:FormField"> <name>Родитель</name> <id>3</id> + <title> + <key>ru</key> + <value>Вышестоящая группа (папка)</value> + true true @@ -52,6 +60,10 @@ Объект.Parent + + ru + Вышестоящая группа (папка), объединяющая группы (папки) для удобства поиска + РодительРасширеннаяПодсказка 7 diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index 360d5fa46..91027f589 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,21 +1,6 @@ - - Ссылка - NotInList - - - -1 - - Inaccessible - - - false - ПометкаУдаления - Equal - false - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Form.form index ee2fa0af7..c879f4d3a 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Form.form @@ -655,12 +655,6 @@ Справочник.ГруппыДоступа КАК ГруппыДоступа ГДЕ ВЫБОР - КОГДА &РежимВыбора - И &РежимВыбораТолькоГрупп - ТОГДА ГруппыДоступа.ЭтоГруппа - ИНАЧЕ ИСТИНА - КОНЕЦ - И ВЫБОР КОГДА &Профиль = ЗНАЧЕНИЕ(Справочник.ПрофилиГруппДоступа.ПустаяСсылка) ТОГДА ИСТИНА ИНАЧЕ ГруппыДоступа.Профиль = &Профиль diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Help/ru.html b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Help/ru.html index c9bc9cfe6..f17e84d61 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Help/ru.html +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Help/ru.html @@ -1,4 +1,4 @@ - +

Назначение групп доступа см. здесь.

Список групп доступа позволяет посмотреть имеющиеся настройки прав с ограничениями по нименованию.

Для удобства сделана возможность отоборажения профиля группы.

diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Module.bsl index e71948900..e74b2c4fd 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаСписка/Module.bsl @@ -8,6 +8,10 @@ Возврат; КонецЕсли; + Если Параметры.РежимВыбора Тогда + КлючНазначенияИспользования = "ВыборПодбор"; + КонецЕсли; + Элементы.Список.РежимВыбора = Параметры.РежимВыбора; РодительПерсональныхГруппДоступа = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа(Истина); @@ -27,8 +31,7 @@ Элементы.Список.Отображение = ОтображениеТаблицы.Список; Автозаголовок = Ложь; - Заголовок = УправлениеДоступомСлужебный.ЗаголовокПодчиненнойФормы( - НСтр("ru = 'Группы доступа: %1 (%2)'"), Параметры.Профиль); + Заголовок = НСтр("ru = 'Группы доступа'"); Элементы.ФормаСоздатьГруппу.Видимость = Ложь; Элементы.СписокКонтекстноеМенюСоздатьГруппу.Видимость = Ложь; @@ -48,20 +51,14 @@ СписокНедоступныхГрупп = Новый СписокЗначений; Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда - СписокНедоступныхГрупп.Добавить(Справочники.ГруппыДоступа.Администраторы); + // Скрытие группы доступа Администраторы. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", Справочники.ГруппыДоступа.Администраторы, + ВидСравненияКомпоновкиДанных.НеРавно, , Истина); КонецЕсли; - Список.Отбор.Элементы[0].ПравоеЗначение = СписокНедоступныхГрупп; РежимВыбора = Параметры.РежимВыбора; - Список.Параметры.УстановитьЗначениеПараметра( - "РежимВыбора", - Параметры.РежимВыбора); - - Список.Параметры.УстановитьЗначениеПараметра( - "РежимВыбораТолькоГрупп", - Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы); - Список.Параметры.УстановитьЗначениеПараметра( "ОшибкаОбъектНеНайден", НСтр("ru = '<Объект не найден>'")); @@ -71,17 +68,12 @@ РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; // Отбор не помеченных на удаление. - Список.Отбор.Элементы[1].Использование = Истина; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); Элементы.Список.РежимВыбора = Истина; Элементы.Список.ВыборГруппИЭлементов = Параметры.ВыборГруппИЭлементов; - Если Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы Тогда - - Элементы.Список.НачальноеОтображениеДерева = - НачальноеОтображениеДерева.РаскрыватьВерхнийУровень; - - Элементы.Список.Отображение = ОтображениеТаблицы.Дерево; - КонецЕсли; АвтоЗаголовок = Ложь; Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Form.form index b7b4ae111..38f03db32 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Form.form @@ -2630,6 +2630,10 @@ Left true + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Help/ru.html index 739960f0d..552c348b6 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ - +

Назначение групп доступа см. здесь.

Для группы доступа задается профиль, список участников и ограничения доступа.

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

diff --git a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl index 2635467f0..343dfe763 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/Forms/ФормаЭлемента/Module.bsl @@ -79,14 +79,14 @@ Элементы.ВидыДоступаИзменить.Доступность = НЕ ТолькоПросмотр; Если ОбщегоНазначенияПовтИсп.РазделениеВключено() - И Объект.Ссылка <> Справочники.ГруппыДоступа.Администраторы Тогда + И Объект.Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда ДействияСПользователемСервиса = Неопределено; УправлениеДоступомСлужебный.ПриПолученииДействийСПользователемСервиса(ДействияСПользователемСервиса); Если НЕ ДействияСПользователемСервиса.ИзменениеАдминистративногоДоступа Тогда ВызватьИсключение - НСтр("ru = 'Не достаточно прав доступа для изменения состава администраторов'"); + НСтр("ru = 'Не достаточно прав доступа для изменения состава администраторов.'"); КонецЕсли; КонецЕсли; @@ -146,6 +146,18 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.АутентификацияВСервисе") + И ВыбранноеЗначение <> Неопределено Тогда + + ПарольПользователяСервиса = ВыбранноеЗначение; + Записать(); + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) @@ -160,8 +172,17 @@ &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) - Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().РазделениеВключено Тогда - СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе(ПарольПользователяСервиса, Отказ); + Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().РазделениеВключено + И Объект.Ссылка = ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда + + ПарольЕщёНеВведен = Ложь; + СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе( + ЭтаФорма, ПарольПользователяСервиса, ПарольЕщёНеВведен); + + Если ПарольЕщёНеВведен Тогда + Отказ = Истина; + Возврат; + КонецЕсли; КонецЕсли; КонецПроцедуры @@ -197,7 +218,8 @@ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И Объект.Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда - ТекущийОбъект.ДополнительныеСвойства.Вставить("ПарольПользователяСервиса", ПарольПользователяСервиса); + ТекущийОбъект.ДополнительныеСвойства.Вставить( + "ПарольПользователяСервиса", ПарольПользователяСервиса); КонецЕсли; КонецПроцедуры @@ -393,30 +415,13 @@ Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() И Объект.Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда - Пользователи.НайтиНеоднозначныхПользователейИБ(); + ОписаниеОшибки = ""; + УправлениеДоступомСлужебный.ПроверитьНаличиеПользователяИБВГруппеДоступаАдминистраторы( + ПользователиГруппы.ПолучитьЭлементы(), ОписаниеОшибки); - // Проверка пустого списка пользователей ИБ в группе доступа Администраторы. - УстановитьПривилегированныйРежим(Истина); - НайденПользовательИБ = Ложь; - - Для каждого ОписаниеПользователя ИЗ ПользователиГруппы.ПолучитьЭлементы() Цикл - - Если ЗначениеЗаполнено(ОписаниеПользователя.Пользователь) - И ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору( - ОписаниеПользователя.Пользователь.ИдентификаторПользователяИБ) <> Неопределено Тогда - - НайденПользовательИБ = Истина; - Прервать; - КонецЕсли; - КонецЦикла; - - Если НЕ НайденПользовательИБ Тогда - + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, - "ПользователиГруппы", - НСтр("ru = 'В группе доступа Администраторы - |должен быть хотя бы один пользователь, - |которому разрешен доступ к информационной базе.'")); + "ПользователиГруппы", ОписаниеОшибки); КонецЕсли; КонецЕсли; @@ -1969,4 +1974,3 @@ КонецЕсли; КонецПроцедуры - diff --git a/SSL/src/Catalogs/ГруппыДоступа/Help/ru.html b/SSL/src/Catalogs/ГруппыДоступа/Help/ru.html index 263330e40..330891784 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/Help/ru.html +++ b/SSL/src/Catalogs/ГруппыДоступа/Help/ru.html @@ -1,4 +1,4 @@ - +

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

Набор прав и возможности по их ограничению определяются заданным профилем групп доступа. Например, группа доступа "Менеджеры по продажам ПО делового назначения" с пользователями Иванов и Петров может ссылаться на профиль "Менеджер по продажам", в котором предусмотрена возможность ограничения по виду доступа "Виды номенклатуры". Тогда если по этому виду доступа для всех значений указать вариант "Запрещены", а в список добавить вид номенклатуры "ПО делового назначения", то Иванову и Петрову будут доступны только те данные и операции, которые связаны с ПО делового назначения.

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

diff --git a/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl b/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl index 87138bc12..9dfa24c0d 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl +++ b/SSL/src/Catalogs/ГруппыДоступа/ManagerModule.bsl @@ -178,4 +178,15 @@ КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Обновление информационной базы + +Процедура ЗаполнитьПрофильГруппыДоступаАдминистраторы() Экспорт + + Объект = Администраторы.ПолучитьОбъект(); + Объект.Профиль = Справочники.ПрофилиГруппДоступа.Администратор; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); + +КонецПроцедуры + #КонецЕсли \ No newline at end of file diff --git a/SSL/src/Catalogs/ГруппыДоступа/ГруппыДоступа.mdo b/SSL/src/Catalogs/ГруппыДоступа/ГруппыДоступа.mdo index ca28658b9..0d20ec5a3 100644 --- a/SSL/src/Catalogs/ГруппыДоступа/ГруппыДоступа.mdo +++ b/SSL/src/Catalogs/ГруппыДоступа/ГруппыДоступа.mdo @@ -68,9 +68,13 @@ Use Parent + + ru + Группа (папка) + ru - Папка, объединяющая группы доступа для удобства поиска + Группа (папка), объединяющая группы доступа для удобства поиска true @@ -134,7 +138,7 @@ Catalog.ГруппыДоступа.Form.ФормаГруппы Catalog.ГруппыДоступа.Form.ФормаСписка Catalog.ГруппыДоступа.Form.ФормаСписка - Catalog.ГруппыДоступа.Form.ФормаСписка + Catalog.ГруппыДоступа.Form.ФормаВыбораГруппы Профиль @@ -239,6 +243,25 @@ Use Use + + ОсновнаяГруппаДоступаПоставляемогоПрофиля + + ru + Основная группа доступа поставляемого профиля + + + Boolean + + + ru + Определяет основную группу доступа поставляемого профиля без видов доступа для программного управления составом пользователей. + + + + + Use + Use + @@ -436,6 +459,15 @@ PersonalComputer MobileDevice + + ФормаВыбораГруппы + + ru + Форма выбора группы + + PersonalComputer + MobileDevice + ОбновлениеДанныхОграниченияДоступа diff --git a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index d1c2189c7..91027f589 100644 --- a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,30 +1,10 @@ - - false - ПометкаУдаления - Equal - false - - - false - Ссылка - NotInList - Справочник.ГруппыПользователей.ВсеПользователи - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb - - Предопределенный - Desc - - - Наименование - Asc - Normal 88619765-ccb3-46c6-ac52-38e9c992ebd4 diff --git a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Form.form index 82d4e268a..e3073d887 100644 --- a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Form.form @@ -243,6 +243,7 @@ OnCreateAtServer ПриСозданииНаСервере
+ 65 DontBlock true true diff --git a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Module.bsl index 74146249c..8ceb386b3 100644 --- a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаСписка/Module.bsl @@ -8,14 +8,24 @@ Возврат; КонецЕсли; + НастроитьПорядокГруппыВсеПользователи(Список); + Если Параметры.РежимВыбора Тогда + КлючНазначенияИспользования = "ВыборПодбор"; РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; Элементы.Список.РежимВыбора = Истина; + // Отбор не помеченных на удаление. - Список.Отбор.Элементы[0].Использование = Истина; - Список.Отбор.Элементы[1].Использование = Параметры.Свойство("ВыборРодителя"); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + + // Исключение выбора группы Все внешние пользователи в качестве родителя. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", Справочники.ГруппыПользователей.ВсеПользователи, + ВидСравненияКомпоновкиДанных.НеРавно, , Параметры.Свойство("ВыборРодителя")); Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда // Режим подбора. @@ -28,3 +38,35 @@ КонецЕсли; КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Процедура НастроитьПорядокГруппыВсеПользователи(Список) + + Перем Порядок; + + // Порядок. + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + Иначе + Порядок = Список.Порядок; + КонецЕсли; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Предопределенный"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры diff --git a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаЭлемента/Help/ru.html index eed3716c5..f8a5a9c94 100644 --- a/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ГруппыПользователей/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ - +

Карточка группы пользователей позволяет просматривать и редактировать свойства группы.

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

См. также

diff --git a/SSL/src/Catalogs/ГруппыПользователей/Help/ru.html b/SSL/src/Catalogs/ГруппыПользователей/Help/ru.html index 96d68075e..5dedb0817 100644 --- a/SSL/src/Catalogs/ГруппыПользователей/Help/ru.html +++ b/SSL/src/Catalogs/ГруппыПользователей/Help/ru.html @@ -1,4 +1,4 @@ - +

В этом списке ведется учет групп пользователей.

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

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

diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Form.form b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Form.form index a87cf04e8..38d473845 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Form.form +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Form.form @@ -772,7 +772,7 @@ OnCreateAtServer ПриСозданииНаСервере
- DontBlock + LockOwner true true Vertical diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Module.bsl index 40edb8fe1..96c638e9a 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Module.bsl +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/БыстрыйДоступКДополнительнымОтчетамИОбработкам/Module.bsl @@ -3,15 +3,13 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Быстрый доступ к команде ""%1""'"), - Параметры.ПредставлениеКоманды - ); + Параметры.ПредставлениеКоманды); Для Каждого ПользовательСтрока Из Параметры.ПользователиСБыстрымДоступом Цикл НоваяСтрока = ПользователиКороткогоСписка.Добавить(); @@ -122,13 +120,13 @@ &НаКлиенте Процедура ОК(Команда) - Результат = Новый СписокЗначений; + РезультатВыбора = Новый СписокЗначений; Для Каждого ЭлементКоллекции Из ПользователиКороткогоСписка Цикл - Результат.Добавить(ЭлементКоллекции.Пользователь); + РезультатВыбора.Добавить(ЭлементКоллекции.Пользователь); КонецЦикла; - Закрыть(Результат); + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПодборРазделов/Form.form b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПодборРазделов/Form.form index 9cb31a8e5..92e045557 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПодборРазделов/Form.form +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПодборРазделов/Form.form @@ -318,7 +318,7 @@ OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner true true true diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПодборРазделов/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПодборРазделов/Module.bsl index 974dd0727..934e95a3d 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПодборРазделов/Module.bsl +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ПодборРазделов/Module.bsl @@ -3,8 +3,7 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; @@ -48,15 +47,15 @@ &НаКлиенте Процедура ОК(Команда) - Результат = Новый СписокЗначений; + РезультатВыбора = Новый СписокЗначений; Для Каждого РазделЭлемент Из Разделы Цикл Если РазделЭлемент.Используется Тогда - Результат.Добавить(РазделЭлемент.Раздел); + РезультатВыбора.Добавить(РазделЭлемент.Раздел); КонецЕсли; КонецЦикла; - Закрыть(Результат); + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form index f4fcf23de..bd76767bd 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Form.form @@ -748,7 +748,7 @@ КОГДА &ПубликацияОтбор = НЕОПРЕДЕЛЕНО ТОГДА ИСТИНА КОГДА &ПубликацияОтбор = 1 - ТОГДА Таблица.Публикация В (&ВсеПубликацииКромеНеиспользуюшихся) + ТОГДА Таблица.Публикация В (&ВсеПубликацииКромеНеиспользующихся) ИНАЧЕ Таблица.Публикация = &ПубликацияОтбор КОНЕЦ И ВЫБОР diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl index a8cf0c6f8..cd98b5d8a 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаСписка/Module.bsl @@ -28,19 +28,18 @@ ДоступныеВидыПубликации = ДополнительныеОтчетыИОбработкиПовтИсп.ДоступныеВидыПубликации(); - ВсеПубликацииКромеНеиспользуюшихся = Новый Массив; - ВсеПубликацииКромеНеиспользуюшихся.Добавить(ВидИспользуется); + ВсеПубликацииКромеНеиспользующихся = Новый Массив; + ВсеПубликацииКромеНеиспользующихся.Добавить(ВидИспользуется); Если ДоступныеВидыПубликации.Найти(ВидРежимОтладки) <> Неопределено Тогда - ВсеПубликацииКромеНеиспользуюшихся.Добавить(ВидРежимОтладки); + ВсеПубликацииКромеНеиспользующихся.Добавить(ВидРежимОтладки); КонецЕсли; - Если ВсеПубликацииКромеНеиспользуюшихся.Количество() > 1 Тогда + Если ВсеПубликацииКромеНеиспользующихся.Количество() > 1 Тогда ПредставлениеМассива = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '%1 или %2'"), - Строка(ВсеПубликацииКромеНеиспользуюшихся[0]), - Строка(ВсеПубликацииКромеНеиспользуюшихся[1]) - ); + Строка(ВсеПубликацииКромеНеиспользующихся[0]), + Строка(ВсеПубликацииКромеНеиспользующихся[1])); СписокВыбора.Добавить(1, ПредставлениеМассива); @@ -67,7 +66,7 @@ Список.Параметры.УстановитьЗначениеПараметра("ПубликацияОтбор", ПубликацияОтбор); Список.Параметры.УстановитьЗначениеПараметра("ВидОтбор", ВидОтбор); Список.Параметры.УстановитьЗначениеПараметра("ВидыДопОтчетов", ВидыДопОтчетов); - Список.Параметры.УстановитьЗначениеПараметра("ВсеПубликацииКромеНеиспользуюшихся", ВсеПубликацииКромеНеиспользуюшихся); + Список.Параметры.УстановитьЗначениеПараметра("ВсеПубликацииКромеНеиспользующихся", ВсеПубликацииКромеНеиспользующихся); Элементы.КнопкиДобавления.Видимость = ДополнительныеОтчетыИОбработки.ПравоДобавления(); diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Form.form index 1a5995b94..77e385f39 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Form.form @@ -2553,6 +2553,10 @@ Left true + + ChoiceProcessing + ОбработкаВыбора + NotificationProcessing ОбработкаОповещения diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Help/ru.html index 38e485a56..07af07be4 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ - +

Для дополнительных обработок или отчетов, предназначенных для работы с конкретными объектами, можно определить состав объектов, в которых будут доступны команды обработки или отчета (команда Назначение обработки).

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

Для обработок и отчетов, которые вызываются из командного интерфейса (не прикрепляются к объектам конфигурации):

diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl index 9b52d09e9..303adc9e0 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Forms/ФормаЭлемента/Module.bsl @@ -1,3 +1,6 @@ +&НаКлиенте +Перем КлиентскийКэш; + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -47,8 +50,7 @@ АдресРазрешений = ПоместитьВоВременноеХранилище( РеквизитФормыВЗначение("Объект").Разрешения.Выгрузить(), - ЭтаФорма.УникальныйИдентификатор - ); + ЭтаФорма.УникальныйИдентификатор); УстановитьВидимостьДоступность(); @@ -57,6 +59,8 @@ &НаКлиенте Процедура ПриОткрытии(Отказ) + КлиентскийКэш = Новый Структура; + Если ЭтоНовый Тогда Если НЕ ОткрытьДиалогЗагрузкиФайлаОбработкиОтчета(Истина) Тогда @@ -67,6 +71,53 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.ДополнительныеОтчетыИОбработки.Форма.ПодборРазделов") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("СписокЗначений") Тогда + Возврат; + КонецЕсли; + + Объект.Разделы.Очистить(); + Для Каждого ЭлементСписка Из ВыбранноеЗначение Цикл + НоваяСтрока = Объект.Разделы.Добавить(); + НоваяСтрока.Раздел = ЭлементСписка.Значение; + КонецЦикла; + + Модифицированность = Истина; + УстановитьВидимостьДоступность(); + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.ДополнительныеОтчетыИОбработки.Форма.БыстрыйДоступКДополнительнымОтчетамИОбработкам") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("СписокЗначений") Тогда + Возврат; + КонецЕсли; + + ЭлементКоманда = Объект.Команды.НайтиПоИдентификатору(КлиентскийКэш.ИдентификаторСтрокиКоманды); + Если ЭлементКоманда = Неопределено Тогда + Возврат; + КонецЕсли; + + Найденные = БыстрыйДоступ.НайтиСтроки(Новый Структура("ИдентификаторКоманды", ЭлементКоманда.Идентификатор)); + Для Каждого СтрокаТаблицы Из Найденные Цикл + БыстрыйДоступ.Удалить(СтрокаТаблицы); + КонецЦикла; + + Для Каждого ЭлементСписка Из ВыбранноеЗначение Цикл + СтрокаТаблицы = БыстрыйДоступ.Добавить(); + СтрокаТаблицы.ИдентификаторКоманды = ЭлементКоманда.Идентификатор; + СтрокаТаблицы.Пользователь = ЭлементСписка.Значение; + КонецЦикла; + + ЭлементКоманда.БыстрыйДоступПредставление = ПредставлениеБыстрогоДоступаПользователей(ВыбранноеЗначение.Количество()); + Модифицированность = Истина; + + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) @@ -85,8 +136,7 @@ АдресДанныхОбработки = ПоместитьВоВременноеХранилище( ТекущийОбъект.ХранилищеОбработки.Получить(), - УникальныйИдентификатор - ); + УникальныйИдентификатор); КонецЕсли; @@ -123,13 +173,15 @@ ТекущийОбъект.ДополнительныеСвойства.Вставить("БыстрыйДоступ", БыстрыйДоступ.Выгрузить()); ТекущийОбъект.Разрешения.Загрузить( - ПолучитьИзВременногоХранилища(АдресРазрешений) - ); + ПолучитьИзВременногоХранилища(АдресРазрешений)); КонецПроцедуры &НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + Если ТекущийОбъект.ДополнительныеСвойства.Свойство("ОшибкаПодключения") Тогда + Сообщить(ТекущийОбъект.ДополнительныеСвойства.ОшибкаПодключения); + КонецЕсли; ЭтоНовый = Ложь; УстановитьВидимостьДоступность(); КонецПроцедуры @@ -143,8 +195,7 @@ ОбщегоНазначенияКлиент.ОткрытьФормуРедактированияКомментария( Объект.Комментарий, Объект.Комментарий, - Модифицированность - ); + Модифицированность); КонецПроцедуры &НаКлиенте @@ -174,8 +225,7 @@ ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Пометить ""%1"" на удаление?'"), - Вариант.Наименование - ); + Вариант.Наименование); Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Да); Если Ответ <> КодВозвратаДиалога.Да Тогда @@ -311,7 +361,12 @@ МассивВариантов.Добавить(Вариант.Ссылка); КонецЕсли; КонецЦикла; - ДополнительныеОтчетыИОбработкиКлиент.ПриОткрытииДиалогаРазмещенияВариантовДополнительныхОтчетовВРазделах(МассивВариантов); + + // Открывает диалог размещения нескольких вариантов отчетов в разделах командного интерфейса. + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + МодульВариантыОтчетовКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетовКлиент"); + МодульВариантыОтчетовКлиент.ОткрытьДиалогРазмещенияВариантовВРазделах(МассивВариантов); + КонецЕсли; КонецПроцедуры &НаКлиенте @@ -325,20 +380,11 @@ Разделы.Добавить(СтрокаТаблицы.Раздел); КонецЦикла; - СписокРазделов = ОткрытьФормуМодально( - "Справочник.ДополнительныеОтчетыИОбработки.Форма.ПодборРазделов", - Новый Структура("Разделы,ВидОбработки", Разделы, Объект.Вид) - ); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Разделы", Разделы); + ПараметрыФормы.Вставить("ВидОбработки", Объект.Вид); - Если ТипЗнч(СписокРазделов) = Тип("СписокЗначений") Тогда - Объект.Разделы.Очистить(); - Для Каждого ЭлементСписка Из СписокРазделов Цикл - НоваяСтрока = Объект.Разделы.Добавить(); - НоваяСтрока.Раздел = ЭлементСписка.Значение; - КонецЦикла; - Модифицированность = Истина; - УстановитьВидимостьДоступность(); - КонецЕсли; + ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.ПодборРазделов", ПараметрыФормы, ЭтаФорма); Иначе // Выбор объектов метаданных ПараметрыФормы = ПодготовитьПараметрыФормыВыборОбъектовМетаданных(); @@ -420,8 +466,7 @@ ПоказатьОповещениеПользователя( НСтр("ru = 'Файл обработки успешно загружен'"), ?(ЭтоНовый, "", ПолучитьНавигационнуюСсылку(Объект.Ссылка)), - ПараметрыРегистрации.ИмяФайла - ); + ПараметрыРегистрации.ИмяФайла); Возврат Истина; КонецЕсли; @@ -462,12 +507,11 @@ | |Доступные действия: |1. ""Продолжить"" - продолжить загрузку, отключив Публикацию текущего отчета (обработки). - |2. ""Отключить конфликтующие"" - продолжить загрузку, отключив Публикацию отчетов (обработок), конфликтующих с загружамой по имени. - |3. ""Показать конфликтующие"" - отменить загрузку и показать список отчетов (обработок), конфликтующих с загружамой по имени. + |2. ""Отключить конфликтующие"" - продолжить загрузку, отключив Публикацию отчетов (обработок), конфликтующих с загружаемой по имени. + |3. ""Показать конфликтующие"" - отменить загрузку и показать список отчетов (обработок), конфликтующих с загружаемой по имени. |4. ""Отмена"" - отменить загрузку.'"), РезультатРегистрации.ИмяОбъекта, - ПредставлениеЗанявших - ); + ПредставлениеЗанявших); КнопкиВопроса = Новый СписокЗначений; КнопкиВопроса.Добавить(1, НСтр("ru = 'Продолжить'")); @@ -501,7 +545,7 @@ ИначеЕсли Ответ = 3 Тогда - // Показать конфлиткующие (отмена далее) + // Показать конфликтующие (отмена далее) Если КоличествоКонфликтующих = 1 И ( ЭтоНовый @@ -518,8 +562,7 @@ ПараметрыСписка.Отбор = Новый Структура("ИмяОбъекта, ЭтоГруппа", РезультатРегистрации.ИмяОбъекта, Ложь); ПараметрыСписка.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Дополнительные отчеты и обработки с именем объекта ""%1""'"), - РезультатРегистрации.ИмяОбъекта - ); + РезультатРегистрации.ИмяОбъекта); ПараметрыСписка.Отображение = "Список"; ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.ФормаСписка", ПараметрыСписка, , Истина); @@ -543,9 +586,7 @@ Предупреждение( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Вариант отчета ""%1"" не зарегистрирован.'"), - Вариант.Наименование - ) - ); + Вариант.Наименование)); Иначе ОткрытьЗначение(Вариант.Ссылка); КонецЕсли; @@ -566,9 +607,7 @@ НСтр("ru = 'Команда с вариантом запуска ""%1"" |не может использоваться в регламентных заданиях.'"), "%1", - Строка(ЭлементКоманда.ВариантЗапуска) - ) - ); + Строка(ЭлементКоманда.ВариантЗапуска))); Если ИзмененФлажок тогда ЭлементКоманда.РегламентноеЗаданиеИспользование = НЕ ЭлементКоманда.РегламентноеЗаданиеИспользование; КонецЕсли; @@ -625,27 +664,13 @@ ПользователиСБыстрымДоступом.Добавить(СтрокаТаблицы.Пользователь); КонецЦикла; - ПараметрыФормы = Новый Структура("ПользователиСБыстрымДоступом, ПредставлениеКоманды", ПользователиСБыстрымДоступом, ЭлементКоманда.Представление); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПользователиСБыстрымДоступом", ПользователиСБыстрымДоступом); + ПараметрыФормы.Вставить("ПредставлениеКоманды", ЭлементКоманда.Представление); - СписокПользователей = ОткрытьФормуМодально("Справочник.ДополнительныеОтчетыИОбработки.Форма.БыстрыйДоступКДополнительнымОтчетамИОбработкам", ПараметрыФормы); + КлиентскийКэш.Вставить("ИдентификаторСтрокиКоманды", ЭлементКоманда.ПолучитьИдентификатор()); + ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.Форма.БыстрыйДоступКДополнительнымОтчетамИОбработкам", ПараметрыФормы, ЭтаФорма); - Если ТипЗнч(СписокПользователей) <> Тип("СписокЗначений") Тогда - Возврат; - КонецЕсли; - - Для Каждого СтрокаТаблицы Из Найденные Цикл - БыстрыйДоступ.Удалить(СтрокаТаблицы); - КонецЦикла; - - Для Каждого ЭлементСписка Из СписокПользователей Цикл - СтрокаТаблицы = БыстрыйДоступ.Добавить(); - СтрокаТаблицы.ИдентификаторКоманды = ЭлементКоманда.Идентификатор; - СтрокаТаблицы.Пользователь = ЭлементСписка.Значение; - КонецЦикла; - - ЭлементКоманда.БыстрыйДоступПредставление = ПредставлениеБыстрогоДоступаПользователей(СписокПользователей.Количество()); - - Модифицированность = Истина; КонецПроцедуры &НаКлиенте @@ -708,8 +733,7 @@ БыстрыйДоступПредставление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( БыстрыйДоступПредставление, - Формат(КоличествоПользователей, "ЧГ=0") - ); + Формат(КоличествоПользователей, "ЧГ=0")); Возврат БыстрыйДоступПредставление; КонецФункции @@ -822,8 +846,7 @@ Элементы.СтраницыВарианты.ТекущаяСтраница = Элементы.ВариантыПоказать; Элементы.СтраницаВарианты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Варианты отчета (%1)'"), - Формат(КоличествоВариантов, "ЧГ=") - ); + Формат(КоличествоВариантов, "ЧГ=")); КонецЕсли; Иначе @@ -842,8 +865,7 @@ Элементы.СтраницаКоманды.Видимость = Истина; Элементы.СтраницаКоманды.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Команды (%1)'"), - Формат(КоличествоКоманд, "ЧГ=") - ); + Формат(КоличествоКоманд, "ЧГ=")); КонецЕсли; @@ -856,8 +878,7 @@ Элементы.СтраницаРазрешения.Видимость = Истина; Элементы.СтраницаРазрешения.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Разрешения (%1)'"), - Формат(КоличествоРазрешений, "ЧГ=") - ); + Формат(КоличествоРазрешений, "ЧГ=")); СформироватьСписокРазрешений(); КонецЕсли; @@ -957,8 +978,7 @@ Процедура СформироватьСписокРазрешений() ПредставлениеРазрешений = ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.СформироватьПредставлениеРазрешений( - ПолучитьТаблицуРазрешений() - ); + ПолучитьТаблицуРазрешений()); КонецПроцедуры @@ -974,8 +994,7 @@ Если Объект.Вид = ВидДополнительнаяОбработка ИЛИ Объект.Вид = ВидДополнительныйОтчет Тогда Найденные = БыстрыйДоступ.НайтиСтроки(Новый Структура("ИдентификаторКоманды", ЭлементКоманда.Идентификатор)); ЭлементКоманда.БыстрыйДоступПредставление = ПредставлениеБыстрогоДоступаПользователей( - Найденные.Количество() - ); + Найденные.Количество()); КонецЕсли; ЭлементКоманда.РегламентноеЗаданиеИспользование = Ложь; @@ -1020,8 +1039,7 @@ Иначе ЭлементКоманда.РегламентноеЗаданиеПредставление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не применимо для команд с вариантом запуска ""%1""'"), - Строка(ЭлементКоманда.ВариантЗапуска) - ); + Строка(ЭлементКоманда.ВариантЗапуска)); КонецЕсли; КонецЦикла; @@ -1031,7 +1049,14 @@ Процедура ВариантыДополнительногоОтчетаЗаполнить() ВариантыДополнительногоОтчета.Очистить(); - ВнешнийОбъект = ДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(Объект.Ссылка); + Попытка + ВнешнийОбъект = ДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(Объект.Ссылка); + Исключение + ТекстОшибки = НСтр("ru = 'Не удалось получить список вариантов отчета из-за ошибки, возникшей при подключении этого отчета:'"); + Сообщить(ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СтатусСообщения.Важное); + Возврат; + КонецПопытки; + ОтчетМетаданные = ВнешнийОбъект.Метаданные(); СхемаКДМетаданные = ОтчетМетаданные.ОсновнаяСхемаКомпоновкиДанных; Если СхемаКДМетаданные <> Неопределено Тогда @@ -1089,3 +1114,4 @@ Возврат ПолучитьИзВременногоХранилища(АдресРазрешений); КонецФункции + diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Help/ru.html b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Help/ru.html index 1c06da084..d3d1462a3 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Help/ru.html +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/Help/ru.html @@ -1,2 +1,2 @@ - +

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

\ No newline at end of file diff --git a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl index d1d37a504..02ffd6162 100644 --- a/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl +++ b/SSL/src/Catalogs/ДополнительныеОтчетыИОбработки/ObjectModule.bsl @@ -17,8 +17,7 @@ , , "Объект.ИспользоватьДляФормыОбъекта", - Отказ - ); + Отказ); КонецЕсли; КонецЕсли; @@ -72,8 +71,7 @@ Строка(Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена) ), , - "Объект.Публикация" - ); + "Объект.Публикация"); КонецЕсли; КонецЕсли; @@ -96,8 +94,7 @@ Если НЕ ЭтоНовый() И Вид <> ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Вид") Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Невозможно сменить вид существующего дополнительного отчета или обработки.'"),,,, - Отказ - ); + Отказ); Возврат; КонецЕсли; @@ -229,8 +226,7 @@ // Создать и зарегистрировать Команда.РегламентноеЗаданиеGUID = ДополнительныеОтчетыИОбработкиРегламентныеЗадания.ПолучитьИдентификаторЗадания( - Задание - ); + Задание); Иначе // Действие не требуется @@ -294,8 +290,7 @@ Использование, Лев(ПредставлениеЗадания(Команда), 120), ПараметрыЗадания, - Расписание - ); + Расписание); КонецЦикла; @@ -346,8 +341,7 @@ + " / " + НСтр("ru = 'Команда'") + ": " - + СокрЛП(Команда.Представление) - ); + + СокрЛП(Команда.Представление)); КонецФункции Функция РасписаниеЗадано(Расписание) @@ -400,18 +394,24 @@ Процедура ПриЗаписиГлобальногоОтчета(Отказ) Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда + Попытка + Если ЭтоНовый() Тогда + ВнешнийОбъект = ВнешниеОтчеты.Создать(ИмяОбъекта); + Иначе + ВнешнийОбъект = ДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(Ссылка); + КонецЕсли; + Исключение + ТекстОшибки = НСтр("ru = 'Ошибка подключения:'") + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + ДополнительныеОтчетыИОбработки.ЗаписатьОшибку(Ссылка, ТекстОшибки); + ДополнительныеСвойства.Вставить("ОшибкаПодключения", ТекстОшибки); + Возврат; + КонецПопытки; - Если ЭтоНовый() Тогда - ВнешнийОбъект = ВнешниеОтчеты.Создать(ИмяОбъекта); - Иначе - ВнешнийОбъект = ДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(Ссылка); - КонецЕсли; - - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); - Модуль.ОбработкаВариантовДополнительногоОтчета(ЭтотОбъект, Отказ, ВнешнийОбъект); + МодульВариантыОтчетов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); + МодульВариантыОтчетов.ОбработкаВариантовДополнительногоОтчета(ЭтотОбъект, Отказ, ВнешнийОбъект); КонецЕсли; КонецПроцедуры -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Module.bsl index ae40b19a2..7f4c75d18 100644 --- a/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ЗакладкиВзаимодействий/Forms/ФормаСписка/Module.bsl @@ -9,10 +9,17 @@ Возврат; КонецЕсли; + Если Параметры.Свойство("Отбор") И Параметры.Отбор.Свойство("Владелец") Тогда + ЭлементОтбора = Параметры.Отбор.Владелец; + Параметры.Отбор.Удалить("Владелец"); + Иначе + ЭлементОтбора = Пользователи.АвторизованныйПользователь(); + КонецЕсли; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Владелец", - Пользователи.АвторизованныйПользователь(), + ЭлементОтбора, ВидСравненияКомпоновкиДанных.Равно); КонецПроцедуры diff --git a/SSL/src/Catalogs/Заметки/Forms/МоиЗаметки/Module.bsl b/SSL/src/Catalogs/Заметки/Forms/МоиЗаметки/Module.bsl index 3b0b9181c..f1ef89c38 100644 --- a/SSL/src/Catalogs/Заметки/Forms/МоиЗаметки/Module.bsl +++ b/SSL/src/Catalogs/Заметки/Forms/МоиЗаметки/Module.bsl @@ -7,6 +7,10 @@ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; + + Если ОбщегоНазначения.ПриСозданииФормыНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ) Тогда + Возврат; + КонецЕсли; Список.Параметры.УстановитьЗначениеПараметра("Пользователь", Пользователи.ТекущийПользователь()); КонецПроцедуры diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index 089b27984..91027f589 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -5,18 +5,6 @@ dfcece9d-5077-440b-b6b3-45a5cb4538eb - - Владелец - Asc - - - ЭтоПапка - Desc - - - Ссылка - Asc - Normal 88619765-ccb3-46c6-ac52-38e9c992ebd4 diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Module.bsl index 9da2df531..b06eb2c8c 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Forms/ФормаСписка/Module.bsl @@ -9,20 +9,14 @@ Возврат; КонецЕсли; - Если Параметры.Отбор.Свойство("_Владелец", Свойство) - И ЗначениеЗаполнено(Свойство) Тогда - - Параметры.Отбор.Удалить("_Владелец"); - Параметры.Отбор.Вставить("Владелец", Свойство); - - ИначеЕсли Параметры.Отбор.Свойство("Владелец") - И ЗначениеЗаполнено(Параметры.Отбор.Владелец) Тогда - + Если Параметры.Отбор.Свойство("Владелец") Тогда Свойство = Параметры.Отбор.Владелец; + Параметры.Отбор.Удалить("Владелец"); КонецЕсли; Если НЕ ЗначениеЗаполнено(Свойство) Тогда Элементы.Свойство.Видимость = Истина; + НастроитьПорядокЗначенийПоСвойствам(Список); КонецЕсли; Если Параметры.РежимВыбора Тогда @@ -99,6 +93,41 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +&НаСервере +Процедура НастроитьПорядокЗначенийПоСвойствам(Список) + + Перем Порядок; + + // Порядок. + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + Иначе + Порядок = Список.Порядок; + КонецЕсли; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Владелец"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ЭтоГруппа"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры + &НаСервере Процедура УстановитьЗаголовок() @@ -169,8 +198,7 @@ Элементы.Владелец.Видимость = Ложь; Элементы.Список.Шапка = Ложь; Иначе - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора( - Список.Отбор, "Владелец"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Владелец"); Элементы.Список.Отображение = ОтображениеТаблицы.Список; Элементы.Список.ИзменятьСоставСтрок = Ложь; diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Help/ru.html b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Help/ru.html index 76c7e54ec..a3647efcb 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Help/ru.html +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектов/Help/ru.html @@ -1,4 +1,4 @@ - +

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

При формировании списка значений можно указать не только наименование в поле Значение, но и указать Вес значения (числовое поле). Это поле в дальнейшем можно использовать для анализа в отчетах. Логику использования этого поля пользователю необходимо продумывать самостоятельно. Например, для значений свойства Надежность можно задать вес следующим образом: для значений от единицы до тройки поставить вес равным нулю, а для значений четыре и пять равным единице. При таких весах в отчет можно быстро вывести надежных клиентов (у которых вес значения больше нуля).

 

\ No newline at end of file diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index 089b27984..91027f589 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -5,18 +5,6 @@ dfcece9d-5077-440b-b6b3-45a5cb4538eb - - Владелец - Asc - - - ЭтоПапка - Desc - - - Ссылка - Asc - Normal 88619765-ccb3-46c6-ac52-38e9c992ebd4 diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Module.bsl index be46960ec..fa395025d 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Forms/ФормаСписка/Module.bsl @@ -9,20 +9,14 @@ Возврат; КонецЕсли; - Если Параметры.Отбор.Свойство("_Владелец", Свойство) - И ЗначениеЗаполнено(Свойство) Тогда - - Параметры.Отбор.Удалить("_Владелец"); - Параметры.Отбор.Вставить("Владелец", Свойство); - - ИначеЕсли Параметры.Отбор.Свойство("Владелец") - И ЗначениеЗаполнено(Параметры.Отбор.Владелец) Тогда - + Если Параметры.Отбор.Свойство("Владелец") Тогда Свойство = Параметры.Отбор.Владелец; + Параметры.Отбор.Удалить("Владелец"); КонецЕсли; Если НЕ ЗначениеЗаполнено(Свойство) Тогда Элементы.Свойство.Видимость = Истина; + НастроитьПорядокЗначенийПоСвойствам(Список); КонецЕсли; Если Параметры.РежимВыбора Тогда @@ -75,6 +69,35 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +&НаСервере +Процедура НастроитьПорядокЗначенийПоСвойствам(Список) + + Перем Порядок; + + // Порядок. + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + Иначе + Порядок = Список.Порядок; + КонецЕсли; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Владелец"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры + &НаСервере Процедура УстановитьЗаголовок() @@ -138,8 +161,7 @@ Элементы.Владелец.Видимость = Ложь; Элементы.Список.Шапка = Ложь; Иначе - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора( - Список.Отбор, "Владелец"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Владелец"); Элементы.Список.Отображение = ОтображениеТаблицы.Список; Элементы.Список.ИзменятьСоставСтрок = Ложь; diff --git a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Help/ru.html b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Help/ru.html index fbbb66077..cf394ed4b 100644 --- a/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Help/ru.html +++ b/SSL/src/Catalogs/ЗначенияСвойствОбъектовИерархия/Help/ru.html @@ -1,4 +1,4 @@ - +

В списке Значения свойств объектов (иерархия) задаются значения дополнительных реквизитов и сведений. При этом для каждого дополнительного реквизита или сведения список значений будет свой. В списке можно использовать иерархию значений.

При формировании списка значений можно указать не только наименование в поле Значение, но и указать Вес значения (числовое поле). Это поле в дальнейшем можно использовать для анализа в отчетах. Логику использования этого поля пользователю необходимо продумывать самостоятельно. Например, для значений свойства Надежность можно задать вес следующим образом: для значений от единицы до тройки поставить вес равным нулю, а для значений четыре и пять равным единице. При таких весах в отчет можно быстро вывести надежных клиентов (у которых вес значения больше нуля).

 

\ No newline at end of file diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index 48fc28884..91027f589 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -5,49 +5,10 @@ dfcece9d-5077-440b-b6b3-45a5cb4538eb - - ПометкаУдаления - Desc - - - ПорядокКоллекции - Asc - - - Родитель - Asc - - - Синоним - Asc - Normal 88619765-ccb3-46c6-ac52-38e9c992ebd4 - - - - Синоним - - - ПолноеИмя - - - - - ПометкаБудущегоУдаления - Equal - true - - - - - ЦветТекста - web:DarkGray - - - Normal b75fecce-942b-4aed-abc9-e6a02e460fb3 diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Form.form index 366767fd7..d1e775c89 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Form.form @@ -31,7 +31,7 @@ true СинонимРасширеннаяПодсказка - 26 + 25 Label true true @@ -65,7 +65,7 @@ ПолноеИмяРасширеннаяПодсказка - 28 + 27 Label true true @@ -100,10 +100,10 @@
СписокСтрокаПоиска - 17 + 16 СписокСтрокаПоискаРасширеннаяПодсказка - 19 + 18 Label true true @@ -113,7 +113,7 @@ СписокСтрокаПоискаКонтекстноеМеню - 18 + 17 true Список @@ -123,10 +123,10 @@ СписокСостояниеПросмотра - 20 + 19 СписокСостояниеПросмотраРасширеннаяПодсказка - 22 + 21 Label true true @@ -136,7 +136,7 @@ СписокСостояниеПросмотраКонтекстноеМеню - 21 + 20 true ViewStatusAddition @@ -147,10 +147,10 @@ СписокУправлениеПоиском - 23 + 22 СписокУправлениеПоискомРасширеннаяПодсказка - 25 + 24 Label true true @@ -160,7 +160,7 @@ СписокУправлениеПоискомКонтекстноеМеню - 24 + 23 true SearchControlAddition @@ -171,7 +171,7 @@ СписокРасширеннаяПодсказка - 16 + 15 Label true true @@ -224,32 +224,6 @@ ФормаКоманднаяПанель -1 - - ОбновитьДанныеСправочника - 10 - true - true - - true - - - ОбновитьДанныеСправочникаРасширеннаяПодсказка - 15 - Label - true - true - - Left - - - Form.Command.ОбновитьДанныеСправочника - Normal - Auto - true - true - UserCmds - Auto - Left true @@ -292,6 +266,9 @@ Список.Parent + + Список.ПометкаБудущегоУдаления +
true
ВЫБРАТЬ @@ -341,28 +318,6 @@ true - - ОбновитьДанныеСправочника - - <key>ru</key> - <value>Обновить данные справочника</value> - - 1 - - ru - Обновить данные справочника по метаданным конфигурации - - - true - - - - ОбновитьДанныеСправочника - - - Auto - Auto - ВыбиратьГруппыОбъектовМетаданных diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Module.bsl index 9333273cf..6741dfa0d 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаСписка/Module.bsl @@ -8,23 +8,17 @@ Возврат; КонецЕсли; - Если НЕ Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда - Элементы.ОбновитьДанныеСправочника.Видимость = Ложь; - КонецЕсли; - Если Параметры.РежимВыбора Тогда + КлючНазначенияИспользования = "ВыборПодбор"; РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; Элементы.Список.РежимВыбора = Истина; - Элементы.ОбновитьДанныеСправочника.ТолькоВоВсехДействиях = Истина; Параметры.Отбор.Вставить("ПометкаУдаления", Ложь); Параметры.Отбор.Вставить("ПометкаБудущегоУдаления", Ложь); КонецЕсли; Параметры.Свойство("ВыбиратьГруппыОбъектовМетаданных", ВыбиратьГруппыОбъектовМетаданных); - Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда - Элементы.ОбновитьДанныеСправочника.Видимость = Ложь; - КонецЕсли; + УпорядочитьИОформитьСписок(); КонецПроцедуры @@ -64,48 +58,65 @@ КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ КОМАНД ФОРМЫ - -&НаКлиенте -Процедура ОбновитьДанныеСправочника(Команда) - - ЕстьИзменения = Ложь; - ЕстьУдаленные = Ложь; - - ОбновитьДанныеСправочникаНаСервере(ЕстьИзменения, ЕстьУдаленные); - - Если ЕстьИзменения Тогда - Текст = НСтр("ru = 'Обновление выполнено успешно.'"); - Иначе - Текст = НСтр("ru = 'Обновление не требуется.'"); - КонецЕсли; - - Если ЕстьУдаленные Тогда - Текст = Текст - + Символы.ПС - + Символы.ПС - + НСтр("ru = 'Найдены удаленные объекты метаданных - |(см. элементы, начинающиеся с символа ""?"").'"); - КонецЕсли; - - Предупреждение(Текст); - -КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ &НаСервере -Процедура ОбновитьДанныеСправочникаНаСервере(ЕстьИзменения, ЕстьУдаленные) +Процедура УпорядочитьИОформитьСписок() - УстановитьПривилегированныйРежим(Истина); + // Порядок. + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + Иначе + Порядок = Список.Порядок; + КонецЕсли; - Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(ЕстьИзменения, ЕстьУдаленные); + Порядок.Элементы.Очистить(); - Элементы.Список.Обновить(); + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ПометкаУдаления"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("ПорядокКоллекции"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Родитель"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Синоним"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + // Оформление. + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.НедоступныеДанныеЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.ПометкаБудущегоУдаления"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Истина; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("Синоним"); + ЭлементОформляемогоПоля.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ПолноеИмя"); + ЭлементОформляемогоПоля.Использование = Истина; КонецПроцедуры - - - diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаЭлемента/Form.form index f080bdcb7..2efa57208 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/Forms/ФормаЭлемента/Form.form @@ -606,7 +606,14 @@ Auto - + + + InformationRegister.НазначениеДополнительныхОбработок.StandardCommand.OpenByValue.ОбъектНазначения + FormNavigationPanelGoTo + 0 + + + diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl index 9f5546b14..673201365 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ManagerModule.bsl @@ -28,6 +28,8 @@ // Процедура ЗарегистрироватьПолноеИзменениеДляПодчиненныхУзловРИБ() Экспорт + ПроверкаИспользования(); + Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда Возврат; КонецЕсли; @@ -84,6 +86,8 @@ // Процедура ВыполнитьОбновлениеДанных(ЕстьИзменения = Ложь, ЕстьУдаленные = Ложь, ТолькоПроверка = Ложь, ЕстьКритичныеИзменения = Ложь, ТребуетсяОбновитьКэш = Ложь) Экспорт + ПроверкаИспользования(); + УстановитьПривилегированныйРежим(Истина); Если НЕ ТолькоПроверка Тогда @@ -121,6 +125,7 @@ Запрос.Текст = "ВЫБРАТЬ | Идентификаторы.Ссылка, + | НЕОПРЕДЕЛЕНО КАК ИмяПредопределенныхДанных, | Идентификаторы.Родитель, | Идентификаторы.ПометкаУдаления, | Идентификаторы.Предопределенный КАК Предопределенный, @@ -135,6 +140,9 @@ | Идентификаторы.КлючОбъектаМетаданных КАК ХранилищеКлюча |ИЗ | Справочник.ИдентификаторыОбъектовМетаданных КАК Идентификаторы"; + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕОПРЕДЕЛЕНО", "Идентификаторы.ИмяПредопределенныхДанных"); + КонецЕсли; Выгрузка = Запрос.Выполнить().Выгрузить(); Выгрузка.Колонки.Добавить("КлючОбъектаМетаданных"); Выгрузка.Колонки.Добавить("БезКлючаОбъектаМетаданных", Новый ОписаниеТипов("Булево")); @@ -200,6 +208,11 @@ КонецЕсли; Если Свойства.Предопределенный Тогда + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяПредопределенногоИдентификатора = Свойства.ИмяПредопределенныхДанных; + Иначе + ИмяПредопределенногоИдентификатора = ПолучитьИмяПредопределенного(Свойства.Ссылка); + КонецЕсли; ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'В справочнике ""Идентификаторы объектов метаданных"" |для предопределенного элемента @@ -207,8 +220,8 @@ |и представлением ""%2"" |не найдено типа объектов метаданных. | - |Следует удалить предопределенный элемент.'"), - ПолучитьИмяПредопределенного(Свойства.Ссылка), + |Для разработчика: следует удалить предопределенный элемент.'"), + ИмяПредопределенногоИдентификатора, Строка(Свойства.Ссылка)); КонецЕсли; @@ -384,15 +397,25 @@ ВызватьИсключение; КонецПопытки; + Если НЕ ТолькоПроверка Тогда + ПараметрЗапускаКлиента = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПараметрЗапуска"); + Если Найти(НРег(ПараметрЗапускаКлиента), НРег("ЗарегистрироватьПолноеИзменениеИОМДляПодчиненныхУзловРИБ")) > 0 Тогда + ЗарегистрироватьПолноеИзменениеДляПодчиненныхУзловРИБ(); + КонецЕсли; + КонецЕсли; + Если СнятьМонопольныйРежим Тогда УстановитьМонопольныйРежим(Ложь); КонецЕсли; + КонецПроцедуры // Только для внутреннего использования. Процедура ВыгрузитьДанныеСправочника(Знач КаталогВыгрузки) Экспорт + ПроверкаИспользования(); + Запись = Новый ЗаписьXML; Запись.ОткрытьФайл(КаталогВыгрузки + "MetadataObjectsIdentifiers.xml"); Запись.ЗаписатьОбъявлениеXML(); @@ -441,6 +464,8 @@ Знач СловарьЗамен, Знач КаталогВыгрузки) Экспорт + ПроверкаИспользования(); + // Перед загрузкой в пустую базу требутся обновление справочника. Запрос = Новый Запрос; Запрос.Текст = @@ -463,17 +488,17 @@ Если Чтение.ТипУзла <> ТипУзлаXML.НачалоЭлемента ИЛИ Чтение.Имя <> "Data" Тогда - ВызватьИсключение(НСтр("ru = 'Неверный формат файла MetadataObjectsIdentifiers.xml'")); + ВызватьИсключение НСтр("ru = 'Неверный формат файла MetadataObjectsIdentifiers.xml'"); КонецЕсли; Если НЕ Чтение.Прочитать() Тогда - ВызватьИсключение(НСтр("ru = 'Ошибка чтения XML. Обнаружено завершение файла.'")); + ВызватьИсключение НСтр("ru = 'Ошибка чтения XML. Обнаружено завершение файла.'"); КонецЕсли; Пока Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Цикл Данные = СериализаторXDTO.ПрочитатьXML(Чтение); - + КлючОбъектаМетаданных = Данные.КлючОбъектаМетаданных.Получить(); ОбъектМетаданных = ОбъектМетаданныхПоКлючу(КлючОбъектаМетаданных); @@ -494,7 +519,6 @@ СоответствиеСсылок.Вставить(Идентификатор.УникальныйИдентификатор(), ЗагружаемыйИдентификатор); КонецЕсли; - КонецЦикла; СтрокаФрагмента = СловарьЗамен.Добавить(); @@ -503,6 +527,16 @@ КонецПроцедуры +// Только для внутреннего использования. +Процедура ПроверкаИспользования() Экспорт + + Если СтандартныеПодсистемыПовтИсп.ОтключитьСправочникИдентификаторыОбъектовМетаданных() Тогда + ВызватьИсключение + НСтр("ru = 'Справочник ""Идентификаторы объектов метаданных"" не используется.'"); + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -658,6 +692,8 @@ // Только для внутреннего использования. Процедура ОбработкаДублейПодчиненногоУзлаПриЗагрузкеНового(Объект) Экспорт + ПроверкаИспользования(); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда // В модели сервиса не поддерживается. Возврат; @@ -955,7 +991,7 @@ НСтр("ru = 'Не найден идентификатор типа объектов метаданных |""%1"". | - |Следует добавить предопределенный элемент в + |Для разработчика: следует добавить предопределенный элемент в |Справочник ""Идентификаторы объектов метаданных"".'"), Строка.Имя); КонецПопытки; @@ -1781,7 +1817,8 @@ КонецЕсли; ЗаписьЖурналаРегистрации( - НСтр("ru = 'Идентификаторы объектов метаданных. Замена идентификатора'"), + НСтр("ru = 'Идентификаторы объектов метаданных. Замена идентификатора'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , diff --git a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ObjectModule.bsl b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ObjectModule.bsl index 9af71394a..2901136fa 100644 --- a/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ObjectModule.bsl +++ b/SSL/src/Catalogs/ИдентификаторыОбъектовМетаданных/ObjectModule.bsl @@ -8,6 +8,8 @@ // Процедура ПередЗаписью(Отказ) + Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования(); + // Отключение механизма регистрации объектов. ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); @@ -75,6 +77,8 @@ // Предотвращает удаление идентификаторов объектов метаданных не помеченных на удаление. Процедура ПередУдалением(Отказ) + Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования(); + Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; diff --git a/SSL/src/Catalogs/Календари/Forms/РасписаниеРаботы/Module.bsl b/SSL/src/Catalogs/Календари/Forms/РасписаниеРаботы/Module.bsl index 7b4fd0151..850db08e9 100644 --- a/SSL/src/Catalogs/Календари/Forms/РасписаниеРаботы/Module.bsl +++ b/SSL/src/Catalogs/Календари/Forms/РасписаниеРаботы/Module.bsl @@ -1,4 +1,3 @@ - /////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -38,7 +37,7 @@ Возврат; КонецЕсли; - Закрыть(Новый Структура("РасписаниеРаботы", РасписаниеДня)); + ОповеститьОВыборе(Новый Структура("РасписаниеРаботы", РасписаниеДня)); КонецПроцедуры @@ -47,7 +46,7 @@ БылиНажатыКнопкиЗакрытия = Истина; - Закрыть(); + ОповеститьОВыборе(Неопределено); КонецПроцедуры diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index 40ad973d5..2f37747cc 100644 --- a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,10 +1,6 @@ - - ВладелецГрафика - NotFilled - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Module.bsl index 90838c3dd..38a706a61 100644 --- a/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/Календари/Forms/ФормаСписка/Module.bsl @@ -14,4 +14,8 @@ Список.Параметры.УстановитьЗначениеПараметра("ТекущаяДата", ТекущаяДатаСеанса()); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ВладелецГрафика", , ВидСравненияКомпоновкиДанных.НеЗаполнено, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + КонецПроцедуры diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form index d29836994..31b794cd1 100644 --- a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Form.form @@ -2594,6 +2594,10 @@ Left true + + ChoiceProcessing + ОбработкаВыбора + OnCreateAtServer ПриСозданииНаСервере diff --git a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Module.bsl index 34d4c87e5..400862e4e 100644 --- a/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/Календари/Forms/ФормаЭлемента/Module.bsl @@ -1,3 +1,6 @@ +&НаКлиенте +Перем КонтекстВыбора; + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -67,6 +70,48 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.Календари.Форма.РасписаниеРаботы") Тогда + + Если ВыбранноеЗначение = Неопределено Или ТолькоПросмотр Тогда + Возврат; + КонецЕсли; + + // Удаляем ранее заполненное расписания для этого дня + СтрокиДня = Новый Массив; + Для Каждого СтрокаРасписания Из Объект.РасписаниеРаботы Цикл + Если СтрокаРасписания.НомерДня = КонтекстВыбора.НомерДня Тогда + СтрокиДня.Добавить(СтрокаРасписания.ПолучитьИдентификатор()); + КонецЕсли; + КонецЦикла; + Для Каждого ИдентификаторСтроки Из СтрокиДня Цикл + Объект.РасписаниеРаботы.Удалить(Объект.РасписаниеРаботы.НайтиПоИдентификатору(ИдентификаторСтроки)); + КонецЦикла; + + // заполняем расписание работы на день + Для Каждого ОписаниеИнтервала Из ВыбранноеЗначение.РасписаниеРаботы Цикл + НоваяСтрока = Объект.РасписаниеРаботы.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, ОписаниеИнтервала); + НоваяСтрока.НомерДня = КонтекстВыбора.НомерДня; + КонецЦикла; + + УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтаФорма, Ложь); + УстановитьСнятьМодифицированностьШаблона(ЭтаФорма, Истина); + + Если КонтекстВыбора.Источник = "ШаблонЗаполненияВыбор" Тогда + + СтрокаШаблона = Объект.ШаблонЗаполнения.НайтиПоИдентификатору(КонтекстВыбора.ИдентификаторСтрокиШаблона); + СтрокаШаблона.ДеньВключенВГрафик = ВыбранноеЗначение.РасписаниеРаботы.Количество() > 0; // расписание заполнено + СтрокаШаблона.ПредставлениеРасписания = ПредставлениеРасписанияДня(ЭтаФорма, КонтекстВыбора.НомерДня); + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Перем НомерГода; @@ -230,17 +275,18 @@ СтандартнаяОбработка = Ложь; СтрокаШаблона = Объект.ШаблонЗаполнения.НайтиПоИдентификатору(ВыбраннаяСтрока); - НомерДня = СтрокаШаблона.НомерСтроки; - РасписаниеЗаполнено = Неопределено; - РедактироватьРасписаниеДня(НомерДня, СтрокаШаблона.ПредставлениеРасписания, РасписаниеЗаполнено); + КонтекстВыбора = Новый Структура; + КонтекстВыбора.Вставить("Источник", "ШаблонЗаполненияВыбор"); + КонтекстВыбора.Вставить("НомерДня", СтрокаШаблона.НомерСтроки); + КонтекстВыбора.Вставить("ПредставлениеРасписания", СтрокаШаблона.ПредставлениеРасписания); + КонтекстВыбора.Вставить("ИдентификаторСтрокиШаблона", ВыбраннаяСтрока); - Если РасписаниеЗаполнено <> Неопределено Тогда - // если расписание заполнено - день включен в график - СтрокаШаблона.ДеньВключенВГрафик = РасписаниеЗаполнено; - КонецЕсли; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РасписаниеРаботы", РасписаниеРаботы(КонтекстВыбора.НомерДня)); + ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр); - СтрокаШаблона.ПредставлениеРасписания = ПредставлениеРасписанияДня(ЭтаФорма, НомерДня); + ОткрытьФорму("Справочник.Календари.Форма.РасписаниеРаботы", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -252,52 +298,21 @@ КонецПроцедуры -&НаКлиенте -Процедура РедактироватьРасписаниеДня(НомерДня, ПредставлениеРасписания, РасписаниеЗаполнено = Неопределено) - - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("РасписаниеРаботы", РасписаниеРаботы(НомерДня)); - ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр); - - РезультатРедактирования = ОткрытьФормуМодально("Справочник.Календари.Форма.РасписаниеРаботы", ПараметрыФормы, ЭтаФорма); - - Если РезультатРедактирования = Неопределено Или ТолькоПросмотр Тогда - Возврат; - КонецЕсли; - - // Удаляем ранее заполненное расписания для этого дня - СтрокиДня = Новый Массив; - Для Каждого СтрокаРасписания Из Объект.РасписаниеРаботы Цикл - Если СтрокаРасписания.НомерДня = НомерДня Тогда - СтрокиДня.Добавить(СтрокаРасписания.ПолучитьИдентификатор()); - КонецЕсли; - КонецЦикла; - Для Каждого ИдентификаторСтроки Из СтрокиДня Цикл - Объект.РасписаниеРаботы.Удалить(Объект.РасписаниеРаботы.НайтиПоИдентификатору(ИдентификаторСтроки)); - КонецЦикла; - - // заполняем расписание работы на день - Для Каждого ОписаниеИнтервала Из РезультатРедактирования.РасписаниеРаботы Цикл - НоваяСтрока = Объект.РасписаниеРаботы.Добавить(); - ЗаполнитьЗначенияСвойств(НоваяСтрока, ОписаниеИнтервала); - НоваяСтрока.НомерДня = НомерДня; - КонецЦикла; - - // если расписание заполнено - день включен в график - РасписаниеЗаполнено = РезультатРедактирования.РасписаниеРаботы.Количество() > 0; - ПредставлениеРасписания = ПредставлениеРасписанияДня(ЭтаФорма, НомерДня); - - УстановитьСнятьПризнакСоответствияРезультатовШаблону(ЭтаФорма, Ложь); - УстановитьСнятьМодифицированностьШаблона(ЭтаФорма, Истина); - -КонецПроцедуры - &НаКлиенте Процедура РасписаниеПредпраздничногоДняНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; - РедактироватьРасписаниеДня(0, РасписаниеПредпраздничногоДня); + КонтекстВыбора = Новый Структура; + КонтекстВыбора.Вставить("Источник", "РасписаниеПредпраздничногоДняНажатие"); + КонтекстВыбора.Вставить("НомерДня", 0); + КонтекстВыбора.Вставить("ПредставлениеРасписания", РасписаниеПредпраздничногоДня); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РасписаниеРаботы", РасписаниеРаботы(КонтекстВыбора.НомерДня)); + ПараметрыФормы.Вставить("ТолькоПросмотр", ТолькоПросмотр); + + ОткрытьФорму("Справочник.Календари.Форма.РасписаниеРаботы", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -350,9 +365,9 @@ Для Каждого СтрокаОформленияПериода Из ОформлениеПериода.Даты Цикл Если ДниГрафика.Получить(СтрокаОформленияПериода.Дата) = Неопределено Тогда - ЦветТекстаДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняНеУказанЦвет"); + ЦветТекстаДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняПроизводственногоКалендаряНеУказанЦвет"); Иначе - ЦветТекстаДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняРабочийЦвет"); + ЦветТекстаДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняПроизводственногоКалендаряРабочийЦвет"); КонецЕсли; СтрокаОформленияПериода.ЦветТекста = ЦветТекстаДня; // Ручное редактирование diff --git a/SSL/src/Catalogs/Календари/ManagerModule.bsl b/SSL/src/Catalogs/Календари/ManagerModule.bsl index 21a3df0fc..d5862f659 100644 --- a/SSL/src/Catalogs/Календари/ManagerModule.bsl +++ b/SSL/src/Catalogs/Календари/ManagerModule.bsl @@ -113,7 +113,7 @@ СтрокаНабораДни.Календарь = ГрафикРаботы; СтрокаНабораДни.Год = Год; СтрокаНабораДни.ДатаГрафика = ДатаДня; - СтрокиНабораДни.Вставить(ДатаДня, СтрокиНабораДни); + СтрокиНабораДни.Вставить(ДатаДня, СтрокаНабораДни); КонецЕсли; // Если день включен в график, то заполним его интервалы @@ -128,6 +128,18 @@ ДатаДня = ДатаДня + 86400; КонецЦикла; + // Заполняем вторичные данные для оптимизации расчетов по календарям + ДатаОбхода = НачалоГода; + КоличествоДнейВГрафикеСНачалаГода = 0; + Пока ДатаОбхода <= КонецГода Цикл + СтрокаНабораДни = СтрокиНабораДни[ДатаОбхода]; + Если СтрокаНабораДни <> Неопределено Тогда + КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода + 1; + СтрокаНабораДни.КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода; + КонецЕсли; + ДатаОбхода = ДатаОбхода + 86400; + КонецЦикла; + НаборДни.Записать(); КонецЦикла; diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Form.form b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Form.form index 9f4148bc7..dec5f251f 100644 --- a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Form.form +++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Form.form @@ -22,9 +22,13 @@ ВариантЗагрузки Top + + OnChange + ВариантЗагрузкиПриИзменении + ВариантЗагрузкиРасширеннаяПодсказка - 26 + 28 Label true true @@ -44,15 +48,6 @@ true 1 - - - ru - с диска "Информационно-технологическое сопровождение" - - - ИТС - - ru @@ -62,9 +57,64 @@ РБК + + + ru + с диска "Информационно-технологическое сопровождение" + + + ИТС + + Vertical + + ПутьКДискуИТС + 20 + true + true + + true + + + ПутьКДискуИТС + + + ПутьКДискуИТСРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + ПутьКДискуИТСКонтекстноеМеню + 21 + true + + InputField + Enter + true + Left + true + + + StartChoice + ПутьКДискуИТСНачалоВыбора + + true + true + true + true + true + true + true + Normal + + true true @@ -80,7 +130,7 @@ СтраницаВыборИсточникаРасширеннаяПодсказка - 25 + 27 Label true true @@ -113,7 +163,7 @@ ПредупреждениеОЗагрузкаССайтаРБКРасширеннаяПодсказка - 29 + 33 Label true true @@ -148,7 +198,7 @@ ЗагрузкаССайтаРБКРасширеннаяПодсказка - 28 + 32 Label true true @@ -179,7 +229,7 @@ КартинкаВыполняетсяЗагрузкаРасширеннаяПодсказка - 31 + 35 Label true true @@ -216,7 +266,7 @@ НадписьВыполняетсяЗагрузкаРасширеннаяПодсказка - 32 + 36 Label true true @@ -252,7 +302,7 @@ ВыполняетсяЗагрузкаРасширеннаяПодсказка - 30 + 34 Label true true @@ -282,7 +332,7 @@ ПоясняющийТекстРасширеннаяПодсказка - 34 + 38 Label true true @@ -324,7 +374,7 @@ СтраницаРезультатРасширеннаяПодсказка - 33 + 37 Label true true @@ -353,7 +403,7 @@ СтраницыФормыРасширеннаяПодсказка - 24 + 26 Label true true @@ -381,7 +431,7 @@ ФормаКнопкаНазадРасширеннаяПодсказка - 20 + 22 Label true true @@ -407,7 +457,7 @@ ФормаКнопкаДалееРасширеннаяПодсказка - 21 + 23 Label true true @@ -433,7 +483,7 @@ ФормаКнопкаОтменаРасширеннаяПодсказка - 22 + 24 Label true true @@ -459,7 +509,7 @@ ФормаКнопкаСправкаРасширеннаяПодсказка - 23 + 25 Label true true @@ -481,12 +531,17 @@ OnOpen ПриОткрытии + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + OnCreateAtServer ПриСозданииНаСервере - 45 + 55 LockOwner + Use true true Vertical @@ -513,6 +568,9 @@ true + + ВариантЗагрузки + АдресХранилища @@ -566,6 +624,27 @@ true + + ПутьКДискуИТС + + <key>ru</key> + <value>Путь к диску ИТС</value> + + 5 + + String + + + + true + + + true + + + ПутьКДискуИТС + + Далее diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Module.bsl b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Module.bsl index 1f86bb093..4c0edc79a 100644 --- a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Module.bsl +++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ЗагрузкаКлассификатора/Module.bsl @@ -19,9 +19,24 @@ КонецЕсли; КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда + АвтоматическоеСохранениеДанныхВНастройках = АвтоматическоеСохранениеДанныхФормыВНастройках.НеИспользовать; + Элементы.ВариантЗагрузки.Доступность = Ложь; + Элементы.ПутьКДискуИТС.Доступность = Ложь; + Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.ЗагрузкаССайтаРБК; + Иначе + Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника; + КонецЕсли; + ВыполнитьПроверкуПравДоступа("Изменение", Метаданные.Справочники.КлассификаторБанковРФ); ВариантЗагрузки = "РБК"; + УстановитьИзмененияВИнтерфейсе(); +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + УстановитьИзмененияВИнтерфейсе(); КонецПроцедуры &НаКлиенте @@ -31,16 +46,41 @@ Отказ = Истина; Возврат; КонецЕсли; - - #Если ВебКлиент Тогда - Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.ЗагрузкаССайтаРБК; - #Иначе - Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника; - #КонецЕсли - +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + +&НаКлиенте +Процедура ВариантЗагрузкиПриИзменении(Элемент) УстановитьИзмененияВИнтерфейсе(); КонецПроцедуры +&НаКлиенте +Процедура ПутьКДискуИТСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОчиститьСообщения(); + + ДиалогВыбораКаталога = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); + ДиалогВыбораКаталога.Заголовок = НСтр("ru = 'Укажите путь к диску ИТС'"); + ДиалогВыбораКаталога.Каталог = ПутьКДискуИТС; + + Если НЕ ДиалогВыбораКаталога.Выбрать() Тогда + Возврат; + КонецЕсли; + + ПутьКДискуИТС = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ДиалогВыбораКаталога.Каталог); + + ФайлДанных = Новый Файл(ПутьКДискуИТС + "Database\Garant\MorphDB\Morph.dlc"); + Если НЕ ФайлДанных.Существует() Тогда + ОбщегоНазначенияКлиентСервер.СообщитьПользователю( + НСтр("ru ='В указанном каталоге не обнаружены данные классификатора. Необходимо указать путь к диску 1С:ИТС, на котором содержится база ""Гарант. Налоги, бухучет, предпринимательство.""'"), + , + "ПутьКДискуИТС"); + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ @@ -50,9 +90,19 @@ Если Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаРезультат Тогда Закрыть(); Иначе + ОчиститьСообщения(); + + Если ВариантЗагрузки = "ИТС" И НЕ ЗначениеЗаполнено(ПутьКДискуИТС) И ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + // Под Linux - перебор букв дисков невозможен. + ОбщегоНазначенияКлиентСервер.СообщитьПользователю( + НСтр("ru = 'При работе в ОС Linux необходимо явно указать путь к диску'"), + , + "ПутьКДискуИТС"); + Возврат; + КонецЕсли; Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.ВыполняетсяЗагрузка; УстановитьИзмененияВИнтерфейсе(); - ПодключитьОбработчикОжидания("ВыполнитьЗагрузкуКлассификатора", 0.1, Истина); + ПодключитьОбработчикОжидания("ЗагрузитьКлассификатор", 0.1, Истина); КонецЕсли; КонецПроцедуры @@ -84,21 +134,250 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -// Загружает в классификатор банков данные с диска ИТС. -// -// Параметры -// ПараметрыЗагрузкиФайловИТС - Соответствие: -// ИмяДискаИТС - Строка - имя диска ИТС -// ДанныеИТСАдресДвоичныхДанных - ВременноеХранилище - файл данных классификатора БИК РФ с диска ИТС, -// помещенный во временное хранилище -// ПодготовкаИТСАдресДвоичныхДанных - ВременноеХранилище - файл обработки подготовки данных -// классификатора БИК РФ с диска ИТС, помещенный во временное хранилище -// Загружено - Число - Количество новых записей классификатора -// Обновлено - Число - Количество обновленных записей классификатора -// ТекстСообщения - Строка - тест сообщения о результатах загрузки -// ЗагрузкаВыполнена - Булево - флаг успешного завершения загрузки данных классификатора +//////////////////////////////////////////////////////////////////////////////// +// Клиент + +&НаКлиенте +Процедура ЗагрузитьКлассификатор() + // Загружает классификатор банков с диска ИТС или с сайта РБК. + + ПараметрыЗагрузкиКлассификатора = Новый Соответствие; + // (Число) Количество новых записей классификатора: + ПараметрыЗагрузкиКлассификатора.Вставить("Загружено", 0); + // (Число) Количество обновленных записей классификатора: + ПараметрыЗагрузкиКлассификатора.Вставить("Обновлено", 0); + // (Строка) Тест сообщения о результатах загрузки: + ПараметрыЗагрузкиКлассификатора.Вставить("ТекстСообщения", ""); + // (Булево) Флаг успешного завершения загрузки данных классификатора: + ПараметрыЗагрузкиКлассификатора.Вставить("ЗагрузкаВыполнена", Ложь); + + Если ВариантЗагрузки = "ИТС" Тогда + ПолучитьДанныеБИКРФДискИТС(ПараметрыЗагрузкиКлассификатора); + АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); + ПоместитьВоВременноеХранилище(ПараметрыЗагрузкиКлассификатора, АдресХранилища); + Результат = Новый Структура("ЗаданиеВыполнено, АдресХранилища", Истина, АдресХранилища); + ИначеЕсли ВариантЗагрузки = "РБК" Тогда + Результат = ПолучитьДанныеРБКНаСервере(ПараметрыЗагрузкиКлассификатора); + КонецЕсли; + + АдресХранилища = Результат.АдресХранилища; + Если НЕ Результат.ЗаданиеВыполнено Тогда + ИдентификаторЗадания = Результат.ИдентификаторЗадания; + + ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); + ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 1, Истина); + Иначе + ЗагрузитьРезультат(); + КонецЕсли; + КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьРезультат() + //Отображает результат попытки загрузки классификатора банков РФ в журнале регистрации + //и в форме загрузки + + Если ВариантЗагрузки = "ИТС" Тогда + Источник = НСтр("ru ='Диск ИТС'"); + Иначе + Источник = НСтр("ru ='Сайт РБК'"); + КонецЕсли; + + ПараметрыЗагрузкиКлассификатора = ПолучитьИзВременногоХранилища(АдресХранилища); + + ИмяСобытия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru ='Загрузка классификатора банков. %1.'"), Источник); + + Если ПараметрыЗагрузкиКлассификатора["ЗагрузкаВыполнена"] Тогда + ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия,, + ПараметрыЗагрузкиКлассификатора["ТекстСообщения"],, Истина); + РаботаСБанкамиКлиент.ОповеститьКлассификаторУспешноОбновлен(); + Иначе + ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, + "Ошибка", ПараметрыЗагрузкиКлассификатора["ТекстСообщения"],, Истина); + КонецЕсли; + Элементы.ПоясняющийТекст.Заголовок = ПараметрыЗагрузкиКлассификатора["ТекстСообщения"]; + + Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаРезультат; + УстановитьИзмененияВИнтерфейсе(); + + Если (ПараметрыЗагрузкиКлассификатора["Обновлено"] > 0) или (ПараметрыЗагрузкиКлассификатора["Загружено"] > 0) Тогда + ОповеститьОбИзменении(Тип("СправочникСсылка.КлассификаторБанковРФ")); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПроверитьВыполнениеЗадания() + //Унифицированная процедура проверки выполнения фонового задания + + Если ЗаданиеВыполнено(ИдентификаторЗадания) Тогда + ЗагрузитьРезультат(); + Иначе + ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); + ПодключитьОбработчикОжидания( + "Подключаемый_ПроверитьВыполнениеЗадания", + ПараметрыОбработчикаОжидания.ТекущийИнтервал, + Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучитьДанныеБИКРФДискИТС(ПараметрыЗагрузкиКлассификатора) + // Получает, сортирует, записывает данные классификатора БИК РФ с диска ИТС + + ПараметрыЗагрузкиФайловИТС = Новый Соответствие; + // (Строка) Путь к диску ИТС: + ПараметрыЗагрузкиФайловИТС.Вставить("ПутьКДискуИТС", ""); + // (Строка) Адрес во временном хранилище, по которому размещен файл данных классификатора: + ПараметрыЗагрузкиФайловИТС.Вставить("ДанныеИТСАдресДвоичныхДанных", ""); + // (Строка) Адрес во временном хранилище, по которому размещен файл обработки подготовки данных: + ПараметрыЗагрузкиФайловИТС.Вставить("ПодготовкаИТСАдресДвоичныхДанных", ""); + // (Строка) Текст ошибки: + ПараметрыЗагрузкиФайловИТС.Вставить("ТекстСообщения", ПараметрыЗагрузкиКлассификатора["ТекстСообщения"]); + // Другие параметры - см. описание переменной ПараметрыЗагрузкиФайловРБК в ЗагрузитьКлассификатор(): + ПараметрыЗагрузкиФайловИТС.Вставить("Загружено", ПараметрыЗагрузкиКлассификатора["Загружено"]); + ПараметрыЗагрузкиФайловИТС.Вставить("Обновлено", ПараметрыЗагрузкиКлассификатора["Обновлено"]); + + ПолучитьДанныеБИКДискИТС(ПараметрыЗагрузкиФайловИТС); + + Если Не ПустаяСтрока(ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]) Тогда + ПараметрыЗагрузкиКлассификатора.Вставить("ТекстСообщения", ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]); + Возврат; + КонецЕсли; + + ПолучитьСортировщикДискИТС(ПараметрыЗагрузкиФайловИТС); + + Если Не ПустаяСтрока(ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]) Тогда + ПараметрыЗагрузкиКлассификатора.Вставить("ТекстСообщения", ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]); + Возврат; + КонецЕсли; + + ЗагрузитьДанныеДискИТСНаСервере(ПараметрыЗагрузкиФайловИТС); + + ПараметрыЗагрузкиКлассификатора.Вставить("Загружено", ПараметрыЗагрузкиФайловИТС["Загружено"]); + ПараметрыЗагрузкиКлассификатора.Вставить("Обновлено", ПараметрыЗагрузкиФайловИТС["Обновлено"]); + ПараметрыЗагрузкиКлассификатора.Вставить("ТекстСообщения", ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]); + ПараметрыЗагрузкиКлассификатора.Вставить("ЗагрузкаВыполнена", Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучитьДанныеБИКДискИТС(ПараметрыЗагрузкиФайловИТС) + // Получает данные классификатора БИК РФ с диска ИТС + // + // Параметры + // ПараметрыЗагрузкиФайловИТС - см. описание одноименной переменной в ПолучитьДанныеБИКРФДискИТС(). + + ФайлДанных = Неопределено; + ФайлНайден = Ложь; + + Результат = Новый Структура; + Если ЗначениеЗаполнено(ПутьКДискуИТС) Тогда + // Путь к диску указан явно. + ПутьКДискуИТС = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКДискуИТС); + ФайлДанных = Новый Файл(ПутьКДискуИТС + "Database\Garant\MorphDB\Morph.dlc"); + Если ФайлДанных.Существует() Тогда + ПараметрыЗагрузкиФайловИТС.Вставить("ПутьКДискуИТС", ПутьКДискуИТС); + ФайлНайден = Истина; + Иначе + ДанныеИТС = ""; + КонецЕсли; + Иначе + // Под Linux - проверка расположена ранее в Далее(). + // Под Windows - перебор букв дисков с D по Z. + Для Индекс = 68 По 90 Цикл + НайденныйПутьКДискуИТС = Символ(Индекс) + ":\"; + ФайлДанных = Новый Файл(НайденныйПутьКДискуИТС + "Database\Garant\MorphDB\Morph.dlc"); + Если ФайлДанных.Существует() Тогда + ПараметрыЗагрузкиФайловИТС.Вставить("ПутьКДискуИТС", НайденныйПутьКДискуИТС); + ФайлНайден = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если ФайлНайден Тогда + ДанныеИТСАдресДвоичныхДанных = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ФайлДанных.ПолноеИмя)); + ПараметрыЗагрузкиФайловИТС.Вставить("ДанныеИТСАдресДвоичныхДанных", ДанныеИТСАдресДвоичныхДанных); + ФайлДанных = Неопределено; + Иначе + ТекстСообщения = НСтр("ru ='На диске 1С:ИТС не обнаружены данные классификатора БИК РФ. + |Для установки требуется диск 1С:ИТС, на котором содержится база ""Гарант. Налоги, бухучет, предпринимательство.""'"); + ПараметрыЗагрузкиФайловИТС.Вставить("ТекстСообщения", ТекстСообщения); + КонецЕсли; + + ПараметрыЗагрузкиФайловИТС.Вставить("ТекстСообщения", ТекстСообщения); + +КонецПроцедуры + +&НаКлиенте +Процедура ПолучитьСортировщикДискИТС(ПараметрыЗагрузкиФайловИТС) + // Получает обработку сортировки классификатора БИК РФ с диска ИТС + // + // Параметры + // ПараметрыЗагрузкиФайловИТС - см. описание одноименной переменной в ПолучитьДанныеБИКРФДискИТС(). + + ФайлОбработки = Новый Файл(ПараметрыЗагрузкиФайловИТС["ПутьКДискуИТС"] + "1CITS\EXE\EXTDB\BIKr5v82_MA.epf"); + + Если ФайлОбработки.Существует() Тогда + АдресДвоичныхДанных = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ФайлОбработки.ПолноеИмя)); + ПараметрыЗагрузкиФайловИТС.Вставить("ПодготовкаИТСАдресДвоичныхДанных", АдресДвоичныхДанных); + Иначе + ПараметрыЗагрузкиФайловИТС.Вставить("ТекстСообщения", НСтр("ru ='На диске ИТС не обнаружен файл обработки подготовки данных классификатора БИК РФ.'")); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Вызов сервера + +&НаСервереБезКонтекста +Функция ЗаданиеВыполнено(ИдентификаторЗадания) + + Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания); + +КонецФункции + +&НаСервере +Процедура УстановитьИзмененияВИнтерфейсе() + // В зависимости от текущей страницы устанавливает доступность тех или иных полей для пользователя + + Элементы.ПутьКДискуИТС.Доступность = (ВариантЗагрузки = "ИТС"); + + Если Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника + Или Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.ЗагрузкаССайтаРБК Тогда + Элементы.ФормаКнопкаНазад.Доступность = Ложь; + Элементы.ФормаКнопкаДалее.Заголовок = НСтр("ru ='Далее >>'"); + Элементы.ФормаКнопкаОтмена.Доступность = Истина; + Элементы.ФормаКнопкаДалее.Доступность = Истина; + ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.ВыполняетсяЗагрузка Тогда + Элементы.ФормаКнопкаНазад.Доступность = Ложь; + Элементы.ФормаКнопкаДалее.Доступность = Ложь; + Элементы.ФормаКнопкаОтмена.Доступность = Истина; + Иначе + Элементы.ФормаКнопкаНазад.Доступность = Истина; + Элементы.ФормаКнопкаДалее.Заголовок = НСтр("ru ='Закрыть'"); + Элементы.ФормаКнопкаОтмена.Доступность = Ложь; + Элементы.ФормаКнопкаДалее.Доступность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ЗавершитьФоновоеЗадание(ИдентификаторЗадания) + ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); + Если ФоновоеЗадание <> Неопределено Тогда + ФоновоеЗадание.Отменить(); + КонецЕсли; +КонецПроцедуры + &НаСервере Процедура ЗагрузитьДанныеДискИТСНаСервере(ПараметрыЗагрузкиФайловИТС) + // Загружает в классификатор банков данные с диска ИТС. + // + // Параметры + // ПараметрыЗагрузкиФайловИТС - см. описание переменной ПараметрыЗагрузкиКлассификатора в ПолучитьДанныеБИКРФДискИТС(). Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда ВызватьИсключение ТекстЗагрузкаЗапрещена(); @@ -108,21 +387,12 @@ КонецПроцедуры -// Загружает в классификатор банков данные с диска ИТС. -// -// Параметры -// ПараметрыЗагрузкиФайловРБК - Соответствие: -// ИмяДискаИТС - Строка - имя диска ИТС -// ДанныеИТСАдресДвоичныхДанных - ВременноеХранилище - файл данных классификатора БИК РФ с диска ИТС, -// помещенный во временное хранилище -// ПодготовкаИТСАдресДвоичныхДанных - ВременноеХранилище - файл обработки подготовки данных -// классификатора БИК РФ с диска ИТС, помещенный во временное хранилище -// Загружено - Число - Количество новых записей классификатора -// Обновлено - Число - Количество обновленных записей классификатора -// ТекстСообщения - Строка - тест сообщения о результатах загрузки -// ЗагрузкаВыполнена - Булево - флаг успешного завершения загрузки данных классификатора &НаСервере Функция ПолучитьДанныеРБКНаСервере(ПараметрыЗагрузкиФайловРБК) + // Загружает в классификатор банков данные с диска ИТС. + // + // Параметры + // ПараметрыЗагрузкиФайловРБК - см. описание одноименной переменной в ЗагрузитьКлассификатор(). Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда ВызватьИсключение ТекстЗагрузкаЗапрещена(); @@ -146,257 +416,10 @@ КонецФункции -// Загружает классификатор банков с диска ИТС или с сайта РБК. -// -&НаКлиенте -Процедура ЗагрузитьКлассификатор() - - ПараметрыЗагрузкиКлассификатора = Новый Соответствие; - ПараметрыЗагрузкиКлассификатора.Вставить("Загружено", 0); - ПараметрыЗагрузкиКлассификатора.Вставить("Обновлено", 0); - ПараметрыЗагрузкиКлассификатора.Вставить("ТекстСообщения", ""); - ПараметрыЗагрузкиКлассификатора.Вставить("ЗагрузкаВыполнена", Ложь); - - Если ВариантЗагрузки = "ИТС" Тогда - ПолучитьДанныеБИКРФДискИТС(ПараметрыЗагрузкиКлассификатора); - АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); - ПоместитьВоВременноеХранилище(ПараметрыЗагрузкиКлассификатора, АдресХранилища); - Результат = Новый Структура("ЗаданиеВыполнено,АдресХранилища", Истина, АдресХранилища); - ИначеЕсли ВариантЗагрузки = "РБК" Тогда - Результат = ПолучитьДанныеРБКНаСервере(ПараметрыЗагрузкиКлассификатора); - КонецЕсли; - - АдресХранилища = Результат.АдресХранилища; - Если НЕ Результат.ЗаданиеВыполнено Тогда - ИдентификаторЗадания = Результат.ИдентификаторЗадания; - - ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); - ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 1, Истина); - Иначе - ЗагрузитьРезультат(); - КонецЕсли; - КонецПроцедуры - -//Отображает результат попытки загрузки классификатора банков РФ в журнале регистрации -//и в форме загрузки -&НаКлиенте -Процедура ЗагрузитьРезультат() - - Если ВариантЗагрузки = "ИТС" Тогда - Источник = НСтр("ru ='Диск ИТС'"); - Иначе - Источник = НСтр("ru ='Сайт РБК'"); - КонецЕсли; - - ПараметрыЗагрузкиКлассификатора = ПолучитьИзВременногоХранилища(АдресХранилища); - - ИмяСобытия = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru ='Загрузка классификатора банков. %1.'"), Источник); - - Если ПараметрыЗагрузкиКлассификатора["ЗагрузкаВыполнена"] Тогда - ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия,, - ПараметрыЗагрузкиКлассификатора["ТекстСообщения"],, Истина); - РаботаСБанкамиКлиент.ОповеститьКлассификаторУспешноОбновлен(); - Иначе - ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытия, - "Ошибка", ПараметрыЗагрузкиКлассификатора["ТекстСообщения"],, Истина); - КонецЕсли; - Элементы.ПоясняющийТекст.Заголовок = ПараметрыЗагрузкиКлассификатора["ТекстСообщения"]; - - Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаРезультат; - УстановитьИзмененияВИнтерфейсе(); - - Если (ПараметрыЗагрузкиКлассификатора["Обновлено"] > 0) или (ПараметрыЗагрузкиКлассификатора["Загружено"] > 0) Тогда - ОповеститьОбИзменении(Тип("СправочникСсылка.КлассификаторБанковРФ")); - КонецЕсли; - -КонецПроцедуры - -//Унифицированная процедура проверки выполнения фонового задания -&НаКлиенте -Процедура Подключаемый_ПроверитьВыполнениеЗадания() - - Если ЗаданиеВыполнено(ИдентификаторЗадания) Тогда - ЗагрузитьРезультат(); - Иначе - ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); - ПодключитьОбработчикОжидания( - "Подключаемый_ПроверитьВыполнениеЗадания", - ПараметрыОбработчикаОжидания.ТекущийИнтервал, - Истина); - КонецЕсли; - -КонецПроцедуры - -&НаСервереБезКонтекста -Функция ЗаданиеВыполнено(ИдентификаторЗадания) - - Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания); - -КонецФункции - -// Получает, сортирует, записывает данные классификатора БИК РФ с диска ИТС -// -// Параметры -// ПараметрыЗагрузкиКлассификатора - Соответствие: -// Загружено - Число - Количество новых записей классификатора -// Обновлено - Число - Количество обновленных записей классификатора -// ТекстСообщения - Строка - тест сообщения о результатах загрузки -// ЗагрузкаВыполнена - Булево - флаг успешного завершения загрузки данных классификатора -&НаКлиенте -Процедура ПолучитьДанныеБИКРФДискИТС(ПараметрыЗагрузкиКлассификатора) - - ПараметрыЗагрузкиФайловИТС = Новый Соответствие; - ПараметрыЗагрузкиФайловИТС.Вставить("ИмяДискаИТС", ""); - ПараметрыЗагрузкиФайловИТС.Вставить("ДанныеИТСАдресДвоичныхДанных", ""); - ПараметрыЗагрузкиФайловИТС.Вставить("ПодготовкаИТСАдресДвоичныхДанных", ""); - ПараметрыЗагрузкиФайловИТС.Вставить("Загружено", ПараметрыЗагрузкиКлассификатора["Загружено"]); - ПараметрыЗагрузкиФайловИТС.Вставить("Обновлено", ПараметрыЗагрузкиКлассификатора["Обновлено"]); - ПараметрыЗагрузкиФайловИТС.Вставить("ТекстСообщения", ПараметрыЗагрузкиКлассификатора["ТекстСообщения"]); - - ПолучитьДанныеБИКДискИТС(ПараметрыЗагрузкиФайловИТС); - - Если Не ПустаяСтрока(ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]) Тогда - ПараметрыЗагрузкиКлассификатора.Вставить("ТекстСообщения", ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]); - Возврат; - КонецЕсли; - - ПолучитьСортировщикДискИТС(ПараметрыЗагрузкиФайловИТС); - - Если Не ПустаяСтрока(ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]) Тогда - ПараметрыЗагрузкиКлассификатора.Вставить("ТекстСообщения", ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]); - Возврат; - КонецЕсли; - - ЗагрузитьДанныеДискИТСНаСервере(ПараметрыЗагрузкиФайловИТС); - - ПараметрыЗагрузкиКлассификатора.Вставить("Загружено", ПараметрыЗагрузкиФайловИТС["Загружено"]); - ПараметрыЗагрузкиКлассификатора.Вставить("Обновлено", ПараметрыЗагрузкиФайловИТС["Обновлено"]); - ПараметрыЗагрузкиКлассификатора.Вставить("ТекстСообщения", ПараметрыЗагрузкиФайловИТС["ТекстСообщения"]); - ПараметрыЗагрузкиКлассификатора.Вставить("ЗагрузкаВыполнена", Истина); - -КонецПроцедуры - -// Получает обработку сортировки классификатора БИК РФ с диска ИТС -// -// Параметры -// ПараметрыЗагрузкиФайловИТС - Соответствие: -// ИмяДискаИТС - Символ - имя диска ИТС -// ДанныеИТСАдресДвоичныхДанных - ВременноеХранилище - файл данных классификатора БИК РФ с диска ИТС, -// помещенный во временное хранилище -// ПодготовкаИТСАдресДвоичныхДанных - ВременноеХранилище - файл обработки подготовки данных -// классификатора БИК РФ с диска ИТС, помещенный во временное хранилище -// ТекстСообщения - Строка - текст сообщения об ошибке -// -&НаКлиенте -Процедура ПолучитьСортировщикДискИТС(ПараметрыЗагрузкиФайловИТС) - - ТекстСообщения = ""; - ПодготовкаИТСАдресДвоичныхДанных = ""; - - Результат = Новый Структура; - - ПодготовкаИТС = Новый Файл(ПараметрыЗагрузкиФайловИТС["ИмяДискаИТС"] + ":\1CITS\EXE\EXTDB\BIKr5v82_MA.epf"); - - Если ПодготовкаИТС.Существует() Тогда - ПодготовкаИТСДвоичныеДанные = Новый ДвоичныеДанные(ПодготовкаИТС.ПолноеИмя); - ПодготовкаИТСАдресДвоичныхДанных = ПоместитьВоВременноеХранилище(ПодготовкаИТСДвоичныеДанные); - Иначе - ТекстСообщения = НСтр("ru ='На диске ИТС не обнаружен файл обработки подготовки данных классификатора БИК РФ.'"); - КонецЕсли; - - ПараметрыЗагрузкиФайловИТС.Вставить("ПодготовкаИТСАдресДвоичныхДанных", ПодготовкаИТСАдресДвоичныхДанных); - ПараметрыЗагрузкиФайловИТС.Вставить("ТекстСообщения", ТекстСообщения); - -КонецПроцедуры - -// Получает данные классификатора БИК РФ с диска ИТС -// -// Параметры -// ПараметрыЗагрузкиФайловИТС - Соответствие: -// ИмяДискаИТС - Символ - имя диска ИТС -// ДанныеИТСАдресДвоичныхДанных - ВременноеХранилище - файл данных классификатора БИК РФ с диска ИТС, -// помещенный во временное хранилище -// ПодготовкаИТСАдресДвоичныхДанных - ВременноеХранилище - файл обработки подготовки данных классификатора БИК РФ -// с диска ИТС, помещенный во временное хранилище -// ТекстСообщения - Строка - текст сообщения об ошибке -// -&НаКлиенте -Процедура ПолучитьДанныеБИКДискИТС(ПараметрыЗагрузкиФайловИТС) - - ТекстСообщения = ""; - ИмяДиска = ""; - ДанныеИТС = ""; - ФайлНайден = Ложь; - ДанныеИТСАдресДвоичныхДанных = ""; - - Результат = Новый Структура; - - Для Индекс = 68 По 90 Цикл - // с D по Z - ДанныеИТС = Новый Файл(Символ(Индекс) + ":\Database\Garant\MorphDB\Morph.dlc"); - Если ДанныеИТС.Существует() Тогда - ФайлНайден = Истина; - Прервать; - Иначе - ДанныеИТС = ""; - КонецЕсли; - КонецЦикла; - - Если ФайлНайден Тогда - ИмяДискаИТС = Символ(Индекс); - ДанныеИТСДвоичныеДанные = Новый ДвоичныеДанные(ДанныеИТС.ПолноеИмя); - ДанныеИТСАдресДвоичныхДанных = ПоместитьВоВременноеХранилище(ДанныеИТСДвоичныеДанные); - Иначе - ТекстСообщения = - НСтр("ru ='На диске 1С:ИТС не обнаружены данные классификатора БИК РФ. - |Для установки требуется диск 1С:ИТС, на котором содержится база ""Гарант. Налоги, бухучет, предпринимательство.""'"); - КонецЕсли; - - ПараметрыЗагрузкиФайловИТС.Вставить("ИмяДискаИТС", ИмяДискаИТС); - ПараметрыЗагрузкиФайловИТС.Вставить("ДанныеИТСАдресДвоичныхДанных", ДанныеИТСАдресДвоичныхДанных); - ПараметрыЗагрузкиФайловИТС.Вставить("ТекстСообщения", ТекстСообщения); - -КонецПроцедуры - -// В зависимости от текущей страницы устанавливает доступность тех или иных полей для пользователя -// -&НаСервере -Процедура УстановитьИзмененияВИнтерфейсе() - - Если Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаВыборИсточника - Или Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.ЗагрузкаССайтаРБК Тогда - Элементы.ФормаКнопкаНазад.Доступность = Ложь; - Элементы.ФормаКнопкаДалее.Заголовок = НСтр("ru ='Далее >>'"); - Элементы.ФормаКнопкаОтмена.Доступность = Истина; - Элементы.ФормаКнопкаДалее.Доступность = Истина; - ИначеЕсли Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.ВыполняетсяЗагрузка Тогда - Элементы.ФормаКнопкаНазад.Доступность = Ложь; - Элементы.ФормаКнопкаДалее.Доступность = Ложь; - Элементы.ФормаКнопкаОтмена.Доступность = Истина; - Иначе - Элементы.ФормаКнопкаНазад.Доступность = Истина; - Элементы.ФормаКнопкаДалее.Заголовок = НСтр("ru ='Закрыть'"); - Элементы.ФормаКнопкаОтмена.Доступность = Ложь; - Элементы.ФормаКнопкаДалее.Доступность = Истина; - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ВыполнитьЗагрузкуКлассификатора() - ЗагрузитьКлассификатор(); -КонецПроцедуры - -&НаСервере -Процедура ЗавершитьФоновоеЗадание(ИдентификаторЗадания) - ФоновоеЗадание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); - Если ФоновоеЗадание <> Неопределено Тогда - ФоновоеЗадание.Отменить(); - КонецЕсли; -КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// Сервер &НаСервере Функция ТекстЗагрузкаЗапрещена() Возврат НСтр("ru = 'Загрузка классификатора банков в разделенном режиме запрещена.'"); -КонецФункции \ No newline at end of file +КонецФункции diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаВыбора/Module.bsl b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаВыбора/Module.bsl index 8d222508e..e2feb1539 100644 --- a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаВыбора/Module.bsl +++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаВыбора/Module.bsl @@ -28,7 +28,7 @@ &НаКлиенте Процедура ЗагрузитьКлассификатор(Команда) - ОткрытьФормуМодально("Справочник.КлассификаторБанковРФ.Форма.ЗагрузкаКлассификатора"); + ОткрытьФорму("Справочник.КлассификаторБанковРФ.Форма.ЗагрузкаКлассификатора", , ЭтаФорма); КонецПроцедуры &НаКлиенте diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаСписка/Module.bsl index b8d431291..f7e4eb419 100644 --- a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаСписка/Module.bsl @@ -27,5 +27,5 @@ &НаКлиенте Процедура ЗагрузитьКлассификатор(Команда) ПараметрыФормы = Новый Структура("ОткрытиеИзСписка"); - ОткрытьФормуМодально("Справочник.КлассификаторБанковРФ.Форма.ЗагрузкаКлассификатора", ПараметрыФормы); + ОткрытьФорму("Справочник.КлассификаторБанковРФ.Форма.ЗагрузкаКлассификатора", ПараметрыФормы, ЭтаФорма); КонецПроцедуры diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаЭлемента/Module.bsl index 67b33ae95..feb65270f 100644 --- a/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Forms/ФормаЭлемента/Module.bsl @@ -5,6 +5,10 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + Элементы.СтраницыДеятельностьПрекращена.Видимость = Объект.ДеятельностьПрекращена Или Пользователи.ЭтоПолноправныйПользователь(); Элементы.СтраницыДеятельностьПрекращена.ТекущаяСтраница = ?(Пользователи.ЭтоПолноправныйПользователь(), Элементы.СтраницаФлажокДеятельностьПрекращена, Элементы.СтраницаНадписьДеятельностьПрекращена); @@ -20,8 +24,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АвтономнаяРабота"); - Модуль.ОбъектПриЧтенииНаСервере(ТекущийОбъект, ЭтаФорма.ТолькоПросмотр); + МодульАвтономнаяРабота = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АвтономнаяРабота"); + МодульАвтономнаяРабота.ОбъектПриЧтенииНаСервере(ТекущийОбъект, ЭтаФорма.ТолькоПросмотр); КонецЕсли; diff --git a/SSL/src/Catalogs/КлассификаторБанковРФ/Help/ru.html b/SSL/src/Catalogs/КлассификаторБанковРФ/Help/ru.html index 6f281789b..aed2083a7 100644 --- a/SSL/src/Catalogs/КлассификаторБанковРФ/Help/ru.html +++ b/SSL/src/Catalogs/КлассификаторБанковРФ/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html xmlns:o=""><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html xmlns:o=""><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p style="MARGIN-LEFT: 0px">В классификаторе банков РФ хранятся сведения о банках: БИК, корреспондентский счет, данные о местонахождении, телефоны для связи с сотрудниками, почтовый адрес банка. Эти сведения используются при заполнении реквизитов банковских счетов и в других объектах программы. </p> <p style="MARGIN-LEFT: 0px">По команде <strong>Загрузить классификатор</strong> можно обновить сведения о банках с сайта РБК или из поставляемого на диске 1С:ИТС "<b>Общероссийского классификатора банков" (ОКБ)</b>.</p> <p style="MARGIN-LEFT: 0px">Также можно настроить обновление классификатора с сайта РБК автоматически по расписанию с помощью регламентного задания <strong>Загрузка классификатора банков РФ с сайта РБК</strong>.</p> diff --git a/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаВыбора/Module.bsl b/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаВыбора/Module.bsl index f9dca09d5..331dee0cc 100644 --- a/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаВыбора/Module.bsl +++ b/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаВыбора/Module.bsl @@ -3,16 +3,16 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; - Список.Отбор.Элементы.Очистить(); - ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); - ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке; - ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); - ЭлементОтбора.ПравоеЗначение = Параметры.Отбор; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора( + Список.Отбор, + "Ссылка", + Параметры.Отбор, + ВидСравненияКомпоновкиДанных.НеВСписке + ); КонецПроцедуры @@ -32,6 +32,6 @@ РезультатВыбора.ЦелевоеВремя = ТД.ЦелевоеВремя; КонецЕсли; - ЭтаФорма.Закрыть(РезультатВыбора); + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры diff --git a/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index e3105582d..c135eb38a 100644 --- a/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">Ссылка</left> - <comparisonType>NotEqual</comparisonType> - <right xsi:type="dcscor:DesignTimeValue">Справочник.КлючевыеОперации.ОбщаяПроизводительностьСистемы</right> - </item> <viewMode>Normal</viewMode> <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> diff --git a/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Form.form index 728fb6359..bd3b9f732 100644 --- a/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Form.form @@ -293,6 +293,10 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> <windowOpeningMode>DontBlock</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> diff --git a/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Module.bsl new file mode 100644 index 000000000..5de196e8e --- /dev/null +++ b/SSL/src/Catalogs/КлючевыеОперации/Forms/ФормаСписка/Module.bsl @@ -0,0 +1,16 @@ +/////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", Справочники.КлючевыеОперации.ОбщаяПроизводительностьСистемы, + ВидСравненияКомпоновкиДанных.НеРавно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + +КонецПроцедуры diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/РедактированиеСоставаНаборов/Form.form b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/РедактированиеСоставаНаборов/Form.form index f119162d6..d5555eb58 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/РедактированиеСоставаНаборов/Form.form +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/РедактированиеСоставаНаборов/Form.form @@ -325,7 +325,7 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoUrl>true</autoUrl> <group>Vertical</group> diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/РедактированиеСоставаНаборов/Module.bsl b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/РедактированиеСоставаНаборов/Module.bsl index 68a412acb..57d80af68 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/РедактированиеСоставаНаборов/Module.bsl +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/РедактированиеСоставаНаборов/Module.bsl @@ -132,7 +132,7 @@ ВыбранныеНаборы = Новый СписокЗначений; ЗаполнитьВыбранныеНаборы(ВыбранныеНаборы, ДеревоНаборов.ПолучитьЭлементы()); - Закрыть(ВыбранныеНаборы); + ОповеститьОВыборе(ВыбранныеНаборы); КонецПроцедуры diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаВыбора/Form.form b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаВыбора/Form.form index e8ff64207..f42d8285f 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаВыбора/Form.form +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаВыбора/Form.form @@ -164,7 +164,6 @@ <autoMaxRowsCount>true</autoMaxRowsCount> <choiceMode>true</choiceMode> <selectionMode>MultiRow</selectionMode> - <header>true</header> <headerHeight>1</headerHeight> <footerHeight>1</footerHeight> <horizontalScrollBar>AutoUse</horizontalScrollBar> @@ -199,6 +198,7 @@ <id>-1</id> <horizontalAlign>Left</horizontalAlign> </autoCommandBar> + <width>50</width> <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Form.form index adb6c31a7..b0816630d 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Forms/ФормаСписка/Form.form @@ -165,7 +165,6 @@ <autoMaxHeight>true</autoMaxHeight> <autoMaxRowsCount>true</autoMaxRowsCount> <selectionMode>MultiRow</selectionMode> - <header>true</header> <headerHeight>1</headerHeight> <footerHeight>1</footerHeight> <horizontalScrollBar>AutoUse</horizontalScrollBar> @@ -204,6 +203,7 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <width>50</width> <windowOpeningMode>DontBlock</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Help/ru.html b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Help/ru.html index 848d3e2b7..b163c6a98 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Help/ru.html +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Администратор системы может настроить наборы дополнительных свойств для определенных объектов системы. Способ хранения дополнительного свойства в информационной базе и место размещения на форме объекта зависит от типа свойства: дополнительный реквизит или сведение.</p> <p>Предопределенные наборы и группы наборов соответствуют объектам конфигурации, в которых можно использовать дополнительные реквизиты и сведения. Добавление новых наборов и групп наборов невозможно.</p> <p>В форме набора с помощью команды Подбор можно добавить объекту новый дополнительный реквизит или сведение.<br></p> diff --git a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/НаборыДополнительныхРеквизитовИСведений.mdo b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/НаборыДополнительныхРеквизитовИСведений.mdo index cac531f54..789a3bb32 100644 --- a/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/НаборыДополнительныхРеквизитовИСведений.mdo +++ b/SSL/src/Catalogs/НаборыДополнительныхРеквизитовИСведений/НаборыДополнительныхРеквизитовИСведений.mdo @@ -161,6 +161,13 @@ <value></value> </code> </items> + <items id="e528d7dc-346b-4deb-92ec-b6cefa78c66f"> + <name>Документ_СообщениеSMS</name> + <description>Доп. свойства документа" Сообщение SMS"</description> + <code xsi:type="core:StringValue"> + <value></value> + </code> + </items> <items id="4b1f6bdf-16e9-480e-8012-6474f53e56ac"> <name>Справочник_ПапкиФайлов</name> <description>Доп. свойства справочника "Папки файлов"</description> diff --git a/SSL/src/Catalogs/Организации/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/Организации/Forms/ФормаЭлемента/Form.form index 8471c8154..799b15436 100644 --- a/SSL/src/Catalogs/Организации/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/Организации/Forms/ФормаЭлемента/Form.form @@ -234,7 +234,20 @@ <savedData>true</savedData> </attributes> <commandInterface> - <navigationPanel/> + <navigationPanel> + <cmiFragmentRecord> + <command>0</command> + <group>FormNavigationPanelGoTo</group> + <index>0</index> + <userVisible/> + </cmiFragmentRecord> + <cmiFragmentRecord> + <command>0</command> + <group>FormNavigationPanelGoTo</group> + <index>1</index> + <userVisible/> + </cmiFragmentRecord> + </navigationPanel> <commandBar/> </commandInterface> <extInfo xsi:type="form:CatalogFormExtInfo"> diff --git a/SSL/src/Catalogs/ОчередьЗаданий/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ОчередьЗаданий/Forms/ФормаЭлемента/Form.form new file mode 100644 index 000000000..796d0394f --- /dev/null +++ b/SSL/src/Catalogs/ОчередьЗаданий/Forms/ФормаЭлемента/Form.form @@ -0,0 +1,856 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <items xsi:type="form:FormGroup"> + <name>ГруппаСтраницы</name> + <id>32</id> + <items xsi:type="form:FormGroup"> + <name>ГруппаОсновное</name> + <id>33</id> + <items xsi:type="form:FormField"> + <name>Идентификатор</name> + <id>29</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Идентификатор</segments> + </dataPath> + <extendedTooltip> + <name>ИдентификаторРасширеннаяПодсказка</name> + <id>42</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ИдентификаторКонтекстноеМеню</name> + <id>30</id> + <autoFill>true</autoFill> + </contextMenu> + <type>LabelField</type> + <warningOnEditRepresentation>Show</warningOnEditRepresentation> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:LabelFieldExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + </extInfo> + </items> + <items xsi:type="form:FormField"> + <name>ПредставлениеРасписания</name> + <id>38</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>ПредставлениеРасписания</segments> + </dataPath> + <extendedTooltip> + <name>ПредставлениеРасписанияРасширеннаяПодсказка</name> + <id>44</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ПредставлениеРасписанияКонтекстноеМеню</name> + <id>39</id> + <autoFill>true</autoFill> + </contextMenu> + <type>InputField</type> + <warningOnEditRepresentation>Show</warningOnEditRepresentation> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:InputFieldExtInfo"> + <handlers> + <event>StartChoice</event> + <name>ПредставлениеРасписанияНачалоВыбора</name> + </handlers> + <handlers> + <event>Clearing</event> + <name>ПредставлениеРасписанияОчистка</name> + </handlers> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <wrap>true</wrap> + <choiceButton>true</choiceButton> + <clearButton>true</clearButton> + <chooseType>true</chooseType> + <typeDomainEnabled>true</typeDomainEnabled> + <textSize>Normal</textSize> + </extInfo> + </items> + <items xsi:type="form:FormField"> + <name>ИмяМетода</name> + <id>17</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Объект.ИмяМетода</segments> + </dataPath> + <extendedTooltip> + <name>ИмяМетодаРасширеннаяПодсказка</name> + <id>46</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ИмяМетодаКонтекстноеМеню</name> + <id>18</id> + <autoFill>true</autoFill> + </contextMenu> + <type>InputField</type> + <warningOnEditRepresentation>Show</warningOnEditRepresentation> + <editMode>Auto</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:InputFieldExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <wrap>true</wrap> + <chooseType>true</chooseType> + <typeDomainEnabled>true</typeDomainEnabled> + <textEdit>true</textEdit> + <textSize>Normal</textSize> + </extInfo> + </items> + <items xsi:type="form:FormField"> + <name>Ключ</name> + <id>23</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Объект.Ключ</segments> + </dataPath> + <extendedTooltip> + <name>КлючРасширеннаяПодсказка</name> + <id>48</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>КлючКонтекстноеМеню</name> + <id>24</id> + <autoFill>true</autoFill> + </contextMenu> + <type>InputField</type> + <warningOnEditRepresentation>Show</warningOnEditRepresentation> + <editMode>Auto</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:InputFieldExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <wrap>true</wrap> + <chooseType>true</chooseType> + <typeDomainEnabled>true</typeDomainEnabled> + <textEdit>true</textEdit> + <textSize>Normal</textSize> + </extInfo> + </items> + <items xsi:type="form:FormField"> + <name>Использование</name> + <id>3</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Объект.Использование</segments> + </dataPath> + <extendedTooltip> + <name>ИспользованиеРасширеннаяПодсказка</name> + <id>50</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ИспользованиеКонтекстноеМеню</name> + <id>4</id> + <autoFill>true</autoFill> + </contextMenu> + <type>CheckBoxField</type> + <warningOnEditRepresentation>Show</warningOnEditRepresentation> + <editMode>Auto</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:CheckBoxFieldExtInfo"/> + </items> + <items xsi:type="form:FormField"> + <name>ЭксклюзивноеВыполнение</name> + <id>11</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Объект.ЭксклюзивноеВыполнение</segments> + </dataPath> + <extendedTooltip> + <name>ЭксклюзивноеВыполнениеРасширеннаяПодсказка</name> + <id>52</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>ЭксклюзивноеВыполнениеКонтекстноеМеню</name> + <id>12</id> + <autoFill>true</autoFill> + </contextMenu> + <type>CheckBoxField</type> + <warningOnEditRepresentation>Show</warningOnEditRepresentation> + <editMode>Auto</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:CheckBoxFieldExtInfo"/> + </items> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <title> + <key>ru</key> + <value>Основное</value> + + + ГруппаОсновноеРасширеннаяПодсказка + 41 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + ГруппаСостояниеВыполнения + 34 + + СостояниеЗадания + 7 + true + true + + true + + + Объект.СостояниеЗадания + + + СостояниеЗаданияРасширеннаяПодсказка + 55 + Label + true + true + + Left + + + + СостояниеЗаданияКонтекстноеМеню + 8 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗапланированныйМоментЗапуска + 5 + true + true + + true + + + Объект.ЗапланированныйМоментЗапуска + + + ЗапланированныйМоментЗапускаРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + + ЗапланированныйМоментЗапускаКонтекстноеМеню + 6 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + НомерПопытки + 15 + true + true + + true + + + Объект.НомерПопытки + + + НомерПопыткиРасширеннаяПодсказка + 59 + Label + true + true + + Left + + + + НомерПопыткиКонтекстноеМеню + 16 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + КоличествоПовторовПриАварийномЗавершении + 27 + true + true + + true + + + Объект.КоличествоПовторовПриАварийномЗавершении + + + КоличествоПовторовПриАварийномЗавершенииРасширеннаяПодсказка + 61 + Label + true + true + + Left + + + + КоличествоПовторовПриАварийномЗавершенииКонтекстноеМеню + 28 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ИнтервалПовтораПриАварийномЗавершении + 25 + true + true + + true + + + Объект.ИнтервалПовтораПриАварийномЗавершении + + + ИнтервалПовтораПриАварийномЗавершенииРасширеннаяПодсказка + 63 + Label + true + true + + Left + + + + ИнтервалПовтораПриАварийномЗавершенииКонтекстноеМеню + 26 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ДатаНачалаПоследнегоЗапуска + 19 + true + true + + true + + + Объект.ДатаНачалаПоследнегоЗапуска + + + ДатаНачалаПоследнегоЗапускаРасширеннаяПодсказка + 65 + Label + true + true + + Left + + + + ДатаНачалаПоследнегоЗапускаКонтекстноеМеню + 20 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ДатаЗавершенияПоследнегоЗапуска + 21 + true + true + + true + + + Объект.ДатаЗавершенияПоследнегоЗапуска + + + ДатаЗавершенияПоследнегоЗапускаРасширеннаяПодсказка + 67 + Label + true + true + + Left + + + + ДатаЗавершенияПоследнегоЗапускаКонтекстноеМеню + 22 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ИсполняющееФоновоеЗадание + 9 + true + true + + true + + + Объект.ИсполняющееФоновоеЗадание + + + ИсполняющееФоновоеЗаданиеРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + + ИсполняющееФоновоеЗаданиеКонтекстноеМеню + 10 + true + + LabelField + Auto + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Состояние выполнения</value> + + + ГруппаСостояниеВыполненияРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + ГруппаПараметры + 35 + + ПараметрыМетода + 36 + true + true + + true + + + ПараметрыМетода + + None + + ПараметрыМетодаРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + + ПараметрыМетодаКонтекстноеМеню + 37 + true + + InputField + Show + Enter + true + Left + true + + true + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Параметры</value> + + + ГруппаПараметрыРасширеннаяПодсказка + 71 + Label + true + true + + Left + + + Page + + Vertical + auto + + + true + true + + true + + + <key>ru</key> + <value>Группа страницы</value> + + + ГруппаСтраницыРасширеннаяПодсказка + 40 + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + CatalogObject.ОчередьЗаданий + + + true + + + true + +
true
+ true +
+ + Идентификатор + + <key>ru</key> + <value>Идентификатор</value> + + 2 + + String + + 36 + + + + true + + + true + + + + Расписание + + <key>ru</key> + <value>Расписание</value> + + 3 + + + true + + + true + + + + ПараметрыМетода + + <key>ru</key> + <value>Параметры метода</value> + + 4 + + String + + + + true + + + true + + true + + + ПредставлениеРасписания + + <key>ru</key> + <value>Расписание</value> + + 5 + + String + + + + true + + + true + + true + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + diff --git a/SSL/src/Catalogs/ОчередьЗаданий/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ОчередьЗаданий/Forms/ФормаЭлемента/Module.bsl new file mode 100644 index 000000000..b33f31c55 --- /dev/null +++ b/SSL/src/Catalogs/ОчередьЗаданий/Forms/ФормаЭлемента/Module.bsl @@ -0,0 +1,97 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + Если НЕ Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + УстановитьПредставлениеРасписания(ЭтаФорма); + ПараметрыМетода = ОбщегоНазначения.ЗначениеВСтрокуXML(Новый Массив); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Идентификатор = Объект.Ссылка.УникальныйИдентификатор(); + + Расписание = ТекущийОбъект.Расписание.Получить(); + УстановитьПредставлениеРасписания(ЭтаФорма); + + ПараметрыМетода = ОбщегоНазначения.ЗначениеВСтрокуXML(ТекущийОбъект.Параметры.Получить()); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ТекущийОбъект.Расписание = Новый ХранилищеЗначения(Расписание); + ТекущийОбъект.Параметры = Новый ХранилищеЗначения(ОбщегоНазначения.ЗначениеИзСтрокиXML(ПараметрыМетода)); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + Идентификатор = Объект.Ссылка.УникальныйИдентификатор(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредставлениеРасписанияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ЗаблокироватьДанныеФормыДляРедактирования(); + + Если Расписание = Неопределено Тогда + РедактируемоеРасписание = Новый РасписаниеРегламентногоЗадания; + Иначе + РедактируемоеРасписание = Расписание; + КонецЕсли; + + Диалог = Новый ДиалогРасписанияРегламентногоЗадания(РедактируемоеРасписание); + Если НЕ Диалог.ОткрытьМодально() Тогда + Возврат; + КонецЕсли; + + Расписание = Диалог.Расписание; + Модифицированность = Истина; + УстановитьПредставлениеРасписания(ЭтаФорма); + + ПоказатьОповещениеПользователя(НСтр("ru = 'Перепланирование'"), , НСтр("ru = 'Новое расписание будет учтено при + |следующем выполнении задания'")); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредставлениеРасписанияОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ЗаблокироватьДанныеФормыДляРедактирования(); + + Расписание = Неопределено; + Модифицированность = Истина; + УстановитьПредставлениеРасписания(ЭтаФорма); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьПредставлениеРасписания(Знач Форма) + + Расписание = Форма.Расписание; + + Если Расписание <> Неопределено Тогда + Форма.ПредставлениеРасписания = Строка(Расписание); + Иначе + Форма.ПредставлениеРасписания = НСтр("ru = '<Не задано>'"); + КонецЕсли; + +КонецПроцедуры + diff --git a/SSL/src/Catalogs/ОчередьЗаданий/ОчередьЗаданий.mdo b/SSL/src/Catalogs/ОчередьЗаданий/ОчередьЗаданий.mdo index af24f85c5..17aa0c026 100644 --- a/SSL/src/Catalogs/ОчередьЗаданий/ОчередьЗаданий.mdo +++ b/SSL/src/Catalogs/ОчередьЗаданий/ОчередьЗаданий.mdo @@ -102,6 +102,7 @@ Variable InDialog BothWays + Catalog.ОчередьЗаданий.Form.ФормаЭлемента Использование @@ -388,4 +389,13 @@ Use Use + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + diff --git a/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/Forms/ФормаЭлемента/Form.form new file mode 100644 index 000000000..0705f6945 --- /dev/null +++ b/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/Forms/ФормаЭлемента/Form.form @@ -0,0 +1,940 @@ + + + + ОбластьДанныхВспомогательныеДанные + 1 + true + true + + true + + + Объект.ОбластьДанныхВспомогательныеДанные + + + ОбластьДанныхВспомогательныеДанныеРасширеннаяПодсказка + 40 + Label + true + true + + Left + + + + ОбластьДанныхВспомогательныеДанныеКонтекстноеМеню + 2 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ГруппаСтраницы + 32 + + ГруппаОсновное + 33 + + Идентификатор + 29 + true + true + + true + + + Идентификатор + + + ИдентификаторРасширеннаяПодсказка + 44 + Label + true + true + + Left + + + + ИдентификаторКонтекстноеМеню + 30 + true + + LabelField + Show + Enter + true + Left + true + + true + true + + + + Шаблон + 13 + true + true + + true + + + Объект.Шаблон + + + ШаблонРасширеннаяПодсказка + 46 + Label + true + true + + Left + + + + ШаблонКонтекстноеМеню + 14 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ПредставлениеРасписания + 38 + true + true + + true + + + ПредставлениеРасписания + + + ПредставлениеРасписанияРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + + ПредставлениеРасписанияКонтекстноеМеню + 39 + true + + InputField + Show + Enter + true + Left + true + + + StartChoice + ПредставлениеРасписанияНачалоВыбора + + + Clearing + ПредставлениеРасписанияОчистка + + true + true + true + true + true + true + true + Normal + + + + ИмяМетода + 17 + true + true + + true + + + Объект.ИмяМетода + + + ИмяМетодаРасширеннаяПодсказка + 50 + Label + true + true + + Left + + + + ИмяМетодаКонтекстноеМеню + 18 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + Ключ + 23 + true + true + + true + + + Объект.Ключ + + + КлючРасширеннаяПодсказка + 52 + Label + true + true + + Left + + + + КлючКонтекстноеМеню + 24 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + Использование + 3 + true + true + + true + + + Объект.Использование + + + ИспользованиеРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + + ИспользованиеКонтекстноеМеню + 4 + true + + CheckBoxField + Show + Auto + true + Left + true + + + + ЭксклюзивноеВыполнение + 11 + true + true + + true + + + Объект.ЭксклюзивноеВыполнение + + + ЭксклюзивноеВыполнениеРасширеннаяПодсказка + 56 + Label + true + true + + Left + + + + ЭксклюзивноеВыполнениеКонтекстноеМеню + 12 + true + + CheckBoxField + Show + Auto + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Основное</value> + + + ГруппаОсновноеРасширеннаяПодсказка + 43 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + ГруппаСостояниеВыполнения + 34 + + СостояниеЗадания + 7 + true + true + + true + + + Объект.СостояниеЗадания + + + СостояниеЗаданияРасширеннаяПодсказка + 59 + Label + true + true + + Left + + + + СостояниеЗаданияКонтекстноеМеню + 8 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЗапланированныйМоментЗапуска + 5 + true + true + + true + + + Объект.ЗапланированныйМоментЗапуска + + + ЗапланированныйМоментЗапускаРасширеннаяПодсказка + 61 + Label + true + true + + Left + + + + ЗапланированныйМоментЗапускаКонтекстноеМеню + 6 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + НомерПопытки + 15 + true + true + + true + + + Объект.НомерПопытки + + + НомерПопыткиРасширеннаяПодсказка + 63 + Label + true + true + + Left + + + + НомерПопыткиКонтекстноеМеню + 16 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + КоличествоПовторовПриАварийномЗавершении + 27 + true + true + + true + + + Объект.КоличествоПовторовПриАварийномЗавершении + + + КоличествоПовторовПриАварийномЗавершенииРасширеннаяПодсказка + 65 + Label + true + true + + Left + + + + КоличествоПовторовПриАварийномЗавершенииКонтекстноеМеню + 28 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ИнтервалПовтораПриАварийномЗавершении + 25 + true + true + + true + + + Объект.ИнтервалПовтораПриАварийномЗавершении + + + ИнтервалПовтораПриАварийномЗавершенииРасширеннаяПодсказка + 67 + Label + true + true + + Left + + + + ИнтервалПовтораПриАварийномЗавершенииКонтекстноеМеню + 26 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ДатаНачалаПоследнегоЗапуска + 19 + true + true + + true + + + Объект.ДатаНачалаПоследнегоЗапуска + + + ДатаНачалаПоследнегоЗапускаРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + + ДатаНачалаПоследнегоЗапускаКонтекстноеМеню + 20 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ДатаЗавершенияПоследнегоЗапуска + 21 + true + true + + true + + + Объект.ДатаЗавершенияПоследнегоЗапуска + + + ДатаЗавершенияПоследнегоЗапускаРасширеннаяПодсказка + 71 + Label + true + true + + Left + + + + ДатаЗавершенияПоследнегоЗапускаКонтекстноеМеню + 22 + true + + InputField + Show + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ИсполняющееФоновоеЗадание + 9 + true + true + + true + + + Объект.ИсполняющееФоновоеЗадание + + + ИсполняющееФоновоеЗаданиеРасширеннаяПодсказка + 73 + Label + true + true + + Left + + + + ИсполняющееФоновоеЗаданиеКонтекстноеМеню + 10 + true + + LabelField + Auto + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Состояние выполнения</value> + + + ГруппаСостояниеВыполненияРасширеннаяПодсказка + 58 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + ГруппаПараметры + 35 + + ПараметрыМетода + 36 + true + true + + true + + + ПараметрыМетода + + None + + ПараметрыМетодаРасширеннаяПодсказка + 76 + Label + true + true + + Left + + + + ПараметрыМетодаКонтекстноеМеню + 37 + true + + InputField + Show + Enter + true + Left + true + + true + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Параметры</value> + + + ГруппаПараметрыРасширеннаяПодсказка + 75 + Label + true + true + + Left + + + Page + + Vertical + auto + + + true + true + + true + + + <key>ru</key> + <value>Группа страницы</value> + + + ГруппаСтраницыРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + CatalogObject.ОчередьЗаданийОбластейДанных + + + true + + + true + +
true
+ true +
+ + Идентификатор + + <key>ru</key> + <value>Идентификатор</value> + + 2 + + String + + 36 + + + + true + + + true + + + + Расписание + + <key>ru</key> + <value>Расписание</value> + + 3 + + + true + + + true + + + + ПараметрыМетода + + <key>ru</key> + <value>Параметры метода</value> + + 4 + + String + + + + true + + + true + + true + + + ПредставлениеРасписания + + <key>ru</key> + <value>Расписание</value> + + 5 + + String + + + + true + + + true + + true + + + + + + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + +
diff --git a/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/Forms/ФормаЭлемента/Module.bsl new file mode 100644 index 000000000..3bad1083e --- /dev/null +++ b/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/Forms/ФормаЭлемента/Module.bsl @@ -0,0 +1,104 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + Если НЕ Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + ТолькоПросмотр = Истина; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + УстановитьПредставлениеРасписания(ЭтаФорма); + ПараметрыМетода = ОбщегоНазначения.ЗначениеВСтрокуXML(Новый Массив); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Идентификатор = Объект.Ссылка.УникальныйИдентификатор(); + + Расписание = ТекущийОбъект.Расписание.Получить(); + УстановитьПредставлениеРасписания(ЭтаФорма); + + ПараметрыМетода = ОбщегоНазначения.ЗначениеВСтрокуXML(ТекущийОбъект.Параметры.Получить()); + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ТекущийОбъект.Расписание = Новый ХранилищеЗначения(Расписание); + ТекущийОбъект.Параметры = Новый ХранилищеЗначения(ОбщегоНазначения.ЗначениеИзСтрокиXML(ПараметрыМетода)); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + Идентификатор = Объект.Ссылка.УникальныйИдентификатор(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредставлениеРасписанияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ЗаблокироватьДанныеФормыДляРедактирования(); + + Если ЗначениеЗаполнено(Объект.Шаблон) Тогда + Предупреждение(НСтр("ru = 'Для заданий на основе шаблонов, расписание задается в шаблоне.'")); + Возврат; + КонецЕсли; + + Если Расписание = Неопределено Тогда + РедактируемоеРасписание = Новый РасписаниеРегламентногоЗадания; + Иначе + РедактируемоеРасписание = Расписание; + КонецЕсли; + + Диалог = Новый ДиалогРасписанияРегламентногоЗадания(РедактируемоеРасписание); + Если НЕ Диалог.ОткрытьМодально() Тогда + Возврат; + КонецЕсли; + + Расписание = Диалог.Расписание; + Модифицированность = Истина; + УстановитьПредставлениеРасписания(ЭтаФорма); + + ПоказатьОповещениеПользователя(НСтр("ru = 'Перепланирование'"), , НСтр("ru = 'Новое расписание будет учтено при + |следующем выполнении задания'")); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредставлениеРасписанияОчистка(Элемент, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ЗаблокироватьДанныеФормыДляРедактирования(); + + Расписание = Неопределено; + Модифицированность = Истина; + УстановитьПредставлениеРасписания(ЭтаФорма); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Процедура УстановитьПредставлениеРасписания(Знач Форма) + + Расписание = Форма.Расписание; + + Если Расписание <> Неопределено Тогда + Форма.ПредставлениеРасписания = Строка(Расписание); + ИначеЕсли ЗначениеЗаполнено(Форма.Объект.Шаблон) Тогда + Форма.ПредставлениеРасписания = НСтр("ru = '<Задается в шаблоне>'"); + Иначе + Форма.ПредставлениеРасписания = НСтр("ru = '<Не задано>'"); + КонецЕсли; + +КонецПроцедуры + diff --git a/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/ОчередьЗаданийОбластейДанных.mdo b/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/ОчередьЗаданийОбластейДанных.mdo index e3a3c1ebd..0141583c8 100644 --- a/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/ОчередьЗаданийОбластейДанных.mdo +++ b/SSL/src/Catalogs/ОчередьЗаданийОбластейДанных/ОчередьЗаданийОбластейДанных.mdo @@ -102,6 +102,7 @@ Variable InDialog BothWays + Catalog.ОчередьЗаданийОбластейДанных.Form.ФормаЭлемента Catalog.ОчередьЗаданийОбластейДанных.Form.ФормаСписка Использование @@ -214,6 +215,7 @@ + Index Use Use @@ -417,4 +419,13 @@ PersonalComputer MobileDevice + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + diff --git a/SSL/src/Catalogs/ПапкиФайлов/Help/ru.html b/SSL/src/Catalogs/ПапкиФайлов/Help/ru.html index fcb8eff7d..c86efc0b9 100644 --- a/SSL/src/Catalogs/ПапкиФайлов/Help/ru.html +++ b/SSL/src/Catalogs/ПапкиФайлов/Help/ru.html @@ -1,4 +1,4 @@ - +

Все файлы хранятся в структуре папок, которую удобно вести, например:

  • в соответствии с организационной структурой Вашего предприятия; 
  • по типам файлов (например, "Договора", "Приказы", "Служебные записки");  diff --git a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index ed9972d0b..91027f589 100644 --- a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,13 +1,6 @@ - - false - Владелец - Equal - Справочник.УчетныеЗаписиЭлектроннойПочты.ПустаяСсылка - Inaccessible - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаСписка/Module.bsl index 26d35442a..421fa17ba 100644 --- a/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ПапкиЭлектронныхПисем/Forms/ФормаСписка/Module.bsl @@ -23,4 +23,8 @@ КонецЕсли; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Владелец", Справочники.УчетныеЗаписиЭлектроннойПочты.ПустаяСсылка(), + ВидСравненияКомпоновкиДанных.Равно, , Ложь); + КонецПроцедуры diff --git a/SSL/src/Catalogs/Пользователи/Forms/ПользователиИБ/Help/ru.html b/SSL/src/Catalogs/Пользователи/Forms/ПользователиИБ/Help/ru.html index 89bcd3ef5..74c5ad56c 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ПользователиИБ/Help/ru.html +++ b/SSL/src/Catalogs/Пользователи/Forms/ПользователиИБ/Help/ru.html @@ -1,4 +1,4 @@ - +

    При записи пользователя (или внешнего пользователя) с установленным флажком Доступ к информационной базе разрешен, вместе с ним автоматически создается соответствующий ему новый (или модифицируется существующий) пользователь ИБ. И наоборот, когда пользователь (или внешний пользователь) записывается со снятым флажком Доступ к информационной базе разрешен, то соответствующий ему пользователь ИБ автоматически удаляется из списка пользователей ИБ. Однако есть ряд ситуаций, когда список пользователей ИБ становится рассинхронизированным со списком пользователей. Тогда с помощью данного списка могут быть решены следующие задачи:

    • Найти "некорректных" пользователей ИБ и синхронизировать списки пользователей ИБ и пользователей между собой:
      • если пользователь ИБ был добавлен с помощью конфигуратора (или каким-либо нештатным программным способом), предлагается удалить такого пользователя ИБ; diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Form.form b/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Form.form index dccffc6e8..eca1399bc 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Form.form +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Form.form @@ -683,7 +683,7 @@ Yes 54 20 - DontBlock + LockOwner true true true diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Help/ru.html b/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Help/ru.html index b2c95e5e0..c98fe893d 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Help/ru.html +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Help/ru.html @@ -1,4 +1,4 @@ - +

        Диалог "Выбор пользователя операционной системы" позволяет выбрать одного из пользователей, зарегистрированных в операционной системе.

        В списке "Домены" отображаются имена доменов, видимых с данного компьютера.

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

        diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Module.bsl b/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Module.bsl index 85bab017d..019835372 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Module.bsl +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаВыбораПользователяОС/Module.bsl @@ -100,7 +100,7 @@ ИмяДомена = Элементы.ТаблицаДоменов.ТекущиеДанные.ИмяДомена; ИмяПользователя = Элементы.ТаблицаПользователейДомена.ТекущиеДанные.ИмяПользователя; - СтрокаПользователяWindows = "\\" + ИмяДомена + "\" + ИмяПользователя; - Закрыть(СтрокаПользователяWindows); + РезультатВыбора = "\\" + ИмяДомена + "\" + ИмяПользователя; + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Attributes/ГруппыПользователей/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Attributes/ГруппыПользователей/ExtInfo/ListSettings.dcss index 31e6269dc..91027f589 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Attributes/ГруппыПользователей/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Attributes/ГруппыПользователей/ExtInfo/ListSettings.dcss @@ -5,14 +5,6 @@ dfcece9d-5077-440b-b6b3-45a5cb4538eb - - Предопределенный - Desc - - - Наименование - Asc - Normal 88619765-ccb3-46c6-ac52-38e9c992ebd4 diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Attributes/ПользователиСписок/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Attributes/ПользователиСписок/ExtInfo/ListSettings.dcss index 62a95e605..91027f589 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Attributes/ПользователиСписок/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Attributes/ПользователиСписок/ExtInfo/ListSettings.dcss @@ -1,50 +1,14 @@ - - Служебный - Equal - false - - - Недействителен - Equal - false - - - false - ПометкаУдаления - Equal - false - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb - - Наименование - Asc - Normal 88619765-ccb3-46c6-ac52-38e9c992ebd4 - - - - - Недействителен - Equal - true - - - - - ЦветТекста - style:ТекстЗапрещеннойЯчейкиЦвет - - - Normal b75fecce-942b-4aed-abc9-e6a02e460fb3 diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Form.form index 9ec6595e6..ee80be8a8 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Form.form @@ -1454,7 +1454,7 @@ BeforeLoadDataFromSettingsAtServer - ПриЗагрузкеДанныхИзНастроекНаСервере + ПередЗагрузкеДанныхИзНастроекНаСервере Create 80 diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl index bbebbebed..2e2a887c0 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаСписка/Module.bsl @@ -23,6 +23,10 @@ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; + + Если ОбщегоНазначения.ПриСозданииФормыНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ) Тогда + Возврат; + КонецЕсли; // Начальное значение настройки до загрузки данных из настроек. ВыбиратьИерархически = Истина; @@ -31,11 +35,10 @@ ЗаполнитьПараметрыДинамическихСписков(); Если Параметры.РежимВыбора Тогда + КлючНазначенияИспользования = "ВыборПодбор"; РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; КонецЕсли; - ОбновитьОтборНедействительныхПользователей(ЭтаФорма); - // Скрытие пользователей с пустым идентификатором, если значение параметра Истина. Если Параметры.ДоступКИнформационнойБазеРазрешен Тогда @@ -53,6 +56,10 @@ КонецЕсли; + // Скрытие служебных пользователей. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "Служебный", Ложь, , , Истина); + // Скрытие переданного пользователя из формы выбора пользователей. Если ТипЗнч(Параметры.СкрываемыеПользователи) = Тип("СписокЗначений") Тогда @@ -65,6 +72,10 @@ КонецЕсли; + ОформитьИСкрытьНедействительныхПользователей(); + + НастроитьПорядокГруппыВсеПользователи(ГруппыПользователей); + ХранимыеПараметры.Вставить("РасширенныйПодбор", Параметры.РасширенныйПодбор); Элементы.ВыбранныеПользователиИГруппы.Видимость = ХранимыеПараметры.РасширенныйПодбор; ХранимыеПараметры.Вставить( @@ -81,7 +92,9 @@ КонецЕсли; // Отбор не помеченных на удаление. - ПользователиСписок.Отбор.Элементы[0].Использование = Истина; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "ПометкаУдаления", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); Элементы.ПользователиСписок.РежимВыбора = Истина; Элементы.ГруппыПользователей.РежимВыбора = ХранимыеПараметры.ВыборГруппПользователей; @@ -136,7 +149,7 @@ КонецПроцедуры &НаСервере -Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) +Процедура ПередЗагрузкеДанныхИзНастроекНаСервере(Настройки) Если ТипЗнч(Настройки["ВыбиратьИерархически"]) = Тип("Булево") Тогда ВыбиратьИерархически = Настройки["ВыбиратьИерархически"]; @@ -204,7 +217,7 @@ ОповеститьОВыборе(Значение); Иначе - ПолучитьКартинкиИзаполнитьСписокВыбранных(Значение); + ПолучитьКартинкиИЗаполнитьСписокВыбранных(Значение); КонецЕсли; @@ -289,7 +302,7 @@ ИначеЕсли Не ГруппаПомеченаНаУдаление Тогда ШаблонВопроса = НСтр("ru = '%1 пользователей (%2) в группу ""%3""?'"); Иначе - ТекстВопроса = НСтр("ru = '%1 пользователей (%2) в эту группу?'"); + ШаблонВопроса = НСтр("ru = '%1 пользователей (%2) в эту группу?'"); КонецЕсли; ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ШаблонВопроса, ДействиеСПользователем, КоличествоПользователей, @@ -318,7 +331,7 @@ Предупреждение(СообщениеПользователю.Сообщение); КонецЕсли; - Оповестить("Запись_ГруппыПользователей"); + Оповестить("Запись_ГруппыВнешнихПользователей"); КонецПроцедуры @@ -341,7 +354,7 @@ ОповеститьОВыборе(Значение); Иначе - ПолучитьКартинкиИзаполнитьСписокВыбранных(Значение); + ПолучитьКартинкиИЗаполнитьСписокВыбранных(Значение); КонецЕсли; @@ -396,7 +409,12 @@ &НаКлиенте Процедура ПоказыватьНедействительныхПользователей(Команда) - ОбновитьОтборНедействительныхПользователей(ЭтаФорма, Истина); + Элементы.ПоказыватьНедействительныхПользователей.Пометка = + НЕ Элементы.ПоказыватьНедействительныхПользователей.Пометка; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "Недействителен", Ложь, , , + НЕ Элементы.ПоказыватьНедействительныхПользователей.Пометка); КонецПроцедуры @@ -474,6 +492,61 @@ КонецПроцедуры +&НаСервере +Процедура ОформитьИСкрытьНедействительныхПользователей() + + // Оформление. + ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); + + ЭлементЦветаОформления = ЭлементУсловногоОформления.Оформление.Элементы.Найти("TextColor"); + ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.НедоступныеДанныеЦвет.Значение; + ЭлементЦветаОформления.Использование = Истина; + + ЭлементОтбораДанных = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПользователиСписок.Недействителен"); + ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбораДанных.ПравоеЗначение = Истина; + ЭлементОтбораДанных.Использование = Истина; + + ЭлементОформляемогоПоля = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); + ЭлементОформляемогоПоля.Поле = Новый ПолеКомпоновкиДанных("ПользователиСписок"); + ЭлементОформляемогоПоля.Использование = Истина; + + // Скрытие. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + ПользователиСписок, "Недействителен", Ложь, , , Истина); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьПорядокГруппыВсеПользователи(Список) + + Перем Порядок; + + // Порядок. + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + Иначе + Порядок = Список.Порядок; + КонецЕсли; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Предопределенный"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Убыв; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + +КонецПроцедуры + &НаСервере Процедура УдалитьИзСпискаВыбранных(УдалитьВсех = Ложь) @@ -493,7 +566,7 @@ КонецПроцедуры &НаКлиенте -Процедура ПолучитьКартинкиИзаполнитьСписокВыбранных(МассивВыбранныхЭлементов) +Процедура ПолучитьКартинкиИЗаполнитьСписокВыбранных(МассивВыбранныхЭлементов) ВыбранныеЭлементыИКартинки = Новый Массив; Для Каждого ВыбранныйЭлемент Из МассивВыбранныхЭлементов Цикл @@ -529,7 +602,7 @@ ВыбранныеПользователиИГруппы.Загрузить(ПараметрыРасширеннойФормыПодбора.ВыбранныеПользователи); Пользователи.ЗаполнитьНомераКартинокПользователей(ВыбранныеПользователиИГруппы, "Пользователь", "НомерКартинки"); ХранимыеПараметры.Вставить("ЗаголовокФормыПодбора", ПараметрыРасширеннойФормыПодбора.ЗаголовокФормыПодбора); - // Установка параметров раширенной формы подбора. + // Установка параметров расширенной формы подбора. Элементы.ЗавершитьИЗакрыть.Видимость = Истина; Элементы.ГруппаВыбратьПользователя.Видимость = Истина; // Включение видимости списка выбранных пользователей. @@ -607,34 +680,6 @@ КонецПроцедуры -&НаКлиентеНаСервереБезКонтекста -Процедура ОбновитьОтборНедействительныхПользователей(Форма, ИзменитьОтбор = Ложь) - - Элементы = Форма.Элементы; - - Если ИзменитьОтбор Тогда - - Элементы.ПоказыватьНедействительныхПользователей.Пометка = - НЕ Элементы.ПоказыватьНедействительныхПользователей.Пометка; - - ИначеЕсли Форма.Параметры.Отбор.Свойство("Недействителен") Тогда - - Элементы.ПоказыватьНедействительныхПользователей.Пометка = - Форма.Параметры.Отбор.Недействителен; - - КонецЕсли; - - Если Элементы.ПоказыватьНедействительныхПользователей.Пометка Тогда - - ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( - Форма.ПользователиСписок, "Недействителен", Ложь, , , Ложь); - Иначе - ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( - Форма.ПользователиСписок, "Недействителен", Ложь, , , Истина); - КонецЕсли; - -КонецПроцедуры - &НаКлиенте Процедура ПриИзмененииИспользованияГруппПользователей() diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Form.form index 02ce7d114..8f9785b21 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Form.form @@ -1634,6 +1634,10 @@ -1 Left + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии @@ -2280,6 +2284,23 @@ true + + ЗапросПароляПередЗаписью + + <key>ru</key> + <value>Запрос пароля перед записью</value> + + 30 + + Boolean + + + true + + + true + + ПоказатьТолькоВыбранныеРоли diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Help/ru.html index a4b9879f3..5e961c52b 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Для редактирования сведений о пользователе необходимы права администрирования. В остальных случаях, доступен только просмотр сведений о себе, а также возможность изменить свой пароль, язык программы и контактную информацию.</p> <p><strong>Полное имя </strong>пользователя выводится во всех списках и отчетах. Флажок <strong>Недействителен</strong> по умолчанию снят для всех пользователей. Но если пользователь по каким-либо причинам более не работает с программой, и в то же время его нельзя удалить из-за наличия ссылок на него из других объектов программы, то рекомендуется установить флажок <strong>Недействителен</strong>. Такого пользователя нельзя выбрать, например, как исполнителя задачи или ответственного за документ, и он не отображается в списке пользователей.</p> <p>Для того чтобы пользователь мог работать в программе, ему нужно установить флажок <strong>Доступ к информационной базе разрешен</strong> и задать необходимые свойства: имя, пароль и другие параметры авторизации. Имя для входа в программу может отличаться от полного имени (например, "Иванов", а полное имя - "Иванов Иван Иванович").</p> diff --git a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl index 2727af496..3d1d8eae1 100644 --- a/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/Пользователи/Forms/ФормаЭлемента/Module.bsl @@ -1,4 +1,3 @@ - //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -155,6 +154,29 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.АутентификацияВСервисе") Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + ПарольПользователяСервиса = ВыбранноеЗначение; + Если ЗапросПароляПередЗаписью Тогда + Записать(); + Иначе + Подключаемый_EMailНачалоВыбора(); + КонецЕсли; + КонецЕсли; + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.Пользователи.Форма.ФормаВыбораПользователяОС") Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда + ПользовательИнфБазыПользовательОС = ВыбранноеЗначение; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПередЗаписью(Отказ) @@ -196,9 +218,16 @@ Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().РазделениеВключено И ТребуетсяСинхронизацияССервисом Тогда - СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе( - ПарольПользователяСервиса, Отказ); + ЗапросПароляПередЗаписью = Истина; + ПарольЕщёНеВведен = Ложь; + СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе( + ЭтаФорма, ПарольПользователяСервиса, ПарольЕщёНеВведен); + + Если ПарольЕщёНеВведен Тогда + Отказ = Истина; + Возврат; + КонецЕсли; КонецЕсли; КонецПроцедуры @@ -253,8 +282,12 @@ ТребуетсяСинхронизацияССервисом = Ложь; - ПараметрыЗаписи.Вставить( - ТекущийОбъект.ДополнительныеСвойства.ОписаниеПользователяИБ.РезультатДействия); + Если ДействияВФорме.СвойстваПользователяИБ = "РедактированиеВсех" + ИЛИ ДействияВФорме.СвойстваПользователяИБ = "РедактированиеСвоих" Тогда + + ПараметрыЗаписи.Вставить( + ТекущийОбъект.ДополнительныеСвойства.ОписаниеПользователяИБ.РезультатДействия); + КонецЕсли; ПрочитатьПользователяИБ(); @@ -397,11 +430,7 @@ Процедура ПользовательИнфБазыПользовательОСНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) #Если НЕ ВебКлиент Тогда - Результат = ОткрытьФормуМодально("Справочник.Пользователи.Форма.ФормаВыбораПользователяОС"); - - Если ТипЗнч(Результат) = Тип("Строка") Тогда - ПользовательИнфБазыПользовательОС = Результат; - КонецЕсли; + ОткрытьФорму("Справочник.Пользователи.Форма.ФормаВыбораПользователяОС", , ЭтаФорма); #КонецЕсли КонецПроцедуры @@ -433,6 +462,8 @@ КонецПроцедуры +// СтандартныеПодсистемы.КонтактнаяИнформация + &НаКлиенте Процедура Подключаемый_EMailПриИзменении(Элемент) @@ -467,30 +498,32 @@ &НаКлиенте Процедура Подключаемый_EMailНачалоВыбора() - Отказ = Ложь; + ЗапросПароляПередЗаписью = Ложь; + ПарольЕщёНеВведен = Ложь; СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе( - ПарольПользователяСервиса, Отказ); + ЭтаФорма, ПарольПользователяСервиса, ПарольЕщёНеВведен); - Если Отказ Тогда + Если ПарольЕщёНеВведен Тогда Возврат; КонецЕсли; ТаблицаКИ = ЭтаФорма.КонтактнаяИнформацияОписаниеДополнительныхРеквизитов; - СтрокаEMail = ТаблицаКИ.НайтиСтроки(Новый Структура("Вид", - ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.EmailПользователя")))[0]; + + Отбор = Новый Структура("Вид", + ПредопределенноеЗначение("Справочник.ВидыКонтактнойИнформации.EmailПользователя")); + + СтрокаEMail = ТаблицаКИ.НайтиСтроки(Отбор)[0]; ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("ПарольПользователяСервиса", ПарольПользователяСервиса); - ПараметрыФормы.Вставить("СтараяПочта", ЭтаФорма[СтрокаEMail.ИмяРеквизита]); + ПараметрыФормы.Вставить("СтараяПочта", ЭтаФорма[СтрокаEMail.ИмяРеквизита]); ПараметрыФормы.Вставить("Пользователь", Объект.Ссылка); ОткрытьФорму("Справочник.Пользователи.Форма.СменаПочты", ПараметрыФормы, ЭтаФорма); КонецПроцедуры -// СтандартныеПодсистемы.КонтактнаяИнформация - &НаКлиенте Процедура Подключаемый_КонтактнаяИнформацияПриИзменении(Элемент) @@ -624,7 +657,7 @@ // переназначению, созданию отделов, подразделений и рабочих групп). ДействияВФорме.Роли = ""; ДействияВФорме.КонтактнаяИнформация = "Редактирование"; - ДействияВФорме.СвойстваПользователяИБ = "РедактированиеВсех"; + ДействияВФорме.СвойстваПользователяИБ = "ПросмотрВсех"; ДействияВФорме.СвойстваЭлемента = "Редактирование"; ИначеЕсли Объект.Ссылка = ПользователиКлиентСервер.АвторизованныйПользователь() Тогда @@ -910,7 +943,7 @@ ВыводитьСписокРолей = ЗначениеЗаполнено(ДействияВФорме.Роли); Элементы.ОтображениеРолей.Видимость = ВыводитьСписокРолей; Элементы.СвойстваАутентификации1СПредприятия.Отображение = - ?(ВыводитьСписокРолей, ОтображениеОбычнойГруппы.Нет, ОтображениеОбычнойГруппы.Отступ); + ?(ВыводитьСписокРолей, ОтображениеОбычнойГруппы.Нет, ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыОтступ()); Элементы.Наименование.ТолькоПросмотр = ДействияВФорме.СвойстваЭлемента <> "Редактирование"; diff --git a/SSL/src/Catalogs/Пользователи/Help/ru.html b/SSL/src/Catalogs/Пользователи/Help/ru.html index 6b90eed2c..ad6a195e6 100644 --- a/SSL/src/Catalogs/Пользователи/Help/ru.html +++ b/SSL/src/Catalogs/Пользователи/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В этом списке ведется учет пользователей, которые работают с программой. </p> <p>В случае большого количества пользователей список может быть сгруппирован. Например, группы пользователей можно использовать для ведения структуры подразделений компании. Для того чтобы увидеть всех пользователей, включенных в дочерние группы с учетом иерархии, необходимо установить флажок <strong>Показывать пользователей дочерних групп</strong> в нижней части списка. Для добавления новых групп пользователей воспользуйтесь командами в левой части списка. Для добавления в группу большого числа пользователей можно открыть форму группы и воспользоваться командой <strong>Подобрать</strong>. Один и тот же пользователь может одновременно входить в разные группы пользователей.</p> <p>Для ведения списка пользователей требуются права администрирования. Остальным пользователям доступен только просмотр сведений о себе, а также изменение ряда свойств, таких как: пароль, язык программы и контактная информация.</p> diff --git a/SSL/src/Catalogs/Пользователи/ManagerModule.bsl b/SSL/src/Catalogs/Пользователи/ManagerModule.bsl index ce76cb8f7..33f562110 100644 --- a/SSL/src/Catalogs/Пользователи/ManagerModule.bsl +++ b/SSL/src/Catalogs/Пользователи/ManagerModule.bsl @@ -17,25 +17,6 @@ Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) - Если ВидФормы = "ФормаВыбора" Тогда - - ПараметрИзменен = Ложь; - - Если Не Параметры.Свойство("Отбор") Тогда - Параметры.Вставить("Отбор", Новый Структура("Недействителен", Ложь)); - ПараметрИзменен = Истина; - ИначеЕсли Не Параметры.Отбор.Свойство("Недействителен") Тогда - Параметры.Отбор.Вставить("Недействителен", Ложь); - ПараметрИзменен = Истина; - КонецЕсли; - - Если ПараметрИзменен Тогда - СтандартнаяОбработка = Ложь; - ВыбраннаяФорма = "ФормаСписка"; - КонецЕсли; - - КонецЕсли; - ПользователиСлужебный.ОбработкаПолученияФормыПользователя(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка); diff --git a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаСписка/Module.bsl index 9fdb9ac99..a4928011b 100644 --- a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаСписка/Module.bsl @@ -37,27 +37,23 @@ ОчиститьСообщения(); - СтруктураПараметры = Новый Структура; - МассивЭлементовОтбора = ОбщегоНазначенияКлиентСервер.НайтиЭлементыИГруппыОтбора(Список.Отбор,"Владелец"); - Если МассивЭлементовОтбора.Количество() > 0 И МассивЭлементовОтбора[0].Использование И - ЗначениеЗаполнено(МассивЭлементовОтбора[0].ПравоеЗначение) Тогда - - СтруктураПараметры.Вставить("УчетнаяЗапись",МассивЭлементовОтбора[0].ПравоеЗначение); - + ПараметрыФормы = Новый Структура; + + МассивЭлементовОтбора = ОбщегоНазначенияКлиентСервер.НайтиЭлементыИГруппыОтбора(ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список), "Владелец"); + Если МассивЭлементовОтбора.Количество() > 0 И МассивЭлементовОтбора[0].Использование + И ЗначениеЗаполнено(МассивЭлементовОтбора[0].ПравоеЗначение) Тогда + ПараметрыФормы.Вставить("УчетнаяЗапись",МассивЭлементовОтбора[0].ПравоеЗначение); Иначе - - ОбщегоНазначенияКлиентСервер.СообщитьПользователю( - НСтр("ru = 'Не установлен отбор по владельцу(учетной записи) правил.'")); + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Не установлен отбор по владельцу(учетной записи) правил.'")); Возврат; - КонецЕсли; - Результат = ОткрытьФормуМодально("Справочник.ПравилаОбработкиЭлектроннойПочты.Форма.ПрименениеПравил",СтруктураПараметры, ЭтаФорма); + ОткрытьФорму("Справочник.ПравилаОбработкиЭлектроннойПочты.Форма.ПрименениеПравил", ПараметрыФормы, ЭтаФорма); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// -// Команды подсистемы настройка порядка элементнов для подчиненного справочника +// Команды подсистемы настройка порядка элементов для подчиненного справочника // &НаКлиенте diff --git a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form index 7524463fb..33babbf65 100644 --- a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form @@ -11,6 +11,10 @@ <dataPath xsi:type="form:DataPath"> <segments>Объект.Description</segments> </dataPath> + <handlers> + <event>OnChange</event> + <name>НаименованиеПриИзменении</name> + </handlers> <extendedTooltip> <name>НаименованиеРасширеннаяПодсказка</name> <id>15</id> @@ -32,10 +36,6 @@ <headerHorizontalAlign>Left</headerHorizontalAlign> <showInFooter>true</showInFooter> <extInfo xsi:type="form:InputFieldExtInfo"> - <handlers> - <event>StartListChoice</event> - <name>НаименованиеНачалоВыбораИзСписка</name> - </handlers> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <wrap>true</wrap> @@ -136,6 +136,10 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <handlers> + <event>OnChange</event> + <name>КомпоновщикНастроекНастройкиОтборПриИзменении</name> + </handlers> <searchStringAddition> <name>КомпоновщикНастроекНастройкиОтборСтрокаПоиска</name> <id>21</id> @@ -258,6 +262,10 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <handlers> + <event>OnOpen</event> + <name>ПриОткрытии</name> + </handlers> <handlers> <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> diff --git a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl index d5c43f125..98c96ad21 100644 --- a/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ПравилаОбработкиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl @@ -49,19 +49,28 @@ КонецПроцедуры +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + СформироватьСписокВыбораНаименования(); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + &НаКлиенте -Процедура НаименованиеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка) +Процедура КомпоновщикНастроекНастройкиОтборПриИзменении(Элемент) - Элементы.Наименование.СписокВыбора.Очистить(); - Элементы.Наименование.СписокВыбора.Добавить(Объект.Наименование); - ПредставлениеОтбора = Строка(КомпоновщикНастроек.Настройки.Отбор); - Если СтрДлина(ПредставлениеОтбора) > 150 Тогда - ПредставлениеОтбора = Лев(ПредставлениеОтбора,147) + "..."; - КонецЕсли; - Элементы.Наименование.СписокВыбора.Добавить(ПредставлениеОтбора); + СформироватьСписокВыбораНаименования(); + +КонецПроцедуры + +&НаКлиенте +Процедура НаименованиеПриИзменении(Элемент) + + СформироватьСписокВыбораНаименования(); КонецПроцедуры @@ -84,4 +93,23 @@ КонецПроцедуры +&НаКлиенте +Процедура СформироватьСписокВыбораНаименования() + + Элементы.Наименование.СписокВыбора.Очистить(); + Если Не ПустаяСтрока(Объект.Наименование) Тогда + Элементы.Наименование.СписокВыбора.Добавить(Объект.Наименование); + КонецЕсли; + ПредставлениеОтбора = Строка(КомпоновщикНастроек.Настройки.Отбор); + Если СтрДлина(ПредставлениеОтбора) > 150 Тогда + ПредставлениеОтбора = Лев(ПредставлениеОтбора,147) + "..."; + КонецЕсли; + Если ПредставлениеОтбора <> Объект.Наименование Тогда + Элементы.Наименование.СписокВыбора.Добавить(ПредставлениеОтбора); + КонецЕсли; + +КонецПроцедуры + + + diff --git a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Form.form index c68c97d27..a164fbf10 100644 --- a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Form.form @@ -632,6 +632,10 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <handlers> + <event>ChoiceProcessing</event> + <name>ОбработкаВыбора</name> + </handlers> <handlers> <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> @@ -930,7 +934,7 @@ <commandInterface> <navigationPanel> <cmiFragmentRecord> - <command>InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardCommand.OpenByValue.ЭлементОбщихДанных</command> + <command>0</command> <userVisible/> </cmiFragmentRecord> </navigationPanel> diff --git a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Help/ru.html index 52c48e9f0..ced90fa3e 100644 --- a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Виды дней производственного календаря выделены разными цветами: </p> <ul><li>черным – рабочий день, </li><li><font color="#8b0000">темно-красным</font> – суббота, diff --git a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Module.bsl index 20a727653..53ec85b69 100644 --- a/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ПроизводственныеКалендари/Forms/ФормаЭлемента/Module.bsl @@ -25,6 +25,22 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборДаты") Тогда + Если ВыбранноеЗначение = Неопределено Тогда + Возврат; + КонецЕсли; + ВыделенныеДаты = Элементы.Календарь.ВыделенныеДаты; + Если ВыделенныеДаты.Количество() = 0 Или Год(ВыделенныеДаты[0]) <> НомерТекущегоГода Тогда + Возврат; + КонецЕсли; + ДатаПереноса = ВыделенныеДаты[0]; + ПеренестиВидДня(ДатаПереноса, ВыбранноеЗначение); + Элементы.Календарь.Обновить(); + КонецЕсли; +КонецПроцедуры + &НаСервере Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) @@ -69,7 +85,7 @@ Для Каждого СтрокаОформленияПериода Из ОформлениеПериода.Даты Цикл ЦветОформленияДня = ЦветаВидовДней.Получить(ВидыДней.Получить(СтрокаОформленияПериода.Дата)); Если ЦветОформленияДня = Неопределено Тогда - ЦветОформленияДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняНеУказанЦвет"); + ЦветОформленияДня = ОбщегоНазначенияКлиент.ЦветСтиля("ВидДняПроизводственногоКалендаряНеУказанЦвет"); КонецЕсли; СтрокаОформленияПериода.ЦветТекста = ЦветОформленияДня; КонецЦикла; @@ -116,12 +132,7 @@ Формат(ДатаПереноса, "ДФ='д ММММ'"), ВидДня)); - ДатаНазначения = ОткрытьФормуМодально("ОбщаяФорма.ВыборДаты", ПараметрыВыбораДаты); - - Если ДатаНазначения <> Неопределено Тогда - ПеренестиВидДня(ДатаПереноса, ДатаНазначения); - Элементы.Календарь.Обновить(); - КонецЕсли; + ОткрытьФорму("ОбщаяФорма.ВыборДаты", ПараметрыВыбораДаты, ЭтаФорма); КонецПроцедуры @@ -142,8 +153,8 @@ ПараметрыКоманды.Вставить("НомерГода", НомерТекущегоГода); Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеПечатьюКлиент"); - Модуль.ВыполнитьКомандуПечати("Справочник.ПроизводственныеКалендари", "ПроизводственныйКалендарь", + МодульУправлениеПечатьюКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеПечатьюКлиент"); + МодульУправлениеПечатьюКлиент.ВыполнитьКомандуПечати("Справочник.ПроизводственныеКалендари", "ПроизводственныйКалендарь", ПараметрыКоманды, ЭтаФорма); КонецЕсли; @@ -391,4 +402,3 @@ Элементы.Календарь.КонецПериодаОтображения = Дата(НомерТекущегоГода, 12, 31); КонецПроцедуры - diff --git a/SSL/src/Catalogs/ПроизводственныеКалендари/ManagerModule.bsl b/SSL/src/Catalogs/ПроизводственныеКалендари/ManagerModule.bsl index 71cf43809..d1ac1bf77 100644 --- a/SSL/src/Catalogs/ПроизводственныеКалендари/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПроизводственныеКалендари/ManagerModule.bsl @@ -367,11 +367,11 @@ ЦветаОформления = Новый Соответствие; - ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий, ЦветаСтиля.ВидДняРабочийЦвет); - ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота, ЦветаСтиля.ВидДняСубботаЦвет); - ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье, ЦветаСтиля.ВидДняВоскресеньеЦвет); - ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный, ЦветаСтиля.ВидДняПредпраздничныйЦвет); - ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник, ЦветаСтиля.ВидДняПраздникЦвет); + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий, ЦветаСтиля.ВидДняПроизводственногоКалендаряРабочийЦвет); + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота, ЦветаСтиля.ВидДняПроизводственногоКалендаряСубботаЦвет); + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье, ЦветаСтиля.ВидДняПроизводственногоКалендаряВоскресеньеЦвет); + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Предпраздничный, ЦветаСтиля.ВидДняПроизводственногоКалендаряПредпраздничныйЦвет); + ЦветаОформления.Вставить(Перечисления.ВидыДнейПроизводственногоКалендаря.Праздник, ЦветаСтиля.ВидДняПроизводственногоКалендаряПраздникЦвет); Возврат ЦветаОформления; @@ -540,8 +540,8 @@ Процедура Печать(ПараметрыКоманды, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеПечатью"); - Модуль.ВывестиТабличныйДокументВКоллекцию( + МодульУправлениеПечатью = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеПечатью"); + МодульУправлениеПечатью.ВывестиТабличныйДокументВКоллекцию( КоллекцияПечатныхФорм, "ПроизводственныйКалендарь", НСтр("ru = 'Производственный календарь'"), Справочники.ПроизводственныеКалендари.ПечатнаяФормаПроизводственногоКалендаря(ПараметрыКоманды), diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..91027f589 --- /dev/null +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> + <filter> + <viewMode>Normal</viewMode> + <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> + </filter> + <order> + <viewMode>Normal</viewMode> + <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> + </order> + <conditionalAppearance> + <viewMode>Normal</viewMode> + <userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID> + </conditionalAppearance> +</Settings> diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Form.form b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Form.form new file mode 100644 index 000000000..cc1954031 --- /dev/null +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Form.form @@ -0,0 +1,238 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <items xsi:type="form:Table"> + <name>Список</name> + <id>1</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Список</segments> + </dataPath> + <defaultItem>true</defaultItem> + <titleLocation>None</titleLocation> + <excludedCommands>Create</excludedCommands> + <items xsi:type="form:FormField"> + <name>Наименование</name> + <id>4</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <dataPath xsi:type="form:DataPath"> + <segments>Список.Description</segments> + </dataPath> + <defaultItem>true</defaultItem> + <extendedTooltip> + <name>НаименованиеРасширеннаяПодсказка</name> + <id>16</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>НаименованиеКонтекстноеМеню</name> + <id>5</id> + <autoFill>true</autoFill> + </contextMenu> + <type>LabelField</type> + <editMode>Enter</editMode> + <showInHeader>true</showInHeader> + <headerHorizontalAlign>Left</headerHorizontalAlign> + <showInFooter>true</showInFooter> + <extInfo xsi:type="form:LabelFieldExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + </extInfo> + </items> + <commandBarLocation>None</commandBarLocation> + <autoCommandBar> + <name>СписокКоманднаяПанель</name> + <id>3</id> + <horizontalAlign>Left</horizontalAlign> + </autoCommandBar> + <searchStringAddition> + <name>СписокСтрокаПоиска</name> + <id>7</id> + <extendedTooltip> + <name>СписокСтрокаПоискаРасширеннаяПодсказка</name> + <id>9</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокСтрокаПоискаКонтекстноеМеню</name> + <id>8</id> + <autoFill>true</autoFill> + </contextMenu> + <source>Список</source> + <extInfo xsi:type="form:SearchStringAdditionExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + </extInfo> + </searchStringAddition> + <viewStatusAddition> + <name>СписокСостояниеПросмотра</name> + <id>10</id> + <extendedTooltip> + <name>СписокСостояниеПросмотраРасширеннаяПодсказка</name> + <id>12</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокСостояниеПросмотраКонтекстноеМеню</name> + <id>11</id> + <autoFill>true</autoFill> + </contextMenu> + <type>ViewStatusAddition</type> + <source>Список</source> + <extInfo xsi:type="form:ViewStatusAdditionExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + </extInfo> + </viewStatusAddition> + <searchControlAddition> + <name>СписокУправлениеПоиском</name> + <id>13</id> + <extendedTooltip> + <name>СписокУправлениеПоискомРасширеннаяПодсказка</name> + <id>15</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокУправлениеПоискомКонтекстноеМеню</name> + <id>14</id> + <autoFill>true</autoFill> + </contextMenu> + <type>SearchControlAddition</type> + <source>Список</source> + <extInfo xsi:type="form:SearchControlAdditionExtInfo"> + <autoMaxWidth>true</autoMaxWidth> + </extInfo> + </searchControlAddition> + <extendedTooltip> + <name>СписокРасширеннаяПодсказка</name> + <id>6</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <contextMenu> + <name>СписокКонтекстноеМеню</name> + <id>2</id> + <autoFill>true</autoFill> + </contextMenu> + <representation>Tree</representation> + <changeRowSet>true</changeRowSet> + <changeRowOrder>true</changeRowOrder> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <autoMaxRowsCount>true</autoMaxRowsCount> + <choiceMode>true</choiceMode> + <selectionMode>MultiRow</selectionMode> + <headerHeight>1</headerHeight> + <footerHeight>1</footerHeight> + <horizontalScrollBar>AutoUse</horizontalScrollBar> + <verticalScrollBar>AutoUse</verticalScrollBar> + <horizontalLines>true</horizontalLines> + <verticalLines>true</verticalLines> + <horizontalLinesBWA>false</horizontalLinesBWA> + <verticalLinesBWA>false</verticalLinesBWA> + <useAlternationRowColorBWA>false</useAlternationRowColorBWA> + <searchOnInput>Auto</searchOnInput> + <initialListView>Auto</initialListView> + <initialTreeView>ExpandTopLevel</initialTreeView> + <horizontalStretch>true</horizontalStretch> + <verticalStretch>true</verticalStretch> + <enableStartDrag>true</enableStartDrag> + <enableDrag>true</enableDrag> + <rowPictureDataPath xsi:type="form:DataPath"> + <segments>Список.DefaultPicture</segments> + </rowPictureDataPath> + <searchStringLocation>None</searchStringLocation> + <viewStatusLocation>None</viewStatusLocation> + <searchControlLocation>None</searchControlLocation> + <autoMaxCardHeight>true</autoMaxCardHeight> + <extInfo xsi:type="form:DynamicListTableExtInfo"> + <autoRefreshPeriod>60</autoRefreshPeriod> + <period> + <startDate>0001-01-01T00:00:00</startDate> + <endDate>0001-01-01T00:00:00</endDate> + </period> + <choiceFoldersAndItems>Folders</choiceFoldersAndItems> + <topLevelParent xsi:type="core:UndefinedValue"/> + <showRoot>true</showRoot> + <allowRootChoice>true</allowRootChoice> + <allowGettingCurrentRowURL>true</allowGettingCurrentRowURL> + </extInfo> + </items> + <autoCommandBar> + <name>ФормаКоманднаяПанель</name> + <id>-1</id> + <horizontalAlign>Left</horizontalAlign> + <autoFill>true</autoFill> + </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> + <excludedCommands>Create</excludedCommands> + <windowOpeningMode>LockOwner</windowOpeningMode> + <saveWindowSettings>true</saveWindowSettings> + <autoTitle>true</autoTitle> + <autoUrl>true</autoUrl> + <group>Vertical</group> + <autoFillCheck>true</autoFillCheck> + <allowFormCustomize>true</allowFormCustomize> + <enabled>true</enabled> + <verticalScroll>UseIfNecessary</verticalScroll> + <showTitle>auto</showTitle> + <showCloseButton>true</showCloseButton> + <attributes> + <name>Список</name> + <id>1</id> + <valueType> + <types>DynamicList</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <main>true</main> + <extInfo xsi:type="form:DynamicListExtInfo"> + <mainTable>Catalog.ПрофилиГруппДоступа</mainTable> + <dynamicDataRead>true</dynamicDataRead> + <autoFillAvailableFields>true</autoFillAvailableFields> + <autoSaveUserSettings>true</autoSaveUserSettings> + <getInvisibleFieldPresentations>true</getInvisibleFieldPresentations> + </extInfo> + </attributes> + <commandInterface> + <navigationPanel/> + <commandBar/> + </commandInterface> + <extInfo xsi:type="form:DynamicListFormExtInfo"/> +</form:Form> diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Module.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Module.bsl new file mode 100644 index 000000000..5c5df988e --- /dev/null +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаВыбораГруппы/Module.bsl @@ -0,0 +1,18 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + // Отбор только групп. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ЭтоГруппа", Истина, , , Истина); + + // Отбор не помеченных на удаление. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + +КонецПроцедуры diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Form.form b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Form.form index 70416fdb9..808b4a8e3 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Form.form +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаГруппы/Form.form @@ -11,6 +11,10 @@ <dataPath xsi:type="form:DataPath"> <segments>Объект.Description</segments> </dataPath> + <toolTip> + <key>ru</key> + <value>Наименование группы (папки)</value> + </toolTip> <extendedTooltip> <name>НаименованиеРасширеннаяПодсказка</name> <id>5</id> @@ -44,6 +48,10 @@ <items xsi:type="form:FormField"> <name>Родитель</name> <id>3</id> + <title> + <key>ru</key> + <value>Вышестоящая группа (папка)</value> + true true @@ -52,6 +60,10 @@ Объект.Parent + + ru + Вышестоящая группа (папка), объединяющая группы (папки) для удобства поиска + РодительРасширеннаяПодсказка 7 diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index 360d5fa46..91027f589 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,21 +1,6 @@ - - Ссылка - NotInList - - - -1 - - Inaccessible - - - false - ПометкаУдаления - Equal - false - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Form.form index c6e0b434d..d72f30b6a 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Form.form @@ -240,13 +240,7 @@ Профили.ПоставляемыйПрофильИзменен, Профили.Комментарий ИЗ - Справочник.ПрофилиГруппДоступа КАК Профили -ГДЕ - ВЫБОР - КОГДА &РежимВыбораТолькоГрупп - ТОГДА Профили.ЭтоГруппа - ИНАЧЕ ИСТИНА - КОНЕЦ + Справочник.ПрофилиГруппДоступа КАК Профили Catalog.ПрофилиГруппДоступа true true diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Help/ru.html b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Help/ru.html index e30bea14d..2e4d2bd01 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Help/ru.html +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Help/ru.html @@ -1,4 +1,4 @@ - +

        Назначение профилей групп доступа см. здесь.

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

         

        \ No newline at end of file diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Module.bsl index 56784d990..8135c8f89 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаСписка/Module.bsl @@ -8,31 +8,26 @@ Возврат; КонецЕсли; - Список.Параметры.УстановитьЗначениеПараметра( - "РежимВыбораТолькоГрупп", - Параметры.РежимВыбора - И Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы); - - СписокНедоступныхПрофилей = Новый СписокЗначений; + Если Параметры.РежимВыбора Тогда + КлючНазначенияИспользования = "ВыборПодбор"; + КонецЕсли; Если Параметры.РежимВыбора Тогда РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; - СписокНедоступныхПрофилей.Добавить(Справочники.ПрофилиГруппДоступа.Администратор); + // Скрытие профиля Администратор. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Ссылка", Справочники.ПрофилиГруппДоступа.Администратор, + ВидСравненияКомпоновкиДанных.НеРавно, , Истина); // Отбор не помеченных на удаление. - Список.Отбор.Элементы[1].Использование = Истина; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, , , Истина, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); Элементы.Список.РежимВыбора = Истина; Элементы.Список.ВыборГруппИЭлементов = Параметры.ВыборГруппИЭлементов; - Если Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы Тогда - - Элементы.Список.Отображение = ОтображениеТаблицы.Дерево; - Элементы.Список.НачальноеОтображениеДерева = - НачальноеОтображениеДерева.РаскрыватьВерхнийУровень; - КонецЕсли; - АвтоЗаголовок = Ложь; Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда // Режим подбора. @@ -45,6 +40,4 @@ КонецЕсли; КонецЕсли; - Список.Отбор.Элементы[0].ПравоеЗначение = СписокНедоступныхПрофилей; - КонецПроцедуры diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Module.bsl index 5ddfb1fac..5ccec3a8b 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Forms/ФормаЭлемента/Module.bsl @@ -77,7 +77,9 @@ // Определение возможности редактирования элементов формы (перезапись доступна). БезРедактированияПоставляемыхЗначений = - ТолькоПросмотр ИЛИ Справочники.ПрофилиГруппДоступа.ЗапретИзмененияПрофиля(Объект.Ссылка); + ТолькоПросмотр + ИЛИ НЕ Объект.Ссылка.Пустая() + И Справочники.ПрофилиГруппДоступа.ЗапретИзмененияПрофиля(Объект); Элементы.Наименование.ТолькоПросмотр = БезРедактированияПоставляемыхЗначений; @@ -153,7 +155,7 @@ &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) - // Заполнение ролей объектаиз коллекции. + // Заполнение ролей объекта из коллекции. ТекущийОбъект.Роли.Очистить(); Для каждого Строка Из КоллекцияРолей Цикл ТекущийОбъект.Роли.Добавить().Роль = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/Help/ru.html b/SSL/src/Catalogs/ПрофилиГруппДоступа/Help/ru.html index 9d092f7ff..6b1e4c46f 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/Help/ru.html +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/Help/ru.html @@ -1,4 +1,4 @@ - +

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

        С помощью профилей становится возможным:

        а) задать общий список ролей для некоторой группы пользователей системы. Например, для менеджеров может быть определен профиль "Менеджер" с ролями:

        diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl index 13fecc6b4..929e17d2c 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/ManagerModule.bsl @@ -221,7 +221,8 @@ Запрос = Новый Запрос( "ВЫБРАТЬ | ПрофилиГруппДоступа.ПоставляемыйПрофильИзменен, - | ПрофилиГруппДоступа.Ссылка + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных, + | ПрофилиГруппДоступа.Ссылка КАК Ссылка |ИЗ | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа"); ТекущиеПрофили = Запрос.Выполнить().Выгрузить(); @@ -229,10 +230,10 @@ Для каждого ОписаниеПрофиля Из ОписанияПрофилей Цикл СвойстваПрофиля = ОписаниеПрофиля.Значение; - Профиль = Справочники.ПрофилиГруппДоступа.ПолучитьСсылку( - Новый УникальныйИдентификатор(СвойстваПрофиля.Идентификатор)); + СтрокаТекущегоПрофиля = ТекущиеПрофили.Найти( + Новый УникальныйИдентификатор(СвойстваПрофиля.Идентификатор), + "ИдентификаторПоставляемыхДанных"); - СтрокаТекущегоПрофиля = ТекущиеПрофили.Найти(Профиль, "Ссылка"); ПрофильОбновлен = Ложь; Если СтрокаТекущегоПрофиля = Неопределено Тогда @@ -240,12 +241,15 @@ Если ОбновитьПрофильГруппДоступа(СвойстваПрофиля) Тогда ЕстьИзменения = Истина; КонецЕсли; + Профиль = ПоставляемыйПрофильПоИдентификатору(СвойстваПрофиля.Идентификатор); - ИначеЕсли НЕ СтрокаТекущегоПрофиля.ПоставляемыйПрофильИзменен - ИЛИ ПараметрыОбновления.ОбновлятьИзмененныеПрофили Тогда - - // Обновление поставляемого профиля. - ПрофильОбновлен = ОбновитьПрофильГруппДоступа(СвойстваПрофиля, Истина); + Иначе + Профиль = СтрокаТекущегоПрофиля.Ссылка; + Если НЕ СтрокаТекущегоПрофиля.ПоставляемыйПрофильИзменен + ИЛИ ПараметрыОбновления.ОбновлятьИзмененныеПрофили Тогда + // Обновление поставляемого профиля. + ПрофильОбновлен = ОбновитьПрофильГруппДоступа(СвойстваПрофиля, Истина); + КонецЕсли; КонецЕсли; Если ПараметрыОбновления.ОбновлятьГруппыДоступа Тогда @@ -281,6 +285,89 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// Возвращает строку уникального идентификатора +// поставляемого и предопределенного профиля Администратор. +// +Функция ИдентификаторПрофиляАдминистратор() Экспорт + + Возврат "6c4b0307-43a4-4141-9c35-3dd7e9586d41"; + +КонецФункции + +// Возвращает ссылку на поставляемый профиль по идентификатору. +// +// Параметры: +// Идентификатор - Строка - имя или уникальный идентификатор поставляемого профиля. +// +Функция ПоставляемыйПрофильПоИдентификатору(Идентификатор) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.Параметры( + ).ПоставляемыеПрофилиГруппДоступа; + + СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить(Идентификатор); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ИдентификаторПоставляемыхДанных", + Новый УникальныйИдентификатор(СвойстваПрофиля.Идентификатор)); + + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных = &ИдентификаторПоставляемыхДанных"; + + Выборка = Запрос.Выполнить().Выбрать(); + + Если Выборка.Следующий() Тогда + Возврат Выборка.Ссылка; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Возвращает строку уникального идентификатора +// данных поставляемого профиля. +// +Функция ИдентификаторПоставляемогоПрофиля(Профиль) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Профиль); + + Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор", + Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000")); + + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | ПрофилиГруппДоступа.Ссылка = &Ссылка + | И ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных <> &ПустойУникальныйИдентификатор"; + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.Параметры( + ).ПоставляемыеПрофилиГруппДоступа; + + СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить( + Строка(Выборка.ИдентификаторПоставляемыхДанных)); + + Возврат Строка(Выборка.ИдентификаторПоставляемыхДанных); + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + // Проверяет изменен ли поставляемый профиль по сравнению с описанием из процедуры // УправлениеДоступомПереопределяемый.ЗаполнитьПоставляемыеПрофилиГруппДоступа(). // @@ -302,7 +389,7 @@ СвойстваПрофиля = УправлениеДоступомСлужебныйПовтИсп.Параметры( ).ПоставляемыеПрофилиГруппДоступа.ОписанияПрофилей.Получить( - Строка(Профиль.Ссылка.УникальныйИдентификатор())); + Строка(Профиль.ИдентификаторПоставляемыхДанных)); Если СвойстваПрофиля = Неопределено Тогда Возврат Ложь; @@ -369,9 +456,11 @@ // Функция ЕстьНачальноеЗаполнениеПрофиля(Знач Профиль) Экспорт + ИдентификаторПоставляемыхДанных = Строка(ОбщегоНазначения.ПолучитьЗначениеРеквизита( + Профиль, "ИдентификаторПоставляемыхДанных")); + СвойстваПрофиля = УправлениеДоступомСлужебныйПовтИсп.Параметры( - ).ПоставляемыеПрофилиГруппДоступа.ОписанияПрофилей.Получить( - Строка(Профиль.УникальныйИдентификатор())); + ).ПоставляемыеПрофилиГруппДоступа.ОписанияПрофилей.Получить(ИдентификаторПоставляемыхДанных); Возврат СвойстваПрофиля <> Неопределено; @@ -381,14 +470,17 @@ // Не поставляемый профиль не может иметь запрета изменения. // // Параметры: -// Профиль - СправочникСсылка.ПрофилиГруппДоступа. +// Профиль - СправочникОбъект.ПрофилиГруппДоступа, +// ДанныеФормыСтруктура созданные по объекту. // // Возвращаемое значение: // Булево. // Функция ЗапретИзмененияПрофиля(Знач Профиль) Экспорт - Если Профиль = Справочники.ПрофилиГруппДоступа.Администратор Тогда + Если Профиль.ИдентификаторПоставляемыхДанных = + Новый УникальныйИдентификатор(ИдентификаторПрофиляАдминистратор()) Тогда + // Изменение профиля Администратор всегда запрещено. Возврат Истина; КонецЕсли; @@ -396,7 +488,7 @@ ).ПоставляемыеПрофилиГруппДоступа; СвойстваПрофиля = ПоставляемыеПрофили.ОписанияПрофилей.Получить( - Строка(Профиль.УникальныйИдентификатор())); + Строка(Профиль.ИдентификаторПоставляемыхДанных)); Возврат СвойстваПрофиля <> Неопределено И ПоставляемыеПрофили.ПараметрыОбновления.ЗапретитьИзменениеПрофилей; @@ -413,9 +505,11 @@ // Функция ОписаниеПоставляемогоПрофиля(Профиль) Экспорт + ИдентификаторПоставляемыхДанных = Строка(ОбщегоНазначения.ПолучитьЗначениеРеквизита( + Профиль, "ИдентификаторПоставляемыхДанных")); + СвойстваПрофиля = УправлениеДоступомСлужебныйПовтИсп.Параметры( - ).ПоставляемыеПрофилиГруппДоступа.ОписанияПрофилей.Получить( - Строка(Профиль.УникальныйИдентификатор())); + ).ПоставляемыеПрофилиГруппДоступа.ОписанияПрофилей.Получить(ИдентификаторПоставляемыхДанных); Текст = ""; Если СвойстваПрофиля <> Неопределено Тогда @@ -440,9 +534,11 @@ // Процедура ЗаполнитьПоставляемыйПрофиль(Знач Профиль, Знач ОбновитьГруппыДоступа) Экспорт + ИдентификаторПоставляемыхДанных = Строка(ОбщегоНазначения.ПолучитьЗначениеРеквизита( + Профиль, "ИдентификаторПоставляемыхДанных")); + СвойстваПрофиля = УправлениеДоступомСлужебныйПовтИсп.Параметры( - ).ПоставляемыеПрофилиГруппДоступа.ОписанияПрофилей.Получить( - Строка(Профиль.УникальныйИдентификатор())); + ).ПоставляемыеПрофилиГруппДоступа.ОписанияПрофилей.Получить(ИдентификаторПоставляемыхДанных); Если СвойстваПрофиля <> Неопределено Тогда @@ -455,6 +551,48 @@ КонецПроцедуры +// Обработчики обновления информационной базы. + +// Заполняет идентификаторы поставляемых данных по совпадению с идентификатором ссылки. +Процедура ЗаполнитьИдентификаторыПоставляемыхДанных() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ПоставляемыеПрофили = УправлениеДоступомСлужебныйПовтИсп.Параметры( + ).ПоставляемыеПрофилиГруппДоступа; + + СсылкиПоставляемыхПрофилей = Новый Массив; + + Для каждого ОписаниеПрофиля Из ПоставляемыеПрофили.ОписанияПрофилей Цикл + СсылкиПоставляемыхПрофилей.Добавить( + Справочники.ПрофилиГруппДоступа.ПолучитьСсылку( + Новый УникальныйИдентификатор(ОписаниеПрофиля.Значение.Идентификатор))); + КонецЦикла; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПустойУникальныйИдентификатор", + Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000")); + + Запрос.УстановитьПараметр("СсылкиПоставляемыхПрофилей", СсылкиПоставляемыхПрофилей); + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.Ссылка + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных = &ПустойУникальныйИдентификатор + | И ПрофилиГруппДоступа.Ссылка В (&СсылкиПоставляемыхПрофилей)"; + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + ПрофильОбъект = Выборка.Ссылка.ПолучитьОбъект(); + ПрофильОбъект.ИдентификаторПоставляемыхДанных = Выборка.Ссылка.УникальныйИдентификатор(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ПрофильОбъект); + КонецЦикла; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Вспомогательные процедуры и функции @@ -498,10 +636,9 @@ // Описание для заполнения предопределенного профиля "Администратор". ОписаниеПрофиляАдминистратор = УправлениеДоступом.НовоеОписаниеПрофиляГруппДоступа(); - ОписаниеПрофиляАдминистратор.Идентификатор = - Строка(Справочники.ПрофилиГруппДоступа.Администратор.УникальныйИдентификатор()); - - ОписаниеПрофиляАдминистратор.Наименование = "Администратор"; + ОписаниеПрофиляАдминистратор.Имя = "Администратор"; + ОписаниеПрофиляАдминистратор.Идентификатор = ИдентификаторПрофиляАдминистратор(); + ОписаниеПрофиляАдминистратор.Наименование = НСтр("ru = 'Администратор'"); ОписаниеПрофиляАдминистратор.Роли.Добавить("ПолныеПрава"); ОписаниеПрофиляАдминистратор.Описание = @@ -530,7 +667,20 @@ Роль); КонецЕсли; КонецЦикла; + Если СвойстваПрофилей.Получить(ОписаниеПрофиля.Идентификатор) <> Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Профиль с идентификатором ""%1"" уже существует.'"), + ОписаниеПрофиля.Идентификатор); + КонецЕсли; СвойстваПрофилей.Вставить(ОписаниеПрофиля.Идентификатор, ОписаниеПрофиля); + Если ЗначениеЗаполнено(ОписаниеПрофиля.Имя) Тогда + Если СвойстваПрофилей.Получить(ОписаниеПрофиля.Имя) <> Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Профиль с именем ""%1"" уже существует.'"), + ОписаниеПрофиля.Имя); + КонецЕсли; + СвойстваПрофилей.Вставить(ОписаниеПрофиля.Имя, ОписаниеПрофиля); + КонецЕсли; // Преобразование СпискаЗначений к Соответствию для фиксации. ВидыДоступа = Новый Соответствие; Для каждого ЭлементСписка Из ОписаниеПрофиля.ВидыДоступа Цикл @@ -558,31 +708,58 @@ Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ - | ПрофилиГруппДоступа.Ссылка КАК Ссылка + | ПрофилиГруппДоступа.Ссылка КАК Ссылка, + | НЕОПРЕДЕЛЕНО КАК ИмяПредопределенныхДанных |ИЗ | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа |ГДЕ - | ПрофилиГруппДоступа.Предопределенный = ИСТИНА - | - |УПОРЯДОЧИТЬ ПО - | ПрофилиГруппДоступа.Ссылка"; + | ПрофилиГруппДоступа.Предопределенный = ИСТИНА"; + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕОПРЕДЕЛЕНО", "ПрофилиГруппДоступа.ИмяПредопределенныхДанных"); + КонецЕсли; + + ИменаПредопределенныхДанных = Новый СписокЗначений; Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И НЕ ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда ОбщегоНазначения.УстановитьРазделениеСеанса(Истина, 0); Попытка - Выгрузка = Запрос.Выполнить().Выгрузить(); + Выборка = Запрос.Выполнить().Выбрать(); Исключение ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); ВызватьИсключение; КонецПопытки; + + Пока Выборка.Следующий() Цикл + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяПредопределенныхДанных = Выборка.ИмяПредопределенныхДанных; + Иначе + ИмяПредопределенныхДанных = ПолучитьИмяПредопределенного(Выборка.Ссылка); + КонецЕсли; + Если ЗначениеЗаполнено(ИмяПредопределенныхДанных) Тогда + ИменаПредопределенныхДанных.Добавить(ИмяПредопределенныхДанных); + КонецЕсли; + КонецЦикла; + ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); Иначе - Выгрузка = Запрос.Выполнить().Выгрузить(); + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяПредопределенныхДанных = Выборка.ИмяПредопределенныхДанных; + Иначе + ИмяПредопределенныхДанных = ПолучитьИмяПредопределенного(Выборка.Ссылка); + КонецЕсли; + Если ЗначениеЗаполнено(ИмяПредопределенныхДанных) Тогда + ИменаПредопределенныхДанных.Добавить(ИмяПредопределенныхДанных); + КонецЕсли; + КонецЦикла; КонецЕсли; - Возврат Новый ФиксированныйМассив(Выгрузка.ВыгрузитьКолонку("Ссылка")); + ИменаПредопределенныхДанных.СортироватьПоЗначению(); + Возврат Новый ФиксированныйМассив(ИменаПредопределенныхДанных.ВыгрузитьЗначения()); КонецФункции @@ -616,25 +793,49 @@ ПрофильИзменен = Ложь; - УникальныйИдентификаторПрофиля = Новый УникальныйИдентификатор(СвойстваПрофиля.Идентификатор); - ПрофильСсылка = Справочники.ПрофилиГруппДоступа.ПолучитьСсылку(УникальныйИдентификаторПрофиля); - - Запрос = Новый Запрос( - "ВЫБРАТЬ - | ИСТИНА КАК ЗначениеИстина - |ИЗ - | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа - |ГДЕ - | ПрофилиГруппДоступа.Ссылка = &Ссылка"); - Запрос.УстановитьПараметр("Ссылка", ПрофильСсылка); - - Если Запрос.Выполнить().Пустой() Тогда + ПрофильСсылка = ПоставляемыйПрофильПоИдентификатору(СвойстваПрофиля.Идентификатор); + Если ПрофильСсылка = Неопределено Тогда + + Если ЗначениеЗаполнено(СвойстваПрофиля.Имя) Тогда + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.Ссылка КАК Ссылка, + | НЕОПРЕДЕЛЕНО КАК ИмяПредопределенныхДанных + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | ПрофилиГруппДоступа.Предопределенный = ИСТИНА"; + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕОПРЕДЕЛЕНО", "ПрофилиГруппДоступа.ИмяПредопределенныхДанных"); + КонецЕсли; + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяПредопределенного = Выборка.ИмяПредопределенныхДанных; + Иначе + ИмяПредопределенного = ПолучитьИмяПредопределенного(Выборка.Ссылка); + КонецЕсли; + Если ВРег(СвойстваПрофиля.Имя) = ВРег(ИмяПредопределенного) Тогда + ПрофильСсылка = Выборка.Ссылка; + Прервать; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Если ПрофильСсылка = Неопределено Тогда + // Поставляемый профиль не найден, нужно создать новый. + ПрофильОбъект = Справочники.ПрофилиГруппДоступа.СоздатьЭлемент(); + Иначе + // Поставляемый профиль не связан с предопределенным элементом. + ПрофильОбъект = ПрофильСсылка.ПолучитьОбъект(); + КонецЕсли; + + ПрофильОбъект.ИдентификаторПоставляемыхДанных = + Новый УникальныйИдентификатор(СвойстваПрофиля.Идентификатор); - // Поставляемый профиль не найден, нужно создать новый. - ПрофильОбъект = Справочники.ПрофилиГруппДоступа.СоздатьЭлемент(); ПрофильИзменен = Истина; - ПрофильОбъект.УстановитьСсылкуНового( - Справочники.ПрофилиГруппДоступа.ПолучитьСсылку(УникальныйИдентификаторПрофиля)); Иначе ПрофильОбъект = ПрофильСсылка.ПолучитьОбъект(); ПрофильИзменен = ПоставляемыйПрофильИзменен(ПрофильОбъект); @@ -697,8 +898,7 @@ НедоступныеРоли = ПользователиСлужебный.НедоступныеРолиПоТипуПользователей( Перечисления.ТипыПользователей.ПользовательОбластиДанных); - ИначеЕсли ОписаниеПрофиля.Идентификатор - = Строка(Справочники.ПрофилиГруппДоступа.Администратор.УникальныйИдентификатор()) Тогда + ИначеЕсли ОписаниеПрофиля.Идентификатор = ИдентификаторПрофиляАдминистратор() Тогда ИмяРолиАдминистратораСистемы = Пользователи.РольАдминистратораСистемы().Имя; @@ -720,4 +920,4 @@ КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl b/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl index 2ba80e3b6..5bc73afba 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/ObjectModule.bsl @@ -105,6 +105,57 @@ Возврат; КонецЕсли; + // Проверка однозначности поставляемых данных. + Если ИдентификаторПоставляемыхДанных <> Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000") Тогда + УстановитьПривилегированныйРежим(Истина); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ИдентификаторПоставляемыхДанных", ИдентификаторПоставляемыхДанных); + Запрос.Текст = + "ВЫБРАТЬ + | ПрофилиГруппДоступа.Ссылка КАК Ссылка, + | ПрофилиГруппДоступа.Наименование КАК Наименование + |ИЗ + | Справочник.ПрофилиГруппДоступа КАК ПрофилиГруппДоступа + |ГДЕ + | ПрофилиГруппДоступа.ИдентификаторПоставляемыхДанных = &ИдентификаторПоставляемыхДанных"; + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Количество() > 1 Тогда + + КраткоеПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при записи профиля ""%1"". + |Поставляемый профиль уже существует:'"), + Наименование); + + ПодробноеПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка при записи профиля ""%1"". + |Идентификатор поставляемых данных ""%2"" уже используется в профиле:'"), + Наименование, + Строка(ИдентификаторПоставляемыхДанных)); + + Пока Выборка.Следующий() Цикл + Если Выборка.Ссылка <> Ссылка Тогда + + КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки + + Символы.ПС + """" + Выборка.Наименование + """."; + + ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки + + Символы.ПС + """" + Выборка.Наименование + """ (" + + Строка(Выборка.Ссылка.УникальныйИдентификатор())+ ")." + КонецЕсли; + КонецЦикла; + + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Управление доступом.Нарушение однозначности поставляемого профиля'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки); + + ВызватьИсключение КраткоеПредставлениеОшибки; + КонецЕсли; + УстановитьПривилегированныйРежим(Ложь); + КонецЕсли; + ОбъектыМетаданных = ОбновитьРолиПользователейПриИзмененииРолейПрофиля(); // При установке пометки удаления нужно установить пометку удаления у групп доступа профиля. @@ -167,6 +218,12 @@ КонецПроцедуры +Процедура ПриКопировании(ОбъектКопирования) + + ИдентификаторПоставляемыхДанных = Неопределено; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Вспомогательные процедуры и функции @@ -249,4 +306,4 @@ КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/Catalogs/ПрофилиГруппДоступа/ПрофилиГруппДоступа.mdo b/SSL/src/Catalogs/ПрофилиГруппДоступа/ПрофилиГруппДоступа.mdo index 2f750828e..a4bdd080d 100644 --- a/SSL/src/Catalogs/ПрофилиГруппДоступа/ПрофилиГруппДоступа.mdo +++ b/SSL/src/Catalogs/ПрофилиГруппДоступа/ПрофилиГруппДоступа.mdo @@ -68,9 +68,13 @@ Use Parent + + ru + Группа (папка) + ru - Папка, объединяющая профили групп доступа для удобства поиска + Группа (папка), объединяющая профили для удобства поиска true @@ -134,7 +138,26 @@ Catalog.ПрофилиГруппДоступа.Form.ФормаГруппы Catalog.ПрофилиГруппДоступа.Form.ФормаСписка Catalog.ПрофилиГруппДоступа.Form.ФормаСписка - Catalog.ПрофилиГруппДоступа.Form.ФормаСписка + Catalog.ПрофилиГруппДоступа.Form.ФормаВыбораГруппы + + ИдентификаторПоставляемыхДанных + + ru + Идентификатор поставляемых данных + + + UUID + + + ru + Для профилей, поставляемых в составе конфигурации, содержит идентификатор по которому можно найти описание поставляемого профиля. + + + + + Index + Use + ПоставляемыйПрофильИзменен @@ -404,6 +427,15 @@ PersonalComputer MobileDevice + + ФормаВыбораГруппы + + ru + Форма выбора группы + + PersonalComputer + MobileDevice + ГруппыДоступа diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Commands/ВыполнитьСейчас/CommandModule.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Commands/ВыполнитьСейчас/CommandModule.bsl index 045723e86..16e68867d 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Commands/ВыполнитьСейчас/CommandModule.bsl +++ b/SSL/src/Catalogs/РассылкиОтчетов/Commands/ВыполнитьСейчас/CommandModule.bsl @@ -34,8 +34,7 @@ ПараметрыВызоваСервера = Новый Структура("МассивРассылок, ПредварительныеНастройки", МассивРассылок, - ПредварительныеНастройки - ); + ПредварительныеНастройки); Результат = ВыполнитьРассылкиВФоновомЗадании(ПараметрыВызоваСервера, ЭтаФорма.УникальныйИдентификатор); @@ -44,8 +43,7 @@ ИначеЕсли Результат.Статус = "Исключение" Тогда Предупреждение( НСтр("ru = 'Рассылки не выполнены из-за ошибки, - |Подробности см. в журнале регистрации.'") - ); + |Подробности см. в журнале регистрации.'")); ИначеЕсли Результат.Статус = "Выполняется" Тогда ФормаДлительнойОперации = ДлительныеОперацииКлиент.ОткрытьФормуДлительнойОперации(ЭтаФорма, Результат.Детали.ИдентификаторЗадания); @@ -82,8 +80,7 @@ УникальныйИдентификатор, "РассылкаОтчетов.ВыполнитьРассылкиВФоновомЗадании", ПараметрыВызоваСервера, - НСтр("ru = 'Рассылки отчетов: Выполнение рассылок в фоне'") - ); + НСтр("ru = 'Рассылки отчетов: Выполнение рассылок в фоне'")); КонецЕсли; Если РезультатФоновогоЗадания.ЗаданиеВыполнено Тогда diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПараметрыFTP/Help/ru.html b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПараметрыFTP/Help/ru.html index a39eb9c2d..767d7ec7a 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПараметрыFTP/Help/ru.html +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ПараметрыFTP/Help/ru.html @@ -1,4 +1,4 @@ - +

        Позволяет указать параметры, необходимые для подключения к FTP ресурсу.
        Поле "Сервер и каталог" является обязательным для заполнения, остальные поля не обязательны.

        Реквизиты:

        diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss index 784796455..91027f589 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ - - ЭтоГруппа - Equal - true - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Form.form b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Form.form index b9f2838c1..8156a99ef 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Form.form +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Form.form @@ -249,6 +249,10 @@ Left true + + OnCreateAtServer + ПриСозданииНаСервере + Create 50 10 diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Help/ru.html b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Help/ru.html index b8018e91a..61df13164 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Help/ru.html +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Help/ru.html @@ -1,2 +1,2 @@ - +

        Форма предназначена для выбора группы рассылок из списка доступных.

        \ No newline at end of file diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Module.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Module.bsl new file mode 100644 index 000000000..c3ed9c385 --- /dev/null +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаВыбораГруппы/Module.bsl @@ -0,0 +1,16 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ЭтоГруппа", Истина, + ВидСравненияКомпоновкиДанных.Равно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + +КонецПроцедуры diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаГруппы/Help/ru.html b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаГруппы/Help/ru.html index 78f8185d5..818588245 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаГруппы/Help/ru.html +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаГруппы/Help/ru.html @@ -1 +1 @@ -Позволяет задать Наименование и Группу для группы рассылок отчетов. \ No newline at end of file +Позволяет задать Наименование и Группу для группы рассылок отчетов. \ No newline at end of file diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index d93c4f1c2..91027f589 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,28 +1,6 @@ - - false - ВыполнятьПоРасписанию - Equal - false - - - false - ПериодичностьРасписания - Equal - - - false - Подготовлена - Equal - false - - - false - Автор - Equal - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаСписка/Module.bsl index 5129ce5d0..16e788412 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаСписка/Module.bsl @@ -8,6 +8,27 @@ Возврат; КонецЕсли; + // Установка отборов динамического списка. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ВыполнятьПоРасписанию", Ложь, + ВидСравненияКомпоновкиДанных.Равно, , Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПериодичностьРасписания", , + ВидСравненияКомпоновкиДанных.Равно, , Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Подготовлена", Ложь, + ВидСравненияКомпоновкиДанных.Равно, , Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "Автор", , + ВидСравненияКомпоновкиДанных.Равно, , Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + ЗаполнитьПараметрСписка("РежимВыбора"); ЗаполнитьПараметрСписка("ВыборГруппИЭлементов"); ЗаполнитьПараметрСписка("МножественныйВыбор"); diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Help/ru.html index 1c97030ce..9b32c9b9f 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ - +

        Рассылки отчетов предназначены для автоматического формирования отчетов и доставки сформированных отчетов получателям.

        Реквизиты:

        diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl index 2a53e08e9..cfc476b8d 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/РассылкиОтчетов/Forms/ФормаЭлемента/Module.bsl @@ -78,15 +78,13 @@ НСтр("ru = 'Ошибка заполнения автора рассылки |Автор (%1): %2'"), Строка(ТипЗнч(ТекущийПользователь)), - Строка(ТекущийПользователь) - ); + Строка(ТекущийПользователь)); ЗаписьЖурналаРегистрации( - "Рассылка отчетов. Открытие формы элемента", + НСтр("ru = 'Рассылка отчетов. Открытие формы элемента'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.РассылкиОтчетов, , - Текст - ); + Текст); Возврат; КонецЕсли; @@ -323,8 +321,7 @@ Отказ = Истина; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Для отчета ''%1'' заполнены не все настройки, обязательные для заполнения. Необходимо заполнить все обязательные настройки или снять флажок ''Подготовлена''.'"), - Строка(СтрокаОтчеты.Отчет) - ); + Строка(СтрокаОтчеты.Отчет)); Поле = "Отчеты["+ Формат(ТекущийОбъект.Отчеты.Индекс(ОбъектСтрокаОтчеты), "ЧН=0; ЧГ=0") +"].Представление"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, ТекущийОбъект, Поле); КонецЕсли; @@ -344,8 +341,7 @@ Отказ = Истина; ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Для отчета ''%1'' задан отбор по получателям рассылки. Необходимо отключить отбор по получателям или изменить вид рассылки на ''Свой отчет для каждого получателя''.'"), - Строка(СтрокаОтчеты.Отчет) - ); + Строка(СтрокаОтчеты.Отчет)); Поле = "Отчеты["+ Формат(ТекущийОбъект.Отчеты.Индекс(ОбъектСтрокаОтчеты), "ЧН=0; ЧГ=0") +"].Представление"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, ТекущийОбъект, Поле); КонецЕсли; @@ -435,7 +431,7 @@ &НаКлиенте Процедура МесяцыПриИзменении(Элемент) Если Элемент <> Неопределено Тогда - Расписание.Месяцы = ИзменитьИРазадресоватьМассив(ЭтаФорма[Элемент.Имя], Кэш.Соответствия.Месяцы[Элемент.Имя], Расписание.Месяцы); + Расписание.Месяцы = ИзменитьСоставМассива(ЭтаФорма[Элемент.Имя], Кэш.Соответствия.Месяцы[Элемент.Имя], Расписание.Месяцы); КонецЕсли; ВидимостьДоступностьКорректность(ЭтаФорма, "Месяцы"); КонецПроцедуры @@ -443,7 +439,7 @@ &НаКлиенте Процедура ДниНеделиПриИзменении(Элемент) Если Элемент <> Неопределено Тогда - Расписание.ДниНедели = ИзменитьИРазадресоватьМассив(ЭтаФорма[Элемент.Имя], Кэш.Соответствия.ДниНедели[Элемент.Имя], Расписание.ДниНедели); + Расписание.ДниНедели = ИзменитьСоставМассива(ЭтаФорма[Элемент.Имя], Кэш.Соответствия.ДниНедели[Элемент.Имя], Расписание.ДниНедели); КонецЕсли; ВидимостьДоступностьКорректность(ЭтаФорма, "ДниНедели"); КонецПроцедуры @@ -642,9 +638,7 @@ Предупреждение( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недостаточно прав на изменение файлов папки %1'"), - "'"+ Строка(ВыбранноеЗначение) +"'" - ) - ); + "'"+ Строка(ВыбранноеЗначение) +"'")); КонецЕсли; КонецПроцедуры @@ -723,8 +717,7 @@ Объект.Отчеты, "Отчет", Новый Структура("Форматы, ОтправлятьЕслиПустой", ПредставлениеФорматовПоУмолчанию(), Истина), - Истина - ); + Истина); // Инициализация добавленных строк отчетов и заполнение структуры выбора ПроверитьДобавленныеСтрокиОтчетов(СтруктураВыбора); @@ -748,8 +741,7 @@ |Не добавлено из-за ошибок: %3'"), Формат(СтруктураВыбора.Успешно.Количество, "ЧН=0; ЧГ="), Формат(СтруктураВыбора.Выбрано.Количество, "ЧН=0; ЧГ="), - Формат(СтруктураВыбора.СОшибками.Количество, "ЧН=0; ЧГ=") - ); + Формат(СтруктураВыбора.СОшибками.Количество, "ЧН=0; ЧГ=")); Иначе Разделитель = ", "; ПредставлениеОтчетовУспешно = СтрЗаменить(Разделитель + СтруктураВыбора.Успешно.ПредставлениеОтчетов , Разделитель, Символы.ПС + " - "); @@ -761,8 +753,7 @@ |Следующие отчеты не удалось добавить из-за ошибок: |%2'"), ПредставлениеОтчетовУспешно, - ПредставлениеОтчетовСОшибками - ); + ПредставлениеОтчетовСОшибками); КонецЕсли; ИначеЕсли СтруктураВыбора.Успешно.Количество = 0 Тогда @@ -882,8 +873,7 @@ НомерСуществующейСтроки = ?(Найденные[0] = СтрокаПолучатели, Найденные[1].НомерСтроки, Найденные[0].НомерСтроки); Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Дублирование получателя %1. Ввод дубликата отменен.'"), - "'"+ Строка(СтрокаПолучатели.Получатель) +"'" - ); + "'"+ Строка(СтрокаПолучатели.Получатель) +"'"); Поле = "Объект.Получатели["+ Формат(НомерСуществующейСтроки, "ЧН=0; ЧГ=") +"]"; ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Сообщение, , Поле); @@ -939,7 +929,6 @@ Отбор = Новый Структура; Отбор.Вставить("ТипОтчета", ПредопределенноеЗначение("Перечисление.ТипыОтчетов.Внутренний")); - Отбор.Вставить("ПометкаУдаления", Ложь); ПараметрыФормыВыбора = Новый Структура; ПараметрыФормыВыбора.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); @@ -1115,8 +1104,7 @@ Если НЕ Объект.Персонализирована Тогда СообщениеТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Использование получателя в тексте шаблона возможно только для вида рассылки ""%1""'"), - Элементы.ВидРассылки.СписокВыбора.НайтиПоЗначению("Персонализирована").Представление - ); + Элементы.ВидРассылки.СписокВыбора.НайтиПоЗначению("Персонализирована").Представление); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеТекст, , "ВидРассылки"); Возврат; КонецЕсли; @@ -1165,9 +1153,7 @@ ЗначениеПредмета = СокрЛП( ?(Объект.ПисьмоВФорматеHTML, ТекстПисьмаФорматированныйДокумент.ПолучитьТекст(), - Объект.ТекстПисьма - ) - ); + Объект.ТекстПисьма)); КонецЕсли; Ответ = 1; @@ -1179,8 +1165,7 @@ ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '%1 уже соответствует шаблону по умолчанию.'"), - ?(ОчищаетсяТема, НСтр("ru = 'Тема письма'"), НСтр("ru = 'Текст письма'")) - ); + ?(ОчищаетсяТема, НСтр("ru = 'Тема письма'"), НСтр("ru = 'Текст письма'"))); Предупреждение(ТекстПредупреждения); Возврат; @@ -1191,13 +1176,11 @@ ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Заменить %1 на шаблон по умолчанию?'"), - Предмет - ); + Предмет); Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Добавить в %1 шаблон по умолчанию'"), - Предмет - ); + Предмет); Кнопки = Новый СписокЗначений; Кнопки.Добавить(1, НСтр("ru = 'Заменить'")); @@ -1253,8 +1236,7 @@ Кэш.ЗаголовокСистемы, ОбщегоНазначенияКлиент.ДатаСеанса(), СписокОтчетов, - "" - ); + ""); ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.УстановитьТекст(РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(Шаблон, Настройки)); @@ -1318,8 +1300,7 @@ ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Перед выбором почтового адреса необходимо выбрать получателей'"), , - "ТипПолучателейРассылки" - ); + "ТипПолучателейРассылки"); СтандартнаяОбработка = Ложь; КонецЕсли; КонецПроцедуры @@ -1496,7 +1477,7 @@ Функция ИнициализироватьОтчет(СтрокаОтчеты, ДобавитьДежурнуюФразу, ПользовательскиеНастройки, Интерактивно = Истина) // Параметры журнала ПараметрыЖурнала = Новый Структура; - ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Инициализация отчета'")); + ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Инициализация отчета'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); ПараметрыЖурнала.Вставить("Данные", Объект.Ссылка); ПараметрыЖурнала.Вставить("Метаданные", Метаданные.Справочники.РассылкиОтчетов); ПараметрыЖурнала.Вставить("МассивОшибок", Новый Массив); @@ -1507,8 +1488,7 @@ ПараметрыЖурнала, ПараметрыОтчета, Объект.Персонализирована, - ЭтаФорма.УникальныйИдентификатор - ); + ЭтаФорма.УникальныйИдентификатор); ПараметрыОтчета.Вставить("МассивОшибок", ПараметрыЖурнала.МассивОшибок); ПараметрыОтчета.Ошибки = РассылкаОтчетовКлиентСервер.СтрокаСообщенийПользователю(ПараметрыОтчета.МассивОшибок, ДобавитьДежурнуюФразу); @@ -1520,17 +1500,15 @@ Возврат ПараметрыОтчета; КонецЕсли; - // Проверка результата инциализации + // Проверка результата инициализации Если НЕ СтрокаОтчеты.Инициализирован Тогда ПараметрыОтчета.Ошибки = ( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Отчет %1 был удален из-за ошибки инициализации'"), - "'"+ Строка(СтрокаОтчеты.Представление) +"'" - ) + "'"+ Строка(СтрокаОтчеты.Представление) +"'") + ":" + Символы.ПС - + ПараметрыОтчета.Ошибки - ); + + ПараметрыОтчета.Ошибки); // Удаление строки. Объект.Отчеты.Удалить(СтрокаОтчеты); @@ -1754,7 +1732,7 @@ УстановитьПривилегированныйРежим(Истина); ПараметрыЖурнала = Новый Структура; - ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Проверка способа доставки'")); + ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Проверка способа доставки'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); ПараметрыЖурнала.Вставить("Данные", Рассылка); ПараметрыЖурнала.Вставить("Метаданные", Метаданные.Справочники.РассылкиОтчетов); ПараметрыЖурнала.Вставить("МассивОшибок", Новый Массив); @@ -1924,8 +1902,7 @@ Шаблоны = Новый ФиксированнаяСтруктура("Тема, Текст, ИмяАрхива", РассылкаОтчетовКлиентСервер.ШаблонТемы(), РассылкаОтчетовКлиентСервер.ШаблонТекста(), - РассылкаОтчетовКлиентСервер.ШаблонИмениАрхива() - ); + РассылкаОтчетовКлиентСервер.ШаблонИмениАрхива()); // Кэш = Новый Структура; @@ -1980,7 +1957,7 @@ &НаСервереБезКонтекста Функция СформироватьОтчетНаСервере(Знач ПараметрыОтчета, Получатель, ТребуемыеРеквизиты) ПараметрыЖурнала = Новый Структура; - ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Формирование отчета'")); + ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Формирование отчета'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); ПараметрыЖурнала.Вставить("Данные", ТребуемыеРеквизиты.Ссылка); ПараметрыЖурнала.Вставить("Метаданные", ПараметрыЖурнала.Данные.Метаданные()); ПараметрыЖурнала.Вставить("МассивОшибок", Новый Массив); @@ -1988,8 +1965,7 @@ ОтчетИнициализирован = РассылкаОтчетов.ИнициализироватьОтчет( ПараметрыЖурнала, ПараметрыОтчета, - ТребуемыеРеквизиты.Персонализирована - ); + ТребуемыеРеквизиты.Персонализирована); Результат = Новый Структура("Оповестить, Заголовок, Текст, ТекстОшибок, ТабДок"); @@ -2010,8 +1986,7 @@ Исключение РассылкаОтчетов.ЗаписьЖурнала(ПараметрыЖурнала, , НСтр("ru = 'Ошибка формирования отчета %1:'"), ИнформацияОбОшибке(), - "'"+ Строка(ПараметрыОтчета.Отчет) +"'" - ); + "'"+ Строка(ПараметрыОтчета.Отчет) +"'"); КонецПопытки; КонецЕсли; @@ -2019,8 +1994,7 @@ Результат.Оповестить = Ложь; Результат.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось сформировать отчет %1.'"), - ?(ПараметрыОтчета.Представление = "", "", "'"+ ПараметрыОтчета.Представление +"'") - ); + ?(ПараметрыОтчета.Представление = "", "", "'"+ ПараметрыОтчета.Представление +"'")); КонецЕсли; Результат.ТекстОшибок = РассылкаОтчетовКлиентСервер.СтрокаСообщенийПользователю(ПараметрыЖурнала.МассивОшибок); @@ -2063,8 +2037,7 @@ ИспользуетсяГруппаЛичныхРассылок = (Объект.Родитель = ЭтаФорма.Кэш.ГруппаЛичныхРассылок); Если Объект.Личная <> ИспользуетсяГруппаЛичныхРассылок Тогда УстановитьМодифицированностьФормы(ЭтаФорма, "Родитель", , - НСтр("ru = 'Группа установлена в соответствии с видом рассылки'") - ); + НСтр("ru = 'Группа установлена в соответствии с видом рассылки'")); Объект.Родитель = ?(Объект.Личная, ЭтаФорма.Кэш.ГруппаЛичныхРассылок, Неопределено); КонецЕсли; @@ -2114,8 +2087,7 @@ Если КоличествоОтчетов > 0 Тогда Элементы.СтраницаОтчеты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Отчеты (%1)'"), - Формат(КоличествоОтчетов, "ЧН=0; ЧГ=") - ); + Формат(КоличествоОтчетов, "ЧН=0; ЧГ=")); Иначе Элементы.СтраницаОтчеты.Заголовок = НСтр("ru = 'Отчеты'") ; КонецЕсли; @@ -2164,8 +2136,7 @@ Элементы.СтраницаДоставка.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Доставка (%1)'"), - СпособыДоставки - ); + СпособыДоставки); КонецЕсли; Если Изменения = "" ИЛИ Изменения = "ПисьмоВФорматеHTML" Тогда @@ -2300,11 +2271,11 @@ СтрокаПолучатель = Объект.Получатели.Получить(ИндексПолучателя); - ИнексВМассиве = ПолучательИлиНаборПолучателей.Найти(СтрокаПолучатель.Получатель); - Если ИнексВМассиве = Неопределено Тогда + ИндексВМассиве = ПолучательИлиНаборПолучателей.Найти(СтрокаПолучатель.Получатель); + Если ИндексВМассиве = Неопределено Тогда Объект.Получатели.Удалить(СтрокаПолучатель); Иначе - ПолучательИлиНаборПолучателей.Удалить(ИнексВМассиве); + ПолучательИлиНаборПолучателей.Удалить(ИндексВМассиве); КонецЕсли; КонецЦикла; @@ -2315,8 +2286,7 @@ ПолучательИлиНаборПолучателей, Объект.Получатели, "Получатель", - Новый Структура("Исключен", Ложь) - ); + Новый Структура("Исключен", Ложь)); Если МассивНовыхСтрок.Количество() > 0 Тогда Если МассивНовыхСтрок.Количество() = 1 Тогда @@ -2331,8 +2301,7 @@ КонецЦикла; РассылкаОтчетовКлиент.ПоказатьРезультат( - Новый Структура("Оповестить, Заголовок, Текст", Истина, ЗаголовокОповещения, ТекстОповещения) - ); + Новый Структура("Оповестить, Заголовок, Текст", Истина, ЗаголовокОповещения, ТекстОповещения)); КонецЕсли; КонецПроцедуры @@ -2453,8 +2422,7 @@ Иначе ЗаголовокФормыВыбора = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Выберите форматы для отчета %1'"), - "'"+ Строка(СсылкаНаОтчет) +"'" - ); + "'"+ Строка(СсылкаНаОтчет) +"'"); КонецЕсли; ДублирующийСписокФорматов = СписокФорматов.Скопировать(); @@ -2507,7 +2475,7 @@ &НаКлиенте Процедура ДобавитьШаблон(ТекстовыйШаблон = Неопределено, ИсключитьТемуПисьма = Ложь) - // Проверяем и устаналиваем фокус в нужный элемент + // Проверяем и устанавливаем фокус в нужный элемент Если ИсключитьТемуПисьма ИЛИ НЕ (ТекущийЭлемент = Элементы.ТемаПисьма ИЛИ ТекущийЭлемент = Элементы.ИмяАрхива) Тогда Если Объект.ПисьмоВФорматеHTML Тогда Если ТекущийЭлемент <> Элементы.ТекстПисьмаФорматированныйДокумент Тогда @@ -2540,7 +2508,7 @@ КонецПроцедуры &НаКлиенте -Функция ИзменитьИРазадресоватьМассив(Добавить, Элемент, Знач Массив) +Функция ИзменитьСоставМассива(Добавить, Элемент, Знач Массив) Индекс = Массив.Найти(Элемент); Если Добавить И Индекс = Неопределено Тогда ВГраницаПлюс1 = ?(Массив.Количество() >= Элемент, Элемент, Массив.Количество()); @@ -2586,8 +2554,7 @@ ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Поле ""Получатели"" не заполнено'"), , - "ТипПолучателейРассылки" - ); + "ТипПолучателейРассылки"); СтандартнаяОбработка = Ложь; Возврат; КонецЕсли; @@ -2817,8 +2784,7 @@ ПараметрыДоставки.Вставить("СкрытыеКопии", Объект.СкрытыеКопии); ПараметрыДоставки.Вставить("ШаблонТемы", НСтр("ru = 'Тестовое сообщение 1С:Предприятие'")); ПараметрыДоставки.Вставить("ШаблонТекста", НСтр("ru = 'Это сообщение отправлено системой рассылок 1С:Предприятие.'") - + Символы.ПС + Кэш.ЗаголовокСистемы - ); + + Символы.ПС + Кэш.ЗаголовокСистемы); РезультатВыбора = РассылкаОтчетовКлиент.ВыбратьПолучателя(Объект, Ложь, Истина); // Получатель и E-Mail Если РезультатВыбора = Неопределено Тогда diff --git a/SSL/src/Catalogs/РассылкиОтчетов/Help/ru.html b/SSL/src/Catalogs/РассылкиОтчетов/Help/ru.html index b0b4e0000..0ebc73f7c 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/Help/ru.html +++ b/SSL/src/Catalogs/РассылкиОтчетов/Help/ru.html @@ -1,4 +1,4 @@ - +

        Рассылки отчетов предназначены для автоматического формирования отчетов и доставки сформированных отчетов получателям.

        Подготовленные рассылки отчетов могут выполняться автоматически по расписанию или запускаться вручную.

        Реквизиты:

        diff --git a/SSL/src/Catalogs/РассылкиОтчетов/ObjectModule.bsl b/SSL/src/Catalogs/РассылкиОтчетов/ObjectModule.bsl index f9acdb3da..563325174 100644 --- a/SSL/src/Catalogs/РассылкиОтчетов/ObjectModule.bsl +++ b/SSL/src/Catalogs/РассылкиОтчетов/ObjectModule.bsl @@ -247,8 +247,7 @@ Функция ПредставлениеЗаданияПоРассылке(НаименованиеРассылки) Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Рассылка отчетов: %1'"), - СокрЛП(НаименованиеРассылки) - ); + СокрЛП(НаименованиеРассылки)); КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Form.form index 6df972f7c..0d4fa1e85 100644 --- a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Form.form @@ -687,6 +687,10 @@ Left true + + ChoiceProcessing + ОбработкаВыбора + OnCreateAtServer ПриСозданииНаСервере diff --git a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Module.bsl index ce35a08b6..0892b9cc0 100644 --- a/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/РолиИсполнителей/Forms/ФормаЭлемента/Module.bsl @@ -1,4 +1,3 @@ - //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -18,6 +17,15 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборУзловПлановОбмена") Тогда + Если ЗначениеЗаполнено(ВыбранноеЗначение) Тогда + Объект.УзелОбмена = ВыбранноеЗначение; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) @@ -49,7 +57,6 @@ &НаКлиенте Процедура УзелОбменаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) - СтандартнаяОбработка = Ложь; ПланыОбменаДляВыбора = Новый Массив; @@ -63,14 +70,7 @@ ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Истина); ПараметрыФормы.Вставить("МножественныйВыбор", Ложь); - ВыбранноеЗначение = ОткрытьФормуМодально("ОбщаяФорма.ВыборУзловПлановОбмена", ПараметрыФормы, ЭтаФорма); - - Если ЗначениеЗаполнено(ВыбранноеЗначение) Тогда - - Объект.УзелОбмена = ВыбранноеЗначение; - - КонецЕсли; - + ОткрытьФорму("ОбщаяФорма.ВыборУзловПлановОбмена", ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте @@ -129,6 +129,3 @@ КонецЕсли; КонецПроцедуры - - - diff --git a/SSL/src/Catalogs/РолиИсполнителей/Help/ru.html b/SSL/src/Catalogs/РолиИсполнителей/Help/ru.html index b9bf84262..ccb43d07b 100644 --- a/SSL/src/Catalogs/РолиИсполнителей/Help/ru.html +++ b/SSL/src/Catalogs/РолиИсполнителей/Help/ru.html @@ -1,4 +1,4 @@ - +

        Роли исполнителей могут использоваться бизнес-процессами для ролевой маршрутизации задач. В этом случае поручение выдается не персонально исполнителю, а некоторой роли (например, "Старший по залу"), а соответствие пользователей ролям задается в списке "Роли и исполнители" и используется программой для доставки поручений конкретным пользователям. В определенных случаях, роли исполнителя бывает недостаточно, чтобы точно определить исполнителей. Тогда необходимо указывать основной и дополнительный объекты адресации.

        Роли, на которые не назначено ни одного исполнителя, подсвечиваются красным цветом.

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

        diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Form.form new file mode 100644 index 000000000..c3cc0d311 --- /dev/null +++ b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Form.form @@ -0,0 +1,30 @@ + + + None + false + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + + + + diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Module.bsl new file mode 100644 index 000000000..9fb5734b2 --- /dev/null +++ b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаСписка/Module.bsl @@ -0,0 +1,14 @@ + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + ПрисоединенныеФайлы.ВызватьИсключениеОткрытияФормы(ЭтаФорма); + +КонецПроцедуры diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Form.form new file mode 100644 index 000000000..15a72967d --- /dev/null +++ b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Form.form @@ -0,0 +1,66 @@ + + + + ФормаКоманднаяПанель + -1 + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Ключ + + <key>ru</key> + <value>Ключ</value> + + 1 + + AnyRef + + + true + + + true + + + + ПерейтиКФормеФайла1 + + <key>ru</key> + <value>Перейти к форме файла1</value> + + 1 + + ru + Перейти к форме файла1 + + + true + + + + ПерейтиКФормеФайла + + + Auto + Auto + + + + + + diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Module.bsl new file mode 100644 index 000000000..7f746dab0 --- /dev/null +++ b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/Forms/ФормаЭлемента/Module.bsl @@ -0,0 +1,22 @@ + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + ПрисоединенныеФайлы.ПриСозданииНаСервереПрисоединенныйФайл(ЭтаФорма); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ +&НаКлиенте +Процедура ПерейтиКФормеФайла(Команда) + + ПрисоединенныеФайлыКлиент.ПерейтиКФормеПрисоединенногоФайла(ЭтаФорма); + +КонецПроцедуры diff --git a/SSL/src/Catalogs/УдалитьКлассификаторВалют/ManagerModule.bsl b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/ObjectModule.bsl similarity index 100% rename from SSL/src/Catalogs/УдалитьКлассификаторВалют/ManagerModule.bsl rename to SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/ObjectModule.bsl diff --git a/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/СообщениеSMSПрисоединенныеФайлы.mdo b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/СообщениеSMSПрисоединенныеФайлы.mdo new file mode 100644 index 000000000..6b3812ce3 --- /dev/null +++ b/SSL/src/Catalogs/СообщениеSMSПрисоединенныеФайлы/СообщениеSMSПрисоединенныеФайлы.mdo @@ -0,0 +1,774 @@ + + + + + + + + + + СообщениеSMSПрисоединенныеФайлы + + ru + Присоединенные файлы (Сообщение SMS) + + Catalog.СообщениеSMSПрисоединенныеФайлы.StandardAttribute.Description + DontUse + + Use + PredefinedDataName + + Use + + + + + Use + Predefined + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + IsFolder + + Use + + + + + Use + Owner + true + + ShowError + Use + + + + + Use + Parent + true + + Use + + + + + Use + Description + + ru + Имя файла + + + ShowError + Use + + + + + Use + Code + + Use + + + + Use + Managed + Use + + ru + Присоединенный файл (Сообщение SMS) + + 2 + true + 150 + String + Variable + AsDescription + InDialog + BothWays + Catalog.СообщениеSMSПрисоединенныеФайлы.Form.ФормаЭлемента + Catalog.СообщениеSMSПрисоединенныеФайлы.Form.ФормаСписка + Catalog.СообщениеSMSПрисоединенныеФайлы.Form.ФормаСписка + + Автор + + ru + Автор + + Автор - пользователь, добавивший файл + + CatalogRef.Пользователи + + + ru + Пользователь, добавивший файл + + + + ShowError + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Index + Use + Use + + + ВладелецФайла + + ru + Владелец файла + + + DocumentRef.СообщениеSMS + + + ru + Объект-владелец файла + + + + + Index + Use + + + ДатаМодификацииУниверсальная + + ru + Дата модификации универсальная + + + Date + + + + ru + Универсальная дата модификации файла + + + + + Use + Use + + + ДатаСоздания + + ru + Дата создания + + Дата добавления файла в базу + + Date + + + + ru + Дата создания файла + + + + ShowError + + 0001-01-01T00:00:00 + + Use + Use + + + Зашифрован + + ru + Зашифрован + + + Boolean + + + ru + Признак того, что файл зашифрован + + + + + Index + Use + + + Изменил + + ru + Изменил + + Автор - пользователь, добавивший файл + + CatalogRef.Пользователи + + + ru + Пользователь, отредактировавший файл последним + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + ИндексКартинки + + ru + Индекс картинки + + Индекс иконки, соответствующей расширению файла, для показа в списке + + Number + + 10 + + + + ru + Индекс картинки файла (служебное поле) + + + + + 0 + + Use + + + Описание + + ru + Описание + + Описание файла + + String + + + + ru + Краткое описание файла + + true + + + + Use + Use + + + ПодписанЭЦП + + ru + Подписан ЭЦП + + + Boolean + + + ru + Признак того, что файл подписан с помощью ЭЦП + + + + + Use + + + ПутьКФайлу + + ru + Путь к файлу + + Дополнительный путь к файлу на диске (в случае если ТипХраненияФайла - на диске) + + String + + + + ru + Путь к файлу в томе (служебное поле) + + + + + Use + Use + + + Размер + + ru + Размер + + Размер файла + + Number + + 10 + + + + ru + Размер файла в байтах + + + + + 0 + + Index + Use + + + Расширение + + ru + Расширение + + + String + + 10 + + + + ru + Расширение файла + + + + + Use + + + Редактирует + + ru + Редактирует + + + CatalogRef.Пользователи + + + ru + Пользователь, редактирующий файл в данный момент + + + + DontUse + Use + + Catalog.Пользователи.EmptyRef + + Use + Use + + + СтатусИзвлеченияТекста + + ru + Статус извлечения текста + + + EnumRef.СтатусыИзвлеченияТекстаФайлов + + + ru + Статус извлечения текста из файла (служебное поле) + + + + + Enum.СтатусыИзвлеченияТекстаФайлов.EmptyRef + + Index + Use + Use + + + ТекстХранилище + + ru + Текст + + Текст, извлеченный из файла - для полнотекстового поиска + + ValueStorage + + + ru + Текст, извлеченный из файла (служебное поле) + + + + + Use + Use + + + ТипХраненияФайла + + ru + Тип хранения файла + + Где хранятся файлы - в базе как ХранилищеЗначения или в каталоге на диске + + EnumRef.ТипыХраненияФайлов + + + ru + Тип хранения файла (в томе или непосредственно в системе) + + + + + Index + Use + + + Том + + ru + Том + + Ссылка на том (в случае если ТипХраненияФайла - на диске) + + CatalogRef.ТомаХраненияФайлов + + + ru + Том для хранения файла + + + + + Index + Use + + + ФайлХранилище + + ru + Файл хранилище + + Служебное поле для обмена файлами в РИБ + + ValueStorage + + + ru + Временное хранилище файла (служебное поле) + + + + + Use + + + + + + + ЭлектронныеЦифровыеПодписи + + ru + Электронные цифровые подписи + + + ru + Хранение электронных цифровых подписей файла + + + Use + LineNumber + + Use + + + + + ДатаПодписи + + ru + Дата подписи + + + Date + + + + ru + Дата установки подписи + + + + Use + + + ИмяФайлаПодписи + + ru + Имя файла подписи + + + String + + 260 + + + + ru + Имя файла подписи (служебное поле) + + + + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Комментарий к подписи + + + + Use + Use + + + КомуВыданСертификат + + ru + Кому выдан сертификат + + + String + + + + ru + Кому выдан сертификат (имя, отдел и др. информация) + + + + Use + + + Отпечаток + + ru + Отпечаток + + Отпечаток сертификата + + String + + 255 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Подпись + + ru + Подпись + + + ValueStorage + + + ru + Двоичные данные подписи (служебное поле) + + + + Use + + + УстановившийПодпись + + ru + Установивший подпись + + + CatalogRef.Пользователи + + + ru + Пользователь, установивший подпись + + + + Use + Index + + + Сертификат + + ru + Сертификат + + Двоичные данные сертификата + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + + + + + + СертификатыШифрования + + ru + Сертификаты шифрования + + + ru + Хранение сертификатов шифрования + + + Use + LineNumber + + Use + + + + + Отпечаток + + ru + Отпечаток + + + String + + 255 + + + + ru + Отпечаток сертификата (служебное поле) + + + + Use + + + Представление + + ru + Представление + + + String + + + + ru + Кому выдан сертификат (имя, отдел и др. информация) + + + + Use + Use + + + Сертификат + + ru + Сертификат + + Двоичные данные сертификата + + ValueStorage + + + ru + Двоичные данные сертификата (служебное поле) + + + + Use + Use + + + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + ФормаЭлемента + + ru + Форма элемента + + PersonalComputer + MobileDevice + + diff --git a/SSL/src/Catalogs/СообщенияОбластейДанных/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/СообщенияОбластейДанных/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index a8566cdce..a56d27f5a 100644 --- a/SSL/src/Catalogs/СообщенияОбластейДанных/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/СообщенияОбластейДанных/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -57,23 +57,4 @@ Normal b75fecce-942b-4aed-abc9-e6a02e460fb3 - - - - Получатель - Items - None - 0001-01-01T00:00:00 - 0001-01-01T00:00:00 - - - false - Отправитель - Items - None - 0001-01-01T00:00:00 - 0001-01-01T00:00:00 - - -
        diff --git a/SSL/src/Catalogs/СообщенияОбластейДанных/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/СообщенияОбластейДанных/Forms/ФормаСписка/Module.bsl index a7eace9d7..c85885d25 100644 --- a/SSL/src/Catalogs/СообщенияОбластейДанных/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/СообщенияОбластейДанных/Forms/ФормаСписка/Module.bsl @@ -8,8 +8,26 @@ Возврат; КонецЕсли; - ВариантГруппировки = "ПоПолучателю"; + // Начальная настройка группировки. + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ГруппировкаДанных = Список.КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); + ГруппировкаДанных.ИдентификаторПользовательскойНастройки = "ОсновнаяГруппировка"; + ГруппировкаДанных.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ПоляГруппировки = ГруппировкаДанных.ПоляГруппировки; + Иначе + ПоляГруппировки = Список.Группировка; + КонецЕсли; + ЭлементГруппировкиДанных = ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + ЭлементГруппировкиДанных.Поле = Новый ПолеКомпоновкиДанных("Получатель"); + ЭлементГруппировкиДанных.Использование = Истина; + + ЭлементГруппировкиДанных = ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + ЭлементГруппировкиДанных.Поле = Новый ПолеКомпоновкиДанных("Отправитель"); + ЭлементГруппировкиДанных.Использование = Ложь; + + // Условная настройка группировки. + ВариантГруппировки = "ПоПолучателю"; УстановитьГруппировкуСписка(); КонецПроцедуры @@ -86,10 +104,22 @@ &НаСервере Процедура УстановитьГруппировкуСписка() + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + + ГруппировкаПолучатель = Список.КомпоновщикНастроек.Настройки.Структура[0].ПоляГруппировки.Элементы[0]; + ГруппировкаОтправитель = Список.КомпоновщикНастроек.Настройки.Структура[0].ПоляГруппировки.Элементы[1]; + + Иначе + + ГруппировкаПолучатель = Список.Группировка.Элементы[0]; + ГруппировкаОтправитель = Список.Группировка.Элементы[1]; + + КонецЕсли; + Если ВариантГруппировки = "БезГруппировки" Тогда - Список.Группировка.Элементы[0].Использование = Ложь; - Список.Группировка.Элементы[1].Использование = Ложь; + ГруппировкаПолучатель.Использование = Ложь; + ГруппировкаОтправитель.Использование = Ложь; Элементы.Отправитель.Видимость = Истина; Элементы.Получатель.Видимость = Истина; @@ -98,8 +128,8 @@ Использование = (ВариантГруппировки = "ПоПолучателю"); - Список.Группировка.Элементы[0].Использование = Использование; - Список.Группировка.Элементы[1].Использование = Не Использование; + ГруппировкаПолучатель.Использование = Использование; + ГруппировкаОтправитель.Использование = Не Использование; Элементы.Отправитель.Видимость = Использование; Элементы.Получатель.Видимость = Не Использование; diff --git a/SSL/src/Catalogs/СообщенияСистемы/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Catalogs/СообщенияСистемы/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index a8566cdce..a56d27f5a 100644 --- a/SSL/src/Catalogs/СообщенияСистемы/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Catalogs/СообщенияСистемы/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -57,23 +57,4 @@ Normal b75fecce-942b-4aed-abc9-e6a02e460fb3 - - - - Получатель - Items - None - 0001-01-01T00:00:00 - 0001-01-01T00:00:00 - - - false - Отправитель - Items - None - 0001-01-01T00:00:00 - 0001-01-01T00:00:00 - - -
        diff --git a/SSL/src/Catalogs/СообщенияСистемы/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/СообщенияСистемы/Forms/ФормаСписка/Module.bsl index fb04bbe1e..20b384b65 100644 --- a/SSL/src/Catalogs/СообщенияСистемы/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Catalogs/СообщенияСистемы/Forms/ФормаСписка/Module.bsl @@ -8,8 +8,26 @@ Возврат; КонецЕсли; - ВариантГруппировки = "ПоПолучателю"; + // Начальная настройка группировки. + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ГруппировкаДанных = Список.КомпоновщикНастроек.Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); + ГруппировкаДанных.ИдентификаторПользовательскойНастройки = "ОсновнаяГруппировка"; + ГруппировкаДанных.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ПоляГруппировки = ГруппировкаДанных.ПоляГруппировки; + Иначе + ПоляГруппировки = Список.Группировка; + КонецЕсли; + ЭлементГруппировкиДанных = ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + ЭлементГруппировкиДанных.Поле = Новый ПолеКомпоновкиДанных("Получатель"); + ЭлементГруппировкиДанных.Использование = Истина; + + ЭлементГруппировкиДанных = ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + ЭлементГруппировкиДанных.Поле = Новый ПолеКомпоновкиДанных("Отправитель"); + ЭлементГруппировкиДанных.Использование = Ложь; + + // Условная настройка группировки. + ВариантГруппировки = "ПоПолучателю"; УстановитьГруппировкуСписка(); КонецПроцедуры @@ -91,10 +109,22 @@ &НаСервере Процедура УстановитьГруппировкуСписка() + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + + ГруппировкаПолучатель = Список.КомпоновщикНастроек.Настройки.Структура[0].ПоляГруппировки.Элементы[0]; + ГруппировкаОтправитель = Список.КомпоновщикНастроек.Настройки.Структура[0].ПоляГруппировки.Элементы[1]; + + Иначе + + ГруппировкаПолучатель = Список.Группировка.Элементы[0]; + ГруппировкаОтправитель = Список.Группировка.Элементы[1]; + + КонецЕсли; + Если ВариантГруппировки = "БезГруппировки" Тогда - Список.Группировка.Элементы[0].Использование = Ложь; - Список.Группировка.Элементы[1].Использование = Ложь; + ГруппировкаПолучатель.Использование = Ложь; + ГруппировкаОтправитель.Использование = Ложь; Элементы.Отправитель.Видимость = Истина; Элементы.Получатель.Видимость = Истина; @@ -103,8 +133,8 @@ Использование = (ВариантГруппировки = "ПоПолучателю"); - Список.Группировка.Элементы[0].Использование = Использование; - Список.Группировка.Элементы[1].Использование = Не Использование; + ГруппировкаПолучатель.Использование = Использование; + ГруппировкаОтправитель.Использование = Не Использование; Элементы.Отправитель.Видимость = Использование; Элементы.Получатель.Видимость = Не Использование; diff --git a/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Form.form b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Form.form new file mode 100644 index 000000000..7fb7fe126 --- /dev/null +++ b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Form.form @@ -0,0 +1,987 @@ + + + + <key>ru</key> + <value>Классификатор стран мира (ОКСМ)</value> + + + Классификатор + 17 + true + true + + true + + + Классификатор + + None + Add + Copy + Delete + EndEdit + MoveDown + MoveUp + + КлассификаторНаименование + 22 + true + true + + true + + + Классификатор.Наименование + + + КлассификаторНаименованиеРасширеннаяПодсказка + 73 + Label + true + true + + Left + + + + КлассификаторНаименованиеКонтекстноеМеню + 23 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + КлассификаторКод + 20 + true + true + + true + + + Классификатор.Код + + + КлассификаторКодРасширеннаяПодсказка + 75 + Label + true + true + + Left + + + + КлассификаторКодКонтекстноеМеню + 21 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + КлассификаторКодАльфа2 + 26 + true + true + + true + + + Классификатор.КодАльфа2 + + + КлассификаторКодАльфа2РасширеннаяПодсказка + 77 + Label + true + true + + Left + + + + КлассификаторКодАльфа2КонтекстноеМеню + 27 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + КлассификаторКолАльфа3 + 28 + true + true + + true + + + Классификатор.КодАльфа3 + + + КлассификаторКолАльфа3РасширеннаяПодсказка + 79 + Label + true + true + + Left + + + + КлассификаторКолАльфа3КонтекстноеМеню + 29 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + КлассификаторНаименованиеПолное + 24 + true + true + + true + + + Классификатор.НаименованиеПолное + + + КлассификаторНаименованиеПолноеРасширеннаяПодсказка + 81 + Label + true + true + + Left + + + + КлассификаторНаименованиеПолноеКонтекстноеМеню + 25 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + Top + + КлассификаторКоманднаяПанель + 19 + + КлассификаторГруппаПоиск + 34 + + КлассификаторНайти + 32 + true + true + + true + + + КлассификаторНайтиРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + + + КлассификаторОтменитьПоиск + 33 + true + true + + true + + + КлассификаторОтменитьПоискРасширеннаяПодсказка + 58 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Классификатор группа поиск</value> + + + ru + Классификатор группа поиск + + + КлассификаторГруппаПоискРасширеннаяПодсказка + 56 + Label + true + true + + Left + + + + + + КлассификаторСортироватьСписокПоВозрастанию + 30 + true + true + + true + + + КлассификаторСортироватьСписокПоВозрастаниюРасширеннаяПодсказка + 59 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.SortListAsc + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КлассификаторСортироватьСписокПоУбыванию + 31 + true + true + + true + + + КлассификаторСортироватьСписокПоУбываниюРасширеннаяПодсказка + 60 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.SortListDesc + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + + + КлассификаторИзменитьФорму + 47 + true + true + + true + + + КлассификаторИзменитьФормуРасширеннаяПодсказка + 61 + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Normal + Auto + true + true + UserCmds + Auto + + + КлассификаторСправка + 43 + true + true + + true + + + КлассификаторСправкаРасширеннаяПодсказка + 62 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + + Left + true + + + ValueChoice + КлассификаторВыборЗначения + + + Selection + КлассификаторВыбор + + + BeforeAddRow + КлассификаторПередНачаломДобавления + + + BeforeDeleteRow + КлассификаторПередУдалением + + + BeforeRowChange + КлассификаторПередНачаломИзменения + + + КлассификаторСтрокаПоиска + 64 + + КлассификаторСтрокаПоискаРасширеннаяПодсказка + 66 + Label + true + true + + Left + + + + КлассификаторСтрокаПоискаКонтекстноеМеню + 65 + true + + Классификатор + + true + + + + КлассификаторСостояниеПросмотра + 67 + + КлассификаторСостояниеПросмотраРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + + КлассификаторСостояниеПросмотраКонтекстноеМеню + 68 + true + + ViewStatusAddition + Классификатор + + true + + + + КлассификаторУправлениеПоиском + 70 + + КлассификаторУправлениеПоискомРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + + КлассификаторУправлениеПоискомКонтекстноеМеню + 71 + true + + SearchControlAddition + Классификатор + + true + + + + КлассификаторРасширеннаяПодсказка + 63 + Label + true + true + + Left + + + + КлассификаторКонтекстноеМеню + 18 + + КлассификаторКонтекстноеМенюИзменить + 35 + true + true + + true + + + КлассификаторКонтекстноеМенюИзменитьРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.Change + Normal + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюНайти + 36 + true + true + + true + + + КлассификаторКонтекстноеМенюНайтиРасширеннаяПодсказка + 49 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюОтменитьПоиск + 37 + true + true + + true + + + КлассификаторКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка + 50 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюСортироватьСписокПоВозрастанию + 38 + true + true + + true + + + КлассификаторКонтекстноеМенюСортироватьСписокПоВозрастаниюРасширеннаяПодсказка + 51 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.SortListAsc + Normal + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюСортироватьСписокПоУбыванию + 39 + true + true + + true + + + КлассификаторКонтекстноеМенюСортироватьСписокПоУбываниюРасширеннаяПодсказка + 52 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.SortListDesc + Normal + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюВывестиСписок + 40 + true + true + + true + + + КлассификаторКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 53 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюКопироватьВБуферОбмена + 41 + true + true + + true + + + КлассификаторКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.CopyToClipboard + Normal + Auto + true + true + UserCmds + Auto + + + КлассификаторКонтекстноеМенюВыделитьВсе + 42 + true + true + + true + + + КлассификаторКонтекстноеМенюВыделитьВсеРасширеннаяПодсказка + 55 + Label + true + true + + Left + + + Form.Item.Классификатор.StandardCommand.SelectAll + Normal + Auto + true + true + UserCmds + Auto + + true + + true + true + true + true + true + MultiRow +
        true
        + 1 + 1 + AutoUse + AutoUse + true + true + Auto + true + true + true + true + + Классификатор.ИндексПиктограммы + + + CommonPicture.ПиктограммыЭлементов + + None + None + None + true + +
        + None + false + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + 100 + 32 + LockOwner + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Классификатор + + <key>ru</key> + <value>Классификатор</value> + + 2 + + ValueTable + + + true + + + true + + + Классификатор.ИндексПиктограммы + + + Код + + <key>ru</key> + <value>Код</value> + + 1 + + String + + 3 + + + + true + + + true + + + + Наименование + + <key>ru</key> + <value>Наименование</value> + + 2 + + String + + 60 + + + + true + + + true + + + + НаименованиеПолное + + <key>ru</key> + <value>Наименование полное</value> + + 3 + + String + + + + true + + + true + + + + КодАльфа2 + + <key>ru</key> + <value>Код альфа 2</value> + + 4 + + String + + 2 + + + + true + + + true + + + + КодАльфа3 + + <key>ru</key> + <value>Код альфа 3</value> + + 5 + + String + + 3 + + + + true + + + true + + + + ИндексПиктограммы + + <key>ru</key> + <value>Индекс пиктограммы</value> + + 7 + + Number + + 2 + + + + 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> + + 1 + + Boolean + + + true + + + true + + + + ТекущаяСтрока + + CatalogRef.СтраныМира + + + + + + +
        diff --git a/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Help/ru.html b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Help/ru.html new file mode 100644 index 000000000..c991bdaf8 --- /dev/null +++ b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Help/ru.html @@ -0,0 +1,26 @@ + +

        Общероссийский классификатор стран мира (ОКСМ)

        +

        Общероссийский классификатор стран мира (ОКСМ) ходит в состав Единой системы классификации и кодирования технико-экономической и социальной информации (ЕСКК) в Российской Федерации.

        +

        ОКСМ гармонизирован с Международным стандартом ИСО 3166-97 «Коды для представления наименований стран», разработанным Международной организацией по стандартизации (ИСО), и Межгосударственным классификатором стран мира MK (ИСО 3166) 004-97.

        +

        ОКСМ предназначен для идентификации стран мира и используется в процессе обмена информацией при решении различных задач.

        +

        В отличие от стандартов ISO 3166 и ГОСТ 7.67, в ОКСМ, согласно приказу [1] Ростехрегулирования, с 1 января 2009 года входят республики Абхазия и Южная Осетия, которые признаны Россией [2].

        +

        Структурно классификатор состоит из трёх блоков:

        +
        • цифровой идентификации, +
        • наименований, +
        • буквенной идентификации.

        Блок цифровой идентификации содержит трёхзначный цифровой код страны мира, построенный с использованием порядкового метода кодирования.

        +

        Блок наименований включает краткое наименование и полное официальное наименование страны мира. Отсутствие в позиции классификатора полного наименования страны мира означает его совпадение с кратким наименованием.

        +

        Блок буквенной идентификации стран мира содержит двухзначный (альфа-2) и трёхзначный (альфа-3) буквенные коды, знаками которых являются буквы латинского алфавита. Эти коды преднахназначены для идентификации государств и зависимых территорий, основных административных образований внутри государств, согласно ГОСТ 7.67 и ISO 3166.

        +

        Цифровой код имеет приоретет перед буквенными кодами, заключающийся в том, что на него не влияют изменения в наименованиях стран мира, которые могут повлечь за собой изменения кодов альфа-2 и альфа-3

        +

        Примечания:

        +
        1. Изменение 8/2008 ОКСМ. Принято и введено в действие Приказом Федерального агентства по техническому регулированию и метрологии от 03.12.2008 N 352-ст. Дата введения — 01.01.2009 ↩ +
        2. Указ Президента Российской Федерации от 26.08.2008 № 1260 «О признании Республики Абхазия» ↩ +
          \ No newline at end of file diff --git a/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Module.bsl b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Module.bsl new file mode 100644 index 000000000..b2e30c2a8 --- /dev/null +++ b/SSL/src/Catalogs/СтраныМира/Forms/Классификатор/Module.bsl @@ -0,0 +1,163 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + Если Параметры.Свойство("РежимОткрытияОкна") Тогда + РежимОткрытияОкна = Параметры.РежимОткрытияОкна + КонецЕсли; + + Параметры.Свойство("РежимВыбора", РежимВыбора); + Элементы.Классификатор.РежимВыбора = РежимВыбора; + + // Служебные реквизиты + ПоляКлассификатора = "Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3"; + + Мета = Метаданные.Справочники.СтраныМира; + ПредставлениеОбъектаКлассификатора = Мета.РасширенноеПредставлениеОбъекта; + Если ПустаяСтрока(ПредставлениеОбъектаКлассификатора) Тогда + ПредставлениеОбъектаКлассификатора = Мета.ПредставлениеОбъекта; + КонецЕсли; + Если ПустаяСтрока(ПредставлениеОбъектаКлассификатора) Тогда + ПредставлениеОбъектаКлассификатора = Мета.Представление(); + КонецЕсли; + Если Не ПустаяСтрока(ПредставлениеОбъектаКлассификатора) Тогда + ПредставлениеОбъектаКлассификатора = " (" + ПредставлениеОбъектаКлассификатора + ")"; + КонецЕсли; + + ДанныеКлассификатора = СостояниеКлассификатора(); + Классификатор.Загрузить(ДанныеКлассификатора); + + Фильтр = Классификатор.НайтиСтроки(Новый Структура("Код", Параметры.ТекущаяСтрока.Код)); + Если Фильтр.Количество()>0 Тогда + Элементы.Классификатор.ТекущаяСтрока = Фильтр[0].ПолучитьИдентификатор(); + КонецЕсли; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ Классификатор +// + +&НаКлиенте +Процедура КлассификаторВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + Если Не РежимВыбора Тогда + ОткрытьФормуЭлементаКлассификатора(Элемент.ТекущиеДанные); + Возврат; + КонецЕсли; + + Если ТипЗнч(ВыбраннаяСтрока)=Тип("Массив") Тогда + ИдентификаторСтрокиВыбора = ВыбраннаяСтрока[0]; + Иначе + ИдентификаторСтрокиВыбора = ВыбраннаяСтрока; + КонецЕсли; + + ОповеститьОВыбореЭлементаКлассификатора(ИдентификаторСтрокиВыбора); +КонецПроцедуры + +&НаКлиенте +Процедура КлассификаторВыборЗначения(Элемент, Значение, СтандартнаяОбработка) + ОповеститьОВыбореЭлементаКлассификатора(Значение); +КонецПроцедуры + +&НаКлиенте +Процедура КлассификаторПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура КлассификаторПередУдалением(Элемент, Отказ) + Отказ = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура КлассификаторПередНачаломИзменения(Элемент, Отказ) + Отказ = Истина; + ОткрытьФормуЭлементаКлассификатора(Элементы.Классификатор.ТекущиеДанные); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +&НаКлиенте +Процедура ОткрытьФормуЭлементаКлассификатора(ДанныеЗаполнения, ЭтоНовый=Ложь) + Если ДанныеЗаполнения=Неопределено Тогда + Возврат; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Основание", Новый Структура(ПоляКлассификатора)); + ЗаполнитьЗначенияСвойств(ПараметрыФормы.Основание, ДанныеЗаполнения); + Если ЭтоНовый Тогда + ПараметрыФормы.Основание.Вставить("Код", "--"); + Иначе + ПараметрыФормы.Вставить("ТолькоПросмотр", Истина); + КонецЕсли; + Форма = ОткрытьФорму("Справочник.СтраныМира.ФормаОбъекта", ПараметрыФормы, Элементы.Классификатор); + Если Не ЭтоНовый И Форма.АвтоЗаголовок Тогда + Форма.АвтоЗаголовок = Ложь; + Форма.Заголовок = ДанныеЗаполнения.Наименование + ПредставлениеОбъектаКлассификатора; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОповеститьОВыбореЭлементаКлассификатора(ИдентификаторСтрокиВыбора) + ВсеДанныеСтроки = Классификатор.НайтиПоИдентификатору(ИдентификаторСтрокиВыбора); + Если ВсеДанныеСтроки<>Неопределено Тогда + ДанныеСтроки = Новый Структура(ПоляКлассификатора); + ЗаполнитьЗначенияСвойств(ДанныеСтроки, ВсеДанныеСтроки); + + ДанныеВыбора = ДанныеВыбораЭлементаКлассификатора(ДанныеСтроки); + Если ДанныеВыбора.ЭтоНовый Тогда + ОповеститьОСозданииЭлементов(ДанныеВыбора.Ссылка); + КонецЕсли; + + ОповеститьОВыборе(ДанныеВыбора.Ссылка); + КонецЕсли; +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ДанныеВыбораЭлементаКлассификатора(Знач ДанныеСтраны) + // Ищем только по коду, так как в классификаторе все коды заданы + Ссылка = Справочники.СтраныМира.НайтиПоКоду(ДанныеСтраны.Код); + ЭтоНовый = Не ЗначениеЗаполнено(Ссылка); + Если ЭтоНовый Тогда + Страна = Справочники.СтраныМира.СоздатьЭлемент(); + ЗаполнитьЗначенияСвойств(Страна, ДанныеСтраны); + Страна.Записать(); + Ссылка = Страна.Ссылка; + КонецЕсли; + + Возврат Новый Структура("Ссылка, ЭтоНовый, Код", Ссылка, ЭтоНовый, ДанныеСтраны.Код); +КонецФункции + +&НаСервереБезКонтекста +Функция СостояниеКлассификатора() + Данные = Справочники.СтраныМира.ТаблицаКлассификатора(); + + Данные.Колонки.Добавить("ИндексПиктограммы", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2, 0))); + Данные.ЗаполнитьЗначения(8, "ИндексПиктограммы"); + + Запрос = Новый Запрос("ВЫБРАТЬ Код Из Справочник.СтраныМира ГДЕ Предопределенный"); + Для Каждого СтрокаПредопределенного Из Запрос.Выполнить().Выгрузить() Цикл + СтрокаДанных = Данные.Найти(СтрокаПредопределенного.Код, "Код"); + Если СтрокаДанных<>Неопределено Тогда + СтрокаДанных.ИндексПиктограммы = 5; + КонецЕсли; + КонецЦикла; + + Возврат Данные; +КонецФункции + +&НаКлиенте +Процедура ОповеститьОСозданииЭлементов(Ссылка) + ОповеститьОЗаписиНового(Ссылка); + Оповестить("Справочник.СтраныМира.Изменение", Ссылка, Этаформа); +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/Catalogs/СтраныМира/Forms/ФормаСписка/Form.form b/SSL/src/Catalogs/СтраныМира/Forms/ФормаСписка/Form.form index 65da96a88..cf24dbd5b 100644 --- a/SSL/src/Catalogs/СтраныМира/Forms/ФормаСписка/Form.form +++ b/SSL/src/Catalogs/СтраныМира/Forms/ФормаСписка/Form.form @@ -11,7 +11,6 @@ Список - true None Наименование @@ -27,7 +26,7 @@ true НаименованиеРасширеннаяПодсказка - 24 + 37 Label true true @@ -63,7 +62,7 @@ КодРасширеннаяПодсказка - 26 + 39 Label true true @@ -99,7 +98,7 @@ КодАльфа2РасширеннаяПодсказка - 28 + 41 Label true true @@ -135,7 +134,7 @@ КодАльфа3РасширеннаяПодсказка - 30 + 43 Label true true @@ -175,7 +174,7 @@ НаименованиеПолноеРасширеннаяПодсказка - 32 + 45 Label true true @@ -198,18 +197,190 @@ true - None + Top СписокКоманднаяПанель 3 + + СписокВыбрать + 16 + true + true + + true + + + СписокВыбратьРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + Form.Item.Список.StandardCommand.Choose + Normal + Auto + true + true + UserCmds + Auto + + + СписокКоманды + 15 + true + true + + true + + + <key>ru</key> + <value>Команды списка</value> + + + ru + Список команды + + + СписокКомандыРасширеннаяПодсказка + 22 + Label + true + true + + Left + + + + Item.Список + + + + СписокКлассификатор + 17 + true + true + + true + + + СписокКлассификаторРасширеннаяПодсказка + 23 + Label + true + true + + Left + + + Form.Command.ОткрытьКлассификатор + Normal + Auto + true + true + UserCmds + Auto + + + СписокВыбратьИзКлассификатора + 18 + true + true + + true + + + СписокВыбратьИзКлассификатораРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + Form.Command.ВыбратьИзКлассификатора + Normal + Auto + true + true + UserCmds + Auto + + + СписокИзменитьФорму + 19 + true + true + + true + + + СписокИзменитьФормуРасширеннаяПодсказка + 25 + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Normal + Auto + true + true + UserCmds + Auto + + + СписокСправка + 20 + true + true + + true + + + СписокСправкаРасширеннаяПодсказка + 26 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + Left + + BeforeAddRow + СписокПередНачаломДобавления + + + ChoiceProcessing + СписокОбработкаВыбора + + + NewWriteProcessing + СписокОбработкаЗаписиНового + СписокСтрокаПоиска - 15 + 28 СписокСтрокаПоискаРасширеннаяПодсказка - 17 + 30 Label true true @@ -219,7 +390,7 @@ СписокСтрокаПоискаКонтекстноеМеню - 16 + 29 true Список @@ -229,10 +400,10 @@ СписокСостояниеПросмотра - 18 + 31 СписокСостояниеПросмотраРасширеннаяПодсказка - 20 + 33 Label true true @@ -242,7 +413,7 @@ СписокСостояниеПросмотраКонтекстноеМеню - 19 + 32 true ViewStatusAddition @@ -253,10 +424,10 @@ СписокУправлениеПоиском - 21 + 34 СписокУправлениеПоискомРасширеннаяПодсказка - 23 + 36 Label true true @@ -266,7 +437,7 @@ СписокУправлениеПоискомКонтекстноеМеню - 22 + 35 true SearchControlAddition @@ -277,7 +448,7 @@ СписокРасширеннаяПодсказка - 14 + 27 Label true true @@ -327,12 +498,27 @@ true + None + false ФормаКоманднаяПанель -1 Left true + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + 110 DontBlock true true @@ -365,6 +551,132 @@ true
          + + ОткрытьФормуКлассификатора + + <key>ru</key> + <value>Открыть форму классификатора</value> + + 2 + + Boolean + + + true + + + true + + + + РежимВыбора + + <key>ru</key> + <value>Режим выбора</value> + + 3 + + Boolean + + + true + + + true + + + + ИдентификаторЭлементаОтбораСсылки + + <key>ru</key> + <value>Идентификатор элемента отбора ссылки</value> + + 4 + + + true + + + true + + + + ЭтоПлатформа83 + + <key>ru</key> + <value>Это платформа 8.3</value> + + 5 + + Boolean + + + true + + + true + + + + ОткрытьКлассификатор + + <key>ru</key> + <value>Классификатор стран (ОКСМ)</value> + + 2 + + ru + Открыть классификатор + + + true + + + + ОткрытьКлассификатор + + + Auto + Auto + + + ВыбратьИзКлассификатора + + <key>ru</key> + <value>Выбрать из классификатора</value> + + 1 + + ru + Выбрать из классификатора + + + true + + + StdPicture.ChooseValue + + + + ВыбратьИзКлассификатора + + + TextPicture + Auto + Auto + + + ТолькоДанныеКлассификатора + + Boolean + + true + + + РазрешитьДанныеКлассификатора + + true + diff --git a/SSL/src/Catalogs/СтраныМира/Forms/ФормаСписка/Module.bsl b/SSL/src/Catalogs/СтраныМира/Forms/ФормаСписка/Module.bsl new file mode 100644 index 000000000..0e3a297d7 --- /dev/null +++ b/SSL/src/Catalogs/СтраныМира/Forms/ФормаСписка/Module.bsl @@ -0,0 +1,205 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + // Инициализируем внутренние флаги + ЭтоПлатформа83 = ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83(); + + МожноДобавлятьВСправочник = Справочники.СтраныМира.ЕстьПравоДобавления(); + + Если Параметры.РазрешитьДанныеКлассификатора=Неопределено Тогда + РазрешитьДанныеКлассификатора = Истина; + Иначе + ТипБулево = Новый ОписаниеТипов("Булево"); + РазрешитьДанныеКлассификатора = ТипБулево.ПривестиЗначение(Параметры.РазрешитьДанныеКлассификатора); + КонецЕсли; + + ТолькоДанныеКлассификатора = Параметры.ТолькоДанныеКлассификатора; + + Параметры.Свойство("РежимВыбора", РежимВыбора); + + // Разрешаем элементы + Элементы.Список.РежимВыбора = РежимВыбора; + Элементы.СписокВыбрать.Видимость = РежимВыбора; + Элементы.СписокВыбрать.КнопкаПоУмолчанию = РежимВыбора; + + Элементы.СписокВыбратьИзКлассификатора.Видимость = (РежимВыбора И Не ТолькоДанныеКлассификатора); + Элементы.СписокКлассификатор.Видимость = Не Элементы.СписокВыбратьИзКлассификатора.Видимость; + + // По флагам определяем режим + Если РежимВыбора Тогда + Если РазрешитьДанныеКлассификатора Тогда + Если ТолькоДанныеКлассификатора Тогда + Если МожноДобавлятьВСправочник Тогда + // Выбор только стран классификатора + ОткрытьФормуКлассификатора = Истина + + Иначе + // Показываем только пересечение справочника и классификатора + УстановитьОтборПересеченияСКлассификатором(); + // Кнопки классификатора скрываем + Элементы.СписокВыбратьИзКлассификатора.Видимость = Ложь; + Элементы.СписокКлассификатор.Видимость = Ложь; + КонецЕсли; + + Иначе + Если МожноДобавлятьВСправочник Тогда + // Показываем справочник и кнопку выбора из классификатора (установки по умолчанию) + Иначе + // Кнопки классификатора скрываем + Элементы.СписокВыбратьИзКлассификатора.Видимость = Ложь; + Элементы.СписокКлассификатор.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + + Иначе + // Показываем только элементы справочника + Элементы.СписокКлассификатор.Видимость = Ложь; + // Кнопки классификатора скрываем + Элементы.СписокВыбратьИзКлассификатора.Видимость = Ложь; + Элементы.СписокКлассификатор.Видимость = Ложь; + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ОткрытьФормуКлассификатора Тогда + // Выбор только стран классификатора, открываем его форму для выбора + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("РежимВыбора", Истина); + ПараметрыОткрытия.Вставить("ЗакрыватьПриВыборе", ЗакрыватьПриВыборе); + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + ПараметрыОткрытия.Вставить("РежимОткрытияОкна", РежимОткрытияОкна); + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + + ОткрытьФорму("Справочник.СтраныМира.Форма.Классификатор", ПараметрыОткрытия, ВладелецФормы); + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия="Справочник.СтраныМира.Изменение" Тогда + ОбновитьОтображениеСпискаСтран(); + КонецЕсли; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ Список +// + +&НаКлиенте +Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) + ТекстВопроса = НСтр("ru='Есть возможность подобрать страну мира из классификатора. + |Подобрать?'"); + Результат = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет); + Если Результат = КодВозвратаДиалога.Да Тогда + Отказ = Истина; + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("РежимВыбора", Истина); + ОткрытьФорму("Справочник.СтраныМира.Форма.Классификатор", ПараметрыОткрытия, Элементы.Список); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СписокОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + Если РежимВыбора Тогда + // Выбор из классификатора + ОповеститьОВыборе(ВыбранноеЗначение); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура СписокОбработкаЗаписиНового(НовыйОбъект, Источник, СтандартнаяОбработка) + ОбновитьОтображениеСпискаСтран(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// + +&НаКлиенте +Процедура ОткрытьКлассификатор(Команда) + // Открываем на просмотр + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + ОткрытьФорму("Справочник.СтраныМира.Форма.Классификатор", ПараметрыОткрытия, Элементы.Список); +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьИзКлассификатора(Команда) + // Открываем для выбора + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("РежимВыбора", Истина); + ПараметрыОткрытия.Вставить("ЗакрыватьПриВыборе", ЗакрыватьПриВыборе); + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + ПараметрыОткрытия.Вставить("РежимОткрытияОкна", РежимОткрытияОкна); + ПараметрыОткрытия.Вставить("ТекущаяСтрока", Элементы.Список.ТекущаяСтрока); + ОткрытьФорму("Справочник.СтраныМира.Форма.Классификатор", ПараметрыОткрытия, Элементы.Список); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +&НаКлиенте +Процедура ОбновитьОтображениеСпискаСтран() + + Если ИдентификаторЭлементаОтбораСсылки<>Неопределено Тогда + // Был наложен дополнительный отбор, который надо обновить + УстановитьОтборПересеченияСКлассификатором(); + КонецЕсли; + + Элементы.Список.Обновить(); +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтборПересеченияСКлассификатором() + ОтборСписка = ?(ЭтоПлатформа83, Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор, Список.Отбор); + + Если ИдентификаторЭлементаОтбораСсылки=Неопределено Тогда + ЭлементОтбора = ОтборСписка.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + + ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; + ЭлементОтбора.Использование = Истина; + + ИдентификаторЭлементаОтбораСсылки = ОтборСписка.ПолучитьИдентификаторПоОбъекту(ЭлементОтбора); + Иначе + ЭлементОтбора = ОтборСписка.ПолучитьОбъектПоИдентификатору(ИдентификаторЭлементаОтбораСсылки); + КонецЕсли; + + Запрос = Новый Запрос(" + |ВЫБРАТЬ + | Код, Наименование + |ПОМЕСТИТЬ + | Классификатор + |ИЗ + | &Классификатор КАК Классификатор + |ИНДЕКСИРОВАТЬ ПО + | Код, Наименование + |;//////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | Ссылка + |ИЗ + | Справочник.СтраныМира КАК СтраныМира + |ВНУТРЕННЕЕ СОЕДИНЕНИЕ + | Классификатор КАК Классификатор + |ПО + | СтраныМира.Код = Классификатор.Код + | И СтраныМира.Наименование = Классификатор.Наименование + |"); + Запрос.УстановитьПараметр("Классификатор", Справочники.СтраныМира.ТаблицаКлассификатора()); + ЭлементОтбора.ПравоеЗначение = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); +КонецПроцедуры diff --git a/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Form.form index d0a72a674..9d797cf8d 100644 --- a/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Form.form @@ -3,6 +3,46 @@ Группа 11 + + Наименование + 3 + true + true + + true + + + Объект.Description + + + НаименованиеРасширеннаяПодсказка + 14 + Label + true + true + + Left + + + + Наименование_КонтекстноеМеню + 4 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + Код 1 @@ -16,7 +56,7 @@ КодРасширеннаяПодсказка - 13 + 16 Label true true @@ -43,6 +83,77 @@ Normal + true + true + + true + + + ГруппаРасширеннаяПодсказка + 13 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + НаименованиеПолное + 5 + + <key>ru</key> + <value>Полное наименование</value> + + true + true + + true + + + Объект.НаименованиеПолное + + + НаименованиеПолноеРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + НаименованиеПолное_КонтекстноеМеню + 6 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + ГруппаАльфаКодов + 12 КодАльфа2 7 @@ -56,7 +167,7 @@ КодАльфа2РасширеннаяПодсказка - 15 + 21 Label true true @@ -98,7 +209,7 @@ КодАльфа3РасширеннаяПодсказка - 17 + 23 Label true true @@ -132,9 +243,17 @@ true + + <key>ru</key> + <value>Группа альфа кодов</value> + + + ru + Группа альфа кодов + - ГруппаРасширеннаяПодсказка - 12 + ГруппаАльфаКодовРасширеннаяПодсказка + 20 Label true true @@ -151,96 +270,16 @@ Auto - - Наименование - 3 - true - true - - true - - - Объект.Description - - - НаименованиеРасширеннаяПодсказка - 19 - Label - true - true - - Left - - - - Наименование_КонтекстноеМеню - 4 - true - - InputField - Enter - true - Left - true - - true - true - true - true - true - Normal - - - - НаименованиеПолное - 5 - - <key>ru</key> - <value>Полное</value> - - true - true - - true - - - Объект.НаименованиеПолное - - - НаименованиеПолноеРасширеннаяПодсказка - 21 - Label - true - true - - Left - - - - НаименованиеПолное_КонтекстноеМеню - 6 - true - - InputField - Enter - true - Left - true - - true - true - true - true - true - Normal - - Форма_КоманднаяПанель -1 Left true + + OnCreateAtServer + ПриСозданииНаСервере + LockOwner true true @@ -273,8 +312,8 @@ - OnReadAtServer - ПриЧтенииНаСервере + AfterWrite + ПослеЗаписи diff --git a/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Module.bsl index e6de0dec0..86d03c580 100644 --- a/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/СтраныМира/Forms/ФормаЭлемента/Module.bsl @@ -1,15 +1,20 @@ - -//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// &НаСервере -Процедура ПриЧтенииНаСервере(ТекущийОбъект) - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АвтономнаяРабота"); - Если Модуль<>Неопределено Тогда - Модуль.ОбъектПриЧтенииНаСервере(ТекущийОбъект, ЭтаФорма.ТолькоПросмотр); - КонецЕсли; +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; КонецЕсли; + Если Объект.Предопределенный Тогда + ТолькоПросмотр = Истина; + КонецЕсли; КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + Оповестить("Справочник.СтраныМира.Изменение", Объект.Ссылка, Этаформа); +КонецПроцедуры + diff --git a/SSL/src/Catalogs/СтраныМира/Help/ru.html b/SSL/src/Catalogs/СтраныМира/Help/ru.html index ea1500de4..f981dd002 100644 --- a/SSL/src/Catalogs/СтраныМира/Help/ru.html +++ b/SSL/src/Catalogs/СтраныМира/Help/ru.html @@ -1,10 +1,16 @@ - -

          Общероссийский классификатор стран мира (ОКСМ) входит в состав Единой системы классификации и кодирования технико-экономической и социальной информации (ЕСКК) в Российской Федерации. ОКСМ предназначен для идентификации стран мира и используется в процессе обмена информацией при решении различных задач.

          -

          Структурно классификатор состоит из трёх блоков:

          -
          • цифровой идентификации, -
          • наименований, -
          • буквенной идентификации.


          Блок цифровой идентификации содержит трёхзначный цифровой код страны мира, построенный с использованием порядкового метода кодирования.

          -

          Блок наименований включает краткое наименование и полное официальное наименование страны мира. Отсутствие в позиции классификатора полного наименования страны мира означает его совпадение с кратким наименованием.

          -

          Блок буквенной идентификации стран мира содержит двухзначный (альфа-2) и трёхзначный (альфа-3) буквенные коды, знаками которых являются буквы латинского алфавита. Основным принципом, который использовался при создании буквенных кодов, является принцип визуальной ассоциации кодов с наименованиями стран мира на английском, французском или других языках.

          -

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

          -

          Трёхзначные буквенные коды применяются в особых случаях, определяемых компетентными организациями.
          Цифровой код имеет преимущество перед буквенным кодом, заключающееся в том, что на него не влияют изменения в наименованиях стран мира, которые могут повлечь за собой изменения кодов альфа-2 и альфа-3.

          \ No newline at end of file + +

          Справочник стран мира

          +

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

          +

          Справочник может быть заполнен как вручную, так и по данным общероссийского классификатор стран мира (ОКСМ)

          +

          Поле "Код" содержит трёхзначный цифровой код страны мира, позволяющий однозначно идентифицировать страну согласно ОКСМ. Для стран, таможенных союзов и прочих данных, не относящихся к классификатору стран (например Евросоюз), в это поле рекомендуется вводить "--"

          +

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

          +

          Поля "Код Альфа-2" и "Код Альфа-3" содержат двухзначный (альфа-2) и трёхзначный (альфа-3) коды для идентификации государств и зависимых территорий, основных административных образований внутри государств, согласно ГОСТ 7.67 и ISO 3166.

          \ No newline at end of file diff --git a/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl b/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl new file mode 100644 index 000000000..8b1fb4a41 --- /dev/null +++ b/SSL/src/Catalogs/СтраныМира/ManagerModule.bsl @@ -0,0 +1,481 @@ +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ +// + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + Если Не СтандартнаяОбработка Тогда + // Обрабатывается в другом месте + Возврат; + + ИначеЕсли Не Параметры.Свойство("РазрешитьДанныеКлассификатора") Тогда + // Поведение по умолчанию, подбор только справочника + Возврат; + + ИначеЕсли Истина<>Параметры.РазрешитьДанныеКлассификатора Тогда + // Подбор классификатора отключен, поведение по умолчанию + Возврат; + + ИначеЕсли Не ЕстьПравоДобавления() Тогда + // Нет прав на добавление страны мира, поведение по умолчанию + Возврат; + + КонецЕсли; + + // Будем имитировать поведение платформы - поиск по всем доступным полям поиска с формированием подобного списка + + // Подразумеваем, что поля справочника и классификатора совпадают, за исключением отсутствующего в классификаторе поля "Ссылка" + Запрос = Новый Запрос; + Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; + + ПрефиксПараметраОтбора = "ПараметрыОтбора"; + + // Общий отбор по параметрам + ШаблонОтбора = "ИСТИНА"; + Для Каждого КлючЗначение Из Параметры.Отбор Цикл + ЗначениеПоля = КлючЗначение.Значение; + ИмяПоля = КлючЗначение.Ключ; + ИмяПараметра = ПрефиксПараметраОтбора + ИмяПоля; + + Если ТипЗнч(ЗначениеПоля)=Тип("Массив") Тогда + ШаблонОтбора = ШаблонОтбора + " И %1." + ИмяПоля + " В (&" + ИмяПараметра + ")"; + Иначе + ШаблонОтбора = ШаблонОтбора + " И %1." + ИмяПоля + " = &" + ИмяПараметра; + КонецЕсли; + + Запрос.УстановитьПараметр(ИмяПараметра, КлючЗначение.Значение); + КонецЦикла; + + // Дополнительные отборы + Если Параметры.Свойство("ВыборГруппИЭлементов") Тогда + Если Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы Тогда + ШаблонОтбора = ШаблонОтбора + " И %1.ЭтоГруппа"; + + ИначеЕсли Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы Тогда + ШаблонОтбора = ШаблонОтбора + " И (НЕ %1.ЭтоГруппа)"; + + КонецЕсли; + КонецЕсли; + + // Источники данных + Если (Параметры.Свойство("ТолькоДанныеКлассификатора") И Параметры.ТолькоДанныеКлассификатора) Тогда + // Запрос только по классификатору + ШаблонЗапроса = " + |ВЫБРАТЬ ПЕРВЫЕ 50 + | NULL КАК Ссылка, + | Классификатор.Код КАК Код, + | Классификатор.Наименование КАК Наименование, + | ЛОЖЬ КАК ПометкаУдаления, + | %2 КАК Представление + |ИЗ + | Классификатор КАК Классификатор + |ГДЕ + | Классификатор.%1 ПОДОБНО &СтрокаПоиска + | И ( + | " + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОтбора, "Классификатор") + " + | ) + |УПОРЯДОЧИТЬ ПО + | Классификатор.%1 + |"; + Иначе + // Запрос и по справочнику и по классификатору + ШаблонЗапроса = " + |ВЫБРАТЬ ПЕРВЫЕ 50 + | СтраныМира.Ссылка КАК Ссылка, + | ЕСТЬNULL(СтраныМира.Код, Классификатор.Код) КАК Код, + | ЕСТЬNULL(СтраныМира.Наименование, Классификатор.Наименование) КАК Наименование, + | ЕСТЬNULL(СтраныМира.ПометкаУдаления, ЛОЖЬ) КАК ПометкаУдаления, + | + | ВЫБОР КОГДА СтраныМира.Ссылка ЕСТЬ NULL ТОГДА + | %2 + | ИНАЧЕ + | %3 + | КОНЕЦ КАК Представление + | + |ИЗ + | Справочник.СтраныМира КАК СтраныМира + |ПОЛНОЕ СОЕДИНЕНИЕ + | Классификатор + |ПО + | Классификатор.Код = СтраныМира.Код + | И Классификатор.Наименование = СтраныМира.Наименование + |ГДЕ + | (СтраныМира.%1 ПОДОБНО &СтрокаПоиска ИЛИ Классификатор.%1 ПОДОБНО &СтрокаПоиска) + | И (" + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОтбора, "Классификатор") + ") + | И (" + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОтбора, "СтраныМира") + ") + | + |УПОРЯДОЧИТЬ ПО + | ЕСТЬNULL(СтраныМира.%1, Классификатор.%1) + |"; + КонецЕсли; + + ИменаПолей = ПоляПоиска(); + + // Код + Наименование - ключевые поля соответствия справочника классифкатору. Их обрабатываем всегда + ИменаПолейСтрокой = "," + СтрЗаменить(ИменаПолей.ИменаПолейСтрокой, " ", ""); + ИменаПолейСтрокой = СтрЗаменить(ИменаПолейСтрокой, ",Код", ""); + ИменаПолейСтрокой = СтрЗаменить(ИменаПолейСтрокой, ",Наименование", ""); + + Запрос.Текст = " + |ВЫБРАТЬ + | Код, Наименование " + ИменаПолейСтрокой + " + |ПОМЕСТИТЬ + | Классификатор + |ИЗ + | &Классификатор КАК Классификатор + |ИНДЕКСИРОВАТЬ ПО + | Код, Наименование + | " + ИменаПолейСтрокой + " + |"; + Запрос.УстановитьПараметр("Классификатор", ТаблицаКлассификатора()); + Запрос.Выполнить(); + Запрос.УстановитьПараметр("СтрокаПоиска", ЭкранироватьСимволыПодобия(Параметры.СтрокаПоиска) + "%"); + + Для Каждого ДанныеПоля Из ИменаПолей.СписокПолей Цикл + Запрос.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗапроса, + ДанныеПоля.Имя, + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ДанныеПоля.ШаблонПредставления, "Классификатор"), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ДанныеПоля.ШаблонПредставления, "СтраныМира"), + ); + + Результат = Запрос.Выполнить(); + Если Не Результат.Пустой() Тогда + ДанныеВыбора = Новый СписокЗначений; + СтандартнаяОбработка = Ложь; + + Выборка = Результат.Выбрать(); + Пока Выборка.Следующий() Цикл + Если ЗначениеЗаполнено(Выборка.Ссылка) Тогда + // Данные справочника + ЭлементВыбора = Выборка.Ссылка; + Иначе + // Данные классификатора + РезультатВыбора = Новый Структура("Код, Наименование", + Выборка.Код, Выборка.Наименование + ); + + ЭлементВыбора = Новый Структура("Значение, ПометкаУдаления, Предупреждение", + РезультатВыбора, Выборка.ПометкаУдаления, Неопределено, + ); + КонецЕсли; + + ДанныеВыбора.Добавить(ЭлементВыбора, Выборка.Представление); + КонецЦикла; + + Прервать; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС +// + +// Определяет данные страны по справочнику стран или классификатору ОКСМ +// +// Параметры: +// КодСтраны - строка или число с кодом ОКСМ страны. Если не указано, то поиск по коду не производится +// Наименование - наименование страны. Если не указано, то поиск по наименованию не производится +// +// Возвращаемое значение: +// Структура с полями "Ссылка", "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3", +// Если страна не найдена в справочнике, но найдена в классфикаторе, то поле "Ссылка" не заполнено +// +// Если страна не найдена ни в адресе, ни в классификаторе, то возвращается значение Неопределено +// +Функция ДанныеСтраныМира(Знач КодСтраны=Неопределено, Знач Наименование=Неопределено) Экспорт + Если КодСтраны=Неопределено И Наименование=Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + НормализованыйКод = КодСтраныМира(КодСтраны); + Если КодСтраны=Неопределено Тогда + УсловиеПоиска = "ИСТИНА"; + ФильтрКлассификатора = Новый Структура; + Иначе + УсловиеПоиска = "Код=" + ЗакавычитьСтроку(НормализованыйКод); + ФильтрКлассификатора = Новый Структура("Код", НормализованыйКод); + КонецЕсли; + + Если Наименование<>Неопределено Тогда + УсловиеПоиска = УсловиеПоиска + " И Наименование=" + ЗакавычитьСтроку(Наименование); + ФильтрКлассификатора.Вставить("Наименование", Наименование); + КонецЕсли; + + Результат = Новый Структура("Ссылка, Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3"); + + Запрос = Новый Запрос(" + |ВЫБРАТЬ ПЕРВЫЕ 1 + | Ссылка, Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3 + |ИЗ + | Справочник.СтраныМира + |ГДЕ + | " + УсловиеПоиска + " + |УПОРЯДОЧИТЬ ПО + | Наименование + |"); + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + ЗаполнитьЗначенияСвойств(Результат, Выборка); + + Иначе + ДанныеКлассификатора = ТаблицаКлассификатора(); + СтрокиДанных = ДанныеКлассификатора.НайтиСтроки(ФильтрКлассификатора); + Если СтрокиДанных.Количество()=0 Тогда + Результат = Неопределено + Иначе + ЗаполнитьЗначенияСвойств(Результат, СтрокиДанных[0]); + КонецЕсли; + + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Определяет данные страны по классификатору ОКСМ +// +// Параметры: +// КодСтраны - строка кода страны или числовой код +// +// Возвращаемое значение: +// - в случае успеха - структура с полями "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3" +// - в случае отсуствия страны в классфикаторе - Неопределено +// +Функция ДанныеКлассификатораСтранМираПоКоду(Знач КодСтраны) Экспорт + + ДанныеКлассификатора = ТаблицаКлассификатора(); + СтрокаДанных = ДанныеКлассификатора.Найти(КодСтраныМира(КодСтраны), "Код"); + Если СтрокаДанных=Неопределено Тогда + Результат = Неопределено; + Иначе + Результат = Новый Структура("Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3"); + ЗаполнитьЗначенияСвойств(Результат, СтрокаДанных); + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Определяет данные страны по классификатору ОКСМ +// +// Параметры: +// Наименование - строка наименования страны +// +// Возвращаемое значение: +// - в случае успеха - структура с полями "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3" +// - в случае отсуствия страны в классфикаторе - Неопределено +// +Функция ДанныеКлассификатораСтранМираПоНаименованию(Знач Наименование) Экспорт + ДанныеКлассификатора = ТаблицаКлассификатора(); + СтрокаДанных = ДанныеКлассификатора.Найти(Наименование, "Наименование"); + Если СтрокаДанных=Неопределено Тогда + Результат = Неопределено; + Иначе + Результат = Новый Структура("Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3"); + ЗаполнитьЗначенияСвойств(Результат, СтрокаДанных); + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Обновляет справочник стран мира по данным макета - классификатора +// Идентификация существующих элементов в справочнике выполняется по полю Код. +// +// Параметры: +// Добавлять - необязательный флаг. Если Истина, то добавляются страны, которые есть в классфикаторе, +// но отсутствуют в справочнике стран мира. +// +Процедура ОбновитьСтраныМираПоКлассификатору(Знач Добавлять=Ложь) Экспорт + ВсеОшибки = ""; + + Фильтр = Новый Структура("Код"); + + // Сравнивать в запросе нельзя из-за возможной регистронезависимости базы данных + Для Каждого СтрокаКлассификатора Из ТаблицаКлассификатора() Цикл + Фильтр.Код = СтрокаКлассификатора.Код; + Выборка = Справочники.СтраныМира.Выбрать(,,Фильтр); + СтранаНайдена = Выборка.Следующий(); + Если Не СтранаНайдена И Добавлять Тогда + // Добавление страны + Страна = Справочники.СтраныМира.СоздатьЭлемент(); + ИначеЕсли СтранаНайдена И ( + Выборка.Наименование<>СтрокаКлассификатора.Наименование + Или Выборка.КодАльфа2<>СтрокаКлассификатора.КодАльфа2 + Или Выборка.КодАльфа3<>СтрокаКлассификатора.КодАльфа3 + Или Выборка.НаименованиеПолное<>СтрокаКлассификатора.НаименованиеПолное + ) Тогда + // Изменение страны + Страна = Выборка.ПолучитьОбъект(); + Иначе + Продолжить; + КонецЕсли; + + НачатьТранзакцию(); + Попытка + Если Не Страна.ЭтоНовый() Тогда + ЗаблокироватьДанныеДляРедактирования(Страна.Ссылка); + КонецЕсли; + ЗаполнитьЗначенияСвойств(Страна, СтрокаКлассификатора, "Код, Наименование, КодАльфа2, КодАльфа3, НаименованиеПолное"); + Страна.ДополнительныеСвойства.Вставить("НеПроверятьУникальность"); + Страна.Записать(); + ЗафиксироватьТранзакцию(); + Исключение + Инфо = ИнформацияОбОшибке(); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Ошибка записи страны мира %1 (код %2) при обновлении классификатора, %3'"), + Выборка.Код, Выборка.Наименование, КраткоеПредставлениеОшибки(Инфо)); + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка,,, + ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(Инфо)); + ВсеОшибки = ВсеОшибки + Символы.ПС + ТекстОшибки; + ОтменитьТранзакцию(); + КонецПопытки; + + КонецЦикла; + + Если Не ПустаяСтрока(ВсеОшибки) Тогда + ВызватьИсключение СокрЛП(ВсеОшибки); + КонецЕсли; +КонецПроцедуры + +// Возвращает таблицу значений с данными ОКСМ +// +// Колонки: +// Код - Строка(3, Переменная), +// Наименование - Строка(60, Переменная), +// НаименованиеПолное - Строка(100, Переменная), +// КодАльфа2 - Строка(2, Переменная), +// КодАльфа3 - Строка(3, Переменная) +// Индексы: +// Код, +// Наименование +// +Функция ТаблицаКлассификатора() Экспорт + Макет = Справочники.СтраныМира.ПолучитьМакет("Классификатор"); + + Чтение = Новый ЧтениеXML; + Чтение.УстановитьСтроку(Макет.ПолучитьТекст()); + + Возврат СериализаторXDTO.ПрочитатьXML(Чтение); +КонецФункции + +// Возвращает поля поиска в порядке предпочтения для справочника стран мира +// +// Результат - массив структур с полями: +// - Имя - имя реквизита поиска +// - ШаблонПредставления - шаблон для формирования значения представления по именам реквизитов, +// например: "%1.Наменование (%1.Код)". Здесь "Наименование" и "Код" - имена реквизитов, +// "%1" - заполнитель для передачи псевдонима таблицы +// +Функция ПоляПоиска() Экспорт + Результат = Новый Массив; + СписокПолей = Справочники.СтраныМира.ПустаяСсылка().Метаданные().ВводПоСтроке; + ГраницаПолей = СписокПолей.Количество() - 1; + ВсеИменаСтрокой = ""; + + ПредставлениеРазделителя = ", "; + РазделительПредставлений = " + """ + ПредставлениеРазделителя + """ + "; + + Для Индекс=0 По ГраницаПолей Цикл + ИмяПоля = СписокПолей[Индекс].Имя; + ВсеИменаСтрокой = ВсеИменаСтрокой + "," + ИмяПоля; + + ШаблонПредставления = "%1." + ИмяПоля; + + ОстальныеПоля = ""; + Для Позиция=0 По ГраницаПолей Цикл + Если Позиция<>Индекс Тогда + ОстальныеПоля = ОстальныеПоля + РазделительПредставлений + СписокПолей[Позиция].Имя; + КонецЕсли; + КонецЦикла; + Если Не ПустаяСтрока(ОстальныеПоля) Тогда + ШаблонПредставления = ШаблонПредставления + + " + "" ("" + " + + "%1." + Сред(ОстальныеПоля, СтрДлина(РазделительПредставлений) + 1) + + " + "")"""; + КонецЕсли; + + Результат.Добавить( + Новый Структура("Имя, ШаблонПредставления", ИмяПоля, ШаблонПредставления) + ); + КонецЦикла; + + Возврат Новый Структура("СписокПолей, ИменаПолейСтрокой", Результат, Сред(ВсеИменаСтрокой, 2)); +КонецФункции + +// Создает или возвращает существующую ссылку по данным классификатора +// +// Параметры: +// Отбор - объект с полем Код для поиска страны в классфикаторе +// Данные - необязательная структура для заполнения оставшихся полей создаваемого объекта. +// +// Возвращаемое значение - ссылка на созданый элемент +// +Функция СсылкаПоДаннымКлассификатора(Знач Отбор, Знач ДополнительныеДанные=Неопределено) Экспорт + + // Убеждаемся, что страна есть в классификаторе + ДанныеПоиска = ДанныеКлассификатораСтранМираПоКоду(Отбор.Код); + Если ДанныеПоиска=Неопределено Тогда + ВызватьИсключение НСтр("ru='Некорректный код страны мира для поиска в классификаторе'"); + КонецЕсли; + + // Проверяем на существование в справочнике по данным классификатора + ДанныеПоиска = ДанныеСтраныМира(ДанныеПоиска.Код, ДанныеПоиска.Наименование); + Результат = ДанныеПоиска.Ссылка; + Если Не ЗначениеЗаполнено(Результат) Тогда + ОбъектСтраны = Справочники.СтраныМира.СоздатьЭлемент(); + ЗаполнитьЗначенияСвойств(ОбъектСтраны, ДанныеПоиска); + Если ДополнительныеДанные<>Неопределено Тогда + ЗаполнитьЗначенияСвойств(ОбъектСтраны, ДополнительныеДанные); + КонецЕсли; + ОбъектСтраны.Записать(); + Результат = ОбъектСтраны.Ссылка; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Возвращает флаг возможности добавления и изменения элементов +// +Функция ЕстьПравоДобавления() Экспорт + Возврат ПравоДоступа("Добавление", Справочники.СтраныМира.ПустаяСсылка().Метаданные()); +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +// Приводит код страны к единому виду - строка длиной три символа +// +Функция КодСтраныМира(Знач КодСтраны) + + Если ТипЗнч(КодСтраны)=Тип("Число") Тогда + Возврат Формат(КодСтраны, "ЧЦ=3; ЧН=; ЧВН=; ЧГ="); + КонецЕсли; + + Возврат Прав("000" + КодСтраны, 3); +КонецФункции + +// Возвращает строку в кавычках +// +Функция ЗакавычитьСтроку(Знач Строка) + Возврат """" + СтрЗаменить(Строка, """", """""") + """"; +КонецФункции + +// Экранирует символы для использования в функции запроса ПОДОБНО +// +Функция ЭкранироватьСимволыПодобия(Знач Текст, Знач СпецСимвол = "\") + Результат = Текст; + СимволыПодобия = "%_[]^" + СпецСимвол; + + Для Позиция=1 По СтрДлина(СимволыПодобия) Цикл + ТекущийСимвол = Сред(СимволыПодобия, Позиция, 1); + Результат = СтрЗаменить(Результат, ТекущийСимвол, СпецСимвол + ТекущийСимвол); + КонецЦикла; + + Возврат Результат; +КонецФункции + +#КонецЕсли diff --git a/SSL/src/Catalogs/СтраныМира/ObjectModule.bsl b/SSL/src/Catalogs/СтраныМира/ObjectModule.bsl new file mode 100644 index 000000000..083780aaa --- /dev/null +++ b/SSL/src/Catalogs/СтраныМира/ObjectModule.bsl @@ -0,0 +1,86 @@ +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС +// + +// Контролирует уникальность элемента в базе +// Возвращает структуру - описание элемента, существующего в базе +// +Функция СуществующийЭлемент() Экспорт + Результат = Неопределено; + + // Нецифровые коды пропускаем + ТипЧисло = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(3, 0, ДопустимыйЗнак.Неотрицательный)); + Если Код="0" Или Код="00" Или Код="000" Тогда + КодПоиска = "000"; + Иначе + КодПоиска = Формат(ТипЧисло.ПривестиЗначение(Код), "ЧЦ=3; ЧДЦ=2; ЧН=; ЧВН="); + Если КодПоиска="000" Тогда + Возврат Результат; // Не число + КонецЕсли; + КонецЕсли; + + Запрос = Новый Запрос(" + |ВЫБРАТЬ ПЕРВЫЕ 1 + | Код КАК Код, + | Наименование КАК Наименование, + | НаименованиеПолное КАК НаименованиеПолное, + | КодАльфа2 КАК КодАльфа2, + | КодАльфа3 КАК КодАльфа3, + | Ссылка КАК Ссылка + |ИЗ + | Справочник.СтраныМира + |ГДЕ + | Код=&Код + | И Ссылка<>&Ссылка + |"); + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.УстановитьПараметр("Код", КодПоиска); + + РезультатЗапроса = Запрос.Выполнить(); + Выборка = РезультатЗапроса.Выбрать(); + Если Выборка.Следующий() Тогда + Результат = Новый Структура("ОписаниеОшибки", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='С кодом %1 уже существует страна %2. Измените код или используйте уже существующие данные.'"), + Код, Выборка.Наименование)); + + Для Каждого Поле Из РезультатЗапроса.Колонки Цикл + Результат.Вставить(Поле.Имя, Выборка[Поле.Имя]); + КонецЦикла; + КонецЕсли; + + Возврат Результат; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ +// + +Процедура ПередЗаписью(Отказ) + Если ОбменДанными.Загрузка Или ЭтотОбъект.ДополнительныеСвойства.Свойство("НеПроверятьУникальность") Тогда + Возврат; + КонецЕсли; + + Если Не ПроверитьЗаполнение() Тогда + Отказ = Истина; + КонецЕсли; +КонецПроцедуры + +Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) + + Существующий = СуществующийЭлемент(); + Если Существующий<>Неопределено Тогда + Отказ = Истина; + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Существующий.ОписаниеОшибки,, "Объект.Наименование"); + КонецЕсли; + +КонецПроцедуры + +Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) + Если ДанныеЗаполнения<>Неопределено Тогда + ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения); + КонецЕсли; +КонецПроцедуры + +#КонецЕсли diff --git a/SSL/src/Catalogs/СтраныМира/Templates/Классификатор/Template.txt b/SSL/src/Catalogs/СтраныМира/Templates/Классификатор/Template.txt index 499f3ad31..3180d7663 100644 --- a/SSL/src/Catalogs/СтраныМира/Templates/Классификатор/Template.txt +++ b/SSL/src/Catalogs/СтраныМира/Templates/Классификатор/Template.txt @@ -54,6 +54,20 @@ + + + Неактуальный + + xs:boolean + + + + + Код + + + Наименование + АБХАЗИЯ diff --git a/SSL/src/Catalogs/СтраныМира/СтраныМира.mdo b/SSL/src/Catalogs/СтраныМира/СтраныМира.mdo index 2efbde24a..571b32385 100644 --- a/SSL/src/Catalogs/СтраныМира/СтраныМира.mdo +++ b/SSL/src/Catalogs/СтраныМира/СтраныМира.mdo @@ -59,6 +59,7 @@ Use Owner + true ShowError Use @@ -68,6 +69,7 @@ Use Parent + true Use @@ -103,8 +105,11 @@ ru Числовой код страны по ОКСМ - - Use + true + + -- + + ShowError @@ -127,7 +132,6 @@ 60 String Variable - true AsDescription @@ -142,7 +146,7 @@ BothWays Catalog.СтраныМира.Form.ФормаЭлемента Catalog.СтраныМира.Form.ФормаСписка - Catalog.СтраныМира.Form.ФормаВыбора + Catalog.СтраныМира.Form.ФормаСписка НаименованиеПолное @@ -227,12 +231,17 @@ PersonalComputer MobileDevice - - ФормаВыбора + + Классификатор ru - Форма выбора + Классификатор + + + ru + + PersonalComputer MobileDevice diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/НастройкаРасписанияОбменовДанными/Form.form b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/НастройкаРасписанияОбменовДанными/Form.form index 05bfcb306..a07c2f101 100644 --- a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/НастройкаРасписанияОбменовДанными/Form.form +++ b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/НастройкаРасписанияОбменовДанными/Form.form @@ -18,7 +18,7 @@ 23 <key>ru</key> - <value>Загрузка</value> + <value>Выполняется получение данных</value> true true @@ -35,7 +35,7 @@ ФлагИспользованияЗагрузкиРасширеннаяПодсказка - 60 + 62 Label true true @@ -63,7 +63,7 @@ 21 <key>ru</key> - <value>Выгрузка</value> + <value>Выполняется отправка данных</value> true true @@ -80,7 +80,7 @@ ФлагИспользованияВыгрузкиРасширеннаяПодсказка - 62 + 64 Label true true @@ -106,10 +106,6 @@ Наименование 4 - - <key>ru</key> - <value>Сценарий обмена данными</value> - true true @@ -120,7 +116,7 @@ НаименованиеРасширеннаяПодсказка - 64 + 66 Label true true @@ -155,10 +151,10 @@
          СписокСтрокаПоиска - 51 + 53 СписокСтрокаПоискаРасширеннаяПодсказка - 53 + 55 Label true true @@ -168,7 +164,7 @@ СписокСтрокаПоискаКонтекстноеМеню - 52 + 54 true Список @@ -178,10 +174,10 @@ СписокСостояниеПросмотра - 54 + 56 СписокСостояниеПросмотраРасширеннаяПодсказка - 56 + 58 Label true true @@ -191,7 +187,7 @@ СписокСостояниеПросмотраКонтекстноеМеню - 55 + 57 true ViewStatusAddition @@ -202,10 +198,10 @@ СписокУправлениеПоиском - 57 + 59 СписокУправлениеПоискомРасширеннаяПодсказка - 59 + 61 Label true true @@ -215,7 +211,7 @@ СписокУправлениеПоискомКонтекстноеМеню - 58 + 60 true SearchControlAddition @@ -226,7 +222,7 @@ СписокРасширеннаяПодсказка - 50 + 52 Label true true @@ -250,7 +246,7 @@ СписокКонтекстноеМенюВключитьОтключитьЗагрузкуРасширеннаяПодсказка - 44 + 46 Label true true @@ -276,7 +272,7 @@ ФормаВключитьОтключитьВыгрузкуРасширеннаяПодсказка - 45 + 47 Label true true @@ -307,7 +303,7 @@ ГруппаКнопокВключенияЗагрузкиВыгрузкиДанныхРасширеннаяПодсказка - 43 + 45 Label true true @@ -330,7 +326,7 @@ СписокКонтекстноеМенюВключитьОтключитьРегламентноеЗаданиеРасширеннаяПодсказка - 47 + 49 Label true true @@ -356,7 +352,7 @@ СписокКонтекстноеМенюОткрытьСценарийОбменаДаннымиРасширеннаяПодсказка - 48 + 50 Label true true @@ -387,7 +383,7 @@ СписокКонтекстноеМенюГруппаКнопокРасширеннаяПодсказка - 46 + 48 Label true true @@ -407,7 +403,7 @@ СписокКонтекстноеМенюВыполнитьСценарийРасширеннаяПодсказка - 49 + 51 Label true true @@ -431,6 +427,7 @@ true true MultiRow + Row
          true
          1 1 @@ -438,7 +435,7 @@ AutoUse true true - false + false Auto Auto ExpandTopLevel @@ -463,6 +460,51 @@ true + + Комментарий + 34 + true + true + + true + + + Items.Список.CurrentData.Комментарий + + + КомментарийРасширеннаяПодсказка + 76 + Label + true + true + + Left + + + + КомментарийКонтекстноеМеню + 35 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + + Style.ПоясняющийТекст + + Normal + + ФормаКоманднаяПанель -1 @@ -483,7 +525,7 @@ ФормаВключитьОтключитьЗагрузкуВыгрузкуРасширеннаяПодсказка - 35 + 37 Label true true @@ -513,7 +555,7 @@ ФормаВключитьОтключитьЗагрузкуРасширеннаяПодсказка - 36 + 38 Label true true @@ -543,7 +585,7 @@ ФормаВключитьОтключитьВыгрузку1РасширеннаяПодсказка - 37 + 39 Label true true @@ -574,7 +616,7 @@ ВключитьОтключитьВыгрузкуЗагрузкуРасширеннаяПодсказка - 34 + 36 Label true true @@ -598,7 +640,7 @@ СоздатьРасширеннаяПодсказка - 38 + 40 Label true true @@ -624,7 +666,7 @@ ИзменитьСценарийОбменаДаннымиРасширеннаяПодсказка - 39 + 41 Label true true @@ -653,7 +695,7 @@ ФормаВключитьОтключитьРегламентноеЗаданиеРасширеннаяПодсказка - 41 + 43 Label true true @@ -684,7 +726,7 @@ ГруппаКнопокРасширеннаяПодсказка - 40 + 42 Label true true @@ -704,7 +746,7 @@ ФормаВыполнитьСценарийРасширеннаяПодсказка - 42 + 44 Label true true @@ -779,45 +821,48 @@ СценарииОбменовДанными.Ссылка, СценарииОбменовДанными.ИспользоватьРегламентноеЗадание, СценарииОбменовДанными.Наименование, - ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользования, Ложь) КАК ФлагИспользования, - ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияЗагрузки, Ложь) КАК ФлагИспользованияЗагрузки, - ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияВыгрузки, Ложь) КАК ФлагИспользованияВыгрузки -ИЗ + ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользования, ЛОЖЬ) КАК ФлагИспользования, + ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияЗагрузки, ЛОЖЬ) КАК ФлагИспользованияЗагрузки, + ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияВыгрузки, ЛОЖЬ) КАК ФлагИспользованияВыгрузки, + СценарииОбменовДанными.Комментарий +ИЗ Справочник.СценарииОбменовДанными КАК СценарииОбменовДанными -ЛЕВОЕ СОЕДИНЕНИЕ - (ВЫБРАТЬ - СценарииОбменовДаннымиНастройкиОбмена.Ссылка, - СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание, - СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование, - МАКСИМУМ(ВЫБОР КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы - ТОГДА Истина - ИНАЧЕ Ложь - КОНЕЦ) КАК ФлагИспользования, - МАКСИМУМ(ВЫБОР КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы - И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ЗагрузкаДанных) - ТОГДА Истина - ИНАЧЕ Ложь - КОНЕЦ) КАК ФлагИспользованияЗагрузки, - МАКСИМУМ(ВЫБОР КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы - И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ВыгрузкаДанных) - ТОГДА Истина - ИНАЧЕ Ложь - КОНЕЦ) КАК ФлагИспользованияВыгрузки - ИЗ - Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена - ГДЕ - НЕ СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ПометкаУдаления - СГРУППИРОВАТЬ ПО - СценарииОбменовДаннымиНастройкиОбмена.Ссылка, - СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание, - СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование - ) КАК ВложенныйЗапрос -ПО ВложенныйЗапрос.Ссылка = СценарииОбменовДанными.Ссылка + ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ + СценарииОбменовДаннымиНастройкиОбмена.Ссылка КАК Ссылка, + СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание КАК ИспользоватьРегламентноеЗадание, + СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование КАК Наименование, + МАКСИМУМ(ВЫБОР + КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ) КАК ФлагИспользования, + МАКСИМУМ(ВЫБОР + КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы + И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ЗагрузкаДанных) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ) КАК ФлагИспользованияЗагрузки, + МАКСИМУМ(ВЫБОР + КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы + И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ВыгрузкаДанных) + ТОГДА ИСТИНА + ИНАЧЕ ЛОЖЬ + КОНЕЦ) КАК ФлагИспользованияВыгрузки + ИЗ + Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена + ГДЕ + НЕ СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ПометкаУдаления + + СГРУППИРОВАТЬ ПО + СценарииОбменовДаннымиНастройкиОбмена.Ссылка, + СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание, + СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование) КАК ВложенныйЗапрос + ПО (ВложенныйЗапрос.Ссылка = СценарииОбменовДанными.Ссылка) ГДЕ НЕ СценарииОбменовДанными.ПометкаУдаления -УПОРЯДОЧИТЬ ПО - СценарииОбменовДанными.Наименование + Catalog.СценарииОбменовДанными + true true true true @@ -904,12 +949,12 @@ ВключитьОтключитьВыгрузку <key>ru</key> - <value>Включить/отключить выгрузку</value> + <value>Включить/отключить отправку данных</value> 5 ru - Включить/отключить выгрузку данных по выбранному сценарию + Включить/отключить отправку данных в другую базу true @@ -926,12 +971,12 @@ ВключитьОтключитьЗагрузку <key>ru</key> - <value>Включить/отключить загрузку</value> + <value>Включить/отключить получение данных</value> 6 ru - Включить/отключить загрузку данных по выбранному сценарию + Включить/отключить получение данных из другой базы true @@ -948,12 +993,12 @@ ВключитьОтключитьЗагрузкуВыгрузку <key>ru</key> - <value>Включить отключить загрузку выгрузку</value> + <value>Включить или отключить получение и отправку данных</value> 4 ru - Включить или отключить загрузку и выгрузку данных + Включить или отключить получение и отправку данных true diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/НастройкаРасписанияОбменовДанными/Module.bsl b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/НастройкаРасписанияОбменовДанными/Module.bsl index 3c843250a..4292de159 100644 --- a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/НастройкаРасписанияОбменовДанными/Module.bsl +++ b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/НастройкаРасписанияОбменовДанными/Module.bsl @@ -11,7 +11,7 @@ Список.Параметры.Элементы[0].Значение = Параметры.УзелИнформационнойБазы; Список.Параметры.Элементы[0].Использование = Истина; - Заголовок = НСтр("ru = 'Настройка сценариев обменов данными для: [УзелИнформационнойБазы]'"); + Заголовок = НСтр("ru = 'Сценарии синхронизации данных для: [УзелИнформационнойБазы]'"); Заголовок = СтрЗаменить(Заголовок, "[УзелИнформационнойБазы]", Строка(Параметры.УзелИнформационнойБазы)); КонецПроцедуры @@ -63,7 +63,7 @@ ПараметрыФормы = Новый Структура("УзелИнформационнойБазы", Параметры.УзелИнформационнойБазы); - ОткрытьФормуМодально("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); + ОткрытьФорму("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -79,7 +79,7 @@ ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Ключ", ТекущиеДанные.Ссылка); - ОткрытьФормуМодально("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); + ОткрытьФорму("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); КонецПроцедуры diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Form.form index d4822ecd7..264db8732 100644 --- a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Form.form @@ -113,7 +113,7 @@ 24 <key>ru</key> - <value>Использовать расписание</value> + <value>Автоматически по расписанию:</value> true true @@ -205,7 +205,6 @@ UsualGroup - Vertical Auto true true @@ -479,6 +478,10 @@ НастройкиОбменаКоличествоЭлементовВТранзакции 118 + + <key>ru</key> + <value>Элементов в транзакции</value> + true true @@ -669,6 +672,7 @@ true true + 100 true true true @@ -761,8 +765,14 @@ Left true + + StartChoice + КомментарийНачалоВыбора + true + 2 true + true true true true diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Module.bsl index 1c13f7511..cbaedf0cd 100644 --- a/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/СценарииОбменовДанными/Forms/ФормаЭлемента/Module.bsl @@ -99,6 +99,14 @@ КонецПроцедуры +&НаКлиенте +Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОбщегоНазначенияКлиент.ОткрытьФормуРедактированияКомментария(Элемент.ТекстРедактирования, + Объект.Комментарий, Модифицированность); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ НастройкиОбмена @@ -228,15 +236,14 @@ Процедура ВыполнитьОбменДаннымиНаКлиенте() Если НомерОбрабатываемойСтроки > КоличествоСтрок Тогда // выход из рекурсии - ВыводитьПрогрессор = (КоличествоСтрок > 1); - Состояние(НСтр("ru = 'Данные синхронизированы.'"), ?(ВыводитьПрогрессор, 100, Неопределено)); + ВыводитьСостояние = (КоличествоСтрок > 1); + Состояние(НСтр("ru = 'Данные синхронизированы.'"), ?(ВыводитьСостояние, 100, Неопределено)); Возврат; // выходим КонецЕсли; ТекущиеДанные = Объект.НастройкиОбмена[НомерОбрабатываемойСтроки - 1]; - // значение прогрессора - ВыводитьПрогрессор = (КоличествоСтрок > 1); + ВыводитьСостояние = (КоличествоСтрок > 1); СтрокаСообщения = НСтр("ru = 'Выполняется %1 для %2'"); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, @@ -244,7 +251,7 @@ Строка(ТекущиеДанные.УзелИнформационнойБазы)); // Прогресс = Окр(100 * (НомерОбрабатываемойСтроки -1) / ?(КоличествоСтрок = 0, 1, КоличествоСтрок)); - Состояние(СтрокаСообщения, ?(ВыводитьПрогрессор, Прогресс, Неопределено)); + Состояние(СтрокаСообщения, ?(ВыводитьСостояние, Прогресс, Неопределено)); // запускаем выполнение обмена по строке настройки ВыполнитьОбменДаннымиПоСтрокеНастройки(НомерОбрабатываемойСтроки); @@ -333,3 +340,4 @@ Возврат ОбменДаннымиПовтИсп.ИспользуемыеТранспортыСообщенийОбмена(УзелИнформационнойБазы); КонецФункции + diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/ManagerModule.bsl b/SSL/src/Catalogs/СценарииОбменовДанными/ManagerModule.bsl index a8cc50669..e4550c25e 100644 --- a/SSL/src/Catalogs/СценарииОбменовДанными/ManagerModule.bsl +++ b/SSL/src/Catalogs/СценарииОбменовДанными/ManagerModule.bsl @@ -9,8 +9,7 @@ Наименование = НСтр("ru = 'Автоматическая синхронизация данных с %1'"); Наименование = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Наименование, - ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелИнформационнойБазы, "Наименование") - ); + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелИнформационнойБазы, "Наименование")); ВидТранспортаОбмена = РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы); @@ -439,4 +438,4 @@ КонецПроцедуры -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/ObjectModule.bsl b/SSL/src/Catalogs/СценарииОбменовДанными/ObjectModule.bsl index e66b80c3b..50c98e969 100644 --- a/SSL/src/Catalogs/СценарииОбменовДанными/ObjectModule.bsl +++ b/SSL/src/Catalogs/СценарииОбменовДанными/ObjectModule.bsl @@ -42,6 +42,16 @@ КонецПроцедуры +Процедура ПередУдалением(Отказ) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + УдалитьРегламентноеЗадание(Отказ); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -73,8 +83,4 @@ КонецПроцедуры - - - - -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/Catalogs/СценарииОбменовДанными/СценарииОбменовДанными.mdo b/SSL/src/Catalogs/СценарииОбменовДанными/СценарииОбменовДанными.mdo index 8b16864ec..34a01afc0 100644 --- a/SSL/src/Catalogs/СценарииОбменовДанными/СценарииОбменовДанными.mdo +++ b/SSL/src/Catalogs/СценарииОбменовДанными/СценарииОбменовДанными.mdo @@ -155,6 +155,7 @@ ru Краткое описание сценария. + true diff --git a/SSL/src/Catalogs/ТомаХраненияФайлов/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/ТомаХраненияФайлов/Forms/ФормаЭлемента/Help/ru.html index 60ef406a5..eb01d9315 100644 --- a/SSL/src/Catalogs/ТомаХраненияФайлов/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/ТомаХраненияФайлов/Forms/ФормаЭлемента/Help/ru.html @@ -1,3 +1,3 @@ - +

          Если сервер 1С:Предприятия 8.2 работает под Linux, то путь к тому
           хранения файлов можно указать только локальный, например /home/path.
           Чтобы использовать UNC путь, нужно сделать на него ссылку.  Для этого
           под правами администратора сделайте следующее:
           
           mkdir folder
            --- вместо folder напишите имя каталога. например в каталоге /home
           делаем mkdir shared - создаст каталог shared с полным путем  /home/shared.
           
           
           mount -t cifs //server/share folder -o //domain/user, password=pwd
             - где //server/share - UNC путь к другому компьютеру , folder - путь
           каталога на Linux компьютере, например \home\shared, //domain/user - имя
           домена/пользователя, если нужно, pwd - пароль пользователя (если
           нужно).
           Если имя и пароль не нужны, команда выглядит так:
           mount -t cifs //server/share folder

          После этого в пути к тому указываем folder, например /home/shared

          \ No newline at end of file diff --git a/SSL/src/Catalogs/ТомаХраненияФайлов/Help/ru.html b/SSL/src/Catalogs/ТомаХраненияФайлов/Help/ru.html index ec26a105b..4e522c7e0 100644 --- a/SSL/src/Catalogs/ТомаХраненияФайлов/Help/ru.html +++ b/SSL/src/Catalogs/ТомаХраненияФайлов/Help/ru.html @@ -1,4 +1,4 @@ - +

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

          Для каждого тома необходимо указать его наименование, порядок заполнения и UNC-путь к каталогу тома для сервера под управлением Microsoft Windows и/или путь к каталогу для сервера под управлением Linux.

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

          diff --git a/SSL/src/Catalogs/УдалитьКлассификаторВалют/Help/ru.html b/SSL/src/Catalogs/УдалитьКлассификаторВалют/Help/ru.html deleted file mode 100644 index c501f7940..000000000 --- a/SSL/src/Catalogs/УдалитьКлассификаторВалют/Help/ru.html +++ /dev/null @@ -1,8 +0,0 @@ - -

          Справочник предназначен для хранения списка валют, используемых в организации.

          -

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

          -

          Новую валюту можно добавить в справочник:

          -
          • -
            Из общероссийского классификатора валют по кнопке Подбор из классификатора.
            -
          • -
            Вручную по кнопке Создать.

          Для того чтобы в печатных формах правильно указывалось наименование валюты прописью, необходимо задать параметры прописи валюты. Для валюты задаются параметры прописи целой и дробной части валюты. В случае если дробная часть в печатных формах отображается числом, то можно установить нужное количество разрядов при выводе печатных форм документов. Например, если установлено количество разрядов 1 знак, то сумма по документу будет отображена, как 150,2 евро, а если 2 знака, то – 150,20 евро.

          \ No newline at end of file diff --git a/SSL/src/Catalogs/УдалитьКлассификаторВалют/ObjectModule.bsl b/SSL/src/Catalogs/УдалитьКлассификаторВалют/ObjectModule.bsl deleted file mode 100644 index dc862d04c..000000000 --- a/SSL/src/Catalogs/УдалитьКлассификаторВалют/ObjectModule.bsl +++ /dev/null @@ -1,5 +0,0 @@ -#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда - - - -#КонецЕсли \ No newline at end of file diff --git a/SSL/src/Catalogs/УдалитьКлассификаторВалют/УдалитьКлассификаторВалют.mdo b/SSL/src/Catalogs/УдалитьКлассификаторВалют/УдалитьКлассификаторВалют.mdo deleted file mode 100644 index 0239c199d..000000000 --- a/SSL/src/Catalogs/УдалитьКлассификаторВалют/УдалитьКлассификаторВалют.mdo +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - УдалитьКлассификаторВалют - - ru - (Не используется) Классификатор валют - - true - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Description - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Code - DontUse - - Use - PredefinedDataName - - Use - - - - - Use - Predefined - - Use - - - - - Use - Ref - - Use - - - - - Use - DeletionMark - - Use - - - - - Use - IsFolder - - Use - - - - - Use - Owner - true - - ShowError - Use - - - - - Use - Parent - true - - Use - - - - - Use - Description - - ru - Код символьный - - - ru - Символьный код валюты по общероссийскому классификатору валют - - - ShowError - Use - - - - - Use - Code - - ru - Код числовой - - - ru - Числовой код валюты по общероссийскому классификатору валют - - - - - ShowError - Use - - - - DontUse - - - ru - - - Managed - Use - - ru - Валюта - - 2 - true - 3 - 10 - String - Variable - true - AsDescription - InDialog - true - BothWays - - НаименованиеПолное - - ru - Наименование валюты - - - String - - 50 - - - - ru - Полное наименование валюты - - - - ShowError - - Use - Use - - - ПараметрыПрописиНаРусском - - ru - Параметры прописи на русском - - - String - - 200 - - - - ru - Параметры прописи валюты на русском языке - - - - - Use - Use - - diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ДополнительныеСвойстваУчетнойЗаписи/Help/ru.html b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ДополнительныеСвойстваУчетнойЗаписи/Help/ru.html index 8108ee6d5..8afe9c9cd 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ДополнительныеСвойстваУчетнойЗаписи/Help/ru.html +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ДополнительныеСвойстваУчетнойЗаписи/Help/ru.html @@ -1,4 +1,4 @@ - +

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

          • Общие
            • POP3 аутентификация - настройка аутентификации на сервере POP3 (сервер входящих сообщений)
          • Сервер исходящей почты - настройка аутентификации на сервере SMTP diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ДополнительныеСвойстваУчетнойЗаписи/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ДополнительныеСвойстваУчетнойЗаписи/Module.bsl index a26623b18..e2e2a2028 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ДополнительныеСвойстваУчетнойЗаписи/Module.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ДополнительныеСвойстваУчетнойЗаписи/Module.bsl @@ -230,7 +230,7 @@ КонецФункции -// Процедура устанавливает видимость парметров аутентификации +// Процедура устанавливает видимость параметров аутентификации // для выбора способа аутентификации "ЗаданыПараметры". // &НаКлиенте diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form index 3aa73bea2..55c08899c 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Form.form @@ -855,6 +855,10 @@ + + AfterWrite + ПослеЗаписи + BeforeWriteAtServer ПередЗаписьюНаСервере diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html index 44bd8cbef..fb618689d 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Help/ru.html @@ -1,4 +1,4 @@ - +

            Сведения о пользователе:

          • имя - имя владельца учетной записи, например Иван Сергеевич
          • почтовый адрес - адрес электронной почты учетной записи в формате пользователь@почтовыйсервер
          • Сведения о сервере:

            diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl index f02cdbabb..990500c99 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Forms/ФормаЭлемента/Module.bsl @@ -37,11 +37,10 @@ КонецПроцедуры -// Обрабатывает оповещение, от формы настройки дополнительных свойств учетной записи, -// содержащее некоторые настройки учетной записи. -// &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + // Обрабатывает оповещение, от формы настройки дополнительных свойств учетной записи, + // содержащее некоторые настройки учетной записи. Если ИмяСобытия = "УстановкаДополнительныхПараметровУчетнойЗаписи" И Источник = Объект.Ссылка Тогда Объект.ВремяОжидания = Параметр.ДлительностьОжиданияСервера; @@ -68,6 +67,11 @@ КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + Оповестить("Запись_УчетныеЗаписиЭлектроннойПочты", ПараметрыЗаписи, Объект.Ссылка); +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ @@ -91,9 +95,3 @@ ОткрытьФорму("Справочник.УчетныеЗаписиЭлектроннойПочты.Форма.ДополнительныеСвойстваУчетнойЗаписи", ПараметрыВызова); КонецПроцедуры - - - - - - diff --git a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Help/ru.html b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Help/ru.html index 8e01bd308..22a24ee52 100644 --- a/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Help/ru.html +++ b/SSL/src/Catalogs/УчетныеЗаписиЭлектроннойПочты/Help/ru.html @@ -1,4 +1,4 @@ - +

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

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

            См. также:

            diff --git a/SSL/src/Catalogs/Файлы/Forms/ВопросПриВыходеИзТекстовогоРедактора/Module.bsl b/SSL/src/Catalogs/Файлы/Forms/ВопросПриВыходеИзТекстовогоРедактора/Module.bsl index c274c1860..f1a7d956c 100644 --- a/SSL/src/Catalogs/Файлы/Forms/ВопросПриВыходеИзТекстовогоРедактора/Module.bsl +++ b/SSL/src/Catalogs/Файлы/Forms/ВопросПриВыходеИзТекстовогоРедактора/Module.bsl @@ -3,12 +3,11 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; - ТекстВопроса = Параметры.ТекстВопроса; + Параметры.Свойство("ТекстВопроса", ТекстВопроса); КонецПроцедуры @@ -17,20 +16,20 @@ &НаКлиенте Процедура Вернуться(Команда) - Закрыть("Вернуться"); + ОповеститьОВыборе("Вернуться"); КонецПроцедуры &НаКлиенте Процедура НеСохранять(Команда) - Закрыть("НеСохранять"); + ОповеститьОВыборе("НеСохранять"); КонецПроцедуры &НаКлиенте Процедура СохранитьИЗакончитьРедактирование(Команда) - Закрыть("СохранитьИЗакончитьРедактирование"); + ОповеститьОВыборе("СохранитьИЗакончитьРедактирование"); КонецПроцедуры &НаКлиенте Процедура СохранитьИзменения(Команда) - Закрыть("СохранитьИзменения"); + ОповеститьОВыборе("СохранитьИзменения"); КонецПроцедуры diff --git a/SSL/src/Catalogs/Файлы/Forms/ВопросПриИмпортеФайлов/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ВопросПриИмпортеФайлов/Help/ru.html index 182ab75c5..49dcf675f 100644 --- a/SSL/src/Catalogs/Файлы/Forms/ВопросПриИмпортеФайлов/Help/ru.html +++ b/SSL/src/Catalogs/Файлы/Forms/ВопросПриИмпортеФайлов/Help/ru.html @@ -1 +1 @@ -Предельно допустимый размера файлов можно увеличить в настройках системы.  \ No newline at end of file +Предельно допустимый размера файлов можно увеличить в настройках системы.  \ No newline at end of file diff --git a/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Form.form b/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Form.form index 38dfebd49..60f6c5b25 100644 --- a/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Form.form +++ b/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Form.form @@ -255,7 +255,7 @@ ПриСозданииНаСервере
            25 - DontBlock + LockOwner true true true diff --git a/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Help/ru.html b/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Help/ru.html index 0428f68db..fcf1dd331 100644 --- a/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Help/ru.html +++ b/SSL/src/Catalogs/Файлы/Forms/ВыборКодировки/Help/ru.html @@ -1,4 +1,4 @@ - +

            + 1 + + + + + СписокСостоянияУзловДатаПоследнейУспешнойЗагрузки + 12 + true + true + + true + + + СписокСостоянияУзлов.ПредставлениеДатыПоследнейУспешнойЗагрузки + + + СписокСостоянияУзловДатаПоследнейУспешнойЗагрузкиРасширеннаяПодсказка + 96 + Label + true + true + + Left + + + + СписокСостоянияУзловДатаПоследнейУспешнойЗагрузкиКонтекстноеМеню + 13 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + true true true - - СписокСостоянияУзлов.РезультатПоследнейЗагрузкиДанных - - None + + <key>ru</key> + <value>Группа состояния загрузки</value> + + + ru + Группа состояния загрузки + - СписокСостоянияУзловРезультатПоследнейЗагрузкиДанныхРасширеннаяПодсказка - 86 + ГруппаСостоянияЗагрузкиРасширеннаяПодсказка + 93 Label true true @@ -163,34 +254,16 @@ Left - - СписокСостоянияУзловРезультатПоследнейЗагрузкиДанныхКонтекстноеМеню - 9 - true - - PictureField - Auto - true - Left - true - - true - true - true - true - - CommonPicture.СостояниеОбменаДанными - - - - 1 - + ColumnGroup + + InCell + auto + true СписокСостоянияУзловДатаПоследнейЗагрузки 14 - true true true @@ -200,7 +273,7 @@ СписокСостоянияУзловДатаПоследнейЗагрузкиРасширеннаяПодсказка - 88 + 98 Label true true @@ -233,17 +306,10 @@ true - - <key>ru</key> - <value>Группа состояния загрузки</value> - - - ru - Группа состояния загрузки - + true - ГруппаСостоянияЗагрузкиРасширеннаяПодсказка - 85 + ГруппаЗагрузкиРасширеннаяПодсказка + 92 Label true true @@ -253,69 +319,120 @@ ColumnGroup - InCell + Vertical auto true - - СписокСостоянияУзловДатаПоследнейУспешнойЗагрузки - 12 - true - - true - - - СписокСостоянияУзлов.ПредставлениеДатыПоследнейУспешнойЗагрузки - - - СписокСостоянияУзловДатаПоследнейУспешнойЗагрузкиРасширеннаяПодсказка - 90 - Label - true - true - - Left - - - - СписокСостоянияУзловДатаПоследнейУспешнойЗагрузкиКонтекстноеМеню - 13 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - ГруппаСостоянияВыгрузки - 19 - - СписокСостоянияУзловРезультатПоследнейВыгрузкиДанных - 6 + ГруппаВыгрузки + 51 + + ГруппаСостоянияВыгрузки + 19 + + СписокСостоянияУзловРезультатПоследнейВыгрузкиДанных + 6 + true + true + + true + + + СписокСостоянияУзлов.РезультатПоследнейВыгрузкиДанных + + None + + СписокСостоянияУзловРезультатПоследнейВыгрузкиДанныхРасширеннаяПодсказка + 102 + Label + true + true + + Left + + + + СписокСостоянияУзловРезультатПоследнейВыгрузкиДанныхКонтекстноеМеню + 7 + true + + PictureField + Auto + true + Left + true + + true + true + true + true + + CommonPicture.СостояниеОбменаДанными + + + + 1 + + + + + СписокСостоянияУзловДатаПоследнейУспешнойВыгрузки + 4 + true + true + + true + + + СписокСостоянияУзлов.ПредставлениеДатыПоследнейУспешнойВыгрузки + + + СписокСостоянияУзловДатаПоследнейУспешнойВыгрузкиРасширеннаяПодсказка + 104 + Label + true + true + + Left + + + + СписокСостоянияУзловДатаПоследнейУспешнойВыгрузкиКонтекстноеМеню + 5 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + true true true - - СписокСостоянияУзлов.РезультатПоследнейВыгрузкиДанных - - None + + <key>ru</key> + <value>Группа состояния выгрузки</value> + + + ru + Группа состояния выгрузки + - СписокСостоянияУзловРезультатПоследнейВыгрузкиДанныхРасширеннаяПодсказка - 93 + ГруппаСостоянияВыгрузкиРасширеннаяПодсказка + 101 Label true true @@ -323,34 +440,16 @@ Left - - СписокСостоянияУзловРезультатПоследнейВыгрузкиДанныхКонтекстноеМеню - 7 - true - - PictureField - Auto - true - Left - true - - true - true - true - true - - CommonPicture.СостояниеОбменаДанными - - - - 1 - + ColumnGroup + + InCell + auto + true СписокСостоянияУзловДатаПоследнейВыгрузки 16 - true true true @@ -360,7 +459,7 @@ СписокСостоянияУзловДатаПоследнейВыгрузкиРасширеннаяПодсказка - 95 + 106 Label true true @@ -393,17 +492,10 @@ true - - <key>ru</key> - <value>Группа состояния выгрузки</value> - - - ru - Группа состояния выгрузки - + true - ГруппаСостоянияВыгрузкиРасширеннаяПодсказка - 92 + ГруппаВыгрузкиРасширеннаяПодсказка + 100 Label true true @@ -413,133 +505,14 @@ ColumnGroup - InCell + Vertical auto true - - СписокСостоянияУзловДатаПоследнейУспешнойВыгрузки - 4 - true - - true - - - СписокСостоянияУзлов.ПредставлениеДатыПоследнейУспешнойВыгрузки - - - СписокСостоянияУзловДатаПоследнейУспешнойВыгрузкиРасширеннаяПодсказка - 97 - Label - true - true - - Left - - - - СписокСостоянияУзловДатаПоследнейУспешнойВыгрузкиКонтекстноеМеню - 5 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - СписокСостоянияУзловКоманднаяПанель 3 - - СписокСостоянияУзловПодключитьКонечнуюТочку - 22 - true - true - - true - - - СписокСостоянияУзловПодключитьКонечнуюТочкуРасширеннаяПодсказка - 55 - Label - true - true - - Left - - - Form.Command.ПодключитьКонечнуюТочку - Normal - Auto - true - true - UserCmds - Auto - - - СписокСостоянияУзловНастроитьПодписки - 47 - true - true - - true - - - СписокСостоянияУзловНастроитьПодпискиРасширеннаяПодсказка - 56 - Label - true - true - - Left - - - Form.Command.НастроитьПодписки - Normal - Auto - true - true - UserCmds - Auto - - - СписокСостоянияУзловИзменитьКонечнуюТочку - 31 - true - true - - true - - - СписокСостоянияУзловИзменитьКонечнуюТочкуРасширеннаяПодсказка - 57 - Label - true - true - - Left - - - Form.Command.ИзменитьКонечнуюТочку - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - СписокСостоянияУзловОтправитьИПолучитьСообщенияСейчас 30 @@ -553,7 +526,7 @@ СписокСостоянияУзловОтправитьИПолучитьСообщенияРасширеннаяПодсказка - 59 + 62 Label true true @@ -580,182 +553,7 @@ СписокСостоянияУзловОтправитьИПолучитьСообщенияСейчасРасширеннаяПодсказка - 58 - Label - true - true - - Left - - - - - - СписокСостоянияУзловГруппа1 - 27 - - СписокСостоянияУзловНайти - 23 - true - true - - true - - - СписокСостоянияУзловНайтиРасширеннаяПодсказка - 61 - Label - true - true - - Left - - - Form.Item.СписокСостоянияУзлов.StandardCommand.Find - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - - СписокСостоянияУзловОтменитьПоиск - 24 - true - true - - true - - - СписокСостоянияУзловОтменитьПоискРасширеннаяПодсказка - 62 - Label - true - true - - Left - - - Form.Item.СписокСостоянияУзлов.StandardCommand.CancelSearch - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - - СписокСостоянияУзловВывестиСписок - 25 - true - true - - true - - - СписокСостоянияУзловВывестиСписокРасширеннаяПодсказка - 63 - Label - true - true - - Left - - - Form.Item.СписокСостоянияУзлов.StandardCommand.OutputList - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - - СписокСостоянияУзловКопироватьВБуферОбмена - 26 - true - true - - true - - - СписокСостоянияУзловКопироватьВБуферОбменаРасширеннаяПодсказка - 64 - Label - true - true - - Left - - - Form.Item.СписокСостоянияУзлов.StandardCommand.CopyToClipboard - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - true - true - - true - - - СписокСостоянияУзловГруппа1РасширеннаяПодсказка - 60 - Label - true - true - - Left - - - - - - СписокСостоянияУзловГруппа2 - 28 - - СписокСостоянияУзловОбновитьМонитор - 20 - true - true - - true - - - СписокСостоянияУзловОбновитьМониторРасширеннаяПодсказка - 66 - Label - true - true - - Left - - - Form.Command.ОбновитьМонитор - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - true - true - - true - - - СписокСостоянияУзловГруппа2РасширеннаяПодсказка - 65 + 61 Label true true @@ -778,7 +576,7 @@ СписокСостоянияУзловВключитьОтключитьРасписаниеОтправкиИПолученияСообщенийСистемыРасширеннаяПодсказка - 68 + 64 Label true true @@ -804,7 +602,7 @@ СписокСостоянияУзловНастроитьРасписаниеОтправкиИПолученияСообщенийСистемыРасширеннаяПодсказка - 69 + 65 Label true true @@ -831,7 +629,7 @@ СписокСостоянияУзловРасписаниеОтправкиИПолученияРасширеннаяПодсказка - 67 + 63 Label true true @@ -848,6 +646,287 @@ Normal + + СписокСостоянияУзловПодключитьКонечнуюТочку + 22 + true + true + + true + + + СписокСостоянияУзловПодключитьКонечнуюТочкуРасширеннаяПодсказка + 66 + Label + true + true + + Left + + + Form.Command.ПодключитьКонечнуюТочку + Normal + Auto + true + true + UserCmds + Auto + + + СписокСостоянияУзловИзменитьКонечнуюТочку + 31 + true + true + + true + + + СписокСостоянияУзловИзменитьКонечнуюТочкуРасширеннаяПодсказка + 67 + Label + true + true + + Left + + + Form.Command.ИзменитьКонечнуюТочку + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокСостоянияУзловГруппа2 + 28 + + СписокСостоянияУзловОбновитьМонитор + 20 + true + true + + true + + + СписокСостоянияУзловОбновитьМониторРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + Form.Command.ОбновитьМонитор + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + СписокСостоянияУзловГруппа2РасширеннаяПодсказка + 68 + Label + true + true + + Left + + + + + + СписокСостоянияУзловНастроитьПодписки + 47 + true + true + + true + + + СписокСостоянияУзловНастроитьПодпискиРасширеннаяПодсказка + 70 + Label + true + true + + Left + + + Form.Command.НастроитьПодписки + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокСостоянияУзловГруппа1 + 27 + + СписокСостоянияУзловНайти + 23 + true + true + + true + + + СписокСостоянияУзловНайтиРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокСостоянияУзловОтменитьПоиск + 24 + true + true + + true + + + СписокСостоянияУзловОтменитьПоискРасширеннаяПодсказка + 73 + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокСостоянияУзловВывестиСписок + 25 + true + true + + true + + + СписокСостоянияУзловВывестиСписокРасширеннаяПодсказка + 74 + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокСостоянияУзловКопироватьВБуферОбмена + 26 + true + true + + true + + + СписокСостоянияУзловКопироватьВБуферОбменаРасширеннаяПодсказка + 75 + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.CopyToClipboard + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + СписокСостоянияУзловГруппа1РасширеннаяПодсказка + 71 + Label + true + true + + Left + + + + + + СписокСостоянияУзловПодробно + 53 + true + true + + true + + + СписокСостоянияУзловПодробноРасширеннаяПодсказка + 76 + Label + true + true + + Left + + + Form.Command.Подробно + Normal + Auto + true + true + UserCmds + Auto + Left @@ -856,10 +935,10 @@ СписокСостоянияУзловСтрокаПоиска - 71 + 78 СписокСостоянияУзловСтрокаПоискаРасширеннаяПодсказка - 73 + 80 Label true true @@ -869,7 +948,7 @@ СписокСостоянияУзловСтрокаПоискаКонтекстноеМеню - 72 + 79 true СписокСостоянияУзлов @@ -879,10 +958,10 @@ СписокСостоянияУзловСостояниеПросмотра - 74 + 81 СписокСостоянияУзловСостояниеПросмотраРасширеннаяПодсказка - 76 + 83 Label true true @@ -892,7 +971,7 @@ СписокСостоянияУзловСостояниеПросмотраКонтекстноеМеню - 75 + 82 true ViewStatusAddition @@ -903,10 +982,10 @@ СписокСостоянияУзловУправлениеПоиском - 77 + 84 СписокСостоянияУзловУправлениеПоискомРасширеннаяПодсказка - 79 + 86 Label true true @@ -916,7 +995,7 @@ СписокСостоянияУзловУправлениеПоискомКонтекстноеМеню - 78 + 85 true SearchControlAddition @@ -927,7 +1006,7 @@ СписокСостоянияУзловРасширеннаяПодсказка - 70 + 77 Label true true @@ -948,7 +1027,7 @@ СписокСостоянияУзловКонтекстноеМенюИзменитьКонечнуюТочкуРасширеннаяПодсказка - 48 + 54 Label true true @@ -977,7 +1056,7 @@ СписокСостоянияУзловКонтекстноеМенюПерейтиВЖурналРегистрацииСобытийЗагрузкиДанныхРасширеннаяПодсказка - 50 + 56 Label true true @@ -1003,7 +1082,7 @@ СписокСостоянияУзловКонтекстноеМенюПерейтиВЖурналРегистрацииСобытийВыгрузкиДанныхРасширеннаяПодсказка - 51 + 57 Label true true @@ -1026,7 +1105,7 @@ СписокСостоянияУзловКонтекстноеМенюГруппа2РасширеннаяПодсказка - 49 + 55 Label true true @@ -1049,7 +1128,7 @@ СписокСостоянияУзловКонтекстноеМенюВывестиСписокРасширеннаяПодсказка - 53 + 59 Label true true @@ -1075,7 +1154,7 @@ СписокСостоянияУзловКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка - 54 + 60 Label true true @@ -1098,7 +1177,7 @@ СписокСостоянияУзловКонтекстноеМенюГруппа1РасширеннаяПодсказка - 52 + 58 Label true true @@ -1626,6 +1705,28 @@ Auto Auto + + Подробно + + <key>ru</key> + <value>Подробно</value> + + 10 + + ru + Показать подробную информацию + + + true + + + + Подробно + + + Auto + Auto + diff --git a/SSL/src/CommonForms/НастройкаОбменаСообщениями/Module.bsl b/SSL/src/CommonForms/НастройкаОбменаСообщениями/Module.bsl index 684a802e8..e2ad7de8f 100644 --- a/SSL/src/CommonForms/НастройкаОбменаСообщениями/Module.bsl +++ b/SSL/src/CommonForms/НастройкаОбменаСообщениями/Module.bsl @@ -12,8 +12,7 @@ И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( - НСтр("ru = 'Настройка подсистемы в разделенном режиме не поддерживается.'"),,,, Отказ - ); + НСтр("ru = 'Настройка подсистемы в разделенном режиме не поддерживается.'"),,,, Отказ); Возврат; КонецЕсли; @@ -142,6 +141,13 @@ КонецПроцедуры +&НаКлиенте +Процедура Подробно(Команда) + + ПодробноНаСервере(); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -166,8 +172,7 @@ УстановитьПривилегированныйРежим(Истина); Возврат РегламентныеЗаданияСервер.ПолучитьРасписаниеРегламентногоЗадания( - Метаданные.РегламентныеЗадания.ОтправкаИПолучениеСообщенийСистемы - ); + Метаданные.РегламентныеЗадания.ОтправкаИПолучениеСообщенийСистемы); КонецФункции @@ -259,3 +264,12 @@ КонецПроцедуры +&НаСервере +Процедура ПодробноНаСервере() + + Элементы.СписокСостоянияУзловПодробно.Пометка = Не Элементы.СписокСостоянияУзловПодробно.Пометка; + + Элементы.СписокСостоянияУзловДатаПоследнейЗагрузки.Видимость = Элементы.СписокСостоянияУзловПодробно.Пометка; + Элементы.СписокСостоянияУзловДатаПоследнейВыгрузки.Видимость = Элементы.СписокСостоянияУзловПодробно.Пометка; + +КонецПроцедуры diff --git a/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Form.form b/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Form.form index bda1f8ed6..d0e7dc2b9 100644 --- a/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Form.form +++ b/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Form.form @@ -507,6 +507,10 @@ Right true + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии @@ -515,7 +519,7 @@ OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner true true Vertical diff --git a/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Help/ru.html b/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Help/ru.html index bc25cc5b0..f28e52b36 100644 --- a/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Help/ru.html +++ b/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Help/ru.html @@ -1,4 +1,4 @@ - +

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

            diff --git a/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Module.bsl b/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Module.bsl index ce726d8a8..130e2341a 100644 --- a/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Module.bsl +++ b/SSL/src/CommonForms/НастройкаОсновногоРабочегоКаталога/Module.bsl @@ -26,6 +26,19 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.Файлы.Форма.СписокФайловВЛокальномКэшеФайлов") Тогда + + РабочийКаталогПользователяВФорме = РабочийКаталогПользователя; + ОбновитьПараметры(); + РабочийКаталогПользователя = РабочийКаталогПользователяВФорме; + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -59,10 +72,7 @@ &НаКлиенте Процедура СписокФайловВыполнить() - ОткрытьФормуМодально("Справочник.Файлы.Форма.СписокФайловВЛокальномКэшеФайлов"); - РабочийКаталогПользователяВФорме = РабочийКаталогПользователя; - ОбновитьПараметры(); - РабочийКаталогПользователя = РабочийКаталогПользователяВФорме; + ОткрытьФорму("Справочник.Файлы.Форма.СписокФайловВЛокальномКэшеФайлов", , ЭтаФорма); КонецПроцедуры &НаКлиенте @@ -227,4 +237,3 @@ ОбновитьПараметрыНаКлиенте(); КонецПроцедуры - diff --git a/SSL/src/CommonForms/НастройкаОтправкиSMS/Help/ru.html b/SSL/src/CommonForms/НастройкаОтправкиSMS/Help/ru.html index 166735e9e..66f55af97 100644 --- a/SSL/src/CommonForms/НастройкаОтправкиSMS/Help/ru.html +++ b/SSL/src/CommonForms/НастройкаОтправкиSMS/Help/ru.html @@ -1,4 +1,4 @@ - +

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

            Описание услуги «Корпоративные SMS-сервисы» (Билайн)
            Описание услуги «МТС Коммуникатор» (МТС)

            При заключении договора получателю услуги предоставляются идентификационные данные: Логин и Пароль. Их неоходимо указать в соответствующих полях на форме.

            diff --git a/SSL/src/CommonForms/НастройкиРезервногоКопированияПриложений/НастройкиРезервногоКопированияПриложений.mdo b/SSL/src/CommonForms/НастройкиРезервногоКопированияПриложений/НастройкиРезервногоКопированияПриложений.mdo deleted file mode 100644 index b52314b13..000000000 --- a/SSL/src/CommonForms/НастройкиРезервногоКопированияПриложений/НастройкиРезервногоКопированияПриложений.mdo +++ /dev/null @@ -1,11 +0,0 @@ - - - НастройкиРезервногоКопированияПриложений - - ru - Настройки резервного копирования приложений - - PersonalComputer - MobileDevice - true - diff --git a/SSL/src/CommonForms/НастройкиЭЦП/Help/ru.html b/SSL/src/CommonForms/НастройкиЭЦП/Help/ru.html index 0933fa082..bff33620e 100644 --- a/SSL/src/CommonForms/НастройкиЭЦП/Help/ru.html +++ b/SSL/src/CommonForms/НастройкиЭЦП/Help/ru.html @@ -1,4 +1,4 @@ - +

            В форме выполняется настройка параметров для использования средств криптографии: электронной цифровой подписи (ЭЦП) и шифрования.
            Для работы с криптографией вам потребуется установить стороннюю программу - криптопровайдер.

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

            diff --git a/SSL/src/CommonForms/НастройкиЭЦП/Module.bsl b/SSL/src/CommonForms/НастройкиЭЦП/Module.bsl index d39c8f415..ec3c5d57d 100644 --- a/SSL/src/CommonForms/НастройкиЭЦП/Module.bsl +++ b/SSL/src/CommonForms/НастройкиЭЦП/Module.bsl @@ -61,8 +61,7 @@ НСтр("ru = 'Не удалось подключить провайдера ЭЦП. |Укажите Провайдера и его Тип согласно инструкции фирмы-производителя криптопровайдера.'"), , - "ТипПровайдераЭЦП" - ); + "ТипПровайдераЭЦП"); КонецЕсли; ИсключаемыеРеквизиты = Новый Массив; @@ -195,7 +194,12 @@ ДобавитьМенеджераКриптографииВСписок("", "", 75); Если Элементы.ПровайдерЭЦП.СписокВыбора.Количество() = 0 Тогда - Элементы.ПровайдерЭЦП.КнопкаСпискаВыбора = Ложь; + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяКнопки = "КнопкаВыпадающегоСписка"; + Иначе + ИмяКнопки = "КнопкаСпискаВыбора"; + КонецЕсли; + Элементы.ПровайдерЭЦП[ИмяКнопки] = Ложь; Элементы.ПровайдерЭЦП.КнопкаОчистки = Ложь; КонецЕсли; @@ -300,8 +304,7 @@ ПредставлениеОшибки ), , - "ТипПровайдераЭЦП" - ); + "ТипПровайдераЭЦП"); КонецЕсли; КонецПопытки; @@ -326,8 +329,7 @@ ИмяМодуляКриптографии, ПутьМодуляКриптографии, ТипМодуляКриптографии, - Ложь - ); + Ложь); КонецПроцедуры diff --git a/SSL/src/CommonForms/НерекомендуемаяВерсияПлатформы/Form.form b/SSL/src/CommonForms/НерекомендуемаяВерсияПлатформы/Form.form deleted file mode 100644 index b314b07e8..000000000 --- a/SSL/src/CommonForms/НерекомендуемаяВерсияПлатформы/Form.form +++ /dev/null @@ -1,478 +0,0 @@ - - - - ГруппаПредупреждение - 15 - - КартинкаПредупреждение - 16 - - <key>ru</key> - <value>Картинка предупреждение</value> - - true - true - - true - - - КартинкаПредупреждениеРасширеннаяПодсказка - 27 - Label - true - true - - Left - - - - КартинкаПредупреждениеКонтекстноеМеню - 17 - true - - 5 - true - 2 - true - - - CommonPicture.Предупреждение32 - - - - - ГруппаТекст - 18 - - ГруппаВерсия - 21 - - Версия - 19 - - <key>ru</key> - <value>Для работы с программой требуется версия платформы 1С:Предприятие не менее: -Используемая сейчас версия: %1</value> - - true - true - - true - - - ВерсияРасширеннаяПодсказка - 30 - Label - true - true - - Left - - - - ВерсияКонтекстноеМеню - 20 - true - - Label - true - 2 - true - false - false - - Left - Top - - - - РекомендуемаяВерсияПлатформы - 22 - - <key>ru</key> - <value>номер версии</value> - - true - true - - true - - - РекомендуемаяВерсияПлатформыРасширеннаяПодсказка - 31 - Label - true - true - - Left - - - - РекомендуемаяВерсияПлатформыКонтекстноеМеню - 23 - true - - Label - true - true - true - false - - System.DefaultGUIFont - true - false - false - false - - - Left - Top - - - true - true - - true - - - <key>ru</key> - <value>Группа версия</value> - - - ГруппаВерсияРасширеннаяПодсказка - 29 - Label - true - true - - Left - - - UsualGroup - - Auto - true - true - Auto - Auto - - - - ТекстСообщения - 13 - - <key>ru</key> - <value>Текст сообщения</value> - - true - true - - true - - - ТекстСообщенияРасширеннаяПодсказка - 32 - Label - true - true - - Left - - - - ТекстСообщенияКонтекстноеМеню - 14 - true - - Label - true - 6 - true - true - true - - Left - Top - - - - ТекстСсылки - 11 - - <key>ru</key> - <value>Загрузить последнюю версию платформы 1С:Предприятие из Интернета</value> - - true - true - - true - - - ru - http://users.v8.1c.ru/project.jsp?id=Platform82 - - - ТекстСсылкиРасширеннаяПодсказка - 33 - Label - true - true - - Left - - - - ТекстСсылкиКонтекстноеМеню - 12 - true - - Label - true - true - - - Click - ТекстСсылкиНажатие - - true - Left - - - true - true - - true - - - <key>ru</key> - <value>Группа текст</value> - - - ГруппаТекстРасширеннаяПодсказка - 28 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - - true - true - - true - - - <key>ru</key> - <value>Группа предупреждение</value> - - - ГруппаПредупреждениеРасширеннаяПодсказка - 26 - Label - true - true - - Left - - - UsualGroup - - Auto - true - true - Auto - Auto - - - Bottom - true - - ФормаКоманднаяПанель - -1 - - ФормаЗавершитьРаботу - 9 - true - true - - true - - - ФормаЗавершитьРаботуРасширеннаяПодсказка - 24 - Label - true - true - - Left - - - Form.Command.ЗавершитьРаботу - Auto - true - true - true - UserCmds - Auto - - - ФормаНет - 8 - true - true - - true - - - ФормаНетРасширеннаяПодсказка - 25 - Label - true - true - - Left - - - Form.Command.Продолжить - Normal - Auto - true - true - UserCmds - Auto - - Right - - - OnCreateAtServer - ПриСозданииНаСервере - - 75 - DontBlock - true - true - true - Vertical - true - true - true - UseIfNecessary - auto - true - - Ссылка - - <key>ru</key> - <value>Ссылка</value> - - 2 - - String - - - - true - - - true - - - - ТекстСообщения - - <key>ru</key> - <value>Текст сообщения</value> - - 3 - - String - - - - true - - - true - - - - Продолжить - - <key>ru</key> - <value>Продолжить</value> - - 2 - - ru - Продолжить работу - - - true - - - - ПродолжитьРаботу - - - Auto - Auto - - - ЗавершитьРаботу - - <key>ru</key> - <value>Завершить работу</value> - - 3 - - ru - Завершить работу - - - true - - - - ЗавершитьРаботу - - - Auto - Auto - - - ТекстСообщения - - String - - - - - ЗавершитьРаботу - - Boolean - - true - - - РекомендуемаяВерсияПлатформы - - String - - - - - - - - diff --git a/SSL/src/CommonForms/НерекомендуемаяВерсияПлатформы/Module.bsl b/SSL/src/CommonForms/НерекомендуемаяВерсияПлатформы/Module.bsl deleted file mode 100644 index 78cf958af..000000000 --- a/SSL/src/CommonForms/НерекомендуемаяВерсияПлатформы/Module.bsl +++ /dev/null @@ -1,49 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ - -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. - Возврат; - КонецЕсли; - - Элементы.ТекстСообщения.Заголовок = Параметры.ТекстСообщения; - Элементы.РекомендуемаяВерсияПлатформы.Заголовок = Параметры.РекомендуемаяВерсияПлатформы; - СистемнаяИнформация = Новый СистемнаяИнформация; - Элементы.Версия.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - Элементы.Версия.Заголовок, СистемнаяИнформация.ВерсияПриложения); - Если Параметры.ЗавершитьРаботу Тогда - Элементы.ФормаНет.Видимость = Ложь; - КонецЕсли; - -КонецПроцедуры - - -//////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ - -&НаКлиенте -Процедура ТекстСсылкиНажатие(Элемент) - СтандартнаяОбработка = Ложь; - ЗапуститьПриложение(Элементы.ТекстСсылки.Подсказка); -КонецПроцедуры - - -//////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ КОМАНД ФОРМЫ - -&НаКлиенте -Процедура ПродолжитьРаботу(Команда) - - Закрыть(КодВозвратаДиалога.Отмена); - -КонецПроцедуры - -&НаКлиенте -Процедура ЗавершитьРаботу(Команда) - - Закрыть(КодВозвратаДиалога.ОК); - -КонецПроцедуры - diff --git a/SSL/src/CommonForms/НерекомендуемаяВерсияПлатформы/НерекомендуемаяВерсияПлатформы.mdo b/SSL/src/CommonForms/НерекомендуемаяВерсияПлатформы/НерекомендуемаяВерсияПлатформы.mdo deleted file mode 100644 index eed8592d1..000000000 --- a/SSL/src/CommonForms/НерекомендуемаяВерсияПлатформы/НерекомендуемаяВерсияПлатформы.mdo +++ /dev/null @@ -1,10 +0,0 @@ - - - НерекомендуемаяВерсияПлатформы - - ru - Нерекомендуемая версия платформы - - PersonalComputer - MobileDevice - diff --git a/SSL/src/CommonForms/ОбменыДанными/Form.form b/SSL/src/CommonForms/ОбменыДанными/Form.form index e4090373d..4b6bb61cd 100644 --- a/SSL/src/CommonForms/ОбменыДанными/Form.form +++ b/SSL/src/CommonForms/ОбменыДанными/Form.form @@ -23,7 +23,7 @@ Декорация2РасширеннаяПодсказка - 363 + 381 Label true true @@ -49,22 +49,139 @@ Группа10 200 - - Декорация1 - 158 - - <key>ru</key> - <value>Если для работы в этой программе необходимо синхронизировать данные с другими программами или требуется настроить распределенную информационную базу, то нажмите на кнопку "Настроить синхронизацию данных". + <items xsi:type="form:FormGroup"> + <name>ИнформационнаяНадпись</name> + <id>368</id> + <items xsi:type="form:FormGroup"> + <name>ЕстьПраваНаСинхронизацию</name> + <id>369</id> + <items xsi:type="form:Decoration"> + <name>ИнформацияОСинхронизацииЕстьПрава</name> + <id>158</id> + <title> + <key>ru</key> + <value>Если для работы в этой программе необходимо синхронизировать данные с другими программами или требуется настроить распределенную информационную базу, то нажмите на кнопку "Настроить синхронизацию данных". Данные могут синхронизироваться автоматически по расписанию или по требованию в любой момент времени.</value> - + + true + true + + true + + + ИнформацияОСинхронизацииЕстьПраваРасширеннаяПодсказка + 385 + Label + true + true + + Left + + + + ИнформацияОСинхронизацииЕстьПраваКонтекстноеМеню + 159 + true + + Label + 75 + true + 3 + true + + Left + + + true + true + + true + + + ЕстьПраваНаСинхронизациюРасширеннаяПодсказка + 384 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + НетПравНаСинхронизацию + 370 + + ИнформацияОСинхронизацииНетПрав + 371 + + <key>ru</key> + <value>Если для работы в этой программе необходимо синхронизировать данные с другими программами или требуется настроить распределенную информационную базу, то обратитесь к администратору информационной базы. +Данные могут синхронизироваться автоматически по расписанию или по требованию в любой момент времени.</value> + + true + true + + true + + + ИнформацияОСинхронизацииНетПравРасширеннаяПодсказка + 387 + Label + true + true + + Left + + + + ИнформацияОСинхронизацииНетПравКонтекстноеМеню + 372 + true + + Label + 75 + true + 3 + true + + Left + + + true + true + + true + + + НетПравНаСинхронизациюРасширеннаяПодсказка + 386 + Label + true + true + + Left + + + Page + + Vertical + auto + + true true true - Декорация1РасширеннаяПодсказка - 365 + ИнформационнаяНадписьРасширеннаяПодсказка + 383 Label true true @@ -72,18 +189,9 @@ Left - - Декорация1КонтекстноеМеню - 159 - true - - Label - 75 - true - 3 - true - - Left + Pages + + Auto @@ -96,7 +204,7 @@ НастроитьСинхронизациюДанныхНеНастроенаРасширеннаяПодсказка - 366 + 388 Label true true @@ -123,7 +231,7 @@ Декорация3РасширеннаяПодсказка - 367 + 389 Label true true @@ -168,7 +276,7 @@ ПрефиксСинхронизацияНеНастроенаРасширеннаяПодсказка - 368 + 390 Label true true @@ -204,7 +312,7 @@ Группа10РасширеннаяПодсказка - 364 + 382 Label true true @@ -229,7 +337,7 @@ Группа1РасширеннаяПодсказка - 362 + 380 Label true true @@ -252,17 +360,9 @@ true - - <key>ru</key> - <value>Синхронизация не настроена</value> - - - ru - Синхронизация не настроена - СинхронизацияНеНастроенаРасширеннаяПодсказка - 361 + 379 Label true true @@ -302,7 +402,7 @@ КартинкаПредупреждение1РасширеннаяПодсказка - 374 + 396 Label true true @@ -345,7 +445,7 @@ НадписьОбменДаннымиПриостановленЕстьПравоОбновления1РасширеннаяПодсказка - 377 + 399 Label true true @@ -376,7 +476,7 @@ УстановитьОбновление1РасширеннаяПодсказка - 378 + 400 Label true true @@ -408,7 +508,7 @@ ИнформацияОбменДаннымиПриостановленЕстьПравоОбновления1РасширеннаяПодсказка - 376 + 398 Label true true @@ -440,7 +540,7 @@ НадписьОбменДаннымиПриостановленНетПраваОбновления1РасширеннаяПодсказка - 380 + 402 Label true true @@ -478,7 +578,7 @@ ИнформацияОбменДаннымиПриостановленНетПраваОбновления1РасширеннаяПодсказка - 379 + 401 Label true true @@ -507,7 +607,7 @@ ПравоОбновленияСтраницыРасширеннаяПодсказка - 375 + 397 Label true true @@ -533,9 +633,11 @@ ru Информационная панель требуется обновление + 45 + false ИнформационнаяПанельТребуетсяОбновление1РасширеннаяПодсказка - 373 + 395 Label true true @@ -572,7 +674,7 @@ ДекорацияСтатусЗагрузкиРасширеннаяПодсказка - 383 + 405 Label true true @@ -605,7 +707,7 @@ ДекорацияСтатусПустойРасширеннаяПодсказка - 384 + 406 Label true true @@ -641,7 +743,7 @@ ДекорацияСтатусВыгрузкиРасширеннаяПодсказка - 385 + 407 Label true true @@ -671,7 +773,7 @@ Группа12РасширеннаяПодсказка - 382 + 404 Label true true @@ -706,7 +808,7 @@ ДекорацияУспешнаяЗагрузкаРасширеннаяПодсказка - 387 + 409 Label true true @@ -740,7 +842,7 @@ ДекорацияУспешнаяВыгрузкаРасширеннаяПодсказка - 388 + 410 Label true true @@ -767,7 +869,7 @@ Группа16РасширеннаяПодсказка - 386 + 408 Label true true @@ -786,14 +888,14 @@ - Группа2 - 345 - + ГруппаПолноправныйПользователь + 277 + ДатаУспешнойЗагрузки - 266 + 283 <key>ru</key> - <value><ДатаПолучения></value> + <value><Дата получения></value> true true @@ -802,109 +904,7 @@ ДатаУспешнойЗагрузкиРасширеннаяПодсказка - 390 - Label - true - true - - Left - - - - ДатаУспешнойЗагрузкиКонтекстноеМеню - 267 - true - - Label - true - true - - Style.ПоясняющийТекст - - - Left - - - - ДатаУспешнойВыгрузки - 264 - - <key>ru</key> - <value><ДатаОтправки></value> - - true - true - - true - - - ДатаУспешнойВыгрузкиРасширеннаяПодсказка - 391 - Label - true - true - - Left - - - - ДатаУспешнойВыгрузкиКонтекстноеМеню - 265 - true - - Label - true - true - - Style.ПоясняющийТекст - - - Left - - - true - true - - true - - - Группа2РасширеннаяПодсказка - 389 - Label - true - true - - Left - - - UsualGroup - - Vertical - Auto - true - true - Auto - Auto - - - - Группа15 - 277 - - ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных - 283 - - <key>ru</key> - <value>Подробно...</value> - - true - true - - true - - - ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанныхРасширеннаяПодсказка - 393 + 412 Label true true @@ -922,11 +922,11 @@ Auto - ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных + ДатаУспешнойВыгрузки 282 <key>ru</key> - <value>Подробно...</value> + <value><Дата отправки></value> true true @@ -934,8 +934,8 @@ true - ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанныхРасширеннаяПодсказка - 394 + ДатаУспешнойВыгрузкиРасширеннаяПодсказка + 413 Label true true @@ -957,9 +957,111 @@ true + + <key>ru</key> + <value>Группа полноправный пользователь</value> + + + ru + Группа полноправный пользователь + - Группа15РасширеннаяПодсказка - 392 + ГруппаПолноправныйПользовательРасширеннаяПодсказка + 411 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаНеполноправныйПользователь + 373 + + НадписьДатаПолучения + 374 + true + true + + true + + + НадписьДатаПолученияРасширеннаяПодсказка + 415 + Label + true + true + + Left + + + + НадписьДатаПолученияКонтекстноеМеню + 375 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + + НадписьДатаОтправки + 376 + true + true + + true + + + НадписьДатаОтправкиРасширеннаяПодсказка + 416 + Label + true + true + + Left + + + + НадписьДатаОтправкиКонтекстноеМеню + 377 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + ГруппаНеполноправныйПользовательРасширеннаяПодсказка + 414 Label true true @@ -984,7 +1086,7 @@ Группа5РасширеннаяПодсказка - 381 + 403 Label true true @@ -1014,7 +1116,7 @@ ВыполнитьОбменДанными2РасширеннаяПодсказка - 396 + 418 Label true true @@ -1041,7 +1143,7 @@ ВыполнитьОбменДаннымиИнтерактивно2РасширеннаяПодсказка - 397 + 419 Label true true @@ -1069,7 +1171,7 @@ ОткрытьРезультатыОднаСинхронизацияРасширеннаяПодсказка - 398 + 420 Label true true @@ -1078,15 +1180,12 @@ Hyperlink - Form.Command.ОткрытьРезультатыОднаСинхронизация + Form.Command.ОткрытьРезультатыСинхронизацииДанных Normal Auto true true UserCmds - - CommonPicture.Предупреждение - Auto true @@ -1096,7 +1195,7 @@ Группа4РасширеннаяПодсказка - 395 + 417 Label true true @@ -1118,11 +1217,10 @@ true - 48 - false + 45 Группа3РасширеннаяПодсказка - 372 + 394 Label true true @@ -1142,7 +1240,7 @@ - Группа7 + ГруппаНастройкиСинхронизации 260 Группа18 @@ -1161,7 +1259,7 @@ Декорация5РасширеннаяПодсказка - 401 + 423 Label true true @@ -1196,7 +1294,7 @@ ИзменитьУзелИнформационнойБазыРасширеннаяПодсказка - 402 + 424 Label true true @@ -1213,6 +1311,34 @@ UserCmds Auto + + СоставОтправляемыхДанных + 363 + true + true + + true + + + СоставОтправляемыхДанныхРасширеннаяПодсказка + 425 + Label + true + true + + Left + + + UsualButton + Form.Command.СоставОтправляемыхДанных + Normal + Picture + 3 + true + true + UserCmds + Auto + true true @@ -1220,7 +1346,7 @@ Группа18РасширеннаяПодсказка - 400 + 422 Label true true @@ -1251,7 +1377,7 @@ None ОписаниеПравилСинхронизацииДанныхРасширеннаяПодсказка - 403 + 426 Label true true @@ -1289,8 +1415,8 @@ true - Группа7РасширеннаяПодсказка - 399 + ГруппаНастройкиСинхронизацииРасширеннаяПодсказка + 421 Label true true @@ -1310,7 +1436,7 @@ - Группа6 + ГруппаСценарииСинхронизации 257 Группа19 @@ -1329,7 +1455,7 @@ РасписаниеСинхронизацииДанныхДекорацияРасширеннаяПодсказка - 407 + 430 Label true true @@ -1364,7 +1490,7 @@ НастроитьСценарииОбменаДаннымиРасширеннаяПодсказка - 408 + 431 Label true true @@ -1392,7 +1518,7 @@ Группа19РасширеннаяПодсказка - 406 + 429 Label true true @@ -1423,7 +1549,7 @@ None РасписаниеСинхронизацииДанныхРасширеннаяПодсказка - 409 + 432 Label true true @@ -1460,8 +1586,8 @@ true - Группа6РасширеннаяПодсказка - 405 + ГруппаСценарииСинхронизацииРасширеннаяПодсказка + 428 Label true true @@ -1490,7 +1616,7 @@ ИнформацияПоОбменуРасширеннаяПодсказка - 411 + 434 Label true true @@ -1530,7 +1656,7 @@ ПрефиксОднаСинхронизацияРасширеннаяПодсказка - 412 + 435 Label true true @@ -1559,6 +1685,33 @@ Normal + + УдалитьНастройкуСинхронизации + 365 + true + true + + true + + + УдалитьНастройкуСинхронизацииРасширеннаяПодсказка + 437 + Label + true + true + + Left + + + UsualButton + Form.Command.УдалитьНастройкуСинхронизации + Normal + Auto + true + true + UserCmds + Auto + true true @@ -1572,12 +1725,12 @@ ru Синхронизация - 48 + 45 false false СинхронизацияРасширеннаяПодсказка - 371 + 393 Label true true @@ -1606,7 +1759,7 @@ Декорация4РасширеннаяПодсказка - 414 + 438 Label true true @@ -1627,7 +1780,7 @@ - Группа20 + ГруппаНастройкаСинхронизации 303 НастроитьСинхронизациюДанныхОдна @@ -1639,7 +1792,7 @@ НастроитьСинхронизациюДанныхОднаРасширеннаяПодсказка - 416 + 440 Label true true @@ -1670,7 +1823,7 @@ Декорация10РасширеннаяПодсказка - 417 + 441 Label true true @@ -1696,8 +1849,8 @@ true - Группа20РасширеннаяПодсказка - 415 + ГруппаНастройкаСинхронизацииРасширеннаяПодсказка + 439 Label true true @@ -1720,18 +1873,10 @@ true - - <key>ru</key> - <value>Одна синхронизация</value> - - - ru - Одна синхронизация - false ОднаСинхронизацияРасширеннаяПодсказка - 370 + 392 Label true true @@ -1765,7 +1910,7 @@ КартинкаПредупреждениеРасширеннаяПодсказка - 420 + 444 Label true true @@ -1806,7 +1951,7 @@ НадписьОбменДаннымиПриостановленНетПраваОбновленияРасширеннаяПодсказка - 422 + 446 Label true true @@ -1841,7 +1986,7 @@ ИнформацияОбменДаннымиПриостановленНетПраваОбновленияРасширеннаяПодсказка - 421 + 445 Label true true @@ -1876,7 +2021,7 @@ НадписьОбменДаннымиПриостановленЕстьПравоОбновленияРасширеннаяПодсказка - 424 + 448 Label true true @@ -1907,7 +2052,7 @@ УстановитьОбновлениеРасширеннаяПодсказка - 425 + 449 Label true true @@ -1939,7 +2084,7 @@ ИнформацияОбменДаннымиПриостановленЕстьПравоОбновленияРасширеннаяПодсказка - 423 + 447 Label true true @@ -1972,7 +2117,7 @@ ИнформационнаяПанельТребуетсяОбновлениеРасширеннаяПодсказка - 419 + 443 Label true true @@ -1993,20 +2138,16 @@ ГруппаРезультатовСинхронизацииДанных 348 - ОбщаяКомандаОткрытьПроблемыСинхронизацииДанных - 349 - - <key>ru</key> - <value>Проблемы: <Количество></value> - + ОткрытьРезультатыСинхронизацииДанных + 367 true true true - ОбщаяКомандаОткрытьПроблемыСинхронизацииДанныхРасширеннаяПодсказка - 427 + ОткрытьРезультатыСинхронизацииДанныхРасширеннаяПодсказка + 451 Label true true @@ -2015,7 +2156,7 @@ Hyperlink - CommonCommand.ОткрытьРезультатыОбменаДанными + Form.Command.ОткрытьРезультатыСинхронизацииДанных Normal Auto true @@ -2026,60 +2167,6 @@ Auto - - ОткрытьКоллизии - 357 - true - true - - true - - - ОткрытьКоллизииРасширеннаяПодсказка - 428 - Label - true - true - - Left - - - Hyperlink - Form.Command.ОткрытьКоллизии - Normal - Auto - true - true - UserCmds - Auto - - - ОткрытьНепринятые - 358 - true - true - - true - - - ОткрытьНепринятыеРасширеннаяПодсказка - 429 - Label - true - true - - Left - - - Hyperlink - Form.Command.ОткрытьНепринятые - Normal - Auto - true - true - UserCmds - Auto - true true @@ -2095,7 +2182,7 @@ ГруппаРезультатовСинхронизацииДанныхРасширеннаяПодсказка - 426 + 450 Label true true @@ -2136,7 +2223,7 @@ ПодменюПрочееРасширеннаяПодсказка - 432 + 454 Label true true @@ -2164,7 +2251,7 @@ ПодменюРИБРасширеннаяПодсказка - 433 + 455 Label true true @@ -2189,7 +2276,7 @@ ПодменюСоздатьРасширеннаяПодсказка - 431 + 453 Label true true @@ -2217,7 +2304,7 @@ false ВыполнитьОбменДаннымиРасширеннаяПодсказка - 434 + 456 Label true true @@ -2244,7 +2331,7 @@ ВыполнитьОбменДаннымиИнтерактивноРасширеннаяПодсказка - 435 + 457 Label true true @@ -2260,51 +2347,25 @@ UserCmds Auto - - СписокСостоянияУзловИзменитьУзелИнформационнойБазы - 53 - true - true - - true - - true - Role.НастройкаСинхронизацииДанных - - - false - - СписокСостоянияУзловИзменитьУзелИнформационнойБазыРасширеннаяПодсказка - 436 - Label - true - true - - Left - - - Form.Command.ИзменитьУзелИнформационнойБазы - Normal - Picture - true - true - UserCmds - Auto - - СписокСостоянияУзловГруппа2 - 340 + СписокСостоянияУзловГруппа3 + 361 - СписокСостоянияУзловНайти - 341 + СписокСостоянияУзловИзменитьУзелИнформационнойБазы + 53 true true true + + true + Role.НастройкаСинхронизацииДанных + + false - СписокСостоянияУзловНайтиРасширеннаяПодсказка - 438 + СписокСостоянияУзловИзменитьУзелИнформационнойБазыРасширеннаяПодсказка + 459 Label true true @@ -2312,7 +2373,33 @@ Left - Form.Item.СписокСостоянияУзлов.StandardCommand.Find + Form.Command.ИзменитьУзелИнформационнойБазы + Normal + Picture + true + true + UserCmds + Auto + + + СписокСостоянияУзловСоставОтправляемыхДанных + 360 + true + true + + true + + + СписокСостоянияУзловСоставОтправляемыхДанныхРасширеннаяПодсказка + 460 + Label + true + true + + Left + + + Form.Command.СоставОтправляемыхДанных Normal Auto true @@ -2321,67 +2408,14 @@ Auto InAdditionalSubmenu - - СписокСостоянияУзловОтменитьПоиск - 342 - true - true - - true - - - СписокСостоянияУзловОтменитьПоискРасширеннаяПодсказка - 439 - Label - true - true - - Left - - - Form.Item.СписокСостоянияУзлов.StandardCommand.CancelSearch - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - - - СписокСостоянияУзловСкрыватьУспешные - 320 - true - true - - true - - - СписокСостоянияУзловСкрыватьУспешныеРасширеннаяПодсказка - 440 - Label - true - true - - Left - - - Form.Command.СкрытьУспешные - Normal - Auto - true - true - UserCmds - Auto - true true true - СписокСостоянияУзловГруппа2РасширеннаяПодсказка - 437 + СписокСостоянияУзловГруппа3РасширеннаяПодсказка + 458 Label true true @@ -2404,7 +2438,7 @@ СписокСостоянияУзловПерейтиВЖурналРегистрацииСобытийВыгрузкиДанныхРасширеннаяПодсказка - 442 + 462 Label true true @@ -2431,7 +2465,7 @@ СписокСостоянияУзловПерейтиВЖурналРегистрацииСобытийЗагрузкиДанныхРасширеннаяПодсказка - 443 + 463 Label true true @@ -2448,33 +2482,6 @@ Auto InAdditionalSubmenu - - НастроитьРасписаниеВыполненияОбмена - 102 - true - true - - true - - - НастроитьРасписаниеВыполненияОбменаРасширеннаяПодсказка - 444 - Label - true - true - - Left - - - Form.Command.НастроитьСценарииОбменаДанными - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - true true @@ -2490,7 +2497,108 @@ НастройкаРасширеннаяПодсказка - 441 + 461 + Label + true + true + + Left + + + + + + НастроитьРасписаниеВыполненияОбмена + 102 + true + true + + true + + + НастроитьРасписаниеВыполненияОбменаРасширеннаяПодсказка + 464 + Label + true + true + + Left + + + Form.Command.НастроитьСценарииОбменаДанными + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокСостоянияУзловГруппа2 + 340 + + СписокСостоянияУзловНайти + 341 + true + true + + true + + + СписокСостоянияУзловНайтиРасширеннаяПодсказка + 466 + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + СписокСостоянияУзловОтменитьПоиск + 342 + true + true + + true + + + СписокСостоянияУзловОтменитьПоискРасширеннаяПодсказка + 467 + Label + true + true + + Left + + + Form.Item.СписокСостоянияУзлов.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + СписокСостоянияУзловГруппа2РасширеннаяПодсказка + 465 Label true true @@ -2514,7 +2622,7 @@ false ОбновитьМониторРасширеннаяПодсказка - 446 + 469 Label true true @@ -2531,6 +2639,32 @@ Auto InAdditionalSubmenu + + СписокСостоянияУзловСкрыватьУспешные + 320 + true + true + + true + + + СписокСостоянияУзловСкрыватьУспешныеРасширеннаяПодсказка + 470 + Label + true + true + + Left + + + Form.Command.СкрытьУспешные + Normal + Auto + true + true + UserCmds + Auto + ФормаВывестиСписок 115 @@ -2541,7 +2675,7 @@ ФормаВывестиСписокРасширеннаяПодсказка - 447 + 471 Label true true @@ -2567,7 +2701,7 @@ ФормаИзменитьФормуРасширеннаяПодсказка - 448 + 472 Label true true @@ -2593,7 +2727,7 @@ СписокСостоянияУзловИнформацияПоОбменуРасширеннаяПодсказка - 449 + 473 Label true true @@ -2617,7 +2751,54 @@ СписокСостоянияУзловГруппа1РасширеннаяПодсказка - 445 + 468 + Label + true + true + + Left + + + + + + СписокСостоянияУзловГруппа4 + 366 + + СписокСостоянияУзловУдалитьНастройкуСинхронизации + 364 + true + true + + true + + + СписокСостоянияУзловУдалитьНастройкуСинхронизацииРасширеннаяПодсказка + 475 + Label + true + true + + Left + + + Form.Command.УдалитьНастройкуСинхронизации + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + СписокСостоянияУзловГруппа4РасширеннаяПодсказка + 474 Label true true @@ -2637,7 +2818,7 @@ ФормаСправкаРасширеннаяПодсказка - 450 + 476 Label true true @@ -2668,7 +2849,7 @@ КоманднаяПанельРасширеннаяПодсказка - 430 + 452 Label true true @@ -2722,7 +2903,7 @@ СписокСостоянияУзловРасписаниеНастроеноРасширеннаяПодсказка - 471 + 498 Label true true @@ -2770,7 +2951,7 @@ СписокСостоянияУзловИмяПланаОбменаРасширеннаяПодсказка - 473 + 500 Label true true @@ -2811,7 +2992,7 @@ СписокСостоянияУзловУзелИнформационнойБазыРасширеннаяПодсказка - 475 + 502 Label true true @@ -2854,7 +3035,7 @@ СписокСостоянияУзловПрефиксИнформационнойБазыРасширеннаяПодсказка - 477 + 504 Label true true @@ -2906,7 +3087,7 @@ СписокСостоянияУзловРезультатПоследнейВыгрузкиДанныхРасширеннаяПодсказка - 481 + 508 Label true true @@ -2954,7 +3135,7 @@ СписокСостоянияУзловДатаПоследнейУспешнойВыгрузкиРасширеннаяПодсказка - 483 + 510 Label true true @@ -3005,7 +3186,7 @@ СписокСостоянияУзловГруппаУспешнойВыгрузкиРасширеннаяПодсказка - 480 + 507 Label true true @@ -3031,7 +3212,7 @@ СписокСостоянияУзловДатаПоследнейВыгрузкиРасширеннаяПодсказка - 485 + 512 Label true true @@ -3075,7 +3256,7 @@ ГруппаВыгрузкиРасширеннаяПодсказка - 479 + 506 Label true true @@ -3114,7 +3295,7 @@ СписокСостоянияУзловРезультатПоследнейЗагрузкиДанныхРасширеннаяПодсказка - 489 + 516 Label true true @@ -3162,7 +3343,7 @@ СписокСостоянияУзловДатаПоследнейУспешнойЗагрузкиРасширеннаяПодсказка - 491 + 518 Label true true @@ -3213,7 +3394,7 @@ СписокСостоянияУзловГруппаУспешнойЗагрузкиРасширеннаяПодсказка - 488 + 515 Label true true @@ -3239,7 +3420,7 @@ СписокСостоянияУзловДатаПоследнейЗагрузкиРасширеннаяПодсказка - 493 + 520 Label true true @@ -3283,7 +3464,7 @@ ГруппаЗагрузкиРасширеннаяПодсказка - 487 + 514 Label true true @@ -3315,10 +3496,10 @@ СписокСостоянияУзловСтрокаПоиска - 462 + 489 СписокСостоянияУзловСтрокаПоискаРасширеннаяПодсказка - 464 + 491 Label true true @@ -3328,7 +3509,7 @@ СписокСостоянияУзловСтрокаПоискаКонтекстноеМеню - 463 + 490 true СписокСостоянияУзлов @@ -3338,10 +3519,10 @@ СписокСостоянияУзловСостояниеПросмотра - 465 + 492 СписокСостоянияУзловСостояниеПросмотраРасширеннаяПодсказка - 467 + 494 Label true true @@ -3351,7 +3532,7 @@ СписокСостоянияУзловСостояниеПросмотраКонтекстноеМеню - 466 + 493 true ViewStatusAddition @@ -3362,10 +3543,10 @@ СписокСостоянияУзловУправлениеПоиском - 468 + 495 СписокСостоянияУзловУправлениеПоискомРасширеннаяПодсказка - 470 + 497 Label true true @@ -3375,7 +3556,7 @@ СписокСостоянияУзловУправлениеПоискомКонтекстноеМеню - 469 + 496 true SearchControlAddition @@ -3386,7 +3567,7 @@ СписокСостоянияУзловРасширеннаяПодсказка - 461 + 488 Label true true @@ -3411,7 +3592,7 @@ false ВыполнитьОбменДанными1РасширеннаяПодсказка - 452 + 478 Label true true @@ -3437,7 +3618,7 @@ ВыполнитьОбменДаннымиИнтерактивно1РасширеннаяПодсказка - 453 + 479 Label true true @@ -3468,7 +3649,7 @@ ГруппаКнопокВыполненияОбменаДаннымиРасширеннаяПодсказка - 451 + 477 Label true true @@ -3488,7 +3669,7 @@ СписокСостоянияУзловКонтекстноеМенюИзменитьУзелИнформационнойБазыРасширеннаяПодсказка - 454 + 480 Label true true @@ -3504,6 +3685,32 @@ UserCmds Auto + + СписокСостоянияУзловКонтекстноеМенюСоставОтправляемыхДанных + 362 + true + true + + true + + + СписокСостоянияУзловКонтекстноеМенюСоставОтправляемыхДанныхРасширеннаяПодсказка + 481 + Label + true + true + + Left + + + Form.Command.СоставОтправляемыхДанных + Normal + Auto + true + true + UserCmds + Auto + КонтекстноеМенюСписокСостоянияДиагностика 86 @@ -3518,7 +3725,7 @@ false КонтекстноеМенюСписокСостоянияУзловПерейтиВЖурналРегистрацииСобытийЗагрузкиДанныхРасширеннаяПодсказка - 456 + 483 Label true true @@ -3545,7 +3752,7 @@ false КонтекстноеМенюСписокСостоянияУзловПерейтиВЖурналРегистрацииСобытийВыгрузкиДанныхРасширеннаяПодсказка - 457 + 484 Label true true @@ -3572,7 +3779,7 @@ КонтекстноеМенюСписокСостоянияДиагностикаРасширеннаяПодсказка - 455 + 482 Label true true @@ -3595,7 +3802,7 @@ НастроитьРасписаниеВыполненияОбмена1РасширеннаяПодсказка - 459 + 486 Label true true @@ -3626,7 +3833,7 @@ ГруппаКнопокНастройкиРасписанияРасширеннаяПодсказка - 458 + 485 Label true true @@ -3646,7 +3853,7 @@ СписокСостоянияУзловКонтекстноеМенюИнформацияПоОбменуРасширеннаяПодсказка - 460 + 487 Label true true @@ -3717,7 +3924,7 @@ ПрефиксИБРасширеннаяПодсказка - 504 + 531 Label true true @@ -3756,7 +3963,7 @@ Декорация6РасширеннаяПодсказка - 506 + 533 Label true true @@ -3792,7 +3999,7 @@ ГруппаПрефиксаРасширеннаяПодсказка - 503 + 530 Label true true @@ -3816,7 +4023,7 @@ НесколькоСинхронизацийРасширеннаяПодсказка - 418 + 442 Label true true @@ -3845,7 +4052,7 @@ СинхронизацияДанныхРасширеннаяПодсказка - 360 + 378 Label true true @@ -4304,6 +4511,23 @@ true + + ЕстьПравоНаПросмотрЖурналаРегистрации + + <key>ru</key> + <value>Есть право на просмотр журнала регистрации</value> + + 10 + + Boolean + + + true + + + true + + ОбновитьМонитор @@ -4334,7 +4558,7 @@ <name>ВыполнитьОбменДанными</name> <title> <key>ru</key> - <value>Синхронизировать сейчас</value> + <value>Синхронизировать</value> 3 @@ -4620,56 +4844,16 @@ Auto - ОткрытьКоллизии + ОткрытьРезультатыСинхронизацииДанных <key>ru</key> - <value>Последний конфликт <Дата></value> - - 14 - - ru - Открыть конфликты - - - true - - - - ОткрытьКоллизии - - - Auto - Auto - - - ОткрытьНепринятые - - <key>ru</key> - <value>Последний запрет загрузки <Дата></value> - - 15 - - ru - Открыть непринятые данные - - - true - - - - ОткрытьНепринятые - - - Auto - Auto - - - ОткрытьРезультатыОднаСинхронизация - - <key>ru</key> - <value>Проблемы: <Количество></value> + <value>Предупреждений нет</value> 16 + + ru + Открыть предупреждения при синхронизации данных + true @@ -4681,6 +4865,63 @@ Auto Auto + + СоставОтправляемыхДанных + + <key>ru</key> + <value>Состав отправляемых данных</value> + + 17 + + ru + Состав отправляемых данных + + + + true + Role.АдминистраторСистемы + + + + StdPicture.InputFieldOpen + + + + СоставОтправляемыхДанных + + + Auto + Auto + + + УдалитьНастройкуСинхронизации + + <key>ru</key> + <value>Удалить настройку синхронизации</value> + + 18 + + ru + Удалить настройку синхронизации данных + + + + true + Role.АдминистраторСистемы + + + + StdPicture.Delete + + + + УдалитьНастройкуСинхронизации + + + TextPicture + Auto + Auto + diff --git a/SSL/src/CommonForms/ОбменыДанными/Help/ru.html b/SSL/src/CommonForms/ОбменыДанными/Help/ru.html index a9356913f..14506ba9d 100644 --- a/SSL/src/CommonForms/ОбменыДанными/Help/ru.html +++ b/SSL/src/CommonForms/ОбменыДанными/Help/ru.html @@ -1,4 +1,4 @@ - +

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

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

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

            @@ -18,4 +18,13 @@
            Нажать на кнопку Записать и закрыть. Загруженные правила будут применены немедленно.

            См. также

            \ No newline at end of file +

            Действия при восстановлении информационной базы из резервной копии

            +

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

            +
            • +
              Временно отключить автоматическое выполнение синхронизации данных (снять флажок Использовать расписание во всех сценариях синхронизации данных)
              +
            • +
              Отменить отправку данных, приготовленных для других программ (для каждой настройки синхронизации данных выполнить команду Все действия – Состав отправляемых данных, в дереве объектов отметить корень и выполнить команду Отменить регистрацию изменений – Всех объектов выбранных типов)
              +
            • +
              Заново выполнить отправку данных из других программ в эту информационную базу, введенных в программах с момента выполнения резервной копии этой информационной базы.
              +
            • +
              Восстановить автоматическое выполнение синхронизации данных

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

            \ No newline at end of file diff --git a/SSL/src/CommonForms/ОбменыДанными/Module.bsl b/SSL/src/CommonForms/ОбменыДанными/Module.bsl index 3929b04c6..0506d445a 100644 --- a/SSL/src/CommonForms/ОбменыДанными/Module.bsl +++ b/SSL/src/CommonForms/ОбменыДанными/Module.bsl @@ -1,3 +1,4 @@ + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -7,6 +8,10 @@ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; + + Если ОбщегоНазначения.ПриСозданииФормыНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ) Тогда + Возврат; + КонецЕсли; СписокПлановОбмена = ОбменДаннымиПовтИсп.СписокПлановОбменаБСП(); Если СписокПлановОбмена.Количество() = 0 Тогда @@ -15,14 +20,42 @@ Возврат; КонецЕсли; + ЕстьПравоНаПросмотрЖурналаРегистрации = Пользователи.РолиДоступны("ПросмотрЖурналаРегистрации"); + РольДоступнаДобавлениеИзменениеОбменовДанными = Пользователи.РолиДоступны("НастройкаСинхронизацииДанных"); Если РольДоступнаДобавлениеИзменениеОбменовДанными Тогда ДобавитьКомандыСозданияНовогоОбмена(); + Иначе + Элементы.НастроитьСинхронизациюДанныхНеНастроена.Видимость = Ложь; + Элементы.ГруппаНастройкаСинхронизации.Видимость = Ложь; + Элементы.ИнформационнаяНадпись.ТекущаяСтраница = Элементы.НетПравНаСинхронизацию; + Элементы.ГруппаСценарииСинхронизации.Видимость = Ложь; + Элементы.ГруппаНастройкиСинхронизации.Видимость = Ложь; КонецЕсли; ОбновитьСписокСостоянияУзлов(); - Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + Если КоличествоСинхронизаций = 1 Тогда + + Если ЕстьПравоНаПросмотрЖурналаРегистрации Тогда + + Элементы.ДатаУспешнойЗагрузки.Видимость = Истина; + Элементы.ДатаУспешнойВыгрузки.Видимость = Истина; + Элементы.НадписьДатаПолучения.Видимость = Ложь; + Элементы.НадписьДатаОтправки.Видимость = Ложь; + + Иначе + + Элементы.ДатаУспешнойЗагрузки.Видимость = Ложь; + Элементы.ДатаУспешнойВыгрузки.Видимость = Ложь; + Элементы.НадписьДатаПолучения.Видимость = Истина; + Элементы.НадписьДатаОтправки.Видимость = Истина; + + КонецЕсли; + + КонецЕсли; + + Если Не РольДоступнаДобавлениеИзменениеОбменовДанными Или ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда Элементы.ПрефиксСинхронизацияНеНастроена.Видимость = Ложь; Элементы.ПрефиксОднаСинхронизация.Видимость = Ложь; @@ -66,11 +99,11 @@ &НаКлиенте Процедура НастроитьСинхронизациюДанных(Элемент) - ВыбранняСинхронизация = ВыбратьИзМеню(НастраиваемыеСинхронизации, Элемент); + ВыбраннаяСинхронизация = ВыбратьИзМеню(НастраиваемыеСинхронизации, Элемент); - Если ВыбранняСинхронизация <> Неопределено Тогда + Если ВыбраннаяСинхронизация <> Неопределено Тогда - ОбменДаннымиКлиент.ОткрытьПомощникНастройкиОбменаДанными(ВыбранняСинхронизация.Значение); + ОбменДаннымиКлиент.ОткрытьПомощникНастройкиОбменаДанными(ВыбраннаяСинхронизация.Значение); КонецЕсли; @@ -82,7 +115,13 @@ &НаКлиенте Процедура СписокСостоянияУзловВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) - ОбменДаннымиКлиент.ВыполнитьОбменДаннымиОбработкаКоманды(Элементы.СписокСостоянияУзлов.ТекущиеДанные.УзелИнформационнойБазы, ЭтаФорма); + Ответ = Вопрос(НСтр("ru = 'Выполнить синхронизацию данных?'"), РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Да); + + Если Ответ = КодВозвратаДиалога.Да Тогда + + ОбменДаннымиКлиент.ВыполнитьОбменДаннымиОбработкаКоманды(Элементы.СписокСостоянияУзлов.ТекущиеДанные.УзелИнформационнойБазы, ЭтаФорма); + + КонецЕсли; КонецПроцедуры @@ -268,7 +307,7 @@ КонецЕсли; - ОткрытьФормуМодально("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); + ОткрытьФорму("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -306,25 +345,59 @@ &НаКлиенте Процедура ОткрытьРезультатыОднаСинхронизация(Команда) - ОткрытьФорму("РегистрСведений.РезультатыОбменаДанными.Форма.Форма"); - -КонецПроцедуры - -&НаКлиенте -Процедура ОткрытьКоллизии(Команда) - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("ОткрываемаяСтраница", "СтраницаКоллизии"); + ПараметрыФормы.Вставить("УзлыОбмена", МассивИспользуемыхУзлов(СписокСостоянияУзлов)); ОткрытьФорму("РегистрСведений.РезультатыОбменаДанными.Форма.Форма", ПараметрыФормы); КонецПроцедуры &НаКлиенте -Процедура ОткрытьНепринятые(Команда) +Процедура СоставОтправляемыхДанных(Команда) - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("ОткрываемаяСтраница", "СтраницаНепринятыеПоДатеЗапрета"); - ОткрытьФорму("РегистрСведений.РезультатыОбменаДанными.Форма.Форма", ПараметрыФормы); + Если КоличествоСинхронизаций = 1 Тогда + + УзелОбмена = СписокСостоянияУзлов[0].УзелИнформационнойБазы; + + Иначе + + ТекущиеДанные = Элементы.СписокСостоянияУзлов.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + + Возврат; + + КонецЕсли; + + УзелОбмена = ТекущиеДанные.УзелИнформационнойБазы; + + КонецЕсли; + + ОбменДаннымиКлиент.ОткрытьСоставОтправляемыхДанных(УзелОбмена); + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьНастройкуСинхронизации(Команда) + + Если КоличествоСинхронизаций = 1 Тогда + + УзелОбмена = СписокСостоянияУзлов[0].УзелИнформационнойБазы; + + Иначе + + ТекущиеДанные = Элементы.СписокСостоянияУзлов.ТекущиеДанные; + + Если ТекущиеДанные = Неопределено Тогда + + Возврат; + + КонецЕсли; + + УзелОбмена = ТекущиеДанные.УзелИнформационнойБазы; + + КонецЕсли; + + ОбменДаннымиКлиент.УдалитьНастройкуСинхронизации(УзелОбмена); КонецПроцедуры @@ -380,6 +453,7 @@ Если КоличествоСинхронизаций = 0 Тогда ПанельСинхронизации.ТекущаяСтраница = ПанельСинхронизации.ПодчиненныеЭлементы.СинхронизацияНеНастроена; + Заголовок = НСтр("ru = 'Синхронизация данных'"); ИначеЕсли КоличествоСинхронизаций = 1 Тогда @@ -406,7 +480,7 @@ Элементы.НадписьОбменДаннымиПриостановленЕстьПравоОбновления, Элементы.НадписьОбменДаннымиПриостановленНетПраваОбновления); - НадписьОбменДаннымиПриостановлен.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НадписьОбменДаннымиПриостановлен.Заголовок, ПланыОбмена.ГлавныйУзел()); + НадписьОбменДаннымиПриостановлен.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НадписьОбменДаннымиПриостановлен.Заголовок, ОбменДаннымиСервер.ГлавныйУзел()); КонецЕсли; @@ -417,66 +491,37 @@ Если КоличествоСинхронизаций <> 0 Тогда - ПустаяДата = Дата(1,1,1); - - КоличествоПроблем = РегистрыСведений.РезультатыОбменаДанными.КоличествоПроблем(); - ЕстьПроблемы = КоличествоПроблем > 0; - - Если ЕстьПроблемы Тогда - НадписьПроблемы = НСтр("ru = 'Проблемы: %Количество%'"); - НадписьПроблемы = СтрЗаменить(НадписьПроблемы, "%Количество%", КоличествоПроблем); - КартинкаПроблемы = БиблиотекаКартинок.Предупреждение; - Иначе - НадписьПроблемы = НСтр("ru = 'Проблем нет'"); - КартинкаПроблемы = Новый Картинка; - КонецЕсли; - - НадписьКоллизии = ""; - Элементы.ОткрытьКоллизии.Видимость = Ложь; - НадписьНепринятые = ""; - Элементы.ОткрытьНепринятые.Видимость = Ложь; - ИспользуетсяВерсионирование = Ложь; - ОбменДаннымиСервер.ПриОпределенииИспользованияВерсионирования(ИспользуетсяВерсионирование); - - Если ИспользуетсяВерсионирование Тогда - - ДатаПоследнейКоллизии = ПустаяДата; - ОбменДаннымиСервер.ПриОбновленииЗаголовковКомандМонитораОбменаДанными(ДатаПоследнейКоллизии, Истина); - Если ЗначениеЗаполнено(ДатаПоследнейКоллизии) Тогда - НадписьКоллизии = НСтр("ru = 'Последний конфликт %Дата%'"); - НадписьКоллизии = СтрЗаменить(НадписьКоллизии, "%Дата%", Формат(ДатаПоследнейКоллизии, "ДЛФ=DD")); - Элементы.ОткрытьКоллизии.Заголовок = НадписьКоллизии; - Элементы.ОткрытьКоллизии.Видимость = Истина; - КонецЕсли; - - ДатаПоследнегоЗапретаЗагрузки = ПустаяДата; - ОбменДаннымиСервер.ПриОбновленииЗаголовковКомандМонитораОбменаДанными(ДатаПоследнегоЗапретаЗагрузки, Ложь); - Если ЗначениеЗаполнено(ДатаПоследнегоЗапретаЗагрузки) Тогда - НадписьНепринятые = НСтр("ru = 'Последний запрет загрузки %Дата%'"); - НадписьНепринятые = СтрЗаменить(НадписьНепринятые, "%Дата%", Формат(ДатаПоследнегоЗапретаЗагрузки, "ДЛФ=DD")); - Элементы.ОткрытьНепринятые.Заголовок = НадписьНепринятые; - Элементы.ОткрытьНепринятые.Видимость = Истина; - КонецЕсли; - - КонецЕсли; + СтруктураЗаголовка = ОбменДаннымиСервер.СтруктураЗаголовкаГиперссылкиМонитораПроблем(МассивИспользуемыхУзлов(СписокСостоянияУзлов)); Если КоличествоСинхронизаций = 1 Тогда - Элементы.ОткрытьРезультатыОднаСинхронизация.Заголовок = НадписьПроблемы; - Элементы.ОткрытьРезультатыОднаСинхронизация.Картинка = КартинкаПроблемы; - Команды.ОткрытьРезультатыОднаСинхронизация.Подсказка = СокрЛП(НадписьПроблемы + Символы.ПС + НадписьКоллизии + Символы.ПС + НадписьНепринятые); + Элемент = Элементы.ОткрытьРезультатыОднаСинхронизация; ИначеЕсли КоличествоСинхронизаций > 1 Тогда - Элементы.ОбщаяКомандаОткрытьПроблемыСинхронизацииДанных.Заголовок = НадписьПроблемы; - Элементы.ОбщаяКомандаОткрытьПроблемыСинхронизацииДанных.Картинка = КартинкаПроблемы; + Элемент = Элементы.ОткрытьРезультатыСинхронизацииДанных; КонецЕсли; + ЗаполнитьЗначенияСвойств(Элемент, СтруктураЗаголовка); + КонецЕсли; КонецПроцедуры +&НаКлиентеНаСервереБезКонтекста +Функция МассивИспользуемыхУзлов(СписокСостоянияУзлов) + + УзлыОбмена = Новый Массив; + + Для Каждого СтрокаУзла Из СписокСостоянияУзлов Цикл + УзлыОбмена.Добавить(СтрокаУзла.УзелИнформационнойБазы); + КонецЦикла; + + Возврат УзлыОбмена; + +КонецФункции + &НаСервере Процедура УстановитьЭлементыОднойСинхронизации() @@ -484,16 +529,25 @@ Если НастроеннаяСинхронизация.УзелИнформационнойБазы = Неопределено Тогда - ВызватьИсключение НСтр("ru = 'Работа монитора синхронизации данных в неразделенном режиме не поддерживается'"); + ВызватьИсключение НСтр("ru = 'Работа монитора синхронизации данных в неразделенном сеансе не поддерживается'"); КонецЕсли; ЗаголовокФормы = НСтр("ru = 'Синхронизация данных с ""%Программа%""'"); ЗаголовокФормы = СтрЗаменить(ЗаголовокФормы, "%Программа%", НастроеннаяСинхронизация.УзелИнформационнойБазы.Наименование); Заголовок = ЗаголовокФормы; - - Элементы.ДатаУспешнойЗагрузки.Заголовок = НастроеннаяСинхронизация.ПредставлениеДатыПоследнейУспешнойЗагрузки; - Элементы.ДатаУспешнойВыгрузки.Заголовок = НастроеннаяСинхронизация.ПредставлениеДатыПоследнейУспешнойВыгрузки; + + Если ЕстьПравоНаПросмотрЖурналаРегистрации Тогда + + Элементы.ДатаУспешнойЗагрузки.Заголовок = НастроеннаяСинхронизация.ПредставлениеДатыПоследнейУспешнойЗагрузки; + Элементы.ДатаУспешнойВыгрузки.Заголовок = НастроеннаяСинхронизация.ПредставлениеДатыПоследнейУспешнойВыгрузки; + + Иначе + + Элементы.НадписьДатаПолучения.Заголовок = НастроеннаяСинхронизация.ПредставлениеДатыПоследнейУспешнойЗагрузки; + Элементы.НадписьДатаОтправки.Заголовок = НастроеннаяСинхронизация.ПредставлениеДатыПоследнейУспешнойВыгрузки; + + КонецЕсли; ПустаяДата = Дата(1, 1, 1); @@ -502,8 +556,7 @@ Или НастроеннаяСинхронизация.РезультатПоследнейВыгрузкиДанных <> 0 Тогда ПодсказкаВыгрузки = НСтр("ru = 'Данные отправлены: %ДатаОтправки% - |Последняя попытка: %ДатаПопытки%'" - ); + |Последняя попытка: %ДатаПопытки%'"); ПодсказкаВыгрузки = СтрЗаменить(ПодсказкаВыгрузки, "%ДатаОтправки%", НастроеннаяСинхронизация.ПредставлениеДатыПоследнейУспешнойВыгрузки); ПодсказкаВыгрузки = СтрЗаменить(ПодсказкаВыгрузки, "%ДатаПопытки%", НастроеннаяСинхронизация.ПредставлениеДатыПоследнейВыгрузки); @@ -518,8 +571,7 @@ Или НастроеннаяСинхронизация.РезультатПоследнейЗагрузкиДанных <> 0 Тогда ПодсказкаЗагрузки = НСтр("ru = 'Данные получены: %ДатаПолучения% - |Последняя попытка: %ДатаПопытки%'" - ); + |Последняя попытка: %ДатаПопытки%'"); ПодсказкаЗагрузки = СтрЗаменить(ПодсказкаЗагрузки, "%ДатаПолучения%", НастроеннаяСинхронизация.ПредставлениеДатыПоследнейУспешнойЗагрузки); ПодсказкаЗагрузки = СтрЗаменить(ПодсказкаЗагрузки, "%ДатаПопытки%", НастроеннаяСинхронизация.ПредставлениеДатыПоследнейЗагрузки); @@ -529,6 +581,7 @@ КонецЕсли; + Элементы.ДекорацияСтатусПустой.Видимость = Истина; Если НастроеннаяСинхронизация.РезультатПоследнейЗагрузкиДанных =2 Тогда НастроеннаяСинхронизация.РезультатПоследнейЗагрузкиДанных = ?(ОбменДаннымиСервер.ОбменДаннымиВыполненСПредупреждениями(НастроеннаяСинхронизация.УзелИнформационнойБазы), 2, 0); КонецЕсли; @@ -545,10 +598,7 @@ КонецЕсли; Элементы.ДекорацияУспешнаяЗагрузка.Подсказка = Элементы.ДекорацияСтатусЗагрузки.Подсказка; - Элементы.ДатаУспешнойЗагрузки.Подсказка = Элементы.ДекорацияСтатусЗагрузки.Подсказка; - Элементы.ДекорацияУспешнаяВыгрузка.Подсказка = Элементы.ДекорацияСтатусВыгрузки.Подсказка; - Элементы.ДатаУспешнойВыгрузки.Подсказка = Элементы.ДекорацияСтатусВыгрузки.Подсказка; Если ОбменДаннымиПовтИсп.ЭтоУзелРаспределеннойИнформационнойБазы(НастроеннаяСинхронизация.УзелИнформационнойБазы) Тогда @@ -571,8 +621,6 @@ КонецЕсли; - - КонецПроцедуры &НаСервере @@ -672,7 +720,7 @@ КонецЕсли; - // если спозициронировать строку не удалось, то устанавливаем текущей первую строку + // если спозиционировать строку не удалось, то устанавливаем текущей первую строку Если Элементы[ИмяТаблицы].ТекущаяСтрока = Неопределено И ЭтаФорма[ИмяТаблицы].Количество() <> 0 Тогда @@ -690,6 +738,8 @@ Элементы.ИнформационнаяПанельТребуетсяОбновление1.Видимость = ТребуетсяОбновление; Элементы.ИнформационнаяПанельТребуетсяОбновление.Видимость = ТребуетсяОбновление; + Элементы.ВыполнитьОбменДанными2.Видимость = Не ТребуетсяОбновление; + КонецПроцедуры &НаСервере @@ -749,7 +799,9 @@ Выборка.Следующий(); РегламентноеЗаданиеОбъект = ОбменДаннымиВызовСервера.НайтиРегламентноеЗаданиеПоПараметру(Выборка.РегламентноеЗаданиеGUID); - РасписаниеРегламентногоЗадания = РегламентноеЗаданиеОбъект.Расписание; + Если РегламентноеЗаданиеОбъект <> Неопределено Тогда + РасписаниеРегламентногоЗадания = РегламентноеЗаданиеОбъект.Расписание; + КонецЕсли; КонецЕсли; diff --git a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Form.form b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Form.form index 5a19a3960..ef1fe8e52 100644 --- a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Form.form +++ b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Form.form @@ -1,9 +1,111 @@ - + <key>ru</key> <value>Что нового в конфигурации</value> + + ОтложенноеОбновление + 24 + + ОтложенноеОбновлениеДанных + 25 + + <key>ru</key> + <value>Выполняются дополнительные процедуры обработки данных</value> + + true + true + + true + + + ОтложенноеОбновлениеДанныхРасширеннаяПодсказка + 29 + Label + true + true + + Left + + + Hyperlink + Form.Command.ОтложенноеОбновлениеДанных + Normal + Auto + true + true + UserCmds + + CommonPicture.Предупреждение + + Auto + + + ОтложенноеОбновлениеДанныхПояснение + 26 + + <key>ru</key> + <value>Работа в программе временно ограничена, так как еще не завершен переход на новую версию.</value> + + true + true + + true + + + ОтложенноеОбновлениеДанныхПояснениеРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + ОтложенноеОбновлениеДанныхПояснениеКонтекстноеМеню + 27 + true + + Label + true + true + + Right + + + true + true + + true + + + <key>ru</key> + <value>Отложенное обновление</value> + + true + + ОтложенноеОбновлениеРасширеннаяПодсказка + 28 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + Auto + Auto + + КоманднаяПанельСписка 13 @@ -21,7 +123,7 @@ НайтиРасширеннаяПодсказка - 25 + 32 Label true true @@ -48,7 +150,7 @@ ИзменитьФормуРасширеннаяПодсказка - 26 + 33 Label true true @@ -78,7 +180,7 @@ СохранитьРасширеннаяПодсказка - 27 + 34 Label true true @@ -104,7 +206,7 @@ РазвернутьВсеГруппыРасширеннаяПодсказка - 28 + 35 Label true true @@ -131,7 +233,7 @@ ПечатьРасширеннаяПодсказка - 29 + 36 Label true true @@ -158,7 +260,7 @@ false СправкаРасширеннаяПодсказка - 30 + 37 Label true true @@ -189,7 +291,7 @@ КоманднаяПанельСпискаРасширеннаяПодсказка - 24 + 31 Label true true @@ -221,7 +323,7 @@ None ОписаниеОбновленийРасширеннаяПодсказка - 31 + 38 Label true true @@ -276,7 +378,7 @@ АдресФормыВПрограммеРасширеннаяПодсказка - 34 + 41 Label true true @@ -318,7 +420,7 @@ ТехническаяИнформацияОРезультатахОбновленияРасширеннаяПодсказка - 36 + 43 Label true true @@ -359,7 +461,7 @@ false ЗакрытьРасширеннаяПодсказка - 38 + 45 Label true true @@ -390,7 +492,7 @@ 5 КоманднаяПанельФормыРасширеннаяПодсказка - 37 + 44 Label true true @@ -419,7 +521,7 @@ false ГруппаТехническаяИнформацияИЗакрытьРасширеннаяПодсказка - 35 + 42 Label true true @@ -453,7 +555,7 @@ true ГруппаРасширеннаяПодсказка - 33 + 40 Label true true @@ -549,6 +651,24 @@ true + + ОтложенноеОбновлениеДанных + + <key>ru</key> + <value>Выполняются дополнительные процедуры обработки данных</value> + + 1 + + true + + + + ОтложенноеОбновлениеДанных + + + Auto + Auto + ВремяНачалаОбновления diff --git a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Help/ru.html b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Help/ru.html index fbd3ea9fc..d8fbfa5ac 100644 --- a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Help/ru.html +++ b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Help/ru.html @@ -1,3 +1,3 @@ - +

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

            Описание обновлений можно просмотреть позднее, пройдя в панель Информация на рабочем столе.

            \ No newline at end of file diff --git a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Module.bsl b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Module.bsl index abe79c031..e6b364709 100644 --- a/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Module.bsl +++ b/SSL/src/CommonForms/ОписаниеИзмененийСистемы/Module.bsl @@ -17,17 +17,17 @@ КонецЕсли; Разделы = ОбновлениеИнформационнойБазы.НеотображавшиесяРазделыОписанияИзменений(); + ПоследняяВерсия = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОбновлениеИБ", + "ПоследняяВерсияОтображенияИзмененийСистемы", , , ИмяПользователя()); Если Разделы.Количество() = 0 Тогда - Если Параметры.ПоказыватьТолькоИзменения Тогда - ДокументОписаниеОбновлений = Новый ТабличныйДокумент(); + ДокументОписаниеОбновлений = Метаданные.ОбщиеМакеты.Найти("ОписаниеИзмененийСистемы"); + Если ДокументОписаниеОбновлений <> Неопределено + И (ПоследняяВерсия = Неопределено + Или Не Параметры.ПоказыватьТолькоИзменения) Тогда + ДокументОписаниеОбновлений = ПолучитьОбщийМакет(ДокументОписаниеОбновлений); Иначе - ДокументОписаниеОбновлений = Метаданные.ОбщиеМакеты.Найти("ОписаниеИзмененийСистемы"); - Если ДокументОписаниеОбновлений <> Неопределено Тогда - ДокументОписаниеОбновлений = ПолучитьОбщийМакет(ДокументОписаниеОбновлений); - Иначе - ДокументОписаниеОбновлений = Новый ТабличныйДокумент(); - КонецЕсли; + ДокументОписаниеОбновлений = Новый ТабличныйДокумент(); КонецЕсли; Иначе ДокументОписаниеОбновлений = ОбновлениеИнформационнойБазы.ДокументОписаниеОбновлений(Разделы); @@ -53,9 +53,35 @@ ОписаниеОбновлений.Очистить(); ОписаниеОбновлений.Вывести(ДокументОписаниеОбновлений); + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + Если СведенияОбОбновлении <> Неопределено Тогда + ВремяНачалаОбновления = СведенияОбОбновлении.ВремяНачалаОбновления; + ВремяОкончанияОбновления = СведенияОбОбновлении.ВремяОкончанияОбновления; + КонецЕсли; + + Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() + Или СведенияОбОбновлении = Неопределено + Или СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно <> Неопределено + Или СведенияОбОбновлении.ДеревоОбработчиков <> Неопределено + И СведенияОбОбновлении.ДеревоОбработчиков.Строки.Количество() = 0 Тогда + Элементы.ОтложенноеОбновление.Видимость = Ложь; + КонецЕсли; + + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + ЗаголовокСообщения = НСтр("ru = 'Необходимо выполнить дополнительные процедуры обработки данных'"); + Элементы.ОтложенноеОбновлениеДанных.Заголовок = ЗаголовокСообщения; + КонецЕсли; + + Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + Элементы.ОтложенноеОбновлениеДанных.Заголовок = + НСтр("ru = 'Не выполнены дополнительные процедуры обработки данных'"); + Элементы.ОтложенноеОбновлениеДанныхПояснение.Заголовок = + НСтр("ru = 'Работа в программе временно ограничена, так как еще не завершен переход на новую версию, обратитесь к администратору.'"); + КонецЕсли; + Если Не ЗначениеЗаполнено(ВремяНачалаОбновления) И Не ЗначениеЗаполнено(ВремяОкончанияОбновления) Тогда Элементы.ТехническаяИнформацияОРезультатахОбновления.Видимость = Ложь; - Иначе + ИначеЕсли Пользователи.ЭтоПолноправныйПользователь() И Не ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда Элементы.АдресФормыВПрограмме.ВысотаЗаголовка = 2; Элементы.ТехническаяИнформацияОРезультатахОбновления.Видимость = Истина; КонецЕсли; @@ -95,6 +121,14 @@ КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + +&НаКлиенте +Процедура ОтложенноеОбновлениеДанных(Команда) + ОткрытьФорму("Обработка.ОбновлениеИнформационнойБазы.Форма.ИндикацияХодаОтложенногоОбновленияИБ"); +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -104,3 +138,4 @@ ОбновлениеИнформационнойБазы.УстановитьФлагОтображенияОписанийПоТекущуюВерсию(); КонецПроцедуры + diff --git a/SSL/src/CommonForms/ОтключениеАвтономногоРабочегоМеста/Module.bsl b/SSL/src/CommonForms/ОтключениеАвтономногоРабочегоМеста/Module.bsl index 430cd327c..50ef504ac 100644 --- a/SSL/src/CommonForms/ОтключениеАвтономногоРабочегоМеста/Module.bsl +++ b/SSL/src/CommonForms/ОтключениеАвтономногоРабочегоМеста/Module.bsl @@ -75,8 +75,7 @@ Исключение ЗаписатьОшибкуВЖурналРегистрации( - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииУдалениеАвтономногоРабочегоМеста - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииУдалениеАвтономногоРабочегоМеста); ДлительнаяОперация = Ложь; ПерейтиНазад(); @@ -358,8 +357,7 @@ ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", ДлительнаяОперация = Ложь, - ИмяОбработчикаДлительнойОперации = "" - ) + ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; @@ -435,8 +433,7 @@ Исключение Отказ = Истина; ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииУдалениеАвтономногоРабочегоМеста - ); + СобытиеЖурналаРегистрацииУдалениеАвтономногоРабочегоМеста); КонецПопытки; Иначе @@ -445,8 +442,7 @@ УникальныйИдентификатор, "АвтономнаяРаботаСлужебный.УдалитьАвтономноеРабочееМесто", Новый Структура("АвтономноеРабочееМесто", АвтономноеРабочееМесто), - НСтр("ru = 'Удаление автономного рабочего места'") - ); + НСтр("ru = 'Удаление автономного рабочего места'")); Если Не Результат.ЗаданиеВыполнено Тогда diff --git a/SSL/src/CommonForms/ОтображениеНовостей/ОтображениеНовостей.mdo b/SSL/src/CommonForms/ОтображениеНовостей/ОтображениеНовостей.mdo deleted file mode 100644 index 12f0ab905..000000000 --- a/SSL/src/CommonForms/ОтображениеНовостей/ОтображениеНовостей.mdo +++ /dev/null @@ -1,10 +0,0 @@ - - - ОтображениеНовостей - - ru - Отображение новостей - - PersonalComputer - MobileDevice - diff --git a/SSL/src/CommonForms/ОтправкаСообщения/Form.form b/SSL/src/CommonForms/ОтправкаСообщения/Form.form index d3b84d2e2..07d6a551a 100644 --- a/SSL/src/CommonForms/ОтправкаСообщения/Form.form +++ b/SSL/src/CommonForms/ОтправкаСообщения/Form.form @@ -697,7 +697,6 @@ true true - true true true true @@ -800,6 +799,10 @@ Left true + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии diff --git a/SSL/src/CommonForms/ОтправкаСообщения/Help/ru.html b/SSL/src/CommonForms/ОтправкаСообщения/Help/ru.html index 54fba7396..e0707fc0c 100644 --- a/SSL/src/CommonForms/ОтправкаСообщения/Help/ru.html +++ b/SSL/src/CommonForms/ОтправкаСообщения/Help/ru.html @@ -1,4 +1,4 @@ - +

            В поле Адрес получателя можно указать сразу несколько получателей электронного сообщения.

            В поле Адрес ответа можно задать e-mail адрес, на который получатели письма будут отправлять ответ. Это поле нужно заполнять в том случае, если входящая корреспонденция системной учетной записи не просматривается (например, если учетная запись предназначена только для отправки).

            Для вложения файлов в почтовое сообщение используйте кнопку Вложить файл. Для удаления вложения установите на нем курсор нем и нажмите клавишу Del.

            diff --git a/SSL/src/CommonForms/ОтправкаСообщения/Module.bsl b/SSL/src/CommonForms/ОтправкаСообщения/Module.bsl index dc4139201..7348e40a5 100644 --- a/SSL/src/CommonForms/ОтправкаСообщения/Module.bsl +++ b/SSL/src/CommonForms/ОтправкаСообщения/Module.bsl @@ -31,14 +31,14 @@ // Использовать // // *формат правильного e-mail адреса: -// Z = ([Имя Пользователя] [<]пользователь@почтовыйсервер[>][;]), Строка = Z[Z].. +// Z = ([Имя Пользователя] [<]Пользователь@ПочтовыйСервер[>][;]), Строка = Z[Z].. // // ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ // // Неопределено // -// Булево: истина - сообщение успешно отправлено -// ложь - сообщение не было отправлено +// Булево: Истина - сообщение успешно отправлено +// Ложь - сообщение не было отправлено // //------------------------------------------------------------------------------ // СПЕЦИФИКАЦИЯ ФУНКЦИОНИРОВАНИЯ ФОРМЫ @@ -58,6 +58,9 @@ // //------------------------------------------------------------------------------ +&НаКлиенте +Перем ПриведенныйПочтовыйАдрес; + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -146,8 +149,14 @@ Элементы.УчетнаяЗапись.СписокВыбора.СортироватьПоПредставлению(); УчетнаяЗапись = НаборУчетныхЗаписей[0].Значение; - // для переданного списка учетных запсией выбираем их из списка выбора - Элементы.УчетнаяЗапись.КнопкаСпискаВыбора = Истина; + // для переданного списка учетных записей выбираем их из списка выбора + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяКнопки = "КнопкаВыпадающегоСписка"; + Иначе + ИмяКнопки = "КнопкаСпискаВыбора"; + КонецЕсли; + Элементы.УчетнаяЗапись[ИмяКнопки] = Истина; + УчетнаяЗаписьУказана = Истина; Если Элементы.УчетнаяЗапись.СписокВыбора.Количество() <= 1 Тогда @@ -181,14 +190,19 @@ // Получаем список адресов, которые пользователь использовал ранее СписокАдресовОтвета = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "РедактированиеНовогоПисьма", - "СписокАдресовОтвета" - ); + "СписокАдресовОтвета"); Если СписокАдресовОтвета <> Неопределено И СписокАдресовОтвета.Количество() > 0 Тогда Для Каждого ЭлементаАдресОтвета Из СписокАдресовОтвета Цикл Элементы.АдресОтвета.СписокВыбора.Добавить(ЭлементаАдресОтвета.Значение, ЭлементаАдресОтвета.Представление); КонецЦикла; - Элементы.АдресОтвета.КнопкаСпискаВыбора = Истина; + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяКнопки = "КнопкаВыпадающегоСписка"; + Иначе + ИмяКнопки = "КнопкаСпискаВыбора"; + КонецЕсли; + Элементы.АдресОтвета[ИмяКнопки] = Истина; КонецЕсли; Если ЗначениеЗаполнено(АдресОтвета) Тогда @@ -215,6 +229,17 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ПодтверждениеПароляУчетнойЗаписи") Тогда + + ПродолжитьОтправкуПисьмаСПаролем(ВыбранноеЗначение); + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -222,15 +247,14 @@ Процедура УчетнаяЗаписьНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Если УчетнаяЗаписьУказана Тогда - // если учетная записьбыла передана в качестве параметра + // если учетная запись была передана в качестве параметра // не позволяем выбрать другую СтандартнаяОбработка = Ложь; КонецЕсли; КонецПроцедуры -// Подставляет адрес ответа, если флаг автоматической подставновки ответа -// установлен. +// Подставляет адрес ответа, если флаг автоматической подстановки ответа установлен. // &НаКлиенте Процедура УчетнаяЗаписьОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) @@ -382,7 +406,7 @@ Если ЗначениеЗаполнено(АдресОтвета) Тогда Попытка - ПриведенныйАдресОтвета = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(АдресОтвета); + ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(АдресОтвета); Исключение ОбщегоНазначенияКлиентСервер.СообщитьПользователю( КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), , @@ -391,37 +415,15 @@ КонецПопытки; КонецЕсли; - Пароль = Неопределено; - Если ((ТипЗнч(ПарольЗадан) = Тип("Булево") И Не ПарольЗадан) - Или (ТипЗнч(ПарольЗадан) = Тип("ФиксированныйМассив") И ПарольЗадан.Найти(УчетнаяЗапись) = Неопределено)) Тогда - ПараметрУчетнаяЗапись = Новый Структура("УчетнаяЗапись", УчетнаяЗапись); - Пароль = ОткрытьФормуМодально("ОбщаяФорма.ПодтверждениеПароляУчетнойЗаписи", - ПараметрУчетнаяЗапись); - Если ТипЗнч(Пароль) <> Тип("Строка") Тогда - Возврат; - КонецЕсли; + Или (ТипЗнч(ПарольЗадан) = Тип("ФиксированныйМассив") И ПарольЗадан.Найти(УчетнаяЗапись) = Неопределено)) Тогда + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("УчетнаяЗапись", УчетнаяЗапись); + ОткрытьФорму("ОбщаяФорма.ПодтверждениеПароляУчетнойЗаписи", ПараметрыФормы, ЭтаФорма); + Иначе + ПродолжитьОтправкуПисьмаСПаролем(); КонецЕсли; - ПараметрыПисьма = СформироватьПараметрыПисьма(ПриведенныйПочтовыйАдрес, Пароль); - - Если ПараметрыПисьма = Неопределено Тогда - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Ошибка формирования параметров почтового сообщения'")); - Возврат; - КонецЕсли; - - Попытка - ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма); - Исключение - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); - Возврат; - КонецПопытки; - - СохранитьАдресОтвета(АдресОтвета); - Предупреждение(НСтр("ru = 'Сообщение успешно отправлено'")); - - Закрыть(); - КонецПроцедуры &НаКлиенте @@ -573,8 +575,7 @@ // это возможно - формирует параметры отправки // &НаКлиенте -Функция СформироватьПараметрыПисьма(знач ПриведенныйПочтовыйАдрес, - знач Пароль = Неопределено) +Функция СформироватьПараметрыПисьма(Знач Пароль = Неопределено) ПараметрыПисьма = Новый Структура; @@ -633,8 +634,7 @@ // Получаем список адресов, которые пользователь использовал ранее СписокАдресовОтвета = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "РедактированиеНовогоПисьма", - "СписокАдресовОтвета" - ); + "СписокАдресовОтвета"); Если СписокАдресовОтвета = Неопределено Тогда СписокАдресовОтвета = Новый СписокЗначений(); @@ -655,8 +655,7 @@ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( "РедактированиеНовогоПисьма", "СписокАдресовОтвета", - СписокАдресовОтвета - ); + СписокАдресовОтвета); КонецФункции @@ -703,3 +702,27 @@ Возврат ПочтовыйАдрес; КонецФункции + +&НаКлиенте +Процедура ПродолжитьОтправкуПисьмаСПаролем(Пароль = Неопределено) + + ПараметрыПисьма = СформироватьПараметрыПисьма(Пароль); + + Если ПараметрыПисьма = Неопределено Тогда + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Ошибка формирования параметров почтового сообщения'")); + Возврат; + КонецЕсли; + + Попытка + ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыПисьма); + Исключение + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + Возврат; + КонецПопытки; + + СохранитьАдресОтвета(АдресОтвета); + Предупреждение(НСтр("ru = 'Сообщение успешно отправлено'")); + + Закрыть(); + +КонецПроцедуры diff --git a/SSL/src/CommonForms/ОтправкаСообщенияВТехподдержку/ОтправкаСообщенияВТехподдержку.mdo b/SSL/src/CommonForms/ОтправкаСообщенияВТехподдержку/ОтправкаСообщенияВТехподдержку.mdo deleted file mode 100644 index 6d624aa6f..000000000 --- a/SSL/src/CommonForms/ОтправкаСообщенияВТехподдержку/ОтправкаСообщенияВТехподдержку.mdo +++ /dev/null @@ -1,10 +0,0 @@ - - - ОтправкаСообщенияВТехподдержку - - ru - Отправка сообщения в техподдержку - - PersonalComputer - MobileDevice - diff --git a/SSL/src/CommonForms/ПанельОтчетов/Help/ru.html b/SSL/src/CommonForms/ПанельОтчетов/Help/ru.html index 1622dfd1f..f2fd5bae4 100644 --- a/SSL/src/CommonForms/ПанельОтчетов/Help/ru.html +++ b/SSL/src/CommonForms/ПанельОтчетов/Help/ru.html @@ -1,4 +1,4 @@ - +

            Выводит варианты отчетов, размещенные в разделе или группах раздела.

            Для открытия необходимо кликнуть левой кнопкой мыши на варианте отчета.

            Команды в режиме просмотра:

            diff --git a/SSL/src/CommonForms/ПанельОтчетов/Module.bsl b/SSL/src/CommonForms/ПанельОтчетов/Module.bsl index 88044524a..1dc35e53e 100644 --- a/SSL/src/CommonForms/ПанельОтчетов/Module.bsl +++ b/SSL/src/CommonForms/ПанельОтчетов/Module.bsl @@ -18,8 +18,7 @@ Иначе Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Отчеты раздела ""%1""'"), - РазделМетаданные.Представление() - ); + РазделМетаданные.Представление()); КонецЕсли; ЭтаФорма.КлючНазначенияИспользования = "Раздел_" + Строка(РазделСсылка.УникальныйИдентификатор()); @@ -138,9 +137,7 @@ Предупреждение( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не заполнено имя отчета для варианта ""%1"".'"), - Вариант.Наименование - ) - ); + Вариант.Наименование)); Иначе @@ -627,8 +624,7 @@ Процедура СохранитьПользовательскиеНастройки() ИзмененныеНастройки = ДобавленныеВарианты.Выгрузить( Новый Структура("ИзмененПользователем", Истина), - "Ссылка, Подсистема, Видимость, БыстрыйДоступ" - ); + "Ссылка, Подсистема, Видимость, БыстрыйДоступ"); ИзмененныеНастройки.Колонки.Ссылка.Имя = "Вариант"; ИзмененныеНастройки.Колонки.Подсистема.Имя = "РазделИлиГруппа"; РегистрыСведений.НастройкиВариантовОтчетов.СохранитьНастройкиПользователяВРазделе(ИзмененныеНастройки); @@ -855,8 +851,7 @@ Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГДЕ | ЕСТЬNULL(втНастройки.Видимость, ЕСТЬNULL(НастройкиВариантовОтчетов.Видимость, втВсеВарианты.ВидимостьПоУмолчанию))", - "" - ); + ""); КонецЕсли; ТаблицаРезультат = Запрос.Выполнить().Выгрузить(); @@ -869,8 +864,7 @@ ШаблонГруппыВарианта = Новый Структура( "Вид, РастягиватьПоГоризонтали, |Отображение, Группировка, - |ОтображатьЗаголовок" - ); + |ОтображатьЗаголовок"); ШаблонГруппыВарианта.Вид = ВидГруппыФормы.ОбычнаяГруппа; ШаблонГруппыВарианта.РастягиватьПоГоризонтали = Истина; ШаблонГруппыВарианта.Отображение = ОтображениеОбычнойГруппы.Нет; @@ -879,8 +873,7 @@ ШаблонКартинкиБыстрогоДоступа = Новый Структура( "Вид, Ширина, Высота, Картинка, - |РастягиватьПоГоризонтали, РастягиватьПоВертикали" - ); + |РастягиватьПоГоризонтали, РастягиватьПоВертикали"); ШаблонКартинкиБыстрогоДоступа.Вид = ВидДекорацииФормы.Картинка; ШаблонКартинкиБыстрогоДоступа.Ширина = 2; ШаблонКартинкиБыстрогоДоступа.Высота = 1; @@ -890,8 +883,7 @@ ШаблонКартинкиОтступа = Новый Структура( "Вид, Ширина, Высота, - |РастягиватьПоГоризонтали, РастягиватьПоВертикали" - ); + |РастягиватьПоГоризонтали, РастягиватьПоВертикали"); ШаблонКартинкиОтступа.Вид = ВидДекорацииФормы.Картинка; ШаблонКартинкиОтступа.Ширина = 1; ШаблонКартинкиОтступа.Высота = 1; @@ -901,8 +893,7 @@ // Шаблоны заполнения создаваемых элементов управления ШаблонНадписиВарианта = Новый Структура( "Вид, Гиперссылка, Высота, ЦветТекста, - |РастягиватьПоГоризонтали, РастягиватьПоВертикали" - ); + |РастягиватьПоГоризонтали, РастягиватьПоВертикали"); ШаблонНадписиВарианта.Вид = ВидДекорацииФормы.Надпись; ШаблонНадписиВарианта.Гиперссылка = Истина; ШаблонНадписиВарианта.РастягиватьПоГоризонтали = Истина; @@ -1007,7 +998,7 @@ ДеревоРаспределения.Колонки.Добавить("КоличествоПустыхСтрок", Новый ОписаниеТипов("Число")); ДеревоРаспределения.Колонки.Добавить("ВсегоВложенныхВариантов", Новый ОписаниеТипов("Число")); ДеревоРаспределения.Колонки.Добавить("ВсегоВложенныхПодсистем", Новый ОписаниеТипов("Число")); - ДеревоРаспределения.Колонки.Добавить("ВсегоВложеныхПустыхСтрок", Новый ОписаниеТипов("Число")); + ДеревоРаспределения.Колонки.Добавить("ВсегоВложенныхПустыхСтрок", Новый ОписаниеТипов("Число")); ДеревоРаспределения.Колонки.Добавить("УровеньВложенности", Новый ОписаниеТипов("Число")); МаксимальныйУровеньВложенности = 0; @@ -1039,7 +1030,7 @@ Если ЕстьВарианты Тогда СтрокаРодителя.ВсегоВложенныхВариантов = СтрокаРодителя.ВсегоВложенныхВариантов + СтрокаДерева.КоличествоВариантов; СтрокаРодителя.ВсегоВложенныхПодсистем = СтрокаРодителя.ВсегоВложенныхПодсистем + 1; - СтрокаРодителя.ВсегоВложеныхПустыхСтрок = СтрокаРодителя.ВсегоВложеныхПустыхСтрок + 1; + СтрокаРодителя.ВсегоВложенныхПустыхСтрок = СтрокаРодителя.ВсегоВложенныхПустыхСтрок + 1; КонецЕсли; СтрокаРодителя = СтрокаРодителя.Родитель; СтрокаДерева.УровеньВложенности = СтрокаДерева.УровеньВложенности + 1; @@ -1055,7 +1046,7 @@ ДеревоРаспределения.Колонки.Добавить("ГруппаФормы"); ДеревоРаспределения.Колонки.Добавить("НачатВывод", Новый ОписаниеТипов("Булево")); КорневаяСтрока = ДеревоРаспределения.Строки[0]; - КоличествоСтрок = КорневаяСтрока.ВсегоВложенныхВариантов + КорневаяСтрока.ВсегоВложенныхПодсистем + Макс(КорневаяСтрока.ВсегоВложеныхПустыхСтрок - 2, 0); + КоличествоСтрок = КорневаяСтрока.ВсегоВложенныхВариантов + КорневаяСтрока.ВсегоВложенныхПодсистем + Макс(КорневаяСтрока.ВсегоВложенныхПустыхСтрок - 2, 0); // Переменные для поддержки динамики групп 3 уровня КоличествоКолонок = ГруппаУровня2.ПодчиненныеЭлементы.Количество(); @@ -1232,7 +1223,7 @@ Для Каждого Вариант Из СтрокаДерева.Варианты Цикл // СтрокаДерева.Варианты - это результат поиска по таблице значений. // Код рассчитан на то, что сортировка результата поиска не отличается от сортировки строк. - // Если это не так, то исходную таблицу неоходимо скопировать + // Если это не так, то исходную таблицу необходимо скопировать // с фильтром по подсистеме и отсортировать по наименованию. Если НачалоСПродолжением И ВариантовВыведено = КоличествоВТекущуюКолонку Тогда diff --git a/SSL/src/CommonForms/ПараметрыАдминистрированияСервернойИБ/Form.form b/SSL/src/CommonForms/ПараметрыАдминистрированияСервернойИБ/Form.form index 68b1d1445..667b6068d 100644 --- a/SSL/src/CommonForms/ПараметрыАдминистрированияСервернойИБ/Form.form +++ b/SSL/src/CommonForms/ПараметрыАдминистрированияСервернойИБ/Form.form @@ -26,7 +26,7 @@ НеразделенныйАдминистраторИБРасширеннаяПодсказка - 42 + 46 Label true true @@ -55,6 +55,51 @@ Normal
            + + ПарольНеразделенногоАдминистратораИБ + 36 + + <key>ru</key> + <value>Пароль</value> + + true + true + + true + + + ПарольАдминистратораИБ + + + ПарольНеразделенногоАдминистратораИБРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + + ПарольНеразделенногоАдминистратораИБКонтекстноеМеню + 37 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + true true @@ -70,7 +115,7 @@ РазделениеДанныхРасширеннаяПодсказка - 41 + 45 Label true true @@ -81,7 +126,6 @@ Page Vertical - auto
            @@ -108,7 +152,7 @@ АдминистраторИБРасширеннаяПодсказка - 45 + 51 Label true true @@ -127,10 +171,59 @@ Left true - 22 true true - false + true + false + true + true + true + Normal + + + + ПарольАдминистратораИБ + 27 + + <key>ru</key> + <value>Пароль</value> + + true + true + + true + + + ПарольАдминистратораИБ + + + ru + Пароль администратора информационной базы, от имени которого выполняется принудительное отключение сеансов + + + ПарольАдминистратораИБРасширеннаяПодсказка + 53 + Label + true + true + + Left + + + + ПарольАдминистратораИБКонтекстноеМеню + 28 + true + + InputField + Enter + true + Left + true + + true + true + true true true true @@ -148,7 +241,7 @@ НетРазделенияДанныхРасширеннаяПодсказка - 44 + 50 Label true true @@ -169,7 +262,7 @@ РежимРаботыРасширеннаяПодсказка - 40 + 44 Label true true @@ -182,57 +275,6 @@ Auto - - ПарольАдминистратораИБ - 27 - - <key>ru</key> - <value>Пароль</value> - - true - true - - true - - - ПарольАдминистратораИБ - - - ru - Пароль администратора информационной базы, от имени которого выполняется принудительное отключение сеансов - - - ПарольАдминистратораИБРасширеннаяПодсказка - 47 - Label - true - true - - Left - - - - ПарольАдминистратораИБКонтекстноеМеню - 28 - true - - InputField - Enter - true - Left - true - - 15 - true - true - false - true - true - true - true - Normal - - true true @@ -240,11 +282,11 @@ <key>ru</key> - <value>Укажите администратора информационной базы:</value> + <value>Администратор информационной базы:</value> ГруппаАдминистрированиеРасширеннаяПодсказка - 39 + 43 Label true true @@ -256,7 +298,6 @@ Vertical Auto - NormalSeparation true true auto @@ -264,61 +305,28 @@ Auto
            - - КластерТребуетАвторизации - 7 - true - true - - true - - - КластерТребуетАвторизации - - Right - - OnChange - КластерТребуетАвторизацииПриИзменении - - - КластерТребуетАвторизацииРасширеннаяПодсказка - 49 - Label - true - true - - Left - - - - КластерТребуетАвторизацииКонтекстноеМеню - 8 - true - - CheckBoxField - Enter - true - Left - true - - - ГруппаАвторизацияКластера - 9 + ГруппаКластерТребуетАвторизации + 39 - ИмяАдминистратораКластера - 10 + КластерТребуетАвторизации + 7 true true true - ИмяАдминистратораКластера + КластерТребуетАвторизации + Right + + OnChange + КластерТребуетАвторизацииПриИзменении + - ИмяАдминистратораКластераРасширеннаяПодсказка - 52 + КластерТребуетАвторизацииРасширеннаяПодсказка + 56 Label true true @@ -327,40 +335,117 @@ - ИмяАдминистратораКластераКонтекстноеМеню - 11 + КластерТребуетАвторизацииКонтекстноеМеню + 8 true - InputField + CheckBoxField Enter true Left true - - 15 - true - true - false - true - true - true - Normal - + - - ПарольАдминистратораКластера - 12 + + ГруппаАвторизацияКластера + 9 + + ИмяАдминистратораКластера + 10 + true + true + + true + + + ИмяАдминистратораКластера + + + ИмяАдминистратораКластераРасширеннаяПодсказка + 59 + Label + true + true + + Left + + + + ИмяАдминистратораКластераКонтекстноеМеню + 11 + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + Normal + + + + ПарольАдминистратораКластера + 12 + true + true + + true + + + ПарольАдминистратораКластера + + + ПарольАдминистратораКластераРасширеннаяПодсказка + 61 + Label + true + true + + Left + + + + ПарольАдминистратораКластераКонтекстноеМеню + 13 + true + + InputField + Enter + true + Left + true + + 15 + true + true + false + true + true + true + true + Normal + + true true true - - ПарольАдминистратораКластера - + + <key>ru</key> + <value>Параметры авторизации кластера серверов</value> + - ПарольАдминистратораКластераРасширеннаяПодсказка - 54 + ГруппаАвторизацияКластераРасширеннаяПодсказка + 58 Label true true @@ -368,26 +453,14 @@ Left - - ПарольАдминистратораКластераКонтекстноеМеню - 13 - true - - InputField - Enter - true - Left - true - - 15 - true - true - false - true - true - true - true - Normal + UsualGroup + + Vertical + Auto + true + true + Auto + Auto true @@ -395,13 +468,9 @@ true - - <key>ru</key> - <value>Параметры авторизации кластера серверов</value> - - ГруппаАвторизацияКластераРасширеннаяПодсказка - 51 + ГруппаКластерТребуетАвторизацииРасширеннаяПодсказка + 55 Label true true @@ -413,67 +482,36 @@ Vertical Auto + WeakSeparation true true + auto Auto Auto - - НестандартныеПорты - 14 - true - true - - true - - - НестандартныеПорты - - Right - - OnChange - НестандартныеПортыПриИзменении - - - НестандартныеПортыРасширеннаяПодсказка - 56 - Label - true - true - - Left - - - - НестандартныеПортыКонтекстноеМеню - 15 - true - - CheckBoxField - Enter - true - Left - true - - - ГруппаПорты - 16 + ГруппаНестандартныеПорты + 38 - ПортКластераСерверов - 17 + НестандартныеПорты + 14 true true true - ПортКластераСерверов + НестандартныеПорты + Right + + OnChange + НестандартныеПортыПриИзменении + - ПортКластераСерверовРасширеннаяПодсказка - 59 + НестандартныеПортыРасширеннаяПодсказка + 64 Label true true @@ -482,38 +520,112 @@ - ПортКластераСерверовКонтекстноеМеню - 18 + НестандартныеПортыКонтекстноеМеню + 15 true - InputField + CheckBoxField Enter true Left true - - true - true - true - true - true - Normal - + - - ПортАгентаСервера - 19 + + ГруппаПорты + 16 + + ПортКластераСерверов + 17 + true + true + + true + + + ПортКластераСерверов + + + ПортКластераСерверовРасширеннаяПодсказка + 67 + Label + true + true + + Left + + + + ПортКластераСерверовКонтекстноеМеню + 18 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + + + ПортАгентаСервера + 19 + true + true + + true + + + ПортАгентаСервера + + + ПортАгентаСервераРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + + ПортАгентаСервераКонтекстноеМеню + 20 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + Normal + + true true true - - ПортАгентаСервера - + + <key>ru</key> + <value>Порты</value> + - ПортАгентаСервераРасширеннаяПодсказка - 61 + ГруппаПортыРасширеннаяПодсказка + 66 Label true true @@ -521,23 +633,14 @@ Left - - ПортАгентаСервераКонтекстноеМеню - 20 - true - - InputField - Enter - true - Left - true - - true - true - true - true - true - Normal + UsualGroup + + Vertical + Auto + true + true + Auto + Auto true @@ -545,13 +648,9 @@ true - - <key>ru</key> - <value>Порты</value> - - ГруппаПортыРасширеннаяПодсказка - 58 + ГруппаНестандартныеПортыРасширеннаяПодсказка + 63 Label true true @@ -563,8 +662,10 @@ Vertical Auto + WeakSeparation true true + auto Auto Auto @@ -584,7 +685,7 @@ ФормаOKРасширеннаяПодсказка - 36 + 40 Label true true @@ -610,7 +711,7 @@ ФормаОтменаРасширеннаяПодсказка - 37 + 41 Label true true @@ -637,7 +738,7 @@ false СправкаРасширеннаяПодсказка - 38 + 42 Label true true diff --git a/SSL/src/CommonForms/ПараметрыАдминистрированияСервернойИБ/Help/ru.html b/SSL/src/CommonForms/ПараметрыАдминистрированияСервернойИБ/Help/ru.html index ea3bf8512..c3763f873 100644 --- a/SSL/src/CommonForms/ПараметрыАдминистрированияСервернойИБ/Help/ru.html +++ b/SSL/src/CommonForms/ПараметрыАдминистрированияСервернойИБ/Help/ru.html @@ -1,4 +1,4 @@ - +

            В этой форме задаются параметры доступа к кластеру серверов для выполнения различных административных действий с клиент-серверной информационной базой:

            • имя и пароль администратора информационной базы для выполнения блокировки регламентных и фоновых заданий от его имени;
            • имя и пароль одного из администратора кластера серверов, от имени которого выполняется принудительное завершение (отключение) сеансов пользователей; не задается, если в кластере серверов не задан ни один администратор; diff --git a/SSL/src/CommonForms/ПараметрыПроксиСервера/Form.form b/SSL/src/CommonForms/ПараметрыПроксиСервера/Form.form index 2ca1a6a97..a67ee071d 100644 --- a/SSL/src/CommonForms/ПараметрыПроксиСервера/Form.form +++ b/SSL/src/CommonForms/ПараметрыПроксиСервера/Form.form @@ -707,6 +707,10 @@ Right true + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии diff --git a/SSL/src/CommonForms/ПараметрыПроксиСервера/Help/ru.html b/SSL/src/CommonForms/ПараметрыПроксиСервера/Help/ru.html index 5915be9b2..cf4da606d 100644 --- a/SSL/src/CommonForms/ПараметрыПроксиСервера/Help/ru.html +++ b/SSL/src/CommonForms/ПараметрыПроксиСервера/Help/ru.html @@ -1,4 +1,4 @@ - +

              Для доступа в Интернет с клиентских компьютеров параметры прокси‑сервера задаются на каждом клиентском рабочем месте (по команде Персональные настройки в разделе Настройка и администрирование).

              При использовании клиент‑серверной версии 1С:Предприятия параметры прокси‑сервера также указываются и для сервера 1С:Предприятия (форма настроек параметров системы в разделе Настройка и администрирование). В общем случае, параметры прокси-сервера для клиентских рабочих мест и сервера 1С:Предприятия могут различаться.

              Настройка параметров прокси-сервера для механизмов, расчитанных на работу с веб-сервисами
              При обращении к веб-сервисам параметры прокси-сервера зачитываются автоматически из специального конфигурационного файла "inetcfg.xml", расположенного в каталоге конфигурационных файлов платформы 1С:Предприятие. Каталог конфигурационных файлов платформы 1С:Предприятие, как правило, располагается по адресу "<Каталог установки платформы 1С:Предприятие>\conf\", например "C:\Program Files\1cv82\8.2.16.362\bin\conf\". Если в файле "<Каталог установки платформы 1С:Предприятие\conf\conf.cfg" задан параметр "ConfLocation=<Каталог конфигурационных файлов>", то конфигурационные файлы платформы 1С:Предприятие располагаются в каталоге <Каталог конфигурационных файлов> (как правило, это "C:\Program Files\1cv82\conf\" или "C:\Program Files\1cv8\conf\").

              diff --git a/SSL/src/CommonForms/ПараметрыПроксиСервера/Module.bsl b/SSL/src/CommonForms/ПараметрыПроксиСервера/Module.bsl index 5a3aceba9..0a3262612 100644 --- a/SSL/src/CommonForms/ПараметрыПроксиСервера/Module.bsl +++ b/SSL/src/CommonForms/ПараметрыПроксиСервера/Module.bsl @@ -1,4 +1,3 @@ - //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -67,7 +66,7 @@ // 0 - Не использовать прокси-сервер (по умолчанию, соответствует Новый ИнтернетПрокси(Ложь)) // 1 - Использовать системные настройки прокси-сервера (соответствует Новый ИнтернетПрокси(Истина)) // 2 - Использовать свои настройки прокси-сервера (соответствует ручной настройке параметров прокси-сервера) - // Для последнего становятся достуно ручное изменение параметров прокси-сервера + // Для последнего становятся доступно ручное изменение параметров прокси-сервера ВариантИспользованияПроксиСервера = ?(ИспользоватьПрокси, ?(ИспользоватьСистемныеНастройки = Истина, 1, 2), 0); Если ВариантИспользованияПроксиСервера = 0 Тогда ИнициализироватьЭлементыФормы(ЭтаФорма, ПустыеНастройкиПроксиСервера()); @@ -100,6 +99,29 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ДополнительныеПараметрыПроксиСервера") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + Для Каждого КлючИЗначение Из ВыбранноеЗначение Цикл + Если КлючИЗначение.Ключ <> "НеИспользоватьПроксиДляАдресов" Тогда + ЭтаФорма[КлючИЗначение.Ключ] = КлючИЗначение.Значение; + КонецЕсли; + КонецЦикла; + + СерверыИсключений = ВыбранноеЗначение.НеИспользоватьПроксиДляАдресов; + + Модифицированность = Истина; + + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) @@ -132,7 +154,7 @@ // 0 - Не использовать прокси-сервер (по умолчанию, соответствует Новый ИнтернетПрокси(Ложь)) // 1 - Использовать системные настройки прокси-сервера (соответствует Новый ИнтернетПрокси(Истина)) // 2 - Использовать свои настройки прокси-сервера (соответствует ручной настройке параметров прокси-сервера) - // Для последнего становятся достуно ручное изменение параметров прокси-сервера + // Для последнего становятся доступно ручное изменение параметров прокси-сервера Если ВариантИспользованияПроксиСервера = 0 Тогда НастройкиПрокси = ПустыеНастройкиПроксиСервера(); ИначеЕсли ВариантИспользованияПроксиСервера = 1 Тогда @@ -166,22 +188,7 @@ ПараметрыФормы.Вставить("НеИспользоватьПроксиДляАдресов", СерверыИсключений); - ДополнительныеНастройки = ОткрытьФормуМодально("ОбщаяФорма.ДополнительныеПараметрыПроксиСервера", - ПараметрыФормы); - - Если ТипЗнч(ДополнительныеНастройки) = Тип("Структура") Тогда - - Для каждого ИмяРеквизитаЗначение Из ДополнительныеНастройки Цикл - Если ИмяРеквизитаЗначение.Ключ <> "НеИспользоватьПроксиДляАдресов" Тогда - ЭтаФорма[ИмяРеквизитаЗначение.Ключ] = ИмяРеквизитаЗначение.Значение; - КонецЕсли; - КонецЦикла; - - СерверыИсключений = ДополнительныеНастройки.НеИспользоватьПроксиДляАдресов; - - Модифицированность = Истина; - - КонецЕсли; + ОткрытьФорму("ОбщаяФорма.ДополнительныеПараметрыПроксиСервера", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -342,11 +349,11 @@ ЭтоФайловаяИБ = ОбщегоНазначенияПовтИсп.РежимРаботыПрограммы().Файловый; ТекстВопроса = ""; Если ЭтоФайловаяИБ И НастройкаПроксиНаКлиенте Тогда - ТекстВопроса = НСтр("ru = 'Возможно применить настройки параметров прокси-сервера для механизмов, расчитанных на работу с веб-сервисами. + ТекстВопроса = НСтр("ru = 'Возможно применить настройки параметров прокси-сервера для механизмов, рассчитанных на работу с веб-сервисами. |Для этого необходимо сохранить настройки параметров прокси-сервера в файле конфигурации сети на этом компьютере. |Сохранить настройки параметров прокси-сервера в файле конфигурации сети на этом компьютере (подробнее см. в справке)?'"); ИначеЕсли НЕ ЭтоФайловаяИБ И НЕ НастройкаПроксиНаКлиенте Тогда - ТекстВопроса = НСтр("ru = 'Возможно применить настройки параметров прокси-сервера для механизмов, расчитанных на работу с веб-сервисами. + ТекстВопроса = НСтр("ru = 'Возможно применить настройки параметров прокси-сервера для механизмов, рассчитанных на работу с веб-сервисами. |Для этого необходимо сохранить настройки параметров прокси-сервера в файле конфигурации сети на компьютере сервера 1С:Предприятия. |Сохранить настройки параметров прокси-сервера в файле конфигурации сети на компьютере сервера 1С:Предприятия (подробнее см. в справке)?'"); КонецЕсли; @@ -522,7 +529,7 @@ КонецПроцедуры // Формирует двоичные данные конфигурационного файла настроек сети из -// даных формы. +// данных формы. // Возвращаемое значение: Строка - адрес двоичных данных конфигурационного // файла во временном хранилище. &НаСервере @@ -576,7 +583,7 @@ КонецЕсли; Если ЭтоФайловаяИБ Тогда - ТекстСообщения = НСтр("ru = 'Файл ""%1"" удален на этом компьюетере.'"); + ТекстСообщения = НСтр("ru = 'Файл ""%1"" удален на этом компьютере.'"); Иначе ТекстСообщения = НСтр("ru = 'Файл ""%1"" удален на сервере 1С:Предприятия. |Если в кластере задействовано несколько рабочих серверов, то необходимо вручную на каждом рабочем сервере @@ -592,7 +599,7 @@ ЗаписатьНастройкиПроксиИзДанныхФормыВФайлНаДиске(ПутьККонфФайлу); Если ЭтоФайловаяИБ Тогда - ТекстСообщения = НСтр("ru = 'Настройки прокси-сервера записаны в файл ""%1"" на этом компьюетере.'"); + ТекстСообщения = НСтр("ru = 'Настройки прокси-сервера записаны в файл ""%1"" на этом компьютере.'"); Иначе ТекстСообщения = НСтр("ru = 'Настройки прокси-сервера записаны в файл ""%1"" на сервере 1С:Предприятия. |Если в кластере задействовано несколько рабочих серверов, то необходимо сохранить настройки в файл (Сохранить как...), @@ -774,3 +781,4 @@ Возврат Результат; КонецФункции + diff --git a/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/Help/ru.html b/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/Help/ru.html deleted file mode 100644 index afe117893..000000000 --- a/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/Help/ru.html +++ /dev/null @@ -1,3 +0,0 @@ - -

              Рекомендации по установке пароля для синхронизации данных.

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

              -

              Надежный пароль должен быть малопонятным выражением.

              Примеры надежных паролей:
              “nj7{jhjibq*Gfhjkm,
              F5”njnGhkmNj;t{HI.

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

              Примеры ненадежных паролей:
              Иванов,
              qwerty,
              12345678,
              123123123.

              \ No newline at end of file diff --git a/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/Module.bsl b/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/Module.bsl deleted file mode 100644 index 1342068d3..000000000 --- a/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/Module.bsl +++ /dev/null @@ -1,86 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ - -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. - Возврат; - КонецЕсли; - - ОбменДаннымиСервер.ПроверитьВозможностьАдминистрированияОбменов(); - - УстановитьПривилегированныйРежим(Истина); - - Пользователь = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ПользовательДляСинхронизацииДанных(Параметры.АвтономноеРабочееМесто); - -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ КОМАНД ФОРМЫ - -&НаКлиенте -Процедура ЗаписатьИЗакрыть(Команда) - - Отказ = Ложь; - - Если ПустаяСтрока(Пароль) Тогда - - НСтрока = НСтр("ru = 'Не задан пароль.'"); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтрока,,"Пароль",, Отказ); - - ИначеЕсли Пароль <> ПодтверждениеПароля Тогда - - НСтрока = НСтр("ru = 'Пароль и подтверждение пароля не совпадают.'"); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтрока,, "ПодтверждениеПароля",, Отказ); - - КонецЕсли; - - Если Отказ Тогда - Возврат; - КонецЕсли; - - ИзменитьПользователя(); - - Закрыть(); - -КонецПроцедуры - -&НаКлиенте -Процедура Подробно(Команда) - - ОткрытьЗначение(Пользователь); - -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ - -&НаСервере -Процедура ИзменитьПользователя() - - ОбменДаннымиСервер.ПроверитьВозможностьАдминистрированияОбменов(); - - УстановитьПривилегированныйРежим(Истина); - - Пользователь = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ПользовательДляСинхронизацииДанных(Параметры.АвтономноеРабочееМесто); - - Если Не ЗначениеЗаполнено(Пользователь) Тогда - ВызватьИсключение НСтр("ru = 'Пользователя для синхронизации данных с текущим автономным рабочим местом не существует.'"); - КонецЕсли; - - ПользовательОбъект = Пользователь.ПолучитьОбъект(); - - Если ПользовательОбъект = Неопределено Тогда - ВызватьИсключение НСтр("ru = 'Пользователя для синхронизации данных с текущим автономным рабочим местом не существует.'"); - КонецЕсли; - - ОписаниеПользователяИБ = Новый Структура; - ОписаниеПользователяИБ.Вставить("Действие", "Записать"); - ОписаниеПользователяИБ.Вставить("Пароль", Пароль); - - ПользовательОбъект.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ); - - ПользовательОбъект.Записать(); - -КонецПроцедуры diff --git a/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/ПарольДляСинхронизацииДанных.mdo b/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/ПарольДляСинхронизацииДанных.mdo deleted file mode 100644 index ec75a6668..000000000 --- a/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/ПарольДляСинхронизацииДанных.mdo +++ /dev/null @@ -1,15 +0,0 @@ - - - ПарольДляСинхронизацииДанных - - ru - Пароль для синхронизации данных - - - - ru - - - PersonalComputer - MobileDevice - diff --git a/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Form.form b/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Form.form index f1195b404..bce925dcc 100644 --- a/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Form.form +++ b/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Form.form @@ -326,6 +326,10 @@ Right true + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии @@ -477,12 +481,6 @@ Auto Auto - - ВебКлиентВLinux - - Boolean - - diff --git a/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Help/ru.html b/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Help/ru.html index 858b9763c..5530e8837 100644 --- a/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Help/ru.html +++ b/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Help/ru.html @@ -1,4 +1,4 @@ - +

              В форме выполняются персональные настройки электронной цифровой подписи (ЭЦП).

            Настройка
            diff --git a/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Module.bsl b/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Module.bsl index 0c4c5a45a..9725fdc78 100644 --- a/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Module.bsl +++ b/SSL/src/CommonForms/ПерсональныеНастройкиЭЦП/Module.bsl @@ -25,15 +25,13 @@ ПутьМодуляКриптографии = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ЭЦП", "ПутьМодуляКриптографии"); - Если НЕ Параметры.ВебКлиентВLinux Тогда - Элементы.ПараметрыВебКлиентаПодУправлениемLinux.Видимость = Ложь; - КонецЕсли; + Элементы.ПараметрыВебКлиентаПодУправлениемLinux.Видимость = ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() И ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент(); ОтпечатокЛичногоСертификатаДляШифрования = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ЭЦП", "ОтпечатокЛичногоСертификатаДляШифрования"); Если НЕ Параметры.Свойство("ПоказыватьНастройкиШифрования") Тогда Элементы.ЛичныйСертификатДляШифрования.Видимость = Ложь; - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -52,6 +50,23 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборСертификата") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + ОтпечатокЛичногоСертификатаДляШифрования = ВыбранноеЗначение.Отпечаток; + СтруктураСертификата = ЭлектроннаяЦифроваяПодписьКлиент.ЗаполнитьСтруктуруСертификатаПоОтпечатку(ОтпечатокЛичногоСертификатаДляШифрования); + ЛичныйСертификатДляШифрования = СтруктураСертификата.КомуВыдан; + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -69,17 +84,9 @@ МассивСтруктурЛичныхСертификатов = ЭлектроннаяЦифроваяПодписьКлиент.ПолучитьМассивСтруктурСертификатов(Истина); // ТолькоЛичные - ПараметрыФормы = Новый Структура("МассивСтруктурСертификатов", МассивСтруктурЛичныхСертификатов); - СтруктураВозврата = ОткрытьФормуМодально("ОбщаяФорма.ВыборСертификата", ПараметрыФормы); - - Если ТипЗнч(СтруктураВозврата) = Тип("Структура") Тогда - - ОтпечатокЛичногоСертификатаДляШифрования = СтруктураВозврата.Отпечаток; - - СтруктураСертификата = ЭлектроннаяЦифроваяПодписьКлиент.ЗаполнитьСтруктуруСертификатаПоОтпечатку(ОтпечатокЛичногоСертификатаДляШифрования); - ЛичныйСертификатДляШифрования = СтруктураСертификата.КомуВыдан; - - КонецЕсли; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("МассивСтруктурСертификатов", МассивСтруктурЛичныхСертификатов); + ОткрытьФорму("ОбщаяФорма.ВыборСертификата", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -162,4 +169,3 @@ Возврат Истина; КонецФункции - diff --git a/SSL/src/CommonForms/ПечатьДокументов/Form.form b/SSL/src/CommonForms/ПечатьДокументов/Form.form index 16415fdab..9f23d05ce 100644 --- a/SSL/src/CommonForms/ПечатьДокументов/Form.form +++ b/SSL/src/CommonForms/ПечатьДокументов/Form.form @@ -1399,6 +1399,10 @@ Lefttrue + + ChoiceProcessing + ОбработкаВыбора + NotificationProcessing ОбработкаОповещения @@ -2113,6 +2117,11 @@ true + + ПараметрыИсточника + + true + diff --git a/SSL/src/CommonForms/ПечатьДокументов/Module.bsl b/SSL/src/CommonForms/ПечатьДокументов/Module.bsl index ff5a1a045..8b1430a3b 100644 --- a/SSL/src/CommonForms/ПечатьДокументов/Module.bsl +++ b/SSL/src/CommonForms/ПечатьДокументов/Module.bsl @@ -10,6 +10,18 @@ Возврат; КонецЕсли; + // поддержка обратной совместимости с 2.1.3 + ПараметрыПечати = Параметры.ПараметрыПечати; + Если Параметры.ПараметрыПечати = Неопределено Тогда + ПараметрыПечати = Новый Структура; + КонецЕсли; + Если Не ПараметрыПечати.Свойство("ДополнительныеПараметры") Тогда + Параметры.ПараметрыПечати = Новый Структура("ДополнительныеПараметры", ПараметрыПечати); + Для Каждого ПараметрПечати Из ПараметрыПечати Цикл + Параметры.ПараметрыПечати.Вставить(ПараметрПечати.Ключ, ПараметрПечати.Значение); + КонецЦикла; + КонецЕсли; + СформироватьПечатныеФормы(КоллекцияПечатныхФорм, Параметры.ИменаМакетов, Отказ); Если Отказ Тогда Возврат; @@ -38,6 +50,38 @@ УстановитьТекущуюСтраницу(); КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.СохранениеПечатнойФормы") Тогда + + Если ВыбранноеЗначение <> Неопределено И ВыбранноеЗначение <> КодВозвратаДиалога.Отмена Тогда + ФайлыВоВременномХранилище = ПоместитьТабличныеДокументыВоВременноеХранилище(ВыбранноеЗначение); + Если ВыбранноеЗначение.ВариантСохранения = "СохранитьВПапку" Тогда + СохранитьПечатныеФормыВПапку(ФайлыВоВременномХранилище, ВыбранноеЗначение.ПапкаДляСохранения); + Иначе + ПрисоединитьПечатныеФормыКОбъекту(ФайлыВоВременномХранилище, ВыбранноеЗначение.ОбъектДляПрикрепления); + Состояние(НСтр("ru = 'Сохранение успешно завершено.'")); + КонецЕсли; + КонецЕсли; + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборФорматаВложений") + Или ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ПодготовкаНовогоПисьма") Тогда + + Если ВыбранноеЗначение <> Неопределено И ВыбранноеЗначение <> КодВозвратаДиалога.Отмена Тогда + СписокВложений = ПоместитьТабличныеДокументыВоВременноеХранилище(ВыбранноеЗначение); + ПараметрыОтправки = ПараметрыВывода.ПараметрыОтправки; + Получатели = ПараметрыОтправки.Получатель; + Если ВыбранноеЗначение.Свойство("Получатели") Тогда + Получатели = ВыбранноеЗначение.Получатели; + КонецЕсли; + РаботаСПочтовымиСообщениямиКлиент.ОткрытьФормуОтправкиПочтовогоСообщения( , Получатели, ПараметрыОтправки.Тема, ПараметрыОтправки.Текст, СписокВложений, Истина); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПриЗакрытии() @@ -62,12 +106,22 @@ НастройкаПечатнойФормы = ТекущаяНастройкаПечатнойФормы(); - Если Источник = УникальныйИдентификатор И Параметр.ИмяОбъектаМетаданныхМакета = НастройкаПечатнойФормы.ПутьКМакету Тогда - Если ИмяСобытия = "Запись_ПользовательскиеМакетыПечати" Тогда + Если ИмяСобытия = "Запись_ПользовательскиеМакетыПечати" + И Источник.ВладелецФормы = ЭтаФорма + И Параметр.ИмяОбъектаМетаданныхМакета = НастройкаПечатнойФормы.ПутьКМакету Тогда ПодключитьОбработчикОжидания("ОбновитьТекущуюПечатнуюФорму",0.1,Истина); - ИначеЕсли ИмяСобытия = "ОтказОтИзмененияМакета" Тогда + ИначеЕсли (ИмяСобытия = "ОтказОтИзмененияМакета" + Или Имясобытия = "ОтменаРедактированияТабличногоДокумента" + И Параметр.ИмяОбъектаМетаданныхМакета = НастройкаПечатнойФормы.ПутьКМакету) + И Источник.ВладелецФормы = ЭтаФорма Тогда ОтобразитьСостояниеТекущейПечатнойФормы(); - КонецЕсли; + ИначеЕсли ИмяСобытия = "Запись_ТабличныйДокумент" + И Параметр.ИмяОбъектаМетаданныхМакета = НастройкаПечатнойФормы.ПутьКМакету + И Источник.ВладелецФормы = ЭтаФорма Тогда + Макет = Параметр.ТабличныйДокумент; + АдресМакетаВоВременномХранилище = ПоместитьВоВременноеХранилище(Макет); + ЗаписатьМакет(Параметр.ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище); + ПодключитьОбработчикОжидания("ОбновитьТекущуюПечатнуюФорму",0.1,Истина); КонецЕсли; КонецПроцедуры @@ -140,38 +194,22 @@ &НаКлиенте Процедура Сохранить(Команда) - НастройкиСохранения = ОткрытьФормуМодально("ОбщаяФорма.СохранениеПечатнойФормы", Новый Структура("ОбъектыПечати", ОбъектыПечати)); - Если НастройкиСохранения <> Неопределено И НастройкиСохранения <> КодВозвратаДиалога.Отмена Тогда - ФайлыВоВременномХранилище = ПоместитьТабличныеДокументыВоВременноеХранилище(НастройкиСохранения); - Если НастройкиСохранения.ВариантСохранения = "СохранитьВПапку" Тогда - СохранитьПечатныеФормыВПапку(ФайлыВоВременномХранилище, НастройкиСохранения.ПапкаДляСохранения); - Иначе - ПрисоединитьПечатныеФормыКОбъекту(ФайлыВоВременномХранилище, НастройкиСохранения.ОбъектДляПрикрепления); - Состояние(НСтр("ru = 'Сохранение успешно завершено.'")); - КонецЕсли; - КонецЕсли; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОбъектыПечати", ОбъектыПечати); + ОткрытьФорму("ОбщаяФорма.СохранениеПечатнойФормы", ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура Отправить(Команда) - ПараметрыОткрытия = Новый Структура; + ПараметрыФормы = Новый Структура; ИмяОткрываемойФормы = "ОбщаяФорма.ВыборФорматаВложений"; Если ПолучателейБольшеОдного(ПараметрыВывода.ПараметрыОтправки.Получатель) Тогда - ПараметрыОткрытия.Вставить("Получатели", ПараметрыВывода.ПараметрыОтправки.Получатель); + ПараметрыФормы.Вставить("Получатели", ПараметрыВывода.ПараметрыОтправки.Получатель); ИмяОткрываемойФормы = "ОбщаяФорма.ПодготовкаНовогоПисьма"; КонецЕсли; - НастройкиСохранения = ОткрытьФормуМодально(ИмяОткрываемойФормы, ПараметрыОткрытия); - Если НастройкиСохранения <> Неопределено И НастройкиСохранения <> КодВозвратаДиалога.Отмена Тогда - СписокВложений = ПоместитьТабличныеДокументыВоВременноеХранилище(НастройкиСохранения); - ПараметрыОтправки = ПараметрыВывода.ПараметрыОтправки; - Получатели = ПараметрыОтправки.Получатель; - Если НастройкиСохранения.Свойство("Получатели") Тогда - Получатели = НастройкиСохранения.Получатели; - КонецЕсли; - РаботаСПочтовымиСообщениямиКлиент.ОткрытьФормуОтправкиПочтовогоСообщения( , Получатели, ПараметрыОтправки.Тема, ПараметрыОтправки.Текст, СписокВложений, Истина); - КонецЕсли; + ОткрытьФорму(ИмяОткрываемойФормы, ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -261,12 +299,16 @@ // формирование табличных документов Если ЗначениеЗаполнено(Параметры.ИсточникДанных) Тогда - ПечатьВыполнена = УправлениеПечатьюПереопределяемый.ПечатьПоВнешнемуИсточнику(Параметры.ИсточникДанных, - Параметры.ПараметрыИсточника, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); - Отказ = Отказ Или Не ПечатьВыполнена; + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПечатьПоВнешнемуИсточнику(Параметры.ИсточникДанных, + Параметры.ПараметрыИсточника, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); + Иначе + Отказ = Истина; + КонецЕсли; Иначе УправлениеПечатью.СформироватьПечатныеФормы(Параметры.ИмяМенеджераПечати, ИменаМакетов, - Параметры.ПараметрКоманды, Параметры.ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); + Параметры.ПараметрКоманды, Параметры.ПараметрыПечати.ДополнительныеПараметры, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); КонецЕсли; // установка признака сохранения печатной формы в файл (не открывать форму, сразу сохранять в файл) @@ -426,7 +468,7 @@ ДобавитьКоличествоЭкземпляровВПредставленияхПечатныхФорм(); КонецЕсли; - ДоступноИзменениеМакетов = Пользователи.РолиДоступны("ИзменениеМакетовПечатныхФорм"); + ДоступноИзменениеМакетов = Пользователи.РолиДоступны("ИзменениеМакетовПечатныхФорм") И ЕстьРедактируемыеМакеты(); Элементы.КнопкаИзменитьМакет.Видимость = ДоступноИзменениеМакетов И ЕстьДанныеДляПечати; // отключение "технологической" страницы, которая нужна только в конфигураторе для дизайна формы @@ -842,6 +884,15 @@ Возврат Результат; КонецФункции +&НаСервере +Функция ЕстьРедактируемыеМакеты() + Результат = Ложь; + Для Каждого НастройкаПечатнойФормы Из НастройкиПечатныхФорм Цикл + Результат = Результат Или Не ПустаяСтрока(НастройкаПечатнойФормы.ПутьКМакету); + КонецЦикла; + Возврат Результат; +КонецФункции + &НаКлиенте Процедура ОткрытьМакетДляРедактирования() @@ -851,15 +902,24 @@ ИмяОбъектаМетаданныхМакета = НастройкаПечатнойФормы.ПутьКМакету; - ПараметрыОткрытия = Новый Структура; - ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", ИмяОбъектаМетаданныхМакета); - ПараметрыОткрытия.Вставить("ТипМакета", "MXL"); #Если ВебКлиент Тогда - ПараметрыОткрытия.Вставить("ЭтоВебКлиент", Истина); + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", ИмяОбъектаМетаданныхМакета); + ПараметрыОткрытия.Вставить("ТипМакета", "MXL"); + ПараметрыОткрытия.Вставить("ЭтоВебКлиент", Истина); + + ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.РедактированиеМакета", ПараметрыОткрытия, ЭтаФорма); + + #Иначе + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ИмяОбъектаМетаданныхМакета", ИмяОбъектаМетаданныхМакета); + ПараметрыОткрытия.Вставить("РежимОткрытияОкна", РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); + ПараметрыОткрытия.Вставить("ИмяДокумента", НастройкаПечатнойФормы.Представление); + ПараметрыОткрытия.Вставить("Редактирование", Истина); + + ОткрытьФорму("ОбщаяФорма.РедактированиеТабличногоДокумента", ПараметрыОткрытия, ЭтаФорма); #КонецЕсли - ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.РедактированиеМакета", ПараметрыОткрытия, ЭтаФорма); - КонецПроцедуры &НаКлиенте @@ -962,3 +1022,7 @@ Возврат Результат; КонецФункции +&НаСервереБезКонтекста +Процедура ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище) + УправлениеПечатью.ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище); +КонецПроцедуры diff --git a/SSL/src/CommonForms/ПодготовкаНовогоПисьма/Form.form b/SSL/src/CommonForms/ПодготовкаНовогоПисьма/Form.form index a1feb62c4..816543f0e 100644 --- a/SSL/src/CommonForms/ПодготовкаНовогоПисьма/Form.form +++ b/SSL/src/CommonForms/ПодготовкаНовогоПисьма/Form.form @@ -942,6 +942,10 @@ Right true + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии @@ -965,7 +969,7 @@ SaveValues Yes 60 - DontBlock + LockOwner Use UseList true diff --git a/SSL/src/CommonForms/ПодготовкаНовогоПисьма/Module.bsl b/SSL/src/CommonForms/ПодготовкаНовогоПисьма/Module.bsl index c4bb64044..4196607a4 100644 --- a/SSL/src/CommonForms/ПодготовкаНовогоПисьма/Module.bsl +++ b/SSL/src/CommonForms/ПодготовкаНовогоПисьма/Module.bsl @@ -3,8 +3,7 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; @@ -45,12 +44,28 @@ СформироватьПредставлениеВыбранныхФорматов(); КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.ВыборФорматаВложений") Тогда + + Если ВыбранноеЗначение <> КодВозвратаДиалога.Отмена И ВыбранноеЗначение <> Неопределено Тогда + УстановитьВыборФормата(ВыбранноеЗначение.ФорматыСохранения); + УпаковатьВАрхив = ВыбранноеЗначение.УпаковатьВАрхив; + СформироватьПредставлениеВыбранныхФорматов(); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ &НаКлиенте Процедура Выбрать(Команда) - Закрыть(ВыбранныеНастройкиФормата()); + РезультатВыбора = ВыбранныеНастройкиФормата(); + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры &НаКлиенте @@ -69,12 +84,9 @@ &НаКлиенте Процедура ФорматВложенийНажатие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; - РезультатВыбораФорматов = ОткрытьФормуМодально("ОбщаяФорма.ВыборФорматаВложений", Новый Структура("НастройкиФормата", ВыбранныеНастройкиФормата())); - Если РезультатВыбораФорматов <> КодВозвратаДиалога.Отмена И РезультатВыбораФорматов <> Неопределено Тогда - УстановитьВыборФормата(РезультатВыбораФорматов.ФорматыСохранения); - УпаковатьВАрхив = РезультатВыбораФорматов.УпаковатьВАрхив; - СформироватьПредставлениеВыбранныхФорматов(); - КонецЕсли; + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("НастройкиФормата", ВыбранныеНастройкиФормата()); + ОткрытьФорму("ОбщаяФорма.ВыборФорматаВложений", ПараметрыОткрытия, ЭтаФорма); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -211,3 +223,4 @@ КонецЦикла; КонецФункции + diff --git a/SSL/src/CommonForms/ПодключениеКонечнойТочки/Module.bsl b/SSL/src/CommonForms/ПодключениеКонечнойТочки/Module.bsl index b360e212c..6da30053c 100644 --- a/SSL/src/CommonForms/ПодключениеКонечнойТочки/Module.bsl +++ b/SSL/src/CommonForms/ПодключениеКонечнойТочки/Module.bsl @@ -29,8 +29,7 @@ Отказ, , ЗакрытьФормуБезусловно, - НСтр("ru = 'Отменить подключение конечной точки?'") - ); + НСтр("ru = 'Отменить подключение конечной точки?'")); КонецПроцедуры @@ -60,7 +59,7 @@ Отбор = Новый Структура; Отбор.Вставить("СобытиеЖурналаРегистрации", СобытиеЖурналаРегистрацииПодключениеКонечнойТочки); - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма", Отбор, ЭтаФорма); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", Отбор, ЭтаФорма); КонецЕсли; Возврат; @@ -94,8 +93,7 @@ НастройкиОтправителяWSПароль, НастройкиПолучателяWSURLВебСервиса, НастройкиПолучателяWSИмяПользователя, - НастройкиПолучателяWSПароль - ); + НастройкиПолучателяWSПароль); КонецПроцедуры diff --git a/SSL/src/CommonForms/ПодписьЭЦП/Help/ru.html b/SSL/src/CommonForms/ПодписьЭЦП/Help/ru.html index 5625568f4..9d3ebdd60 100644 --- a/SSL/src/CommonForms/ПодписьЭЦП/Help/ru.html +++ b/SSL/src/CommonForms/ПодписьЭЦП/Help/ru.html @@ -1,4 +1,4 @@ - +

            Форма предназначена для просмотра основных свойств электронной цифровой подписи (ЭЦП).

            В ней можно посмотреть основные свойства подписи: кому выдан сертификат, кто установил подпись, дату установки подписи, комментарий к подписи.

            По команде "Открыть сертификат" открывается форма просмотра сертификата.

            diff --git a/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Form.form b/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Form.form index 500f1b540..6b9f61e05 100644 --- a/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Form.form +++ b/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Form.form @@ -305,6 +305,23 @@ true + + ПроверитьВозможностьОтправкиИПолучения + + <key>ru</key> + <value>Проверить возможность отправки и получения</value> + + 5 + + Boolean + + + true + + + true + + СохранитьПарольИПродолжить diff --git a/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Help/ru.html b/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Help/ru.html index cc13455df..962483d6a 100644 --- a/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Help/ru.html +++ b/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Для отправки письма необходимо ввести пароль и нажать кнопку "<strong>Продолжить</strong>" на командной панели. Эта форма открывается при отправке письма с учетных записей, в которых пароль не задан.</p> <p>Командная панель формы содержит следующие кнопки:</p> <ul><li><strong>Продолжить</strong> - эта форма закрывается и письмо отправляется diff --git a/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Module.bsl b/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Module.bsl index 5650734e0..092a17460 100644 --- a/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Module.bsl +++ b/SSL/src/CommonForms/ПодтверждениеПароляУчетнойЗаписи/Module.bsl @@ -7,7 +7,7 @@ // // Неопределено - пользователь отказался от ввода пароля // Структура - -// ключ "Статус", булево - истина или ложь в зависмости от успеха вызова +// ключ "Статус", булево - истина или ложь в зависимости от успеха вызова // ключ "Пароль", строка - в случае если статус Истина содержит пароль // ключ "СообщениеОбОшибке" - в случае если статус Истина содержит текст // сообщения об ошибке @@ -26,11 +26,12 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; + Параметры.Свойство("ПроверитьВозможностьОтправкиИПолучения", ПроверитьВозможностьОтправкиИПолучения); + Если Параметры.УчетнаяЗапись.Пустая() Тогда Отказ = Истина; Возврат; @@ -73,7 +74,11 @@ СохранитьПароль(Неопределено); КонецЕсли; - Закрыть(Пароль); + Если ПроверитьВозможностьОтправкиИПолучения Тогда + РаботаСПочтовымиСообщениямиКлиент.ПроверитьВозможностьОтправкиИПолученияЭлектроннойПочты(УчетнаяЗапись, Пароль); + КонецЕсли; + + ОповеститьОВыборе(Пароль); КонецПроцедуры @@ -86,8 +91,7 @@ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( "ФормаПодтвержденияПароляУчетнойЗаписи", УчетнаяЗапись, - Значение - ); + Значение); КонецПроцедуры diff --git a/SSL/src/CommonForms/ПоискПоИндексу/Module.bsl b/SSL/src/CommonForms/ПоискПоИндексу/Module.bsl index f5f42e171..fecdd9f75 100644 --- a/SSL/src/CommonForms/ПоискПоИндексу/Module.bsl +++ b/SSL/src/CommonForms/ПоискПоИндексу/Module.bsl @@ -37,7 +37,7 @@ Параметры.ПризнакАктуальности = НайденоПоИндексу.ПризнакАктуальности; Параметры.АдресВХранилище = НайденоПоИндексу.АдресВХранилище; СкрыватьНеактуальныеАдреса = Параметры.СкрыватьНеактуальныеАдреса; - ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ВводАдреса", "СкрыватьНеактуальныеАдреса", СкрыватьНеактуальныеАдреса); + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("КонтактнаяИнформация.ВводАдреса", "СкрыватьНеактуальныеАдреса", СкрыватьНеактуальныеАдреса); КонецЕсли; ЗначениеВРеквизитФормы(ПолучитьИзВременногоХранилища(Параметры.АдресВХранилище), "НайденныеЗаписиПоИндексу"); @@ -60,7 +60,7 @@ Элементы.НайденныеЗаписиПоИндексу.ПодчиненныеЭлементы.Описание.Видимость = ЕстьОписание; // Восстанавливаем значение флага "Скрывать неактуальные адреса" - Значение = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ВводАдреса", "СкрыватьНеактуальныеАдреса"); + Значение = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("КонтактнаяИнформация.ВводАдреса", "СкрыватьНеактуальныеАдреса"); Если Значение = Неопределено Тогда СкрыватьНеактуальныеАдреса = Ложь; Иначе @@ -86,7 +86,7 @@ &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) - ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить("ВводАдреса", "СкрыватьНеактуальныеАдреса", СкрыватьНеактуальныеАдреса); + ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить("КонтактнаяИнформация.ВводАдреса", "СкрыватьНеактуальныеАдреса", СкрыватьНеактуальныеАдреса); КонецПроцедуры @@ -174,7 +174,7 @@ Функция ОбработатьРезультатПоискаПоИндексу(КодАдресногоЭлемента) // Восстанавливаем значение флага "Скрывать неактуальные адреса" - Значение = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ВводАдреса", "СкрыватьНеактуальныеАдреса"); + Значение = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("КонтактнаяИнформация.ВводАдреса", "СкрыватьНеактуальныеАдреса"); Если Значение = Неопределено Тогда Результат = Новый Структура("СкрыватьНеактуальныеАдреса", Ложь); Иначе diff --git a/SSL/src/CommonForms/ПользователиСервиса/Form.form b/SSL/src/CommonForms/ПользователиСервиса/Form.form index 124d2765c..a055024c1 100644 --- a/SSL/src/CommonForms/ПользователиСервиса/Form.form +++ b/SSL/src/CommonForms/ПользователиСервиса/Form.form @@ -457,6 +457,10 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <handlers> + <event>ChoiceProcessing</event> + <name>ОбработкаВыбора</name> + </handlers> <handlers> <event>OnOpen</event> <name>ПриОткрытии</name> diff --git a/SSL/src/CommonForms/ПользователиСервиса/Module.bsl b/SSL/src/CommonForms/ПользователиСервиса/Module.bsl index 005ea48f8..8fd9ec57f 100644 --- a/SSL/src/CommonForms/ПользователиСервиса/Module.bsl +++ b/SSL/src/CommonForms/ПользователиСервиса/Module.bsl @@ -14,19 +14,30 @@ ВызватьИсключение(НСтр("ru = 'В демонстрационном режиме не доступно добавление новых пользователей'")); КонецЕсли; + // Форма недоступна пока подготовка не закончена. + Доступность = Ложь; + КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) - СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе(ПарольПользователяСервиса, Отказ); + ПодключитьОбработчикОжидания("ОткрытьФормуАутентификацияВСервисе", 0.1, Истина); - Если Отказ Тогда - Возврат; +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.АутентификацияВСервисе") Тогда + Если ВыбранноеЗначение = Неопределено Тогда + ПодключитьОбработчикОжидания("ЗакрытьЭтуФорму", 0.1, Истина); + Иначе + ПарольПользователяСервиса = ВыбранноеЗначение; + ПодготовитьФорму(); + КонецЕсли; КонецЕсли; - ПодготовитьФорму(); - КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -63,6 +74,20 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +&НаКлиенте +Процедура ОткрытьФормуАутентификацияВСервисе() + + СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе(ЭтаФорма); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗакрытьЭтуФорму() + + Закрыть(); + +КонецПроцедуры + &НаСервере Процедура ПодготовитьФорму() @@ -76,7 +101,9 @@ СтрокаПользователя = ПользователиСервиса.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаПользователя, ИнформацияОПользователе); КонецЦикла; - + + Доступность = Истина; + КонецПроцедуры &НаСервере diff --git a/SSL/src/CommonForms/ПраваДоступа/Form.form b/SSL/src/CommonForms/ПраваДоступа/Form.form index 2e51f5373..1b76a040f 100644 --- a/SSL/src/CommonForms/ПраваДоступа/Form.form +++ b/SSL/src/CommonForms/ПраваДоступа/Form.form @@ -1148,6 +1148,10 @@ </items> <horizontalAlign>Left</horizontalAlign> </autoCommandBar> + <handlers> + <event>ChoiceProcessing</event> + <name>ОбработкаВыбора</name> + </handlers> <handlers> <event>NotificationProcessing</event> <name>ОбработкаОповещения</name> @@ -1163,6 +1167,7 @@ <windowOpeningMode>DontBlock</windowOpeningMode> <autoSaveDataInSettings>Use</autoSaveDataInSettings> <saveWindowSettings>true</saveWindowSettings> + <autoTitle>true</autoTitle> <autoUrl>true</autoUrl> <autoFillCheck>true</autoFillCheck> <allowFormCustomize>true</allowFormCustomize> @@ -1508,6 +1513,38 @@ </edit> </columns> </attributes> + <attributes> + <name>ПарольПользователяСервиса</name> + <title> + <key>ru</key> + <value>Пароль пользователя сервиса</value> + + 3 + + + true + + + true + + + + ПолучениеПароляВключитьВГруппуДоступаАдминистраторы + + <key>ru</key> + <value>Получение пароля включить в группу доступа администраторы</value> + + 8 + + Boolean + + + true + + + true + + ВключитьВГруппу diff --git a/SSL/src/CommonForms/ПраваДоступа/Module.bsl b/SSL/src/CommonForms/ПраваДоступа/Module.bsl index cc769fca9..cdbb0e08d 100644 --- a/SSL/src/CommonForms/ПраваДоступа/Module.bsl +++ b/SSL/src/CommonForms/ПраваДоступа/Module.bsl @@ -8,9 +8,6 @@ Возврат; КонецЕсли; - // Установка заголовка формы. - Заголовок = НСтр("ru = 'Права доступа'"); - ПользовательИБПолноправный = Пользователи.ЭтоПолноправныйПользователь(); СвойДоступ = Параметры.Пользователь = Пользователи.АвторизованныйПользователь(); @@ -25,9 +22,9 @@ Элементы.ФормаОтчетПраваДоступа.Видимость = ПользовательИБПолноправный - ИЛИ Параметры.Пользователь = Пользователи.ТекущийПользователь(); + ИЛИ Параметры.Пользователь = Пользователи.АвторизованныйПользователь(); - // Настройка команд для неполноправного пользователя + // Настройка команд для не полноправного пользователя Элементы.ФормаВключитьВГруппу.Видимость = ПользовательИБОтветственный; Элементы.ФормаИсключитьИзГруппы.Видимость = ПользовательИБОтветственный; Элементы.ФормаИзменитьГруппу.Видимость = ПользовательИБОтветственный; @@ -92,6 +89,63 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.ГруппыДоступа.Форма.ВыборПоОтветственному") Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("СправочникСсылка.ГруппыДоступа") + И ЗначениеЗаполнено(ВыбранноеЗначение) Тогда + + Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().РазделениеВключено + И ВыбранноеЗначение = ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда + + ПарольЕщёНеВведен = Ложь; + СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе( + ЭтаФорма, ПарольПользователяСервиса, ПарольЕщёНеВведен); + + Если ПарольЕщёНеВведен Тогда + ПолучениеПароляВключитьВГруппуДоступаАдминистраторы = Истина; + Возврат; + КонецЕсли; + КонецЕсли; + + ОписаниеОшибки = ""; + ИзменитьСоставГруппы(ВыбранноеЗначение, Истина, ОписаниеОшибки); + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + Предупреждение(ОписаниеОшибки); + Иначе + ОповеститьОбИзменении(ВыбранноеЗначение); + Оповестить("Запись_ГруппыДоступа", Новый Структура, ВыбранноеЗначение); + КонецЕсли; + + КонецЕсли; + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.АутентификацияВСервисе") Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + ПарольПользователяСервиса = ВыбранноеЗначение; + + ОписаниеОшибки = ""; + ИзменитьСоставГруппы( + ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы"), + ПолучениеПароляВключитьВГруппуДоступаАдминистраторы, + ОписаниеОшибки); + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + Предупреждение(ОписаниеОшибки); + Иначе + ОповеститьОбИзменении( + ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы")); + + Оповестить("Запись_ГруппыДоступа", Новый Структура, ВыбранноеЗначение); + КонецЕсли; + + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ГруппыДоступа @@ -145,22 +199,7 @@ ПараметрыФормы.Вставить("Выбранные", Выбранные); ПараметрыФормы.Вставить("ПользовательГрупп", Параметры.Пользователь); - НоваяГруппаДоступаПользователя = ОткрытьФормуМодально( - "Справочник.ГруппыДоступа.Форма.ВыборПоОтветственному", ПараметрыФормы); - - Если ТипЗнч(НоваяГруппаДоступаПользователя) = Тип("СправочникСсылка.ГруппыДоступа") - И ЗначениеЗаполнено(НоваяГруппаДоступаПользователя) Тогда - - ОписаниеОшибки = ""; - ИзменитьСоставГруппы(НоваяГруппаДоступаПользователя, Истина, ОписаниеОшибки); - Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда - - Предупреждение(ОписаниеОшибки); - Иначе - ОповеститьОбИзменении(НоваяГруппаДоступаПользователя); - Оповестить("Запись_ГруппыДоступа", Новый Структура, НоваяГруппаДоступаПользователя); - КонецЕсли; - КонецЕсли; + ОткрытьФорму("Справочник.ГруппыДоступа.Форма.ВыборПоОтветственному", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -172,10 +211,22 @@ Возврат; КонецЕсли; + Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().РазделениеВключено + И ТекущаяГруппаДоступа = ПредопределенноеЗначение("Справочник.ГруппыДоступа.Администраторы") Тогда + + ПарольЕщёНеВведен = Ложь; + СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе( + ЭтаФорма, ПарольПользователяСервиса, ПарольЕщёНеВведен); + + Если ПарольЕщёНеВведен Тогда + ПолучениеПароляВключитьВГруппуДоступаАдминистраторы = Ложь; + Возврат; + КонецЕсли; + КонецЕсли; + ОписаниеОшибки = ""; ИзменитьСоставГруппы(ТекущаяГруппаДоступа, Ложь, ОписаниеОшибки); Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда - Предупреждение(ОписаниеОшибки); Иначе ОповеститьОбИзменении(ТекущаяГруппаДоступа); @@ -370,6 +421,18 @@ Возврат; КонецЕсли; + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() + И ГруппаДоступа = Справочники.ГруппыДоступа.Администраторы Тогда + + ДействияСПользователемСервиса = Неопределено; + УправлениеДоступомСлужебный.ПриПолученииДействийСПользователемСервиса(ДействияСПользователемСервиса); + + Если НЕ ДействияСПользователемСервиса.ИзменениеАдминистративногоДоступа Тогда + ВызватьИсключение + НСтр("ru = 'Не достаточно прав доступа для изменения состава администраторов.'"); + КонецЕсли; + КонецЕсли; + УстановитьПривилегированныйРежим(Истина); ГруппаДоступаОбъект = ГруппаДоступа.ПолучитьОбъект(); @@ -386,14 +449,22 @@ КонецЕсли; Если ГруппаДоступаОбъект.Ссылка = Справочники.ГруппыДоступа.Администраторы Тогда - ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Изменение состава администраторов выполняется - |непосредственно в группе доступа %1.'"), - ГруппаДоступаОбъект.Наименование); - Иначе - ГруппаДоступаОбъект.Записать(); + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + ГруппаДоступаОбъект.ДополнительныеСвойства.Вставить( + "ПарольПользователяСервиса", ПарольПользователяСервиса); + Иначе + УправлениеДоступомСлужебный.ПроверитьНаличиеПользователяИБВГруппеДоступаАдминистраторы( + ГруппаДоступаОбъект.Пользователи, ОписаниеОшибки); + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + Возврат; + КонецЕсли; + КонецЕсли; КонецЕсли; + ГруппаДоступаОбъект.Записать(); + РазблокироватьДанныеДляРедактирования(ГруппаДоступаОбъект.Ссылка); ТекущаяГруппаДоступа = ГруппаДоступаОбъект.Ссылка; @@ -447,7 +518,6 @@ КонецФункции - &НаСервере Процедура ЗаполнитьРоли() diff --git a/SSL/src/CommonForms/ПраваДоступаУпрощенно/Form.form b/SSL/src/CommonForms/ПраваДоступаУпрощенно/Form.form index 4a9879491..84778893b 100644 --- a/SSL/src/CommonForms/ПраваДоступаУпрощенно/Form.form +++ b/SSL/src/CommonForms/ПраваДоступаУпрощенно/Form.form @@ -1700,6 +1700,10 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <handlers> + <event>ChoiceProcessing</event> + <name>ОбработкаВыбора</name> + </handlers> <handlers> <event>BeforeClose</event> <name>ПередЗакрытием</name> @@ -1714,6 +1718,7 @@ </handlers> <windowOpeningMode>DontBlock</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> + <autoTitle>true</autoTitle> <autoUrl>true</autoUrl> <group>Vertical</group> <autoFillCheck>true</autoFillCheck> diff --git a/SSL/src/CommonForms/ПраваДоступаУпрощенно/Module.bsl b/SSL/src/CommonForms/ПраваДоступаУпрощенно/Module.bsl index c88bbc5b9..86bb06d4e 100644 --- a/SSL/src/CommonForms/ПраваДоступаУпрощенно/Module.bsl +++ b/SSL/src/CommonForms/ПраваДоступаУпрощенно/Module.bsl @@ -35,10 +35,6 @@ // Заполнение вспомогательных данных. - // Установка заголовка формы - Заголовок = УправлениеДоступомСлужебный.ЗаголовокПодчиненнойФормы( - НСтр("ru = 'Права доступа: %1 (%2)'"), Параметры.Пользователь); - Если ТипЗнч(Параметры.Пользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда Элементы.Профили.Заголовок = НСтр("ru = 'Профили внешнего пользователя'"); Иначе @@ -91,7 +87,7 @@ Запрос = Новый Запрос; Запрос.УстановитьПараметр("Пользователь", Параметры.Пользователь); Запрос.УстановитьПараметр("ОтборПрофилейТолькоТекущегоПользователя", - ОтборПрофилейТолькоТекущегоПользователя); + ОтборПрофилейТолькоТекущегоПользователя); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | Профили.Ссылка, @@ -203,6 +199,18 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.АутентификацияВСервисе") + И ВыбранноеЗначение <> Неопределено Тогда + + ПарольПользователяСервиса = ВыбранноеЗначение; + ЗаписатьИзменения(); + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) @@ -520,10 +528,11 @@ Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().РазделениеВключено И ТребуетсяСинхронизацияССервисом Тогда - Отказ = Ложь; - СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе(ПарольПользователяСервиса, Отказ); + ПарольЕщёНеВведен = Ложь; + СтандартныеПодсистемыКлиент.ПриЗапросеПароляДляАутентификацииВСервисе( + ЭтаФорма, ПарольПользователяСервиса, ПарольЕщёНеВведен); - Если Отказ Тогда + Если ПарольЕщёНеВведен Тогда Возврат; КонецЕсли; КонецЕсли; @@ -655,8 +664,8 @@ | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ - | ПрофилиИзмененыхГрупп.Профиль - |ПОМЕСТИТЬ ПрофилиИзмененыхГрупп + | ПрофилиИзмененныхГрупп.Профиль + |ПОМЕСТИТЬ ПрофилиИзмененныхГрупп |ИЗ | (ВЫБРАТЬ | Профили.Ссылка КАК Профиль @@ -717,7 +726,7 @@ | И (ЗначенияДоступа.ВидДоступа = ТекущиеЗначенияДоступа.ВидДоступа) | И (ЗначенияДоступа.ЗначениеДоступа = ТекущиеЗначенияДоступа.ЗначениеДоступа) | ГДЕ - | ЗначенияДоступа.ВидДоступа ЕСТЬ NULL ) КАК ПрофилиИзмененыхГрупп + | ЗначенияДоступа.ВидДоступа ЕСТЬ NULL ) КАК ПрофилиИзмененныхГрупп |; | |//////////////////////////////////////////////////////////////////////////////// @@ -727,13 +736,13 @@ | Профили.Пометка, | ТекущиеПрофили.ПерсональнаяГруппаДоступа |ИЗ - | ПрофилиИзмененыхГрупп КАК ПрофилиИзмененыхГрупп + | ПрофилиИзмененныхГрупп КАК ПрофилиИзмененныхГрупп | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Профили КАК Профили - | ПО ПрофилиИзмененыхГрупп.Профиль = Профили.Ссылка + | ПО ПрофилиИзмененныхГрупп.Профиль = Профили.Ссылка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТекущиеПрофили КАК ТекущиеПрофили - | ПО ПрофилиИзмененыхГрупп.Профиль = ТекущиеПрофили.Ссылка + | ПО ПрофилиИзмененныхГрупп.Профиль = ТекущиеПрофили.Ссылка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа КАК СправочникПрофили - | ПО (СправочникПрофили.Ссылка = ПрофилиИзмененыхГрупп.Профиль)"; + | ПО (СправочникПрофили.Ссылка = ПрофилиИзмененныхГрупп.Профиль)"; НачатьТранзакцию(); Попытка @@ -922,8 +931,7 @@ НСтр("ru = 'Запрещенные значения (%1) - текущий внешний пользователь всегда разрешен'") ), ?(ТекущиеДанные.ДоступРазрешен, НСтр("ru = 'Запрещенные значения (%1)'"), - НСтр("ru = 'Разрешенные значения (%1)'") ) - ) + НСтр("ru = 'Разрешенные значения (%1)'") )) ), Строка(ТекущиеДанные.ВидДоступа)); diff --git a/SSL/src/CommonForms/ПраваПоЗначениямДоступа/Form.form b/SSL/src/CommonForms/ПраваПоЗначениямДоступа/Form.form index bb3a67dc5..310f3d445 100644 --- a/SSL/src/CommonForms/ПраваПоЗначениямДоступа/Form.form +++ b/SSL/src/CommonForms/ПраваПоЗначениямДоступа/Form.form @@ -1,5 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <title> + <key>ru</key> + <value>Права доступа</value> + ГруппыПрав 1 @@ -638,7 +642,7 @@ Retry SaveValues Yes - DontBlock + LockOwner true true Vertical diff --git a/SSL/src/CommonForms/ПраваПоЗначениямДоступа/Module.bsl b/SSL/src/CommonForms/ПраваПоЗначениямДоступа/Module.bsl index 5210e0a74..0f12a176f 100644 --- a/SSL/src/CommonForms/ПраваПоЗначениямДоступа/Module.bsl +++ b/SSL/src/CommonForms/ПраваПоЗначениямДоступа/Module.bsl @@ -41,10 +41,6 @@ Тип("СправочникСсылка.ВнешниеПользователи"), "ВнешниеПользователи"); - // Установка заголовка формы. - Заголовок = УправлениеДоступомСлужебный.ЗаголовокПодчиненнойФормы( - НСтр("ru = 'Права доступа: %1 (%2)'"), СсылкаНаОбъект); - МетаданныеОбъекта = СсылкаНаОбъект.Метаданные(); НазваниеЗначенийДоступа = УправлениеДоступомСлужебный.НазваниеОбъектаИзМетаданных(МетаданныеОбъекта); @@ -286,7 +282,7 @@ &НаКлиенте Процедура ГруппыПравЗапрещеноПриИзменении(Элемент) - // При изменении вида настроки необходимо сбросить флажки прав. + // При изменении вида настройки необходимо сбросить флажки прав. Для каждого ВозможноеПраво Из ВозможныеПрава Цикл Элементы.ГруппыПрав.ТекущиеДанные[ВозможноеПраво.Ключ] = Ложь; КонецЦикла; diff --git a/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Module.bsl b/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Module.bsl index 9c887c3c0..8ff9ddd13 100644 --- a/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Module.bsl +++ b/SSL/src/CommonForms/ПредупрежденияПриЗавершенииРаботы/Module.bsl @@ -27,11 +27,11 @@ ПараметрыФормы = Неопределено; Если СтрокаВопроса.Значение.Свойство("ПараметрыФормы", ПараметрыФормы) Тогда КонецЕсли; - ОткрытьФормуМодально(Форма, ПараметрыФормы); - КонецЕсли; + ОткрытьФорму(Форма, ПараметрыФормы, ЭтаФорма); + КонецЕсли; Прервать; - КонецЕсли; - КонецЦикла; + КонецЕсли; + КонецЦикла; КонецПроцедуры // Инициализирует массив будущих задач, которые необходимо выполнить при закрытии. @@ -43,12 +43,12 @@ Если НайденныйЭлемент = Неопределено Тогда Возврат; - КонецЕсли; + КонецЕсли; ЗначениеЭлемента = ЭтаФорма[ИмяЭлемента]; Если ТипЗнч(ЗначениеЭлемента) <> Тип("Булево") Тогда Возврат; - КонецЕсли; + КонецЕсли; ИдентификаторМассива = ИдентификаторМассиваЗадачПоИмени(ИмяЭлемента); @@ -61,7 +61,7 @@ Если ТипЗнч(Использование) = Тип("Булево") Тогда ЭлементМассива.Значение.Использование = ЗначениеЭлемента; КонецЕсли; - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -106,24 +106,24 @@ Если ТекущееПредупреждение.ТекстФлажка <> Неопределено И ТекущееПредупреждение.ТекстГиперСсылки <> Неопределено Тогда Продолжить; - КонецЕсли; + КонецЕсли; - // Формирование гипперссылки на форме. + // Формирование гиперссылки на форме. Если ТекущееПредупреждение.ТекстГиперСсылки <> Неопределено Тогда Если Не ПустаяСтрока(ТекущееПредупреждение.ТекстГиперСсылки) Тогда - СоздатьГипперссылкуНаФорме(ТекущееПредупреждение); - КонецЕсли; - КонецЕсли; + СоздатьГиперссылкуНаФорме(ТекущееПредупреждение); + КонецЕсли; + КонецЕсли; // Формирование флажка на форме. Если ТекущееПредупреждение.ТекстФлажка <> Неопределено Тогда Если Не ПустаяСтрока(ТекущееПредупреждение.ТекстФлажка) Тогда СоздатьФлажокНаФорме(ТекущееПредупреждение); - КонецЕсли; + КонецЕсли; КонецЕсли; - КонецЦикла; + КонецЦикла; - // Формирование окончательного впороса на форме. + // Формирование окончательного вопроса на форме. СоздатьОкончательныйВопрос(); КонецПроцедуры @@ -137,7 +137,7 @@ ТаблицаПредупреждений.Колонки.Добавить("ДействиеПриУстановленномФлажке"); ТаблицаПредупреждений.Колонки.Добавить("ДействиеПриНажатииГиперссылки"); ТаблицаПредупреждений.Колонки.Добавить("Приоритет"); - ТаблицаПредупреждений.Колонки.Добавить("ОчищатьПредупрежденияДругихОбработчиков"); + ТаблицаПредупреждений.Колонки.Добавить("ВывестиОдноПредупреждение"); Для Каждого ЭлементПредупреждения Из Предупреждения Цикл СтрокаТаблицы = ТаблицаПредупреждений.Добавить(); @@ -147,16 +147,16 @@ ЭлементПредупреждения.Свойство("ДействиеПриУстановленномФлажке", СтрокаТаблицы.ДействиеПриУстановленномФлажке); ЭлементПредупреждения.Свойство("ДействиеПриНажатииГиперссылки", СтрокаТаблицы.ДействиеПриНажатииГиперссылки); ЭлементПредупреждения.Свойство("Приоритет", СтрокаТаблицы.Приоритет); - ЭлементПредупреждения.Свойство("ОчищатьПредупрежденияДругихОбработчиков", СтрокаТаблицы.ОчищатьПредупрежденияДругихОбработчиков); + ЭлементПредупреждения.Свойство("ВывестиОдноПредупреждение", СтрокаТаблицы.ВывестиОдноПредупреждение); - Если СтрокаТаблицы.ОчищатьПредупрежденияДругихОбработчиков <> Истина Тогда + Если СтрокаТаблицы.ВывестиОдноПредупреждение <> Истина Тогда ОчищаемыеПредупреждения.Добавить(СтрокаТаблицы); КонецЕсли; КонецЦикла; // Поиск обработчиков, которые требуют очистки предупреждений. - Отбор = Новый Структура("ОчищатьПредупрежденияДругихОбработчиков", Истина); + Отбор = Новый Структура("ВывестиОдноПредупреждение", Истина); НайденныеПредупреждения = ТаблицаПредупреждений.НайтиСтроки(Отбор); Если НайденныеПредупреждения.Количество() <> 0 Тогда Для Каждого ОчищаемоеПредупреждения Из ОчищаемыеПредупреждения Цикл @@ -192,7 +192,7 @@ // СтруктураВопроса - структура передаваемого вопроса. // &НаСервере -Процедура СоздатьГипперссылкуНаФорме(СтруктураВопроса) +Процедура СоздатьГиперСсылкуНаФорме(СтруктураВопроса) Группа = СформироватьГруппуЭлементовФормы(); Если СтруктураВопроса.ПоясняющийТекст <> Неопределено Тогда @@ -208,23 +208,23 @@ Если СтруктураВопроса.ТекстГиперСсылки <> Неопределено Тогда Если Не ПустаяСтрока(СтруктураВопроса.ТекстГиперСсылки) Тогда - ИмяГиперсылки = ОпределитьИмяНадписиВФорме("НадписьВопроса"); - ТипГиперсылки = Тип("ДекорацияФормы"); - РодительГиперсылки = Группа; + ИмяГиперСсылки = ОпределитьИмяНадписиВФорме("НадписьВопроса"); + ТипГиперСсылки = Тип("ДекорацияФормы"); + РодительГиперСсылки = Группа; - ЭлементГиперСсылки = Элементы.Добавить(ИмяГиперсылки, ТипГиперсылки, РодительГиперсылки); + ЭлементГиперСсылки = Элементы.Добавить(ИмяГиперСсылки, ТипГиперСсылки, РодительГиперСсылки); ЭлементГиперСсылки.Гиперссылка = Истина; ЭлементГиперСсылки.Заголовок = СтруктураВопроса.ТекстГиперСсылки; ЭлементГиперСсылки.УстановитьДействие("Нажатие", "НажатиеНаГиперСсылку"); - ФормаГиперссылки = Неопределено; - ДействиеГиперссылки = Неопределено; + ФормаГиперСсылки = Неопределено; + ДействиеГиперСсылки = Неопределено; Если СтруктураВопроса.ДействиеПриНажатииГиперссылки <> Неопределено Тогда СтруктураОбработки = СтруктураВопроса.ДействиеПриНажатииГиперссылки; - Если СтруктураОбработки.Свойство("Форма", ФормаГиперссылки) Тогда + Если СтруктураОбработки.Свойство("Форма", ФормаГиперСсылки) Тогда СтруктураМассива = Новый Структура; - СтруктураМассива.Вставить("Имя", ИмяГиперсылки); - СтруктураМассива.Вставить("Форма", ФормаГиперссылки); + СтруктураМассива.Вставить("Имя", ИмяГиперСсылки); + СтруктураМассива.Вставить("Форма", ФормаГиперСсылки); ПараметрыФормы = Неопределено; Если СтруктураОбработки.Свойство("ПараметрыФормы", ПараметрыФормы) Тогда @@ -233,21 +233,21 @@ ИначеЕсли ПараметрыФормы = Неопределено Тогда ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("ЗавершениеРаботыПрограммы", Истина); - КонецЕсли; + КонецЕсли; СтруктураМассива.Вставить("ПараметрыФормы", ПараметрыФормы); - КонецЕсли; + КонецЕсли; МассивСоотношенияЭлементовИПараметров.Добавить(СтруктураМассива); - КонецЕсли; + КонецЕсли; КонецЕсли; КонецЕсли; - КонецЕсли; -КонецПроцедуры + КонецЕсли; +КонецПроцедуры // Формирует на форме флажок с поясняющим текстом. // // Параметры: -// СтруктураВопроса - труктура передаваемого вопроса. +// СтруктураВопроса - структура передаваемого вопроса. // &НаСервере Процедура СоздатьФлажокНаФорме(СтруктураВопроса) @@ -304,13 +304,13 @@ ПараметрыФормы = Неопределено; Если СтруктураДействия.Свойство("ПараметрыФормы", ПараметрыФормы) Тогда СтруктураМассива.Вставить("ПараметрыФормы", ПараметрыФормы); - КонецЕсли; + КонецЕсли; МассивЗадачНаВыполнениеПослеЗакрытия.Добавить(СтруктураМассива); КонецЕсли; - КонецЕсли; - КонецЕсли; - КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; КонецПроцедуры &НаСервере @@ -345,11 +345,11 @@ НайденныйЭлемент = Элементы.Найти(Имя); Если НайденныйЭлемент = Неопределено Тогда - Возврат Имя; - КонецЕсли; + Возврат Имя; + КонецЕсли; Индекс = Индекс + 1; - КонецЦикла; + КонецЦикла; КонецФункции &НаКлиенте @@ -382,15 +382,15 @@ КонецЕсли; Если Использование <> Истина Тогда Продолжить; - КонецЕсли; + КонецЕсли; Форма = Неопределено; Если ЭлементМассива.Значение.Свойство("Форма", Форма) Тогда ПараметрыФормы = Неопределено; Если ЭлементМассива.Значение.Свойство("ПараметрыФормы", ПараметрыФормы) Тогда ОткрытьФормуМодально(Форма, СтруктураИзФиксированнойСтруктуры(ПараметрыФормы)); - КонецЕсли; - КонецЕсли; + КонецЕсли; + КонецЕсли; КонецЦикла; КонецПроцедуры diff --git a/SSL/src/CommonForms/ПрисоединенныеФайлы/Form.form b/SSL/src/CommonForms/ПрисоединенныеФайлы/Form.form index edeaed65a..9a57118a7 100644 --- a/SSL/src/CommonForms/ПрисоединенныеФайлы/Form.form +++ b/SSL/src/CommonForms/ПрисоединенныеФайлы/Form.form @@ -2004,7 +2004,7 @@ ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) КАК Ссылка, ЛОЖЬ КАК ПометкаУдаления, 1 КАК ИндексКартинки, - ВЫРАЗИТЬ("" КАК Строка(50)) КАК Наименование, + ВЫРАЗИТЬ("" КАК Строка(150)) КАК Наименование, ВЫРАЗИТЬ("" КАК Строка(500)) КАК Описание, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК ДатаСоздания, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) КАК ДатаИзменения, diff --git a/SSL/src/CommonForms/ПрисоединенныйФайл/Form.form b/SSL/src/CommonForms/ПрисоединенныйФайл/Form.form index 0982182e3..c0aae2ced 100644 --- a/SSL/src/CommonForms/ПрисоединенныйФайл/Form.form +++ b/SSL/src/CommonForms/ПрисоединенныйФайл/Form.form @@ -1540,10 +1540,10 @@ - ПользовательПустаяСссылка + ПользовательПустаяСсылка <key>ru</key> - <value>Пользователь пустая сссылка</value> + <value>Пользователь пустая ссылка</value> 5 diff --git a/SSL/src/CommonForms/ПрисоединенныйФайл/Module.bsl b/SSL/src/CommonForms/ПрисоединенныйФайл/Module.bsl index ce589d133..47e3a8e82 100644 --- a/SSL/src/CommonForms/ПрисоединенныйФайл/Module.bsl +++ b/SSL/src/CommonForms/ПрисоединенныйФайл/Module.bsl @@ -18,7 +18,7 @@ ОписаниеКолонокТаблицыПодписей = Новый ФиксированныйМассив(КолонкиМассив); ТекущийПользователь = Пользователи.ТекущийПользователь(); - ПользовательПустаяСссылка = Справочники.Пользователи.ПустаяСсылка(); + ПользовательПустаяСсылка = Справочники.Пользователи.ПустаяСсылка(); Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда КопируемыйОбъект = Параметры.ЗначениеКопирования.ПолучитьОбъект(); @@ -1205,7 +1205,8 @@ Если ТранзакцияАктивна Тогда ОтменитьТранзакцию(); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Ошибка записи присоединенного файла'"), + НСтр("ru = 'Файлы.Ошибка записи присоединенного файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -1230,11 +1231,11 @@ ТипНовогоОбъекта = Новый Массив; ТипНовогоОбъекта.Добавить(ТипЗнч(НовыйОбъект)); - НовыйРеквит = Новый РеквизитФормы("Объект", Новый ОписаниеТипов(ТипНовогоОбъекта)); - НовыйРеквит.СохраняемыеДанные = Истина; + НовыйРеквизит = Новый РеквизитФормы("Объект", Новый ОписаниеТипов(ТипНовогоОбъекта)); + НовыйРеквизит.СохраняемыеДанные = Истина; ДобавляемыеРеквизиты = Новый Массив; - ДобавляемыеРеквизиты.Добавить(НовыйРеквит); + ДобавляемыеРеквизиты.Добавить(НовыйРеквизит); ИзменитьРеквизиты(ДобавляемыеРеквизиты); diff --git a/SSL/src/CommonForms/РедактированиеДополнительныхСведений/Module.bsl b/SSL/src/CommonForms/РедактированиеДополнительныхСведений/Module.bsl index a393c1dea..747cf8440 100644 --- a/SSL/src/CommonForms/РедактированиеДополнительныхСведений/Module.bsl +++ b/SSL/src/CommonForms/РедактированиеДополнительныхСведений/Module.bsl @@ -130,9 +130,7 @@ ПараметрыФормы.Вставить("Ключ", Элемент.Значение); ПараметрыФормы.Вставить("СкрытьДополнительныеРеквизиты", Истина); - ОткрытьФормуМодально( - "Справочник.НаборыДополнительныхРеквизитовИСведений.Форма.ФормаЭлемента", - ПараметрыФормы); + ОткрытьФорму("Справочник.НаборыДополнительныхРеквизитовИСведений.Форма.ФормаЭлемента", ПараметрыФормы, ЭтаФорма); КонецПроцедуры diff --git a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form new file mode 100644 index 000000000..3cfc8276e --- /dev/null +++ b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Form.form @@ -0,0 +1,2358 @@ + + + + <key>ru</key> + <value>Табличный документ (Создание)</value> + + + КоманднаяПанель + 3 + + ДействияСДокументом + 31 + + ЗаписатьИЗакрыть + 51 + true + true + + true + + + ЗаписатьИЗакрытьРасширеннаяПодсказка + 96 + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + Записать + 52 + true + true + + true + + + ЗаписатьРасширеннаяПодсказка + 97 + Label + true + true + + Left + + + Form.Command.Записать + Normal + Auto + true + true + UserCmds + Auto + + + Редактирование + 84 + true + true + + true + + + РедактированиеРасширеннаяПодсказка + 98 + Label + true + true + + Left + + + Form.Command.Редактирование + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Действия с документом</value> + + + ru + Действия с документом + + + ДействияСДокументомРасширеннаяПодсказка + 95 + Label + true + true + + Left + + + + + + КомандыРедактирования + 85 + + ФорматированиеТекста + 53 + + Шрифт + 57 + + ИзменениеШрифта + 54 + true + true + + true + + + ИзменениеШрифтаРасширеннаяПодсказка + 102 + Label + true + true + + Left + + + Form.Command.Шрифт + Normal + Auto + true + true + UserCmds + Auto + + + УвеличитьРазмерШрифта + 55 + true + true + + true + + + УвеличитьРазмерШрифтаРасширеннаяПодсказка + 103 + Label + true + true + + Left + + + Form.Command.УвеличитьРазмерШрифта + Normal + Auto + true + true + UserCmds + Auto + + + УменьшитьРазмерШрифта + 56 + true + true + + true + + + УменьшитьРазмерШрифтаРасширеннаяПодсказка + 104 + Label + true + true + + Left + + + Form.Command.УменьшитьРазмерШрифта + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Шрифт</value> + + + ru + Шрифт + + + ШрифтРасширеннаяПодсказка + 101 + Label + true + true + + Left + + + + + + Начертание + 58 + + Полужирный + 59 + true + true + + true + + + ПолужирныйРасширеннаяПодсказка + 106 + Label + true + true + + Left + + + Form.Command.Полужирный + Normal + Auto + true + true + UserCmds + Auto + + + Курсив + 60 + true + true + + true + + + КурсивРасширеннаяПодсказка + 107 + Label + true + true + + Left + + + Form.Command.Курсив + Normal + Auto + true + true + UserCmds + Auto + + + Подчеркивание + 61 + true + true + + true + + + ПодчеркиваниеРасширеннаяПодсказка + 108 + Label + true + true + + Left + + + Form.Command.Подчеркивание + Normal + Auto + true + true + UserCmds + Auto + + + Зачеркивание + 86 + true + true + + true + + + ЗачеркиваниеРасширеннаяПодсказка + 109 + Label + true + true + + Left + + + Form.Command.Зачеркивание + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + true + true + + true + + + <key>ru</key> + <value>Начертание</value> + + + ru + Начертание + + + НачертаниеРасширеннаяПодсказка + 105 + Label + true + true + + Left + + + + + + Цвет + 62 + + ЦветФона + 64 + true + true + + true + + + ЦветФонаРасширеннаяПодсказка + 111 + Label + true + true + + Left + + + Form.Command.ЦветФона + Normal + Auto + true + true + UserCmds + Auto + + + ЦветТекста + 63 + true + true + + true + + + ЦветТекстаРасширеннаяПодсказка + 112 + Label + true + true + + Left + + + Form.Command.ЦветТекста + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Цвет</value> + + + ru + Цвет + + + ЦветРасширеннаяПодсказка + 110 + Label + true + true + + Left + + + + + + Выравнивание + 65 + + Влево + 66 + true + true + + true + + + ВлевоРасширеннаяПодсказка + 114 + Label + true + true + + Left + + + Form.Command.Влево + Normal + Auto + true + true + UserCmds + Auto + + + ПоЦентру + 67 + true + true + + true + + + ПоЦентруРасширеннаяПодсказка + 115 + Label + true + true + + Left + + + Form.Command.ПоЦентру + Normal + Auto + true + true + UserCmds + Auto + + + Вправо + 68 + true + true + + true + + + ВправоРасширеннаяПодсказка + 116 + Label + true + true + + Left + + + Form.Command.Вправо + Normal + Auto + true + true + UserCmds + Auto + + + ПоШирине + 69 + true + true + + true + + + ПоШиринеРасширеннаяПодсказка + 117 + Label + true + true + + Left + + + Form.Command.ПоШирине + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Выравнивание</value> + + + ru + Выравнивание + + + ВыравниваниеРасширеннаяПодсказка + 113 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Форматирование текста</value> + + + ru + Форматирование текста + + + ФорматированиеТекстаРасширеннаяПодсказка + 100 + Label + true + true + + Left + + + + + + Границы + 70 + + ГраницаСлева + 72 + true + true + + true + + + ГраницаСлеваРасширеннаяПодсказка + 119 + Label + true + true + + Left + + + Form.Command.ГраницаСлева + Normal + Auto + true + true + UserCmds + Auto + + + ГраницаСверху + 71 + true + true + + true + + + ГраницаСверхуРасширеннаяПодсказка + 120 + Label + true + true + + Left + + + Form.Command.ГраницаСверху + Normal + Auto + true + true + UserCmds + Auto + + + ГраницаСправа + 75 + true + true + + true + + + ГраницаСправаРасширеннаяПодсказка + 121 + Label + true + true + + Left + + + Form.Command.ГраницаСправа + Normal + Auto + true + true + UserCmds + Auto + + + ГраницаСнизу + 73 + true + true + + true + + + ГраницаСнизуРасширеннаяПодсказка + 122 + Label + true + true + + Left + + + Form.Command.ГраницаСнизу + Normal + Auto + true + true + UserCmds + Auto + + + ГраницаВезде + 74 + true + true + + true + + + ГраницаВездеРасширеннаяПодсказка + 123 + Label + true + true + + Left + + + Form.Command.ГраницаВезде + Normal + Auto + true + true + UserCmds + Auto + + + ГраницаВокруг + 76 + true + true + + true + + + ГраницаВокругРасширеннаяПодсказка + 124 + Label + true + true + + Left + + + Form.Command.ГраницаВокруг + Normal + Auto + true + true + UserCmds + Auto + + + ГраницаВнутри + 77 + true + true + + true + + + ГраницаВнутриРасширеннаяПодсказка + 125 + Label + true + true + + Left + + + Form.Command.ГраницаВнутри + Normal + Auto + true + true + UserCmds + Auto + + + ТолстаяГраницаВокруг + 78 + true + true + + true + + + ТолстаяГраницаВокругРасширеннаяПодсказка + 126 + Label + true + true + + Left + + + Form.Command.ТолстаяГраницаВокруг + Normal + Auto + true + true + UserCmds + Auto + + + ТолстаяГраницаСверху + 79 + true + true + + true + + + ТолстаяГраницаСверхуРасширеннаяПодсказка + 127 + Label + true + true + + Left + + + Form.Command.ТолстаяГраницаСверху + Normal + Auto + true + true + UserCmds + Auto + + + ТолстаяГраницаСнизу + 80 + true + true + + true + + + ТолстаяГраницаСнизуРасширеннаяПодсказка + 128 + Label + true + true + + Left + + + Form.Command.ТолстаяГраницаСнизу + Normal + Auto + true + true + UserCmds + Auto + + + НетГраницы + 88 + true + true + + true + + + НетГраницыРасширеннаяПодсказка + 129 + Label + true + true + + Left + + + Form.Command.НетГраницы + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Границы</value> + + + ru + Границы + + + ГраницыРасширеннаяПодсказка + 118 + Label + true + true + + Left + + + Popup + + + CommonPicture.ГраницаВокруг + + Picture + Normal + + + + ДействияСЯчейками + 50 + + Объединить + 81 + true + true + + true + + + ОбъединитьРасширеннаяПодсказка + 131 + Label + true + true + + Left + + + Form.Command.Объединить + Normal + Auto + true + true + UserCmds + Auto + + + Разъединить + 87 + true + true + + true + + + РазъединитьРасширеннаяПодсказка + 132 + Label + true + true + + Left + + + Form.Command.Разъединить + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + ВставитьПримечание + 82 + true + true + + true + + + ВставитьПримечаниеРасширеннаяПодсказка + 133 + Label + true + true + + Left + + + Form.Command.ВставитьПримечание + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Действия с ячейками</value> + + + ru + Действия с ячейками + + + ДействияСЯчейкамиРасширеннаяПодсказка + 130 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Команды редактирования</value> + + + ru + Команды редактирования + + + КомандыРедактированияРасширеннаяПодсказка + 99 + Label + true + true + + Left + + + + + + ВсеДействия + 83 + + ДействияСГруппами + 34 + + ОтображатьГруппировки + 35 + true + true + + true + + + ОтображатьГруппировкиРасширеннаяПодсказка + 136 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.ShowGroups + Normal + Auto + true + true + UserCmds + Auto + + + СвернутьВсеГруппы + 36 + true + true + + true + + + СвернутьВсеГруппыРасширеннаяПодсказка + 137 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.CollapseAllGroups + Normal + Auto + true + true + UserCmds + Auto + + + РазвернутьВсеГруппы + 37 + true + true + + true + + + РазвернутьВсеГруппыРасширеннаяПодсказка + 138 + Label + true + true + + Left + + + Form.Item.ТабличныйДокумент.StandardCommand.ExpandAllGroups + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Действия с группами</value> + + + ru + Действия с группами + + + ДействияСГруппамиРасширеннаяПодсказка + 135 + Label + true + true + + Left + + + + + + ИзменитьФорму + 6 + true + true + + true + + + ИзменитьФормуРасширеннаяПодсказка + 139 + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Все действия</value> + + + ru + Все действия + + + ВсеДействияРасширеннаяПодсказка + 134 + Label + true + true + + Left + + + + + + Справка + 7 + true + true + + true + + + СправкаРасширеннаяПодсказка + 140 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель</value> + + + ru + Командная панель + + + КоманднаяПанельРасширеннаяПодсказка + 94 + Label + true + true + + Left + + + CommandBar + + Left + + + + Предупреждение + 91 + + КартинкаПредупреждения + 92 + + <key>ru</key> + <value>Картинка предупреждения</value> + + true + true + + true + + + КартинкаПредупрежденияРасширеннаяПодсказка + 142 + Label + true + true + + Left + + + + КартинкаПредупрежденияКонтекстноеМеню + 93 + true + + 2 + true + 1 + true + + + CommonPicture.Предупреждение + + + + + ТекстПредупреждения + 89 + + <key>ru</key> + <value>Изменение имен областей, а также параметров макета может привести к потере работоспособности печатной формы.</value> + + true + true + + true + + + ТекстПредупрежденияРасширеннаяПодсказка + 143 + Label + true + true + + Left + + + + ТекстПредупрежденияКонтекстноеМеню + 90 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Предупреждение</value> + + true + + ПредупреждениеРасширеннаяПодсказка + 141 + Label + true + true + + Left + + + UsualGroup + + Auto + StrongSeparation + true + true + Auto + Auto + + + + ТабличныйДокумент + 1 + true + true + + true + + + ТабличныйДокумент + + None + + ТабличныйДокументРасширеннаяПодсказка + 144 + Label + true + true + + Left + + + + ТабличныйДокументКонтекстноеМеню + 2 + true + + SpreadsheetDocumentField + Enter + true + Left + true + + + OnActivate + ТабличныйДокументПриАктивизацииОбласти + + 50 + true + 10 + true + true + true + true + true + Special + ScrollAlways + ScrollAlways + Always + Auto + true + true + true + true + + + None + false + + ФормаКоманднаяПанель + -1 + Left + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + 100 + 20 + DontBlock + Use + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + String + + + + true + + + true + +
            true
            +
            + + ТабличныйДокумент + + <key>ru</key> + <value>Табличный документ</value> + + 2 + + SpreadsheetDocument + + + true + + + true + + true + + + + ИмяДокумента + + <key>ru</key> + <value>Имя документа</value> + + 3 + + String + + + + true + + + true + + + + РедактированиеЗапрещено + + <key>ru</key> + <value>Редактирование запрещено</value> + + 4 + + Boolean + + + true + + + true + + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 1 + + ru + Записать и закрыть + + + true + + + + ЗаписатьИЗакрыть + + + Auto + Auto + + + Редактирование + + <key>ru</key> + <value>Редактирование</value> + + 3 + + ru + Редактирование + + + true + + + StdPicture.SpreadsheetReadOnly + + + + Редактирование + + + TextPicture + Auto + Auto + + + Шрифт + + <key>ru</key> + <value>Шрифт</value> + + 2 + + ru + Шрифт + + + true + + + CommonPicture.ИзменитьШрифт + + + + Шрифт + + + true + Auto + Auto + + + Полужирный + + <key>ru</key> + <value>Полужирный</value> + + 4 + + ru + Полужирный + + + true + + + CommonPicture.ПолужирноеНачертание + + + + Полужирный + + + true + Auto + Auto + + + ЦветТекста + + <key>ru</key> + <value>Цвет текста</value> + + 5 + + ru + Цвет текста + + + true + + + CommonPicture.ЦветТекста + + + + ЦветТекста + + + true + Auto + Auto + + + Объединить + + <key>ru</key> + <value>Объединить</value> + + 8 + + ru + Объединить + + + true + + + CommonPicture.ОбъединитьЯчейки + + + + Объединить + + + true + Auto + Auto + + + ВставитьПримечание + + <key>ru</key> + <value>Вставить примечание</value> + + 9 + + ru + Вставить примечание + + + true + + + StdPicture.SpreadsheetInsertComment + + + + ВставитьПримечание + + + Picture + true + Auto + Auto + + + Курсив + + <key>ru</key> + <value>Курсив</value> + + 11 + + ru + Курсив + + + true + + + CommonPicture.КурсивноеНачертание + + + + Курсив + + + true + Auto + Auto + + + Подчеркивание + + <key>ru</key> + <value>Подчеркивание</value> + + 12 + + ru + Подчеркивание + + + true + + + CommonPicture.Подчеркивание + + + + Подчеркивание + + + true + Auto + Auto + + + УвеличитьРазмерШрифта + + <key>ru</key> + <value>Увеличить размер шрифта</value> + + 13 + + ru + Увеличить размер шрифта + + + true + + + CommonPicture.УвеличитьШрифт + + + + УвеличитьРазмерШрифта + + + true + Auto + Auto + + + УменьшитьРазмерШрифта + + <key>ru</key> + <value>Уменьшить размер шрифта</value> + + 14 + + ru + Уменьшить размер шрифта + + + true + + + CommonPicture.УменьшитьШрифт + + + + УменьшитьРазмерШрифта + + + true + Auto + Auto + + + ЦветФона + + <key>ru</key> + <value>Цвет фона</value> + + 15 + + ru + Цвет фона + + + true + + + CommonPicture.ЦветФона + + + + ЦветФона + + + true + Auto + Auto + + + ПоШирине + + <key>ru</key> + <value>По ширине</value> + + 16 + + ru + По ширине + + + true + + + CommonPicture.ВыравниваниеПоШирине + + + + ПоШирине + + + true + Auto + Auto + + + ПоЦентру + + <key>ru</key> + <value>По центру</value> + + 17 + + ru + По центру + + + true + + + CommonPicture.ВыравниваниеПоЦентру + + + + ПоЦентру + + + true + Auto + Auto + + + Влево + + <key>ru</key> + <value>Влево</value> + + 18 + + ru + Влево + + + true + + + CommonPicture.ВыравниваниеПоЛевомуКраю + + + + Влево + + + true + Auto + Auto + + + Вправо + + <key>ru</key> + <value>Вправо</value> + + 19 + + ru + Вправо + + + true + + + CommonPicture.ВыравниваниеПоПравомуКраю + + + + Вправо + + + true + Auto + Auto + + + ГраницаСлева + + <key>ru</key> + <value>Граница слева</value> + + 20 + + ru + Граница слева + + + true + + + CommonPicture.ГраницаСлева + + + + ГраницаСлева + + + Picture + true + Auto + Auto + + + ГраницаСправа + + <key>ru</key> + <value>Граница справа</value> + + 21 + + ru + Граница справа + + + true + + + CommonPicture.ГраницаСправа + + + + ГраницаСправа + + + Picture + true + Auto + Auto + + + ГраницаСверху + + <key>ru</key> + <value>Граница сверху</value> + + 22 + + ru + Граница сверху + + + true + + + CommonPicture.ГраницаСверху + + + + ГраницаСверху + + + Picture + true + Auto + Auto + + + ГраницаСнизу + + <key>ru</key> + <value>Граница снизу</value> + + 23 + + ru + Граница снизу + + + true + + + CommonPicture.ГраницаСнизу + + + + ГраницаСнизу + + + Picture + true + Auto + Auto + + + ГраницаВезде + + <key>ru</key> + <value>Граница везде</value> + + 24 + + ru + Граница везде + + + true + + + CommonPicture.ГраницаВезде + + + + ГраницаВезде + + + Picture + true + Auto + Auto + + + ГраницаВокруг + + <key>ru</key> + <value>Граница вокруг</value> + + 25 + + ru + Граница вокруг + + + true + + + CommonPicture.ГраницаВокруг + + + + ГраницаВокруг + + + Picture + true + Auto + Auto + + + ГраницаВнутри + + <key>ru</key> + <value>Граница внутри</value> + + 26 + + ru + Граница внутри + + + true + + + CommonPicture.ГраницаВнутри + + + + ГраницаВнутри + + + Picture + true + Auto + Auto + + + ТолстаяГраницаВокруг + + <key>ru</key> + <value>Толстая граница вокруг</value> + + 27 + + ru + Толстая граница вокруг + + + true + + + CommonPicture.ТолстаяГраницаВокруг + + + + ТолстаяГраницаВокруг + + + Picture + true + Auto + Auto + + + ТолстаяГраницаСнизу + + <key>ru</key> + <value>Толстая граница снизу</value> + + 28 + + ru + Толстая граница снизу + + + true + + + CommonPicture.ТолстаяГраницаСнизу + + + + ТолстаяГраницаСнизу + + + Picture + true + Auto + Auto + + + ТолстаяГраницаСверху + + <key>ru</key> + <value>Толстая граница сверху</value> + + 29 + + ru + Толстая граница сверху + + + true + + + CommonPicture.ТолстаяГраницаСверху + + + + ТолстаяГраницаСверху + + + Picture + true + Auto + Auto + + + НетГраницы + + <key>ru</key> + <value>Нет границы</value> + + 30 + + ru + Нет границы + + + true + + + CommonPicture.НетГраницы + + + + НетГраницы + + + Picture + true + Auto + Auto + + + Записать + + <key>ru</key> + <value>Записать</value> + + 31 + + ru + Записать + + + true + + + StdPicture.SaveFile + + + + Записать + + + Auto + Auto + + + Зачеркивание + + <key>ru</key> + <value>Зачеркивание</value> + + 32 + + ru + Зачеркивание + + + true + + + + Зачеркивание + + + true + Auto + Auto + + + Разъединить + + <key>ru</key> + <value>Разъединить</value> + + 7 + + ru + Разъединить + + + true + + + + Разъединить + + + true + Auto + Auto + + + ТабличныйДокумент + + SpreadsheetDocument + + + + ПутьКФайлу + + String + + + true + + + РежимОткрытияОкна + + + + Редактирование + + Boolean + + + + ИмяОбъектаМетаданныхМакета + + String + + + true + + + ИмяДокумента + + String + + + + + + + +
            diff --git a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Help/ru.html b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Help/ru.html new file mode 100644 index 000000000..6e0a86883 --- /dev/null +++ b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Help/ru.html @@ -0,0 +1,3 @@ + +

            TODO

            +

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

            \ No newline at end of file diff --git a/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Module.bsl b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Module.bsl new file mode 100644 index 000000000..9c135e10e --- /dev/null +++ b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/Module.bsl @@ -0,0 +1,822 @@ + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + Если Параметры.РежимОткрытияОкна <> Неопределено Тогда + РежимОткрытияОкна = Параметры.РежимОткрытияОкна; + КонецЕсли; + + Если Параметры.ТабличныйДокумент.ВысотаТаблицы = 0 Тогда + Если Не ПустаяСтрока(Параметры.ИмяОбъектаМетаданныхМакета) Тогда + ЗагрузитьТабличныйДокументИзМетаданных(); + КонецЕсли; + Иначе + ТабличныйДокумент = Параметры.ТабличныйДокумент; + КонецЕсли; + + Элементы.ТабличныйДокумент.Редактирование = Параметры.Редактирование; + Элементы.ТабличныйДокумент.ОтображатьГруппировки = Истина; + + ЭтоМакет = Не ПустаяСтрока(Параметры.ИмяОбъектаМетаданныхМакета); + Элементы.Предупреждение.Видимость = ЭтоМакет И Параметры.Редактирование; + + Если Не ПустаяСтрока(Параметры.ИмяДокумента) Тогда + ИмяДокумента = Параметры.ИмяДокумента; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Не ПустаяСтрока(Параметры.ПутьКФайлу) Тогда + Файл = Новый Файл(Параметры.ПутьКФайлу); + Если ПустаяСтрока(ИмяДокумента) Тогда + ИмяДокумента = Файл.ИмяБезРасширения; + КонецЕсли; + РедактированиеЗапрещено = Файл.ПолучитьТолькоЧтение(); + КонецЕсли; + + Если ПустаяСтрока(ИмяДокумента) Тогда + ИспользованныеИмена = Новый Массив; + Оповестить("ЗапросИменРедактируемыхТабличныхДокументов", ИспользованныеИмена, ЭтаФорма); + + Индекс = 1; + Пока ИспользованныеИмена.Найти(ИмяНовогоДокумента() + Индекс) <> Неопределено Цикл + Индекс = Индекс + 1; + КонецЦикла; + + ИмяДокумента = ИмяНовогоДокумента() + Индекс; + КонецЕсли; + + Элементы.ТабличныйДокумент.Редактирование = Элементы.ТабличныйДокумент.Редактирование Или Не ПустаяСтрока(Параметры.ПутьКФайлу) И Не РедактированиеЗапрещено; + + УстановитьЗаголовок(); + НастроитьПредставлениеКоманд(); + НастроитьОтображениеТабличногоДокумента(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) + + Если Модифицированность Тогда + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Сохранить изменения в %1?'"), ИмяДокумента); + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНетОтмена); + Если Ответ = КодВозвратаДиалога.Отмена Тогда + Отказ = Истина; + ИначеЕсли Ответ = КодВозвратаДиалога.Да Тогда + ЗаписатьТабличныйДокумент(Отказ); + Иначе + Модифицированность = Ложь; + КонецЕсли; + КонецЕсли; + + Если Не Модифицированность Тогда + ИмяСобытия = "ОтменаРедактированияТабличногоДокумента"; + ПараметрыОповещения = Новый Структура; + ПараметрыОповещения.Вставить("ПутьКФайлу", Параметры.ПутьКФайлу); + ПараметрыОповещения.Вставить("ИмяОбъектаМетаданныхМакета", Параметры.ИмяОбъектаМетаданныхМакета); + Оповестить(ИмяСобытия, ПараметрыОповещения, ЭтаФорма); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "ЗапросИменРедактируемыхТабличныхДокументов" И Источник <> ЭтаФорма Тогда + Параметр.Добавить(ИмяДокумента); + ИначеЕсли ИмяСобытия = "ЗакрытиеФормыВладельца" И Источник = ВладелецФормы Тогда + Закрыть(); + Если Открыта() Тогда + Параметр.Отказ = Истина; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + +&НаКлиенте +Процедура ТабличныйДокументПриАктивизацииОбласти(Элемент) + ОбновитьПометкиКнопокКоманднойПанели(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + + +// Действия с документом + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + Отказ = Ложь; + ЗаписатьТабличныйДокумент(Отказ); + Если Не Отказ Тогда + Закрыть(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура Записать(Команда) + ЗаписатьТабличныйДокумент(); +КонецПроцедуры + +&НаКлиенте +Процедура Редактирование(Команда) + Элементы.ТабличныйДокумент.Редактирование = Не Элементы.ТабличныйДокумент.Редактирование; + НастроитьПредставлениеКоманд(); + НастроитьОтображениеТабличногоДокумента(); +КонецПроцедуры + +// Форматирование + +&НаКлиенте +Процедура Шрифт(Команда) + + ДиалогВыбораШрифта = Новый ДиалогВыбораШрифта; + + ОбрабатываемыеОбласти = СписокОбластейДляИзмененияШрифта(); + Если ОбрабатываемыеОбласти.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + #Если Не ВебКлиент Тогда + ОбщийШрифт = Новый Шрифт(ОбрабатываемыеОбласти[0].Шрифт); + + Для НомерОбласти = 1 По ОбрабатываемыеОбласти.Количество()-1 Цикл + Область = ОбрабатываемыеОбласти[НомерОбласти]; + Если Область.Шрифт <> ОбщийШрифт Тогда + ИмяШрифта = ?(Область.Шрифт.Имя = ОбщийШрифт.Имя, Неопределено, ""); + Размер = ?(Область.Шрифт.Размер = ОбщийШрифт.Размер, Неопределено, 0); + Жирный = ?(Область.Шрифт.Жирный = ОбщийШрифт.Жирный, Неопределено, Ложь); + Наклонный = ?(Область.Шрифт.Наклонный = ОбщийШрифт.Наклонный, Неопределено, Ложь); + Подчеркнутый = ?(Область.Шрифт.Подчеркивание = ОбщийШрифт.Подчеркивание, Неопределено, Ложь); + Зачеркнутый = ?(Область.Шрифт.Подчеркивание = ОбщийШрифт.Зачеркивание, Неопределено, Ложь); + + ОбщийШрифт = Новый Шрифт(ОбрабатываемыеОбласти[0].Шрифт, ИмяШрифта, Размер, Жирный, Наклонный, Подчеркнутый, Зачеркнутый); + КонецЕсли; + КонецЦикла; + ДиалогВыбораШрифта.Шрифт = ОбщийШрифт; + #КонецЕсли + + Если ДиалогВыбораШрифта.Выбрать() Тогда + Для Каждого Область Из ОбрабатываемыеОбласти Цикл + Область.Шрифт = ДиалогВыбораШрифта.Шрифт; + КонецЦикла; + КонецЕсли; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура УвеличитьРазмерШрифта(Команда) + + Для Каждого Область Из СписокОбластейДляИзмененияШрифта() Цикл + Размер = Область.Шрифт.Размер; + Размер = Размер + ШагИзмененияРазмераШрифтаУвеличение(Размер); + Область.Шрифт = Новый Шрифт(Область.Шрифт,,Размер); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура УменьшитьРазмерШрифта(Команда) + + Для Каждого Область Из СписокОбластейДляИзмененияШрифта() Цикл + Размер = Область.Шрифт.Размер; + Размер = Размер - ШагИзмененияРазмераШрифтаУменьшение(Размер); + Если Размер < 1 Тогда + Размер = 1; + КонецЕсли; + Область.Шрифт = Новый Шрифт(Область.Шрифт,,Размер); + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура Полужирный(Команда) + + УстанавливаемоеЗначение = Неопределено; + Для Каждого Область Из СписокОбластейДляИзмененияШрифта() Цикл + Если УстанавливаемоеЗначение = Неопределено Тогда + УстанавливаемоеЗначение = Не Область.Шрифт.Жирный; + КонецЕсли; + Область.Шрифт = Новый Шрифт(Область.Шрифт,,,УстанавливаемоеЗначение); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура Курсив(Команда) + + УстанавливаемоеЗначение = Неопределено; + Для Каждого Область Из СписокОбластейДляИзмененияШрифта() Цикл + Если УстанавливаемоеЗначение = Неопределено Тогда + УстанавливаемоеЗначение = Не Область.Шрифт.Наклонный; + КонецЕсли; + Область.Шрифт = Новый Шрифт(Область.Шрифт,,,,УстанавливаемоеЗначение); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура Подчеркивание(Команда) + + УстанавливаемоеЗначение = Неопределено; + Для Каждого Область Из СписокОбластейДляИзмененияШрифта() Цикл + Если УстанавливаемоеЗначение = Неопределено Тогда + УстанавливаемоеЗначение = Не Область.Шрифт.Подчеркивание; + КонецЕсли; + Область.Шрифт = Новый Шрифт(Область.Шрифт,,,,,УстанавливаемоеЗначение); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура Зачеркивание(Команда) + + УстанавливаемоеЗначение = Неопределено; + Для Каждого Область Из СписокОбластейДляИзмененияШрифта() Цикл + Если УстанавливаемоеЗначение = Неопределено Тогда + УстанавливаемоеЗначение = Не Область.Шрифт.Зачеркивание; + КонецЕсли; + Область.Шрифт = Новый Шрифт(Область.Шрифт,,,,,,УстанавливаемоеЗначение); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЦветФона(Команда) + ДиалогВыбораЦвета = Новый ДиалогВыбораЦвета; + #Если Не ВебКлиент Тогда + ДиалогВыбораЦвета.Цвет = Элементы.ТабличныйДокумент.ТекущаяОбласть.ЦветФона; + #КонецЕсли + Если ДиалогВыбораЦвета.Выбрать() Тогда + Элементы.ТабличныйДокумент.ТекущаяОбласть.ЦветФона = ДиалогВыбораЦвета.Цвет; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ЦветТекста(Команда) + ДиалогВыбораЦвета = Новый ДиалогВыбораЦвета; + #Если Не ВебКлиент Тогда + ДиалогВыбораЦвета.Цвет = Элементы.ТабличныйДокумент.ТекущаяОбласть.ЦветТекста; + #КонецЕсли + Если ДиалогВыбораЦвета.Выбрать() Тогда + Элементы.ТабличныйДокумент.ТекущаяОбласть.ЦветТекста = ДиалогВыбораЦвета.Цвет; + КонецЕсли; +КонецПроцедуры + + +// Выравнивание + +&НаКлиенте +Процедура Влево(Команда) + + Для Каждого Область Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура Вправо(Команда) + + Для Каждого Область Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоЦентру(Команда) + + Для Каждого Область Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр; + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоШирине(Команда) + + Для Каждого Область Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.ПоШирине; + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + + +// Границы + +&НаКлиенте +Процедура ГраницаСлева(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); + + Для Каждого ОбрабатываемаяОбласть Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + НарисоватьГраницуСлева(ОбрабатываемаяОбласть, Линия); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГраницаСверху(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); + + Для Каждого ОбрабатываемаяОбласть Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + НарисоватьГраницуСверху(ОбрабатываемаяОбласть, Линия); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГраницаСправа(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); + + Для Каждого ОбрабатываемаяОбласть Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + НарисоватьГраницуСправа(ОбрабатываемаяОбласть, Линия); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГраницаСнизу(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); + + Для Каждого ОбрабатываемаяОбласть Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + НарисоватьГраницуСнизу(ОбрабатываемаяОбласть, Линия); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГраницаВезде(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); + + Для Каждого Область Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + Область.ГраницаСлева = Линия; + Область.ГраницаСверху = Линия; + Область.ГраницаСправа = Линия; + Область.ГраницаСнизу = Линия; + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГраницаВокруг(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); + + Для Каждого Область Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + #Если ВебКлиент Тогда + НарисоватьГраницуСлева(Область, Линия); + НарисоватьГраницуСверху(Область, Линия); + НарисоватьГраницуСправа(Область, Линия); + НарисоватьГраницуСнизу(Область, Линия); + #Иначе + Область.Обвести(Линия, Линия, Линия, Линия); + #КонецЕсли + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ГраницаВнутри(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); + + Для Каждого ОбрабатываемаяОбласть Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + + Если ОбрабатываемаяОбласть.Лево <> ОбрабатываемаяОбласть.Право Тогда + Область = ТабличныйДокумент.Область( + Элементы.ТабличныйДокумент.ТекущаяОбласть.Верх, + Элементы.ТабличныйДокумент.ТекущаяОбласть.Лево + 1, + Элементы.ТабличныйДокумент.ТекущаяОбласть.Низ, + Элементы.ТабличныйДокумент.ТекущаяОбласть.Право); + + Область.ГраницаСлева = Линия; + КонецЕсли; + + Если ОбрабатываемаяОбласть.Верх <> ОбрабатываемаяОбласть.Низ Тогда + Область = ТабличныйДокумент.Область( + Элементы.ТабличныйДокумент.ТекущаяОбласть.Верх + 1, + Элементы.ТабличныйДокумент.ТекущаяОбласть.Лево, + Элементы.ТабличныйДокумент.ТекущаяОбласть.Низ, + Элементы.ТабличныйДокумент.ТекущаяОбласть.Право); + + Область.ГраницаСверху = Линия; + КонецЕсли; + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТолстаяГраницаВокруг(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 2); + + Для Каждого Область Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + #Если ВебКлиент Тогда + НарисоватьГраницуСлева(Область, Линия); + НарисоватьГраницуСверху(Область, Линия); + НарисоватьГраницуСправа(Область, Линия); + НарисоватьГраницуСнизу(Область, Линия); + #Иначе + Область.Обвести(Линия, Линия, Линия, Линия); + #КонецЕсли + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТолстаяГраницаСверху(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 2); + + Для Каждого ОбрабатываемаяОбласть Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + НарисоватьГраницуСверху(ОбрабатываемаяОбласть, Линия); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ТолстаяГраницаСнизу(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 2); + + Для Каждого ОбрабатываемаяОбласть Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + НарисоватьГраницуСнизу(ОбрабатываемаяОбласть, Линия); + КонецЦикла; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура НетГраницы(Команда) + + Линия = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.НетЛинии); + + Область = Элементы.ТабличныйДокумент.ТекущаяОбласть; + Область.ГраницаСлева = Линия; + Область.ГраницаСверху = Линия; + Область.ГраницаСправа = Линия; + Область.ГраницаСнизу = Линия; + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +// Действия с областью + +&НаКлиенте +Процедура Объединить(Команда) + + Область = Элементы.ТабличныйДокумент.ТекущаяОбласть; + Область.Объединить(); + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура Разъединить(Команда) + + Область = Элементы.ТабличныйДокумент.ТекущаяОбласть; + Область.Разъединить(); + + ОбновитьПометкиКнопокКоманднойПанели(); + +КонецПроцедуры + +&НаКлиенте +Процедура ВставитьПримечание(Команда) + Примечание = Элементы.ТабличныйДокумент.ТекущаяОбласть.Примечание.Текст; + ВвестиСтроку(Примечание, НСтр("ru = 'Примечание'"), , Истина); + Элементы.ТабличныйДокумент.ТекущаяОбласть.Примечание.Текст = Примечание; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Процедура ЗагрузитьТабличныйДокументИзМетаданных() + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда + МодульУправлениеПечатью = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеПечатью"); + ТабличныйДокумент = МодульУправлениеПечатью.ПолучитьМакет(Параметры.ИмяОбъектаМетаданныхМакета); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьОтображениеТабличногоДокумента() + Элементы.ТабличныйДокумент.ОтображатьЗаголовки = Элементы.ТабличныйДокумент.Редактирование; + Элементы.ТабличныйДокумент.ОтображатьСетку = Элементы.ТабличныйДокумент.Редактирование; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьПометкиКнопокКоманднойПанели(); + + #Если Не ВебКлиент Тогда + Область = Элементы.ТабличныйДокумент.ТекущаяОбласть; + //Если Область = Неопределено Тогда + // Возврат; + //КонецЕсли; + + // Шрифт + Шрифт = Область.Шрифт; + Элементы.Полужирный.Пометка = Шрифт <> Неопределено И Шрифт.Жирный; + Элементы.Курсив.Пометка = Шрифт <> Неопределено И Шрифт.Наклонный; + Элементы.Подчеркивание.Пометка = Шрифт <> Неопределено И Шрифт.Подчеркивание; + Элементы.Зачеркивание.Пометка = Шрифт <> Неопределено И Шрифт.Зачеркивание; + + // Горизонтальное положение + Элементы.Влево.Пометка = Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; + Элементы.ПоЦентру.Пометка = Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр; + Элементы.Вправо.Пометка = Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право; + Элементы.ПоШирине.Пометка = Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.ПоШирине; + + // Границы + //ОбычнаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); + //ТолстаяЛиния = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 2); + // + //Элементы.ГраницаСверху.Пометка = Область.ГраницаСверху = ОбычнаяЛиния; + //Элементы.ГраницаСлева.Пометка = Область.ГраницаСлева = ОбычнаяЛиния; + //Элементы.ГраницаСнизу.Пометка = Область.ГраницаСнизу = ОбычнаяЛиния; + //Элементы.ГраницаСправа.Пометка = Область.ГраницаСправа = ОбычнаяЛиния; + // + //Элементы.ТолстаяГраницаСверху.Пометка = Область.ГраницаСверху = ТолстаяЛиния; + //Элементы.ТолстаяГраницаСнизу.Пометка = Область.ГраницаСнизу = ТолстаяЛиния; + + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Функция ШагИзмененияРазмераШрифтаУвеличение(Размер) + Если Размер < 10 Тогда + Возврат 1; + ИначеЕсли 10 <= Размер и Размер < 20 Тогда + Возврат 2; + ИначеЕсли 20 <= Размер и Размер < 48 Тогда + Возврат 4; + ИначеЕсли 48 <= Размер и Размер < 72 Тогда + Возврат 6; + ИначеЕсли 72 <= Размер и Размер < 96 Тогда + Возврат 8; + Иначе + Возврат Окр(Размер / 10); + КонецЕсли; +КонецФункции + +&НаКлиенте +Функция ШагИзмененияРазмераШрифтаУменьшение(Размер) + Если Размер <= 11 Тогда + Возврат 1; + ИначеЕсли 11 < Размер и Размер <= 23 Тогда + Возврат 2; + ИначеЕсли 23 < Размер и Размер <= 53 Тогда + Возврат 4; + ИначеЕсли 53 < Размер и Размер <= 79 Тогда + Возврат 6; + ИначеЕсли 79 < Размер и Размер <= 105 Тогда + Возврат 8; + Иначе + Возврат Окр(Размер / 11); + КонецЕсли; +КонецФункции + +&НаКлиенте +Функция СписокОбластейДляИзмененияШрифта() + + Результат = Новый Массив; + + Для Каждого ОбрабатываемаяОбласть Из Элементы.ТабличныйДокумент.ПолучитьВыделенныеОбласти() Цикл + Если ОбрабатываемаяОбласть.Шрифт <> Неопределено Тогда + Результат.Добавить(ОбрабатываемаяОбласть); + Продолжить; + КонецЕсли; + + ОбрабатываемаяОбластьВерх = ОбрабатываемаяОбласть.Верх; + ОбрабатываемаяОбластьНиз = ОбрабатываемаяОбласть.Низ; + ОбрабатываемаяОбластьЛево = ОбрабатываемаяОбласть.Лево; + ОбрабатываемаяОбластьПраво = ОбрабатываемаяОбласть.Право; + + Если ОбрабатываемаяОбластьВерх = 0 Тогда + ОбрабатываемаяОбластьВерх = 1; + КонецЕсли; + + Если ОбрабатываемаяОбластьНиз = 0 Тогда + ОбрабатываемаяОбластьНиз = ТабличныйДокумент.ВысотаТаблицы; + КонецЕсли; + + Если ОбрабатываемаяОбластьЛево = 0 Тогда + ОбрабатываемаяОбластьЛево = 1; + КонецЕсли; + + Если ОбрабатываемаяОбластьПраво = 0 Тогда + ОбрабатываемаяОбластьПраво = ТабличныйДокумент.ШиринаТаблицы; + КонецЕсли; + + Если ОбрабатываемаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Колонки Тогда + ОбрабатываемаяОбластьВерх = ОбрабатываемаяОбласть.Низ; + ОбрабатываемаяОбластьНиз = ТабличныйДокумент.ВысотаТаблицы; + КонецЕсли; + + Для НомерКолонки = ОбрабатываемаяОбластьЛево По ОбрабатываемаяОбластьПраво Цикл + ШиринаКолонки = Неопределено; + Для НомерСтроки = ОбрабатываемаяОбластьВерх По ОбрабатываемаяОбластьНиз Цикл + Ячейка = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки); + Если ОбрабатываемаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Колонки Тогда + Если ШиринаКолонки = Неопределено Тогда + ШиринаКолонки = Ячейка.ШиринаКолонки; + КонецЕсли; + Если Ячейка.ШиринаКолонки <> ШиринаКолонки Тогда + Продолжить; + КонецЕсли; + КонецЕсли; + Если Ячейка.Шрифт <> Неопределено Тогда + Результат.Добавить(Ячейка); + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +&НаКлиенте +Процедура ЗаписатьТабличныйДокумент(Отказ = Ложь) + + Если ЭтоНовый() Или РедактированиеЗапрещено Тогда + ДиалогСохраненияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение); + ДиалогСохраненияФайла.ПолноеИмяФайла = ИмяДокумента; + ДиалогСохраненияФайла.Фильтр = НСтр("ru = 'Табличный документ'") + " (*.mxl)|*.mxl"; + //ДиалогСохраненияФайла.Заголовок = ""; + Если ДиалогСохраненияФайла.Выбрать() Тогда + Параметры.ПутьКФайлу = ДиалогСохраненияФайла.ПолноеИмяФайла; + ИмяДокумента = Сред(ДиалогСохраненияФайла.ПолноеИмяФайла, СтрДлина(ДиалогСохраненияФайла.Каталог) + 1); + Если Нрег(Прав(ИмяДокумента, 4)) = ".mxl" Тогда + ИмяДокумента = Лев(ИмяДокумента, СтрДлина(ИмяДокумента) - 4); + КонецЕсли; + Иначе + Отказ = Истина; + Возврат; + КонецЕсли; + КонецЕсли; + + Если Не ПустаяСтрока(Параметры.ПутьКФайлу) Тогда + ТабличныйДокумент.Записать(Параметры.ПутьКФайлу); + РедактированиеЗапрещено = Ложь; + КонецЕсли; + + ПараметрыОповещения = Новый Структура; + ПараметрыОповещения.Вставить("ТабличныйДокумент", ТабличныйДокумент); + ПараметрыОповещения.Вставить("ПутьКФайлу", Параметры.ПутьКФайлу); + ПараметрыОповещения.Вставить("ИмяОбъектаМетаданныхМакета", Параметры.ИмяОбъектаМетаданныхМакета); + + Оповестить("Запись_ТабличныйДокумент", ПараметрыОповещения, ЭтаФорма); + + Модифицированность = Ложь; + УстановитьЗаголовок(); + +КонецПроцедуры + +&НаКлиенте +Функция ИмяНовогоДокумента() + Возврат НСтр("ru = 'Новый'"); +КонецФункции + +&НаКлиенте +Процедура УстановитьЗаголовок() + + Заголовок = ИмяДокумента; + Если ЭтоНовый() Тогда + Заголовок = Заголовок + " (" + НСтр("ru = 'создание'") + ")"; + ИначеЕсли РедактированиеЗапрещено Тогда + Заголовок = Заголовок + " (" + НСтр("ru = 'только просмотр'") + ")"; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьПредставлениеКоманд() + + ДокументРедактируется = Элементы.ТабличныйДокумент.Редактирование; + Элементы.Редактирование.Пометка = ДокументРедактируется; + Элементы.КомандыРедактирования.Доступность = ДокументРедактируется; + Элементы.ЗаписатьИЗакрыть.Доступность = ДокументРедактируется Или Модифицированность; + Элементы.Записать.Доступность = ДокументРедактируется Или Модифицированность; + + Если ДокументРедактируется И Не ПустаяСтрока(Параметры.ИмяОбъектаМетаданныхМакета) Тогда + Элементы.Предупреждение.Видимость = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Функция ЭтоНовый() + Возврат ПустаяСтрока(Параметры.ИмяОбъектаМетаданныхМакета) И ПустаяСтрока(Параметры.ПутьКФайлу); +КонецФункции + +&НаКлиенте +Процедура НарисоватьГраницуСлева(ОбрабатываемаяОбласть, Линия) + + Область = ТабличныйДокумент.Область( + ОбрабатываемаяОбласть.Верх, + ОбрабатываемаяОбласть.Лево, + ОбрабатываемаяОбласть.Низ, + ОбрабатываемаяОбласть.Лево); + + Область.ГраницаСлева = Линия; + +КонецПроцедуры + +&НаКлиенте +Процедура НарисоватьГраницуСверху(ОбрабатываемаяОбласть, Линия) + + Область = ТабличныйДокумент.Область( + ОбрабатываемаяОбласть.Верх, + ОбрабатываемаяОбласть.Лево, + ОбрабатываемаяОбласть.Верх, + ОбрабатываемаяОбласть.Право); + + Область.ГраницаСверху = Линия; + +КонецПроцедуры + +&НаКлиенте +Процедура НарисоватьГраницуСправа(ОбрабатываемаяОбласть, Линия) + + Область = ТабличныйДокумент.Область( + ОбрабатываемаяОбласть.Верх, + ОбрабатываемаяОбласть.Право, + ОбрабатываемаяОбласть.Низ, + ОбрабатываемаяОбласть.Право); + + Область.ГраницаСправа = Линия; + +КонецПроцедуры + +&НаКлиенте +Процедура НарисоватьГраницуСнизу(ОбрабатываемаяОбласть, Линия) + + Область = ТабличныйДокумент.Область( + ОбрабатываемаяОбласть.Низ, + ОбрабатываемаяОбласть.Лево, + ОбрабатываемаяОбласть.Низ, + ОбрабатываемаяОбласть.Право); + + Область.ГраницаСнизу = Линия; + +КонецПроцедуры diff --git a/SSL/src/CommonForms/ВводТелефона/ВводТелефона.mdo b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/РедактированиеТабличногоДокумента.mdo similarity index 62% rename from SSL/src/CommonForms/ВводТелефона/ВводТелефона.mdo rename to SSL/src/CommonForms/РедактированиеТабличногоДокумента/РедактированиеТабличногоДокумента.mdo index c95ac0506..4b2268db4 100644 --- a/SSL/src/CommonForms/ВводТелефона/ВводТелефона.mdo +++ b/SSL/src/CommonForms/РедактированиеТабличногоДокумента/РедактированиеТабличногоДокумента.mdo @@ -1,9 +1,9 @@ - - ВводТелефона + + РедактированиеТабличногоДокумента ru - Ввод телефона + Редактирование табличного документа diff --git a/SSL/src/CommonForms/СертификатЭЦП/Form.form b/SSL/src/CommonForms/СертификатЭЦП/Form.form index 5f8b6eac2..1f17d58a7 100644 --- a/SSL/src/CommonForms/СертификатЭЦП/Form.form +++ b/SSL/src/CommonForms/СертификатЭЦП/Form.form @@ -262,7 +262,7 @@ ПриСозданииНаСервере
            60 - DontBlock + LockOwner true true true diff --git a/SSL/src/CommonForms/СертификатЭЦП/Help/ru.html b/SSL/src/CommonForms/СертификатЭЦП/Help/ru.html index 28737ee81..ffc349871 100644 --- a/SSL/src/CommonForms/СертификатЭЦП/Help/ru.html +++ b/SSL/src/CommonForms/СертификатЭЦП/Help/ru.html @@ -1,4 +1,4 @@ - +

            Форма предназначена для просмотра основных свойств сертификата электронной цифровой подписи (ЭЦП).

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

            По команде "Проверить" выполняется проверка сертификата.

            diff --git a/SSL/src/CommonForms/СертификатЭЦП/Module.bsl b/SSL/src/CommonForms/СертификатЭЦП/Module.bsl index 655026989..6642a88a0 100644 --- a/SSL/src/CommonForms/СертификатЭЦП/Module.bsl +++ b/SSL/src/CommonForms/СертификатЭЦП/Module.bsl @@ -54,8 +54,7 @@ Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Сертификат ЭЦП сохранен в файл ""%1""'"), - ДиалогОткрытияФайла.ПолноеИмяФайла - ); + ДиалогОткрытияФайла.ПолноеИмяФайла); Состояние(Текст); diff --git a/SSL/src/CommonForms/СинхронизацияДанныхВМоделиСервиса/Form.form b/SSL/src/CommonForms/СинхронизацияДанныхВМоделиСервиса/Form.form index 814826cda..641876b54 100644 --- a/SSL/src/CommonForms/СинхронизацияДанныхВМоделиСервиса/Form.form +++ b/SSL/src/CommonForms/СинхронизацияДанныхВМоделиСервиса/Form.form @@ -26,7 +26,7 @@ Декорация1РасширеннаяПодсказка - 88 + 89 Label true true @@ -65,7 +65,7 @@ ГруппаКартинкиРасширеннаяПодсказка - 87 + 88 Label true true @@ -100,7 +100,7 @@ Декорация2РасширеннаяПодсказка - 90 + 91 Label true true @@ -138,7 +138,7 @@ ГруппаСообщенияРасширеннаяПодсказка - 89 + 90 Label true true @@ -167,7 +167,7 @@ ГруппировкаСообщенияРасширеннаяПодсказка - 86 + 87 Label true true @@ -200,7 +200,7 @@ ОжиданиеПолученияДанныхРасширеннаяПодсказка - 85 + 86 Label true true @@ -236,7 +236,7 @@ ВыполнитьСинхронизациюДанныхРасширеннаяПодсказка - 95 + 96 Label true true @@ -267,7 +267,7 @@ ПредставлениеДатыСинхронизацииРасширеннаяПодсказка - 96 + 97 Label true true @@ -291,20 +291,16 @@ - ОбщаяКомандаОткрытьРезультатыОбменаДанными - 81 - - <key>ru</key> - <value>Проблем нет</value> - + ПерейтиККонфликтам + 84 true true true - ОбщаяКомандаОткрытьРезультатыОбменаДаннымиРасширеннаяПодсказка - 97 + ПерейтиККонфликтамРасширеннаяПодсказка + 98 Label true true @@ -313,7 +309,7 @@ Hyperlink - CommonCommand.ОткрытьРезультатыОбменаДанными + Form.Command.ПерейтиККонфликтам Normal Auto true @@ -336,7 +332,7 @@ ГруппировкаЭлементовРасширеннаяПодсказка - 94 + 95 Label true true @@ -368,7 +364,7 @@ СостояниеСинхронизацииРасширеннаяПодсказка - 93 + 94 Label true true @@ -398,7 +394,7 @@ ВыполнитьСинхронизациюДанных1РасширеннаяПодсказка - 100 + 101 Label true true @@ -429,7 +425,7 @@ КартинкаДлительнойОперацииРасширеннаяПодсказка - 101 + 102 Label true true @@ -466,7 +462,7 @@ ПредставлениеВыполненияСинхронизацииРасширеннаяПодсказка - 102 + 103 Label true true @@ -504,7 +500,7 @@ ГруппировкаЭлементов1РасширеннаяПодсказка - 99 + 100 Label true true @@ -536,7 +532,7 @@ ВыполнениеСинхронизацииРасширеннаяПодсказка - 98 + 99 Label true true @@ -565,7 +561,7 @@ ПанельСинхронизацииДанныхРасширеннаяПодсказка - 92 + 93 Label true true @@ -606,7 +602,7 @@ НастройкиСинхронизацииДанныхНаименованиеПриложенияРасширеннаяПодсказка - 136 + 137 Label true true @@ -651,7 +647,7 @@ None НастройкиСинхронизацииДанныхСтатусСинхронизацииРасширеннаяПодсказка - 139 + 140 Label true true @@ -696,7 +692,7 @@ НастройкиСинхронизацииДанныхСостояниеРасширеннаяПодсказка - 141 + 142 Label true true @@ -731,7 +727,7 @@ НастройкиСинхронизацииДанныхГруппа1РасширеннаяПодсказка - 138 + 139 Label true true @@ -759,7 +755,7 @@ НастроитьСинхронизациюДанныхРасширеннаяПодсказка - 114 + 115 Label true true @@ -785,7 +781,7 @@ НастройкиСинхронизацииДанныхОтключитьСинхронизациюДанныхРасширеннаяПодсказка - 115 + 116 Label true true @@ -815,7 +811,7 @@ НастройкиСинхронизацииДанныхНайтиРасширеннаяПодсказка - 117 + 118 Label true true @@ -842,7 +838,7 @@ НастройкиСинхронизацииДанныхОтменитьПоискРасширеннаяПодсказка - 118 + 119 Label true true @@ -866,7 +862,7 @@ НастройкиСинхронизацииДанныхГруппа2РасширеннаяПодсказка - 116 + 117 Label true true @@ -889,7 +885,7 @@ НастройкиСинхронизацииДанныхВывестиСписокРасширеннаяПодсказка - 120 + 121 Label true true @@ -916,7 +912,7 @@ НастройкиСинхронизацииДанныхКопироватьВБуферОбменаРасширеннаяПодсказка - 121 + 122 Label true true @@ -940,7 +936,7 @@ НастройкиСинхронизацииДанныхГруппа3РасширеннаяПодсказка - 119 + 120 Label true true @@ -960,7 +956,7 @@ НастройкиСинхронизацииДанныхИзменитьФормуРасширеннаяПодсказка - 122 + 123 Label true true @@ -987,7 +983,7 @@ НастройкиСинхронизацииДанныхСправкаРасширеннаяПодсказка - 123 + 124 Label true true @@ -1013,7 +1009,7 @@ НастройкиСинхронизацииДанныхОбновитьРасширеннаяПодсказка - 124 + 125 Label true true @@ -1040,7 +1036,7 @@ НастройкиСинхронизацииДанныхПодготовитьДанныеРасширеннаяПодсказка - 125 + 126 Label true true @@ -1068,10 +1064,10 @@
            НастройкиСинхронизацииДанныхСтрокаПоиска - 127 + 128 НастройкиСинхронизацииДанныхСтрокаПоискаРасширеннаяПодсказка - 129 + 130 Label true true @@ -1081,7 +1077,7 @@ НастройкиСинхронизацииДанныхСтрокаПоискаКонтекстноеМеню - 128 + 129 true НастройкиСинхронизацииДанных @@ -1091,10 +1087,10 @@ НастройкиСинхронизацииДанныхСостояниеПросмотра - 130 + 131 НастройкиСинхронизацииДанныхСостояниеПросмотраРасширеннаяПодсказка - 132 + 133 Label true true @@ -1104,7 +1100,7 @@ НастройкиСинхронизацииДанныхСостояниеПросмотраКонтекстноеМеню - 131 + 132 true ViewStatusAddition @@ -1115,10 +1111,10 @@ НастройкиСинхронизацииДанныхУправлениеПоиском - 133 + 134 НастройкиСинхронизацииДанныхУправлениеПоискомРасширеннаяПодсказка - 135 + 136 Label true true @@ -1128,7 +1124,7 @@ НастройкиСинхронизацииДанныхУправлениеПоискомКонтекстноеМеню - 134 + 135 true SearchControlAddition @@ -1139,7 +1135,7 @@ НастройкиСинхронизацииДанныхРасширеннаяПодсказка - 126 + 127 Label true true @@ -1160,7 +1156,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюНастроитьСинхронизациюДанныхРасширеннаяПодсказка - 104 + 105 Label true true @@ -1186,7 +1182,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюОтключитьСинхронизациюДанныхРасширеннаяПодсказка - 105 + 106 Label true true @@ -1215,7 +1211,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюОтправитьДанныеРасширеннаяПодсказка - 107 + 108 Label true true @@ -1238,7 +1234,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюГруппа3РасширеннаяПодсказка - 106 + 107 Label true true @@ -1261,7 +1257,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюНайтиРасширеннаяПодсказка - 109 + 110 Label true true @@ -1287,7 +1283,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка - 110 + 111 Label true true @@ -1310,7 +1306,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюГруппа1РасширеннаяПодсказка - 108 + 109 Label true true @@ -1333,7 +1329,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюВывестиСписокРасширеннаяПодсказка - 112 + 113 Label true true @@ -1359,7 +1355,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка - 113 + 114 Label true true @@ -1382,7 +1378,7 @@ НастройкиСинхронизацииДанныхКонтекстноеМенюГруппа2РасширеннаяПодсказка - 111 + 112 Label true true @@ -1434,7 +1430,7 @@ НастройкиСинхронизацииДанныхОписаниеРасширеннаяПодсказка - 151 + 152 Label true true @@ -1476,7 +1472,7 @@ ГруппаМонитораСинхронизацииРасширеннаяПодсказка - 103 + 104 Label true true @@ -1509,7 +1505,7 @@ НастройкаСинхронизацииДанныхРасширеннаяПодсказка - 91 + 92 Label true true @@ -1542,7 +1538,7 @@ Декорация3РасширеннаяПодсказка - 156 + 157 Label true true @@ -1581,7 +1577,7 @@ ГруппаКартинки1РасширеннаяПодсказка - 155 + 156 Label true true @@ -1616,7 +1612,7 @@ Декорация4РасширеннаяПодсказка - 158 + 159 Label true true @@ -1654,7 +1650,7 @@ ГруппаСообщения1РасширеннаяПодсказка - 157 + 158 Label true true @@ -1683,7 +1679,7 @@ ГруппировкаСообщения1РасширеннаяПодсказка - 154 + 155 Label true true @@ -1716,7 +1712,7 @@ ОшибкаПолученияДанныхРасширеннаяПодсказка - 153 + 154 Label true true @@ -1749,7 +1745,7 @@ Декорация5РасширеннаяПодсказка - 162 + 163 Label true true @@ -1788,7 +1784,7 @@ ГруппаКартинки2РасширеннаяПодсказка - 161 + 162 Label true true @@ -1823,7 +1819,7 @@ Декорация6РасширеннаяПодсказка - 164 + 165 Label true true @@ -1861,7 +1857,7 @@ ГруппаСообщения2РасширеннаяПодсказка - 163 + 164 Label true true @@ -1890,7 +1886,7 @@ ГруппировкаСообщения2РасширеннаяПодсказка - 160 + 161 Label true true @@ -1923,7 +1919,7 @@ НетПриложенийДляСинхронизацииРасширеннаяПодсказка - 159 + 160 Label true true @@ -1954,7 +1950,7 @@ true ПанельОсновнаяРасширеннаяПодсказка - 84 + 85 Label true true @@ -2628,6 +2624,28 @@ Auto Auto + + ПерейтиККонфликтам + + <key>ru</key> + <value>Предупреждений нет</value> + + 6 + + ru + Открыть предупреждения при синхронизации данных + + + true + + + + ПерейтиККонфликтам + + + Auto + Auto + diff --git a/SSL/src/CommonForms/СинхронизацияДанныхВМоделиСервиса/Module.bsl b/SSL/src/CommonForms/СинхронизацияДанныхВМоделиСервиса/Module.bsl index 55fa657ca..7121deaec 100644 --- a/SSL/src/CommonForms/СинхронизацияДанныхВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonForms/СинхронизацияДанныхВМоделиСервиса/Module.bsl @@ -59,8 +59,7 @@ СтатусСессии = СтатусСессии(Сессия); Исключение ЗаписатьОшибкуВЖурналРегистрации( - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииМониторСинхронизацииДанных - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииМониторСинхронизацииДанных); ПерейтиНазад(); Возврат; КонецПопытки; @@ -87,19 +86,18 @@ &НаКлиенте Процедура ОтправитьДанные(Команда) - // Добавить к выгружаемым данным новые - - ДанныеПриложения = Элементы.НастройкиСинхронизацииДанных.ТекущиеДанные; - Если ДанныеПриложения=Неопределено Или Не ДанныеПриложения.СинхронизацияНастроена Тогда - Возврат; - КонецЕсли; - - ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса.Форма.Форма", - Новый Структура("ЗапретитьВыгрузкуТолькоИзмененного, УзелИнформационнойБазы", - Истина, ДанныеПриложения.Корреспондент - ), ЭтаФорма - ); - + // Добавить к выгружаемым данным новые + + ДанныеПриложения = Элементы.НастройкиСинхронизацииДанных.ТекущиеДанные; + Если ДанныеПриложения=Неопределено Или Не ДанныеПриложения.СинхронизацияНастроена Тогда + Возврат; + КонецЕсли; + + ОткрытьФорму("Обработка.ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса.Форма.Форма", + Новый Структура("ЗапретитьВыгрузкуТолькоИзмененного, УзелИнформационнойБазы", + Истина, ДанныеПриложения.Корреспондент + ), ЭтаФорма); + КонецПроцедуры &НаКлиенте @@ -127,8 +125,7 @@ Если ТекущиеДанные.НастройкаСинхронизацииВМенеджереСервиса Тогда Предупреждение(НСтр("ru = 'Для отключения синхронизации данных перейдите в менеджер сервиса. - |В менеджере сервиса воспользуйтесь командой ""Синхронизация данных"".'") - ); + |В менеджере сервиса воспользуйтесь командой ""Синхронизация данных"".'")); Иначе ПараметрыФормы = Новый Структура; @@ -164,24 +161,33 @@ Процедура НастройкиСинхронизацииДанныхПриАктивизацииСтроки(Элемент) ТекущиеДанные = Элемент.ТекущиеДанные; - Если ТекущиеДанные=Неопределено Тогда + Если ТекущиеДанные=Неопределено Тогда Элементы.НастройкиСинхронизацииДанныхОтключитьСинхронизациюДанных.Доступность = Ложь; Элементы.НастройкиСинхронизацииДанныхКонтекстноеМенюОтключитьСинхронизациюДанных.Доступность = Ложь; НастройкиСинхронизацииДанныхОписание = ""; - - Элементы.НастройкиСинхронизацииДанныхПодготовитьДанные.Доступность = Ложь; - Элементы.НастройкиСинхронизацииДанныхКонтекстноеМенюОтправитьДанные.Доступность = Ложь; - Иначе + + Элементы.НастройкиСинхронизацииДанныхПодготовитьДанные.Доступность = Ложь; + Элементы.НастройкиСинхронизацииДанныхКонтекстноеМенюОтправитьДанные.Доступность = Ложь; + Иначе Элементы.НастройкиСинхронизацииДанныхОтключитьСинхронизациюДанных.Доступность = ТекущиеДанные.СинхронизацияНастроена; Элементы.НастройкиСинхронизацииДанныхКонтекстноеМенюОтключитьСинхронизациюДанных.Доступность = ТекущиеДанные.СинхронизацияНастроена; НастройкиСинхронизацииДанныхОписание = ТекущиеДанные.Описание; - - Элементы.НастройкиСинхронизацииДанныхПодготовитьДанные.Доступность = ТекущиеДанные.СинхронизацияНастроена; - Элементы.НастройкиСинхронизацииДанныхКонтекстноеМенюОтправитьДанные.Доступность = ТекущиеДанные.СинхронизацияНастроена; + + Элементы.НастройкиСинхронизацииДанныхПодготовитьДанные.Доступность = ТекущиеДанные.СинхронизацияНастроена; + Элементы.НастройкиСинхронизацииДанныхКонтекстноеМенюОтправитьДанные.Доступность = ТекущиеДанные.СинхронизацияНастроена; КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура ПерейтиККонфликтам(Команда) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("УзлыОбмена", МассивИспользуемыхУзлов(НастройкиСинхронизацииДанных)); + ОткрытьФорму("РегистрСведений.РезультатыОбменаДанными.Форма.Форма", ПараметрыФормы); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ (Поставляемая часть) @@ -418,8 +424,7 @@ ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", ДлительнаяОперация = Ложь, - ИмяОбработчикаДлительнойОперации = "" - ) + ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; @@ -436,6 +441,21 @@ КонецПроцедуры +&НаКлиентеНаСервереБезКонтекста +Функция МассивИспользуемыхУзлов(НастройкиСинхронизацииДанных) + + УзлыОбмена = Новый Массив; + + Для Каждого СтрокаУзла Из НастройкиСинхронизацииДанных Цикл + Если СтрокаУзла.СинхронизацияНастроена Тогда + УзлыОбмена.Добавить(СтрокаУзла.Корреспондент); + КонецЕсли; + КонецЦикла; + + Возврат УзлыОбмена; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ (Переопределяемая часть) @@ -496,8 +516,7 @@ ИначеЕсли ТекущиеДанные.НастройкаСинхронизацииВМенеджереСервиса Тогда Предупреждение(НСтр("ru = 'Для настройки синхронизации данных перейдите в менеджер сервиса. - |В менеджере сервиса воспользуйтесь командой ""Синхронизация данных"".'") - ); + |В менеджере сервиса воспользуйтесь командой ""Синхронизация данных"".'")); Иначе ПараметрыФормы = Новый Структура; @@ -511,8 +530,7 @@ Уникальность = ТекущиеДанные.ПланОбмена + Формат(ТекущиеДанные.ОбластьДанных, "ЧЦ=7; ЧВН=; ЧГ=0"); ОткрытьФорму("Обработка.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете.Форма.Форма", - ПараметрыФормы, ЭтаФорма, Уникальность, ВариантОткрытияОкна.ОтдельноеОкно - ); + ПараметрыФормы, ЭтаФорма, Уникальность, ВариантОткрытияОкна.ОтдельноеОкно); КонецЕсли; КонецЕсли; @@ -578,17 +596,10 @@ КонецЕсли; КонецЦикла; - + // Отображение проблем синхронизации в шапке монитора - Если КоличествоПроблем > 0 Тогда - Элементы.ОбщаяКомандаОткрытьРезультатыОбменаДанными.Картинка = БиблиотекаКартинок.Предупреждение; - Элементы.ОбщаяКомандаОткрытьРезультатыОбменаДанными.Заголовок = - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Проблемы: %1'"), Формат(КоличествоПроблем) - ); - Иначе - Элементы.ОбщаяКомандаОткрытьРезультатыОбменаДанными.Картинка = Новый Картинка; - Элементы.ОбщаяКомандаОткрытьРезультатыОбменаДанными.Заголовок = НСтр("ru = 'Проблем нет'"); - КонецЕсли; + СтруктураЗаголовка = ОбменДаннымиСервер.СтруктураЗаголовкаГиперссылкиМонитораПроблем(МассивИспользуемыхУзлов(НастройкиСинхронизацииДанных)); + ЗаполнитьЗначенияСвойств(Элементы.ПерейтиККонфликтам, СтруктураЗаголовка); КонецПроцедуры @@ -636,20 +647,17 @@ // Отправляем сообщение в МС Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьНастройкиСинхронизацииДанных() - ); + СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьНастройкиСинхронизацииДанных()); Сообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); Сообщение.Body.SessionId = НоваяСессия(); СообщенияВМоделиСервиса.ОтправитьСообщение(Сообщение, - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса(), Истина - ); + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса(), Истина); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииМониторСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииМониторСинхронизацииДанных); Отказ = Истина; Возврат; КонецПопытки; @@ -699,8 +707,7 @@ Если Настройка.КонечнаяТочкаКорреспондента.Пустая() Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не найдена конечная точка корреспондента с кодом ""%1"".'"), - НастройкаИзМенеджераСервиса.КонечнаяТочкаКорреспондента - ); + НастройкаИзМенеджераСервиса.КонечнаяТочкаКорреспондента); КонецЕсли; Если Настройка.СинхронизацияНастроена Тогда @@ -709,8 +716,7 @@ // Заполняем поле "Корреспондент" для существующих настроек Настройка.Корреспондент = ПланыОбмена[Настройка.ПланОбмена].НайтиПоКоду( - ОбменДаннымиВМоделиСервиса.КодУзлаПланаОбменаВСервисе(Настройка.ОбластьДанных) - ); + ОбменДаннымиВМоделиСервиса.КодУзлаПланаОбменаВСервисе(Настройка.ОбластьДанных)); Настройка.Описание = ОбменДаннымиСервер.ОписаниеОграниченийПередачиДанных(Настройка.Корреспондент); @@ -731,8 +737,7 @@ Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииМониторСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииМониторСинхронизацииДанных); Отказ = Истина; Возврат; КонецПопытки; @@ -763,15 +768,13 @@ // Получаем представление даты успешной синхронизации Элементы.ПредставлениеДатыСинхронизации.Заголовок = ОбменДаннымиСервер.ПредставлениеДатыСинхронизации( - ОбменДаннымиВМоделиСервиса.ДатаПоследнейУспешнойЗагрузкиДляВсехУзловИнформационнойБазы() - ); + ОбменДаннымиВМоделиСервиса.ДатаПоследнейУспешнойЗагрузкиДляВсехУзловИнформационнойБазы()); ОбновитьНастройкиСинхронизацииДанных(); Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииМониторСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииМониторСинхронизацииДанных); Отказ = Истина; Возврат; КонецПопытки; @@ -826,20 +829,17 @@ // Отправляем сообщение в МС Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеПротолкнутьСинхронизацию() - ); + СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеПротолкнутьСинхронизацию()); Сообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); Сообщение.Body.SessionId = НоваяСессия(); СообщенияВМоделиСервиса.ОтправитьСообщение(Сообщение, - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса(), Истина - ); + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса(), Истина); ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииМониторСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииМониторСинхронизацииДанных); Отказ = Истина; Возврат; КонецПопытки; @@ -883,4 +883,4 @@ ТаблицаПереходовНоваяСтрока(3, "ОжиданиеПолученияДанных",,,,,, Истина, "ОжиданиеПолученияДанныхДлительнаяОперация_ОбработкаДлительнойОперации"); ТаблицаПереходовНоваяСтрока(4, "ОжиданиеПолученияДанных",,,,,, Истина, "ОжиданиеПолученияДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); -КонецПроцедуры +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/CommonForms/СозданиеНачальногоОбразаСФайлами/Help/ru.html b/SSL/src/CommonForms/СозданиеНачальногоОбразаСФайлами/Help/ru.html index cc5397710..909af6c2f 100644 --- a/SSL/src/CommonForms/СозданиеНачальногоОбразаСФайлами/Help/ru.html +++ b/SSL/src/CommonForms/СозданиеНачальногоОбразаСФайлами/Help/ru.html @@ -1,2 +1,2 @@ - +

            В этой форме вам надо указать параметры файловой или клиент-серверной базы, где будет создан начальный образ базы для обмена РИБ. Если у вас есть файлы в томах, вам также потребуется указать путь к файлу, в который будет записан архив (zip) со всеми файлами в томах. При первом запуске в базе филиала вам нужно будет выполнить команду "Разместить файлы начального образа", указав в ней путь к файлу архива.

            \ No newline at end of file diff --git a/SSL/src/CommonForms/СозданиеРезервнойКопии/Module.bsl b/SSL/src/CommonForms/СозданиеРезервнойКопии/Module.bsl index 64d74f6cb..c917a272f 100644 --- a/SSL/src/CommonForms/СозданиеРезервнойКопии/Module.bsl +++ b/SSL/src/CommonForms/СозданиеРезервнойКопии/Module.bsl @@ -9,8 +9,7 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; diff --git a/SSL/src/CommonForms/СообщениеОНеудачномОбновлении/СообщениеОНеудачномОбновлении.mdo b/SSL/src/CommonForms/СообщениеОНеудачномОбновлении/СообщениеОНеудачномОбновлении.mdo deleted file mode 100644 index 99bb43b16..000000000 --- a/SSL/src/CommonForms/СообщениеОНеудачномОбновлении/СообщениеОНеудачномОбновлении.mdo +++ /dev/null @@ -1,10 +0,0 @@ - - - СообщениеОНеудачномОбновлении - - ru - Сообщение о неудачном обновлении - - PersonalComputer - MobileDevice - diff --git a/SSL/src/CommonForms/СохранениеПечатнойФормы/Form.form b/SSL/src/CommonForms/СохранениеПечатнойФормы/Form.form index 84ec8a443..7a42692e7 100644 --- a/SSL/src/CommonForms/СохранениеПечатнойФормы/Form.form +++ b/SSL/src/CommonForms/СохранениеПечатнойФормы/Form.form @@ -703,7 +703,7 @@ SaveValues Yes 40 - DontBlock + LockOwner Use true true diff --git a/SSL/src/CommonForms/СохранениеПечатнойФормы/Module.bsl b/SSL/src/CommonForms/СохранениеПечатнойФормы/Module.bsl index b0de606e5..60da70b4f 100644 --- a/SSL/src/CommonForms/СохранениеПечатнойФормы/Module.bsl +++ b/SSL/src/CommonForms/СохранениеПечатнойФормы/Module.bsl @@ -3,8 +3,7 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; @@ -112,16 +111,16 @@ Если ФорматыСохранения.Количество() = 0 Тогда Предупреждение(НСтр("ru = 'Необходимо указать как минимум один из предложенных форматов.'")); Возврат; - КонецЕсли; + КонецЕсли; - Результат = Новый Структура; - Результат.Вставить("УпаковатьВАрхив", УпаковатьВАрхив); - Результат.Вставить("ФорматыСохранения", ФорматыСохранения); - Результат.Вставить("ВариантСохранения", ВариантСохранения); - Результат.Вставить("ПапкаДляСохранения", ВыбраннаяПапка); - Результат.Вставить("ОбъектДляПрикрепления", ВыбранныйОбъект); + РезультатВыбора = Новый Структура; + РезультатВыбора.Вставить("УпаковатьВАрхив", УпаковатьВАрхив); + РезультатВыбора.Вставить("ФорматыСохранения", ФорматыСохранения); + РезультатВыбора.Вставить("ВариантСохранения", ВариантСохранения); + РезультатВыбора.Вставить("ПапкаДляСохранения", ВыбраннаяПапка); + РезультатВыбора.Вставить("ОбъектДляПрикрепления", ВыбранныйОбъект); - Закрыть(Результат); + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры diff --git a/SSL/src/CommonForms/СтруктураПодчиненности/Help/ru.html b/SSL/src/CommonForms/СтруктураПодчиненности/Help/ru.html index b4a51492b..72af55e26 100644 --- a/SSL/src/CommonForms/СтруктураПодчиненности/Help/ru.html +++ b/SSL/src/CommonForms/СтруктураПодчиненности/Help/ru.html @@ -1,4 +1,4 @@ - +

            Отчёт Структура подчиненности предназначен для вывода родительских и подчиненных документов. Документ, для котого сформирован отчёт отображается жирным шрифтом. Дерево родительских документов строится вверх-вправо от документа, для которого формируется отчёт. Дерево дочерних документов строится вниз-вправо от документа, для которого формируется отчёт.

            При помощи двойного клика на любом выведенном в отчёт документе можно открыть данный документ для просмотра.

            Воспользовашись кнопкой Вывести для текущего можно сформировать отчёт Структура подчиненности для документа, на котором мы на данный момент спозиционировались.

            diff --git a/SSL/src/CommonForms/СтруктураПодчиненности/Module.bsl b/SSL/src/CommonForms/СтруктураПодчиненности/Module.bsl index 88259bd80..757cd4f47 100644 --- a/SSL/src/CommonForms/СтруктураПодчиненности/Module.bsl +++ b/SSL/src/CommonForms/СтруктураПодчиненности/Module.bsl @@ -164,7 +164,7 @@ Если ДеревоПодчиненныеДокументы.ПолучитьЭлементы().Количество() И ДеревоРодительскиеДокументы.ПолучитьЭлементы().Количество() Тогда ОбластьКартинка = Макет.ПолучитьОбласть("ДокументПомеченНаУдалениеКоннекторВерхНиз"); ИначеЕсли ДеревоПодчиненныеДокументы.ПолучитьЭлементы().Количество() Тогда - ОбластьКартинка = Макет.ПолучитьОбласть("ДокументПомеченНаУделениеКоннекторНиз"); + ОбластьКартинка = Макет.ПолучитьОбласть("ДокументПомеченНаУдалениеКоннекторНиз"); ИначеЕсли ДеревоРодительскиеДокументы.ПолучитьЭлементы().Количество() Тогда ОбластьКартинка = Макет.ПолучитьОбласть("ДокументПомеченНаУдалениеКоннекторВерх"); Иначе @@ -231,7 +231,7 @@ // СтрокаДерева - ДанныеФормыЭлементДерева - исходная строка дерева значений // от которой ведется отсчет. // Возвращаемое значение: -// Булево - необходимость вывода в области вертиркального коннекотора +// Булево - необходимость вывода в области вертикального коннектора. // &НаСервере Функция НеобходимостьВыводаВертикальногоКоннектора(УровеньВверх,СтрокаДерева,ИщемСредиПодчиненных = Истина) @@ -266,20 +266,13 @@ // Выводит в табличный документ строку с документом, для которого формируется структура подчиненности // // Параметры -// Макет - МакетТабличногоДокумента - макет, на основании которого формирутеся табличный документ. +// Макет - МакетТабличногоДокумента - макет, на основании которого формируется табличный документ. &НаСервере Процедура ВывестиТекущийДокумент(Макет) Выборка = ПолучитьВыборкуПоРеквизитамДокумента(ДокументСсылка); Если Выборка.Следующий() Тогда - ПереопределяемоеПредставление = Неопределено; - ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.СтруктураПодчиненности\ПриПолученииПредставленияДокументаДляПечати"); - Для Каждого Обработчик Из ОбработчикиСобытия Цикл - Обработчик.Модуль.ПриПолученииПредставленияДокументаДляПечати(Выборка, ПереопределяемоеПредставление); - КонецЦикла; - ПереопределяемоеПредставление = СтруктураПодчиненностиПереопределяемый.ПолучитьПредставлениеДокументаДляПечати(Выборка); Если ПереопределяемоеПредставление <> Неопределено Тогда @@ -429,7 +422,7 @@ // Получает выборку по реквизитам документа // // Параметры -// ДокументСсылка - ДокументСсылка - документ, значения реквзитов которого получаются запросом. +// ДокументСсылка - ДокументСсылка - документ, значения реквизитов которого получаются запросом. // // Возвращаемое значение: // ВыборкаИзРезультатаЗапроса @@ -455,13 +448,6 @@ ЗаменитьТекстЗапроса(ТекстЗапроса, МетаданныеДокумента, "#Сумма", "СуммаДокумента"); ЗаменитьТекстЗапроса(ТекстЗапроса, МетаданныеДокумента, "#Валюта", "Валюта"); - МассивДопРеквизитов = Новый Массив; - ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.СтруктураПодчиненности\ПриФормированииМассиваДополнительныхРеквизитовДокумента"); - Для Каждого Обработчик Из ОбработчикиСобытия Цикл - Обработчик.Модуль.ПриФормированииМассиваДополнительныхРеквизитовДокумента(МетаданныеДокумента.Имя, МассивДопРеквизитов); - КонецЦикла; - МассивДопРеквизитов = СтруктураПодчиненностиПереопределяемый.МассивДополнительныхРеквизитовДокумента(МетаданныеДокумента.Имя); ДополнитьТекстЗапросаПоРеквизитамДокумента(ТекстЗапроса, МассивДопРеквизитов); @@ -575,7 +561,7 @@ КонецПроцедуры -// Определяет наличие документа среди родителей строки дерева, которая возомжно будет добавлена +// Определяет наличие документа среди родителей строки дерева, которая возможно будет добавлена // // Параметры // СтрокаРодитель - ДанныеФормыДерево,ДанныеФормыЭлементДерева - родитель, для @@ -715,15 +701,8 @@ | Документ." + КлючИЗначение.Ключ + " |ГДЕ | Ссылка В (&" + КлючИЗначение.Ключ + ")"; - - Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение); - МассивДопРеквизитов = Новый Массив; - ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.СтруктураПодчиненности\ПриФормированииМассиваДополнительныхРеквизитовДокумента"); - Для Каждого Обработчик Из ОбработчикиСобытия Цикл - Обработчик.Модуль.ПриФормированииМассиваДополнительныхРеквизитовДокумента(КлючИЗначение.Ключ, МассивДопРеквизитов); - КонецЦикла; + Запрос.УстановитьПараметр(КлючИЗначение.Ключ, КлючИЗначение.Значение); МассивДопРеквизитов = СтруктураПодчиненностиПереопределяемый.МассивДополнительныхРеквизитовДокумента(КлючИЗначение.Ключ); ДополнитьТекстЗапросаПоРеквизитамДокумента(ТекстПоТипуДокумента, МассивДопРеквизитов); @@ -752,13 +731,6 @@ НоваяСтрока = СтрокиДерева.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка, "Ссылка, Представление, СуммаДокумента, Валюта, Проведен, ПометкаУдаления"); - ПереопределяемоеПредставление = Неопределено; - ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.СтруктураПодчиненности\ПриПолученииПредставленияДокументаДляПечати"); - Для Каждого Обработчик Из ОбработчикиСобытия Цикл - Обработчик.Модуль.ПриПолученииПредставленияДокументаДляПечати(Выборка, ПереопределяемоеПредставление); - КонецЦикла; - ПереопределенноеПредставление = СтруктураПодчиненностиПереопределяемый.ПолучитьПредставлениеДокументаДляПечати(Выборка); Если ПереопределенноеПредставление <> Неопределено Тогда НоваяСтрока.Представление = ПереопределенноеПредставление; diff --git a/SSL/src/CommonForms/УстановкаВедущейКонечнойТочки/Module.bsl b/SSL/src/CommonForms/УстановкаВедущейКонечнойТочки/Module.bsl index 085e257d4..8fcc53793 100644 --- a/SSL/src/CommonForms/УстановкаВедущейКонечнойТочки/Module.bsl +++ b/SSL/src/CommonForms/УстановкаВедущейКонечнойТочки/Module.bsl @@ -20,8 +20,7 @@ Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Установка ведущей конечной точки для ""%1""'"), - ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КонечнаяТочка, "Наименование") - ); + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(КонечнаяТочка, "Наименование")); КонецПроцедуры @@ -32,8 +31,7 @@ Отказ, , ЗакрытьФормуБезусловно, - НСтр("ru = 'Отменить выполнение операции?'") - ); + НСтр("ru = 'Отменить выполнение операции?'")); КонецПроцедуры @@ -63,7 +61,7 @@ Отбор = Новый Структура; Отбор.Вставить("СобытиеЖурналаРегистрации", СобытиеЖурналаРегистрацииУстановкаВедущейКонечнойТочки); - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма", Отбор, ЭтаФорма); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", Отбор, ЭтаФорма); КонецЕсли; Возврат; diff --git a/SSL/src/CommonForms/УстановкаПодписиЭЦП/Help/ru.html b/SSL/src/CommonForms/УстановкаПодписиЭЦП/Help/ru.html index 133ca9919..e10703aa8 100644 --- a/SSL/src/CommonForms/УстановкаПодписиЭЦП/Help/ru.html +++ b/SSL/src/CommonForms/УстановкаПодписиЭЦП/Help/ru.html @@ -1,4 +1,4 @@ - +

            В форме выбирается сертификат электронной цифровой подписи (ЭЦП) для подписания данных.

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

            Для выполнения подписи следует нажать кнопку "Подписать".

            diff --git a/SSL/src/CommonForms/УстановкаПодписиЭЦП/Module.bsl b/SSL/src/CommonForms/УстановкаПодписиЭЦП/Module.bsl index 5fd6e6cd0..0e513ad7e 100644 --- a/SSL/src/CommonForms/УстановкаПодписиЭЦП/Module.bsl +++ b/SSL/src/CommonForms/УстановкаПодписиЭЦП/Module.bsl @@ -54,7 +54,7 @@ СтруктураСертификата = ЭлектроннаяЦифроваяПодписьКлиентСервер.ЗаполнитьСтруктуруСертификата(ВыбранныйСертификат); Если СтруктураСертификата <> Неопределено Тогда ПараметрыФормы = Новый Структура("СтруктураСертификата, Отпечаток", СтруктураСертификата, СтрокаСертификата.Отпечаток); - СтруктураВозврата = ОткрытьФормуМодально("Общаяформа.СертификатЭЦП", ПараметрыФормы); + ОткрытьФорму("ОбщаяФорма.СертификатЭЦП", ПараметрыФормы, ЭтаФорма); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonForms/УточнениеКонтактов/Form.form b/SSL/src/CommonForms/УточнениеКонтактов/Form.form index 6e7bbed3f..d9de2527b 100644 --- a/SSL/src/CommonForms/УточнениеКонтактов/Form.form +++ b/SSL/src/CommonForms/УточнениеКонтактов/Form.form @@ -161,10 +161,6 @@ StartChoice ТаблицаКонтактовКонтактНачалоВыбора - - StartListChoice - ТаблицаКонтактовКонтактНачалоВыбораИзСписка - Clearing ТаблицаКонтактовКонтактОчистка @@ -219,10 +215,6 @@ Left true - - StartListChoice - ТаблицаКонтактовТекущийАдресКонтактаНачалоВыбораИзСписка - Clearing ТаблицаКонтактовТекущийАдресКонтактаОчистка @@ -282,6 +274,10 @@ BeforeDeleteRow ТаблицаКонтактовПередУдалением + + OnActivateCell + ТаблицаКонтактовПриАктивизацииЯчейки + ТаблицаКонтактовСтрокаПоиска 35 @@ -428,6 +424,10 @@ Left true + + NotificationProcessing + ОбработкаОповещения + BeforeClose ПередЗакрытием @@ -437,7 +437,7 @@ ПриСозданииНаСервере 150 - DontBlock + LockOwner true true Vertical diff --git a/SSL/src/CommonForms/УточнениеКонтактов/Module.bsl b/SSL/src/CommonForms/УточнениеКонтактов/Module.bsl index 0ce8c6958..25e014d63 100644 --- a/SSL/src/CommonForms/УточнениеКонтактов/Module.bsl +++ b/SSL/src/CommonForms/УточнениеКонтактов/Module.bsl @@ -1,11 +1,9 @@ - //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; @@ -41,41 +39,48 @@ КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ Таблица контактов - &НаКлиенте -Процедура ТаблицаКонтактовКонтактНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка) +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) - ТекущиеДанные = Элементы.ТаблицаКонтактов.ТекущиеДанные; - Если ТекущиеДанные = Неопределено Тогда - Возврат; - КонецЕсли; + Если ИмяСобытия = "ВыбранКонтакт" Тогда + + ТекущиеДанные = Элементы.ТаблицаКонтактов.ТекущиеДанные; + ТекущиеДанные.Контакт = Параметр.ВыбранныйКонтакт; + ЗаполнитьАдресаКонтакта(Элементы.ТаблицаКонтактов.ТекущаяСтрока); + УстановитьСнятьПризнакИзменятьЕслиНеобходимо(ТекущиеДанные); + Модифицированность = Истина; - Элементы.ТаблицаКонтактовКонтакт.СписокВыбора.Очистить(); - Если ТекущиеДанные.СписокНайденныхКонтактов.Количество() > 0 Тогда - Элементы.ТаблицаКонтактовКонтакт.СписокВыбора.ЗагрузитьЗначения( - ТекущиеДанные.СписокНайденныхКонтактов.ВыгрузитьЗначения()); КонецЕсли; КонецПроцедуры &НаКлиенте -Процедура ТаблицаКонтактовТекущийАдресКонтактаНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка) +Процедура ТаблицаКонтактовПриАктивизацииЯчейки(Элемент) ТекущиеДанные = Элементы.ТаблицаКонтактов.ТекущиеДанные; Если ТекущиеДанные = Неопределено Тогда Возврат; КонецЕсли; - Элементы.ТаблицаКонтактовТекущийАдресКонтакта.СписокВыбора.Очистить(); - Если ТекущиеДанные.ТаблицаАдресовКонтакта.Количество() > 0 Тогда - Для каждого СтрокаТаблицыАдресов Из ТекущиеДанные.ТаблицаАдресовКонтакта Цикл - Элементы.ТаблицаКонтактовТекущийАдресКонтакта.СписокВыбора.Добавить( - Новый Структура("Вид,Адрес",СтрокаТаблицыАдресов.Вид, СтрокаТаблицыАдресов.АдресЭП), - СформироватьПредставлениеАдресаСВидом(СтрокаТаблицыАдресов.АдресЭП, СтрокаТаблицыАдресов.ВидНаименование)); - КонецЦикла; - + Если Элемент.ТекущийЭлемент.Имя = "ТаблицаКонтактовКонтакт" Тогда + + Элементы.ТаблицаКонтактовКонтакт.СписокВыбора.Очистить(); + Если ТекущиеДанные.СписокНайденныхКонтактов.Количество() > 0 Тогда + Элементы.ТаблицаКонтактовКонтакт.СписокВыбора.ЗагрузитьЗначения( + ТекущиеДанные.СписокНайденныхКонтактов.ВыгрузитьЗначения()); + КонецЕсли; + + ИначеЕсли Элемент.ТекущийЭлемент.Имя = "ТаблицаКонтактовТекущийАдресКонтакта" Тогда + + Элементы.ТаблицаКонтактовТекущийАдресКонтакта.СписокВыбора.Очистить(); + Если ТекущиеДанные.ТаблицаАдресовКонтакта.Количество() > 0 Тогда + Для каждого СтрокаТаблицыАдресов Из ТекущиеДанные.ТаблицаАдресовКонтакта Цикл + Элементы.ТаблицаКонтактовТекущийАдресКонтакта.СписокВыбора.Добавить( + Новый Структура("Вид,Адрес",СтрокаТаблицыАдресов.Вид, СтрокаТаблицыАдресов.АдресЭП), + СформироватьПредставлениеАдресаСВидом(СтрокаТаблицыАдресов.АдресЭП, СтрокаТаблицыАдресов.ВидНаименование)); + КонецЦикла; + + КонецЕсли; КонецЕсли; КонецПроцедуры @@ -188,14 +193,15 @@ Возврат; КонецЕсли; - Если ВзаимодействияКлиент.ВыбратьКонтакт( + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ТолькоEmail", Истина); + ПараметрыОткрытия.Вставить("ТолькоТелефон", Ложь); + ПараметрыОткрытия.Вставить("ЗаменятьПустыеАдресИПредставление", Ложь); + ПараметрыОткрытия.Вставить("ДляФормыУточненияКонтактов", Истина); + + ВзаимодействияКлиент.ВыбратьКонтакт( Предмет, ТекущиеДанные.Адрес, ТекущиеДанные.Представление, - ТекущиеДанные.Контакт, Истина, Ложь, Ложь,Истина - ) Тогда - ЗаполнитьАдресаКонтакта(Элементы.ТаблицаКонтактов.ТекущаяСтрока); - УстановитьСнятьПризнакИзменятьЕслиНеобходимо(ТекущиеДанные); - Модифицированность = Истина; - КонецЕсли; + ТекущиеДанные.Контакт, ПараметрыОткрытия); КонецПроцедуры @@ -212,7 +218,7 @@ &НаКлиенте Процедура КомандаОКВыполнить() - Результат = Новый Массив; + РезультатВыбора = Новый Массив; ЕстьКонтактнаяИнформацияДляИзменения = Ложь; Для каждого СтрокаТаблицыКонтактов Из ТаблицаКонтактов Цикл @@ -226,7 +232,7 @@ СтрокаТаблицыКонтактов.Контакт, СтрокаТаблицыКонтактов.Группа); - Результат.Добавить(СтруктураДанные); + РезультатВыбора.Добавить(СтруктураДанные); КонецЦикла; @@ -241,7 +247,7 @@ Возврат; КонецЕсли; - Закрыть(Результат); + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры @@ -283,8 +289,10 @@ КонецЕсли; Для Каждого Группа Из Группа.Строки Цикл - ПредставлениеКонтакта = Группа.Наименование + ?(ПустаяСтрока(Группа.НаименованиеВладельца), "", " (" + Группа.НаименованиеВладельца + ")"); - СтрокаТаблицы.СписокНайденныхКонтактов.Добавить(Группа.Контакт, ПредставлениеКонтакта); + Если СтрокаТаблицы.СписокНайденныхКонтактов.НайтиПоЗначению(Группа.Контакт) = Неопределено Тогда + ПредставлениеКонтакта = Группа.Наименование + ?(ПустаяСтрока(Группа.НаименованиеВладельца), "", " (" + Группа.НаименованиеВладельца + ")"); + СтрокаТаблицы.СписокНайденныхКонтактов.Добавить(Группа.Контакт, ПредставлениеКонтакта); + КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; @@ -675,7 +683,7 @@ Исключение ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время обновления контактной информации %1 произошла ошибка - |%2'"), Выборка.Контакт,ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), Выборка.Контакт,ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(УправлениеЭлектроннойПочтой.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , @@ -711,7 +719,7 @@ &НаСервере Процедура ЗаполнитьАдресаКонтакта(ТекущаяСтрока) - ТекущиеДанные = ТаблицаКонтактов.НайтиПоИдентификатору(ТекущаяСтрока); + ТекущиеДанные = ТаблицаКонтактов.НайтиПоИдентификатору(ТекущаяСтрока); ТаблицаАдресов = ВзаимодействияВызовСервера.ПолучитьАдресаЭлектроннойПочтыКонтакта(ТекущиеДанные.Контакт,Истина); Если (Не НеИзменятьПредставлениеПриИзмененииКонтакта) ИЛИ ПустаяСтрока(ТекущиеДанные.Представление) Тогда @@ -720,3 +728,6 @@ ЗаполнитьТаблицуАдресовИзКоллекции(ТекущиеДанные, ТаблицаАдресов); КонецПроцедуры + + + diff --git a/SSL/src/CommonForms/ФормаВариантаОтчета/Form.form b/SSL/src/CommonForms/ФормаВариантаОтчета/Form.form index 94eaf01e1..2eba21c64 100644 --- a/SSL/src/CommonForms/ФормаВариантаОтчета/Form.form +++ b/SSL/src/CommonForms/ФормаВариантаОтчета/Form.form @@ -3918,23 +3918,6 @@ true - - РежимВыбора - - <key>ru</key> - <value>Режим выбора</value> - - 7 - - Boolean - - - true - - - true - - ЗавершитьРедактирование diff --git a/SSL/src/CommonForms/ФормаВариантаОтчета/Module.bsl b/SSL/src/CommonForms/ФормаВариантаОтчета/Module.bsl index 3fed281e1..2c12c95d2 100644 --- a/SSL/src/CommonForms/ФормаВариантаОтчета/Module.bsl +++ b/SSL/src/CommonForms/ФормаВариантаОтчета/Module.bsl @@ -358,14 +358,11 @@ Возврат; КонецЕсли; - Параметры.Свойство("РежимВыбора", РежимВыбора); - - Если РежимВыбора И Параметры.Свойство("ПредставлениеВарианта") И ЗначениеЗаполнено(Параметры.ПредставлениеВарианта) Тогда + Если Параметры.Свойство("ПредставлениеВарианта") И ЗначениеЗаполнено(Параметры.ПредставлениеВарианта) Тогда АвтоЗаголовок = Ложь; Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Изменение варианта отчета ""%1""'"), - Параметры.ПредставлениеВарианта - ); + Параметры.ПредставлениеВарианта); КонецЕсли; КонецПроцедуры @@ -375,10 +372,6 @@ &НаКлиенте Процедура ЗавершитьРедактирование(Команда) - Если РежимВыбора Тогда - ОповеститьОВыборе(Отчет.КомпоновщикНастроек); - Иначе - Закрыть(Истина); - КонецЕсли; + ОповеститьОВыборе(Отчет.КомпоновщикНастроек); КонецПроцедуры diff --git a/SSL/src/CommonForms/ФормаНастроекОтчета/Form.form b/SSL/src/CommonForms/ФормаНастроекОтчета/Form.form index adae5d858..edf29b8b2 100644 --- a/SSL/src/CommonForms/ФормаНастроекОтчета/Form.form +++ b/SSL/src/CommonForms/ФормаНастроекОтчета/Form.form @@ -253,23 +253,6 @@ </edit> <main>true</main> </attributes> - <attributes> - <name>РежимВыбора</name> - <title> - <key>ru</key> - <value>Режим выбора</value> - - 2 - - Boolean - - - true - - - true - - ЗавершитьРедактирование diff --git a/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl b/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl index f68c1c4b1..f81183e01 100644 --- a/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl +++ b/SSL/src/CommonForms/ФормаНастроекОтчета/Module.bsl @@ -7,14 +7,11 @@ Возврат; КонецЕсли; - Параметры.Свойство("РежимВыбора", РежимВыбора); - - Если РежимВыбора И Параметры.Свойство("ПредставлениеВарианта") И ЗначениеЗаполнено(Параметры.ПредставлениеВарианта) Тогда + Если Параметры.Свойство("ПредставлениеВарианта") И ЗначениеЗаполнено(Параметры.ПредставлениеВарианта) Тогда АвтоЗаголовок = Ложь; Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Изменение настроек отчета ""%1""'"), - Параметры.ПредставлениеВарианта - ); + Параметры.ПредставлениеВарианта); КонецЕсли; КонецПроцедуры @@ -24,9 +21,5 @@ &НаКлиенте Процедура ЗавершитьРедактирование(Команда) - Если РежимВыбора Тогда - ОповеститьОВыборе(Отчет.КомпоновщикНастроек); - Иначе - Закрыть(Истина); - КонецЕсли; + ОповеститьОВыборе(Отчет.КомпоновщикНастроек); КонецПроцедуры diff --git a/SSL/src/CommonForms/ФормаОтчета/Form.form b/SSL/src/CommonForms/ФормаОтчета/Form.form index 95561ce80..4b9ca62cb 100644 --- a/SSL/src/CommonForms/ФормаОтчета/Form.form +++ b/SSL/src/CommonForms/ФормаОтчета/Form.form @@ -1808,6 +1808,10 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> + <handlers> + <event>OnClose</event> + <name>ПриЗакрытии</name> + </handlers> <excludedCommands>ReportSettings</excludedCommands> <windowOpeningMode>DontBlock</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> diff --git a/SSL/src/CommonForms/ФормаОтчета/Module.bsl b/SSL/src/CommonForms/ФормаОтчета/Module.bsl index 3fca82071..c7a0e2368 100644 --- a/SSL/src/CommonForms/ФормаОтчета/Module.bsl +++ b/SSL/src/CommonForms/ФормаОтчета/Module.bsl @@ -41,10 +41,10 @@ // Реквизиты ВерсияСтандартныхФункцийОтчетов = ""; - Попытка + Попытка ВерсияСтандартныхФункцийОтчетов = ОтчетОбъект.ВерсияСтандартныхФункцийОтчетов(); Исключение - // Обработка не требуется. Отчет не имеет програмнного интерфейса для тесной интеграции с формой отчета. + // Обработка не требуется. Отчет не имеет программного интерфейса для тесной интеграции с формой отчета. КонецПопытки; // Параметры по умолчанию @@ -61,8 +61,7 @@ ЭтаФормаПараметры = Новый Структура( "КлючНазначенияИспользования, КлючПользовательскихНастроек, |Расшифровка, СформироватьПриОткрытии, ТолькоПросмотр, - |ФиксированныеНастройки, ОтчетСсылка" - ); + |ФиксированныеНастройки, ОтчетСсылка"); ЗаполнитьЗначенияСвойств(ЭтаФормаПараметры, Параметры); Если НЕ ЗначениеЗаполнено(ЭтаФормаПараметры.ОтчетСсылка) Тогда ОтчетИнформация = ВариантыОтчетов.СформироватьИнформациюОбОтчетеПоПолномуИмени(КлючОбъекта); @@ -110,7 +109,10 @@ ВидимостьДоступностьКорректность(); // Механизмы расширения - ВариантыОтчетов.ФормаОтчетаПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") Тогда + МодульРассылкаОтчетов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РассылкаОтчетов"); + МодульРассылкаОтчетов.ФормаОтчетаДобавитьКоманды(ЭтаФорма, Отказ, СтандартнаяОбработка); + КонецЕсли; ФормаОтчетаПереопределяемый.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка); // Если в подменю одна команда, то выпадающий список не отображается. @@ -129,28 +131,48 @@ Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) Результат = Ложь; - Если ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ФормаНастроекОтчета" Тогда - СуффиксФормыИсточникаИзменений = "Настроек"; - ИначеЕсли ИсточникВыбора.ИмяФормы = "ОбщаяФорма.ФормаВариантаОтчета" Тогда - СуффиксФормыИсточникаИзменений = "Варианта"; + СуффиксФормыИсточникаИзменений = ИсточникВыбора.ИмяФормы; + ПозицияТочки = СтрДлина(СуффиксФормыИсточникаИзменений); + Пока Сред(СуффиксФормыИсточникаИзменений, ПозицияТочки, 1) <> "." Цикл + ПозицияТочки = ПозицияТочки - 1; + КонецЦикла; + СуффиксФормыИсточникаИзменений = ВРег(Сред(СуффиксФормыИсточникаИзменений, ПозицияТочки + 1)); + + Если СуффиксФормыИсточникаИзменений = ВРег("ВыборПроизвольногоПериода") Тогда + ЗагрузитьРезультатВыбораПериодаИзОтдельнойФормы(ВыбранноеЗначение); + Возврат; + ИначеЕсли СуффиксФормыИсточникаИзменений = ВРег("ФормаНастроекОтчета") + Или СуффиксФормыИсточникаИзменений = ВРег("ФормаНастроек") Тогда + ИзмененияИзФормыВариантаОтчета = Ложь; + ИначеЕсли СуффиксФормыИсточникаИзменений = ВРег("ФормаВариантаОтчета") + Или СуффиксФормыИсточникаИзменений = ВРег("ФормаВарианта") Тогда + ИзмененияИзФормыВариантаОтчета = Истина; Иначе - СуффиксФормыИсточникаИзменений = СтрЗаменить("^" + ИсточникВыбора.ИмяФормы, "^" + ИмяФормы, ""); // ^ - начало строки + ИзмененияИзФормыВариантаОтчета = Неопределено; КонецЕсли; - Если СуффиксФормыИсточникаИзменений = "Настроек" ИЛИ СуффиксФормыИсточникаИзменений = "Варианта" Тогда - БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму(ВыбранноеЗначение, СуффиксФормыИсточникаИзменений); + Если ИзмененияИзФормыВариантаОтчета <> Неопределено Тогда + БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму(ВыбранноеЗначение, ИзмененияИзФормыВариантаОтчета); БыстрыеНастройкиЗаполнить(); Результат = Истина; КонецЕсли; // Механизмы расширения - ВариантыОтчетовКлиент.ФормаОтчетаОбработкаВыбора(ЭтаФорма, ВыбранноеЗначение, ИсточникВыбора, Результат); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") Тогда + МодульРассылкаОтчетовКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РассылкаОтчетовКлиент"); + МодульРассылкаОтчетовКлиент.ФормаОтчетаОбработкаВыбора(ЭтаФорма, ВыбранноеЗначение, ИсточникВыбора, Результат); + КонецЕсли; ФормаОтчетаКлиентПереопределяемый.ОбработкаВыбора(ЭтаФорма, ВыбранноеЗначение, ИсточникВыбора, Результат); КонецПроцедуры &НаСервере Процедура ПриЗагрузкеВариантаНаСервере(НовыеНастройкиКД) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + // Вызов переопределяемого модуля ФормаОтчетаПереопределяемый.ПередЗагрузкойВариантаНаСервере(ЭтаФорма, НовыеНастройкиКД); @@ -168,7 +190,7 @@ // Заполнение панели быстрых настроек РежимВариантаОтчета = Истина; ВариантСсылка = ВариантыОтчетов.ПолучитьСсылку(ЭтаФормаПараметры.ОтчетСсылка, КлючТекущегоВарианта); - БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму(НовыеНастройкиКД); + БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму(НовыеНастройкиКД, Неопределено); БыстрыеНастройкиЗаполнить(); // Вызов переопределяемого модуля @@ -189,7 +211,7 @@ ФормаОтчетаПереопределяемый.ПередЗагрузкойПользовательскихНастроекНаСервере(ЭтаФорма, НовыеПользовательскиеНастройкиКД); Если РежимВариантаОтчета Тогда - БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму(НовыеПользовательскиеНастройкиКД); + БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму(НовыеПользовательскиеНастройкиКД, Неопределено); БыстрыеНастройкиЗаполнить(); КонецЕсли; @@ -197,6 +219,14 @@ ФормаОтчетаПереопределяемый.ПриЗагрузкеПользовательскихНастроекНаСервере(ЭтаФорма, НовыеПользовательскиеНастройкиКД); КонецПроцедуры +&НаКлиенте +Процедура ПриЗакрытии() + Если ФоновоеЗаданиеИдентификатор <> Неопределено Тогда + ФоновоеЗаданиеОтменить(ФоновоеЗаданиеИдентификатор); + ФоновоеЗаданиеИдентификатор = Неопределено; + КонецЕсли; +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -518,7 +548,6 @@ ПараметрыФормы.Вставить("ПредставлениеВарианта", Строка(ОтчетНаименованиеТекущегоВарианта)); ПараметрыФормы.Вставить("ПредставлениеПользовательскихНастроек", ""); - ПараметрыФормы.Вставить("РежимВыбора", Истина); ОткрытьФорму(КлючОбъекта + ".ФормаНастроек", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -536,7 +565,6 @@ ПараметрыФормы.Вставить("ПредставлениеВарианта", Строка(ОтчетНаименованиеТекущегоВарианта)); ПараметрыФормы.Вставить("ПредставлениеПользовательскихНастроек", ""); - ПараметрыФормы.Вставить("РежимВыбора", Истина); ОткрытьФорму(КлючОбъекта + ".ФормаВарианта", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -549,7 +577,7 @@ КонецЕсли; // Заполнение панели быстрых настроек - БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму("СброситьНастройки"); + БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму("СброситьНастройки", Неопределено); БыстрыеНастройкиЗаполнить(); КонецПроцедуры @@ -578,9 +606,7 @@ ПараметрыФормы.Вставить("Заголовок", СтрЗаменить( НСтр("ru = 'Отправка отчета ""%1"" по почте'"), "%1", - ЭтаФорма.ОтчетНаименованиеТекущегоВарианта - ) - ); + ЭтаФорма.ОтчетНаименованиеТекущегоВарианта)); ОткрытьФорму("ОбщаяФорма.ОтправкаТабличныхДокументовПоПочте", ПараметрыФормы, , ); КонецПроцедуры @@ -611,7 +637,10 @@ Процедура Подключаемый_Команда(Команда) // Механизмы расширения Результат = Ложь; - ВариантыОтчетовКлиент.ФормаОтчетаОбработчикКоманды(ЭтаФорма, Команда, Результат); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") Тогда + МодульРассылкаОтчетовКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РассылкаОтчетовКлиент"); + МодульРассылкаОтчетовКлиент.ФормаОтчетаОбработчикКоманды(ЭтаФорма, Команда, Результат); + КонецЕсли; ФормаОтчетаКлиентПереопределяемый.ОбработчикКоманды(ЭтаФорма, Команда, Результат); КонецПроцедуры @@ -667,7 +696,7 @@ ПараметрыФормыВыбора.Вставить("ЗакрыватьПриЗакрытииВладельца", Истина); ПараметрыФормыВыбора.Вставить("Отбор", Новый Структура); // Стандартные параметры формы выбора (см. Расширение управляемой формы для динамического списка) - ПараметрыФормыВыбора.Вставить("ВыборГруппИЭлементов", ЭлементЗначение.ВыборГруппИЭлементов); + ПараметрыФормыВыбора.Вставить("ВыборГруппИЭлементов", ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуИспользованиеГруппИЭлементов(ЭлементЗначение.ВыборГруппИЭлементов)); ПараметрыФормыВыбора.Вставить("МножественныйВыбор", Истина); ПараметрыФормыВыбора.Вставить("РежимВыбора", Истина); // Предполагаемые реквизиты @@ -760,8 +789,7 @@ + "-" + Сред(ЭлементИдентификатор, 17, 4) + "-" - + Сред(ЭлементИдентификатор, 21) - ); + + Сред(ЭлементИдентификатор, 21)); КонецФункции @@ -802,12 +830,22 @@ ПараметрыФормы.Вставить("КонецПериода", Настройки.Пользовательская.Значение.ДатаОкончания); ПараметрыФормы.Вставить("МинимальныйПериод", МинимальнаяПериодичность); ПараметрыФормы.Вставить("ВидПериода", ВидПериода); + ПараметрыФормы.Вставить("ИмяЭлемента", ЭлементИлиКоманда.Имя); + ПараметрыФормы.Вставить("РежимВыбора", Истина); + + ОткрытьФорму("ОбщаяФорма.ВыборПроизвольногоПериода", ПараметрыФормы, ЭтаФорма); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗагрузитьРезультатВыбораПериодаИзОтдельнойФормы(РезультатВыбора) - РезультатВыбора = ОткрытьФормуМодально("ОбщаяФорма.ВыборПроизвольногоПериода", ПараметрыФормы, ЭтаФорма); Если ТипЗнч(РезультатВыбора) <> Тип("Структура") Тогда Возврат; КонецЕсли; + Настройки = СкомпоноватьНастройкиЭлемента(РезультатВыбора.ИмяЭлемента, Ложь, Ложь); + ПериодЗаполнен = Ложь; НачалоПериода = РезультатВыбора.НачалоПериода; КонецПериода = РезультатВыбора.КонецПериода; @@ -820,8 +858,8 @@ ПериодЗаполнен = Истина; КонецЕсли; - Если НачалоПериода = ПараметрыФормы.НачалоПериода - И КонецПериода = ПараметрыФормы.КонецПериода Тогда + Если НачалоПериода = Настройки.Пользовательская.Значение.ДатаНачала + И КонецПериода = Настройки.Пользовательская.Значение.ДатаОкончания Тогда Возврат; КонецЕсли; @@ -900,8 +938,7 @@ Настройки = Новый Структура( "Идентификатор, ЭлементИдентификатор, СтрокаКэша, Пользовательская, Общая, Прочие, - |Использование, Значение, Элемент" - ); + |Использование, Значение, Элемент"); Настройки.ЭлементИдентификатор = Прав(ИмяИнициатора, 32); Настройки.Идентификатор = ПривестиИмяКИдентификатору(Настройки.ЭлементИдентификатор); Настройки.СтрокаКэша = НайтиВКэше(КэшНастроекСКД, "Идентификатор", Настройки.Идентификатор); @@ -1005,7 +1042,7 @@ КонецПроцедуры &НаСервере -Процедура БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму(НовыеНастройки, СуффиксФормыИсточникаИзменений = "") +Процедура БыстрыеНастройкиЗагрузитьСхемуИОчиститьФорму(НовыеНастройки, ИзмененияИзФормыВариантаОтчета) Если НовыеНастройки <> Неопределено Тогда ОтображениеСостояния = Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния; @@ -1018,12 +1055,12 @@ ПользовательскиеНастройкиМодифицированы = Истина; - Если СуффиксФормыИсточникаИзменений = "Варианта" Тогда + // Включение флажка "ВариантМодифицирован"... + Если ИзмененияИзФормыВариантаОтчета = Истина Тогда + // ... если редактировался вариант отчета. ВариантМодифицирован = Истина; - КонецЕсли; - - Если СуффиксФормыИсточникаИзменений = "Настроек" И ВариантМодифицирован = Ложь Тогда - + ИначеЕсли ИзмененияИзФормыВариантаОтчета = Ложь И ВариантМодифицирован = Ложь Тогда + // ... если в результате изменения пользовательских настроек так же изменился их состав. ПользовательскиеНастройкиКД = НовыеНастройки.ПользовательскиеНастройки; КэшНастроек = РеквизитФормыВЗначение("КэшНастроекСКД", Тип("ТаблицаЗначений")); Для Каждого ПользовательскаяНастройка Из ПользовательскиеНастройкиКД.Элементы Цикл @@ -1035,11 +1072,9 @@ КонецЕсли; КэшНастроек.Удалить(СтрокаТаблицы); КонецЦикла; - Если КэшНастроек.Количество() > 0 Тогда ВариантМодифицирован = Истина; КонецЕсли; - КонецЕсли; Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(НовыеНастройки.Настройки); @@ -1196,8 +1231,7 @@ УникальныйИдентификатор, "ВариантыОтчетов.СформироватьОтчет", ПараметрыФормированияОтчета, - НСтр("ru = 'Варианты отчетов: Формирование отчета'") - ); + НСтр("ru = 'Варианты отчетов: Формирование отчета'")); ДопСвойства.Удалить("КлючВарианта"); Исключение ДопСвойства.Удалить("КлючВарианта"); @@ -1241,12 +1275,23 @@ Возврат ЗаданиеВыполнено; КонецФункции +&НаСервереБезКонтекста +Процедура ФоновоеЗаданиеОтменить(ФоновоеЗаданиеИдентификатор) + ДлительныеОперации.ОтменитьВыполнениеЗадания(ФоновоеЗаданиеИдентификатор); +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Сервер &НаСервере Процедура БыстрыеНастройкиСоздатьЭлементыУправления() + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяКнопкиСпискаВыбора = "КнопкаВыпадающегоСписка"; + Иначе + ИмяКнопкиСпискаВыбора = "КнопкаСпискаВыбора"; + КонецЕсли; + // Реквизиты ДобавляемыеРеквизиты = Новый Массив; ПутиКДанным = Новый СписокЗначений; @@ -1326,7 +1371,7 @@ ШаблонГруппыСФлажками = Новый Структура; ШаблонГруппыСФлажками.Вставить("Вид", ВидГруппыФормы.ОбычнаяГруппа); ШаблонГруппыСФлажками.Вставить("Группировка", ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная); - ШаблонГруппыСФлажками.Вставить("Отображение", ОтображениеОбычнойГруппы.Линия); + ШаблонГруппыСФлажками.Вставить("Отображение", ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыЛиния()); ШаблонГруппыСФлажками.Вставить("ОтображатьЗаголовок", Истина); ШаблонГруппыСФлажками.Вставить("РастягиватьПоГоризонтали", Истина); @@ -1337,7 +1382,7 @@ ШаблонПоляВводаПроизвольногоПериода.Вставить("КнопкаОткрытия", Ложь); ШаблонПоляВводаПроизвольногоПериода.Вставить("КнопкаОчистки", Ложь); ШаблонПоляВводаПроизвольногоПериода.Вставить("КнопкаРегулирования", Ложь); - ШаблонПоляВводаПроизвольногоПериода.Вставить("КнопкаСпискаВыбора", Ложь); + ШаблонПоляВводаПроизвольногоПериода.Вставить(ИмяКнопкиСпискаВыбора, Ложь); ШаблонПоляВводаПроизвольногоПериода.Вставить("РедактированиеТекста", Истина); ЕстьБыстрыеНастройки = Ложь; @@ -1471,6 +1516,20 @@ ЭлементЗаголовок = НСтр("ru = 'Диаграмма'"); ИначеЕсли ТипОбщейНастройки = Тип("ГруппировкаДиаграммыМакетаКомпоновкиДанных") Тогда ЭлементЗаголовок = НСтр("ru = 'Группировка диаграммы макета'"); + ИначеЕсли ТипОбщейНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда + ДоступныйОбъектНастройкиКД = НастройкиКД.ДоступныеОбъекты.Элементы.Найти(ОбщаяНастройка.ИдентификаторОбъекта); + Если ДоступныйОбъектНастройкиКД <> Неопределено Тогда + ЭлементЗаголовок = ДоступныйОбъектНастройкиКД.Заголовок; + КонецЕсли; + Если ПустаяСтрока(ЭлементЗаголовок) Тогда + ВложеннаяСхема = РеквизитФормыВЗначение("Отчет").СхемаКомпоновкиДанных.ВложенныеСхемыКомпоновкиДанных.Найти(ОбщаяНастройка.ИдентификаторОбъекта); + Если ВложеннаяСхема <> Неопределено Тогда + ЭлементЗаголовок = ВложеннаяСхема.Заголовок; + КонецЕсли; + КонецЕсли; + Если ПустаяСтрока(ЭлементЗаголовок) Тогда + ЭлементЗаголовок = Строка(ПользовательскаяНастройка); + КонецЕсли; Иначе ЭлементЗаголовок = Строка(ПользовательскаяНастройка); КонецЕсли; @@ -1481,6 +1540,7 @@ СменитьТипНаГруппуЭлементовОтбора = ЗначениеЗаполнено(СтруктураПредставлений.Представление); Если ТипОбщейНастройки = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") + ИЛИ ТипОбщейНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") ИЛИ СменитьТипНаГруппуЭлементовОтбора Тогда ИспользованиеИмя = "ГруппаОтбора_Использование_" + ЭлементИдентификатор; @@ -1549,8 +1609,7 @@ ВыборИзСписка = ( ТипЗнч(ДоступнаяНастройка) = Тип("ДоступноеПолеОтбораКомпоновкиДанных") И ТипЗнч(ДоступнаяНастройка.ДоступныеЗначения) = Тип("СписокЗначений") - И ДоступнаяНастройка.ДоступныеЗначения.Количество() > 0 - ); + И ДоступнаяНастройка.ДоступныеЗначения.Количество() > 0); ИспользованиеОтбораИмя = "ИспользованиеОтбора_" + ЭлементИдентификатор; ОтборИмя = "Отбор_" + ЭлементИдентификатор; @@ -1635,7 +1694,13 @@ КолонкаЗначение.Вид = ВидПоляФормы.ПолеВвода; ЗаполнитьЗначенияСвойств(КолонкаЗначение, ДоступнаяНастройка, "БыстрыйВыбор, Маска, ФормаВыбора, ФорматРедактирования"); - КолонкаЗначение.ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуГруппыИЭлементы(ДоступнаяНастройка.ВыборГруппИЭлементов); + + Если ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии + Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСпискеПоИерархии Тогда + КолонкаЗначение.ВыборГруппИЭлементов = ГруппыИЭлементы.Группы; + Иначе + КолонкаЗначение.ВыборГруппИЭлементов = ГруппыИЭлементы.ГруппыИЭлементы; + КонецЕсли; Если ВыборИзСписка Тогда КолонкаЗначение.РежимВыбораИзСписка = Истина; @@ -1696,7 +1761,13 @@ ЗначениеОтбора.УстановитьДействие("ПриИзменении", "Подключаемый_ЭлементОтбораКомпоновкиДанных_Значение_ПриИзменении"); ЗаполнитьЗначенияСвойств(ЗначениеОтбора, ДоступнаяНастройка, "БыстрыйВыбор, Маска, ФормаВыбора, ФорматРедактирования"); - ЗначениеОтбора.ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуГруппыИЭлементы(ДоступнаяНастройка.ВыборГруппИЭлементов); + + Если ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии + Или ПользовательскаяНастройка.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии Тогда + ЗначениеОтбора.ВыборГруппИЭлементов = ГруппыИЭлементы.Группы; + Иначе + ЗначениеОтбора.ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуГруппыИЭлементы(ДоступнаяНастройка.ВыборГруппИЭлементов); + КонецЕсли; Если ВыборИзСписка Тогда ЗначениеОтбора.РежимВыбораИзСписка = Истина; @@ -1967,7 +2038,6 @@ ВидПериода.КнопкаОткрытия = Ложь; ВидПериода.КнопкаОчистки = Ложь; ВидПериода.КнопкаРегулирования = Ложь; - ВидПериода.КнопкаСпискаВыбора = Истина; ВидПериода.РастягиватьПоГоризонтали = Ложь; ВидПериода.Ширина = 9; ВидПериода.УстановитьДействие("ПриИзменении", "Подключаемый_СтандартныйПериод_ВидПериода_ПриИзменении"); @@ -2009,11 +2079,18 @@ Период.КнопкаОткрытия = Ложь; Период.КнопкаОчистки = Ложь; Период.КнопкаРегулирования = Ложь; - Период.КнопкаСпискаВыбора = Истина; Период.РедактированиеТекста = Ложь; Период.УстановитьДействие("Очистка", "Подключаемый_СтандартныйПериод_Значение_Очистка"); - Период.УстановитьДействие("НачалоВыбораИзСписка", "Подключаемый_СтандартныйПериод_Значение_НачалоВыбораИзСписка"); - Период.УстановитьДействие("НачалоВыбора", "Подключаемый_СтандартныйПериод_Значение_НачалоВыбора"); + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ВидПериода.РежимВыбораИзСписка = Истина; + Период.КнопкаСпискаВыбора = Ложь; + Период.УстановитьДействие("НачалоВыбора", "Подключаемый_СтандартныйПериод_Значение_НачалоВыбораИзСписка"); + Иначе + ВидПериода[ИмяКнопкиСпискаВыбора] = Истина; + Период[ИмяКнопкиСпискаВыбора] = Истина; + Период.УстановитьДействие("НачалоВыбораИзСписка", "Подключаемый_СтандартныйПериод_Значение_НачалоВыбораИзСписка"); + Период.УстановитьДействие("НачалоВыбора", "Подключаемый_СтандартныйПериод_Значение_НачалоВыбора"); + КонецЕсли; // Начало произвольного периода ПериодНачало = Элементы.Добавить(ПериодНачалоИмя, Тип("ПолеФормы"), СтраницаПроизвольныйПериод); @@ -2120,6 +2197,7 @@ ЗаполнитьЗначенияСвойств(Параметр, ДоступнаяНастройка, "БыстрыйВыбор, Маска, ФормаВыбора, ФорматРедактирования"); Параметр.ВыборГруппИЭлементов = ФункцииОтчетовКлиентСервер.ПривестиЗначениеКТипуГруппыИЭлементы(ДоступнаяНастройка.ВыборГруппИЭлементов); + Параметр.АвтоОтметкаНезаполненного = ДоступнаяНастройка.ЗапрещатьНезаполненныеЗначения; Если ТипЗнч(ДоступнаяНастройка) = Тип("ДоступноеПолеОтбораКомпоновкиДанных") @@ -2189,7 +2267,7 @@ ГруппаГруппировки = Элементы.Добавить(ГруппаИмя, Тип("ГруппаФормы"), Элементы.СтруктурыНастроек); ГруппаГруппировки.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаГруппировки.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; - ГруппаГруппировки.Отображение = ОтображениеОбычнойГруппы.Линия; + ГруппаГруппировки.Отображение = ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыЛиния(); ГруппаГруппировки.Заголовок = ЭлементЗаголовок + ":"; ГруппаГруппировки.ОтображатьЗаголовок = Истина; @@ -2323,7 +2401,7 @@ КонецЦикла; Если Элементы.Периоды.ПодчиненныеЭлементы.Количество() > 0 Тогда - Элементы.ПараметрыИОтборы.Отображение = ОтображениеОбычнойГруппы.Линия; + Элементы.ПараметрыИОтборы.Отображение = ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыЛиния(); Иначе Элементы.ПараметрыИОтборы.Отображение = ОтображениеОбычнойГруппы.Нет; КонецЕсли; @@ -2399,6 +2477,7 @@ СменитьТипНаГруппуЭлементовОтбора = ЗначениеЗаполнено(СтруктураПредставлений.Представление); Если ТипОбщейНастройки = Тип("ГруппаЭлементовОтбораКомпоновкиДанных") + ИЛИ ТипОбщейНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") ИЛИ СменитьТипНаГруппуЭлементовОтбора Тогда ИспользованиеОтбораИмя = "ГруппаОтбора_Использование_" + ЭлементИдентификатор; diff --git a/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl b/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl index 3728ac8fb..43d2467e7 100644 --- a/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl +++ b/SSL/src/CommonModules/АвтономнаяРаботаСлужебный/Module.bsl @@ -45,9 +45,9 @@ ПомощникСозданияАвтономногоРабочегоМеста.СоздатьНачальныйОбразАвтономногоРабочегоМеста( Параметры.НастройкаОтборовНаУзле, + Параметры.ВыбранныеПользователиСинхронизации, АдресВременногоХранилищаНачальногоОбраза, - АдресВременногоХранилищаИнформацииОПакетеУстановки - ); + АдресВременногоХранилищаИнформацииОПакетеУстановки); КонецПроцедуры @@ -62,6 +62,7 @@ НачатьТранзакцию(); Попытка + // ============================ {для совместимости с БСП 2.1.3} Пользователь = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ПользовательДляСинхронизацииДанных(Параметры.АвтономноеРабочееМесто); Если Пользователь <> Неопределено Тогда @@ -75,6 +76,7 @@ КонецЕсли; КонецЕсли; + // ============================ {для совместимости с БСП 2.1.3} АвтономноеРабочееМестоОбъект = Параметры.АвтономноеРабочееМесто.ПолучитьОбъект(); @@ -131,9 +133,9 @@ УстановитьПривилегированныйРежим(Истина); - Если ПланыОбмена.ГлавныйУзел() <> Неопределено Тогда + Если ОбменДаннымиСервер.ГлавныйУзел() <> Неопределено Тогда - Возврат ПланыОбмена.ГлавныйУзел(); + Возврат ОбменДаннымиСервер.ГлавныйУзел(); Иначе @@ -394,8 +396,7 @@ Если ЗначениеЗаполнено(НастройкаСинхронизации.ДатаСинхронизации) Тогда НастройкаСинхронизации.ПредставлениеДатыСинхронизации = - ОбменДаннымиСервер.ОтносительнаяДатаСинхронизации(НастройкаСинхронизации.ДатаСинхронизации - ); + ОбменДаннымиСервер.ОтносительнаяДатаСинхронизации(НастройкаСинхронизации.ДатаСинхронизации); Иначе НастройкаСинхронизации.ПредставлениеДатыСинхронизации = НСтр("ru = 'не выполнялась'"); КонецЕсли; @@ -448,30 +449,6 @@ Возврат Значение; КонецФункции -// Для внутреннего использования -// -Функция ДобавитьКлассОшибки(Знач ПредставлениеОшибки, Знач Класс) Экспорт - - Возврат Класс + ПредставлениеОшибки; - -КонецФункции - -// Для внутреннего использования -// -Функция УдалитьКлассОшибки(Знач ПредставлениеОшибки, Знач Класс) Экспорт - - Возврат СтрЗаменить(ПредставлениеОшибки, Класс, ""); - -КонецФункции - -// Для внутреннего использования -// -Функция КлассОшибкиСозданиеСлужебногоПользователя() Экспорт - - Возврат "#SA_CreateUser#"; - -КонецФункции - // // Для внутреннего использования @@ -513,8 +490,7 @@ ; // Строка записывается в Журнал регистрации ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСинхронизацияДанных(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибкиДляЖурналаРегистрации - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибкиДляЖурналаРегистрации); ВызватьИсключение ПодробноеПредставлениеОшибки; КонецЕсли; @@ -522,8 +498,7 @@ Отказ = Ложь; ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(Отказ, ПриложениеВСервисе(), Истина, Истина, - Перечисления.ВидыТранспортаСообщенийОбмена.WS - ); + Перечисления.ВидыТранспортаСообщенийОбмена.WS); Если Отказ Тогда ВызватьИсключение НСтр("ru = 'В процессе синхронизации данных с приложением в Интернете возникли ошибки (см. журнал регистрации).'"); @@ -537,8 +512,7 @@ Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда ВызватьИсключение НСтр("ru = 'Первый запуск автономного рабочего места должен выполняться - |в файловом режиме работы информационной базы.'" - ); + |в файловом режиме работы информационной базы.'"); КонецЕсли; УстановитьПривилегированныйРежим(Истина); @@ -561,8 +535,7 @@ УстановитьПривилегированныйРежим(Истина); РегламентныеЗаданияСервер.УстановитьИспользованиеРегламентногоЗадания( - Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете, Ложь - ); + Метаданные.РегламентныеЗадания.СинхронизацияДанныхСПриложениемВИнтернете, Ложь); КонецЕсли; @@ -587,6 +560,7 @@ И Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить() И Константы.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы.Получить() И СинхронизацияССервисомДавноНеВыполнялась() + И ОбменДаннымиСервер.СинхронизацияДанныхРазрешена() ; КонецФункции @@ -597,6 +571,7 @@ Возврат ЭтоАвтономноеРабочееМесто() И Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить() И Константы.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы.Получить() + И ОбменДаннымиСервер.СинхронизацияДанныхРазрешена() ; КонецФункции @@ -674,9 +649,8 @@ // Функция ПараметрыФормыВыполненияОбменаДанными() Экспорт - Возврат Новый Структура("УзелИнформационнойБазы, АдресДляВосстановленияПароляУчетнойЗаписи", - ПриложениеВСервисе(), АдресДляВосстановленияПароляУчетнойЗаписи() - ); + Возврат Новый Структура("УзелИнформационнойБазы, АдресДляВосстановленияПароляУчетнойЗаписи, ЗакрытьПриУспешнойСинхронизации", + ПриложениеВСервисе(), АдресДляВосстановленияПароляУчетнойЗаписи(), Истина); КонецФункции // Для внутреннего использования @@ -724,11 +698,9 @@ ПланыОбмена.УстановитьГлавныйУзел(Неопределено); Исключение ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение НСтр("ru = 'Возможно, информационная база открыта в режиме конфигуратора. - |Завершите работу конфигуратора и повторите запуск программы.'" - ); + |Завершите работу конфигуратора и повторите запуск программы.'"); КонецПопытки; // Создаем узлы плана обмена автономной работы в нулевой области данных @@ -773,8 +745,7 @@ СтруктураЗаписи.Вставить("WSИспользоватьПередачуБольшогоОбъемаДанных", Истина); - СтруктураЗаписи.Вставить("WSURLВебСервиса", Параметры.URL); - СтруктураЗаписи.Вставить("WSИмяПользователя", Параметры.ИмяПользователя); + СтруктураЗаписи.Вставить("WSURLВебСервиса", Параметры.URL); // добавляем запись в РС РегистрыСведений.НастройкиТранспортаОбмена.ДобавитьЗапись(СтруктураЗаписи); @@ -815,8 +786,7 @@ Если Пользователь = Неопределено Тогда ВызватьИсключение НСтр("ru = 'Идентификация пользователя не выполнена. - |Возможно, справочник пользователей не включен в состав плана обмена автономной работы.'" - ); + |Возможно, справочник пользователей не включен в состав плана обмена автономной работы.'"); КонецЕсли; УстановитьМинимальнуюДлинуПаролейПользователей(0); @@ -832,8 +802,7 @@ Исключение ОтменитьТранзакцию(); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; КонецПопытки; @@ -847,8 +816,7 @@ ИмяФайлаДанныхНачальногоОбраза = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( КаталогИнформационнойБазы, - "data.xml" - ); + "data.xml"); ФайлДанныхНачальногоОбраза = Новый Файл(ИмяФайлаДанныхНачальногоОбраза); Если Не ФайлДанныхНачальногоОбраза.Существует() Тогда @@ -885,8 +853,7 @@ Исключение ОтменитьТранзакцию(); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ДанныеНачальногоОбраза = Неопределено; ВызватьИсключение; @@ -898,8 +865,7 @@ УдалитьФайлы(ИмяФайлаДанныхНачальногоОбраза); Исключение ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецПроцедуры @@ -912,8 +878,7 @@ Если ПустаяСтрока(СтрокаXML) Тогда ВызватьИсключение НСтр("ru = 'В автономное рабочее место не были переданы настройки. - |Работа с автономным рабочим место невозможна.'" - ); + |Работа с автономным рабочим место невозможна.'"); КонецЕсли; ЧтениеXML = Новый ЧтениеXML; diff --git a/SSL/src/CommonModules/АдресныйКлассификатор/Module.bsl b/SSL/src/CommonModules/АдресныйКлассификатор/Module.bsl index 19abc9689..b62d4cda8 100644 --- a/SSL/src/CommonModules/АдресныйКлассификатор/Module.bsl +++ b/SSL/src/CommonModules/АдресныйКлассификатор/Module.bsl @@ -95,22 +95,18 @@ Постфикс = ? (ЗагрузкаСВеб, КодАдресногоОбъекта, ""); ЗагрузитьАдресныеСведения(КодАдресногоОбъекта, - ПутьКДаннымНаСервере + "KLADR" + Постфикс, АдресныеСведения, АльтернативныеНазвания, ЗагрузкаСВеб - ); + ПутьКДаннымНаСервере + "KLADR" + Постфикс, АдресныеСведения, АльтернативныеНазвания, ЗагрузкаСВеб); ЗагрузитьАдресныеСведения(КодАдресногоОбъекта, ПутьКДаннымНаСервере + "STREET" + Постфикс, АдресныеСведения, АльтернативныеНазвания, ЗагрузкаСВеб, - 5 - ); + 5); ЗагрузитьАдресныеСведения(КодАдресногоОбъекта, ПутьКДаннымНаСервере + "DOMA" + Постфикс, АдресныеСведения, АльтернативныеНазвания, ЗагрузкаСВеб, - 6 - ); + 6); ЗаполнитьАльтернативныеНазвания(ПутьКДаннымНаСервере + ИмяФайлаАльтернативныхНазваний + Постфикс, - АдресныеСведения, АльтернативныеНазвания, ЗагрузкаСВеб - ); + АдресныеСведения, АльтернативныеНазвания, ЗагрузкаСВеб); Если АдресныеСведения.Количество() = 0 Тогда Возврат; @@ -412,8 +408,7 @@ НоваяСтрока.Улица = ?(ВыборкаАдресов.ТипАдресногоЭлемента > 4, ВыборкаАдресов.Улица, НСтр("ru='< Без улицы >'")); НоваяСтрока.Описание = СформироватьОписаниеИзАдресныхЭлементов(ДетализацияДоУровня, - ВыборкаАдресов.Регион, ВыборкаАдресов.Район, ВыборкаАдресов.Город, ВыборкаАдресов.НаселенныйПункт - ); + ВыборкаАдресов.Регион, ВыборкаАдресов.Район, ВыборкаАдресов.Город, ВыборкаАдресов.НаселенныйПункт); КонецЦикла; АдресВХранилище = ПоместитьВоВременноеХранилище(НайденныеЗаписиПоИндексу, Новый УникальныйИдентификатор); @@ -568,8 +563,7 @@ Если РезультатЗапроса.Пустой() Тогда Индекс = ПолучитьИндекс(СтруктураАдреса.Регион, СтруктураАдреса.Район, СтруктураАдреса.Город, СтруктураАдреса.НаселенныйПункт, СтруктураАдреса.Улица, - Дом, Корпус - ); + Дом, Корпус); Иначе Выборка = РезультатЗапроса.Выбрать(); Выборка.Следующий(); @@ -604,8 +598,7 @@ РодительИндекса = АдресныйКлассификаторКлиентСервер.ПустаяСтруктураАдреса(); Индекс = ""; Загружен = СтруктураЗагруженныхЭлементовАдреса( - НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы - ); + НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы); Регион = ПолучитьАдресныйЭлемент(НазваниеРегиона, 1, РодительИндекса); Если Регион.Код > 0 Тогда @@ -705,8 +698,7 @@ Функция АвтоПодборТекстВАдресномЭлементе(Текст, Регион, Район, Город, НаселенныйПункт, УровеньЭлемента, ПризнакАктуальности = 0) Экспорт СтруктураОграничений = ПолучитьСтруктуруОграниченийПоАдресу( - Регион, Район, Город, НаселенныйПункт, "", УровеньЭлемента - ); + Регион, Район, Город, НаселенныйПункт, "", УровеньЭлемента); РезультатЗапроса = ПолучитьРезультатЗапросаАвтоподбораДляРегистра(Текст, СтруктураОграничений, 51); Количество = РезультатЗапроса.Количество(); @@ -785,8 +777,7 @@ Индекс = АдресныйКлассификаторКлиентСервер.ПустаяСтруктураАдреса(); НомерИндекса = ПолучитьИндекс(НазваниеРегиона, - НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы, НомерДома, НомерКорпуса, Индекс - ); + НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы, НомерДома, НомерКорпуса, Индекс); // Восстанавливаем населенный пункт, который мог потеряться Если ПустаяСтрока(НазваниеНаселенногоПункта) И НаселенныйПункт.Код = 0 И Улица.Код <> 0 Тогда @@ -1016,8 +1007,7 @@ Дом = Новый Структура("Код, Наименование, Сокращение, ТипАдресногоЭлемента, Индекс, |КодАдресногоОбъектаВКоде, КодРайонаВКоде, КодГородаВКоде, КодНаселенногоПунктаВКоде, КодУлицыВКоде, |ПризнакАктульности", - 0, "", "", 0, "", 0, 0, 0, 0, 0, 0 - ); + 0, "", "", 0, "", 0, 0, 0, 0, 0, 0); Иначе Запрос.Текст = " @@ -1056,6 +1046,18 @@ КонецЕсли; СтруктураПроверки.Вставить("Дом", Дом); + // Дополнительная проверка на упакованные дома с данными ФИАС + Если КодДома=0 Тогда + ДополнительнаяПроверка = ДанныеЗданияПоДомуИКорпусу(Улица, НомерДома, НомерКорпуса); + Если ДополнительнаяПроверка.ЕстьЗдания Тогда + Если ДополнительнаяПроверка.Код<>Неопределено Тогда // Нашли + КодДома = ДополнительнаяПроверка.Код; + КонецЕсли; + Иначе + ЕстьДома = Ложь; + КонецЕсли; + КонецЕсли; + // Если по улице нет домов в КЛАДР - считаем, что ошибки нет // Если же по улице есть дома, и код дома не найден - то ошибка. Если КодДома = 0 И ЕстьДома Тогда @@ -1093,14 +1095,12 @@ Запрос.УстановитьПараметр("УказанныйИндекс", УказанныйИндекс); Если Запрос.Выполнить().Пустой() Тогда СтруктураОшибок.Вставить("Индекс", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru='Индекс ""%1"" не найден в адресном классификаторе.'"), УказанныйИндекс - )); + НСтр("ru='Индекс ""%1"" не найден в адресном классификаторе.'"), УказанныйИндекс)); ЕстьОшибки = Истина; ИначеЕсли НомерИндекса <> УказанныйИндекс Тогда СтруктураОшибок.Вставить("Индекс", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru='Индекс ""%1"" не соответствует введенному адресу.'"), УказанныйИндекс - )); + НСтр("ru='Индекс ""%1"" не соответствует введенному адресу.'"), УказанныйИндекс)); ЕстьОшибки = Истина; КонецЕсли; @@ -1348,8 +1348,7 @@ АдресныйЭлементЗагружен(НазваниеРегиона, НазваниеРайона, , , , 3), АдресныйЭлементЗагружен(НазваниеРегиона, НазваниеРайона, НазваниеГорода, , , 4), АдресныйЭлементЗагружен(НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, , 5), - АдресныйЭлементЗагружен(НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы, 6) - ); + АдресныйЭлементЗагружен(НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы, 6)); Возврат СтруктураЗагруженных; КонецФункции @@ -1450,8 +1449,7 @@ СтруктураОграничений = Новый Структура(); РодительскийЭлемент = ВернутьСтруктуруАдресногоКлассификатораПоАдреснымЭлементам( - НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы - ); + НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы); УровеньРодителя = РодительскийЭлемент.ТипАдресногоЭлемента; КодРодителя = РодительскийЭлемент.Код; @@ -1459,24 +1457,19 @@ СтруктураОграничений.Вставить("ТипАдресногоЭлемента", Уровень); ДобавитьКодВСтруктуру(Уровень, УровеньРодителя, СтруктураОграничений, - "КодАдресногоОбъектаВКоде", 1, РодительскийЭлемент.КодАдресногоОбъектаВКоде - ); + "КодАдресногоОбъектаВКоде", 1, РодительскийЭлемент.КодАдресногоОбъектаВКоде); ДобавитьКодВСтруктуру(Уровень, УровеньРодителя, СтруктураОграничений, - "КодРайонаВКоде", 2, РодительскийЭлемент.КодРайонаВКоде - ); + "КодРайонаВКоде", 2, РодительскийЭлемент.КодРайонаВКоде); ДобавитьКодВСтруктуру(Уровень, УровеньРодителя, СтруктураОграничений, - "КодГородаВКоде", 3, РодительскийЭлемент.КодГородаВКоде - ); + "КодГородаВКоде", 3, РодительскийЭлемент.КодГородаВКоде); ДобавитьКодВСтруктуру(Уровень, УровеньРодителя, СтруктураОграничений, - "КодНаселенногоПунктаВКоде", 4, РодительскийЭлемент.КодНаселенногоПунктаВКоде - ); + "КодНаселенногоПунктаВКоде", 4, РодительскийЭлемент.КодНаселенногоПунктаВКоде); ДобавитьКодВСтруктуру(Уровень, УровеньРодителя, СтруктураОграничений, - "КодУлицыВКоде", 5, ?(Уровень<5, 0, РодительскийЭлемент.КодУлицыВКоде) - ); + "КодУлицыВКоде", 5, ?(Уровень<5, 0, РодительскийЭлемент.КодУлицыВКоде)); Возврат СтруктураОграничений; КонецФункции @@ -1588,11 +1581,17 @@ // СЕРВЕРНЫЕ ОБРАБОТЧИКИ. СерверныеОбработчики["СтандартныеПодсистемы.ОбновлениеВерсииИБ\ПриДобавленииОбработчиковОбновления"].Добавить( - "АдресныйКлассификатор" - ); + "АдресныйКлассификатор"); КонецПроцедуры +// Возвращает базовое имя события для регистрации в журнале событий +// +Функция СобытиеЖурналаРегистрации() Экспорт + Возврат НСтр("ru='Адресный классификатор'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка() ); +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -1645,6 +1644,7 @@ КонецЦикла; НаборЗаписей.Записать(); + КонецПроцедуры // Раскладывает коды адресных объектов на регион, район, город, населенный пункт, город, улицу и признак актуальности @@ -1740,10 +1740,7 @@ Если ЕстьОшибки Тогда СтрокаОшибки = НСтр("ru = 'В файле адресного классификатора %1 есть ошибки уникальности кодов'"); ПараметрыВСтроке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаОшибки, "socrbase.dbf"); - - ЗаписьЖурналаРегистрации(НСтр("ru = 'Адресный классификатор.Загрузка'"), - УровеньЖурналаРегистрации.Ошибка, , , ПараметрыВСтроке - ); + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , ПараметрыВСтроке); КонецЕсли; НаборЗаписей.Записать(); @@ -1807,8 +1804,7 @@ НовыеВерсииАдресныхОбъектов.Вставить(АдресныйОбъект, ДоступнаяВерсия); ЗагрузитьКлассификаторПоАдресномуОбъекту(АдресныйОбъект, - ПараметрыЗагрузки.ПутьКДаннымНаСервере, ПараметрыЗагрузки.ИсточникДанныхДляЗагрузки = 1 - ); + ПараметрыЗагрузки.ПутьКДаннымНаСервере, ПараметрыЗагрузки.ИсточникДанныхДляЗагрузки = 1); КонецЦикла; @@ -1929,12 +1925,10 @@ Функция ПолучитьПараметрыАутентификации(КодПользователя, Пароль) Экспорт КодПользователя = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( - "АутентификацияНаПользовательскомСайте", "КодПользователя", "" - ); + "АутентификацияНаПользовательскомСайте", "КодПользователя", ""); Пароль = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( - "АутентификацияНаПользовательскомСайте", "Пароль", "" - ); + "АутентификацияНаПользовательскомСайте", "Пароль", ""); Возврат Не ПустаяСтрока(КодПользователя) И Не ПустаяСтрока(Пароль); КонецФункции @@ -1948,12 +1942,10 @@ Процедура СохранитьПараметрыАутентификации(КодПользователя, Пароль) Экспорт ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( - "АутентификацияНаПользовательскомСайте", "КодПользователя", КодПользователя - ); + "АутентификацияНаПользовательскомСайте", "КодПользователя", КодПользователя); ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( - "АутентификацияНаПользовательскомСайте", "Пароль", Пароль - ); + "АутентификацияНаПользовательскомСайте", "Пароль", Пароль); КонецПроцедуры @@ -1968,8 +1960,7 @@ АдресныеСведения = ИнформацияПоАдресномуОбъекту(ОписаниеВерсии.Ключ); УстановитьВерсиюКлассификатора(ОписаниеВерсии.Ключ, АдресныеСведения.Наименование + " " + АдресныеСведения.Сокращение, - ОписаниеВерсии.Значение - ); + ОписаниеВерсии.Значение); КонецЦикла; КонецПроцедуры @@ -2117,9 +2108,7 @@ Если ЕстьОшибки Тогда СтрокаОшибки = НСтр("ru = 'В файле адресного классификатора %1 есть ошибки уникальности кодов'"); ПараметрыВСтроке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаОшибки, ПутьКДаннымНаСервере); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Адресный классификатор.Загрузка'"), - УровеньЖурналаРегистрации.Ошибка, , , ПараметрыВСтроке - ); + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , ПараметрыВСтроке); КонецЕсли; Возврат Истина; @@ -3134,8 +3123,7 @@ КодРодителя = Неопределено; СтруктураОграничений = ВернутьСтруктуруОграниченийПоРодителю( ПолеРегиона, ПолеРайона, ПолеГорода, ПолеНаселенногоПункта, ИмяУлицы, - КодРодителя, УровеньЭлемента - ); + КодРодителя, УровеньЭлемента); Иначе СтруктураОграничений = Новый Структура(); @@ -3205,3 +3193,468 @@ Возврат ЦифроваяЧасть; КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Учет изменений КЛАДР в упаковке домов по данным ФИАС +// + +// Поиск данных по номеру дома и корпуса. Предназначено для совместимости старых проверок. +// +// Параметры: +// Улица - Структура с описанием улицы (коды частей адреса) +// НомерДома - Строка или число с номером дома (владения, домовладения) +// НомерКорпуса - Строка или число с номером корпуса (строения, литеры, сооружения, участка) +// +// Возвращаемое значение - структура с полями: +// ЕстьЗдания - Булево - признак того, что на улице есть дома +// Индекс - Строка - почтовый индекс дома. Неопределено, если дом не найден +// Код - Строка - код адресного классификатора дома. Неопределено, если дом не найден +// +Функция ДанныеЗданияПоДомуИКорпусу(Знач Улица, Знач НомерДома, Знач НомерКорпуса) + + ВсеВарианты = ВариантыНомеровЗданийУлицы(Улица); + Результат = Новый Структура("ЕстьЗдания, Код, Индекс", ВсеВарианты.Количество()>0); + Если Не Результат.ЕстьЗдания Тогда + Возврат Результат; + КонецЕсли; + + ВсеВарианты.Сортировать("ЭтоДиапазон, Описание"); + + // Перебираем все варианты совместимости: + // номер дома может означать Дом, Владение, Домовладение + // номер корпуса - Корпус, Строение, Литер, Сооружение, Участок + + ВариантыДома = Новый Структура("Дом, Владение, Домовладение"); + ВариантыКорпуса = Новый Структура("Корпус, Строение, Литер, Сооружение, Участок"); + + Если ТипЗнч(НомерДома)=Тип("Число") Тогда + НомерДомаСтрокой = Формат(НомерДома, "ЧГ="); + Иначе + НомерДомаСтрокой = ВРег(СокрЛП(СтрЗаменить(НомерДома, " ", ""))); + КонецЕсли; + + Если ТипЗнч(НомерДома)=Тип("Число") Тогда + НомерКорпусаСтрокой = Формат(НомерКорпуса, "ЧГ="); + Иначе + НомерКорпусаСтрокой = ВРег(СокрЛП(СтрЗаменить(НомерКорпуса, " ", ""))); + КонецЕсли; + + Для Каждого Вариант Из ВсеВарианты Цикл + + Для Каждого КлючЗначениеДом Из ВариантыДома Цикл + Для Каждого КлючЗначениеКорпус Из ВариантыКорпуса Цикл + Здание = Новый Структура; + Здание.Вставить(КлючЗначениеДом.Ключ, НомерДомаСтрокой); + Здание.Вставить(КлючЗначениеКорпус.Ключ, НомерКорпусаСтрокой); + + Если Вариант.ЭтоДиапазон Тогда + Если ЗданиеВходитВДиапазон(Здание, Вариант.Описание) Тогда + Результат.Индекс = Вариант.Индекс; + Результат.Код = Вариант.Код; + Возврат Результат; + КонецЕсли; + Иначе + Если ЗданиеВходитВОписание(Здание, Вариант.Описание, Ложь) Тогда + Результат.Индекс = Вариант.Индекс; + Результат.Код = Вариант.Код; + Возврат Результат; + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЦикла; + + КонецЦикла; + + Возврат Результат; +КонецФункции + +// Определяет все описания домов на улице, разбитых до конечного определения или диапазона +// +// Параметры: +// Улица - Структура - поля адресного объекта-улицы, для которой запрашиваются все дома +// +// Возвращаемое значение - ТаблицаЗначений с колонками +// Описание - Строка - описание дома или диапазона +// ЭтоДиапазон - Булево - признак того, что описание содержит диапазон +// Индекс - Строка - почтовый индекс +// Код - Строка - код адресного классификатора, соответствующий описанию +// +Функция ВариантыНомеровЗданийУлицы(Знач Улица) + + Запрос = Новый Запрос(" + |ВЫБРАТЬ + | АдресныйКлассификатор.Наименование КАК Описание, + | АдресныйКлассификатор.Код КАК Код, + | АдресныйКлассификатор.Индекс КАК Индекс, + | ЛОЖЬ КАК ЭтоДиапазон + |ИЗ + | РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор + |ГДЕ + | АдресныйКлассификатор.ТипАдресногоЭлемента = 6 + | И АдресныйКлассификатор.ПризнакАктуальности = 0 + | + | И АдресныйКлассификатор.КодАдресногоОбъектаВКоде = &КодАдресногоОбъектаВКоде + | И АдресныйКлассификатор.КодРайонаВКоде = &КодРайонаВКоде + | И АдресныйКлассификатор.КодГородаВКоде = &КодГородаВКоде + | И АдресныйКлассификатор.КодНаселенногоПунктаВКоде = &КодНаселенногоПунктаВКоде + | И АдресныйКлассификатор.КодУлицыВКоде = &КодУлицыВКоде + |"); + Запрос.УстановитьПараметр("КодАдресногоОбъектаВКоде", Улица.КодАдресногоОбъектаВКоде); + Запрос.УстановитьПараметр("КодРайонаВКоде", Улица.КодРайонаВКоде); + Запрос.УстановитьПараметр("КодГородаВКоде", Улица.КодГородаВКоде); + Запрос.УстановитьПараметр("КодНаселенногоПунктаВКоде", Улица.КодНаселенногоПунктаВКоде); + Запрос.УстановитьПараметр("КодУлицыВКоде", Улица.КодУлицыВКоде); + + Результат = Запрос.Выполнить().Выгрузить(); + + Позиция = Результат.Количество() - 1; + Пока Позиция>=0 Цикл + Строка = Результат[Позиция]; + Позиция = Позиция - 1; + + // Разбиваем на детальные описания + ВариантыОписаний = ВРег(СтрЗаменить( СокрЛП(СтрЗаменить(Строка.Описание, ",", Символы.ПС)), " ", "")); + + Для НомерСтроки=1 По СтрЧислоСтрок(ВариантыОписаний) Цикл + Описание = СтрПолучитьСтроку(ВариантыОписаний, НомерСтроки); + + НоваяСтрока = Результат.Добавить(); + НоваяСтрока.Описание = Описание; + НоваяСтрока.Код = Строка.Код; + НоваяСтрока.Индекс = Строка.Индекс; + НоваяСтрока.ЭтоДиапазон = ЭтоДиапазон(Описание); + КонецЦикла; + + Результат.Удалить(Строка); + КонецЦикла; + + Возврат Результат; +КонецФункции + +// Проверяет на вхождение дом в диапазон +// +// Параметры: +// Дом - Структура - описание дома, содержит реквизиты Дом, Корпус +// Описание - Строка - одиночное описание диапазон +// +// Возвращаемые значение - Булево - признак вхождения +// +Функция ЗданиеВходитВДиапазон(Знач Здание, Знач Описание) + + ПозицияДефиса = Найти(Описание, "-"); + Если ПозицияДефиса=0 И Описание<>"Н" И Описание<>"Ч" Тогда + // Это не диапазон + Возврат Ложь; + КонецЕсли; + + ТипЧисло = Новый ОписаниеТипов("Число"); + + // Выделяем числовую часть номера + НомерДома = ЧисловаяЧастьНомера( ОсновнойНомерЗдания(Здание) ); + Если НомерДома=0 Тогда + // Нет основного номера дома + Возврат Ложь; + КонецЕсли; + + ДлинаОписания = СтрДлина(Описание); + ТекСимвол = Лев(Описание, 1); + Если ТекСимвол="Н" Тогда + // Нечетный + Если НомерДома%2=0 Тогда + // Четный номер не может входить в нечетный диапазон + Возврат Ложь; + ИначеЕсли ДлинаОписания=1 Тогда + // Все нечетные + Возврат Истина; + КонецЕсли; + Позиция = 2; + + ИначеЕсли ТекСимвол="Ч" Тогда + // Четный + Если НомерДома%2=1 Тогда + // Нечетный номер не может входить в четный диапазон + Возврат Ложь; + ИначеЕсли ДлинаОписания=1 Тогда + // Все четные + Возврат Истина; + КонецЕсли; + Позиция = 2; + + ИначеЕсли ЭтоЦифра(ТекСимвол) Тогда + // Обычный + Позиция = 1; + + Иначе + // Это не диапазон + Возврат Ложь; + КонецЕсли; + + // Ищем начало + НачДиапазона = 0; + Пока Позиция<ПозицияДефиса Цикл + ТекСимвол = Сред(Описание, Позиция, 1); + Позиция = Позиция + 1; + Если ТекСимвол="(" Тогда + // Возможное начало диапазона + Продолжить; + ИначеЕсли Не ЭтоЦифра(ТекСимвол) Тогда + // Это неправильный диапазон + Возврат Ложь; + КонецЕсли; + НачДиапазона = НачДиапазона * 10 + ТипЧисло.ПривестиЗначение(ТекСимвол); + КонецЦикла; + + Позиция = Позиция + 1; + // Ищем конец + КонДиапазона = 0; + Пока Позиция<=ДлинаОписания Цикл + ТекСимвол = Сред(Описание, Позиция, 1); + Позиция = Позиция + 1; + Если ТекСимвол=")" Тогда + // Возможный конец диапазона + Прервать; + ИначеЕсли Не ЭтоЦифра(ТекСимвол) Тогда + // Это неправильный диапазон + Возврат Ложь; + КонецЕсли; + КонДиапазона = КонДиапазона * 10 + ТипЧисло.ПривестиЗначение(ТекСимвол); + КонецЦикла; + + Если НачДиапазона>КонДиапазона Тогда + // Это неправильный диапазон + Возврат Ложь; + КонецЕсли; + + Возврат НомерДома>=НачДиапазона И НомерДома<=КонДиапазона; +КонецФункции + +// Проверяет на соответствие дома описанию +// +// Параметры: +// Здание - Структура - описание дома, содержит реквизиты Дом, Корпус и т.п. +// Описание - Строка - одиночное описание здания +// ПолноеСоответствие - Булево - флаг точного поиска. Если указано Ложь, то поиск происходит только по +// заполненным полям параметра Здание, например под описание +// "Дом 2 корпус 1 строение 6" подойдут "Дом 2 корпус 1" и "Дом 2" +// +// Возвращаемые значение - Булево - признак вхождения +// +Функция ЗданиеВходитВОписание(Знач Здание, Знач Описание, Знач ПолноеСоответствие=Истина) + + // Разбираем в структуру + ЧастиОписания = СтруктураОписанияЗдания(Описание); + Если ЧастиОписания=Неопределено Тогда + // Ошибка разбора строки + Возврат Ложь; + КонецЕсли; + + // Сравниваем по частям + Результат = Истина; + + // То, что передали, необходимо искать всегда + Для Каждого КлючЗначение Из Здание Цикл + Значение = КлючЗначение.Значение; + Ключ = КлючЗначение.Ключ; + Если Не ПустаяСтрока(Значение) И ЧастиОписания[Ключ]<>Значение Тогда + Результат = Ложь; + Прервать; + КонецЕсли; + КонецЦикла; + + Если ПолноеСоответствие Тогда + // Все, что нашли, должно полностью совпадать с переданным + Для Каждого КлючЗначение Из ЧастиОписания Цикл + Значение = КлючЗначение.Значение; + Ключ = КлючЗначение.Ключ; + Если Не ПустаяСтрока(Значение) Тогда + Если Не Здание.Свойство(Ключ) Или Здание[Ключ]<>Значение Тогда + Результат = Ложь; + Прервать; + КонецЕсли; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Разбирает строковое описание отдельного здания КЛАДР +// +// Параметры: +// Описание - Строка - описание одиночного здания КЛАДР +// +// Возвращаемое значение: +// Структура - Ключ - идентификатор, значение - номер здания. +// Набор идентификаторов определяется по данным таблицы-результата ТипыЧастейЗдания +// +// Неопределено - если описание не удалось распознать. +// +Функция СтруктураОписанияЗдания(Знач Описание) + Текст = Описание; + Результат = Новый Структура; + + // Все дополнительны части здания + ТипыЧастейЗдания = ТипыЧастейЗдания(); + Для Каждого ТипЧасти Из ТипыЧастейЗдания Цикл + Результат.Вставить(ТипЧасти.Идентификатор); + КонецЦикла; + + Идентификатор = "Дом"; // по умолчанию для возможно пустого первого + Результат.Вставить(Идентификатор); + + ЕстьЕщеЧасти = Истина; + + Пока ЕстьЕщеЧасти Цикл + // Тип текущей части + Позиция = 1; + Для Каждого ТипЧасти Из ТипыЧастейЗдания Цикл + Если Лев(Текст, ТипЧасти.Длина)=ТипЧасти.Префикс Тогда + Идентификатор = ТипЧасти.Идентификатор; + Позиция = 1 + ТипЧасти.Длина; + Прервать; + КонецЕсли; + КонецЦикла; + Текст = Сред(Текст, Позиция); + + // Значение части + Позиция = 0; + Для Каждого ТипЧасти Из ТипыЧастейЗдания Цикл + // Ищем ближайший следующий тип, после которого должно быть значение + ТестПозиции = Найти(Текст, ТипЧасти.Префикс); + Если ТестПозиции>0 // Нашли + И (Позиция=0 Или ТестПозиции<Позиция) // Ближайший + И Не ПустаяСтрока(Сред(Текст, ТестПозиции + ТипЧасти.Длина, 1)) // Со значением + Тогда + Позиция = ТестПозиции; + КонецЕсли; + КонецЦикла; + + ЕстьЕщеЧасти = Позиция>0; + Если ЕстьЕщеЧасти Тогда + Значение = Лев(Текст, Позиция-1); + Текст = Сред(Текст, Позиция); + Иначе + Значение = Текст; + КонецЕсли; + + Результат[Идентификатор] = СтрЗаменить(Значение, "_", "-"); + КонецЦикла; + + Возврат Результат; +КонецФункции + +// Выделяем числовую часть номера дома +// +// Параметры: +// Номер - Строка, Число - полный номер дома +// +// Возвращаемое значение -число с числовой частью номера. Если числовой части нет, то возвращается ноль +// +Функция ЧисловаяЧастьНомера(Знач Номер) + ТипЧисло = Новый ОписаниеТипов("Число"); + + Если ТипЧисло.СодержитТип(ТипЗнч(Номер)) Тогда + Возврат Номер; + КонецЕсли; + + НомерДома = 0; + Для Позиция=1 По СтрДлина(Номер) Цикл + ТекСимвол = Сред(Номер, Позиция, 1); + Если Не ЭтоЦифра(ТекСимвол) Тогда + Прервать; + КонецЕсли; + НомерДома = НомерДома * 10 + ТипЧисло.ПривестиЗначение(ТекСимвол); + КонецЦикла; + + Возврат НомерДома; +КонецФункции + +// Определяет тип символа +// +// Параметры: +// Символ- Строка - анализируемый символ +// +// Возвращаемое значение: +// Булево - Истина, если переданный символ является цифрой +// +Функция ЭтоЦифра(Знач Символ) + Возврат Найти("0123456789", Символ)>0; +КонецФункции + +// Вычисляет основной номер здания выбором из заполненного дом, владение, домовладение +// +// Параметры: +// Здание - структура - анализируемое здание с полями Дом, Домовладение, Владение +// +// Возвращаемое значение - строка с основным номером здания +// +Функция ОсновнойНомерЗдания(Знач Здание) + Результат = Здание.Дом; + + Если ПустаяСтрока(Результат) И Здание.Свойство("Владение") Тогда + Результат = Здание.Владение; + КонецЕсли; + + Если ПустаяСтрока(Результат) И Здание.Свойство("Домовладение") Тогда + Результат = Здание.Домовладение; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Возвращает флаг того, что переданное описание - диапазон домов +// +// Параметры: +// Описание - Строка - рассматриваемое описание диапазона +// Диапазоном упрощенно считаем или буквы "Н" и "Ч" - все нечетные и четные соответственно +// или строку с дефисом +// +// Возвращаемое значение - Булево - Истина, если переданная строка может быть рассмотрена как диапазон домов +/// +Функция ЭтоДиапазон(Знач Описание) + Возврат Описание="Н" + Или Описание="Ч" + Или Найти(Описание, "-")>0 +КонецФункции + +// Формирует таблицу префиксов-разделителей данных КЛАДР, типов зданий +// Имеет неявную связь с КонтактнаяИнформацияКлиентСерверПовтИсп.ТипыОбъектовАдресацииАдресаРФ() +// +// Возвращаемое значение - ТаблицаЗначений с колонками: +// Префикс - Строка - префикс-разделитель +// Идентификатор - Строка - идентификатор для структуры +// Длина - Число - длина префикса +// +Функция ТипыЧастейЗдания() + Результат = + НоваяСтрокаТаблицы("ВЛД", "Владение", + НоваяСтрокаТаблицы("ДВЛД", "Домовладение", + НоваяСтрокаТаблицы("КОРПУС", "Корпус", + НоваяСтрокаТаблицы("К", "Корпус", + НоваяСтрокаТаблицы("СТР", "Строение", + НоваяСтрокаТаблицы("СТРОЕНИЕ", "Строение", + НоваяСтрокаТаблицы("ЛИТЕР", "Литер", + НоваяСтрокаТаблицы("СООРУЖЕНИЕ", "Сооружение", + НоваяСтрокаТаблицы("УЧАСТОК", "Участок", + "Префикс, Идентификатор, Длина"))))))))); + + Результат.Индексы.Добавить("Идентификатор"); + Результат.Сортировать("Длина УБЫВ, Префикс"); + Возврат Результат; +КонецФункции +Функция НоваяСтрокаТаблицы(Знач Префикс, Знач Идентификатор, Знач Таблица) + Если ТипЗнч(Таблица)=Тип("Строка") Тогда + Результат = Новый ТаблицаЗначений; + Для Каждого КлючЗначение Из Новый Структура(Таблица) Цикл + Результат.Колонки.Добавить(КлючЗначение.Ключ); + КонецЦикла; + Иначе + Результат = Таблица; + КонецЕсли; + + Строка = Результат.Добавить(); + Строка.Префикс = Префикс; + Строка.Идентификатор = Идентификатор; + Строка.Длина = СтрДлина(Префикс); + + Возврат Результат; +КонецФункции diff --git a/SSL/src/CommonModules/АдресныйКлассификаторКлиент/Module.bsl b/SSL/src/CommonModules/АдресныйКлассификаторКлиент/Module.bsl index 604f5598f..7fbf4e4f6 100644 --- a/SSL/src/CommonModules/АдресныйКлассификаторКлиент/Module.bsl +++ b/SSL/src/CommonModules/АдресныйКлассификаторКлиент/Module.bsl @@ -55,8 +55,7 @@ #Если ВебКлиент Тогда СтандартныеПодсистемыКлиент.ВопросПользователю( Текст, РежимДиалогаВопрос.ОК, 0, КодВозвратаДиалога.ОК, Заголовок, - Неопределено, Ложь, Ложь - ); + Неопределено, Ложь, Ложь); #Иначе Кнопки = Новый СписокЗначений; Кнопки.Добавить("Да", НСтр("ru='Обновить'")); @@ -67,8 +66,7 @@ НСтр("ru = 'Приступить к обновлению адресного классификатора на версию от %1?'"), Формат(Результат.ВерсияПоследнегоОбновленияКЛАДР, "ДЛФ=D") ) + Символы.ПС + Символы.ПС + Текст, - Кнопки, 0, "Да", Заголовок, Неопределено, Ложь, Ложь - ); + Кнопки, 0, "Да", Заголовок, Неопределено, Ложь, Ложь); Если Результат="Да" Тогда ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.ЗагрузкаАдресногоКлассификатора", @@ -79,8 +77,7 @@ Предупреждение(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Обновление адресного классификатора не требуется. |В программу уже загружены актуальные адресные сведения от %1.'"), - Формат(Результат.ВерсияПоследнегоОбновленияКЛАДР, "ДЛФ=D") - )); + Формат(Результат.ВерсияПоследнегоОбновленияКЛАДР, "ДЛФ=D"))); КонецЕсли; Иначе Предупреждение(НСтр("ru = 'Адресный классификатор не заполнен.'")); @@ -90,27 +87,12 @@ // Вызывает форму очистки сведений адресного классификатора по адресным объектам // -Процедура ОчиститьКлассификатор() Экспорт - - ОткрытьФормуМодально("РегистрСведений.АдресныйКлассификатор.Форма.ОчисткаАдресногоКлассификатора"); - -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////// -// ПРОГРАММНЫЙ ИНТЕРФЕЙС - -//////////////////////////////////////////////////////////////////////////////// -// Обработчики условных вызовов в эту подсистему - -// Подбирает адресный объект через форму. -// // Параметры: -// СтруктураАдреса - Структура - структура адреса. -// СтруктураРезультата - Неопределено или Структура - структура возврат выбранного адресного объекта. +// Владелец (УправляемаяФорма) Необязательный. Форма, из которой осуществляется очистка адресного классификатора. // -Процедура ПриПодбореАдресногоОбъекта(Знач СтруктураАдреса, СтруктураРезультата) Экспорт +Процедура ОчиститьКлассификатор(Владелец = Неопределено) Экспорт - СтруктураРезультата = ОткрытьФормуМодально("РегистрСведений.АдресныйКлассификатор.Форма.ФормаВыбора", СтруктураАдреса); + ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.ОчисткаАдресногоКлассификатора", , Владелец); КонецПроцедуры diff --git a/SSL/src/CommonModules/Анкетирование/Module.bsl b/SSL/src/CommonModules/Анкетирование/Module.bsl index e2836c2c3..40a5167d7 100644 --- a/SSL/src/CommonModules/Анкетирование/Module.bsl +++ b/SSL/src/CommonModules/Анкетирование/Module.bsl @@ -58,7 +58,7 @@ ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект(); ДокументОбъект.ПоказыватьВАрхивеАнкет = НЕ Выборка.ПоказыватьВАрхивеАнкет; - ДокументОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ДокументОбъект); КонецЦикла; @@ -952,7 +952,7 @@ ЭлементГруппаВопроса = Форма.Элементы.Добавить(ИмяВопроса + "_Группа" ,Тип("ГруппаФормы"),ЭлементГруппа); ЭлементГруппаВопроса.Вид = ВидГруппыФормы.ОбычнаяГруппа ; ЭлементГруппаВопроса.ОтображатьЗаголовок = Ложь; - ЭлементГруппаВопроса.Отображение = ОтображениеОбычнойГруппы.Отступ; + ЭлементГруппаВопроса.Отображение = ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыОтступ(); ЭлементГруппаВопроса.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; ЭлементГруппаВопроса.ШиринаПодчиненныхЭлементов = ШиринаПодчиненныхЭлементовФормы.ЛевыйОченьУзкий; ЭлементГруппаВопроса.РастягиватьПоГоризонтали = Истина; @@ -1797,30 +1797,6 @@ //////////////////////////////////////////////////////////////////////////////// // Прочее -// Устанавливает параметры отбора в отбор динамического списка -// -// Параметры -// Параметры - Структура - параметры, переданные форме -// ОтборДинамическогоСписка - Отбор - Отбор динамического списка, -// в который устанавливаются параметры отбора. -Процедура УстановитьПараметрыОтбораФормуВыбора(Параметры,ОтборДинамическогоСписка) Экспорт - - Если Параметры.Свойство("МассивОтбора") = Истина Тогда - - Для каждого ЭлементМассиваОтбора Из Параметры.МассивОтбора Цикл - - ЭлементОтбораДанных = ОтборДинамическогоСписка.Элементы.Добавить(ЭлементМассиваОтбора.ТипОтбора); - ЭлементОтбораДанных.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ЭлементМассиваОтбора.ЛевоеЗначение); - ЭлементОтбораДанных.Использование = Истина; - ЭлементОтбораДанных.ВидСравнения = ЭлементМассиваОтбора.ВидСравнения; - ЭлементОтбораДанных.ПравоеЗначение = ЭлементМассиваОтбора.ПравоеЗначение; - - КонецЦикла; - - КонецЕсли; - -КонецПроцедуры - // Функция заполняет структуру значениями перечисления // // Параметры diff --git a/SSL/src/CommonModules/БизнесПроцессыИЗадачиСервер/Module.bsl b/SSL/src/CommonModules/БизнесПроцессыИЗадачиСервер/Module.bsl index eb9d51899..d4a902555 100644 --- a/SSL/src/CommonModules/БизнесПроцессыИЗадачиСервер/Module.bsl +++ b/SSL/src/CommonModules/БизнесПроцессыИЗадачиСервер/Module.bsl @@ -78,8 +78,19 @@ // Параметры // УсловноеОформлениеСпискаЗадач - УсловноеОформление - условное оформление списка задач // -Процедура УстановитьОформлениеЗадач(Знач УсловноеОформлениеСпискаЗадач) Экспорт - +Процедура УстановитьОформлениеЗадач(Знач СписокЗадачИлиЕгоУсловноеОформление) Экспорт + + Если ТипЗнч(СписокЗадачИлиЕгоУсловноеОформление) = Тип("ДинамическийСписок") Тогда + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + УсловноеОформлениеСпискаЗадач = СписокЗадачИлиЕгоУсловноеОформление.КомпоновщикНастроек.Настройки.УсловноеОформление; + УсловноеОформлениеСпискаЗадач.ИдентификаторПользовательскойНастройки = "ОсновноеОформление"; + Иначе + УсловноеОформлениеСпискаЗадач = СписокЗадачИлиЕгоУсловноеОформление.УсловноеОформление; + КонецЕсли; + Иначе + УсловноеОформлениеСпискаЗадач = СписокЗадачИлиЕгоУсловноеОформление; + КонецЕсли; + // удаление предустановленных элементов оформления Предустановленные = Новый Массив; Элементы = УсловноеОформлениеСпискаЗадач.Элементы; @@ -893,8 +904,7 @@ | РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадач |ГДЕ | ИсполнителиЗадач.РольИсполнителя = &РольИсполнителя - | И ИсполнителиЗадач.ОсновнойОбъектАдресации = &ОсновнойОбъектАдресации" - ); + | И ИсполнителиЗадач.ОсновнойОбъектАдресации = &ОсновнойОбъектАдресации"); Запрос.Параметры.Вставить("ОсновнойОбъектАдресации", ОсновнойОбъектАдресации); Запрос.Параметры.Вставить("РольИсполнителя", РольИсполнителя); ВыборкаЗапроса = Запрос.Выполнить().Выгрузить(); @@ -980,36 +990,36 @@ // Меняем состояние вложенных бизнес-процессов Для каждого МетаданныеБизнесПроцесса Из Метаданные.БизнесПроцессы Цикл - Если ПравоДоступа("Изменение", МетаданныеБизнесПроцесса) Тогда - - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ - | БизнесПроцессы.Ссылка КАК Ссылка - |ИЗ - | %БизнесПроцесс% КАК БизнесПроцессы - |ГДЕ - | БизнесПроцессы.ВедущаяЗадача = &ВедущаяЗадача - | И БизнесПроцессы.ПометкаУдаления = Ложь - | И БизнесПроцессы.Завершен = Ложь"; - - Запрос.Текст = СтрЗаменить(Запрос.Текст, "%БизнесПроцесс%", МетаданныеБизнесПроцесса.ПолноеИмя()); - Запрос.УстановитьПараметр("ВедущаяЗадача", ЗадачаСсылка); - - Результат = Запрос.Выполнить(); - - ВыборкаДетальныеЗаписи = Результат.Выбрать(); - - Пока ВыборкаДетальныеЗаписи.Следующий() Цикл - - БизнесПроцесс = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); - БизнесПроцесс.Состояние = НовоеСостояние; - БизнесПроцесс.Записать(); - - КонецЦикла; - + Если НЕ ПравоДоступа("Изменение", МетаданныеБизнесПроцесса) Тогда + Продолжить; КонецЕсли; + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ РАЗРЕШЕННЫЕ + | БизнесПроцессы.Ссылка КАК Ссылка + |ИЗ + | %БизнесПроцесс% КАК БизнесПроцессы + |ГДЕ + | БизнесПроцессы.ВедущаяЗадача = &ВедущаяЗадача + | И БизнесПроцессы.ПометкаУдаления = Ложь + | И БизнесПроцессы.Завершен = Ложь"; + + Запрос.Текст = СтрЗаменить(Запрос.Текст, "%БизнесПроцесс%", МетаданныеБизнесПроцесса.ПолноеИмя()); + Запрос.УстановитьПараметр("ВедущаяЗадача", ЗадачаСсылка); + + Результат = Запрос.Выполнить(); + + ВыборкаДетальныеЗаписи = Результат.Выбрать(); + + Пока ВыборкаДетальныеЗаписи.Следующий() Цикл + + БизнесПроцесс = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); + БизнесПроцесс.Состояние = НовоеСостояние; + БизнесПроцесс.Записать(); + + КонецЦикла; + КонецЦикла; // Меняем состояние подчиненных бизнес-процессов @@ -1320,11 +1330,11 @@ БизнесПроцесс = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); БизнесПроцесс.Заблокировать(); БизнесПроцесс.Состояние = Перечисления.СостоянияБизнесПроцессов.Активен; - БизнесПроцесс.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(БизнесПроцесс); КонецЦикла; - КонецЦикла; + КонецЦикла; // Обновления принятия к исполнению задач Запрос = Новый Запрос; @@ -1345,11 +1355,11 @@ Если ЗадачаОбъект.Выполнена = Истина Тогда ЗадачаОбъект.ПринятаКИсполнению = Истина; ЗадачаОбъект.ДатаПринятияКИсполнению = ЗадачаОбъект.ДатаИсполнения; - КонецЕсли; + КонецЕсли; ЗадачаОбъект.СостояниеБизнесПроцесса = Перечисления.СостоянияБизнесПроцессов.Активен; - ЗадачаОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ЗадачаОбъект); КонецЦикла; @@ -1378,7 +1388,7 @@ ЗадачаОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); ЗадачаОбъект.ПредметСтрокой = ОбщегоНазначения.ПредметСтрокой(ПредметСсылка); - ЗадачаОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ЗадачаОбъект); КонецЦикла; @@ -1402,12 +1412,12 @@ ЗначениеКода = ВыборкаДетальныеЗаписи.Код; Если ПустаяСтрока(ЗначениеКода) Тогда - Продолжить; - КонецЕсли; + Продолжить; + КонецЕсли; РольИсполнителейОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект(); РольИсполнителейОбъект.КраткоеПредставление = ЗначениеКода; - РольИсполнителейОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(РольИсполнителейОбъект); КонецЦикла; @@ -1426,8 +1436,8 @@ Процедура ПриПолученииАдресаЭлектроннойПочты(Знач Получатель, Адрес) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеКонтактнойИнформацией"); - Адрес = Модуль.ПолучитьКонтактнуюИнформацияОбъекта( + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + Адрес = МодульУправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта( Получатель, Справочники.ВидыКонтактнойИнформации.EmailПользователя); КонецЕсли; @@ -1457,4 +1467,4 @@ ЗадачаВнешняя = Ложь; КонецЕсли; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git a/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl index 82c15c325..07c1d0f11 100644 --- a/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl +++ b/SSL/src/CommonModules/ВариантыОтчетов/Module.bsl @@ -90,8 +90,8 @@ // Дополнить массив ссылкам дополнительных отчетов, доступных текущему пользователю. Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - Модуль.ПриДобавленииДополнительныхОтчетовДоступныхТекущемуПользователю(ДоступныеОтчеты); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПриДобавленииДополнительныхОтчетовДоступныхТекущемуПользователю(ДоступныеОтчеты); КонецЕсли; Возврат ДоступныеОтчеты; @@ -128,8 +128,7 @@ НСтр("ru = 'Ошибка получения описания отчета ""%1"", |он не подключен к подсистеме ""%2""'"), СтрокаОтчет.Метаданные.Имя, - ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы() - ); + ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы("")); КонецЕсли; Возврат СтрокаОтчет; @@ -166,8 +165,7 @@ |он не подключен к подсистеме ""%3""'"), КлючВарианта, СтрокаОтчет.Метаданные.Имя, - ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы() - ); + ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы("")); КонецЕсли; ЗаполнитьОписаниеСтрокиВарианта(СтрокаВариант, СтрокаОтчет); @@ -225,8 +223,7 @@ Неопределено, НСтр("ru = 'В процессе выборки вариантов отчетов из стандартного хранилища возникла ошибка:'") + Символы.ПС - + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; Если ЭлементВыборкиПолучен = Ложь Тогда @@ -450,8 +447,7 @@ НСтр("ru = 'Вариант ""%1"" отчета ""%2"": не найден автор ""%3""'"), ВариантОбъект.Наименование, СтрокаТаблицы.ПредставлениеОтчета, - СтрокаТаблицы.Автор - ); + СтрокаТаблицы.Автор); КонецЕсли; // Поскольку переносятся пользовательские варианты отчетов, @@ -492,6 +488,9 @@ СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииПереименованийОбъектовМетаданных"].Добавить( "ВариантыОтчетов"); + СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбязательныхОбъектовПланаОбмена"].Добавить( + "ВариантыОтчетов"); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВыгрузкаЗагрузкаДанных") Тогда СерверныеОбработчики["СтандартныеПодсистемы.РаботаВМоделиСервиса.ВыгрузкаЗагрузкаДанных\ПослеВыгрузкиОбласти"].Добавить( @@ -527,7 +526,7 @@ Обработчик.ВыполнятьВГруппеОбязательных = Ложь; Обработчик.ОбщиеДанные = Истина; Обработчик.УправлениеОбработчиками = Истина; - Обработчик.МонопольныйРежим = Истина; + Обработчик.МонопольныйРежим = Ложь; Обработчик.Версия = "*"; Обработчик.Процедура = "ВариантыОтчетов.ОбновитьОбщиеДанные"; Обработчик.Приоритет = 90; @@ -556,7 +555,7 @@ // 2.3. Обновить разделенные данные в локальном режиме. Обработчик = Обработчики.Добавить(); - Обработчик.МонопольныйРежим = Истина; + Обработчик.МонопольныйРежим = Ложь; Обработчик.Версия = "*"; Обработчик.Процедура = "ВариантыОтчетов.ОбновитьРазделенныеДанные"; Обработчик.Приоритет = 70; @@ -586,6 +585,126 @@ КонецПроцедуры +// Используется для получения объектов метаданных обязательных для плана обмена. +// Если подсистема имеет объекты метаданных обязательные для включения в состав плана обмена, +// то в параметр <Объект> необходимо добавить эти объекты метаданных. +// +// Параметры: +// Объекты – Массив. Массив объектов метаданных конфигурации, которые необходимо включить в состав плана обмена. +// РаспределеннаяИнформационнаяБаза (только чтение) – Булево. Признак получения объектов для плана обмена РИБ. +// Истина – требуется получить список объектов плана обмена РИБ; +// Ложь – требуется получить список для плана обмена НЕ РИБ. +// +Процедура ПриПолученииОбязательныхОбъектовПланаОбмена(Объекты, Знач РаспределеннаяИнформационнаяБаза) Экспорт + + Если РаспределеннаяИнформационнаяБаза Тогда + + Объекты.Добавить(Метаданные.Константы.ПараметрыВариантовОтчетов); + Объекты.Добавить(Метаданные.Справочники.ВариантыОтчетов); + Объекты.Добавить(Метаданные.Справочники.ПредопределенныеВариантыОтчетов); + Объекты.Добавить(Метаданные.РегистрыСведений.НастройкиВариантовОтчетов); + + КонецЕсли; + +КонецПроцедуры + +// Выгружает данные для идентификации предопределенных вариантов отчетов в XML файл. +Процедура ПослеВыгрузкиОбласти(Знач КаталогВыгрузки) Экспорт + + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.ОткрытьФайл(КаталогВыгрузки + "PredefinedReportVariants.xml"); + ЗаписьXML.ЗаписатьОбъявлениеXML(); + + ЗаписьXML.ЗаписатьНачалоЭлемента("Data"); + ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema"); + ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); + ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("ns1", "http://v8.1c.ru/8.1/data/core"); + ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("ns2", "http://v8.1c.ru/8.1/data/enterprise"); + ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/8.1/data/enterprise/current-config"); + + Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, КлючВарианта, Отчет ИЗ Справочник.ПредопределенныеВариантыОтчетов"); + ТаблицаПредопределенных = Запрос.Выполнить().Выгрузить(); + СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ТаблицаПредопределенных, НазначениеТипаXML.Явное); + + ЗаписьXML.ЗаписатьКонецЭлемента(); + + ЗаписьXML.Закрыть(); + +КонецПроцедуры + +// Добавляет в таблицу замен записи по предопределенным вариантам отчетов. +Процедура ПриФормированииСловаряЗаменПоКаталогуВыгрузки(Знач СловарьЗамен, Знач КаталогВыгрузки) Экспорт + + Чтение = Новый ЧтениеXML; + Чтение.ОткрытьФайл(КаталогВыгрузки + "PredefinedReportVariants.xml"); + Чтение.ПерейтиКСодержимому(); + Если Чтение.ТипУзла <> ТипУзлаXML.НачалоЭлемента ИЛИ Чтение.Имя <> "Data" ИЛИ НЕ Чтение.Прочитать() Тогда + ВызватьИсключение(НСтр("ru = 'Неверный формат файла PredefinedReportVariants.xml или этот файл не содержит записей.'")); + КонецЕсли; + + Идентификаторы = СловарьЗамен.Найти(Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных"), "Тип").СоответствиеСсылок; + СоответствиеСтарыхИАктуальныхИОМ = Новый Соответствие; + Для Каждого КлючИЗначение Из Идентификаторы Цикл + СтараяСсылка = Справочники.ИдентификаторыОбъектовМетаданных.ПолучитьСсылку(КлючИЗначение.Значение); + АктуальнаяСсылка = Справочники.ИдентификаторыОбъектовМетаданных.ПолучитьСсылку(КлючИЗначение.Ключ); + СоответствиеСтарыхИАктуальныхИОМ.Вставить(СтараяСсылка, АктуальнаяСсылка); + КонецЦикла; + + ТаблицаПредопределенных = СериализаторXDTO.ПрочитатьXML(Чтение); // Ссылка, КлючВарианта, Отчет + Для Каждого СтрокаТаблицы Из ТаблицаПредопределенных Цикл + СтрокаТаблицы.Отчет = СоответствиеСтарыхИАктуальныхИОМ.Получить(СтрокаТаблицы.Отчет); + КонецЦикла; + + ТекстЗапроса = + "ВЫБРАТЬ + | ТаблицаПредопределенных.Ссылка, + | ТаблицаПредопределенных.КлючВарианта, + | ТаблицаПредопределенных.Отчет + |ПОМЕСТИТЬ втТаблицаПредопределенных + |ИЗ + | &ТаблицаПредопределенных КАК ТаблицаПредопределенных + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | втТаблицаПредопределенных.Ссылка КАК СтараяСсылка, + | ПредопределенныеВариантыОтчетов.Ссылка КАК АктуальнаяСсылка + |ИЗ + | Справочник.ПредопределенныеВариантыОтчетов КАК ПредопределенныеВариантыОтчетов + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ втТаблицаПредопределенных КАК втТаблицаПредопределенных + | ПО ПредопределенныеВариантыОтчетов.Отчет = втТаблицаПредопределенных.Отчет + | И ПредопределенныеВариантыОтчетов.КлючВарианта = втТаблицаПредопределенных.КлючВарианта"; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ТаблицаПредопределенных", ТаблицаПредопределенных); + Запрос.Текст = ТекстЗапроса; + + СоответствиеСсылок = Новый Соответствие; + + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + СоответствиеСсылок.Вставить(Выборка.АктуальнаяСсылка.УникальныйИдентификатор(), Выборка.СтараяСсылка.УникальныйИдентификатор()); + КонецЦикла; + + СтрокаФрагмента = СловарьЗамен.Добавить(); + СтрокаФрагмента.Тип = Тип("СправочникСсылка.ПредопределенныеВариантыОтчетов"); + СтрокаФрагмента.СтандартнаяОбработка = Ложь; + СтрокаФрагмента.СоответствиеСсылок = СоответствиеСсылок; + +КонецПроцедуры + +// Заполняет массив типов неразделенных данных. Он используется при обновлении ссылок +// при загрузке-выгрузке конфигурации +// +// Параметры: +// МассивТипов - массив +// +Процедура ПриОпределенииСтандартныхТиповОбщихДанных(Знач МассивТипов) Экспорт + + МассивТипов.Добавить(Тип("СправочникСсылка.ПредопределенныеВариантыОтчетов")); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов @@ -600,8 +719,7 @@ Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.ВариантыОтчетов) Тогда ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недостаточно прав доступа для записи вариантов дополнительного отчета ""%1"".'"), - ТекущийОбъект.Наименование - ); + ТекущийОбъект.Наименование); ОшибкаПоВарианту(ТекущийОбъект.Ссылка, ТекстОшибки); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки); Возврат; @@ -750,100 +868,45 @@ КонецПроцедуры -// Выгружает данные для идентификации предопределенных вариантов отчетов в XML файл. -Процедура ПослеВыгрузкиОбласти(Знач КаталогВыгрузки) Экспорт - - ЗаписьXML = Новый ЗаписьXML; - ЗаписьXML.ОткрытьФайл(КаталогВыгрузки + "PredefinedReportVariants.xml"); - ЗаписьXML.ЗаписатьОбъявлениеXML(); - - ЗаписьXML.ЗаписатьНачалоЭлемента("Data"); - ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema"); - ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); - ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("ns1", "http://v8.1c.ru/8.1/data/core"); - ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("ns2", "http://v8.1c.ru/8.1/data/enterprise"); - ЗаписьXML.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/8.1/data/enterprise/current-config"); - - Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, КлючВарианта, Отчет ИЗ Справочник.ПредопределенныеВариантыОтчетов"); - ТаблицаПредопределенных = Запрос.Выполнить().Выгрузить(); - СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ТаблицаПредопределенных, НазначениеТипаXML.Явное); - - ЗаписьXML.ЗаписатьКонецЭлемента(); - - ЗаписьXML.Закрыть(); - -КонецПроцедуры - -// Добавляет в таблицу замен записи по предопределенным вариантам отчетов. -Процедура ПриФормированииСловаряЗаменПоКаталогуВыгрузки(Знач СловарьЗамен, Знач КаталогВыгрузки) Экспорт - - Чтение = Новый ЧтениеXML; - Чтение.ОткрытьФайл(КаталогВыгрузки + "PredefinedReportVariants.xml"); - Чтение.ПерейтиКСодержимому(); - Если Чтение.ТипУзла <> ТипУзлаXML.НачалоЭлемента ИЛИ Чтение.Имя <> "Data" ИЛИ НЕ Чтение.Прочитать() Тогда - ВызватьИсключение(НСтр("ru = 'Неверный формат файла PredefinedReportVariants.xml или этот файл не содержит записей.'")); - КонецЕсли; - - Идентификаторы = СловарьЗамен.Найти(Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных"), "Тип").СоответствиеСсылок; - СоответствиеСтарыхИАктуальныхИОМ = Новый Соответствие; - Для Каждого КлючИЗначение Из Идентификаторы Цикл - СтараяСсылка = Справочники.ИдентификаторыОбъектовМетаданных.ПолучитьСсылку(КлючИЗначение.Значение); - АктуальнаяСсылка = Справочники.ИдентификаторыОбъектовМетаданных.ПолучитьСсылку(КлючИЗначение.Ключ); - СоответствиеСтарыхИАктуальныхИОМ.Вставить(СтараяСсылка, АктуальнаяСсылка); - КонецЦикла; - - ТаблицаПредопределенных = СериализаторXDTO.ПрочитатьXML(Чтение); // Ссылка, КлючВарианта, Отчет - Для Каждого СтрокаТаблицы Из ТаблицаПредопределенных Цикл - СтрокаТаблицы.Отчет = СоответствиеСтарыхИАктуальныхИОМ.Получить(СтрокаТаблицы.Отчет); - КонецЦикла; - - ТекстЗапроса = - "ВЫБРАТЬ - | ТаблицаПредопределенных.Ссылка, - | ТаблицаПредопределенных.КлючВарианта, - | ТаблицаПредопределенных.Отчет - |ПОМЕСТИТЬ втТаблицаПредопределенных - |ИЗ - | &ТаблицаПредопределенных КАК ТаблицаПредопределенных - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ - | втТаблицаПредопределенных.Ссылка КАК СтараяСсылка, - | ПредопределенныеВариантыОтчетов.Ссылка КАК АктуальнаяСсылка - |ИЗ - | Справочник.ПредопределенныеВариантыОтчетов КАК ПредопределенныеВариантыОтчетов - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ втТаблицаПредопределенных КАК втТаблицаПредопределенных - | ПО ПредопределенныеВариантыОтчетов.Отчет = втТаблицаПредопределенных.Отчет - | И ПредопределенныеВариантыОтчетов.КлючВарианта = втТаблицаПредопределенных.КлючВарианта"; - - Запрос = Новый Запрос; - Запрос.УстановитьПараметр("ТаблицаПредопределенных", ТаблицаПредопределенных); - Запрос.Текст = ТекстЗапроса; - - СоответствиеСсылок = Новый Соответствие; - - Выборка = Запрос.Выполнить().Выбрать(); - Пока Выборка.Следующий() Цикл - СоответствиеСсылок.Вставить(Выборка.АктуальнаяСсылка.УникальныйИдентификатор(), Выборка.СтараяСсылка.УникальныйИдентификатор()); - КонецЦикла; - - СтрокаФрагмента = СловарьЗамен.Добавить(); - СтрокаФрагмента.Тип = Тип("СправочникСсылка.ПредопределенныеВариантыОтчетов"); - СтрокаФрагмента.СтандартнаяОбработка = Ложь; - СтрокаФрагмента.СоответствиеСсылок = СоответствиеСсылок; - -КонецПроцедуры - -// Заполняет массив типов неразделенных данных. Он используется при обновлении ссылок -// при загрузке-выгрузке конфигурации -// -// Параметры: -// МассивТипов - массив +// Добавляет оповещение для открытых форм подсистемы если изменилось значение функциональной опции. // -Процедура ПриОпределенииСтандартныхТиповОбщихДанных(Знач МассивТипов) Экспорт +// Параметры: +// Результат (Структура) Подробнее см. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(). +// КонстантаИмя (Строка) Имя константы, значение которой изменилось. +// +Процедура ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер) Экспорт + // Варианты отчетов связаны с константами через функциональные опции. + // ПовтИсп не используется поскольку при изменении значения функциональной опции их значения как правило сбрасываются. + ПеременныеИнициализированы = Ложь; + КонстантаМетаданные = КонстантаМенеджер.СоздатьМенеджерЗначения().Метаданные(); - МассивТипов.Добавить(Тип("СправочникСсылка.ПредопределенныеВариантыОтчетов")); + // Поиск функциональных опций, связанных с этой константой + Для Каждого ФункциональнаяОпцияМетаданные Из Метаданные.ФункциональныеОпции Цикл + Если ФункциональнаяОпцияМетаданные.Хранение = КонстантаМетаданные Тогда + + // Поиск связи вариантов отчетов с этой функциональной опцией. + Если Не ПеременныеИнициализированы Тогда + ПеременныеИнициализированы = Истина; + ТаблицаОпций = Константы.ПараметрыВариантовОтчетов.Получить().Получить(); + ИмяСобытия = ВариантыОтчетовКлиентСервер.ИмяСобытияИзменениеВарианта(); + КонецЕсли; + + Если ТаблицаОпций.Найти(ФункциональнаяОпцияМетаданные.Имя, "ИмяФункциональнойОпции") <> Неопределено Тогда + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, ИмяСобытия); + Возврат; + КонецЕсли; + + // Поиск связи отчетов с этой функциональной опцией. + Для Каждого ЭлементСоставаФункциональнойОпции Из ФункциональнаяОпцияМетаданные.Состав Цикл + Если ТипЗнч(ЭлементСоставаФункциональнойОпции.Объект) = Тип("ОбъектМетаданных") + И Метаданные.Отчеты.Содержит(ЭлементСоставаФункциональнойОпции.Объект) Тогда + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, ИмяСобытия); + Возврат; + КонецЕсли; + КонецЦикла; + + КонецЕсли; + КонецЦикла; КонецПроцедуры @@ -1006,8 +1069,13 @@ // Условные вызовы подсистем БСП. Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный"); - Модуль.ПриНастройкеВариантовОтчетов(ДеревоВариантов); + МодульДатыЗапретаИзмененияСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный"); + МодульДатыЗапретаИзмененияСлужебный.ПриНастройкеВариантовОтчетов(ДеревоВариантов); + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПриНастройкеВариантовОтчетов(ДеревоВариантов); КонецЕсли; // Переопределяемая часть. @@ -1052,21 +1120,18 @@ ПредупреждениеПоВарианту( Неопределено, НСтр("ru = 'Отчет ""%1"" не найден в программе, он будет значиться как внешний.'"), - ОтчетПолноеИмя - ); + ОтчетПолноеИмя); ИначеЕсли НЕ ПравоДоступа("Просмотр", Результат.ОтчетМетаданные) Тогда Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недостаточно прав доступа к отчету ""%1"".'"), - ОтчетПолноеИмя - ); + ОтчетПолноеИмя); КонецЕсли; ИначеЕсли ВРег(Префикс) = "ВНЕШНИЙОТЧЕТ" Тогда // Получение метаданных и проверок не требуется. Иначе Результат.ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Для отчета ""%1"" невозможно определить тип (не установлен префикс).'"), - ОтчетПолноеИмя - ); + ОтчетПолноеИмя); Возврат Результат; КонецЕсли; @@ -1080,8 +1145,8 @@ Результат.Вставить("ПодключеныВсеОтчеты", ПодключеныВсеОтчеты()); - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - Модуль.ПриОпределенииТипаИСсылкиЕслиОтчетДополнительный(Результат); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПриОпределенииТипаИСсылкиЕслиОтчетДополнительный(Результат); Если Результат.Свойство("ОтчетДополнительный") Тогда Результат.ТипОтчета = Перечисления.ТипыОтчетов.Дополнительный; @@ -1353,8 +1418,7 @@ Для Каждого КлючИЗначение Из Оформление Цикл ЭлементУсловногоОформленияКД.Оформление.УстановитьЗначениеПараметра( Новый ПараметрКомпоновкиДанных(КлючИЗначение.Ключ), - КлючИЗначение.Значение - ); + КлючИЗначение.Значение); КонецЦикла; Если ТипЗнч(Поля) = Тип("Строка") Тогда @@ -1488,7 +1552,7 @@ // Процедура ОшибкаПоВарианту(Вариант, Сообщение, Реквизит1 = Неопределено, Реквизит2 = Неопределено, Реквизит3 = Неопределено) Экспорт ЗаписьЖурналаРегистрации( - ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы(), + ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы(Неопределено), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.ВариантыОтчетов, Вариант, @@ -1496,16 +1560,14 @@ Сообщение, Строка(Реквизит1), Строка(Реквизит2), - Строка(Реквизит3) - ) - ); + Строка(Реквизит3))); КонецПроцедуры // Запись информации в журнале регистрации по варианту отчета. // Процедура ИнформацияПоВарианту(Вариант, Сообщение, Реквизит1 = Неопределено, Реквизит2 = Неопределено, Реквизит3 = Неопределено) Экспорт ЗаписьЖурналаРегистрации( - ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы(), + ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы(Неопределено), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.ВариантыОтчетов, Вариант, @@ -1513,16 +1575,14 @@ Сообщение, Строка(Реквизит1), Строка(Реквизит2), - Строка(Реквизит3) - ) - ); + Строка(Реквизит3))); КонецПроцедуры // Запись предупреждения в журнале регистрации по варианту отчета. // Процедура ПредупреждениеПоВарианту(Вариант, Сообщение, Реквизит1 = Неопределено, Реквизит2 = Неопределено, Реквизит3 = Неопределено) Экспорт ЗаписьЖурналаРегистрации( - ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы(), + ВариантыОтчетовКлиентСервер.НаименованиеПодсистемы(Неопределено), УровеньЖурналаРегистрации.Предупреждение, Метаданные.Справочники.ВариантыОтчетов, Вариант, @@ -1530,9 +1590,7 @@ Сообщение, Строка(Реквизит1), Строка(Реквизит2), - Строка(Реквизит3) - ) - ); + Строка(Реквизит3))); КонецПроцедуры // Записывает в журнал регистрации событие запуска процедуры и открывает транзакцию. @@ -1549,13 +1607,6 @@ ИнформацияПоВарианту(Неопределено, НСтр("ru = 'Завершение процедуры ""%1"".'"), ПредставлениеПроцедуры); КонецПроцедуры -// Записывает в журнал регистрации событие отмены процедуры и фиксирует транзакцию. -// -Процедура ОтменаПроцедуры(ПредставлениеПроцедуры, Причина) - ОтменитьТранзакцию(); - ИнформацияПоВарианту(Неопределено, НСтр("ru = 'Отмена процедуры ""%1"":%2'"), ПредставлениеПроцедуры, Символы.ПС + " - " + Причина); -КонецПроцедуры - // Создает фильтр по реквизиту КлючОбъекта для СтандартноеХранилищеНастроекМенеджер.Выбрать(). // Функция НовыйФильтрПоКлючуОбъекта(ИменаОтчетов) Экспорт @@ -1651,22 +1702,6 @@ //////////////////////////////////////////////////////////////////////////////// // Условные вызовы в друге подсистемы -// Вызывается в одноименном обработчике формы отчета после выполнения кода формы. -// -// Параметры: -// ЭтаФорма (УправляемаяФорма) -// Остальные параметры передаются из параметров обработчика "как есть", -// см. события для "УправляемаяФорма" в справке. -// -Процедура ФормаОтчетаПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка) Экспорт - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РассылкаОтчетов"); - Модуль.ФормаОтчетаДобавитьКоманды(ЭтаФорма, Отказ, СтандартнаяОбработка); - КонецЕсли; - -КонецПроцедуры - // Создает экземпляр объекта отчета. // // Параметры: @@ -1679,8 +1714,8 @@ ОтчетОбъект = Неопределено; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - ОтчетОбъект = Модуль.ПолучитьОбъектВнешнейОбработки(ОтчетСсылка); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + ОтчетОбъект = МодульДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки(ОтчетСсылка); КонецЕсли; Возврат ОтчетОбъект; @@ -1694,8 +1729,6 @@ // Процедура ОбновитьОбщиеДанные(ПараметрыОбновления) Экспорт - Обработчики = ПараметрыОбновления.РазделенныеОбработчики; - //////////////////////////////////////////////////////////////////////////////// // Выполняется только для предопределенных вариантов отчетов. // План обновления: @@ -1705,42 +1738,25 @@ Кэш.Вставить("ПодключеныВсеОтчеты", ПодключеныВсеОтчеты()); Кэш.Вставить("ДеревоВариантов", ДеревоНастроекВариантовОтчетовКонфигурации()); Кэш.Вставить("ОбновитьОбласти", Ложь); - Кэш.Вставить("ПараметрыОбновления", ПараметрыОбновления); - Кэш.Вставить("ТребуетсяУстановитьМонопольныйРежим", Ложь); //////////////////////////////////////////////////////////////////////////////// // 1. Заменить устаревшие ключи вариантов отчетов на актуальные. АктуализироватьКлючиПредопределенных(Кэш); - Если Кэш.ТребуетсяУстановитьМонопольныйРежим Тогда - ПараметрыОбновления.МонопольныйРежим = Истина; - Возврат; - КонецЕсли; - //////////////////////////////////////////////////////////////////////////////// // 2. Актуализировать предопределенные варианты отчетов и перезаписать // константу, в которой хранятся привязки к функциональным опциям. ОбновитьНастройкиПредопределенных(Кэш); - Если Кэш.ТребуетсяУстановитьМонопольныйРежим Тогда - ПараметрыОбновления.МонопольныйРежим = Истина; - Возврат; - КонецЕсли; - //////////////////////////////////////////////////////////////////////////////// // 3. Установить пометку удаления вариантов удаленных отчетов. ПометитьНаУдалениеВариантыУдаленныхОтчетов(Кэш, Истина); - Если Кэш.ТребуетсяУстановитьМонопольныйРежим Тогда - ПараметрыОбновления.МонопольныйРежим = Истина; - Возврат; - КонецЕсли; - //////////////////////////////////////////////////////////////////////////////// // 4. Обновить разделенные данные в модели сервиса. Если Кэш.ОбновитьОбласти И ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда - Обработчик = Обработчики.Добавить(); - Обработчик.МонопольныйРежим = Истина; + Обработчик = ПараметрыОбновления.РазделенныеОбработчики.Добавить(); + Обработчик.МонопольныйРежим = Ложь; Обработчик.Версия = "*"; Обработчик.Процедура = "ВариантыОтчетов.ОбновитьРазделенныеДанные"; Обработчик.Приоритет = 70; @@ -1750,31 +1766,18 @@ // [*] Актуализирует данные справочника "Варианты отчетов". // -Процедура ОбновитьРазделенныеДанные(ПараметрыОбновления) Экспорт - - Кэш = Новый Структура; - Кэш.Вставить("ПараметрыОбновления", ПараметрыОбновления); - Кэш.Вставить("ТребуетсяУстановитьМонопольныйРежим", Ложь); +Процедура ОбновитьРазделенныеДанные() Экспорт //////////////////////////////////////////////////////////////////////////////// // План обновления: //////////////////////////////////////////////////////////////////////////////// // 1. Актуализировать разделенные варианты отчетов. - АктуализироватьСоставОбласти(Кэш); - - Если Кэш.ТребуетсяУстановитьМонопольныйРежим Тогда - ПараметрыОбновления.МонопольныйРежим = Истина; - Возврат; - КонецЕсли; + АктуализироватьСоставОбласти(); //////////////////////////////////////////////////////////////////////////////// // 2. Установить пометку удаления вариантов удаленных отчетов. - ПометитьНаУдалениеВариантыУдаленныхОтчетов(Кэш, Ложь); - - Если Кэш.ТребуетсяУстановитьМонопольныйРежим Тогда - ПараметрыОбновления.МонопольныйРежим = Истина; - КонецЕсли; + ПометитьНаУдалениеВариантыУдаленныхОтчетов(Неопределено, Ложь); КонецПроцедуры @@ -1848,7 +1851,7 @@ ВариантОбъект.УдалитьКлючОбъекта = ""; ВариантОбъект.УдалитьПредставлениеОбъекта = ""; ВариантОбъект.УдалитьИсключенияБыстрогоДоступа.Очистить(); - ВариантОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВариантОбъект); КонецЦикла; ЗавершениеПроцедуры(ПредставлениеПроцедуры); @@ -1948,7 +1951,7 @@ ВариантОбъект.Размещение.Удалить(СтрокаТаблицы); КонецЦикла; ВариантОбъект.Описание = ""; - ВариантОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВариантОбъект); Иначе ВариантОбъект.УстановитьПометкуУдаления(Истина); КонецЕсли; @@ -1994,8 +1997,7 @@ Изменение.АктуальноеИмяВарианта, Изменение.СтароеИмяВарианта, Конфликт.СтароеИмяВарианта, - Конфликт.АктуальноеИмяВарианта - ); + Конфликт.АктуальноеИмяВарианта); КонецЕсли; Найденные = Изменения.НайтиСтроки(Новый Структура("ОтчетМетаданные, СтароеИмяВарианта", Изменение.ОтчетМетаданные, Изменение.СтароеИмяВарианта)); Если Найденные.Количество() > 2 Тогда @@ -2009,8 +2011,7 @@ Изменение.СтароеИмяВарианта, Изменение.АктуальноеИмяВарианта, Строка(Конфликт.ОтчетМетаданные.Представление()), - Конфликт.АктуальноеИмяВарианта - ); + Конфликт.АктуальноеИмяВарианта); КонецЕсли; КонецЦикла; @@ -2051,19 +2052,11 @@ // Заменить старые имена вариантов на актуальные. Выборка = Запрос.Выполнить().Выбрать(); - - Если Выборка.Количество() > 0 И НЕ Кэш.ПараметрыОбновления.МонопольныйРежим Тогда - Кэш.ТребуетсяУстановитьМонопольныйРежим = Истина; - ОтменаПроцедуры(ПредставлениеПроцедуры, НСтр("ru = 'Требуется установка монопольного режима.'")); - Возврат; - КонецЕсли; - Пока Выборка.Следующий() Цикл Кэш.ОбновитьОбласти = Истина; ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект(); ВариантОбъект.КлючВарианта = Выборка.АктуальноеИмяВарианта; ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина); - ВариантОбъект.ОбменДанными.Загрузка = Истина; ВариантОбъект.Записать(); КонецЦикла; @@ -2091,14 +2084,8 @@ Найденные = Кэш.ДеревоВариантов.Строки.НайтиСтроки(ПоискВарианта, Истина); ВариантПометкаУдаления = (Найденные.Количество() = 0); Если ВариантПометкаУдаления <> ВариантВыборка.ПометкаУдаления Тогда - Если НЕ Кэш.ПараметрыОбновления.МонопольныйРежим Тогда - Кэш.ТребуетсяУстановитьМонопольныйРежим = Истина; - ОтменаПроцедуры(ПредставлениеПроцедуры, НСтр("ru = 'Требуется установка монопольного режима.'")); - Возврат; - КонецЕсли; ВариантОбъект = ВариантВыборка.Ссылка.ПолучитьОбъект(); ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина); - ВариантОбъект.ОбменДанными.Загрузка = Истина; ВариантОбъект.УстановитьПометкуУдаления(ВариантПометкаУдаления); Кэш.ОбновитьОбласти = Истина; КонецЕсли; @@ -2121,12 +2108,6 @@ Продолжить; КонецЕсли; - Если НЕ Кэш.ПараметрыОбновления.МонопольныйРежим Тогда - Кэш.ТребуетсяУстановитьМонопольныйРежим = Истина; - ОтменаПроцедуры(ПредставлениеПроцедуры, НСтр("ru = 'Требуется установка монопольного режима.'")); - Возврат; - КонецЕсли; - Если ВариантВыборка.Наименование <> ОписаниеВарианта.Наименование ИЛИ ВариантВыборка.ВидимостьПоУмолчанию <> ОписаниеВарианта.ВидимостьПоУмолчанию Тогда Кэш.ОбновитьОбласти = Истина; @@ -2138,11 +2119,6 @@ // Добавить варианты, которых нет в базы данных. Найденные = Кэш.ДеревоВариантов.Строки.НайтиСтроки(Новый Структура("НайденВБазеДанных, ЭтоВариант", Ложь, Истина), Истина); Для Каждого ОписаниеВарианта Из Найденные Цикл - Если НЕ Кэш.ПараметрыОбновления.МонопольныйРежим Тогда - Кэш.ТребуетсяУстановитьМонопольныйРежим = Истина; - ОтменаПроцедуры(ПредставлениеПроцедуры, НСтр("ru = 'Требуется установка монопольного режима.'")); - Возврат; - КонецЕсли; Кэш.ОбновитьОбласти = Истина; ЗаполнитьОписаниеСтрокиВарианта(ОписаниеВарианта); @@ -2157,12 +2133,10 @@ КонецЦикла; // Перезапись константы только в случае если обработчик обновления был запущен "для записи" (в монопольном режиме). - Если Кэш.ПараметрыОбновления.МонопольныйРежим Тогда - МенеджерКонстанты = Константы.ПараметрыВариантовОтчетов.СоздатьМенеджерЗначения(); - МенеджерКонстанты.Значение = Новый ХранилищеЗначения(ТаблицаФункциональныхОпций, Новый СжатиеДанных(9)); - МенеджерКонстанты.ОбменДанными.Загрузка = Истина; - МенеджерКонстанты.Записать(); - КонецЕсли; + МенеджерКонстанты = Константы.ПараметрыВариантовОтчетов.СоздатьМенеджерЗначения(); + МенеджерКонстанты.Значение = Новый ХранилищеЗначения(ТаблицаФункциональныхОпций, Новый СжатиеДанных(9)); + МенеджерКонстанты.ОбменДанными.Загрузка = Истина; + МенеджерКонстанты.Записать(); ЗавершениеПроцедуры(ПредставлениеПроцедуры); КонецПроцедуры @@ -2226,7 +2200,7 @@ // Приводит в соответствие данные разделенного и неразделенного справочников. // Для разделенного справочника (ВариантыОтчетов). // -Процедура АктуализироватьСоставОбласти(Кэш) +Процедура АктуализироватьСоставОбласти() ПредставлениеПроцедуры = НСтр("ru = 'Обновить разделенные вариантов отчетов'"); ЗапускПроцедуры(ПредставлениеПроцедуры); @@ -2289,12 +2263,6 @@ Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл - Если НЕ Кэш.ПараметрыОбновления.МонопольныйРежим Тогда - Кэш.ТребуетсяУстановитьМонопольныйРежим = Истина; - ОтменаПроцедуры(ПредставлениеПроцедуры, НСтр("ru = 'Требуется установка монопольного режима.'")); - Возврат; - КонецЕсли; - Если Выборка.ПредопределенныйВариант = Неопределено Тогда // Удалить (нет в общих, но есть в разделенных). ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект(); @@ -2304,12 +2272,17 @@ Если Выборка.Ссылка = Неопределено Тогда // Зарегистрировать (есть в общих, но нет в разделенных). ВариантОбъект = Справочники.ВариантыОтчетов.СоздатьЭлемент(); + ВариантОбъект.Заблокировать(); Иначе // Актуализировать (изменилось наименование или ключ варианта). ВариантОбъект = Выборка.Ссылка.ПолучитьОбъект(); + ВариантОбъект.Заблокировать(); // Перенести пользовательские настройки. ЗаменитьКлючиПользовательскихНастроек(ВариантОбъект, Выборка); КонецЕсли; + ВариантОбъект.ОбменДанными.Загрузка = Истина; + ВариантОбъект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь; + ВариантОбъект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); ВариантОбъект.ТипОтчета = Перечисления.ТипыОтчетов.Внутренний; ЗаполнитьЗначенияСвойств(ВариантОбъект, Выборка, "Наименование, Отчет, КлючВарианта, ПредопределенныйВариант"); Если НЕ ВариантОбъект.ВидимостьПоУмолчаниюПереопределена Тогда @@ -2346,11 +2319,6 @@ Возврат; КонецЕсли; - Если НЕ Кэш.ПараметрыОбновления.МонопольныйРежим Тогда - Кэш.ТребуетсяУстановитьМонопольныйРежим = Истина; - Возврат; - КонецЕсли; - Если ОбщиеДанные Тогда Кэш.ОбновитьОбласти = Истина; Суффикс = НСтр("ru = 'общие данные'"); @@ -2364,8 +2332,11 @@ МассивСсылокВариантов = Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"); Для Каждого ВариантСсылка Из МассивСсылокВариантов Цикл ВариантОбъект = ВариантСсылка.ПолучитьОбъект(); - ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина); + ВариантОбъект.Заблокировать(); ВариантОбъект.ОбменДанными.Загрузка = Истина; + ВариантОбъект.ОбменДанными.Получатели.АвтоЗаполнение = Ложь; + ВариантОбъект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + ВариантОбъект.ДополнительныеСвойства.Вставить("ЗаполнениеПредопределенных", Истина); ВариантОбъект.УстановитьПометкуУдаления(Истина); КонецЦикла; @@ -2400,8 +2371,7 @@ СтарыйВариант.Ссылка, НСтр("ru = 'В процессе выборки вариантов отчетов из стандартного хранилища возникла ошибка:'") + Символы.ПС - + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; Если ЭлементВыборкиПолучен = Ложь Тогда @@ -2418,8 +2388,7 @@ ОписаниеНастроек = ХранилищеПользовательскихНастроекОтчетов.ПолучитьОписание( ВыборкаХранилища.КлючОбъекта, ВыборкаХранилища.КлючНастроек, - ВыборкаХранилища.Пользователь - ); + ВыборкаХранилища.Пользователь); // Запись настроек в хранилище по новому ключу. ХранилищеПользовательскихНастроекОтчетов.Сохранить( @@ -2427,8 +2396,7 @@ ВыборкаХранилища.КлючНастроек, ВыборкаХранилища.Настройки, ОписаниеНастроек, - ВыборкаХранилища.Пользователь - ); + ВыборкаХранилища.Пользователь); КонецЦикла; // Очистка старых настроек хранилища. @@ -2505,4 +2473,3 @@ НаборЗаписей.Записать(Истина); КонецПроцедуры - diff --git a/SSL/src/CommonModules/ВариантыОтчетовКлиент/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовКлиент/Module.bsl index 98c756c81..f779695ca 100644 --- a/SSL/src/CommonModules/ВариантыОтчетовКлиент/Module.bsl +++ b/SSL/src/CommonModules/ВариантыОтчетовКлиент/Module.bsl @@ -42,8 +42,9 @@ // Параметры: // МассивВариантов (Массив) из (СправочникСсылка.ВариантыОтчетов) // ДополнительныеПараметры (*) Необязательный. +// Владелец (УправляемаяФорма) Необязательный. Используется только для блокирования формы, из которой выполняется размещение вариантов отчетов. // -Процедура ОткрытьДиалогРазмещенияВариантовВРазделах(МассивВариантов, ДополнительныеПараметры = Неопределено, Модально = Ложь) Экспорт +Процедура ОткрытьДиалогРазмещенияВариантовВРазделах(МассивВариантов, ДополнительныеПараметры = Неопределено, Владелец = Неопределено) Экспорт Если ТипЗнч(МассивВариантов) <> Тип("Массив") ИЛИ МассивВариантов.Количество() < 1 Тогда Предупреждение(НСтр("ru = 'Выберите варианты отчетов, которые необходимо разместить в разделах.'")); @@ -51,11 +52,7 @@ КонецЕсли; ПараметрыОткрытия = Новый Структура("МассивВариантов, ДополнительныеПараметры", МассивВариантов, ДополнительныеПараметры); - Если Модально Тогда - ОткрытьФормуМодально("Справочник.ВариантыОтчетов.Форма.РазмещениеВРазделах", ПараметрыОткрытия); - Иначе - ОткрытьФорму("Справочник.ВариантыОтчетов.Форма.РазмещениеВРазделах", ПараметрыОткрытия); - КонецЕсли; + ОткрытьФорму("Справочник.ВариантыОтчетов.Форма.РазмещениеВРазделах", ПараметрыОткрытия, Владелец); КонецПроцедуры @@ -285,41 +282,8 @@ Процедура ОткрытьВариантДополнительногоОтчета(Вариант) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиент"); - Модуль.ОткрытьВариантДополнительногоОтчета(Вариант.Отчет, Вариант.КлючВарианта); - КонецЕсли; - -КонецПроцедуры - -// Обработчик команд, добавленных динамически. -// -// Параметры: -// ЭтаФорма (УправляемаяФорма) Форма отчета. -// Команда (КомандаФормы) Команда, которая была вызвана. -// Результат (Булево) Истина, если вызов команды обработан. -// -Процедура ФормаОтчетаОбработчикКоманды(ЭтаФорма, Команда, Результат) Экспорт - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РассылкаОтчетовКлиент"); - Модуль.ФормаОтчетаОбработчикКоманды(ЭтаФорма, Команда, Результат); - КонецЕсли; - -КонецПроцедуры - -// Обработчик результата выбора подчиненной формы. -// -// Параметры: -// ЭтаФорма (УправляемаяФорма) Форма отчета. -// ВыбранноеЗначение (*) Результат выбора в подчиненной форме. -// ИсточникВыбора (УправляемаяФорма) Форма, где осуществлен выбор. -// Результат (Булево) Истина, если результат выбора обработан. -// -Процедура ФормаОтчетаОбработкаВыбора(ЭтаФорма, ВыбранноеЗначение, ИсточникВыбора, Результат) Экспорт - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РассылкаОтчетовКлиент"); - Модуль.ФормаОтчетаОбработкаВыбора(ЭтаФорма, ВыбранноеЗначение, ИсточникВыбора, Результат); + МодульДополнительныеОтчетыИОбработкиКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиент"); + МодульДополнительныеОтчетыИОбработкиКлиент.ОткрытьВариантДополнительногоОтчета(Вариант.Отчет, Вариант.КлючВарианта); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/ВариантыОтчетовКлиентСервер/Module.bsl b/SSL/src/CommonModules/ВариантыОтчетовКлиентСервер/Module.bsl index fdb0a8487..18e6e2b14 100644 --- a/SSL/src/CommonModules/ВариантыОтчетовКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ВариантыОтчетовКлиентСервер/Module.bsl @@ -10,8 +10,8 @@ // Представление наименования данной подсистемы, используется // для записи в журнале регистрации и в других местах. // -Функция НаименованиеПодсистемы() Экспорт - Возврат НСтр("ru = 'Варианты отчетов'"); +Функция НаименованиеПодсистемы(КодЯзыка) Экспорт + Возврат НСтр("ru = 'Варианты отчетов'", ?(КодЯзыка = Неопределено, ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка(), КодЯзыка)); КонецФункции // Представление группы важности. diff --git a/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl b/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl index 7f1d9fde0..73750aa33 100644 --- a/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl +++ b/SSL/src/CommonModules/ВерсионированиеОбъектов/Module.bsl @@ -136,58 +136,109 @@ СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииИсключенийПоискаСсылок"].Добавить( "ВерсионированиеОбъектов"); + + СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииДанныхОтПодчиненного"].Добавить( + "ВерсионированиеОбъектов"); + + СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииДанныхОтГлавного"].Добавить( + "ВерсионированиеОбъектов"); КонецПроцедуры -// Создает и записывает версию объекта в информационную базу. +// Записывает версию объекта в информационную базу. // // Параметры -// Объект - записываемый объект ИБ; -// АвторВерсии - Пользователь или Узел плана обмена - Источник версии; -// ТипВерсииОбъекта - Перечисление - Тип создаваемой версии; -// Комментарий - Строка - Комментарий к создаваемой версии; -// УникальныйИдентификаторСтрокой - Строка - Создает пустую ссылку из УИДа, если у переданного объекта ссылка отсутствует. +// Объект - для создания версии // -Процедура СоздатьВерсиюОбъекта(Объект, АвторВерсии = Неопределено, Знач ТипВерсииОбъекта = Неопределено, Комментарий = "", - УникальныйИдентификаторСтрокой = "", БезусловнаяЗапись = Ложь) Экспорт +Процедура ПриСозданииВерсииОбъекта(Объект) Экспорт - Перем НомерПоследнейВерсии, ДополнительныйКомментарий; + Перем НомерПоследнейВерсии, Комментарий; - Если БезусловнаяЗапись ИЛИ Объект.ДополнительныеСвойства.Свойство("ЭтоВерсияОбмена") Тогда - - МассивТипов = Метаданные.ОбщиеКоманды.ИсторияИзменений.ТипПараметраКоманды.Типы(); - - Если МассивТипов.Найти(ТипЗнч(Объект.Ссылка)) <> Неопределено Тогда - - НомерПоследнейВерсии = НомерПоследнейВерсии(Объект.Ссылка); - - Иначе - - Возврат; - - КонецЕсли; - - ИначеЕсли НЕ ОбъектВерсионируется(Объект, НомерПоследнейВерсии) Тогда + Если НЕ ОбъектВерсионируется(Объект, НомерПоследнейВерсии) Тогда + Возврат; + КонецЕсли; + + Если НЕ Объект.ДополнительныеСвойства.Свойство("ВерсионированиеОбъектовКомментарийКВерсии", Комментарий) Тогда + Комментарий = ""; + КонецЕсли; + + СведенияОВерсииОбъекта = Новый Структура; + СведенияОВерсииОбъекта.Вставить("НомерВерсии", Число(НомерПоследнейВерсии) + 1); + СведенияОВерсииОбъекта.Вставить("Комментарий", Комментарий); + + СоздатьВерсиюОбъекта(Объект, СведенияОВерсииОбъекта); + +КонецПроцедуры + +// Записывает версию объекта, полученного при обмене данными, в информационную базу. +// Для версии объекта не по коллизии проверяет включенность версионирования. +// +// Параметры +// Объект - для создания версии +// +Процедура ПриСозданииВерсииОбъектаПоОбменуДанными(Объект) Экспорт + + Перем НомерПоследнейВерсии; + + Если Не ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(Объект.Метаданные()) Тогда Возврат; КонецЕсли; + Ссылка = Объект.Ссылка; + + СведенияОВерсииОбъекта = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру( + Объект.ДополнительныеСвойства.СведенияОВерсииОбъекта); + + Если СведенияОВерсииОбъекта.ТипВерсииОбъекта = "ПринятыеДанныеПоКоллизии" Тогда + + НомерПоследнейВерсии = НомерПоследнейВерсии(Ссылка); + + СведенияОВерсииОбъекта.Вставить("Объект", Ссылка); + СведенияОВерсииОбъекта.Вставить("НомерВерсии", Число(НомерПоследнейВерсии) + 1); + СведенияОВерсииОбъекта.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта[СведенияОВерсииОбъекта.ТипВерсииОбъекта]; + + СоздатьВерсиюОбъекта(Объект, СведенияОВерсииОбъекта, Ложь); + + ИначеЕсли ОбъектВерсионируется(Объект, НомерПоследнейВерсии) Тогда + + Если СведенияОВерсииОбъекта.ОтложеннаяОбработка Тогда + + ЗаписьXML = Новый ЗаписьFastInfoset; + ЗаписьXML.УстановитьДвоичныеДанные(); + ЗаписьXML.ЗаписатьОбъявлениеXML(); + ЗаписатьXML(ЗаписьXML, Объект, НазначениеТипаXML.Явное); + ДвоичныеДанные = ЗаписьXML.Закрыть(); + ХранилищеДанных = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9)); + + НомерПоследнейВерсии = НомерПоследнейВерсии(Ссылка); + ЗаписатьВерсиюПоверхПредыдущей(Ссылка, НомерПоследнейВерсии, ХранилищеДанных); + + Иначе + + СведенияОВерсииОбъекта.Вставить("Объект", Ссылка); + СведенияОВерсииОбъекта.Вставить("НомерВерсии", Число(НомерПоследнейВерсии) + 1); + СведенияОВерсииОбъекта.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта[СведенияОВерсииОбъекта.ТипВерсииОбъекта]; + + СоздатьВерсиюОбъекта(Объект, СведенияОВерсииОбъекта, Ложь); + + КонецЕсли; + + КонецЕсли; + + Объект.ДополнительныеСвойства.Удалить("СведенияОВерсииОбъекта"); + +КонецПроцедуры + +// Создает и записывает версию объекта в информационную базу. +// +Процедура СоздатьВерсиюОбъекта(Объект, СведенияОВерсииОбъекта, ЗаписьОбычнойВерсии = Истина) + Если Не ПривилегированныйРежим() Тогда ВыполнитьПроверкуПравДоступа("Изменение", Объект.Метаданные()); КонецЕсли; - Если НЕ Объект.ДополнительныеСвойства.Свойство("ВерсионированиеОбъектовКомментарийКВерсии", ДополнительныйКомментарий) Тогда - ДополнительныйКомментарий = ""; - КонецЕсли; - - Ссылка = Объект.Ссылка; - Если Ссылка.Пустая() И ЗначениеЗаполнено(УникальныйИдентификаторСтрокой) Тогда - - Ссылка = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Ссылка).ПолучитьСсылку(Новый УникальныйИдентификатор(УникальныйИдентификаторСтрокой)) - - КонецЕсли; - ЗаписьXML = Новый ЗаписьFastInfoset; ЗаписьXML.УстановитьДвоичныеДанные(); ЗаписьXML.ЗаписатьОбъявлениеXML(); @@ -198,20 +249,16 @@ УстановитьПривилегированныйРежим(Истина); МенеджерЗаписиВерсииОбъектов = РегистрыСведений.ВерсииОбъектов.СоздатьМенеджерЗаписи(); - МенеджерЗаписиВерсииОбъектов.Объект = Ссылка; - МенеджерЗаписиВерсииОбъектов.ДатаВерсии = ТекущаяДатаСеанса(); - МенеджерЗаписиВерсииОбъектов.ВерсияОбъекта = ХранилищеДанных; - МенеджерЗаписиВерсииОбъектов.НомерВерсии = Число(НомерПоследнейВерсии) + 1; + МенеджерЗаписиВерсииОбъектов.ДатаВерсии = ТекущаяДатаСеанса(); + МенеджерЗаписиВерсииОбъектов.ВерсияОбъекта = ХранилищеДанных; - Если Объект.ДополнительныеСвойства.Свойство("ЭтоВерсияОбмена") Тогда + ЗаполнитьЗначенияСвойств(МенеджерЗаписиВерсииОбъектов, СведенияОВерсииОбъекта); + + Если ЗаписьОбычнойВерсии Тогда - ЗаполнитьЗначенияСвойств(МенеджерЗаписиВерсииОбъектов, Объект.ДополнительныеСвойства); - - Иначе - - МенеджерЗаписиВерсииОбъектов.АвторВерсии = ?(ЗначениеЗаполнено(АвторВерсии), АвторВерсии, Пользователи.АвторизованныйПользователь()); - МенеджерЗаписиВерсииОбъектов.Комментарий = ?(ЗначениеЗаполнено(Комментарий), Комментарий, ДополнительныйКомментарий); - МенеджерЗаписиВерсииОбъектов.ТипВерсииОбъекта = ?(ЗначениеЗаполнено(ТипВерсииОбъекта), ТипВерсииОбъекта, Перечисления.ТипыВерсийОбъекта.ИзмененоПользователем); + МенеджерЗаписиВерсииОбъектов.Объект = Объект.Ссылка; + МенеджерЗаписиВерсииОбъектов.АвторВерсии = Пользователи.АвторизованныйПользователь(); + МенеджерЗаписиВерсииОбъектов.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта.ИзмененоПользователем; КонецЕсли; @@ -219,6 +266,44 @@ КонецПроцедуры +// Записывает версию объекта, полученного при обмене данными, в информационную базу. +// +// Параметры +// Объект - для создания версии +// СведенияОВерсииОбъекта - Структура - содержит информацию о версии объекта +// СсылкаСуществует - Булево - Признак наличия объекта по ссылке в информационной базе +// +Процедура СоздатьВерсиюОбъектаПоОбменуДанными(Объект, СведенияОВерсииОбъекта, СсылкаСуществует = Неопределено) Экспорт + + Ссылка = Объект.Ссылка; + + Если Не ЗначениеЗаполнено(СсылкаСуществует) Тогда + СсылкаСуществует = ОбщегоНазначения.СсылкаСуществует(Ссылка); + КонецЕсли; + + Если СсылкаСуществует Тогда + + НомерПоследнейВерсии = НомерПоследнейВерсии(Ссылка); + + Иначе + + Ссылка = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Ссылка).ПолучитьСсылку(Объект.ПолучитьСсылкуНового().УникальныйИдентификатор()); + НомерПоследнейВерсии = 0; + + КонецЕсли; + + СведенияОВерсииОбъекта.Вставить("Объект", Ссылка); + СведенияОВерсииОбъекта.Вставить("НомерВерсии", Число(НомерПоследнейВерсии) + 1); + СведенияОВерсииОбъекта.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта[СведенияОВерсииОбъекта.ТипВерсииОбъекта]; + + Если Не ЗначениеЗаполнено(СведенияОВерсииОбъекта.АвторВерсии) Тогда + СведенияОВерсииОбъекта.АвторВерсии = Пользователи.АвторизованныйПользователь(); + КонецЕсли; + + СоздатьВерсиюОбъекта(Объект, СведенияОВерсииОбъекта, Ложь); + +КонецПроцедуры + // Устанавливает признак игнорирования версии объекта // // Параметры: @@ -250,25 +335,29 @@ // Возвращает количество коллизий или непринятых объектов // // Параметры: -// ЭтоКоличествоКоллизий - Булево - Если Истина, то возвращает количество коллизий, иначе количество непринятых. -// ПоказыватьПроигнорированные - Булево - Признак необходимости учета проигнорированных. +// УзлыОбмена - ПланОбменаСсылка, Массив, СписокЗначений, Неопределено - отбор для получения количества коллизий +// ЭтоКоличествоКоллизий - Булево - Если Истина, то возвращает количество коллизий, иначе количество непринятых +// ПоказыватьПроигнорированные - Булево - Признак необходимости учета проигнорированных // УзелИнформационнойБазы - ПланОбменаСсылка - Количество по конкретному узлу // Период - Стандартный период - Количество за дату // СтрокаПоиска - Строка - Количество объектов, содержащих в комментарии СтрокаПоиска // -Функция КоличествоКоллизийИлиНепринятых(ЭтоКоличествоКоллизий, ПоказыватьПроигнорированные, - УзелИнформационнойБазы = Неопределено, Период = Неопределено, СтрокаПоиска = "") Экспорт +Функция КоличествоКоллизийИлиНепринятых(УзлыОбмена = Неопределено, ЭтоКоличествоКоллизий = Неопределено, + ПоказыватьПроигнорированные = Ложь, Период = Неопределено, СтрокаПоиска = "") Экспорт Количество = 0; + Если Не ЕстьПравоНаЧтениеВерсийОбъектов() Тогда + Возврат Количество; + КонецЕсли; + ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | КОЛИЧЕСТВО(ВерсииОбъектов.Объект) КАК Количество |ИЗ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов |ГДЕ | ВерсииОбъектов.ВерсияПроигнорирована <> &ОтборПоПропущенным - | И (ВерсииОбъектов.ТипВерсииОбъекта = &ТипВерсии1 - | ИЛИ ВерсииОбъектов.ТипВерсииОбъекта = &ТипВерсии2) + | И (ВерсииОбъектов.ТипВерсииОбъекта В (&ТипыВерсий)) | [ОтборПоУзлу] | [ОтборПоПериоду] | [ОтборПоПричине]"; @@ -278,11 +367,14 @@ ОтборПоПропущенным = ?(ПоказыватьПроигнорированные, Неопределено, Истина); Запрос.УстановитьПараметр("ОтборПоПропущенным", ОтборПоПропущенным); - Если УзелИнформационнойБазы = Неопределено Тогда + Если УзлыОбмена = Неопределено Тогда СтрокаОтбора = ""; + ИначеЕсли ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипЗнч(УзлыОбмена)) Тогда + СтрокаОтбора = "И ВерсииОбъектов.АвторВерсии = &УзлыОбмена"; + Запрос.УстановитьПараметр("УзлыОбмена", УзлыОбмена); Иначе - СтрокаОтбора = "И ВерсииОбъектов.АвторВерсии = &УзелИнформационнойБазы"; - Запрос.УстановитьПараметр("УзелИнформационнойБазы", УзелИнформационнойБазы); + СтрокаОтбора = "И ВерсииОбъектов.АвторВерсии В (&УзлыОбмена)"; + Запрос.УстановитьПараметр("УзлыОбмена", УзлыОбмена); КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ОтборПоУзлу]", СтрокаОтбора); @@ -300,31 +392,44 @@ КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ОтборПоПериоду]", СтрокаОтбора); - Если ЭтоКоличествоКоллизий Тогда + ТипыВерсий = Новый СписокЗначений; + Если ЗначениеЗаполнено(ЭтоКоличествоКоллизий) Тогда - Запрос.УстановитьПараметр("ТипВерсии1", Перечисления.ТипыВерсийОбъекта.ПринятыеДанныеПоКоллизии); - Запрос.УстановитьПараметр("ТипВерсии2", Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоКоллизии); - - СтрокаОтбора = ""; - - Иначе - - Запрос.УстановитьПараметр("ТипВерсии1", Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектСуществует); - Запрос.УстановитьПараметр("ТипВерсии2", Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектНеСуществует); - - Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + Если ЭтоКоличествоКоллизий Тогда - СтрокаОтбора = "И ВерсииОбъектов.Комментарий ПОДОБНО &Комментарий"; - Запрос.УстановитьПараметр("Комментарий", "%" + СтрокаПоиска + "%"); - - Иначе + ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.ПринятыеДанныеПоКоллизии); + ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоКоллизии); СтрокаОтбора = ""; + Иначе + + ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектСуществует); + ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектНеСуществует); + + Если ЗначениеЗаполнено(СтрокаПоиска) Тогда + + СтрокаОтбора = "И ВерсииОбъектов.Комментарий ПОДОБНО &Комментарий"; + Запрос.УстановитьПараметр("Комментарий", "%" + СтрокаПоиска + "%"); + + Иначе + + СтрокаОтбора = ""; + + КонецЕсли; + КонецЕсли; + Иначе // Отбор по комментарию не поддерживается + + ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.ПринятыеДанныеПоКоллизии); + ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоКоллизии); + ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектСуществует); + ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектНеСуществует); + КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ОтборПоПричине]", СтрокаОтбора); + Запрос.УстановитьПараметр("ТипыВерсий", ТипыВерсий); Запрос.Текст = ТекстЗапроса; Результат = Запрос.Выполнить(); @@ -334,28 +439,13 @@ Выборка = Результат.Выбрать(); Выборка.Следующий(); Количество = Выборка.Количество; - КонецЕсли; Возврат Количество; КонецФункции -// Получает объект из его версии -// -// Параметры: -// Ссылка - Ссылка на объект, версию которого необходимо восстановить -// НомерВерсии - Число - Номер восстанавливаемой версии -// -Функция ОбъектИзВерсии(Ссылка, НомерВерсии, ДатаВерсии = Неопределено) Экспорт - - НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей(); - НаборЗаписей.Отбор.Объект.Установить(Ссылка); - НаборЗаписей.Отбор.НомерВерсии.Установить(НомерВерсии); - НаборЗаписей.Прочитать(); - - Запись = НаборЗаписей[0]; - ДатаВерсии = Запись.ДатаВерсии; +Функция ОбъектИзДвоичныхДанных(Запись) ДвоичныеДанные = Запись.ВерсияОбъекта.Получить(); @@ -374,6 +464,17 @@ ЧтениеXML.Закрыть(); ВызватьИсключение НСтр("ru = 'Ошибка чтения данных'"); КонецЕсли; + +КонецФункции + +Функция ЗаписьОВерсииОбъекта(СсылкаНаОбъект, НомерВерсии) + + НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.Объект.Установить(СсылкаНаОбъект); + НаборЗаписей.Отбор.НомерВерсии.Установить(НомерВерсии); + НаборЗаписей.Прочитать(); + + Возврат НаборЗаписей; КонецФункции @@ -392,7 +493,8 @@ | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов |ГДЕ | НЕ(ВерсииОбъектов.ТипВерсииОбъекта <> &ТипВерсииОбъекта1 - | И ВерсииОбъектов.ТипВерсииОбъекта <> &ТипВерсииОбъекта2)"; + | И ВерсииОбъектов.ТипВерсииОбъекта <> &ТипВерсииОбъекта2) + | И ВерсииОбъектов.ВерсияПроигнорирована = ЛОЖЬ"; Если ПолучитьДатуПоследнейКоллизии Тогда @@ -422,6 +524,20 @@ КонецФункции +Процедура ЗаписатьВерсиюПоверхПредыдущей(Ссылка, НомерВерсии, ХранилищеДанных); + + УстановитьПривилегированныйРежим(Истина); + + НаборЗаписей = ЗаписьОВерсииОбъекта(Ссылка, НомерВерсии); + ЗаписьОВерсии = НаборЗаписей[0]; + + ЗаписьОВерсии.ДатаВерсии = ТекущаяДатаСеанса(); + ЗаписьОВерсии.ВерсияОбъекта = ХранилищеДанных; + + НаборЗаписей.Записать(); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов в эту подсистему @@ -433,25 +549,66 @@ // НомерИгнорируемойВерсии - Число - Номер версии, на которую необходимо проигнорировать // ПропуститьПроверкуЗапретаИзменения - Булево - Признак пропуска проверки даты запрета загрузки // -Процедура ПриПереходеНаВерсиюОбъекта(ОбъектСсылка, НомерВерсииДляПерехода, НомерИгнорируемойВерсии, ПропуститьПроверкуЗапретаИзменения = Ложь) Экспорт +Процедура ПриПереходеНаВерсиюОбъекта(СсылкаНаОбъект, Знач НомерВерсии, ПринятьВерсию, ПропуститьПроверкуЗапретаИзменения = Ложь) Экспорт - Перем ДатаВерсии; - - Объект = ОбъектИзВерсии(ОбъектСсылка, НомерВерсииДляПерехода, ДатаВерсии); - - Объект.ДополнительныеСвойства.Вставить("ВерсионированиеОбъектовКомментарийКВерсии", - СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Выполнен переход к версии №%1 от %2'"), - Строка(НомерВерсииДляПерехода), - Формат(ДатаВерсии, "ДЛФ=DT")) ); - - Если ПропуститьПроверкуЗапретаИзменения Тогда - Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); + Если Не ПривилегированныйРежим() Тогда + ВыполнитьПроверкуПравДоступа("Изменение", СсылкаНаОбъект.Метаданные()); КонецЕсли; - Объект.Записать(); + УстановитьПривилегированныйРежим(Истина); + ЗаписатьОбъект = Ложь; - ИгнорироватьВерсиюОбъекта(ОбъектСсылка, НомерИгнорируемойВерсии, Истина); + НаборЗаписей = ЗаписьОВерсииОбъекта(СсылкаНаОбъект, НомерВерсии); + Запись = НаборЗаписей[0]; + + Если ПринятьВерсию + И (Запись.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоКоллизии + Или Запись.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектСуществует + Или Запись.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектНеСуществует) Тогда + + Объект = ОбъектИзДвоичныхДанных(Запись); + ДатаВерсии = Запись.ДатаВерсии; + ЗаписатьОбъект = Истина; + + ИначеЕсли Не ПринятьВерсию И Запись.ТипВерсииОбъекта = Перечисления.ТипыВерсийОбъекта.ПринятыеДанныеПоКоллизии Тогда + + НомерВерсии = НомерВерсии - 1; + + Если НомерВерсии <> 0 Тогда + + ПредыдущаяЗапись = ЗаписьОВерсииОбъекта(СсылкаНаОбъект, НомерВерсии)[0]; + Объект = ОбъектИзДвоичныхДанных(ПредыдущаяЗапись); + ДатаВерсии = ПредыдущаяЗапись.ДатаВерсии; + ЗаписатьОбъект = Истина; + + КонецЕсли; + + + Иначе + + ЗаписатьОбъект = Ложь; + + КонецЕсли; + + Если ЗаписатьОбъект Тогда + + Объект.ДополнительныеСвойства.Вставить("ВерсионированиеОбъектовКомментарийКВерсии", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполнен переход к версии №%1 от %2'"), + Строка(НомерВерсии), + Формат(ДатаВерсии, "ДЛФ=DT"))); + + Если ПропуститьПроверкуЗапретаИзменения Тогда + Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); + КонецЕсли; + + Объект.Записать(); + + Запись.ВерсияПроигнорирована = Истина; + + НаборЗаписей.Записать(); + + КонецЕсли; КонецПроцедуры @@ -577,14 +734,15 @@ Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ - | ВерсияОбъекта КАК ВерсияОбъекта, - | АвторВерсии КАК АвторВерсии, - | ДатаВерсии КАК ДатаВерсии - |ИЗ - | РегистрСведений.ВерсииОбъектов - |ГДЕ - | Объект = &Ссылка - | И НомерВерсии = &НомерВерсии"; + | ВерсииОбъектов.ВерсияОбъекта КАК ВерсияОбъекта, + | ВерсииОбъектов.АвторВерсии КАК АвторВерсии, + | ВерсииОбъектов.ДатаВерсии КАК ДатаВерсии, + | ВерсииОбъектов.Комментарий КАК Комментарий + |ИЗ + | РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов + |ГДЕ + | ВерсииОбъектов.Объект = &Ссылка + | И ВерсииОбъектов.НомерВерсии = &НомерВерсии"; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("НомерВерсии", Число(НомерВерсии)); @@ -600,10 +758,11 @@ ВызватьИсключение НСтр("ru = 'Не удалось получить предыдущую версию объекта.'"); КонецЕсли; - Возврат Новый Структура("ВерсияОбъекта, АвторВерсии, ДатаВерсии", + Возврат Новый Структура("ВерсияОбъекта, АвторВерсии, ДатаВерсии, Комментарий", ВерсияОбъекта, Выборка.АвторВерсии, - Выборка.ДатаВерсии); + Выборка.ДатаВерсии, + Выборка.Комментарий); КонецФункции @@ -633,6 +792,30 @@ КонецФункции +// Добавляет в дополнительные свойства сведения для записи версии объекта, +// полученного при обмене данными. +// +Процедура ДобавлениеСведенийОВерсииОбъектаПриОбменеДанными(Объект, АвторВерсии) + + Если ТипЗнч(Объект) <> Тип("УдалениеОбъекта") И ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(Объект.Метаданные()) Тогда + + СведенияОВерсииОбъекта = Новый Структура; + СведенияОВерсииОбъекта.Вставить("АвторВерсии", АвторВерсии); + СведенияОВерсииОбъекта.Вставить("ТипВерсииОбъекта", "ИзмененоПользователем"); + СведенияОВерсииОбъекта.Вставить("Комментарий", НСтр("ru = 'Версия получена при синхронизации данных.'")); + СведенияОВерсииОбъекта.Вставить("ОтложеннаяОбработка", Ложь); + Объект.ДополнительныеСвойства.Вставить("СведенияОВерсииОбъекта", Новый ФиксированнаяСтруктура(СведенияОВерсииОбъекта)); + + КонецЕсли; + +КонецПроцедуры + +// Проверяет наличие у пользователя прав на чтение информации о версиях +// +Функция ЕстьПравоНаЧтениеВерсийОбъектов() Экспорт + Возврат Пользователи.РолиДоступны("ЧтениеВерсийОбъектов, ЧтениеИнформацииОВерсияхОбъектов"); +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Обработчики служебных событий подсистем БСП @@ -648,6 +831,28 @@ КонецПроцедуры +// Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной информационной базе. +// +// Параметры: +// см. описание обработчика события ПриПолученииДанныхОтПодчиненного() в синтаксис-помощнике. +// +Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель) Экспорт + + ДобавлениеСведенийОВерсииОбъектаПриОбменеДанными(ЭлементДанных, Отправитель); + +КонецПроцедуры + +// Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной информационной базе. +// +// Параметры: +// см. описание обработчика события ПриПолученииДанныхОтГлавного() в синтаксис-помощнике. +// +Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель) Экспорт + + ДобавлениеСведенийОВерсииОбъектаПриОбменеДанными(ЭлементДанных, Отправитель); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Функции для получения отчета по объекту diff --git a/SSL/src/CommonModules/ВерсионированиеОбъектовСобытия/Module.bsl b/SSL/src/CommonModules/ВерсионированиеОбъектовСобытия/Module.bsl index faf667f5d..9876b9372 100644 --- a/SSL/src/CommonModules/ВерсионированиеОбъектовСобытия/Module.bsl +++ b/SSL/src/CommonModules/ВерсионированиеОбъектовСобытия/Module.bsl @@ -14,13 +14,41 @@ // Процедура ЗаписатьВерсиюОбъекта(Источник, Отказ) Экспорт - ВерсионированиеОбъектов.СоздатьВерсиюОбъекта(Источник); + Если Источник.ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Если Источник.ДополнительныеСвойства.Свойство("СведенияОВерсииОбъекта") Тогда + Возврат; + КонецЕсли; + + ВерсионированиеОбъектов.ПриСозданииВерсииОбъекта(Источник); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +//////////////////////////////////////////////////////////////////////////////// +// Обработчики условных вызовов в эту подсистему + +// Записывает версию объекта в информационную базу. Вызывается при выполнении +// обмена данными с другой информационной базой. +// +// Параметры +// Источник - Объект - записываемый объект ИБ; +// Отказ - Булево - признак отказа от записи объекта. +// +Процедура ЗаписатьВерсиюОбъектаПриОбменеДанными(Источник, Отказ) Экспорт + + Если Источник.ДополнительныеСвойства.Свойство("СведенияОВерсииОбъекта") Тогда + + ВерсионированиеОбъектов.ПриСозданииВерсииОбъектаПоОбменуДанными(Источник); + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики подписок на события diff --git a/SSL/src/CommonModules/Взаимодействия/Module.bsl b/SSL/src/CommonModules/Взаимодействия/Module.bsl index ba5edb1b5..d6a766ca1 100644 --- a/SSL/src/CommonModules/Взаимодействия/Module.bsl +++ b/SSL/src/CommonModules/Взаимодействия/Module.bsl @@ -543,8 +543,7 @@ Для Каждого ЭлементМассива Из ТаблицаКонтактов Цикл Контакт = ?(ТипЗнч(ЭлементМассива.Контакт) = Тип("Строка"), Неопределено, ЭлементМассива.Контакт); Запись = Новый Структура( - "Адрес, Представление, Контакт", ЭлементМассива.Адрес, ЭлементМассива.Представление, Контакт - ); + "Адрес, Представление, Контакт", ЭлементМассива.Адрес, ЭлементМассива.Представление, Контакт); Результат.Добавить(Запись); КонецЦикла; @@ -703,8 +702,7 @@ ПомещатьВоВременнуюТаблицу, "ПОМЕСТИТЬ ТаблицаКонтакты |", - "" - ); + ""); ТекстОбъединить = ""; ШаблонУсловияНаСсылки = ПолучитьШаблонУсловияНаСсылкиКонтактовДляЗапроса(); @@ -1728,6 +1726,7 @@ Функция ПолучитьУчастниковПоТаблице(Ссылка) Экспорт ПолноеИмяОбъекта = Ссылка.Метаданные().ПолноеИмя(); + ИмяТаблицы = ?(ТипЗнч(Ссылка) = Тип("ДокументСсылка.СообщениеSMS"), "Адресаты", "Участники"); ТекстЗапроса = "ВЫБРАТЬ @@ -1735,7 +1734,7 @@ | Участники.ПредставлениеКонтакта КАК Представление, | Участники.КакСвязаться КАК Адрес |ИЗ - | " + ПолноеИмяОбъекта + ".Участники КАК Участники + | " + ПолноеИмяОбъекта + "." + ИмяТаблицы + " КАК Участники |ГДЕ | Участники.Ссылка = &Ссылка"; @@ -1785,7 +1784,7 @@ // Участники - ТабличнаяЧастьДокумента - табличная часть документа, которая будет заполнена // на основании массива. // -Процедура ЗаполнитьКонтактыДляВстречи(Контакты, Участники) Экспорт +Процедура ЗаполнитьКонтактыДляВстречи(Контакты, Участники, ТипКонтактнойИнформации = Неопределено) Экспорт Если Не КонтактыЗаполнены(Контакты) Тогда Возврат; @@ -1802,7 +1801,7 @@ НоваяСтрока.Контакт = ЭлементМассива; КонецЕсли; - ДозаполнитьПоляКонтактов(НоваяСтрока.Контакт, НоваяСтрока.ПредставлениеКонтакта, НоваяСтрока.КакСвязаться); + ДозаполнитьПоляКонтактов(НоваяСтрока.Контакт, НоваяСтрока.ПредставлениеКонтакта, НоваяСтрока.КакСвязаться, ТипКонтактнойИнформации); КонецЦикла; @@ -1860,8 +1859,14 @@ // Процедура СформироватьСписокУчастников(Объект) Экспорт + Если ТипЗнч(Объект) = Тип("ДокументОбъект.СообщениеSMS") Тогда + ИмяТаблицы = "Адресаты"; + Иначе + ИмяТаблицы = "Участники"; + КонецЕсли; + Объект.СписокУчастников = ""; - Для Каждого Участник Из Объект.Участники Цикл + Для Каждого Участник Из Объект[ИмяТаблицы] Цикл Объект.СписокУчастников = Объект.СписокУчастников + ?(Объект.СписокУчастников = "", "", "; ") + Участник.ПредставлениеКонтакта; КонецЦикла; @@ -2577,7 +2582,7 @@ Для Каждого Запись Из НаборЗаписей Цикл Запись.ВПредставлениеВключатьИмяПользователя = Истина; КонецЦикла; - НаборЗаписей.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей); КонецЦикла; @@ -2678,7 +2683,7 @@ Если Не ПустаяСтрока(Выборка.Описание) Тогда ВзаимодействиеОбъект = Выборка.Ссылка.ПолучитьОбъект(); ВзаимодействиеОбъект.Тема = Выборка.Описание; - ВзаимодействиеОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВзаимодействиеОбъект); КонецЕсли; КонецЦикла; @@ -2701,7 +2706,7 @@ ПисьмоОбъект = Выборка.Ссылка.ПолучитьОбъект(); ПисьмоОбъект.Размер = ОценитьРазмерИсходящегоЭлектронногоПисьма(Выборка.Ссылка); - ПисьмоОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ПисьмоОбъект); КонецЦикла; @@ -2760,8 +2765,7 @@ ПапкаОбъект = ВыборкаПредопределенные.Ссылка.ПолучитьОбъект(); ПапкаОбъект.УстановитьНовыйКод(); - ПапкаОбъект.ОбменДанными.Загрузка = Истина; - ПапкаОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ПапкаОбъект); КонецЦикла; @@ -2771,9 +2775,7 @@ ПапкаОбъект = ВыборкаПользовательские.Ссылка.ПолучитьОбъект(); ПапкаОбъект.УстановитьНовыйКод(); - ПапкаОбъект.ОбменДанными.Загрузка = Истина; - ПапкаОбъект.Записать(); - + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ПапкаОбъект); КонецЦикла; КонецПроцедуры @@ -2987,9 +2989,8 @@ Если ЭлементМассиваОписания.ЕстьВладелец Тогда Форма.Элементы["Таблица_" + ЭлементМассиваОписания.ИмяВладельца].УстановитьДействие( "ПриАктивизацииСтроки","Подключаемый_СписокВладелецПриАктивизацииСтроки"); - ЭлементОтбора = Форма["Список_" + ЭлементМассиваОписания.Имя].Отбор.Элементы.Добавить( - Тип("ЭлементОтбораКомпоновкиДанных")); - ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Владелец"); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Форма["Список_" + ЭлементМассиваОписания.Имя], "Владелец", Неопределено, , , Истина); КонецЕсли; КолонкаСсылка = Форма.Элементы.Добавить( @@ -3008,9 +3009,10 @@ // Список - ДинамическийСписок - динамический список, для которого устанавливается отбор // Процедура СоздатьОтборПоТипуСогласноФО(Список) Экспорт - + ГруппаОтбора = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора( - Список.Отбор.Элементы,"Отбор по типу согласно ФО", ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ); + ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список).Элементы, "Отбор по типу согласно ФО", + ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ); ИмяПоля = "Тип"; ВидСравненияЭлементаОтбора = ВидСравненияКомпоновкиДанных.НеВСписке; @@ -3018,6 +3020,7 @@ СписокТипов.Добавить(Тип("ДокументСсылка.Встреча")); СписокТипов.Добавить(Тип("ДокументСсылка.ЗапланированноеВзаимодействие")); СписокТипов.Добавить(Тип("ДокументСсылка.ТелефонныйЗвонок")); + СписокТипов.Добавить(Тип("ДокументСсылка.СообщениеSMS")); ПравоеЗначение = СписокТипов; ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки( ГруппаОтбора, ИмяПоля, ВидСравненияЭлементаОтбора, ПравоеЗначение); @@ -4183,6 +4186,376 @@ КонецПроцедуры +//////////////////////////////////////////////////////////////////// +// Сообщения SMS + +// Проверяет статусы доставки для отправленных SMS. +// +// Параметры +// СообщениеSMS - ДокументОбъект.СообщениеSMS - документ, для которого проверяется статус доставки SMS +// Модифицированность - Булево - признак модифицированности документа +// +Процедура ПроверитьСтатусыДоставкиSMS(СообщениеSMS, Модифицированность) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = " + |ВЫБРАТЬ + | СообщениеSMSАдресаты.НомерСтроки, + | СообщениеSMSАдресаты.ИдентификаторСообщения, + | СообщениеSMSАдресаты.СостояниеСообщения + |ИЗ + | Документ.СообщениеSMS.Адресаты КАК СообщениеSMSАдресаты + |ГДЕ + | СообщениеSMSАдресаты.Ссылка = &СообщениеSMS + | И СообщениеSMSАдресаты.ИдентификаторСообщения <> """" + | И (СообщениеSMSАдресаты.СостояниеСообщения = ЗНАЧЕНИЕ(Перечисление.СостоянияСообщенияSMS.ОтправляетсяПровайдером) + | ИЛИ СообщениеSMSАдресаты.СостояниеСообщения = ЗНАЧЕНИЕ(Перечисление.СостоянияСообщенияSMS.ОтправленоПровайдером) + | ИЛИ СообщениеSMSАдресаты.СостояниеСообщения = ЗНАЧЕНИЕ(Перечисление.СостоянияСообщенияSMS.ОшибкаПолученияСтатусаУПровайдера))"; + + Запрос.УстановитьПараметр("СообщениеSMS", СообщениеSMS.Ссылка); + + ЕстьИзменения = Ложь; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + + СостояниеСообщения = СостояниеСообщенияSMSСогласноСтатусуДоставки(ОтправкаSMS.СтатусДоставки(Выборка.ИдентификаторСообщения)); + + Если СостояниеСообщения <> Выборка.СостояниеСообщения Тогда + СообщениеSMS.Адресаты[Выборка.НомерСтроки - 1].СостояниеСообщения = СостояниеСообщения; + ЕстьИзменения = Истина; + КонецЕсли; + + КонецЦикла; + + Если ЕстьИзменения Тогда + СообщениеSMS.Состояние = СостояниеДокументаСообщениеSMS(СообщениеSMS); + Модифицированность = Истина; + КонецЕсли; + +КонецПроцедуры + +// Определяет статус документа "Сообщение SMS" по состоянию входящих в него сообщений SMS +// +// Параметры +// СообщениеSMS - ДокументОбъект.СообщениеSMS - документ, для которого необходимо определить +// статус +// +// Возвращаемое значение: +// Перечисления.СостоянияДокументаСообщениеSMS - рассчитанный статус документа +// +Функция СостояниеДокументаСообщениеSMS(СообщениеSMS) + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ + | Адресаты.СостояниеСообщения КАК Состояние + |ПОМЕСТИТЬ Состояния + |ИЗ + | &Адресаты КАК Адресаты + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | Состояния.Состояние + |ИЗ + | Состояния КАК Состояния"; + + Запрос.УстановитьПараметр("Адресаты", СообщениеSMS.Адресаты.Выгрузить()); + + Результат = Запрос.Выполнить(); + + Если Результат.Пустой() Тогда + Возврат Перечисления.СостоянияДокументаСообщениеSMS.Черновик; + КонецЕсли; + + ТекущийСтатус = Неопределено; + + Выборка = Результат.Выбрать(); + Пока Выборка.Следующий() Цикл + + Если Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.Исходящее Тогда + + Возврат Перечисления.СостоянияДокументаСообщениеSMS.Исходящее; + + ИначеЕсли Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.Черновик Тогда + + Возврат Перечисления.СостоянияСообщенияSMS.Черновик; + + ИначеЕсли Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.НеУдалосьПередатьПровайдеру Тогда + + Если ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.Доставлено Тогда + ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.ЧастичноДоставлено; + Иначе + ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.НеДоставлено; + КонецЕсли; + + ИначеЕсли Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.ОтправляетсяПровайдером + ИЛИ Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.ОтправленоПровайдером + ИЛИ Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.ОшибкаПолученияСтатусаУПровайдера + ИЛИ Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.НеОтправленоПровайдером Тогда + Возврат Перечисления.СостоянияДокументаСообщениеSMS.Доставляется; + ИначеЕсли Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.Доставлено Тогда + Если ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.Доставлено + ИЛИ ТекущийСтатус = Неопределено Тогда + ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.Доставлено; + Иначе + ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.ЧастичноДоставлено; + КонецЕсли; + ИначеЕсли Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.НеДоставлено Тогда + Если ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.Доставлено Тогда + ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.ЧастичноДоставлено; + Иначе + ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.НеДоставлено; + КонецЕсли; + ИначеЕсли Выборка.Состояние = Перечисления.СостоянияСообщенияSMS.НеОпознаноПровайдером Тогда + Если ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.Доставлено Тогда + ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.ЧастичноДоставлено; + Иначе + ТекущийСтатус = Перечисления.СостоянияДокументаСообщениеSMS.НеДоставлено; + КонецЕсли; + КонецЕсли; + + КонецЦикла; + + Возврат ТекущийСтатус; + +КонецФункции + +// Преобразует статусы доставки SMS подсистемы ОтправкаSMS в +// состояния сообщения SMS подсистемы Взаимодействия +// +// Параметры +// СтатусДоставки - Перечисления.СтатусыДоставкиSMS - значение, которое необходимо преобразовать +// +// Возвращаемое значение: +// Перечисления.СостоянияСообщенияSMS - преобразованное значение +// +Функция СостояниеСообщенияSMSСогласноСтатусуДоставки(СтатусДоставки); + + Если СтатусДоставки = "НеОтправлялось" Тогда + Возврат Перечисления.СостоянияСообщенияSMS.НеОтправленоПровайдером; + ИначеЕсли СтатусДоставки = "Отправляется" Тогда + Возврат Перечисления.СостоянияСообщенияSMS.ОтправляетсяПровайдером; + ИначеЕсли СтатусДоставки = "Отправлено" Тогда + Возврат Перечисления.СостоянияСообщенияSMS.ОтправленоПровайдером; + ИначеЕсли СтатусДоставки = "НеДоставлено" Тогда + Возврат Перечисления.СостоянияСообщенияSMS.НеДоставлено; + ИначеЕсли СтатусДоставки = "Доставлено" Тогда + Возврат Перечисления.СостоянияСообщенияSMS.Доставлено; + ИначеЕсли СтатусДоставки = "НеОтправлялось" Тогда + Возврат Перечисления.СостоянияСообщенияSMS.НеОпознаноПровайдером; + ИначеЕсли СтатусДоставки = "Ошибка" Тогда + Возврат Перечисления.СостоянияСообщенияSMS.ОшибкаПолученияСтатусаУПровайдера; + Иначе + Возврат Перечисления.СостоянияСообщенияSMS.ОшибкаПолученияСтатусаУПровайдера; + КонецЕсли; + +КонецФункции + +// Выполняет отправку сообщений SMS по переданному документу Сообщение SMS +Функция ОтправкаSMSПоДокументу(Документ) Экспорт + + Если Не ОтправкаSMS.НастройкаОтправкиSMSВыполнена() Тогда + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Не выполнены настройки отправки SMS.'"),,"Объект"); + ВзаимодействияКлиентСервер.УстановитьСостояниеИсходящееДокументСообщениеSMS(Документ); + Возврат 0; + КонецЕсли; + + МассивНомеров = Документ.Адресаты.Выгрузить(,"НомерДляОтправки").ВыгрузитьКолонку("НомерДляОтправки"); + РезультатОтправки = ОтправкаSMS.ОтправитьSMS(МассивНомеров, Документ.ТекстСообщения," " , Документ.ОтправлятьВТранслите); + + ОтразитьРезультатыОтправкиSMSВДокументе(Документ, РезультатОтправки); + + Если Не ПустаяСтрока(РезультатОтправки.ОписаниеОшибки) Тогда + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(РезультатОтправки.ОписаниеОшибки,,"Документ"); + КонецЕсли; + + Возврат РезультатОтправки.ОтправленныеСообщения.Количество(); + +КонецФункции + +//Выполняет процедуру отправки сообщений SMS. +Процедура ОтправкаSMS() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ЗаписьЖурналаРегистрации(УправлениеЭлектроннойПочтой.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, , , + НСтр("ru = 'Начата регламентная отправка сообщений SMS'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); + + Если Не ОтправкаSMS.НастройкаОтправкиSMSВыполнена() Тогда + ЗаписьЖурналаРегистрации(УправлениеЭлектроннойПочтой.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка, , , + НСтр("ru = 'Не выполнены настройки отправки SMS.'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); + Возврат; + КонецЕсли; + + Если Не ОтправкаSMS.НастройкаОтправкиSMSВыполнена() Тогда + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Не выполнены настройки отправки SMS.'"),,"Объект"); + Возврат; + КонецЕсли; + + ТаблицаАдресатовСообщения = Новый ТаблицаЗначений; + ТаблицаАдресатовСообщения.Колонки.Добавить("НомерСтроки"); + ТаблицаАдресатовСообщения.Колонки.Добавить("НомерДляОтправки"); + ТаблицаАдресатовСообщения.Колонки.Добавить("КакСвязаться"); + + Запрос = Новый Запрос; + Запрос.Текст = " + |ВЫБРАТЬ + | СообщениеSMS.Ссылка КАК Ссылка, + | СообщениеSMS.ТекстСообщения, + | СообщениеSMS.ОтправлятьВТранслите, + | СообщениеSMSАдресаты.НомерСтроки, + | СообщениеSMSАдресаты.НомерДляОтправки, + | СообщениеSMSАдресаты.КакСвязаться + |ИЗ + | Документ.СообщениеSMS.Адресаты КАК СообщениеSMSАдресаты + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СообщениеSMS КАК СообщениеSMS + | ПО СообщениеSMSАдресаты.Ссылка = СообщениеSMS.Ссылка + |ГДЕ + | СообщениеSMSАдресаты.СостояниеСообщения = ЗНАЧЕНИЕ(Перечисление.СостоянияСообщенияSMS.Исходящее) + | И НЕ СообщениеSMS.ПометкаУдаления + | И СообщениеSMSАдресаты.ИдентификаторСообщения = """" + |ИТОГИ ПО + | Ссылка"; + + ВыборкаДокументы = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + + Пока ВыборкаДокументы.Следующий() Цикл + + ТаблицаАдресатовСообщения.Очистить(); + + ВыборкаАдресаты = ВыборкаДокументы.Выбрать(); + Пока ВыборкаАдресаты.Следующий() Цикл + + ТекстСообщения = ВыборкаАдресаты.ТекстСообщения; + ОтправлятьВТранслите = ВыборкаАдресаты.ОтправлятьВТранслите; + + НоваяСтрока = ТаблицаАдресатовСообщения.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, ВыборкаАдресаты); + + КонецЦикла; + + Если ТаблицаАдресатовСообщения.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + МассивНомеров = ТаблицаАдресатовСообщения.ВыгрузитьКолонку("НомерДляОтправки"); + РезультатОтправки = ОтправкаSMS.ОтправитьSMS(МассивНомеров, ТекстСообщения, "", ОтправлятьВТранслите); + + Если РезультатОтправки.ОтправленныеСообщения.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + ДокументОбъект = ВыборкаДокументы.Ссылка.ПолучитьОбъект(); + ОтразитьРезультатыОтправкиSMSВДокументе(ДокументОбъект, РезультатОтправки); + ДокументОбъект.Записать(); + + КонецЦикла; + + ЗаписьЖурналаРегистрации(УправлениеЭлектроннойПочтой.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, , , + НСтр("ru = 'Закончена регламентная отправка сообщений SMS'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); + +КонецПроцедуры + +//Выполняет процедуру обновления статусов доставки SMS. +Процедура ОбновлениеСтатусовДоставкиSMS() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ЗаписьЖурналаРегистрации(УправлениеЭлектроннойПочтой.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, , , + НСтр("ru = 'Начато регламентное обновление состояний сообщений SMS'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); + + Если Не ОтправкаSMS.НастройкаОтправкиSMSВыполнена() Тогда + ЗаписьЖурналаРегистрации(УправлениеЭлектроннойПочтой.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка, , , + НСтр("ru = 'Не выполнены настройки отправки SMS.'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); + Возврат; + КонецЕсли; + + ТаблицаИзменившихсяСтатусов = Новый ТаблицаЗначений; + ТаблицаИзменившихсяСтатусов.Колонки.Добавить("НомерСтроки"); + ТаблицаИзменившихсяСтатусов.Колонки.Добавить("СостояниеСообщения"); + + Запрос = Новый Запрос; + Запрос.Текст = " + |ВЫБРАТЬ + | СообщениеSMSАдресаты.Ссылка КАК Ссылка, + | СообщениеSMSАдресаты.НомерСтроки, + | СообщениеSMSАдресаты.ИдентификаторСообщения, + | СообщениеSMSАдресаты.СостояниеСообщения + |ИЗ + | Документ.СообщениеSMS.Адресаты КАК СообщениеSMSАдресаты + |ГДЕ + | СообщениеSMSАдресаты.ИдентификаторСообщения <> """" + | И (СообщениеSMSАдресаты.СостояниеСообщения = ЗНАЧЕНИЕ(Перечисление.СостоянияСообщенияSMS.ОтправляетсяПровайдером) + | ИЛИ СообщениеSMSАдресаты.СостояниеСообщения = ЗНАЧЕНИЕ(Перечисление.СостоянияСообщенияSMS.ОтправленоПровайдером) + | ИЛИ СообщениеSMSАдресаты.СостояниеСообщения = ЗНАЧЕНИЕ(Перечисление.СостоянияСообщенияSMS.ОшибкаПолученияСтатусаУПровайдера)) + | И НЕ СообщениеSMSАдресаты.Ссылка.ПометкаУдаления + |ИТОГИ ПО + | Ссылка"; + + ВыборкаДокументы = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + + Пока ВыборкаДокументы.Следующий() Цикл + + ТаблицаИзменившихсяСтатусов.Очистить(); + + ВыборкаИдентификаторы = ВыборкаДокументы.Выбрать(); + Пока ВыборкаИдентификаторы.Следующий() Цикл + + СостояниеСообщения = СостояниеСообщенияSMSСогласноСтатусуДоставки(ОтправкаSMS.СтатусДоставки(ВыборкаИдентификаторы.ИдентификаторСообщения)); + + Если СостояниеСообщения <> ВыборкаИдентификаторы.СостояниеСообщения Тогда + НоваяСтрока = ТаблицаИзменившихсяСтатусов.Добавить(); + НоваяСтрока.НомерСтроки = ВыборкаИдентификаторы.НомерСтроки; + НоваяСтрока.СостояниеСообщения = СостояниеСообщения; + КонецЕсли; + + Если ТаблицаИзменившихсяСтатусов.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + Для Каждого ИзменившийсяСтатус ИЗ ТаблицаИзменившихсяСтатусов Цикл + ДокументОбъект = ВыборкаДокументы.Ссылка.ПолучитьОбъект(); + ДокументОбъект.Адресаты[ИзменившийсяСтатус.НомерСтроки - 1].СостояниеСообщения = ИзменившийсяСтатус.СостояниеСообщения; + КонецЦикла; + + ДокументОбъект.Состояние = СостояниеДокументаСообщениеSMS(ДокументОбъект); + + ДокументОбъект.Записать(); + + КонецЦикла; + + КонецЦикла; + + ЗаписьЖурналаРегистрации(УправлениеЭлектроннойПочтой.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация, , , + НСтр("ru = 'Закончено регламентное обновление состояний сообщений SMS'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); + +КонецПроцедуры + +// Устанавливает состояние документа "Сообщение SMS" в зависимости от состояний отдельных сообщений различным контактам. +// +// Параметры +// ДокументОбъект - ДокументОбъект.СообщениеSMS - документ, для которого определяется состояние. +// РезультатОтправки - Структура - результат отправки сообщения SMS +// +Процедура ОтразитьРезультатыОтправкиSMSВДокументе(ДокументОбъект, РезультатОтправки) Экспорт + + Для Каждого ОтправленноеСообщение Из РезультатОтправки.ОтправленныеСообщения Цикл + Для Каждого НайденнаяСтрока Из ДокументОбъект.Адресаты.НайтиСтроки(Новый Структура("НомерДляОтправки",ОтправленноеСообщение.НомерПолучателя)) Цикл + НайденнаяСтрока.ИдентификаторСообщения = ОтправленноеСообщение.ИдентификаторСообщения; + НайденнаяСтрока.СостояниеСообщения = Перечисления.СостоянияСообщенияSMS.ОтправляетсяПровайдером; + КонецЦикла; + КонецЦикла; + + ДокументОбъект.Состояние = СостояниеДокументаСообщениеSMS(ДокументОбъект); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////// // Работа с папками электронных писем @@ -5018,4 +5391,47 @@ КонецЕсли; КонецЕсли; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +/////////////////////////////////////////////////////////////////////////////////// +// Прочее + +// Получает в привелигированном режиме значение константы "Адрес публикации информационной базы в интернете" +// +// Возвращаемое значение: +// Строка - значение константы +// +Функция АдресПубликацииИнформационнойБазыВИнтернете() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Возврат Константы.АдресПубликацииИнформационнойБазыВИнтернете.Получить(); + +КонецФункции + +//Процедура заполняет список выбора времени +//Параметры: +// ПолеВводаФормы - элемент-владелец списка, +// Интервал - интервал, с которым необходимо заполнить список, по умолчанию час +Процедура ЗаполнитьСписокВыбораВремени(ПолеВводаФормы, Интервал = 3600) Экспорт + + НачалоРабочегоДня = '00010101000000'; + ОкончаниеРабочегоДня = '00010101235959'; + + СписокВремен = ПолеВводаФормы.СписокВыбора; + СписокВремен.Очистить(); + + ВремяСписка = НачалоРабочегоДня; + Пока НачалоЧаса(ВремяСписка) <= НачалоЧаса(ОкончаниеРабочегоДня) Цикл + Если НЕ ЗначениеЗаполнено(ВремяСписка) Тогда + ПредставлениеВремени = "00:00"; + Иначе + ПредставлениеВремени = Формат(ВремяСписка,"ДФ=ЧЧ:мм"); + КонецЕсли; + + СписокВремен.Добавить(ВремяСписка, ПредставлениеВремени); + + ВремяСписка = ВремяСписка + Интервал; + КонецЦикла; + +КонецПроцедуры diff --git a/SSL/src/CommonModules/ВзаимодействияВызовСервера/Module.bsl b/SSL/src/CommonModules/ВзаимодействияВызовСервера/Module.bsl index 1e4ea2859..920ad54ab 100644 --- a/SSL/src/CommonModules/ВзаимодействияВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/ВзаимодействияВызовСервера/Module.bsl @@ -56,7 +56,7 @@ Для Каждого СтрокаТаблицы Из Выборка.КонтактнаяИнформация.Выгрузить() Цикл Если СтрокаТаблицы.Тип <> Перечисления.ТипыКонтактнойИнформации.Другое Тогда - СтрокаКИ = СтрокаКИ + ?(ПустаяСтрока(СтрокаКИ), "", ", ") + СтрокаТаблицы.Представление; + СтрокаКИ = СтрокаКИ + ?(ПустаяСтрока(СтрокаКИ), "", "; ") + СтрокаТаблицы.Представление; КонецЕсли; КонецЦикла; diff --git a/SSL/src/CommonModules/ВзаимодействияКлиент/Module.bsl b/SSL/src/CommonModules/ВзаимодействияКлиент/Module.bsl index 963773f01..e348a6fb5 100644 --- a/SSL/src/CommonModules/ВзаимодействияКлиент/Module.bsl +++ b/SSL/src/CommonModules/ВзаимодействияКлиент/Module.bsl @@ -1,3 +1,71 @@ + +//////////////////////////////////////////////////////////////////////////////// +// Подсистема "Взаимодействия" +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАМНЫЙ ИНТЕРФЕЙС + +//Открывает форму нового документа "Электронное письмо исходящее" +//с переданными в процедуру параметрами +// +// Параметры +// Отправитель - СправочникСсылка.УчетныеЗаписи - учетная запись, с которой выполняется отправка +// Получатель - Строка, СписокЗначений, Массив - список получателей письма +// Тема - Строка - тема письма +// Текст - Строка - текст письма +// СписокФайлов - Массив - вложения письма +// Предмет - Ссылка - предмет письма +// +Процедура ОткрытьФормуОтправкиПочтовогоСообщения(знач Отправитель = Неопределено, + знач Получатель = Неопределено, + знач Тема = "", + знач Текст = "", + знач СписокФайлов = Неопределено, + знач Предмет = Неопределено) Экспорт + + ПараметрыПисьма = Новый Структура; + + ПараметрыПисьма.Вставить("УчетнаяЗапись", Отправитель); + ПараметрыПисьма.Вставить("Кому", Получатель); + ПараметрыПисьма.Вставить("Тема", Тема); + ПараметрыПисьма.Вставить("Тело", Текст); + ПараметрыПисьма.Вставить("Вложения", СписокФайлов); + ПараметрыПисьма.Вставить("Предмет", Предмет); + + ОткрытьФорму("Документ.ЭлектронноеПисьмоИсходящее.Форма.ФормаДокумента", ПараметрыПисьма); + +КонецПроцедуры + +//Открывает форму нового документа "Сообщение SMS" +//с переданными в процедуру параметрами +// +// Параметры +// Адресаты - Строка, СписокЗначений, Массив - список получателей письма +// Текст - Строка - текст письма +// Предмет - Ссылка - предмет письма +// ОтправлятьВТранслите - Булево - признак того, что сообщение при отправке должно быть преобразовано в латинские символы +// +Процедура ОткрытьФормуОтправкиSMS(знач Адресаты = Неопределено, + знач Текст = "", + знач Предмет = Неопределено, + знач ОтправлятьВТранслите = Ложь) Экспорт + + ПараметрыСообщения = Новый Структура; + + ПараметрыСообщения.Вставить("Адресаты", Адресаты); + ПараметрыСообщения.Вставить("Текст", Текст); + ПараметрыСообщения.Вставить("Предмет", Предмет); + ПараметрыСообщения.Вставить("ОтправлятьВТранслите", ОтправлятьВТранслите); + + ОткрытьФорму("Документ.СообщениеSMS.Форма.ФормаДокумента", ПараметрыСообщения); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + //Создает взаимодействие или предмет взаимодействия //Параметры: // ИмяФормыОбъекта - имя формы элемента создаваемого объекта, @@ -7,39 +75,33 @@ Процедура СоздатьВзаимодействиеИлиПредмет(ИмяФормыОбъекта, Основание, Источник) Экспорт ПараметрыОткрытияФормы = Новый Структура("Основание", Основание); - Если (ТипЗнч(Основание) = Тип("ДокументСсылка.Встреча") ИЛИ ТипЗнч(Основание) = Тип("ДокументСсылка.ЗапланированноеВзаимодействие")) - И Источник.Элементы.Участники.ТекущиеДанные <> Неопределено Тогда + Если (ТипЗнч(Основание) = Тип("ДокументСсылка.Встреча") + ИЛИ ТипЗнч(Основание) = Тип("ДокументСсылка.ЗапланированноеВзаимодействие")) + И Источник.Элементы.Найти("Участники") <> Неопределено + И Источник.Элементы.Участники.ТекущиеДанные <> Неопределено Тогда + ДанныеУчастникаИсточник = Источник.Элементы.Участники.ТекущиеДанные; ПараметрыОткрытияФормы.Вставить("ДанныеУчастника",Новый Структура("Контакт,КакСвязаться,Представление", ДанныеУчастникаИсточник.Контакт, ДанныеУчастникаИсточник.КакСвязаться, ДанныеУчастникаИсточник.ПредставлениеКонтакта)); + + ИначеЕсли (ТипЗнч(Основание) = Тип("ДокументСсылка.СообщениеSMS") + И Источник.Элементы.Адресаты.ТекущиеДанные <> Неопределено) + И Источник.Элементы.Найти("Адресаты") <> Неопределено Тогда + + ДанныеУчастникаИсточник = Источник.Элементы.Адресаты.ТекущиеДанные; + ПараметрыОткрытияФормы.Вставить("ДанныеУчастника",Новый Структура("Контакт,КакСвязаться,Представление", + ДанныеУчастникаИсточник.Контакт, + ДанныеУчастникаИсточник.КакСвязаться, + ДанныеУчастникаИсточник.ПредставлениеКонтакта)); + КонецЕсли; - ОткрытьФормуМодально(ИмяФормыОбъекта, ПараметрыОткрытияФормы, Источник); + ОткрытьФорму(ИмяФормыОбъекта, ПараметрыОткрытияФормы, Источник); КонецПроцедуры -//Открывает форму нового документа "Электронное письмо исходящее" -//с переданными в процедуру параметрами -Процедура ОткрытьФормуОтправкиПочтовогоСообщения(знач Отправитель = Неопределено, - знач Получатель = Неопределено, - знач Тема = "", - знач Текст = "", - знач СписокФайлов = Неопределено) Экспорт - - ПараметрыПисьма = Новый Структура; - - ПараметрыПисьма.Вставить("УчетнаяЗапись", Отправитель); - ПараметрыПисьма.Вставить("Кому", Получатель); - ПараметрыПисьма.Вставить("Тема", Тема); - ПараметрыПисьма.Вставить("Тело", Текст); - ПараметрыПисьма.Вставить("Вложения", СписокФайлов); - - ОткрытьФорму("Документ.ЭлектронноеПисьмоИсходящее.Форма.ФормаДокумента", ПараметрыПисьма); - -КонецПроцедуры - //Запрашивает подтверждение и обновляет индекс полнотекстового поиска данных // Процедура КомандаОбновитьИндексППДВыполнить(ИнформацияОбАктуальностиИндексаППД,ППДВключен,ИндексАктуален) Экспорт @@ -76,63 +138,14 @@ ПараметрФормы = Новый Структура( "Основание", Новый Структура("Наименование, Адрес, Объект", - Описание, Адрес, Основание) - ); + Описание, Адрес, Основание)); Если НЕ ВзаимодействияКлиентПереопределяемый.СоздатьКонтактНестандартнаяФорма(ТипКонтакта.Значение,ПараметрФормы) Тогда - ОткрытьФормуМодально("Справочник." + ТипКонтакта.Значение + ".ФормаОбъекта", ПараметрФормы); + ОткрытьФорму("Справочник." + ТипКонтакта.Значение + ".ФормаОбъекта", ПараметрФормы); КонецЕсли; КонецЕсли; КонецПроцедуры -//Процедура позволяет выбрать время из выпадающего списка -//Параметры: -// Форма - форма-владелец списка, -// ПолеВводаФормы - элемент-владелец списка, -// ТекущееЗначение - значение, на которое будет спозиционирован выпадающий список, -// Интервал - интервал, с которым необходимо заполнить список, по умолчанию час -// -Функция ВыбратьВремя(Форма, ПолеВводаФормы, Знач ТекущееЗначение, Интервал = 3600) Экспорт - - НачалоРабочегоДня = '00010101000000'; - ОкончаниеРабочегоДня = '00010101235959'; - - СписокВремен = Новый СписокЗначений; - НачалоРабочегоДня = НачалоЧаса(НачалоДня(ТекущееЗначение) + - Час(НачалоРабочегоДня) * 3600 + - Минута(НачалоРабочегоДня)*60); - ОкончаниеРабочегоДня = КонецЧаса(НачалоДня(ТекущееЗначение) + - Час(ОкончаниеРабочегоДня) * 3600 + - Минута(ОкончаниеРабочегоДня)*60); - - ВремяСписка = НачалоРабочегоДня; - Пока НачалоЧаса(ВремяСписка) <= НачалоЧаса(ОкончаниеРабочегоДня) Цикл - Если НЕ ЗначениеЗаполнено(ВремяСписка) Тогда - ПредставлениеВремени = "00:00"; - Иначе - ПредставлениеВремени = Формат(ВремяСписка,"ДФ=ЧЧ:мм"); - КонецЕсли; - - СписокВремен.Добавить(ВремяСписка, ПредставлениеВремени); - - ВремяСписка = ВремяСписка + Интервал; - КонецЦикла; - - НачальноеЗначение = СписокВремен.НайтиПоЗначению(ТекущееЗначение); - Если НачальноеЗначение = Неопределено Тогда - ВыбранноеВремя = Форма.ВыбратьИзСписка(СписокВремен, ПолеВводаФормы); - Иначе - ВыбранноеВремя = Форма.ВыбратьИзСписка(СписокВремен, ПолеВводаФормы, НачальноеЗначение); - КонецЕсли; - - Если ВыбранноеВремя = Неопределено Тогда - Возврат Неопределено; - КонецЕсли; - - Возврат ВыбранноеВремя.Значение; - -КонецФункции - // Обработчик для события формы ОбработкаОповещения. Вызывается для взаимодействия. Процедура ОтработатьОповещение(Форма,ИмяСобытия, Параметр, Источник) Экспорт @@ -159,12 +172,131 @@ Если ПустаяСтрока(Форма.Элементы.Участники.ТекущиеДанные.ПредставлениеКонтакта) Тогда Форма.Элементы.Участники.ТекущиеДанные.ПредставлениеКонтакта = Параметр.Наименование; КонецЕсли; + ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.СообщениеSMS") Тогда + Форма.Элементы.Адресаты.ТекущиеДанные.Контакт = Параметр.Ссылка; + Если ПустаяСтрока(Форма.Элементы.Адресаты.ТекущиеДанные.ПредставлениеКонтакта) Тогда + Форма.Элементы.Адресаты.ТекущиеДанные.ПредставлениеКонтакта = Параметр.Наименование; + КонецЕсли; КонецЕсли; Форма.Элементы.СоздатьКонтакт.Доступность = Ложь; Форма.Модифицированность = Истина; КонецЕсли; + + ИначеЕсли ИмяСобытия = "ВыбранКонтакт" Тогда + + Если Форма.ИмяФормы = "Документ.ЭлектронноеПисьмоИсходящее.Форма.ФормаДокумента" + ИЛИ Форма.ИмяФормы = "Документ.ЭлектронноеПисьмоВходящее.Форма.ФормаДокумента" Тогда + Возврат; + КонецЕсли; + + БылИзмененКонтакт = (Параметр.Контакт <> Параметр.ВыбранныйКонтакт) И ЗначениеЗаполнено(Параметр.Контакт); + Контакт = Параметр.ВыбранныйКонтакт; + Если Параметр.ТолькоEmail Тогда + ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты"); + ИначеЕсли Параметр.ТолькоТелефон Тогда + ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон"); + Иначе + ТипКонтактнойИнформации = Неопределено; + КонецЕсли; + + Если БылИзмененКонтакт Тогда + + Если Параметр.ДляФормыУточненияКонтактов Тогда + //Возврат БылИзмененКонтакт; + Иначе + ВзаимодействияВызовСервера.ПолучитьПредставлениеИВсюКонтактнуюИнформациюКонтакта( + Контакт, Параметр.Представление, Параметр.Адрес, ТипКонтактнойИнформации); + КонецЕсли; + + Адрес = Параметр.Адрес; + Представление = Параметр.Представление; + + ИначеЕсли Параметр.ЗаменятьПустыеАдресИПредставление И (ПустаяСтрока(Параметр.Адрес) ИЛИ ПустаяСтрока(Параметр.Представление)) Тогда + + нПредставление = ""; + нАдрес = ""; + ВзаимодействияВызовСервера.ПолучитьПредставлениеИВсюКонтактнуюИнформациюКонтакта( + Контакт, нПредставление, нАдрес, ТипКонтактнойИнформации); + + Если ПустаяСтрока(Параметр.Представление) Тогда + Представление = нПредставление; + КонецЕсли; + + Если ПустаяСтрока(Параметр.Адрес) Тогда + Адрес = нАдрес; + КонецЕсли; + + Иначе + + Адрес = Параметр.Адрес; + Представление = Параметр.Представление; + + КонецЕсли; + + Если Форма.ИмяФормы = "ОбщаяФорма.АдреснаяКнига" Тогда + + ТекущиеДанные = Форма.Элементы.ПолучателиПисьма.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные.Контакт = Контакт; + ТекущиеДанные.Адрес = Адрес; + ТекущиеДанные.Представление = Представление; + + Форма.Модифицированность = Истина; + + ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.СообщениеSMS") Тогда + ТекущиеДанные = Форма.Элементы.Адресаты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные.Контакт = Контакт; + ТекущиеДанные.КакСвязаться = Адрес; + ТекущиеДанные.ПредставлениеКонтакта = Представление; + + ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Форма.Объект,Форма,"СообщениеSMS"); + + ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.ЗапланированноеВзаимодействие") Тогда + ТекущиеДанные = Форма.Элементы.Участники.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные.Контакт = Контакт; + ТекущиеДанные.КакСвязаться = Адрес; + ТекущиеДанные.ПредставлениеКонтакта = Представление; + + ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Форма.Объект,Форма,"ЗапланированноеВзаимодействие"); + Форма.Модифицированность = Истина; + + ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.Встреча") Тогда + ТекущиеДанные = Форма.Элементы.Участники.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ТекущиеДанные.Контакт = Контакт; + ТекущиеДанные.КакСвязаться = Адрес; + ТекущиеДанные.ПредставлениеКонтакта = Представление; + + ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Форма.Объект,Форма,"ЗапланированноеВзаимодействие"); + Форма.Модифицированность = Истина; + + ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.ТелефонныйЗвонок") Тогда + + Форма.Объект.АбонентКонтакт = Контакт; + Форма.Объект.АбонентКакСвязаться = Адрес; + Форма.Объект.АбонентПредставление = Представление; + + ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Форма.Объект,Форма,"ТелефонныйЗвонок"); + Форма.Модифицированность = Истина; + + КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -192,57 +324,25 @@ // Адрес - Строка - адрес контакта. // Представление - Строка - представление контакта. // Контакт - Ссылка - контакт. -// ТолькоEmail - Булево - признак того, что при выборе контакта нас интересует только Email контакта. -// ТолькоТелефон - Булево - признак того, что при выборе контакта нас интересует только телефон контакта. -// ЗаменятьПустыеАдресИПредставление - Булево - признак того, необходимо ли заменять пустые адрес и представление контакта, -// если был выбран тот же контакт. +// Параметры - Структура - структура параметров открытия формы, состоит . +// ТолькоEmail, ТолькоТелефон, ЗаменятьПустыеАдресИПредставление, ДляФормыУточненияКонтактов // //Возвращаемое значение: // Булево - истина, если выбор был сделан, ложь в обратном случае. // -Функция ВыбратьКонтакт(Предмет, Адрес, Представление, Контакт, ТолькоEmail, ТолькоТелефон, ЗаменятьПустыеАдресИПредставление,ДляФормыУточненияКонтактов = Ложь) Экспорт +Функция ВыбратьКонтакт(Предмет, Адрес, Представление, Контакт, Параметры) Экспорт ПараметрыОткрытия = Новый Структура; ПараметрыОткрытия.Вставить("Предмет", Предмет); ПараметрыОткрытия.Вставить("Адрес", Адрес); ПараметрыОткрытия.Вставить("Представление", Представление); ПараметрыОткрытия.Вставить("Контакт", Контакт); - ПараметрыОткрытия.Вставить("ТолькоEmail", ТолькоEmail); - ПараметрыОткрытия.Вставить("ТолькоТелефон", ТолькоТелефон); + ПараметрыОткрытия.Вставить("ТолькоEmail", Параметры.ТолькоEmail); + ПараметрыОткрытия.Вставить("ТолькоТелефон", Параметры.ТолькоТелефон); + ПараметрыОткрытия.Вставить("ЗаменятьПустыеАдресИПредставление", Параметры.ЗаменятьПустыеАдресИПредставление); + ПараметрыОткрытия.Вставить("ДляФормыУточненияКонтактов", Параметры.ДляФормыУточненияКонтактов); - Результат = ОткрытьФормуМодально("ОбщаяФорма.ВыборКонтакта", ПараметрыОткрытия); - Если (ТипЗнч(Результат) = Тип("КодВозвратаДиалога")) ИЛИ (Результат = Неопределено) Тогда - Возврат Ложь; - КонецЕсли; - - БылИзмененКонтакт = (Контакт <> Результат) И ЗначениеЗаполнено(Контакт); - Контакт = Результат; - - Если БылИзмененКонтакт Тогда - - Если ДляФормыУточненияКонтактов Тогда - Возврат БылИзмененКонтакт; - Иначе - ВзаимодействияВызовСервера.ПолучитьПредставлениеИВсюКонтактнуюИнформациюКонтакта(Контакт, Представление, Адрес); - КонецЕсли; - - ИначеЕсли ЗаменятьПустыеАдресИПредставление И (ПустаяСтрока(Адрес) ИЛИ ПустаяСтрока(Представление)) Тогда - - нПредставление = ""; - нАдрес = ""; - ВзаимодействияВызовСервера.ПолучитьПредставлениеИВсюКонтактнуюИнформациюКонтакта(Контакт, нПредставление, нАдрес); - - Если ПустаяСтрока(Представление) Тогда - Представление = нПредставление; - КонецЕсли; - - Если ПустаяСтрока(Адрес) Тогда - Адрес = нАдрес; - КонецЕсли; - - КонецЕсли; - - Возврат Истина; + ОткрытьФорму("ОбщаяФорма.ВыборКонтакта", ПараметрыОткрытия); КонецФункции @@ -280,8 +380,13 @@ МассивОписанияКонтактов = ВзаимодействияКлиентСервер.ПолучитьМассивОписанияВозможныхКонтактов(); Для каждого ЭлементМассиваОписания Из МассивОписанияКонтактов Цикл - Если ЭлементМассиваОписания.ИмяВладельца = ИмяТаблицыБезПрефикса Тогда - Форма["Список_" + ЭлементМассиваОписания.Имя].Отбор.Элементы[0].ПравоеЗначение = ЗначениеОтбора; + Если ЭлементМассиваОписания.ИмяВладельца = ИмяТаблицыБезПрефикса Тогда + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + КоллекцияОтборов = Форма["Список_" + ЭлементМассиваОписания.Имя].КомпоновщикНастроек.ФиксированныеНастройки.Отбор; + Иначе + КоллекцияОтборов = Форма["Список_" + ЭлементМассиваОписания.Имя].Отбор; + КонецЕсли; + КоллекцияОтборов.Элементы[0].ПравоеЗначение = ЗначениеОтбора; КонецЕсли; КонецЦикла; diff --git a/SSL/src/CommonModules/ВзаимодействияКлиентСервер/Module.bsl b/SSL/src/CommonModules/ВзаимодействияКлиентСервер/Module.bsl index ea38ce564..1fc73da42 100644 --- a/SSL/src/CommonModules/ВзаимодействияКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ВзаимодействияКлиентСервер/Module.bsl @@ -40,7 +40,8 @@ ИЛИ ТипЗнч(ОбъектСсылка) = Тип("ДокументСсылка.ЗапланированноеВзаимодействие") ИЛИ ТипЗнч(ОбъектСсылка) = Тип("ДокументСсылка.ТелефонныйЗвонок") ИЛИ ТипЗнч(ОбъектСсылка) = Тип("ДокументСсылка.ЭлектронноеПисьмоВходящее") - ИЛИ ТипЗнч(ОбъектСсылка) = Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее"); + ИЛИ ТипЗнч(ОбъектСсылка) = Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее") + ИЛИ ТипЗнч(ОбъектСсылка) = Тип("ДокументСсылка.СообщениеSMS"); КонецФункции @@ -58,7 +59,8 @@ ИЛИ ТипЗнч(ОбъектСсылка) = Тип("СправочникСсылка.ЗапланированноеВзаимодействиеПрисоединенныеФайлы") ИЛИ ТипЗнч(ОбъектСсылка) = Тип("СправочникСсылка.ТелефонныйЗвонокПрисоединенныеФайлы") ИЛИ ТипЗнч(ОбъектСсылка) = Тип("СправочникСсылка.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы") - ИЛИ ТипЗнч(ОбъектСсылка) = Тип("СправочникСсылка.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы"); + ИЛИ ТипЗнч(ОбъектСсылка) = Тип("СправочникСсылка.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы") + ИЛИ ТипЗнч(ОбъектСсылка) = Тип("СправочникСсылка.СообщениеSMSПрисоединенныеФайлы"); КонецФункции @@ -107,6 +109,183 @@ //////////////////////////////////////////////////////////////////////////////// // Прочее +// Устанавливает состояние "Исходящее" для документа сообщение SMS и всех входящих в него сообщений +// +// Параметры +// Объект - Документ.СообщениеSMS - документ, для которого устанавливается состояние +// +Процедура УстановитьСостояниеИсходящееДокументСообщениеSMS(Объект) Экспорт + + Для каждого Адресат Из Объект.Адресаты Цикл + + Адресат.СостояниеСообщения = ПредопределенноеЗначение("Перечисление.СостоянияСообщенияSMS.Исходящее"); + + КонецЦикла; + + Объект.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияДокументаСообщениеSMS.Исходящее"); + +КонецПроцедуры + +// Определяет, корректно ли введен номер телефона для сообщения SMS +// +// Параметры +// СтруктураПолей - Структура - структура описывающая контактную информацию типа Телефон или МобильныйТелефон +// +// Возвращаемое значение: +// Булево - Истина, если номер введен правильно, Ложь в обратном случае +// +Функция КорректноВведенНомерТелефона(СтруктураПолей) Экспорт + + Если НЕ ПустаяСтрока(СтруктураПолей.КодСтраны) Тогда + КодСтраны = СокрЛП(КодСтраны); + Если ЛЕВ(КодСтраны,1)= "+" Тогда + КодСтраны = Прав(КодСтраны, СтрДлина(СтруктураПолей.КодСтраны)-1); + КонецЕсли; + Если НЕ СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(КодСтраны) Тогда + Возврат Ложь; + КонецЕсли; + Иначе + Возврат Ложь; + КонецЕсли; + + Если НЕ ПустаяСтрока(СтруктураПолей.КодГорода) Тогда + Если НЕ СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтруктураПолей.КодГорода) Тогда + Возврат Ложь; + КонецЕсли; + Иначе + Возврат Ложь; + КонецЕсли; + + Если НЕ ПустаяСтрока(СтруктураПолей.НомерТелефона) Тогда + Если НЕ СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СтруктураПолей.НомерТелефона) Тогда + Возврат Ложь; + КонецЕсли; + Иначе + Возврат Ложь; + КонецЕсли; + + Если СтрДлина(СтруктураПолей.КодГорода) + СтрДлина(СтруктураПолей.НомерТелефона) <> 10 Тогда + Возврат Ложь; + КонецЕсли; + + Возврат Истина; + +КонецФункции + +// Формирует структуру полей контактной информации типа Телефон или МобильныйТелефон по представлению телефона +// +// Параметры +// Представление - Строка - строковая информация с номером телефона +// +// Возвращаемое значение: +// Структура - сформированная структура +// +Функция СтруктураПолейПоПредставлениюТелефона(Представление) Экспорт + + текСтр = СокрЛП(Представление); + + // вырежем добавочный номер с комментарием + ПозДоб = Найти(ВРЕГ(текСтр), "ДОБ."); + Если ПозДоб <> 0 Тогда + ДобавочныйСКомментарием = СокрЛП(Сред(текСтр, ПозДоб+4)); + + текСтр = СокрЛП(Лев(текСтр, ПозДоб-1)); + + Если Прав(текСтр, 1) = "," Тогда + текСтр = Лев(текСтр, СтрДлина(текСтр)-1); + КонецЕсли; + + ПозДоб = Найти(ВРЕГ(ДобавочныйСКомментарием), ", "); + + Если ПозДоб <> 0 Тогда + Добавочный = СокрЛП(Лев(ДобавочныйСКомментарием, ПозДоб-1)); + Комментарий = СокрЛП(Сред(ДобавочныйСКомментарием, ПозДоб+2)); + Иначе + Добавочный = ДобавочныйСКомментарием; + КонецЕсли; + + КонецЕсли; + + // вырежем код города + Поз = Найти(текСтр, "("); + Если Поз <> 0 Тогда + КодСтраны = СокрЛП(Лев(текСтр, Поз-1)); + + текСтр = СокрЛП(Сред(текСтр, Поз+1)); + Поз = Найти(текСтр, ")"); + + Если Поз <> 0 Тогда + КодГорода = СокрЛП(Лев(текСтр, Поз-1)); + текСтр = СокрЛП(Сред(текСтр, Поз+1)); + КонецЕсли; + КонецЕсли; + + Поз = Найти(текСтр, ", "); + // Если добавочного номера нет - ориентируемся по номеру телефона и комментарию + Если ПозДоб = 0 И Поз <> 0 Тогда + // вырежем комментарий + НомерТелефона = СокрЛП(Лев(текСтр, Поз-1)); + Комментарий = СокрЛП(Сред(текСтр, Поз+2)); + Иначе + // все оставшееся это номер + НомерТелефона = текСтр; + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("КодСтраны", КодСтраны); + Результат.Вставить("КодГорода", КодГорода); + Результат.Вставить("НомерТелефона", НомерТелефона); + Результат.Вставить("Добавочный", Добавочный); + Результат.Вставить("Комментарий", Комментарий); + + Возврат Результат; + +КонецФункции + +// Формирует тему по тексту сообщения на основании первых трех слов +// +// Параметры +// ТекстСообщения - Строка - текст сообщения, на основании которого формируется тема +// +// Возвращаемое значение: +// Строка - сформированная тема сообщения +// +Функция ТемаПоТекстуСообщения(ТекстСообщения) Экспорт + + МассивСтрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекстСообщения," "); + Тема = ""; + Для Инд = 0 По МассивСтрок.Количество() - 1 Цикл + Если Инд > 2 Тогда + Прервать; + КонецЕсли; + Тема = Тема + МассивСтрок[Инд] + " "; + КонецЦикла; + + Возврат Лев(Тема, СтрДлина(Тема) - 1); + +КонецФункции + +// Формирует информационную строку о количестве сообщений и оставшихся символах +// +// Параметры +// ОтправлятьВТранслите - Булево - признак, того что сообщение при отправке будет автоматически +// преобразовано в латинские символы +// ТекстСообщения - Строка - текст сообщения, для которого формируется сообщение +// +// Возвращаемое значение: +// Строка - сформированное информационное сообщение +// +Функция СформироватьИнформационнуюНадписьКоличествоСимволовСообщений(ОтправлятьВТранслите, ТекстСообщения) Экспорт + + СимволовВСообщении = ?(ОтправлятьВТранслите, 140, 50); + ЧислоСимволов = СтрДлина(ТекстСообщения); + КоличествоСообщений = Цел(ЧислоСимволов / СимволовВСообщении) + 1; + ОсталосьСимволов = СимволовВСообщении - ЧислоСимволов % СимволовВСообщении; + ШаблонТекстаСообщения = НСтр("ru = 'Сообщение - %1, осталось символов - %2'"); + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекстаСообщения, КоличествоСообщений, ОсталосьСимволов); + +КонецФункции + //Функция возвращает таблицу имен кодировок // //Параметры @@ -320,11 +499,7 @@ // Процедура БыстрыйОтборСписокПриИзменении(Форма, ИмяОтбора, ОтборПоПредмету = Истина) Экспорт - Если ОбщегоНазначенияКлиентСервер.Платформа83БезИспользованияРежимаСовместимости() Тогда - Отбор = Форма.Список.КомпоновщикНастроек.Настройки.Отбор; - Иначе - Отбор = Форма.Список.Отбор; - КонецЕсли; + Отбор = ОтборДинамическогоСписка(Форма.Список); Если ИмяОтбора = "Статус" Тогда @@ -372,11 +547,7 @@ // Процедура ПриИзмененииОтбораТипВзаимодействий(Форма,ТипВзаимодействия) Экспорт - Если ОбщегоНазначенияКлиентСервер.Платформа83БезИспользованияРежимаСовместимости() Тогда - Отбор = Форма.Список.КомпоновщикНастроек.Настройки.Отбор; - Иначе - Отбор = Форма.Список.Отбор; - КонецЕсли; + Отбор = ОтборДинамическогоСписка(Форма.Список); //очистить связанные отборы ГруппаОтбора = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора( @@ -466,6 +637,10 @@ ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ГруппаОтбора, "Входящий", Истина, ВидСравненияКомпоновкиДанных.Равно,, Истина); + ИначеЕсли ТипВзаимодействия = "СообщенияSMS" Тогда + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(ГруппаОтбора, + "Тип", Тип("ДокументСсылка.СообщениеSMS"),ВидСравненияКомпоновкиДанных.Равно,, Истина); Иначе Отбор.Элементы.Удалить(ГруппаОтбора); @@ -547,10 +722,15 @@ МассивТабличныхЧастей.Добавить("ПолучателиКопий"); МассивТабличныхЧастей.Добавить("ПолучателиОтвета"); - ИначеЕсли ВидДокумента = "Встреча" ИЛИ ВидДокумента = "ЗапланированноеВзаимодействие" Тогда - + ИначеЕсли ВидДокумента = "Встреча" + ИЛИ ВидДокумента = "ЗапланированноеВзаимодействие" Тогда + МассивТабличныхЧастей.Добавить("Участники"); + ИначеЕсли ВидДокумента = "СообщениеSMS" Тогда + + МассивТабличныхЧастей.Добавить("Адресаты"); + ИначеЕсли ВидДокумента = "ТелефонныйЗвонок" Тогда Если НЕ ЗначениеЗаполнено(ВзаимодействиеОбъект.АбонентКонтакт) Тогда @@ -596,4 +776,22 @@ Возврат Строка(Контакт); +КонецФункции + +// Определяет отбор динамического списка в зависимости от наличия режима совместимости +// +// Параметры: +// Список - ДинамическийСписок - список, для которого надо определить отбор +// +// Возвращаемое значение: +// Отбор - требуемый отбор +// +Функция ОтборДинамическогоСписка(Список) Экспорт + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Возврат Список.КомпоновщикНастроек.ФиксированныеНастройки.Отбор; + Иначе + Возврат Список.Отбор; + КонецЕсли; + КонецФункции \ No newline at end of file diff --git a/SSL/src/CommonModules/ВыгрузкаЗагрузкаДанных/Module.bsl b/SSL/src/CommonModules/ВыгрузкаЗагрузкаДанных/Module.bsl index 9c889ffbe..60e10c1d4 100644 --- a/SSL/src/CommonModules/ВыгрузкаЗагрузкаДанных/Module.bsl +++ b/SSL/src/CommonModules/ВыгрузкаЗагрузкаДанных/Module.bsl @@ -20,6 +20,8 @@ // Функция ВыгрузитьТекущуюОбластьВАрхив() Экспорт + НачалоВыполнения = ТекущаяУниверсальнаяДата(); + Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда ВызватьИсключение(НСтр("ru = 'Нарушение прав доступа'")); КонецЕсли; @@ -63,6 +65,13 @@ УдалитьКаталог(КаталогВыгрузки); + ОписаниеАрхива = Новый Файл(ИмяАрхива); + + ЗаписатьСобытиеВЖурнал( + НСтр("ru = 'Выгрузка'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + ОписаниеАрхива.Размер(), + ТекущаяУниверсальнаяДата() - НачалоВыполнения); + Возврат ИмяАрхива; КонецФункции @@ -75,6 +84,8 @@ // Функция ЗагрузитьТекущуюОбластьИзАрхива(Знач ИмяАрхива, Знач ЗагружатьПользователей = Ложь) Экспорт + НачалоВыполнения = ТекущаяУниверсальнаяДата(); + КаталогВыгрузки = РаспаковатьАрхив(ИмяАрхива); Попытка @@ -87,6 +98,13 @@ УдалитьКаталог(КаталогВыгрузки); + ОписаниеАрхива = Новый Файл(ИмяАрхива); + + ЗаписатьСобытиеВЖурнал( + НСтр("ru = 'Загрузка'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + ОписаниеАрхива.Размер(), + ТекущаяУниверсальнаяДата() - НачалоВыполнения); + КонецФункции // Выполняет загрузку данных в область из zip архива с XML файлами в рамках подготовки новой области данных. @@ -100,6 +118,8 @@ // Функция ПодготовитьТекущуюОбластьИзАрхива(Знач ИмяАрхива, Знач ЗагружатьПользователей = Ложь) Экспорт + НачалоВыполнения = ТекущаяУниверсальнаяДата(); + КаталогВыгрузки = РаспаковатьАрхив(ИмяАрхива); ИнформацияОВыгрузке = ПолучитьИнформациюОВыгрузке(КаталогВыгрузки); @@ -117,6 +137,13 @@ УдалитьКаталог(КаталогВыгрузки); + ОписаниеАрхива = Новый Файл(ИмяАрхива); + + ЗаписатьСобытиеВЖурнал( + НСтр("ru = 'Загрузка'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + ОписаниеАрхива.Размер(), + ТекущаяУниверсальнаяДата() - НачалоВыполнения); + Возврат Истина; КонецФункции @@ -157,7 +184,8 @@ УдалитьФайлы(ИмяАрхива); Исключение // При неудаче система удалит временный файл автоматически - ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции удаления временного файла'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции удаления временного файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; @@ -310,7 +338,8 @@ УдалитьФайлы(Каталог); Исключение // При неудаче система удалит временный файл автоматически - ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции удаления временного файла'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции удаления временного файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; @@ -536,7 +565,8 @@ Процедура ЗаписатьПользователейВXML(КаталогВыгрузки, СохранятьПароли) Запись = Новый ЗаписьXML; - Запись.ОткрытьФайл(КаталогВыгрузки + "users.xml"); + Запись.ОткрытьФайл(КаталогВыгрузки + "users.xml", + Новый ПараметрыЗаписиXML(,,,Истина)); Запись.ЗаписатьОбъявлениеXML(); Запись.ЗаписатьНачалоЭлемента("Users"); @@ -714,8 +744,9 @@ СтрокаОбъекта.Приоритет = 1; ИначеЕсли РаботаВМоделиСервиса.ЭтоПолноеИмяРегистра(ИмяОбъектаМетаданных) ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПоследовательности(ИмяОбъектаМетаданных) Тогда - СтрокаОбъекта.Приоритет = 2; + ИначеЕсли РаботаВМоделиСервиса.ЭтоПолноеИмяПерерасчета(ИмяОбъектаМетаданных) Тогда + СтрокаОбъекта.Приоритет = 3; Иначе ШаблонТекста = НСтр("ru = 'Выгрузка объекта метаданных не поддерживается %1'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТекста, ИмяОбъектаМетаданных); @@ -729,6 +760,21 @@ КонецПроцедуры +Функция НоваяТаблицаПредопределенных() + + ОписаниеXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/8.1/data/core", "TypeDescription")); + ОписаниеXDTO.TypeSet.Добавить(СериализаторXDTO.ЗаписатьXDTO(Новый РасширенноеИмяXML( + "http://v8.1c.ru/8.1/data/enterprise/current-config", + "AnyRef"))); + + Предопределенные = Новый ТаблицаЗначений; + Предопределенные.Колонки.Добавить("Ссылка", СериализаторXDTO.ПрочитатьXDTO(ОписаниеXDTO)); + Предопределенные.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(256, ДопустимаяДлина.Переменная))); + + Возврат Предопределенные; + +КонецФункции + Процедура ЗаписатьДанныеВXMLСУказаниемТипов(КаталогВыгрузки, ТипыДляЗамены = Неопределено, МаксимальныйРазмерЧасти = 100000, ВыгружатьСовместноРазделенныеСсылочныеОбъекты = Ложь) @@ -808,8 +854,7 @@ ОписаниеВыгружаемогоОбъекта = Новый Структура( "ПолноеИмя,Имя,Разделитель,УсловноеРазделение", МетаданныеТипаДляЗамены.ПолноеИмя(), - МетаданныеТипаДляЗамены.Имя - ); + МетаданныеТипаДляЗамены.Имя); СтрокаОбъекта.ВыгружаемыйОбъект = ОписаниеВыгружаемогоОбъекта; КонецЕсли; @@ -841,6 +886,11 @@ // Выгрузка в XML всех данных, относящихся к области + ФормироватьТаблицуПредопределенных = НЕ СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости(); + Если ФормироватьТаблицуПредопределенных Тогда + Предопределенные = НоваяТаблицаПредопределенных(); + КонецЕсли; + Для Каждого СтрокаОбъекта Из ВыгружаемыеДанные Цикл ОписаниеВыгружаемогоОбъекта = СтрокаОбъекта.ВыгружаемыйОбъект; @@ -856,8 +906,7 @@ МенеджерЗначения = ПодменаОбъектаМетаданныхПриВыгрузкеЗагрузкеДанных( МенеджерЗначения, ОписаниеВыгружаемогоОбъекта, - ОписаниеЭмулируемогоОбъекта - ); + ОписаниеЭмулируемогоОбъекта); КонецЕсли; @@ -888,6 +937,8 @@ КонецЕсли; + Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОписаниеВыгружаемогоОбъекта.ПолноеИмя); + РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл @@ -899,8 +950,20 @@ Объект = ПодменаОбъектаМетаданныхПриВыгрузкеЗагрузкеДанных( Объект, ОписаниеВыгружаемогоОбъекта, - ОписаниеЭмулируемогоОбъекта - ); + ОписаниеЭмулируемогоОбъекта); + + КонецЕсли; + + Если ФормироватьТаблицуПредопределенных + И (РаботаВМоделиСервиса.ЭтоПолноеИмяСправочника(ОписаниеВыгружаемогоОбъекта.ПолноеИмя) + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПланаВидовХарактеристик(ОписаниеВыгружаемогоОбъекта.ПолноеИмя) + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПланаСчетов(ОписаниеВыгружаемогоОбъекта.ПолноеИмя) + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПланаВидовРасчета(ОписаниеВыгружаемогоОбъекта.ПолноеИмя)) + И Объект.Предопределенный Тогда + + СтрокаПредопределенного = Предопределенные.Добавить(); + СтрокаПредопределенного.Ссылка = Объект.Ссылка; + СтрокаПредопределенного.Имя = Менеджер.ПолучитьИмяПредопределенного(СтрокаПредопределенного.Ссылка); КонецЕсли; @@ -911,14 +974,17 @@ КонецЦикла; ИначеЕсли РаботаВМоделиСервиса.ЭтоПолноеИмяРегистра(ОписаниеВыгружаемогоОбъекта.ПолноеИмя) - ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПоследовательности(ОписаниеВыгружаемогоОбъекта.ПолноеИмя) Тогда + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПоследовательности(ОписаниеВыгружаемогоОбъекта.ПолноеИмя) + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПерерасчета(ОписаниеВыгружаемогоОбъекта.ПолноеИмя) Тогда ЭтоРегистрСведений = РаботаВМоделиСервиса.ЭтоПолноеИмяРегистраСведений(ОписаниеВыгружаемогоОбъекта.ПолноеИмя); Если ЭтоРегистрСведений Тогда МетаданныеРегистра = Метаданные.РегистрыСведений.Найти(ОписаниеВыгружаемогоОбъекта.Имя); ЭтоНезависимыйРегистрСведений = (МетаданныеРегистра.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый); + ЭтоПерерасчет = Ложь; Иначе ЭтоНезависимыйРегистрСведений = Ложь; + ЭтоПерерасчет = РаботаВМоделиСервиса.ЭтоПолноеИмяПерерасчета(ОписаниеВыгружаемогоОбъекта.ПолноеИмя); КонецЕсли; Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОписаниеВыгружаемогоОбъекта.ПолноеИмя); @@ -934,8 +1000,7 @@ НаборЗаписей = ПодменаОбъектаМетаданныхПриВыгрузкеЗагрузкеДанных( НаборЗаписей, ОписаниеВыгружаемогоОбъекта, - ОписаниеЭмулируемогоОбъекта - ); + ОписаниеЭмулируемогоОбъекта); КонецЕсли; @@ -945,18 +1010,26 @@ Иначе + ПараметрыВыборки = РаботаВМоделиСервиса.ПараметрыВыборки(ОписаниеВыгружаемогоОбъекта.ПолноеИмя); + ИмяПоляРегистратор = ПараметрыВыборки.ИмяПоляРегистратор; + Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | _XMLВыгрузка_Таблица.Регистратор КАК Регистратор |ИЗ - | " + ОписаниеВыгружаемогоОбъекта.ПолноеИмя + " КАК _XMLВыгрузка_Таблица"; + | " + ПараметрыВыборки.Таблица + " КАК _XMLВыгрузка_Таблица"; + + Если ИмяПоляРегистратор <> "Регистратор" Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "Регистратор", ИмяПоляРегистратор); + КонецЕсли; + РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл НаборЗаписей = Менеджер.СоздатьНаборЗаписей(); - НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор); + НаборЗаписей.Отбор[ИмяПоляРегистратор].Установить(Выборка[ИмяПоляРегистратор]); НаборЗаписей.Прочитать(); Если ОписаниеЭмулируемогоОбъекта <> Неопределено Тогда @@ -964,8 +1037,7 @@ НаборЗаписей = ПодменаОбъектаМетаданныхПриВыгрузкеЗагрузкеДанных( НаборЗаписей, ОписаниеВыгружаемогоОбъекта, - ОписаниеЭмулируемогоОбъекта - ); + ОписаниеЭмулируемогоОбъекта); КонецЕсли; @@ -984,6 +1056,22 @@ ЗакрытьЗаписьXML(ПараметрыЗаписи_ЗаменяемыеТипы); ЗакрытьЗаписьXML(ПараметрыЗаписи_ПрочиеДанные); + Если ФормироватьТаблицуПредопределенных Тогда + Запись = Новый ЗаписьXML; + Запись.ОткрытьФайл(КаталогВыгрузки + "PredefinedDataNames.xml"); + Запись.ЗаписатьОбъявлениеXML(); + Запись.ЗаписатьНачалоЭлемента("Data"); + Запись.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema"); + Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance"); + Запись.ЗаписатьСоответствиеПространстваИмен("ns1", "http://v8.1c.ru/8.1/data/core"); + Запись.ЗаписатьСоответствиеПространстваИмен("ns2", "http://v8.1c.ru/8.1/data/enterprise"); + Запись.ЗаписатьСоответствиеПространстваИмен("v8", "http://v8.1c.ru/8.1/data/enterprise/current-config"); + + Сериализатор.ЗаписатьXML(Запись, Предопределенные); + Запись.ЗаписатьКонецЭлемента(); + Запись.Закрыть(); + КонецЕсли; + КонецПроцедуры // Возвращает таблицу с правилами замен @@ -1336,11 +1424,16 @@ ВыгруженныйОбъект = Неопределено; Для Каждого ПравилоЭмуляции Из СоответствиеЗаменяемыхОбъектов Цикл Если ПравилоЭмуляции.Ключ.ПолноеИмя() = ИмяЗагружаемогоОбъекта Тогда + ВыгруженныйОбъект = ПравилоЭмуляции.Значение; - Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда - ЗагружаемыйОбъект = ВыгруженныйОбъект; + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + ЗагружаемыйОбъект = ПравилоЭмуляции.Ключ; + Иначе + ЗагружаемыйОбъект = ПравилоЭмуляции.Значение; КонецЕсли; + Прервать; + КонецЕсли; КонецЦикла; @@ -1348,12 +1441,11 @@ ЭлементЗагружаемыхДанных = Новый Структура("ВыгружаемыйОбъект,ЗагружаемыйОбъект"); ЭлементЗагружаемыхДанных.ВыгружаемыйОбъект = Новый Структура("ПолноеИмя,Имя", ВыгруженныйОбъект.ПолноеИмя(), ВыгруженныйОбъект.Имя); - ЭлементЗагружаемыхДанных.ЗагружаемыйОбъект = Новый Структура("ПолноеИмя,Имя", ИмяЗагружаемогоОбъекта, ЭлементМоделиДанных.Значение.Имя); + ЭлементЗагружаемыхДанных.ЗагружаемыйОбъект = Новый Структура("ПолноеИмя,Имя", ЗагружаемыйОбъект.ПолноеИмя(), ЗагружаемыйОбъект.Имя); ЗагружаемыеДанные.Вставить( ЭлементЗагружаемыхДанных.ВыгружаемыйОбъект.ПолноеИмя, - ЭлементЗагружаемыхДанных - ); + ЭлементЗагружаемыхДанных); КонецЕсли; @@ -1372,6 +1464,35 @@ МаскаПоиска = "data_*.xml"; КонецЕсли; + ИспользоватьИменаПредопределенных = СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости(); + Если ИспользоватьИменаПредопределенных Тогда + ФайлСоответствия = Новый Файл(КаталогВыгрузки + "PredefinedDataNames.xml"); + Если ФайлСоответствия.Существует() Тогда + Чтение = Новый ЧтениеXML; + Чтение.ОткрытьФайл(ФайлСоответствия.ПолноеИмя); + Чтение.ПерейтиКСодержимому(); + + Если Чтение.ТипУзла <> ТипУзлаXML.НачалоЭлемента + ИЛИ Чтение.Имя <> "Data" Тогда + + ВызватьИсключение(НСтр("ru = 'Ошибка чтения XML. Неверный формат файла. Ожидается начало элемента Data.'")); + КонецЕсли; + + Чтение.Прочитать(); + + Предопределенные = СериализаторXDTO.ПрочитатьXML(Чтение); + + Чтение.Закрыть(); + Чтение = Неопределено; + + ЗагруженыИменаПредопределенных = Истина; + Иначе + Предопределенные = НоваяТаблицаПредопределенных(); + + ЗагруженыИменаПредопределенных = Ложь; + КонецЕсли; + КонецЕсли; + ОбластьДанных = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ВсеФайлыДанных = НайтиФайлы(КаталогВыгрузки, МаскаПоиска, Ложь); @@ -1390,7 +1511,7 @@ Если Чтение.ТипУзла <> ТипУзлаXML.НачалоЭлемента ИЛИ Чтение.Имя <> "DataDumpPart" Тогда - ВызватьИсключение(НСтр("ru = 'Ошибка чтения XML. Неверный формат файла. Ожидается начало элемента Data.'")); + ВызватьИсключение(НСтр("ru = 'Ошибка чтения XML. Неверный формат файла. Ожидается начало элемента DataDumpPart.'")); КонецЕсли; Если РежимОтладки Тогда @@ -1453,7 +1574,8 @@ Исключение ЗаписьЖурналаРегистрации( - НСтр("ru = 'ВыгрузкаЗагрузкаДанных.ОшибкаЧтенияXML'"), + НСтр("ru = 'ВыгрузкаЗагрузкаДанных.ОшибкаЧтенияXML'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -1463,9 +1585,7 @@ |Фрагмент файла выгрузки, который не удается прочитать через СериализаторXDTO: |%2'"), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - Фрагмент - ) - ); + Фрагмент)); ВызватьИсключение; @@ -1474,6 +1594,18 @@ Данные = СериализаторXDTO.ПрочитатьXML(Чтение); КонецЕсли; + // В платформе 8.3.2 и ниже не допускается наличие помеченных на удаление предопределенных элементов + Если Не ИспользоватьИменаПредопределенных И + (Метаданные.Справочники.Содержит(Данные.Метаданные()) Или + Метаданные.ПланыВидовХарактеристик.Содержит(Данные.Метаданные()) Или + Метаданные.ПланыСчетов.Содержит(Данные.Метаданные()) Или + Метаданные.ПланыВидовРасчета.Содержит(Данные.Метаданные())) + И Данные.Предопределенный И Данные.ПометкаУдаления Тогда + + Продолжить; + + КонецЕсли; + МетаданныеЗагруженногоЗначения = Данные.Метаданные(); Если ИсключаемыеОбъекты.Найти(МетаданныеЗагруженногоЗначения) <> Неопределено Тогда @@ -1493,8 +1625,7 @@ Данные = ПодменаОбъектаМетаданныхПриВыгрузкеЗагрузкеДанных( Данные, ПравилоПодменыОбъектовПриЗаписи.ВыгружаемыйОбъект, - ПравилоПодменыОбъектовПриЗаписи.ЗагружаемыйОбъект - ); + ПравилоПодменыОбъектовПриЗаписи.ЗагружаемыйОбъект); МетаданныеЗагруженногоЗначения = Данные.Метаданные(); ОписаниеЗагруженныхДанных = МодельДанных.Получить(МетаданныеЗагруженногоЗначения.ПолноеИмя()); Если ОписаниеЗагруженныхДанных <> Неопределено Тогда @@ -1538,6 +1669,29 @@ Данные.ОбменДанными.Загрузка = Истина; + Если ИспользоватьИменаПредопределенных Тогда + + Если РаботаВМоделиСервиса.ЭтоПолноеИмяСправочника(МетаданныеЗагруженногоЗначения.ПолноеИмя()) + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПланаВидовХарактеристик(МетаданныеЗагруженногоЗначения.ПолноеИмя()) + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПланаСчетов(МетаданныеЗагруженногоЗначения.ПолноеИмя()) + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПланаВидовРасчета(МетаданныеЗагруженногоЗначения.ПолноеИмя()) Тогда + + Если ЗначениеЗаполнено(Данные.ИмяПредопределенныхДанных) И Данные.ЭтоНовый() Тогда + Если ЗагруженыИменаПредопределенных Тогда + ВызватьИсключение(НСтр("ru = 'Некорректный формат выгрузки данных - существует файл соответствия имен предопределенных + |и установлено имя предопределенного в объекте.'")); + КонецЕсли; + + СтрокаПредопределенного = Предопределенные.Добавить(); + СтрокаПредопределенного.Ссылка = Данные.ПолучитьСсылкуНового(); + СтрокаПредопределенного.Имя = Данные.ИмяПредопределенныхДанных; + + Данные.ИмяПредопределенныхДанных = ""; + + КонецЕсли; + КонецЕсли; + КонецЕсли; + КонецЕсли; ПередЗагрузкойДанных(Данные); @@ -1555,10 +1709,10 @@ НСтр("ru = 'При попытке загрузки данных из файла выгрузки произошла ошибка: |%1 |Будет предпринята попытка заргузить данные в режиме отладки'"), - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - ЗаписьЖурналаРегистрации(НСтр("ru = 'ВыгрузкаЗагрузкаДанных.ОшибкаЧтенияXML'"), УровеньЖурналаРегистрации.Ошибка, , , ТекстЖР); + ЗаписьЖурналаРегистрации(НСтр("ru = 'ВыгрузкаЗагрузкаДанных.ОшибкаЧтенияXML'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ТекстЖР); РежимОтладки = Истина; Продолжить; @@ -1572,6 +1726,101 @@ КонецЦикла; + Если ИспользоватьИменаПредопределенных Тогда + + Запрос = Новый Запрос; + Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; + Запрос.Текст = + "ВЫБРАТЬ + | Предопределенные.Ссылка КАК Ссылка, + | Предопределенные.Имя КАК Имя + |ПОМЕСТИТЬ Предопределенные + |ИЗ + | &Предопределенные КАК Предопределенные"; + Запрос.УстановитьПараметр("Предопределенные", Предопределенные); + Запрос.Выполнить(); + + Запрос.Текст = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | ТИПЗНАЧЕНИЯ(Предопределенные.Ссылка) КАК Тип + |ИЗ + | Предопределенные КАК Предопределенные"; + ВыборкаТипов = Запрос.Выполнить().Выбрать(); + + Пока ВыборкаТипов.Следующий() Цикл + + ИмяТаблицы = Метаданные.НайтиПоТипу(ВыборкаТипов.Тип).ПолноеИмя(); + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + + ЭтоНеразделенныйОбъект = Истина; + + Если ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ИмяТаблицы, ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных()) Тогда + ЭтоНеразделенныйОбъект = Ложь; + КонецЕсли; + + Если ЭтоНеразделенныйОбъект И ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(ИмяТаблицы, ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных()) Тогда + ЭтоНеразделенныйОбъект = Ложь; + КонецЕсли; + + Если ЭтоНеразделенныйОбъект Тогда + Продолжить; + КонецЕсли; + + КонецЕсли; + + Запрос.Текст = + "ВЫБРАТЬ + | Таблица.Ссылка КАК Ссылка, + | Таблица.ИмяПредопределенныхДанных КАК Имя + |ИЗ + | " + ИмяТаблицы + " КАК Таблица + | + |ГДЕ + | Таблица.Предопределенный = ИСТИНА"; + + ВыборкаСуществующих = Запрос.Выполнить().Выбрать(); + + Запрос.Текст = + "ВЫБРАТЬ + | Предопределенные.Ссылка КАК Ссылка, + | Предопределенные.Имя КАК Имя + |ИЗ + | Предопределенные КАК Предопределенные + |ГДЕ + | ТИПЗНАЧЕНИЯ(Предопределенные.Ссылка) = &Тип"; + Запрос.УстановитьПараметр("Тип", ВыборкаТипов.Тип); + ТаблицаЗагруженных = Запрос.Выполнить().Выгрузить(); + ТаблицаЗагруженных.Индексы.Добавить("Имя"); + + Пока ВыборкаСуществующих.Следующий() Цикл + + СтрокаЗагруженной = ТаблицаЗагруженных.Найти(ВыборкаСуществующих.Имя, "Имя"); + Если СтрокаЗагруженной = Неопределено Тогда + // В файле выгрузки нет предопределенного с таким именем + Продолжить; + КонецЕсли; + + Если СтрокаЗагруженной.Ссылка = ВыборкаСуществующих.Ссылка Тогда + // В области уже есть предопределенный с такой же ссылкой + Продолжить; + КонецЕсли; + + Удаление = Новый УдалениеОбъекта(ВыборкаСуществующих.Ссылка); + Удаление.ОбменДанными.Загрузка = Истина; + Удаление.Записать(); + + Объект = СтрокаЗагруженной.Ссылка.ПолучитьОбъект(); + Объект.ИмяПредопределенныхДанных = ВыборкаСуществующих.Имя; + Объект.ОбменДанными.Загрузка = Истина; + Объект.Записать(); + + КонецЦикла; + + КонецЦикла; + + КонецЕсли; + КонецПроцедуры Функция ПрочитатьТаблицуПользователей(Знач КаталогВыгрузки) @@ -1771,6 +2020,25 @@ КонецПроцедуры +Процедура ЗаписатьСобытиеВЖурнал(Знач Событие, + Знач Размер, + Знач Длительность) + + ДанныеСобытия = Новый Структура; + ДанныеСобытия.Вставить("Размер", Размер); + ДанныеСобытия.Вставить("Длительность", Длительность); + + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Выгрузка / загрузка областей'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()) + "." + Событие, + УровеньЖурналаРегистрации.Информация, + , + , + ОбщегоНазначения.ЗначениеВСтрокуXML(ДанныеСобытия)); + + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Запись / чтение пользователей ИБ в / из XML @@ -1966,9 +2234,7 @@ ЗаполнитьЗначенияСвойств( ПодменаОбъекта, ИсходныйОбъект, , СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок( - ИсключенияЗаполненияСвойств - ) - ); + ИсключенияЗаполненияСвойств)); ИсходныйОбъектМетаданных = Метаданные.НайтиПоПолномуИмени(ОписаниеИсходногоОбъектаМетаданных.ПолноеИмя); ЭмулируемыйОбъектМетаданных = ПодменаОбъекта.Метаданные(); @@ -1987,14 +2253,18 @@ Возврат ПодменаОбъекта; - ИначеЕсли РаботаВМоделиСервиса.ЭтоПолноеИмяРегистра(ОписаниеИсходногоОбъектаМетаданных.ПолноеИмя) Тогда + ИначеЕсли РаботаВМоделиСервиса.ЭтоПолноеИмяРегистра(ОписаниеИсходногоОбъектаМетаданных.ПолноеИмя) + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПоследовательности(ОписаниеИсходногоОбъектаМетаданных.ПолноеИмя) + ИЛИ РаботаВМоделиСервиса.ЭтоПолноеИмяПерерасчета(ОписаниеИсходногоОбъектаМетаданных.ПолноеИмя) Тогда Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОписаниеЭмулируемогоОбъектаМетаданных.ПолноеИмя); ПодменяемыйНаборЗаписей = Менеджер.СоздатьНаборЗаписей(); - ОтборПоРегистратору = ИсходныйОбъект.Отбор.Найти("Регистратор"); + ПараметрыВыборки = РаботаВМоделиСервиса.ПараметрыВыборки(ОписаниеЭмулируемогоОбъектаМетаданных.ПолноеИмя); + ИмяПоляРегистратор = ПараметрыВыборки.ИмяПоляРегистратор; + ОтборПоРегистратору = ИсходныйОбъект.Отбор.Найти(ИмяПоляРегистратор); Если ОтборПоРегистратору <> Неопределено Тогда - ПодменяемыйНаборЗаписей.Отбор.Регистратор.Установить(ОтборПоРегистратору.Значение); + ПодменяемыйНаборЗаписей.Отбор[ИмяПоляРегистратор].Установить(ОтборПоРегистратору.Значение); КонецЕсли; ПодменяемыйНаборЗаписей.Загрузить(ИсходныйОбъект.Выгрузить()); @@ -2090,14 +2360,14 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда ОтправкаЭлемента = ОтправкаЭлементаДанных.Авто; - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебный"); - Модуль.ПриОтправкеФайла(ЭлементДанных, ОтправкаЭлемента); + МодульРаботаСФайламиСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебный"); + МодульРаботаСФайламиСлужебный.ПриОтправкеФайла(ЭлементДанных, ОтправкаЭлемента); КонецЕсли; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПрисоединенныеФайлы") Тогда ОтправкаЭлемента = ОтправкаЭлементаДанных.Авто; - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлыСлужебный"); - Модуль.ПриОтправкеФайла(ЭлементДанных, ОтправкаЭлемента); + МодульПрисоединенныеФайлыСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлыСлужебный"); + МодульПрисоединенныеФайлыСлужебный.ПриОтправкеФайла(ЭлементДанных, ОтправкаЭлемента); КонецЕсли; КонецПроцедуры @@ -2111,14 +2381,14 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда ПолучениеЭлемента = ПолучениеЭлементаДанных.Авто; - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебный"); - Модуль.ПриПолученииФайла(ЭлементДанных, ПолучениеЭлемента); + МодульРаботаСФайламиСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебный"); + МодульРаботаСФайламиСлужебный.ПриПолученииФайла(ЭлементДанных, ПолучениеЭлемента); КонецЕсли; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПрисоединенныеФайлы") Тогда ПолучениеЭлемента = ПолучениеЭлементаДанных.Авто; - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлыСлужебный"); - Модуль.ПриПолученииФайла(ЭлементДанных, ПолучениеЭлемента); + МодульПрисоединенныеФайлыСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлыСлужебный"); + МодульПрисоединенныеФайлыСлужебный.ПриПолученииФайла(ЭлементДанных, ПолучениеЭлемента); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/ДатыЗапретаИзменения/Module.bsl b/SSL/src/CommonModules/ДатыЗапретаИзменения/Module.bsl index d938fc3d2..3a7ea428e 100644 --- a/SSL/src/CommonModules/ДатыЗапретаИзменения/Module.bsl +++ b/SSL/src/CommonModules/ДатыЗапретаИзменения/Module.bsl @@ -935,11 +935,11 @@ КонецЕсли; Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Текст, - Формат(Проверка.Дата, "ДФ=dd.MM.yyyy"), + Формат(Проверка.Дата, "ДЛФ=Д"), Проверка.Раздел, Проверка.Объект, Запрет.Пользователь, - Формат(Запрет.ДатаЗапрета, "ДФ=dd.MM.yyyy"), + Формат(Запрет.ДатаЗапрета, "ДЛФ=Д"), Запрет.Пользователь.Метаданные().Представление()) + Символы.ПС; КонецЦикла; Текст = Текст + Символы.ПС; @@ -954,8 +954,10 @@ // тогда выполняется запись в журнал регистрации. ЗаписьЖурналаРегистрации( ?(ПоискЗапретовЗагрузки, - НСтр("ru = 'Даты запрета изменения.Найдены запреты загрузки'"), - НСтр("ru = 'Даты запрета изменения.Найдены запреты изменения'")), + НСтр("ru = 'Даты запрета изменения.Найдены запреты загрузки'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + НСтр("ru = 'Даты запрета изменения.Найдены запреты изменения'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())), УровеньЖурналаРегистрации.Ошибка, , , diff --git a/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебный/Module.bsl b/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебный/Module.bsl index 28728352e..4e4e34908 100644 --- a/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ДатыЗапретаИзмененияСлужебный/Module.bsl @@ -216,89 +216,109 @@ УстановитьПривилегированныйРежим(Истина); - НачатьТранзакцию(); - Попытка - Блокировка = Новый БлокировкаДанных; - ЭлементБлокировки = Блокировка.Добавить(); - ЭлементБлокировки.Область = "РегистрСведений.ДатыЗапретаИзменения"; - ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; - Блокировка.Заблокировать(); + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ДатыЗапретаИзменения.Раздел, + | ДатыЗапретаИзменения.Объект, + | ДатыЗапретаИзменения.Пользователь, + | ДатыЗапретаИзменения.ДатаЗапрета, + | ДатыЗапретаИзменения.ОписаниеДатыЗапрета + |ИЗ + | РегистрСведений.ДатыЗапретаИзменения КАК ДатыЗапретаИзменения"; + + Выборка = Запрос.Выполнить().Выбрать(); + + ТекущаяДатаНаСервере = НачалоДня(ТекущаяДатаСеанса()); + МенеджерЗаписи = РегистрыСведений.ДатыЗапретаИзменения.СоздатьМенеджерЗаписи(); + ПредставлениеОшибки = ""; + Отказ = Ложь; + ЕстьОбновленныеДаты = Ложь; + НетОтносительныхДат = Истина; + + Пока Выборка.Следующий() Цикл + РассчитаннаяДатаЗапрета = РассчитатьДатуЗапретаПоОписанию( + ТекущаяДатаНаСервере, Выборка.ОписаниеДатыЗапрета); - Запрос = Новый Запрос; - Запрос.Текст = - "ВЫБРАТЬ - | ДатыЗапретаИзменения.Раздел, - | ДатыЗапретаИзменения.Объект, - | ДатыЗапретаИзменения.Пользователь, - | ДатыЗапретаИзменения.ДатаЗапрета, - | ДатыЗапретаИзменения.ОписаниеДатыЗапрета - |ИЗ - | РегистрСведений.ДатыЗапретаИзменения КАК ДатыЗапретаИзменения"; - - Выборка = Запрос.Выполнить().Выбрать(); - - ТекущаяДатаНаСервере = НачалоДня(ТекущаяДатаСеанса()); - МенеджерЗаписи = РегистрыСведений.ДатыЗапретаИзменения.СоздатьМенеджерЗаписи(); - ПредставлениеОшибки = ""; - Отказ = Ложь; - ЕстьОбновленныеДаты = Ложь; - НетОтносительныхДат = Истина; - - Пока Выборка.Следующий() Цикл - РассчитаннаяДатаЗапрета = РассчитатьДатуЗапретаПоОписанию(ТекущаяДатаНаСервере, Выборка.ОписаниеДатыЗапрета); + Если ЗначениеЗаполнено(РассчитаннаяДатаЗапрета) Тогда + НетОтносительныхДат = Ложь; - Если ЗначениеЗаполнено(РассчитаннаяДатаЗапрета) Тогда - НетОтносительныхДат = Ложь; - Если Выборка.ДатаЗапрета <> РассчитаннаяДатаЗапрета Тогда - ЗаполнитьЗначенияСвойств(МенеджерЗаписи, Выборка); + Если Выборка.ДатаЗапрета <> РассчитаннаяДатаЗапрета Тогда + ЗаполнитьЗначенияСвойств(МенеджерЗаписи, Выборка); + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(); + ЭлементБлокировки.Область = "РегистрСведений.ДатыЗапретаИзменения"; + ЭлементБлокировки.УстановитьЗначение("Раздел", Выборка.Раздел); + ЭлементБлокировки.УстановитьЗначение("Объект", Выборка.Объект); + ЭлементБлокировки.УстановитьЗначение("Пользователь", Выборка.Пользователь); + ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); МенеджерЗаписи.Прочитать(); Если МенеджерЗаписи.Выбран() Тогда - МенеджерЗаписи.ДатаЗапрета = РассчитаннаяДатаЗапрета; - Попытка + Если Выборка.ОписаниеДатыЗапрета <> МенеджерЗаписи.ОписаниеДатыЗапрета Тогда + РассчитаннаяДатаЗапрета = РассчитатьДатуЗапретаПоОписанию( + ТекущаяДатаНаСервере, МенеджерЗаписи.ОписаниеДатыЗапрета); + КонецЕсли; + Если ЗначениеЗаполнено(РассчитаннаяДатаЗапрета) Тогда + МенеджерЗаписи.ДатаЗапрета = РассчитаннаяДатаЗапрета; МенеджерЗаписи.Записать(); ЕстьОбновленныеДаты = Истина; - Исключение - Отказ = Истина; - ПредставлениеОшибки = ПредставлениеОшибки + Символы.ПС + Символы.ПС + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); - КонецПопытки + КонецЕсли; КонецЕсли; - КонецЕсли; + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + Отказ = Истина; + ПредставлениеОшибки = ПредставлениеОшибки + Символы.ПС + Символы.ПС + + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + КонецПопытки; КонецЕсли; - КонецЦикла; - - ЗафиксироватьТранзакцию(); - Исключение - ОтменитьТранзакцию(); - ВызватьИсключение; - КонецПопытки; + КонецЕсли; + КонецЦикла; Если НетОтносительныхДат Тогда ОписаниеРезультата = НСтр("ru = 'Относительные даты запрета не заданы.'"); ИначеЕсли Отказ Тогда Если ЕстьОбновленныеДаты Тогда - ОписаниеРезультата = НСтр("ru = 'Пересчитаны некоторые текущие значения относительных дат запрета. - |При пересчете возникли ошибки:'"); + ОписаниеРезультата = + НСтр("ru = 'Пересчитаны некоторые текущие значения относительных дат запрета. + |При пересчете возникли ошибки:'"); Иначе - ОписаниеРезультата = НСтр("ru = 'Не пересчитаны текущие значения дат запрета. - |При пересчете возникли ошибки:'"); + ОписаниеРезультата = + НСтр("ru = 'Не пересчитаны текущие значения дат запрета. + |При пересчете возникли ошибки:'"); КонецЕсли; ОписаниеРезультата = ОписаниеРезультата + ПредставлениеОшибки; Иначе Если ЕстьОбновленныеДаты Тогда - ОписаниеРезультата = НСтр("ru = 'Успешно пересчитаны текущие значения относительных дат запрета.'"); + ОписаниеРезультата = + НСтр("ru = 'Успешно пересчитаны текущие значения относительных дат запрета.'"); Иначе - ОписаниеРезультата = НСтр("ru = 'Сегодня уже пересчитаны текущие значения относительных дат запрета.'"); + ОписаниеРезультата = + НСтр("ru = 'Сегодня уже пересчитаны текущие значения относительных дат запрета.'"); КонецЕсли; КонецЕсли; Если ЗаписатьОписаниеРезультатаВЖурналРегистрации Тогда - ЗаписьЖурналаРегистрации(НСтр("ru = 'Даты запрета изменения.Пересчет относительных дат'"), - ?(Отказ, УровеньЖурналаРегистрации.Ошибка, УровеньЖурналаРегистрации.Информация), - , - , - ОписаниеРезультата, - РежимТранзакцииЗаписиЖурналаРегистрации.Независимая); + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Даты запрета изменения.Пересчет относительных дат'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + ?(Отказ, УровеньЖурналаРегистрации.Ошибка, УровеньЖурналаРегистрации.Информация), + , + , + ОписаниеРезультата, + РежимТранзакцииЗаписиЖурналаРегистрации.Независимая); + КонецЕсли; + + Если Отказ Тогда + ВызватьИсключение + НСтр("ru = 'Не удалось пересчитать все относительные даты запрета. + |Подробности в журнале регистрации.'"); КонецЕсли; КонецПроцедуры @@ -581,7 +601,7 @@ НаборЗаписей.Отбор.Пользователь.Установить(Перечисления.ВидыНазначенияДатЗапрета.ДляВсехПользователей); Таблица.ЗаполнитьЗначения(Перечисления.ВидыНазначенияДатЗапрета.ДляВсехПользователей, "Пользователь"); НаборЗаписей.Загрузить(Таблица); - НаборЗаписей.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей); КонецЕсли; КонецПроцедуры @@ -618,7 +638,7 @@ ЗаполнитьЗначенияСвойств(МенеджерЗаписи, Строка); МенеджерЗаписи.Прочитать(); Если МенеджерЗаписи.Выбран() Тогда - МенеджерЗаписи.Удалить(); + МенеджерЗаписи.Записать(); КонецЕсли; КонецЦикла; ЗафиксироватьТранзакцию(); diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработки/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработки/Module.bsl index 5890f46cc..0ad0309f1 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработки/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработки/Module.bsl @@ -96,8 +96,10 @@ // // Параметры: // ЭтаФорма (УправляемаяФорма) +// ТипФормы (Строка) Необязательный. "ФормаСписка" для форм списков и "ФормаОбъекта" для форм элементов. +// см. также функции ТипФормыСписка() и ТипФормыОбъекта() общего модуля ДополнительныеОтчетыИОбработкиКлиентСервер. // -Процедура ПриСозданииНаСервере(ЭтаФорма) Экспорт +Процедура ПриСозданииНаСервере(ЭтаФорма, ТипФормы = Неопределено) Экспорт Если Не ПолучитьФункциональнуюОпцию("ИспользоватьДополнительныеОтчетыИОбработки") Тогда Возврат; КонецЕсли; @@ -110,7 +112,7 @@ ПараметрыФункциональныхОпций = Новый Структура; ПараметрыФункциональныхОпций.Вставить("ДополнительныеОтчетыИОбработкиОбъектНазначения", Параметры.СсылкаРодителя); - ПараметрыФункциональныхОпций.Вставить("ДополнительныеОтчетыИОбработкиТипФормы", Параметры.ТипФормы); + ПараметрыФункциональныхОпций.Вставить("ДополнительныеОтчетыИОбработкиТипФормы", ?(ТипФормы = Неопределено, Параметры.ТипФормы, ТипФормы)); ЭтаФорма.УстановитьПараметрыФункциональныхОпцийФормы(ПараметрыФункциональныхОпций); @@ -150,24 +152,21 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Внешняя обработка ""%1"" (тип ""%2"") не обслуживается подсистемой ""Дополнительные отчеты и обработки""'"), Строка(Ссылка), - Строка(ТипЗнч(Ссылка)) - ); + Строка(ТипЗнч(Ссылка))); КонецЕсли; ВнешняяОбработкаОбъект.Печать( ПараметрыИсточника.ОбъектыНазначения, КоллекцияПечатныхФорм, ОбъектыПечати, - ПараметрыВывода - ); + ПараметрыВывода); // Проверим, все ли макеты были сформированы Для Каждого Стр Из КоллекцияПечатныхФорм Цикл Если Стр.ТабличныйДокумент = Неопределено Тогда ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'В обработчике печати не был сформирован табличный документ для: %1'"), - Стр.ИмяМакета - ); + Стр.ИмяМакета); ВызватьИсключение(ТекстСообщенияОбОшибке); КонецЕсли; @@ -407,6 +406,43 @@ КонецПроцедуры +// Дополняет список команд печати внешними печатными формами. +// +// Параметры: +// КомандыПечати - ТаблицаЗначений - описание см. в УправлениеПечатью.СоздатьКоллекциюКомандПечати(). +// ИмяФормы - Строка - полное имя формы, для которой необходимо получить список команд печати. +// +Процедура ПриПолученииКомандПечати(КомандыПечати, ИмяФормы) Экспорт + + Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.ДополнительныеОтчетыИОбработки) Тогда + Возврат; + КонецЕсли; + + ПолноеИмяОбъектаМетаданных = Метаданные.НайтиПоПолномуИмени(ИмяФормы).Родитель().ПолноеИмя(); + Запрос = НовыйЗапросПоДоступнымКомандам(Перечисления.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма, ПолноеИмяОбъектаМетаданных); + ТаблицаКоманд = Запрос.Выполнить().Выгрузить(); + + Если ТаблицаКоманд.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + Для Каждого СтрокаТаблицы Из ТаблицаКоманд Цикл + КомандаПечати = КомандыПечати.Найти(СтрокаТаблицы.Идентификатор, "Идентификатор"); // подмена встроенной команды на внешнюю + Если КомандаПечати = Неопределено Тогда + КомандаПечати = КомандыПечати.Добавить(); + КонецЕсли; + // Обязательные параметры. + ЗаполнитьЗначенияСвойств(КомандаПечати, СтрокаТаблицы, "Идентификатор, Представление"); + // Параметры, идентифицирующие подсистему. + КомандаПечати.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки"; + + // Дополнительные параметры. + КомандаПечати.ДополнительныеПараметры = Новый Структура("Ссылка, Модификатор, ВариантЗапуска, ПоказыватьОповещение"); + ЗаполнитьЗначенияСвойств(КомандаПечати.ДополнительныеПараметры, СтрокаТаблицы); + КонецЦикла; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики служебных событий @@ -571,8 +607,7 @@ ПараметрыОтчета.Ошибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Элемент %1 не является дополнительным отчетом'"), - "'"+ Строка(ДопОтчет) +"'" - ); + "'"+ Строка(ДопОтчет) +"'"); Результат = Ложь; @@ -650,7 +685,7 @@ НоваяЗапись.Пользователь = Пользователь; НоваяЗапись.Доступно = Истина; КонецЦикла; - НаборЗаписей.Записать(Истина); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей); КонецЦикла; КонецПроцедуры @@ -732,9 +767,9 @@ СтрокаТаблицы.ИмяОбъекта = Объект.ИмяОбъекта; // Запись объекта - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); - КонецЦикла; + КонецЦикла; КонецПроцедуры @@ -788,8 +823,8 @@ КонецЦикла; // Запись объекта - Объект.Записать(); - КонецЦикла; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); + КонецЦикла; КонецПроцедуры // Замена имен рабочих мест на идентификаторы разделов. @@ -838,11 +873,10 @@ Для Каждого СтрокаТабличнойЧасти Из МассивСтрокДляУдаления Цикл СправочникОбъект.Назначение.Удалить(СтрокаТабличнойЧасти); КонецЦикла; - СправочникОбъект.ОбменДанными.Загрузка = Истина; - СправочникОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(СправочникОбъект); КонецЦикла; - РегистрыСведений.НазначениеДополнительныхОбработок.Обновить(); + РегистрыСведений.НазначениеДополнительныхОбработок.Обновить(Истина); ЗафиксироватьТранзакцию(); @@ -889,8 +923,7 @@ ВнешняяОбработка, НСтр("ru = 'Команда %1: Ошибка выполнения:%2'"), ИдентификаторКоманды, - Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; // Запись журнала регистрации @@ -911,8 +944,8 @@ Процедура ПриОпределенииСсылкиВариантаДополнительногоОтчета(Отчет, КлючВарианта, Результат) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); - Результат = Модуль.ПолучитьСсылку(Отчет, КлючВарианта); + МодульВариантыОтчетов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); + Результат = МодульВариантыОтчетов.ПолучитьСсылку(Отчет, КлючВарианта); КонецЕсли; КонецПроцедуры @@ -941,8 +974,7 @@ Функция НовыйЗапросПоДоступнымКомандам(ВидОбработок, ПолноеИмяИлиСсылкаРодителяИлиРаздела, ЭтоФормаОбъекта = Неопределено) Экспорт ЭтоГлобальныеОбработки = ( ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет - ИЛИ ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка - ); + ИЛИ ВидОбработок = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка); Если ТипЗнч(ПолноеИмяИлиСсылкаРодителяИлиРаздела) = Тип("СправочникСсылка.ИдентификаторыОбъектовМетаданных") Тогда СсылкаРодителяИлиРаздела = ПолноеИмяИлиСсылкаРодителяИлиРаздела; @@ -1229,8 +1261,7 @@ Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Раздел ""%1""'"), - ПредставлениеРаздела - ); + ПредставлениеРаздела); КонецФункции // Функция для добавления команд дополнительных обработок в список "своих" @@ -1284,8 +1315,8 @@ СтандартнаяОбработка = Истина; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); - Модуль.ПриПроверкеПраваДобавления(ДополнительнаяОбработка, Результат, СтандартнаяОбработка); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.ПриПроверкеПраваДобавления(ДополнительнаяОбработка, Результат, СтандартнаяОбработка); КонецЕсли; Если СтандартнаяОбработка Тогда @@ -1407,8 +1438,8 @@ СтандартнаяОбработка = Истина; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); - Модуль.ПриПроверкеВозможностиЗагрузкиОбработкиИзФайла(Обработка, Результат, СтандартнаяОбработка); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.ПриПроверкеВозможностиЗагрузкиОбработкиИзФайла(Обработка, Результат, СтандартнаяОбработка); КонецЕсли; Возврат Результат; @@ -1429,8 +1460,8 @@ СтандартнаяОбработка = Истина; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); - Модуль.ПриПроверкеВозможностиВыгрузкиОбработкиВФайл(Обработка, Результат, СтандартнаяОбработка); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.ПриПроверкеВозможностиВыгрузкиОбработкиВФайл(Обработка, Результат, СтандартнаяОбработка); КонецЕсли; Возврат Результат; @@ -1445,8 +1476,8 @@ СтандартнаяОбработка = Истина; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); - Модуль.ПриПроверкеНеобходимостиОтображенияРасширеннойИнформации(Результат, СтандартнаяОбработка); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.ПриПроверкеНеобходимостиОтображенияРасширеннойИнформации(Результат, СтандартнаяОбработка); КонецЕсли; Возврат Результат; @@ -1461,8 +1492,8 @@ Результат = Новый Массив; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); - НедоступныеВМоделиСервиса = Модуль.НедоступныеВидыПубликации(); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); + НедоступныеВМоделиСервиса = МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.НедоступныеВидыПубликации(); ОбщегоНазначенияКлиентСервер.ДополнитьМассив(Результат, НедоступныеВМоделиСервиса, Истина); КонецЕсли; @@ -1474,7 +1505,7 @@ // Процедура ЗаписатьОшибку(Ссылка, ТекстСообщения, Реквизит1 = Неопределено, Реквизит2 = Неопределено, Реквизит3 = Неопределено) Экспорт ЗаписьЖурналаРегистрации( - ДополнительныеОтчетыИОбработкиКлиентСервер.НаименованиеПодсистемы(), + ДополнительныеОтчетыИОбработкиКлиентСервер.НаименованиеПодсистемы(Неопределено), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.ДополнительныеОтчетыИОбработки, Ссылка, @@ -1482,16 +1513,14 @@ ТекстСообщения, Строка(Реквизит1), Строка(Реквизит2), - Строка(Реквизит3) - ) - ); + Строка(Реквизит3))); КонецПроцедуры // Запись ошибки в журнал регистрации по дополнительному отчету или обработке. // Процедура ЗаписатьИнформацию(Ссылка, ТекстСообщения, Реквизит1 = Неопределено, Реквизит2 = Неопределено, Реквизит3 = Неопределено) Экспорт ЗаписьЖурналаРегистрации( - ДополнительныеОтчетыИОбработкиКлиентСервер.НаименованиеПодсистемы(), + ДополнительныеОтчетыИОбработкиКлиентСервер.НаименованиеПодсистемы(Неопределено), УровеньЖурналаРегистрации.Информация, Метаданные.Справочники.ДополнительныеОтчетыИОбработки, Ссылка, @@ -1499,9 +1528,7 @@ ТекстСообщения, Строка(Реквизит1), Строка(Реквизит2), - Строка(Реквизит3) - ) - ); + Строка(Реквизит3))); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -1777,9 +1804,9 @@ Иначе Если ПараметрыКоманды = Неопределено Тогда - ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды.ОбъектыНазначения, ИзмененныеОбъекты); + ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ИзмененныеОбъекты); Иначе - ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды.ОбъектыНазначения, ИзмененныеОбъекты, ПараметрыКоманды); + ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения, ИзмененныеОбъекты, ПараметрыКоманды); КонецЕсли; КонецЕсли; @@ -1816,8 +1843,7 @@ ПередаватьПараметры = ( СведенияОВнешнемОбъекте.Свойство("ВерсияБСП") - И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СведенияОВнешнемОбъекте.ВерсияБСП, "1.2.1.4") >= 0 - ); + И ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СведенияОВнешнемОбъекте.ВерсияБСП, "1.2.1.4") >= 0); Если НЕ ПараметрыКоманды.Свойство("РезультатВыполнения") ИЛИ ТипЗнч(ПараметрыКоманды.РезультатВыполнения) <> Тип("Структура") Тогда ПараметрыКоманды.Вставить("РезультатВыполнения", СтандартныеПодсистемыКлиентСервер.НовыйРезультатВыполнения()); @@ -1840,8 +1866,7 @@ ВыполнитьКомандуДополнительногоОтчетаИлиОбработки( ВнешнийОбъект, ИдентификаторКоманды, ?(ПередаватьПараметры, ПараметрыКоманды, Неопределено), - ЭтоСценарийВБезопасномРежиме - ); + ЭтоСценарийВБезопасномРежиме); ИначеЕсли ВидОбработки = Перечисления.ВидыДополнительныхОтчетовИОбработок.СозданиеСвязанныхОбъектов Тогда @@ -1851,8 +1876,7 @@ ?(ПередаватьПараметры, ПараметрыКоманды, Неопределено), ПараметрыКоманды.ОбъектыНазначения, ИзмененныеОбъекты, - ЭтоСценарийВБезопасномРежиме - ); + ЭтоСценарийВБезопасномРежиме); ИначеЕсли ВидОбработки = Перечисления.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта ИЛИ ВидОбработки = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет @@ -1868,8 +1892,7 @@ ВнешнийОбъект, ИдентификаторКоманды, ?(ПередаватьПараметры, ПараметрыКоманды, Неопределено), ОбъектыНазначения, - ЭтоСценарийВБезопасномРежиме - ); + ЭтоСценарийВБезопасномРежиме); Иначе @@ -1877,8 +1900,7 @@ ВнешнийОбъект, ИдентификаторКоманды, ?(ПередаватьПараметры, ПараметрыКоманды, Неопределено), ОбъектыНазначения, - ЭтоСценарийВБезопасномРежиме - ); + ЭтоСценарийВБезопасномРежиме); Если ВидОбработки = Перечисления.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта Тогда ИзмененныеОбъекты = ОбъектыНазначения; @@ -1909,12 +1931,10 @@ Сценарий = ВнешнийОбъект.СформироватьСценарий(ИдентификаторКоманды, ПараметрыКоманды); КлючСессии = ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.СформироватьКлючСессииРасширенияБезопасногоРежима( - ПараметрыКоманды.ДополнительнаяОбработкаСсылка - ); + ПараметрыКоманды.ДополнительнаяОбработкаСсылка); РасширениеБезопасногоРежима.ВыполнитьСценарийБезопасногоРежима( - КлючСессии, Сценарий, ВнешнийОбъект, ПараметрыКоманды, Неопределено, ОбъектыНазначения - ); + КлючСессии, Сценарий, ВнешнийОбъект, ПараметрыКоманды, Неопределено, ОбъектыНазначения); КонецПроцедуры @@ -2073,8 +2093,7 @@ Если НЕ ЗначениеЗаполнено(КомандаОписание.ВариантЗапуска) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( - СтрЗаменить(НСтр("ru = 'Для команды ""%1"" не определен способ запуска.'"), "%1", КомандаОписание.Представление) - ); + СтрЗаменить(НСтр("ru = 'Для команды ""%1"" не определен способ запуска.'"), "%1", КомандаОписание.Представление)); КонецЕсли; Команда = Объект.Команды.Добавить(); @@ -2131,8 +2150,8 @@ СтандартнаяОбработка = Истина; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); - Модуль.ПриПолученииРегистрационныхДанных(Объект, Результат, СтандартнаяОбработка); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.ПриПолученииРегистрационныхДанных(Объект, Результат, СтандартнаяОбработка); КонецЕсли; Если Не СтандартнаяОбработка Тогда @@ -2183,8 +2202,8 @@ Процедура ПроверитьВозможностьВыполнения(Ссылка) Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); - Модуль.ПроверитьВозможностьВыполнения(Ссылка); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.ПроверитьВозможностьВыполнения(Ссылка); КонецЕсли; КонецПроцедуры @@ -2208,8 +2227,8 @@ Результат = Новый Структура(Свойства); Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); - Модуль.ОпределениеПараметровЗапуска(Ссылка, Результат, СтандартнаяОбработка); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.ОпределениеПараметровЗапуска(Ссылка, Результат, СтандартнаяОбработка); КонецЕсли; Если СтандартнаяОбработка Тогда diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежиме/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежиме/Module.bsl index 089cf55b6..aa6bcc431 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежиме/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежиме/Module.bsl @@ -46,15 +46,13 @@ ПроверитьКорректностьВызоваПоОкружению(); - ЗаписьXML.УстановитьСтроку(); Строка = ЗаписьXML.Закрыть(); - Адрес = ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера.СтрокаВДвоичныеДанные( + Возврат ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера.СтрокаВДвоичныеДанные( Строка, , , , - Адрес - ); + Адрес); КонецФункции @@ -99,15 +97,13 @@ ПроверитьКорректностьВызоваПоОкружению(); - ЗаписьHTML.УстановитьСтроку(); Строка = ЗаписьHTML.Закрыть(); - Адрес = ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера.СтрокаВДвоичныеДанные( + Возврат ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера.СтрокаВДвоичныеДанные( Строка, , , , - Адрес - ); + Адрес); КонецФункции @@ -148,7 +144,6 @@ ПроверитьКорректностьВызоваПоОкружению(); - ЗаписьFastInfoset.УстановитьДвоичныеДанные(); Данные = ЗаписьFastInfoset.Закрыть(); Адрес = ПоместитьВоВременноеХранилище(Данные, Адрес); @@ -176,9 +171,7 @@ ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ПроверитьЛегитимностьВыполненияОперации(КлючСессии, ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.РазрешениеСозданиеCOMОбъекта( - ProgId - ) - ); + ProgId)); Возврат Новый COMОбъект(ProgId); @@ -207,15 +200,12 @@ ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ПроверитьЛегитимностьВыполненияОперации(КлючСессии, ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.РазрешениеПодключениеВнешнейКомпонентыИзОбщегоМакетаКонфигурации( - ИмяОбщегоМакета - ) - ); + ИмяОбщегоМакета)); Возврат ПодключитьВнешнююКомпоненту( "ОбщийМакет." + ИмяОбщегоМакета, СимволическоеИмя, - ТипКомпоненты - ); + ТипКомпоненты); КонецФункции @@ -243,15 +233,12 @@ ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ПроверитьЛегитимностьВыполненияОперации(КлючСессии, ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.РазрешениеПодключениеВнешнейКомпонентыИзМакетаКонфигурации( - ОбъектМетаданных, ИмяМакета - ) - ); + ОбъектМетаданных, ИмяМакета)); Возврат ПодключитьВнешнююКомпоненту( ОбъектМетаданных.ПолноеИмя() + ".Макет." + ИмяМакета, СимволическоеИмя, - ТипКомпоненты - ); + ТипКомпоненты); КонецФункции @@ -403,9 +390,7 @@ ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ПроверитьЛегитимностьВыполненияОперации(КлючСессии, ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.РазрешениеПолучениеДанныхИзИнтернет( - Протокол, ИмяСервера, Порт - ) - ); + ВРег(Протокол), ИмяСервера, Порт)); Результат = ОбработчикПолученияФайлов.ПодготовитьПолучениеФайла( URL, @@ -418,9 +403,7 @@ Новый Структура( "МестоХранения, Путь", "ВременноеХранилище", - Неопределено - ) - ); + Неопределено)); Если Результат.Статус Тогда Возврат Результат.Путь; @@ -482,13 +465,11 @@ ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ПроверитьЛегитимностьВыполненияОперации(КлючСессии, ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.РазрешениеПередачаДанныхВИнтернет( - Протокол, ИмяСервера, Порт - ) - ); + ВРег(Протокол), ИмяСервера, Порт)); ВременныйФайл = ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ПолучитьФайлИзВременногоХранилища(АдресДвоичныхДанных); - Если Протокол = "HTTPS" Тогда + Если ВРег(Протокол) = "HTTPS" Тогда ЗащищенноеСоединение = Истина; КонецЕсли; @@ -501,7 +482,7 @@ ПараметрыСоединения.Добавить(Пароль); ПараметрыСоединения.Добавить(Прокси); - Если Протокол = "FTP" Тогда + Если ВРег(Протокол) = "FTP" Тогда ПараметрыСоединения.Добавить(ПассивноеСоединение); @@ -585,9 +566,7 @@ ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ПроверитьЛегитимностьВыполненияОперации(КлючСессии, ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.РазрешениеWSСоединение( - АдресWSDL - ) - ); + АдресWSDL)); Возврат ОбщегоНазначения.WSПрокси( АдресWSDL, @@ -596,8 +575,7 @@ ИмяТочкиПодключения, ИмяПользователя, Пароль, - Таймаут - ); + Таймаут); КонецФункции @@ -646,9 +624,7 @@ ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ПроверитьЛегитимностьВыполненияОперации(КлючСессии, ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.РазрешениеПроведениеДокументов( - Документ.Метаданные().ПолноеИмя, ПроверяемыйРежимЗаписи - ) - ); + Документ.Метаданные().ПолноеИмя, ПроверяемыйРежимЗаписи)); Документ.Записать(РежимЗаписи, РежимПроведения); @@ -683,8 +659,7 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = '%1 не является корректным именем метода для COM-объекта или объекта внешней компоненты!'"), - ИмяМетода - ); + ИмяМетода); КонецЕсли; @@ -733,4 +708,4 @@ КонецЕсли; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера/Module.bsl index f8ccd8f98..9fdac5b7f 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеВызовСервера/Module.bsl @@ -290,6 +290,18 @@ ПроверитьКорректностьВызоваПоОкружению(); + Если МетодСжатия = Неопределено Тогда + МетодСжатия = МетодСжатияZIP.Сжатие; + КонецЕсли; + + Если УровеньСжатия = Неопределено Тогда + УровеньСжатия = УровеньСжатияZIP.Оптимальный; + КонецЕсли; + + Если МетодШифрования = Неопределено Тогда + МетодШифрования = МетодШифрованияZIP.Zip20; + КонецЕсли; + ВременныйФайл = ПолучитьИмяВременногоФайла(); КаталогУпаковки = ПолучитьИмяВременногоФайла(); СоздатьКаталог(КаталогУпаковки); @@ -322,18 +334,16 @@ // // Возвращаемое значение: Произвольный. // -Функция ВыполнитьСценарийВБезопасномРежиме(Знач КлючСессии, Знач АдресСценария, ПараметрыВыполнения = Неопределено, Знач СохраняемыеПараметры = Неопределено, ОбъектыНазначения = Неопределено) Экспорт +Функция ВыполнитьСценарийВБезопасномРежиме(Знач КлючСессии, Знач АдресСценария, ПараметрыВыполнения = Неопределено, СохраняемыеПараметры = Неопределено, ОбъектыНазначения = Неопределено) Экспорт ПроверитьКорректностьВызоваПоОкружению(); Сценарий = ПолучитьИзВременногоХранилища(АдресСценария); ИсполняемыйОбъект = ДополнительныеОтчетыИОбработки.ПолучитьОбъектВнешнейОбработки( - Справочники.ДополнительныеОтчетыИОбработки.ПолучитьСсылку(КлючСессии) - ); + Справочники.ДополнительныеОтчетыИОбработки.ПолучитьСсылку(КлючСессии)); ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный.ВыполнитьСценарийБезопасногоРежима( - КлючСессии, Сценарий, ИсполняемыйОбъект, ПараметрыВыполнения, СохраняемыеПараметры, ОбъектыНазначения - ); + КлючСессии, Сценарий, ИсполняемыйОбъект, ПараметрыВыполнения, СохраняемыеПараметры, ОбъектыНазначения); КонецФункции @@ -349,17 +359,13 @@ ОписаниеАрхива.Вставить(ЭлементСодержимого.Имя, ИтерацияРаспаковкиАрхива( - ЭлементСодержимого.Путь + "\", Новый Соответствие(), ИдентификаторФормы - ) - ); + ЭлементСодержимого.Путь + "\", Новый Соответствие(), ИдентификаторФормы)); Иначе ОписаниеАрхива.Вставить(ЭлементСодержимого.Имя, ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ЭлементСодержимого.ПолноеИмя), - ИдентификаторФормы - ) - ); + ИдентификаторФормы)); КонецЕсли; КонецЦикла; @@ -373,14 +379,14 @@ Если ТипЗнч(ЭлементАрхива.Значение) = Тип("Соответствие") Тогда - ИмяПодкаталога = КаталогУпаковки + ЭлементАрхива.Имя; + ИмяПодкаталога = КаталогУпаковки + ЭлементАрхива.Ключ; СоздатьКаталог(ИмяПодкаталога); ИтерацияУпаковкиАрхива(ЭлементАрхива.Значение, ИмяПодкаталога + "\"); Иначе ПолучитьИзВременногоХранилища(ЭлементАрхива.Значение).Записать( - КаталогУпаковки + ЭлементАрхива.Имя); + КаталогУпаковки + ЭлементАрхива.Ключ); КонецЕсли; @@ -398,4 +404,4 @@ КонецЕсли; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс/Module.bsl index ab1ea9132..b60b2d2cb 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс/Module.bsl @@ -587,7 +587,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеПовтИсп/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеПовтИсп/Module.bsl index 42b50aad8..759e72f59 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеПовтИсп/Module.bsl @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////////////// -// Подсистема "Дополнительные отчеты и обработки", расщирение безопасного режима. +// Подсистема "Дополнительные отчеты и обработки", расширение безопасного режима. // Процедуры и функции с повторным использованием возвращаемых значений. // //////////////////////////////////////////////////////////////////////////////// @@ -62,7 +62,7 @@ // Описание - строка, подробное описание вида разрешения, // Параметры - ТаблицаЗначений, колонки: // Имя - строка, имя свойства, определенного для ТипаXDTO, -// Описание - строка, описание последсвтий параметра разрешения для +// Описание - строка, описание последствий параметра разрешения для // указанного значения параметра, // ОписаниеЛюбогоЗначения - строка, описание последствий параметра // разрешения для неуказанного значения параметра. @@ -87,9 +87,7 @@ "Представление,Описание,Параметры", Представление, Описание, - Параметры - ) - ); + Параметры)); // Конец {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}GetFileFromInternet @@ -117,16 +115,14 @@ Представление, Описание, Последствия, - Параметры - ) - ); + Параметры)); // Конец {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}SendFileToInternet // {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}SoapConnect Представление = НСтр("ru = 'Обращение к веб-сервисам в сети Интернет'"); - Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено обращаться к веб-сервисам, расположенным в сети Интернент (при этом возможно как получение дополнительным отчетом или обработкой информации из сети Интернет, так и передача.'"); + Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено обращаться к веб-сервисам, расположенным в сети Интернет (при этом возможно как получение дополнительным отчетом или обработкой информации из сети Интернет, так и передача.'"); Последствия = НСтр("ru = 'Внимание! Обращение к веб-сервисам потенциально может использоваться дополнительным |отчетом или обработкой для совершения действий, не предполагаемых администратором |информационной базы. @@ -145,16 +141,14 @@ Представление, Описание, Последствия, - Параметры - ) - ); + Параметры)); // Конец {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}SoapConnect // {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}CreateComObject Представление = НСтр("ru = 'Создание COM-объекта'"); - Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено использовать механизмы внешнего программного обеспечения с попощью COM-соединения'"); + Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено использовать механизмы внешнего программного обеспечения с помощью COM-соединения'"); Последствия = НСтр("ru = 'Внимание! Использование средств стороннего программного обеспечения может использоваться |дополнительным отчетом или обработкой для совершения действий, не предполагаемых администратором |информационной базы, а также для несанкционированного обхода ограничений, накладываемых на дополнительную обработку @@ -174,16 +168,14 @@ Представление, Описание, Последствия, - Параметры - ) - ); + Параметры)); // Конец {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}CreateComObject // {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}AttachAddin Представление = НСтр("ru = 'Создание объекта внешней компоненту'"); - Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено использовать механизмы внешнего программного обеспечения с попощью создания объекта внешней компоненты, поставляемой в макете конфигурации'"); + Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено использовать механизмы внешнего программного обеспечения с помощью создания объекта внешней компоненты, поставляемой в макете конфигурации'"); Последствия = НСтр("ru = 'Внимание! Использование средств стороннего программного обеспечения может использоваться |дополнительным отчетом или обработкой для совершения действий, не предполагаемых администратором |информационной базы, а также для несанкционированного обхода ограничений, накладываемых на дополнительную обработку @@ -203,41 +195,35 @@ Представление, Описание, Последствия, - Параметры - ) - ); + Параметры)); // Конец {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}AttachAddin // {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}GetFileFromExternalSoftware Представление = НСтр("ru = 'Получение файлов из внешнего объекта'"); - Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено получать файлы из внешнего программного обеспечения (например, с помощью COM-соединения или внешней коспоненты)'"); + Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено получать файлы из внешнего программного обеспечения (например, с помощью COM-соединения или внешней компоненты)'"); Результат.Вставить( ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.ТипПолучениеФайлаИзВнешнегоОбъекта(), Новый Структура( "Представление,Описание", Представление, - Описание - ) - ); + Описание)); // Конец {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}GetFileFromExternalSoftware // {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}SendFileToExternalSoftware Представление = НСтр("ru = 'Передача файлов во внешний объект'"); - Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено передавать файлы во внешнее программное обеспечение (например, с помощью COM-соединения или внешней коспоненты)'"); + Описание = НСтр("ru = 'Дополнительному отчету или обработке будет разрешено передавать файлы во внешнее программное обеспечение (например, с помощью COM-соединения или внешней компоненты)'"); Результат.Вставить( ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.ТипПередачаФайлаВоВнешнийОбъект(), Новый Структура( "Представление,Описание", Представление, - Описание - ) - ); + Описание)); // Конец {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}SendFileToExternalSoftware @@ -256,9 +242,7 @@ "Представление,Описание,Параметры,ОтображатьПользователю", Представление, Описание, - Параметры - ) - ); + Параметры)); // Конец {http://www.1c.ru/1cFresh/ApplicationExtensions/Permissions/a.b.c.d}SendFileToInternet @@ -287,4 +271,4 @@ Возврат Результат; -КонецФункции \ No newline at end of file +КонецФункции diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный/Module.bsl index 18783ea00..50ecc9ff1 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебный/Module.bsl @@ -23,12 +23,11 @@ ОписанияРазрешений = Неопределено; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебныйВМоделиСервиса"); - Модуль.ПолучитьРазрешенияСессииРасширенияБезопасногоРежима( + МодульДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебныйВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебныйВМоделиСервиса.ПолучитьРазрешенияСессииРасширенияБезопасногоРежима( КлючСессии, ОписанияРазрешений, - СтандартнаяОбработка - ); + СтандартнаяОбработка); КонецЕсли; @@ -55,8 +54,7 @@ ТипРазрешения = ФабрикаXDTO.Тип( ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.Пакет(), - ОписаниеРазрешения.ВидРазрешения - ); + ОписаниеРазрешения.ВидРазрешения); Результат.Вставить(ТипРазрешения, ОписаниеРазрешения.Параметры.Получить()); @@ -67,7 +65,7 @@ КонецФункции // Только для внутреннего использования. -Функция ВыполнитьСценарийБезопасногоРежима(Знач КлючСессии, Знач Сценарий, Знач ИсполняемыйОбъект, ПараметрыВыполнения, Знач СохраняемыеПараметры = Неопределено, ОбъектыНазначения = Неопределено) Экспорт +Функция ВыполнитьСценарийБезопасногоРежима(Знач КлючСессии, Знач Сценарий, Знач ИсполняемыйОбъект, ПараметрыВыполнения, СохраняемыеПараметры = Неопределено, ОбъектыНазначения = Неопределено) Экспорт Исключения = ДополнительныеОтчетыИОбработкиВБезопасномРежимеПовтИсп.ПолучитьРазрешенныеМетоды(); @@ -96,8 +94,7 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Неизвестный вид действия для этапа сценария: %1'"), - ШагСценария.ВидДействия - ); + ШагСценария.ВидДействия); КонецЕсли; @@ -142,8 +139,7 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Неизвестный параметр для этапа сценария: %1'"), - ПараметрМетода.Вид - ); + ПараметрМетода.Вид); КонецЕсли; @@ -248,9 +244,7 @@ ОписаниеРазрешения = ОписанияРазрешений.Получить( ФабрикаXDTO.Тип( ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.Пакет(), - ВидРазрешения - ) - ); + ВидРазрешения)); ПредставлениеРазрешения = ОписаниеРазрешения.Представление; @@ -299,9 +293,7 @@ ОписаниеРазрешения = ОписанияРазрешений.Получить( ФабрикаXDTO.Тип( ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.Пакет(), - ВидРазрешения - ) - ); + ВидРазрешения)); ПредставлениеРазрешения = ОписаниеРазрешения.Представление; РасшифровкаРазрешения = ОписаниеРазрешения.Описание; @@ -313,16 +305,13 @@ Результат = Результат + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( "<P><STRONG><FONT size=4>%1</FONT></STRONG></P>", - ПредставлениеРазрешения - ); + ПредставлениеРазрешения); Результат = Результат + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( "<P><FONT size=2>%1%2</FONT></P>", РасшифровкаРазрешения, ?( ЕстьПараметры, НСтр("ru = ' со следующими ограничениями:'"), - "." - ) - ); + ".")); Если ЕстьПараметры Тогда @@ -336,14 +325,12 @@ Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда ОписаниеПараметра = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - Параметр.Описание, ЗначениеПараметра - ); + Параметр.Описание, ЗначениеПараметра); Иначе ОписаниеПараметра = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - "<B>%1</B>", Параметр.ОписаниеЛюбогоЗначения - ); + "<B>%1</B>", Параметр.ОписаниеЛюбогоЗначения); КонецЕсли; @@ -362,8 +349,7 @@ Результат = Результат + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( "<P><FONT size=2><EM>%1</EM></FONT></P>", - ОписаниеПоследствий - ); + ОписаниеПоследствий); КонецЕсли; @@ -383,8 +369,7 @@ Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Дополнительному отчету или обработке %1 не предоставлено разрешение {%2}%3!'"), - Строка(КлючСессии), ТипТребуемогоРазрешения.URIПространстваИмен, ТипТребуемогоРазрешения.Имя - ); + Строка(КлючСессии), ТипТребуемогоРазрешения.URIПространстваИмен, ТипТребуемогоРазрешения.Имя); КонецФункции @@ -396,8 +381,7 @@ |не предоставлено разрешение {%2}%3 при значении |ограничителя %4 равном %5!'"), Строка(КлючСессии), ТипТребуемогоРазрешения.URIПространстваИмен, ТипТребуемогоРазрешения.Имя, - ПроверяемоеОграничение.ЛокальноеИмя, Ограничитель - ); + ПроверяемоеОграничение.ЛокальноеИмя, Ограничитель); КонецФункции @@ -408,8 +392,7 @@ НСтр("ru = 'Для дополнительного отчета или обработки %1 |при предоставлении разрешения {%2}%3 не был указан обязательный ограничитель %4!'"), Строка(КлючСессии), ТипТребуемогоРазрешения.URIПространстваИмен, ТипТребуемогоРазрешения.Имя, - ПроверяемоеОграничение.ЛокальноеИмя - ); + ПроверяемоеОграничение.ЛокальноеИмя); КонецФункции diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебныйВМоделиСервиса/Module.bsl index 5108f4405..4adb9a8c5 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебныйВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебныйВМоделиСервиса/Module.bsl @@ -36,8 +36,7 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не обнаружена поставляемая обработка для ключа запуска %1!'"), - Строка(КлючСессии) - ); + Строка(КлючСессии)); КонецЕсли; diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервиса/Module.bsl index ee4751ca5..bac347ed5 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервиса/Module.bsl @@ -221,12 +221,13 @@ НачатьТранзакцию(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Инициирована установка поставляемой обработки в область данных'"), + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Инициирована установка поставляемой обработки в область данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , Строка(ОписаниеИнсталляции.Идентификатор), - Строка(ОписаниеИнсталляции.Инсталляция) - ); + Строка(ОписаниеИнсталляции.Инсталляция)); Попытка @@ -286,9 +287,7 @@ Если ИспользуемаяОбработка.ЭтоНовый() Тогда ИспользуемаяОбработка.УстановитьСсылкуНового( Справочники.ДополнительныеОтчетыИОбработки.ПолучитьСсылку( - ОписаниеИнсталляции.Инсталляция - ) - ); + ОписаниеИнсталляции.Инсталляция)); КонецЕсли; // Устанавливается связь между поставляемой и используемой обработкой @@ -336,8 +335,7 @@ // Отправляется сообщение в МС об успешной установке обработки в области данных Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс.СообщениеДополнительныйОтчетИлиОбработкаУстановлена() - ); + СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс.СообщениеДополнительныйОтчетИлиОбработкаУстановлена()); Сообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); Сообщение.Body.Extension = ПоставляемаяОбработка.УникальныйИдентификатор(); @@ -346,31 +344,29 @@ СообщенияВМоделиСервиса.ОтправитьСообщение( Сообщение, РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса(), - Истина - ); + Истина); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Установка в область данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Установка в область данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , ПоставляемаяОбработка, - Строка(ОписаниеИнсталляции.Инсталляция) - ); + Строка(ОписаниеИнсталляции.Инсталляция)); Исключение ТекстИсключения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Ошибка установки в область данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Ошибка установки в область данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , ПоставляемаяОбработка, - Строка(ОписаниеИнсталляции.Инсталляция) + Символы.ПС + Символы.ВК + ТекстИсключения - ); + Строка(ОписаниеИнсталляции.Инсталляция) + Символы.ПС + Символы.ВК + ТекстИсключения); // Отправляется сообщение в МС об ошибке установки обработки в области данных Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс.СообщениеОшибкаУстановкиДополнительногоОтчетаИлиОбработки() - ); + СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс.СообщениеОшибкаУстановкиДополнительногоОтчетаИлиОбработки()); Сообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); Сообщение.Body.Extension = ПоставляемаяОбработка.УникальныйИдентификатор(); @@ -380,8 +376,7 @@ СообщенияВМоделиСервиса.ОтправитьСообщение( Сообщение, РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса(), - Истина - ); + Истина); КонецПопытки; @@ -401,20 +396,19 @@ ВариантыДополнительногоОтчета, Ответственный, ОписаниеИнсталляции.Представление, - ОписаниеИнсталляции.Инсталляция - ); + ОписаниеИнсталляции.Инсталляция); Менеджер = РегистрыСведений.ОчередьИнсталляцииПоставляемыхДополнительныхОтчетовИОбработокВОбластиДанных.СоздатьМенеджерЗаписи(); Менеджер.ПоставляемаяОбработка = ПоставляемаяОбработка; Менеджер.ПараметрыИнсталляции = Новый ХранилищеЗначения(Контекст); Менеджер.Записать(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Установка в область данных отложена'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Установка в область данных отложена'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , Строка(ОписаниеИнсталляции.Идентификатор), - Строка(ОписаниеИнсталляции.Инсталляция) - ); + Строка(ОписаниеИнсталляции.Инсталляция)); КонецЕсли; @@ -464,28 +458,27 @@ НаборЗаписей.Записать(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Удаление из области данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Удаление из области данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , ПоставляемаяОбработка, - Строка(ИдентификаторИспользуемойОбработки) - ); + Строка(ИдентификаторИспользуемойОбработки)); Исключение ТекстИсключения = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Ошибка удаления из область данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Ошибка удаления из область данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , ПоставляемаяОбработка, - Строка(ИдентификаторИспользуемойОбработки) + Символы.ПС + Символы.ВК + ТекстИсключения - ); + Строка(ИдентификаторИспользуемойОбработки) + Символы.ПС + Символы.ВК + ТекстИсключения); // Отправляется сообщение в МС об ошибке установки обработки в области данных Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс.СообщениеОшибкаУдаленияДополнительногоОтчетаИлиОбработки() - ); + СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс.СообщениеОшибкаУдаленияДополнительногоОтчетаИлиОбработки()); Сообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); Сообщение.Body.Extension = ПоставляемаяОбработка.УникальныйИдентификатор(); @@ -494,8 +487,7 @@ СообщенияВМоделиСервиса.ОтправитьСообщение( Сообщение, - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса() - ); + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); КонецПопытки; @@ -510,6 +502,12 @@ КонецПроцедуры +// Выполняет удаление поставляемой дополнительной обработки из всех областей данных +// текущей информационной базы. +// +// Параметры: +// ПоставляемаяОбработка - СправочникСсылка.ПоставляемыеДополнительныеОтчетыИОбработки. +// Процедура ОтозватьПоставляемуюДополнительнуюОбработку(Знач ПоставляемаяОбработка) Экспорт НачатьТранзакцию(); @@ -561,7 +559,7 @@ // СтандартнаяОбработка - Булево, в этот параметр в данной процедуре устанавливается флаг выполнения // стандартной обработки проверки права. // -Процедура ПриПроверкеПраваДобавления(Знач ДополнительнаяОбработка = Неопределено, Результат, СтандартнаяОбработка) Экспорт +Процедура ПриПроверкеПраваДобавления(Знач ДополнительнаяОбработка, Результат, СтандартнаяОбработка) Экспорт Если ОбменДаннымиПовтИсп.ЭтоАвтономноеРабочееМесто() Тогда Результат = Ложь; @@ -842,11 +840,11 @@ Процедура ПриЗаполненииТаблицыПараметровИБ(Знач ТаблицаПараметров) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "ИспользованиеКаталогаДополнительныхОтчетовИОбработокВМоделиСервиса"); - Модуль.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "МинимальныйИнтервалРегламентныхЗаданийДополнительныхОтчетовИОбработокВМоделиСервиса"); - Модуль.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "НезависимоеИспользованиеДополнительныхОтчетовИОбработокВМоделиСервиса"); - Модуль.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "РазрешитьВыполнениеДополнительныхОтчетовИОбработокРегламентнымиЗаданиямиВМоделиСервиса"); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "ИспользованиеКаталогаДополнительныхОтчетовИОбработокВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "МинимальныйИнтервалРегламентныхЗаданийДополнительныхОтчетовИОбработокВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "НезависимоеИспользованиеДополнительныхОтчетовИОбработокВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "РазрешитьВыполнениеДополнительныхОтчетовИОбработокРегламентнымиЗаданиямиВМоделиСервиса"); КонецЕсли; КонецПроцедуры @@ -1003,8 +1001,7 @@ // Отправим в МС сообщение об удалении обработки из области данных Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс.СообщениеДополнительныйОтчетИлиОбработкаУдалена() - ); + СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс.СообщениеДополнительныйОтчетИлиОбработкаУдалена()); Сообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); Сообщение.Body.Extension = ПоставляемаяОбработка.УникальныйИдентификатор(); @@ -1012,8 +1009,7 @@ СообщенияВМоделиСервиса.ОтправитьСообщение( Сообщение, - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса() - ); + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); КонецЕсли; @@ -1272,12 +1268,13 @@ Загружать = Ложь; - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Загрузка поставляемой обработки отменена'"), + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Загрузка поставляемой обработки отменена'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , - НСтр("ru = 'Поставляемая обработка несовместима с данной конфигурацией'") + Символы.ПС + Символы.ВК + ОписаниеПоставляемойОбработки.Совместимость - ); + НСтр("ru = 'Поставляемая обработка несовместима с данной конфигурацией'") + Символы.ПС + Символы.ВК + ОписаниеПоставляемойОбработки.Совместимость); КонецЕсли; @@ -1371,12 +1368,12 @@ ТаблицаСовместимости = ДополнительныеОтчетыИОбработкиВМоделиСервисаСовместимость.ПрочитатьТаблицуСовместимости( ТаблицаСовместимостиXDTO); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Загрузка поставляемой обработки'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Загрузка поставляемой обработки'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , - НСтр("ru = 'Инициирована загрузка поставляемой обработки'") + Символы.ПС + Символы.ВК + ОписаниеПоставляемойОбработки.Манифест - ); + НСтр("ru = 'Инициирована загрузка поставляемой обработки'") + Символы.ПС + Символы.ВК + ОписаниеПоставляемойОбработки.Манифест); // Получим СправочникОбъект.ПоставляемыеДополнительныеОтчетыИОбработки СсылкаПоставляемойОбработки = Справочники.ПоставляемыеДополнительныеОтчетыИОбработки.ПолучитьСсылку( @@ -1437,12 +1434,12 @@ ПоставляемаяОбработка.ВерсияGUID = ОписаниеПоставляемойОбработки.Версия; ПоставляемаяОбработка.Записать(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Загрузка поставляемой обработки завершена'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Загрузка поставляемой обработки завершена'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , ПоставляемаяОбработка.Ссылка, - НСтр("ru = 'Завершена загрузка поставляемой обработки'") + Символы.ПС + Символы.ВК + ОписаниеПоставляемойОбработки.Манифест - ); + НСтр("ru = 'Завершена загрузка поставляемой обработки'") + Символы.ПС + Символы.ВК + ОписаниеПоставляемойОбработки.Манифест); // Планирование актуализации настроек используемых обработок ИспользуемыеОбработки = ПереченьИнсталляций(ПоставляемаяОбработка.Ссылка); @@ -1459,12 +1456,12 @@ ОчередьЗаданий.ДобавитьЗадание(ПараметрыЗадания); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Запланирована актуализация настроек поставляемой обработки'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Запланирована актуализация настроек поставляемой обработки'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , ПоставляемаяОбработка.Ссылка, - НСтр("ru = 'Область данных:'") + ИнсталляцияОбработки.ОбластьДанных - ); + НСтр("ru = 'Область данных:'") + ИнсталляцияОбработки.ОбластьДанных); КонецЦикла; @@ -1478,8 +1475,7 @@ "Идентификатор,Представление,Инсталляция", ПоставляемаяОбработка.Ссылка.УникальныйИдентификатор(), Контекст.Представление, - Контекст.Инсталляция - ); + Контекст.Инсталляция); ПараметрыМетода = Новый Массив; ПараметрыМетода.Добавить(ОписаниеИнсталляции); @@ -1499,12 +1495,13 @@ ОчередьЗаданий.ДобавитьЗадание(ПараметрыЗадания); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Запланирована отложенная установка поставляемой обработки в область данных'"), + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Поставляемые дополнительные отчеты и обработки.Запланирована отложенная установка поставляемой обработки в область данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , ПоставляемаяОбработка.Ссылка, - НСтр("ru = 'Область данных:'") + ЭлементОчереди.ОбластьДанных - ); + НСтр("ru = 'Область данных:'") + ЭлементОчереди.ОбластьДанных); КонецЦикла; @@ -1520,4 +1517,4 @@ Возврат "ДОиО"; // Не локализуется -КонецФункции \ No newline at end of file +КонецФункции diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифест/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифест/Module.bsl index 88ee525fc..493ec00bd 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифест/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифест/Module.bsl @@ -33,7 +33,7 @@ // Примечание: // Помимо кода БСП, данная функция может вызываться из внешней обработки // ПодготовкаДополнительныхОтчетовИОбработокКПубликацииВМоделиСервиса.epf, входящей -// в комлект поставки менеджера сервиса. При изменении структуры параметров данной +// в комплект поставки менеджера сервиса. При изменении структуры параметров данной // функции необходимо актуализировать их и в данной внешней обработке. // Функция СформироватьМанифест(Знач ОбъектОбработки, Знач ОбъектВерсии, Знач ВариантыОтчета = Неопределено, Знач РасписанияКоманд = Неопределено, Знач РазрешенияОбработки = Неопределено) Экспорт @@ -105,8 +105,7 @@ ОбъектНазначенияXDTO.Enabled = ( ВыбранныеРазделы.Найти( ИдентификаторОбъектаМетаданных, "Раздел" - ) <> Неопределено - ); + ) <> Неопределено); НазначениеXDTO.Objects.Добавить(ОбъектНазначенияXDTO); @@ -155,8 +154,7 @@ ОбъектНазначенияXDTO.Enabled = ( ВыбранныеОбъектыНазначения.Найти( ИдентификаторОбъектаМетаданных, "ОбъектНазначения" - ) <> Неопределено - ); + ) <> Неопределено); НазначениеXDTO.Objects.Добавить(ОбъектНазначенияXDTO); @@ -201,8 +199,7 @@ Если РасписанияКоманд.Свойство(ОписаниеКоманды.Идентификатор, РасписаниеКоманды) Тогда КомандаXDTO.DefaultSettings = ФабрикаXDTO.Создать( - ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНастройкиКоманды() - ); + ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНастройкиКоманды()); КомандаXDTO.DefaultSettings.Schedule = СериализаторXDTO.ЗаписатьXDTO(РасписаниеКоманды); @@ -274,9 +271,7 @@ РазрешениеXDTO = ФабрикаXDTO.Создать( ФабрикаXDTO.Тип( ДополнительныеОтчетыИОбработкиВБезопасномРежимеИнтерфейс.Пакет(), - Разрешение.ВидРазрешения - ) - ); + Разрешение.ВидРазрешения)); Параметры = Разрешение.Параметры.Получить(); Если Параметры <> Неопределено Тогда @@ -376,4 +371,4 @@ КонецЦикла; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс/Module.bsl index 484832461..9a41d1183 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс/Module.bsl @@ -227,7 +227,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаСовместимостьИнтерфейс/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаСовместимостьИнтерфейс/Module.bsl index a2d5aa859..b534c21dc 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаСовместимостьИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиВМоделиСервисаСовместимостьИнтерфейс/Module.bsl @@ -115,7 +115,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиент/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиент/Module.bsl index 8cbc578c3..6b8bbc41b 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиент/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиент/Module.bsl @@ -35,8 +35,7 @@ ОткрытьФорму( "ОбщаяФорма.ДополнительныеОтчетыИОбработки", Параметры, - ПараметрыВыполненияКоманды.Источник - ); + ПараметрыВыполненияКоманды.Источник); КонецПроцедуры @@ -136,8 +135,7 @@ ТекстОшибки = ТекстОшибки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Передан тип ""%1"", ожидался ""%2"".'"), Строка(ТипЗнч(ДополнительнаяОбработкаСсылка)), - Строка(Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки")) - ); + Строка(Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки"))); Иначе ТекстОшибки = ТекстОшибки + НСтр("ru = 'Передана пустая ссылка. Вероятно, обработка была открыта напрямую.'"); КонецЕсли; @@ -195,8 +193,7 @@ ТекстВопроса = СтрЗаменить( НСтр("ru = 'Для выполнения команды ""%1"" необходимо записать данные.'"), "%1", - ВыполняемаяКоманда.Представление - ); + ВыполняемаяКоманда.Представление); Кнопки = Новый СписокЗначений; Кнопки.Добавить(1, НСтр("ru = 'Записать и продолжить'")); @@ -296,6 +293,31 @@ КонецПроцедуры +// Обработчик внешней команды печати. +// +// Параметры: +// ПараметрыКоманды - Структура - структура из строки таблицы команд, см. ДополнительныеОтчетыИОбработки.ПриПолученииКомандПечати +// Форма - УправляемаяФорма - форма, в которой выполняется команда печати. +Функция ВыполнитьНазначаемуюКомандуПечати(ВыполняемаяКоманда, Форма) Экспорт + + ВыполняемаяКоманда.Вставить("ЭтоОтчет", Ложь); + ВыполняемаяКоманда.Вставить("Вид", ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма")); + Для Каждого КлючИЗначение Из ВыполняемаяКоманда.ДополнительныеПараметры Цикл + Если НЕ ВыполняемаяКоманда.Свойство(КлючИЗначение.Ключ) Тогда + ВыполняемаяКоманда.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + КонецЕсли; + КонецЦикла; + + Если ВыполняемаяКоманда.ДополнительныеПараметры.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ОткрытиеФормы") Тогда + ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати); + ИначеЕсли ВыполняемаяКоманда.ДополнительныеПараметры.ВариантЗапуска = ПредопределенноеЗначение("Перечисление.СпособыВызоваДополнительныхОбработок.ВызовКлиентскогоМетода") Тогда + ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати); + Иначе + ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, Форма, ВыполняемаяКоманда.ОбъектыПечати); + КонецЕсли; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -353,19 +375,150 @@ КонецЕсли; КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// -// Условные вызовы в друге подсистемы - -// Открывает форму размещения нескольких вариантов отчетов по разделам КИ. -// -// Параметры -// МассивВариантов (Массив) См. описание вызываемых процедур и функций. -// -Процедура ПриОткрытииДиалогаРазмещенияВариантовДополнительныхОтчетовВРазделах(МассивВариантов, Модально = Ложь) Экспорт +// Открывает форму обработки. +// +Процедура ВыполнитьОткрытиеФормыОбработки(ВыполняемаяКоманда, ЭтаФорма, ОбъектыНазначения) Экспорт + ПараметрыОбработки = Новый Структура("ИдентификаторКоманды, ДополнительнаяОбработкаСсылка, ИмяФормы, КлючСессии"); + ПараметрыОбработки.ИдентификаторКоманды = ВыполняемаяКоманда.Идентификатор; + ПараметрыОбработки.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка; + ПараметрыОбработки.ИмяФормы = ЭтаФорма.ИмяФормы; + ПараметрыОбработки.КлючСессии = ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка.УникальныйИдентификатор(); - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетовКлиент"); - Модуль.ОткрытьДиалогРазмещенияВариантовВРазделах(МассивВариантов, , Модально); + Если ТипЗнч(ОбъектыНазначения) = Тип("Массив") Тогда + ПараметрыОбработки.Вставить("ОбъектыНазначения", ОбъектыНазначения); КонецЕсли; + #Если ТолстыйКлиентОбычноеПриложение Тогда + ВнешняяОбработка = ДополнительныеОтчетыИОбработкиВызовСервера.ПолучитьОбъектВнешнейОбработки(ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка); + ФормаОбработки = ВнешняяОбработка.ПолучитьФорму(, ЭтаФорма); + Если ФормаОбработки = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для отчета или обработки ""%1"" не назначена основная форма, + |или основная форма не предназначена для запуска в обычном приложении. + |Команда ""%2"" не может быть выполнена.'"), + Строка(ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка), + ВыполняемаяКоманда.Представление); + КонецЕсли; + ФормаОбработки.Открыть(); + ФормаОбработки = Неопределено; + #Иначе + ИмяОбработки = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка); + Если ВыполняемаяКоманда.ЭтоОтчет Тогда + ОткрытьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма", ПараметрыОбработки, ЭтаФорма); + Иначе + ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма", ПараметрыОбработки, ЭтаФорма); + КонецЕсли; + #КонецЕсли +КонецПроцедуры + +// Выполняет клиентский метод обработки. +// +Процедура ВыполнитьКлиентскийМетодОбработки(ВыполняемаяКоманда, ЭтаФорма, ОбъектыНазначения) Экспорт + + ПоказатьОповещениеПриВыполненииКоманды(ВыполняемаяКоманда); + + ПараметрыОбработки = Новый Структура("ИдентификаторКоманды, ДополнительнаяОбработкаСсылка, ИмяФормы"); + ПараметрыОбработки.ИдентификаторКоманды = ВыполняемаяКоманда.Идентификатор; + ПараметрыОбработки.ДополнительнаяОбработкаСсылка = ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка; + ПараметрыОбработки.ИмяФормы = ЭтаФорма.ИмяФормы; + + Если ТипЗнч(ОбъектыНазначения) = Тип("Массив") Тогда + ПараметрыОбработки.Вставить("ОбъектыНазначения", ОбъектыНазначения); + КонецЕсли; + + #Если ТолстыйКлиентОбычноеПриложение Тогда + ВнешняяОбработка = ДополнительныеОтчетыИОбработкиВызовСервера.ПолучитьОбъектВнешнейОбработки(ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка); + ФормаОбработки = ВнешняяОбработка.ПолучитьФорму(, ЭтаФорма); + Если ФормаОбработки = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для отчета или обработки ""%1"" не назначена основная форма, + |или основная форма не предназначена для запуска в обычном приложении. + |Команда ""%2"" не может быть выполнена.'"), + Строка(ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка), + ВыполняемаяКоманда.Представление); + КонецЕсли; + #Иначе + ИмяОбработки = ДополнительныеОтчетыИОбработкиВызовСервера.ПодключитьВнешнююОбработку(ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка); + Если ВыполняемаяКоманда.ЭтоОтчет Тогда + ФормаОбработки = ПолучитьФорму("ВнешнийОтчет."+ ИмяОбработки +".Форма", ПараметрыОбработки, ЭтаФорма); + Иначе + ФормаОбработки = ПолучитьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма", ПараметрыОбработки, ЭтаФорма); + КонецЕсли; + #КонецЕсли + + Если ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ДополнительнаяОбработка") + Или ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет") Тогда + + ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор); + + ИначеЕсли ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.СозданиеСвязанныхОбъектов") Тогда + + СозданныеОбъекты = Новый Массив; + + ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения, СозданныеОбъекты); + + ТипыСозданныхОбъектов = Новый Массив; + + Для Каждого СозданныйОбъект Из СозданныеОбъекты Цикл + Тип = ТипЗнч(СозданныйОбъект); + Если ТипыСозданныхОбъектов.Найти(Тип) = Неопределено Тогда + ТипыСозданныхОбъектов.Добавить(Тип); + КонецЕсли; + КонецЦикла; + + Для Каждого Тип Из ТипыСозданныхОбъектов Цикл + ОповеститьОбИзменении(Тип); + КонецЦикла; + + ИначеЕсли ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ПечатнаяФорма") Тогда + + ФормаОбработки.Печать(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения); + + ИначеЕсли ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.ЗаполнениеОбъекта") Тогда + + ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения); + + ТипыИзмененныхОбъектов = Новый Массив; + + Для Каждого ИзмененныйОбъект Из ОбъектыНазначения Цикл + Тип = ТипЗнч(ИзмененныйОбъект); + Если ТипыИзмененныхОбъектов.Найти(Тип) = Неопределено Тогда + ТипыИзмененныхОбъектов.Добавить(Тип); + КонецЕсли; + КонецЦикла; + + Для Каждого Тип Из ТипыИзмененныхОбъектов Цикл + ОповеститьОбИзменении(Тип); + КонецЦикла; + + ИначеЕсли ВыполняемаяКоманда.Вид = ПредопределенноеЗначение("Перечисление.ВидыДополнительныхОтчетовИОбработок.Отчет") Тогда + + ФормаОбработки.ВыполнитьКоманду(ВыполняемаяКоманда.Идентификатор, ОбъектыНазначения); + + КонецЕсли; + + ФормаОбработки = Неопределено; + +КонецПроцедуры + +// Формирует табличный документ в форме подсистемы "Печать". +// +Процедура ВыполнитьОткрытиеПечатнойФормы(ВыполняемаяКоманда, ЭтаФорма, ОбъектыНазначения) Экспорт + + СтандартнаяОбработка = Истина; + ДополнительныеОтчетыИОбработкиКлиентПереопределяемый.ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы(ОбъектыНазначения, СтандартнаяОбработка); + Если СтандартнаяОбработка И Не УправлениеПечатьюКлиент.ПроверитьДокументыПроведены(ОбъектыНазначения) Тогда + Возврат; + КонецЕсли; + + ПараметрыИсточника = Новый Структура; + ПараметрыИсточника.Вставить("ИдентификаторКоманды", ВыполняемаяКоманда.Идентификатор); + ПараметрыИсточника.Вставить("ОбъектыНазначения", ОбъектыНазначения); + + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ИсточникДанных", ВыполняемаяКоманда.ДополнительныеПараметры.Ссылка); + ПараметрыОткрытия.Вставить("ПараметрыИсточника", ПараметрыИсточника); + + ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ЭтаФорма); + КонецПроцедуры diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентСервер/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентСервер/Module.bsl index 5cf0f6e1c..dddd0a00d 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиКлиентСервер/Module.bsl @@ -74,9 +74,9 @@ // Наименование подсистемы. // -Функция НаименованиеПодсистемы() Экспорт +Функция НаименованиеПодсистемы(КодЯзыка) Экспорт - Возврат НСтр("ru = 'Дополнительные отчеты и обработки'"); + Возврат НСтр("ru = 'Дополнительные отчеты и обработки'", ?(КодЯзыка = Неопределено, ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка(), КодЯзыка)); КонецФункции diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиРегламентныеЗадания/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиРегламентныеЗадания/Module.bsl index 2723248bc..3b2cd129c 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиРегламентныеЗадания/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиРегламентныеЗадания/Module.bsl @@ -16,9 +16,10 @@ // Функция СоздатьНовоеЗадание(Знач Наименование) Экспорт - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); - Возврат Модуль.СоздатьНовоеЗадание(); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И + ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); + Возврат МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса.СоздатьНовоеЗадание(); КонецЕсли; Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание("ЗапускДополнительныхОбработок"); @@ -38,9 +39,10 @@ // Функция ПолучитьИдентификаторЗадания(Знач Задание) Экспорт - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); - Возврат Модуль.ПолучитьИдентификаторЗадания(Задание); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И + ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); + Возврат МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса.ПолучитьИдентификаторЗадания(Задание); КонецЕсли; Возврат Задание.УникальныйИдентификатор; @@ -58,9 +60,10 @@ // Процедура УстановитьПараметрыЗадания(Задание, Использование, Наименование, Параметры, Расписание) Экспорт - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); - Модуль.УстановитьПараметрыЗадания(Задание, Использование, Параметры, Расписание); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И + ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса.УстановитьПараметрыЗадания(Задание, Использование, Параметры, Расписание); Возврат; КонецЕсли; @@ -86,9 +89,10 @@ // Функция ПолучитьПараметрыЗадания(Знач Задание) Экспорт - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); - Возврат Модуль.ПолучитьПараметрыЗадания(Задание); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И + ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); + Возврат МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса.ПолучитьПараметрыЗадания(Задание); КонецЕсли; Результат = Новый Структура(); @@ -110,9 +114,10 @@ // Функция НайтиЗадание(Знач Идентификатор) Экспорт - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); - Возврат Модуль.НайтиЗадание(Идентификатор); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() + И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); + Возврат МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса.НайтиЗадание(Идентификатор); КонецЕсли; Если НЕ ЗначениеЗаполнено(Идентификатор) Тогда @@ -134,9 +139,10 @@ // Процедура УдалитьЗадание(Знач Задание) Экспорт - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); - Модуль.УдалитьЗадание(Задание); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И + ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса.УдалитьЗадание(Задание); Возврат; КонецЕсли; diff --git a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса/Module.bsl index 04db77d00..e79c7c733 100644 --- a/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ДополнительныеОтчетыИОбработкиРегламентныеЗаданияВМоделиСервиса/Module.bsl @@ -56,8 +56,7 @@ Если Расписание.ТребуетсяВыполнение(ПроверяемаяДата, ИсходнаяДата) Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Расписание, задаваемое для выполнения команд дополнительного отчета или обработки в качестве заданий, должно быть не чаще, чем 1 раз в %1 секунд!'"), МинимальныйИнтервал - ); + НСтр("ru = 'Расписание, задаваемое для выполнения команд дополнительного отчета или обработки в качестве заданий, должно быть не чаще, чем 1 раз в %1 секунд!'"), МинимальныйИнтервал); КонецЕсли; @@ -122,4 +121,4 @@ ОчередьЗаданий.УдалитьЗадание(Задание); КонецЕсли; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git a/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl b/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl index 22aa48c23..2ee8cf99c 100644 --- a/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl +++ b/SSL/src/CommonModules/ЖурналРегистрации/Module.bsl @@ -30,14 +30,6 @@ МенеджерВладельца = ПараметрыОтчета.МенеджерВладельца; ДобавлятьДополнительныеКолонки = ПараметрыОтчета.ДобавлятьДополнительныеКолонки; - // Удаление ранее подготовленных временных данных - ОписанияАдресов = Журнал.ВыгрузитьКолонку("АдресДанных"); - Для каждого Адрес Из ОписанияАдресов Цикл - Если ЗначениеЗаполнено(Адрес) Тогда - УдалитьИзВременногоХранилища(Адрес); - КонецЕсли; - КонецЦикла; - // Подготовка Отбора Отбор = Новый Структура; Для Каждого ЭлементОтбора Из ОтборЖурналаНаКлиенте Цикл @@ -94,13 +86,15 @@ // Обработка данных специальных событий Если СобытиеЖурнала.Событие = "_$Access$_.Access" Тогда - СобытиеЖурнала.АдресДанных = ПоместитьВоВременноеХранилище(СобытиеЖурнала.Данные, УникальныйИдентификатор); + УстановитьСтрокуАдресаДанных(СобытиеЖурнала); + Если СобытиеЖурнала.Данные <> Неопределено Тогда СобытиеЖурнала.Данные = ?(СобытиеЖурнала.Данные.Данные = Неопределено, "", "..."); КонецЕсли; ИначеЕсли СобытиеЖурнала.Событие = "_$Access$_.AccessDenied" Тогда - СобытиеЖурнала.АдресДанных = ПоместитьВоВременноеХранилище(СобытиеЖурнала.Данные, УникальныйИдентификатор); + УстановитьСтрокуАдресаДанных(СобытиеЖурнала); + Если СобытиеЖурнала.Данные <> Неопределено Тогда Если СобытиеЖурнала.Данные.Свойство("Право") Тогда СобытиеЖурнала.Данные = НСтр("ru = 'Право:'") + " " + СобытиеЖурнала.Данные.Право; @@ -112,7 +106,8 @@ ИначеЕсли СобытиеЖурнала.Событие = "_$Session$_.Authentication" ИЛИ СобытиеЖурнала.Событие = "_$Session$_.AuthenticationError" Тогда - СобытиеЖурнала.АдресДанных = ПоместитьВоВременноеХранилище(СобытиеЖурнала.Данные, УникальныйИдентификатор); + УстановитьСтрокуАдресаДанных(СобытиеЖурнала); + СобытиеЖурналаДанные = ""; Если СобытиеЖурнала.Данные <> Неопределено Тогда Для каждого КлючИЗначение Из СобытиеЖурнала.Данные Цикл @@ -126,7 +121,8 @@ СобытиеЖурнала.Данные = СобытиеЖурналаДанные; ИначеЕсли СобытиеЖурнала.Событие = "_$User$_.Delete" Тогда - СобытиеЖурнала.АдресДанных = ПоместитьВоВременноеХранилище(СобытиеЖурнала.Данные, УникальныйИдентификатор); + УстановитьСтрокуАдресаДанных(СобытиеЖурнала); + СобытиеЖурналаДанные = ""; Если СобытиеЖурнала.Данные <> Неопределено Тогда Для каждого КлючИЗначение Из СобытиеЖурнала.Данные Цикл @@ -138,7 +134,8 @@ ИначеЕсли СобытиеЖурнала.Событие = "_$User$_.New" ИЛИ СобытиеЖурнала.Событие = "_$User$_.Update" Тогда - СобытиеЖурнала.АдресДанных = ПоместитьВоВременноеХранилище(СобытиеЖурнала.Данные, УникальныйИдентификатор); + УстановитьСтрокуАдресаДанных(СобытиеЖурнала); + ИмяПользователяИБ = ""; Если СобытиеЖурнала.Данные <> Неопределено Тогда СобытиеЖурнала.Данные.Свойство("Имя", ИмяПользователяИБ); @@ -347,20 +344,26 @@ КонецЕсли; КонецЕсли; - Если ИмяОграничения = "Событие" - И СписокОграничений.Количество() > 5 Тогда - ПредставлениеОтбора = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Если ИмяОграничения = "Событие" И СписокОграничений.Количество() > 5 Тогда + + Ограничение = ПредставлениеОтбора + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'События (%1)'"), СписокОграничений.Количество()); + + ИначеЕсли ИмяОграничения = "Сеанс" И СписокОграничений.Количество() > 3 Тогда + + Ограничение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Сеансы (%1)'"), СписокОграничений.Количество()); + Иначе - + Для Каждого ЭлементСписка Из СписокОграничений Цикл Если Не ПустаяСтрока(Ограничение) Тогда Ограничение = Ограничение + ", "; КонецЕсли; - Если ВРег(ИмяОграничения) = ВРег("Сеанс") - ИЛИ ВРег(ИмяОграничения) = ВРег("Уровень") + Если (ВРег(ИмяОграничения) = ВРег("Сеанс") + ИЛИ ВРег(ИмяОграничения) = ВРег("Уровень")) И ПустаяСтрока(Ограничение) Тогда Ограничение = НСтр("ru = '[ИмяОграничения]: [Значение]'"); @@ -375,15 +378,46 @@ КонецЕсли; КонецЦикла; - - Если Не ПустаяСтрока(ПредставлениеОтбора) Тогда - ПредставлениеОтбора = ПредставлениеОтбора + "; "; - КонецЕсли; - - ПредставлениеОтбора = ПредставлениеОтбора + Ограничение; КонецЕсли; - + + Если Не ПустаяСтрока(ПредставлениеОтбора) Тогда + ПредставлениеОтбора = ПредставлениеОтбора + "; "; + КонецЕсли; + + ПредставлениеОтбора = ПредставлениеОтбора + Ограничение; + КонецЕсли; КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Вспомогательные процедуры и функции + +// Только для внутреннего использования. +// +Процедура ПоместитьДанныеВоВременноеХранилище(СобытияЖурнала, УникальныйИдентификатор) Экспорт + + Для Каждого СтрокаСобытие Из СобытияЖурнала Цикл + Если ПустаяСтрока(СтрокаСобытие.АдресДанных) Тогда + АдресДанных = ""; + Иначе + ЧтениеXML = Новый ЧтениеXML(); + ЧтениеXML.УстановитьСтроку(СтрокаСобытие.АдресДанных); + АдресДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML); + КонецЕсли; + СтрокаСобытие.АдресДанных = ПоместитьВоВременноеХранилище(АдресДанных, УникальныйИдентификатор); + КонецЦикла; + +КонецПроцедуры + +// Только для внутреннего использования +// +Процедура УстановитьСтрокуАдресаДанных(СобытиеЖурнала) + + ЗаписьXML = Новый ЗаписьXML(); + ЗаписьXML.УстановитьСтроку(); + СериализаторXDTO.ЗаписатьXML(ЗаписьXML, СобытиеЖурнала.Данные); + СобытиеЖурнала.АдресДанных = ЗаписьXML.Закрыть(); + +КонецПроцедуры diff --git a/SSL/src/CommonModules/ЖурналРегистрацииКлиент/Module.bsl b/SSL/src/CommonModules/ЖурналРегистрацииКлиент/Module.bsl index c272a8c32..6b24bb455 100644 --- a/SSL/src/CommonModules/ЖурналРегистрацииКлиент/Module.bsl +++ b/SSL/src/CommonModules/ЖурналРегистрацииКлиент/Module.bsl @@ -53,33 +53,7 @@ Возврат; КонецЕсли; - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("Дата", Данные.Дата); - ПараметрыФормы.Вставить("ИмяПользователя", Данные.ИмяПользователя); - ПараметрыФормы.Вставить("ПредставлениеПриложения", Данные.ПредставлениеПриложения); - ПараметрыФормы.Вставить("Компьютер", Данные.Компьютер); - ПараметрыФормы.Вставить("Событие", Данные.Событие); - ПараметрыФормы.Вставить("ПредставлениеСобытия", Данные.ПредставлениеСобытия); - ПараметрыФормы.Вставить("Комментарий", Данные.Комментарий); - ПараметрыФормы.Вставить("ПредставлениеМетаданных", Данные.ПредставлениеМетаданных); - ПараметрыФормы.Вставить("Данные", Данные.Данные); - ПараметрыФормы.Вставить("ПредставлениеДанных", Данные.ПредставлениеДанных); - ПараметрыФормы.Вставить("Транзакция", Данные.Транзакция); - ПараметрыФормы.Вставить("СтатусТранзакции", Данные.СтатусТранзакции); - ПараметрыФормы.Вставить("Сеанс", Данные.Сеанс); - ПараметрыФормы.Вставить("РабочийСервер", Данные.РабочийСервер); - ПараметрыФормы.Вставить("ОсновнойIPПорт", Данные.ОсновнойIPПорт); - ПараметрыФормы.Вставить("ВспомогательныйIPПорт", Данные.ВспомогательныйIPПорт); - - Если Данные.Свойство("ПредставлениеРазделенияДанныхСеанса") Тогда - ПараметрыФормы.Вставить("ПредставлениеРазделенияДанныхСеанса", Данные.ПредставлениеРазделенияДанныхСеанса); - КонецЕсли; - - Если ЗначениеЗаполнено(Данные.АдресДанных) Тогда - ПараметрыФормы.Вставить("АдресДанных", Данные.АдресДанных); - КонецЕсли; - - ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ФормаСобытия", ПараметрыФормы); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ФормаСобытия", СобытиеЖурналаРегистрацииВСтруктуру(Данные)); КонецПроцедуры @@ -228,3 +202,43 @@ КонецФункции // УстановитьОтборПоЗначениюВТекущейКолонке +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Только для внутреннего использования. +// +Функция СобытиеЖурналаРегистрацииВСтруктуру(Данные) Экспорт + + Если ТипЗнч(Данные) = Тип("Структура") Тогда + Возврат Данные; + КонецЕсли; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Дата", Данные.Дата); + ПараметрыФормы.Вставить("ИмяПользователя", Данные.ИмяПользователя); + ПараметрыФормы.Вставить("ПредставлениеПриложения", Данные.ПредставлениеПриложения); + ПараметрыФормы.Вставить("Компьютер", Данные.Компьютер); + ПараметрыФормы.Вставить("Событие", Данные.Событие); + ПараметрыФормы.Вставить("ПредставлениеСобытия", Данные.ПредставлениеСобытия); + ПараметрыФормы.Вставить("Комментарий", Данные.Комментарий); + ПараметрыФормы.Вставить("ПредставлениеМетаданных", Данные.ПредставлениеМетаданных); + ПараметрыФормы.Вставить("Данные", Данные.Данные); + ПараметрыФормы.Вставить("ПредставлениеДанных", Данные.ПредставлениеДанных); + ПараметрыФормы.Вставить("Транзакция", Данные.Транзакция); + ПараметрыФормы.Вставить("СтатусТранзакции", Данные.СтатусТранзакции); + ПараметрыФормы.Вставить("Сеанс", Данные.Сеанс); + ПараметрыФормы.Вставить("РабочийСервер", Данные.РабочийСервер); + ПараметрыФормы.Вставить("ОсновнойIPПорт", Данные.ОсновнойIPПорт); + ПараметрыФормы.Вставить("ВспомогательныйIPПорт", Данные.ВспомогательныйIPПорт); + + Если Данные.Свойство("ПредставлениеРазделенияДанныхСеанса") Тогда + ПараметрыФормы.Вставить("ПредставлениеРазделенияДанныхСеанса", Данные.ПредставлениеРазделенияДанныхСеанса); + КонецЕсли; + + Если ЗначениеЗаполнено(Данные.АдресДанных) Тогда + ПараметрыФормы.Вставить("АдресДанных", Данные.АдресДанных); + КонецЕсли; + + Возврат ПараметрыФормы; +КонецФункции + diff --git a/SSL/src/CommonModules/ИнтерфейсыСообщенийВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ИнтерфейсыСообщенийВМоделиСервиса/Module.bsl index c66dcee3d..566f8082b 100644 --- a/SSL/src/CommonModules/ИнтерфейсыСообщенийВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ИнтерфейсыСообщенийВМоделиСервиса/Module.bsl @@ -53,12 +53,20 @@ ВерсияКорреспондента = ВыборВерсииКорреспондента(ИнтерфейсТекущейИБ, ВерсииКорреспондента); КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса") Тогда + МодульИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы"); + МодульИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы.ПриОпределенииВерсииИнтерфейсаКорреспондента( + ИнтерфейсСообщения, + ПараметрыПодключения, + ПредставлениеПолучателя, + ВерсияКорреспондента); + КонецЕсли; + ИнтерфейсыСообщенийВМоделиСервисаПереопределяемый.ПриОпределенииВерсииИнтерфейсаКорреспондента( ИнтерфейсСообщения, ПараметрыПодключения, ПредставлениеПолучателя, - ВерсияКорреспондента - ); + ВерсияКорреспондента); Возврат ВерсияКорреспондента; @@ -132,13 +140,12 @@ МассивОбработчиков = Новый Массив(); Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы"); - Модуль.ЗаполнитьОбработчикиОтправляемыхСообщений(МассивОбработчиков); + МодульИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы"); + МодульИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы.ЗаполнитьОбработчикиОтправляемыхСообщений(МассивОбработчиков); КонецЕсли; ИнтерфейсыСообщенийВМоделиСервисаПереопределяемый.ЗаполнитьОбработчикиОтправляемыхСообщений( - МассивОбработчиков - ); + МассивОбработчиков); Возврат Новый ФиксированныйМассив(МассивОбработчиков); @@ -155,13 +162,12 @@ МассивОбработчиков = Новый Массив(); Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы"); - Модуль.ЗаполнитьОбработчикиПринимаемыхСообщений(МассивОбработчиков); + МодульИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы"); + МодульИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы.ЗаполнитьОбработчикиПринимаемыхСообщений(МассивОбработчиков); КонецЕсли; ИнтерфейсыСообщенийВМоделиСервисаПереопределяемый.ЗаполнитьОбработчикиПринимаемыхСообщений( - МассивОбработчиков - ); + МассивОбработчиков); Возврат Новый ФиксированныйМассив(МассивОбработчиков); @@ -255,8 +261,7 @@ СерверныеОбработчики[ "СтандартныеПодсистемы.БазоваяФункциональность\ПриОпределенииПоддерживаемыхВерсийПрограммныхИнтерфейсов"].Добавить( - "ИнтерфейсыСообщенийВМоделиСервиса" - ); + "ИнтерфейсыСообщенийВМоделиСервиса"); КонецПроцедуры @@ -351,8 +356,7 @@ СтруктураПоддерживаемыхВерсий.Вставить( ОбработчикИнтерфейса.ПрограммныйИнтерфейс(), - ПоддерживаемыеВерсии - ); + ПоддерживаемыеВерсии); КонецЦикла; @@ -387,8 +391,7 @@ СтруктураПоддерживаемыхВерсий.Вставить( ОбработчикИнтерфейса.ПрограммныйИнтерфейс(), - ПоддерживаемыеВерсии - ); + ПоддерживаемыеВерсии); КонецЦикла; diff --git a/SSL/src/CommonModules/ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы/Module.bsl b/SSL/src/CommonModules/ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы/Module.bsl index 315d2a720..f0a47a372 100644 --- a/SSL/src/CommonModules/ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы/Module.bsl +++ b/SSL/src/CommonModules/ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы/Module.bsl @@ -47,6 +47,22 @@ КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ИнформационныйЦентр") Тогда + + // Сообщения информационного центра + МассивОбработчиков.Добавить(ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияИнформационногоЦентраИнтерфейс")); + // Конец Сообщения информационного центра + + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + + // Сообщения управления дополнительными отчетами и обработками + МассивОбработчиков.Добавить(ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс")); + // Конец Сообщения управления дополнительными отчетами и обработками + + КонецЕсли; + КонецПроцедуры // Заполняет переданный массив общими модулями, которые являются обработчиками интерфейсов @@ -93,4 +109,47 @@ КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + + // Сообщения контроля дополнительными отчетами и обработками + МассивОбработчиков.Добавить(ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс")); + // Конец Сообщения контроля дополнительными отчетами и обработками + + КонецЕсли; + КонецПроцедуры + +// Процедура вызывается при определении версии интерфейса сообщений, поддерживаемой как ИБ-корреспондентом, +// так и текущей ИБ. В данной процедуре предполагается реализовывать механизмы поддержки обратной совместимости +// со старыми версиями ИБ-корреспондентов +// +// Параметры: +// ИнтерфейсСообщения - строка, название программного интерфейса сообщения, для которого определяется версия +// ПараметрыПодключения - структура, параметры подключения к ИБ-корреспонденту +// ПредставлениеПолучателя - строка, представление ИБ-корреспондента +// Результат - строка, определяемая версия. Значение данного параметра может быть изменено в данной процедуре. +// +Процедура ПриОпределенииВерсииИнтерфейсаКорреспондента(Знач ИнтерфейсСообщения, Знач ПараметрыПодключения, Знач ПредставлениеПолучателя, Результат) Экспорт + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + + // Совместимость с версиями МС, в которых интерфейс ApplicationExtensionsControl являлся + // составной частью интерфейса RemoteAdministrationControl + + ОбщийМодульСообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс"); + + Если Результат = Неопределено И ИнтерфейсСообщения = ОбщийМодульСообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс.ПрограммныйИнтерфейс() Тогда + + ПроверяемыйИнтерфейс = СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс.ПрограммныйИнтерфейс(); + ВерсияИнтерфейсаКонтроляУдаленногоАдминистрирования = ИнтерфейсыСообщенийВМоделиСервиса.ВерсияИнтерфейсаКорреспондента( + ПроверяемыйИнтерфейс, ПараметрыПодключения, ПредставлениеПолучателя); + + Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияИнтерфейсаКонтроляУдаленногоАдминистрирования, "1.0.2.4") >= 0 Тогда + Результат = "1.0.0.1"; + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/CommonModules/ИнформационныйЦентрКлиент/Module.bsl b/SSL/src/CommonModules/ИнформационныйЦентрКлиент/Module.bsl index 5d745c82f..a1e84436f 100644 --- a/SSL/src/CommonModules/ИнформационныйЦентрКлиент/Module.bsl +++ b/SSL/src/CommonModules/ИнформационныйЦентрКлиент/Module.bsl @@ -4,25 +4,19 @@ //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// -// ПРОГРАММНЫЙ ИНТЕРФЕЙС +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС // Открывает форму отображения отдельной новости. // // Параметры: -// ВнешняяСсылка - Строка - внешняя ссылка. // Идентификатор - УникальныйИдентификатор - идентификатор новости. // -Процедура ПоказатьНовость(ВнешняяСсылка, Идентификатор) Экспорт - - Если Не ПустаяСтрока(ВнешняяСсылка) Тогда - ПерейтиПоНавигационнойСсылке(ВнешняяСсылка); - Возврат; - КонецЕсли; +Процедура ПоказатьНовость(Идентификатор) Экспорт ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("ОткрытьНовость"); ПараметрыФормы.Вставить("Идентификатор", Идентификатор); - ОткрытьФорму("ОбщаяФорма.ОтображениеНовостей", ПараметрыФормы); + ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.ОтображениеСообщений", ПараметрыФормы); КонецПроцедуры @@ -31,12 +25,12 @@ // Процедура ПоказатьВсеСообщения() Экспорт - ПараметрыФормы = Новый Структура("ОткрытьВсеНовости"); - ОткрытьФорму("ОбщаяФорма.ОтображениеНовостей", ПараметрыФормы); + ПараметрыФормы = Новый Структура("ОткрытьВсеСообщения"); + ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.ОтображениеСообщений", ПараметрыФормы); КонецПроцедуры -// Возвращает размер в мегабайтах, размер вложения не больше 25 Мегабайта. +// Возвращает размер в мегабайтах, размер вложения не больше 20 Мегабайт. // // Возвращаемое значение: // Число - размер вложений в мегабайтах. @@ -49,11 +43,9 @@ // Открывает форму по отправке сообщения получателю. // -Процедура ОткрытьФормуОтправкиСообщенияВТехподдержку(ИспользоватьРазделениеПоОбластямДанных, ПараметрыСообщения = Неопределено) Экспорт +Процедура ОткрытьФормуОтправкиСообщенияВТехподдержку(ПараметрыСообщения = Неопределено) Экспорт - Если ИспользоватьРазделениеПоОбластямДанных Тогда - ОткрытьФорму("ОбщаяФорма.ОтправкаСообщенияВТехподдержку", ПараметрыСообщения); - КонецЕсли; + ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.ОтправкаСообщенияВПоддержку", ПараметрыСообщения); КонецПроцедуры @@ -85,4 +77,15 @@ ПараметрыФормы = Новый Структура("ПутьКФорме", ПутьКФорме); ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.ИнформационныеСсылкиВКонтексте", ПараметрыФормы); +КонецПроцедуры + +// Открывает форму с содержанием пожелания. +// +// ИдентификаторПожелания - Строка - уникальный идентификатор пожелания. +// +Процедура ПоказатьПожелание(ИдентификаторПожелания) Экспорт + + ПараметрыФормы = Новый Структура("ИдентификаторПожелания", ИдентификаторПожелания); + ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.Пожелание", ПараметрыФормы); + КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/CommonModules/ИнформационныйЦентрСервер/Module.bsl b/SSL/src/CommonModules/ИнформационныйЦентрСервер/Module.bsl index 1cbcde119..f598c1988 100644 --- a/SSL/src/CommonModules/ИнформационныйЦентрСервер/Module.bsl +++ b/SSL/src/CommonModules/ИнформационныйЦентрСервер/Module.bsl @@ -3,41 +3,94 @@ // //////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +//////////////////////////////////////////////////////////////////////////////// +// Информационные ссылки + +// Выводит информационные ссылки на форме +// +// Параметры: +// Форма - УправляемаяФорма - контекст формы. +// ГруппаФормы - ЭлементФормы - группа формы, в которой выводятся информационные ссылки. +// КоличествоГрупп - Число - количество групп информационных ссылок в форме. +// КоличествоСсылокВГруппе - Число - количество информационных ссылок в группе. +// ВыводитьСсылкуВсе - Булево - выводить или нет ссылку "Все". +// +Процедура ВывестиКонтекстныеСсылки(Форма, ГруппаФормы, КоличествоГрупп = 3, КоличествоСсылокВГруппе = 1, ВыводитьСсылкуВсе = Истина, ПутьКФорме = "") Экспорт + + Попытка + Если ПустаяСтрока(ПутьКФорме) Тогда + ПутьКФорме = Форма.ИмяФормы; + КонецЕсли; + + ТаблицаСсылокФормы = ИнформационныйЦентрСерверПовтИсп.ПолучитьТаблицуИнформационныхСсылокДляФормы(ПутьКФорме); + Если ТаблицаСсылокФормы.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + // Изменение параметров формы + ГруппаФормы.ОтображатьЗаголовок = Ложь; + ГруппаФормы.Подсказка = ""; + ГруппаФормы.Отображение = ОтображениеОбычнойГруппы.Нет; + ГруппаФормы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; + + // Добавление списка Информационных ссылок + ИмяРеквизита = "ИнформационныеСсылки"; + ДобавляемыеРеквизиты = Новый Массив; + ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("СписокЗначений"))); + Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); + + СформироватьГруппыВывода(Форма, ТаблицаСсылокФормы, ГруппаФормы, КоличествоГрупп, КоличествоСсылокВГруппе, ВыводитьСсылкуВсе); + Исключение + ИмяСобытия = ПолучитьИмяСобытияДляЖурналаРегистрации(); + ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; + +КонецПроцедуры + + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС //////////////////////////////////////////////////////////////////////////////// -// Обработчики условных вызовов в другие подсистемы +// Общие процедуры -// Определяет заголовок общей формы "ИнформационныйЦентрРабочийСтол". +// Возвращает имя события журнала регистрации. // -// Параметры: -// ЗаголовокФормы - Строка - заголовок формы. +// Возвращаемое значение: +// Строка - имя события журнала регистрации. // -Процедура ПриОпределенииЗаголовкаОсновнойФормыИнформационныйЦентр(ЗаголовокФормы) Экспорт +Функция ПолучитьИмяСобытияДляЖурналаРегистрации() Экспорт - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - УстановитьПривилегированныйРежим(Истина); - Модуль.ПриОпределенииЗаголовкаОсновнойФормыИнформационныйЦентр(ЗаголовокФормы); - КонецЕсли; + Возврат НСтр("ru = 'Информационный центр'"); -КонецПроцедуры +КонецФункции -// Отправляет сообщение пользователя в техподдержку. +// Получить прокси управления конференцией. // -// Параметры: -// ПараметрыСообщения - Структура - параметры сообщения. -// Результат - Булево - Истина, если сообщение отправлено, Ложь - Иначе. +// Возвращаемое значение: +// WSПрокси - прокси управления конференцией. // -Процедура ПриОтправкеСообщенияПользователяВТехподдержку(ПараметрыСообщения, Результат) Экспорт +Функция ПолучитьПроксиУправленияКонференцией() Экспорт - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.ПриОтправкеСообщенияПользователяВТехподдержку(ПараметрыСообщения, Результат); - КонецЕсли; + УстановитьПривилегированныйРежим(Истина); + Адрес = Константы.АдресУправленияКонференцией.Получить() + "/ForumService?wsdl"; + ИмяПользователя = Константы.ИмяПользователяКонференцииИнформационногоЦентра.Получить(); + ПарольПользователя = Константы.ПарольПользователяКонференцииИнформационногоЦентра.Получить(); + УстановитьПривилегированныйРежим(Ложь); -КонецПроцедуры + Прокси = ОбщегоНазначения.WSПрокси(Адрес, + "http://ws.forum.saas.onec.ru/", + "ForumIntegrationWSImplService", + "ForumIntegrationWSImplPort", + ИмяПользователя, + ПарольПользователя); + + Возврат Прокси; + +КонецФункции //////////////////////////////////////////////////////////////////////////////// @@ -54,16 +107,18 @@ ВызватьИсключение(НСтр("ru = 'Не возможно подключиться к Менеджеру сервиса.'")); КонецЕсли; + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + УстановитьПривилегированныйРежим(Истина); - АдресМенеджераСервиса = Константы["ВнутреннийАдресМенеджераСервиса"].Получить(); + АдресМенеджераСервиса = МодульРаботаВМоделиСервиса.ВнутреннийАдресМенеджераСервиса(); Если Не ЗначениеЗаполнено(АдресМенеджераСервиса) Тогда ВызватьИсключение(НСтр("ru = 'Не установлены параметры связи с менеджером сервиса.'")); КонецЕсли; АдресСервиса = АдресМенеджераСервиса + "/ws/ManageInfoCenter?wsdl"; - ИмяПользователя = Константы["ИмяСлужебногоПользователяМенеджераСервиса"].Получить(); - ПарольПользователя = Константы["ПарольСлужебногоПользователяМенеджераСервиса"].Получить(); + ИмяПользователя = МодульРаботаВМоделиСервиса.ИмяСлужебногоПользователяМенеджераСервиса(); + ПарольПользователя = МодульРаботаВМоделиСервиса.ПарольСлужебногоПользователяМенеджераСервиса(); УстановитьПривилегированныйРежим(Ложь); ПроксиИнформационногоЦентра = ОбщегоНазначения.WSПрокси(АдресСервиса, @@ -89,16 +144,18 @@ ВызватьИсключение(НСтр("ru = 'Не возможно подключиться к Менеджеру сервиса.'")); КонецЕсли; + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + УстановитьПривилегированныйРежим(Истина); - АдресМенеджераСервиса = Константы["ВнутреннийАдресМенеджераСервиса"].Получить(); + АдресМенеджераСервиса = МодульРаботаВМоделиСервиса.ВнутреннийАдресМенеджераСервиса(); Если Не ЗначениеЗаполнено(АдресМенеджераСервиса) Тогда ВызватьИсключение(НСтр("ru = 'Не установлены параметры связи с менеджером сервиса.'")); КонецЕсли; АдресСервиса = АдресМенеджераСервиса + "/ws/ManageInfoCenter_1_0_1_1?wsdl"; - ИмяПользователя = Константы["ИмяСлужебногоПользователяМенеджераСервиса"].Получить(); - ПарольПользователя = Константы["ПарольСлужебногоПользователяМенеджераСервиса"].Получить(); + ИмяПользователя = МодульРаботаВМоделиСервиса.ИмяСлужебногоПользователяМенеджераСервиса(); + ПарольПользователя = МодульРаботаВМоделиСервиса.ПарольСлужебногоПользователяМенеджераСервиса(); УстановитьПривилегированныйРежим(Ложь); ПроксиИнформационногоЦентра = ОбщегоНазначения.WSПрокси(АдресСервиса, @@ -113,57 +170,73 @@ КонецФункции -// Описывает ссылку сайта для для публикации приложений через Интернет. -// +// Возвращает Прокси Информационного центра Менеджера сервиса. +// // Возвращаемое значение: -// Структура - структура с полями, которые описывают ссылку сайта. -// -Функция НовоеОписаниеСсылкиСайтаДляПубликацииПриложенийЧерезИнтернет() Экспорт +// WSПрокси - прокси Информационного центра. +// +Функция ПолучитьПроксиИнформационногоЦентра_1_0_1_2() Экспорт - Возврат Новый Структура("Имя, Адрес"); + Если Не ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда + ВызватьИсключение(НСтр("ru = 'Не возможно подключиться к Менеджеру сервиса.'")); + КонецЕсли; + + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + + УстановитьПривилегированныйРежим(Истина); + АдресМенеджераСервиса = МодульРаботаВМоделиСервиса.ВнутреннийАдресМенеджераСервиса(); + + Если Не ЗначениеЗаполнено(АдресМенеджераСервиса) Тогда + ВызватьИсключение(НСтр("ru = 'Не установлены параметры связи с менеджером сервиса.'")); + КонецЕсли; + + АдресСервиса = АдресМенеджераСервиса + "/ws/ManageInfoCenter_1_0_1_2?wsdl"; + ИмяПользователя = МодульРаботаВМоделиСервиса.ИмяСлужебногоПользователяМенеджераСервиса(); + ПарольПользователя = МодульРаботаВМоделиСервиса.ПарольСлужебногоПользователяМенеджераСервиса(); + УстановитьПривилегированныйРежим(Ложь); + + ПроксиИнформационногоЦентра = ОбщегоНазначения.WSПрокси(АдресСервиса, + "http://www.1c.ru/SaaS/1.0/WS", + "ManageInfoCenter_1_0_1_2", + , + ИмяПользователя, + ПарольПользователя, + 7); + + Возврат ПроксиИнформационногоЦентра; КонецФункции -// Возвращает имя события журнала регистрации. +//////////////////////////////////////////////////////////////////////////////// +// Оповещения пользователей в форме Информационного центра + +// Возвращает ссылку на элемент справочника "ТипыИнформацииИнформационногоЦентра" по Наименованию +// +// Параметры: +// Наименование - Строка - наименования типа новости. // // Возвращаемое значение: -// Строка - имя события журнала регистрации. +// СправочникСсылка.ТипыИнформацииИнформационногоЦентра - тип информации. // -Функция ПолучитьИмяСобытияДляЖурналаРегистрации() Экспорт +Функция ОпределитьСсылкуТипаИнформации(знач Наименование) Экспорт - Возврат НСтр("ru = 'Информационный центр'"); + УстановитьПривилегированныйРежим(Истина); + Наименование = СокрЛП(Наименование); + + НайденнаяСсылка = Справочники.ТипыИнформацииИнформационногоЦентра.НайтиПоНаименованию(Наименование); + + Если НайденнаяСсылка.Пустая() Тогда + ТипИнформации = Справочники.ТипыИнформацииИнформационногоЦентра.СоздатьЭлемент(); + ТипИнформации.Наименование = Наименование; + ТипИнформации.Записать(); + + Возврат ТипИнформации.Ссылка; + Иначе + Возврат НайденнаяСсылка; + КонецЕсли; КонецФункции -// Описывает структуру полезной ссылки. -// -// Возвращаемое значение: -// Структура - структура с полями, которые описывают полезную ссылку: -// Имя - Строка - наименование полезной ссылки. -// Адрес - Строка - адрес полезной ссылки. -// Пояснение - Строка - пояснение полезной ссылки. -// ДействиеПоНажатию - Строка - процедура-обработчик для полезной ссылки. -// -// Примечание: -// Поле "ДействиеПоНажатию" можно не устанавливать, если подразумевается переход по ссылке. -// -Функция НовоеОписаниеПолезнойСсылки() Экспорт - - Возврат Новый Структура("Имя, Адрес, Пояснение, ДействиеПоНажатию"); - -КонецФункции - -// Описывает структуру статьи. -// -// Возвращаемое значение: -// Структура - структура с полями, которые описывают статью. -// -Функция НовоеОписаниеСтатьи() Экспорт - - Возврат Новый Структура("Имя, Адрес"); - -КонецФункции - // Определяет список всех новостей. // // Возвращаемое значение: @@ -176,12 +249,14 @@ Функция СформироватьСписокВсехНовостей() Экспорт ЗапросВсехНовостей = Новый Запрос; + ЗапросВсехНовостей.Текст = "ВЫБРАТЬ | ОбщиеДанныеИнформационногоЦентра.Наименование КАК Наименование, | ОбщиеДанныеИнформационногоЦентра.Критичность КАК Критичность, | ОбщиеДанныеИнформационногоЦентра.Идентификатор КАК Идентификатор, - | ОбщиеДанныеИнформационногоЦентра.ВнешняяСсылка КАК ВнешняяСсылка + | ОбщиеДанныеИнформационногоЦентра.ВнешняяСсылка КАК ВнешняяСсылка, + | ОбщиеДанныеИнформационногоЦентра.ТипИнформации КАК ТипИнформации |ИЗ | Справочник.ОбщиеДанныеИнформационногоЦентра КАК ОбщиеДанныеИнформационногоЦентра |ГДЕ @@ -239,141 +314,8 @@ КонецПроцедуры -// Возвращает список актуальных критичных новостей (критичность > 5). -// -// Возвращаемое значение: -// ТаблицаЗначений с полями ТаблицыЗначений "ТаблицаНовостей" в процедуре СформироватьСписокНовостейНаРабочийСтол. -// -Функция СформироватьАктуальныеКритичныеНовости() - - ЗапросКритичныхНовостей = Новый Запрос; - - ЗапросКритичныхНовостей.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса()); - ЗапросКритичныхНовостей.УстановитьПараметр("КритичностьПять", 5); - ЗапросКритичныхНовостей.УстановитьПараметр("ПустаяДата", '00010101'); - ЗапросКритичныхНовостей.Текст = - "ВЫБРАТЬ - | ОбщиеДанныеИнформационногоЦентра.Наименование КАК Наименование, - | ОбщиеДанныеИнформационногоЦентра.Критичность КАК Критичность, - | ОбщиеДанныеИнформационногоЦентра.Идентификатор КАК Идентификатор, - | ОбщиеДанныеИнформационногоЦентра.ВнешняяСсылка КАК ВнешняяСсылка - |ИЗ - | Справочник.ОбщиеДанныеИнформационногоЦентра КАК ОбщиеДанныеИнформационногоЦентра - |ГДЕ - | ОбщиеДанныеИнформационногоЦентра.ДатаНачалаАктуальности <= &ТекущаяДата - | И ОбщиеДанныеИнформационногоЦентра.Критичность > &КритичностьПять - | И (ОбщиеДанныеИнформационногоЦентра.ДатаОкончанияАктуальности >= &ТекущаяДата - | ИЛИ ОбщиеДанныеИнформационногоЦентра.ДатаОкончанияАктуальности = &ПустаяДата) - | И НЕ ОбщиеДанныеИнформационногоЦентра.ПометкаУдаления - | - |УПОРЯДОЧИТЬ ПО - | Критичность УБЫВ, - | ОбщиеДанныеИнформационногоЦентра.ДатаНачалаАктуальности УБЫВ"; - - Возврат ЗапросКритичныхНовостей.Выполнить().Выгрузить(); - -КонецФункции - -// Возвращает список актуальных некритичных новостей (критичность <= 5). -// -// Возвращаемое значение: -// ТаблицаЗначений с полями ТаблицыЗначений "ТаблицаНовостей" в процедуре СформироватьСписокНовостейНаРабочийСтол. -// -Функция СформироватьАктуальныеНеКритичныеНовости() - - ЗапросНеКритичныхНовостей = Новый Запрос; - - ЗапросНеКритичныхНовостей.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса()); - ЗапросНеКритичныхНовостей.УстановитьПараметр("КритичностьПять", 5); - ЗапросНеКритичныхНовостей.УстановитьПараметр("ПустаяДата", '00010101'); - ЗапросНеКритичныхНовостей.Текст = - "ВЫБРАТЬ - | ОбщиеДанныеИнформационногоЦентра.Наименование КАК Наименование, - | ОбщиеДанныеИнформационногоЦентра.Критичность КАК Критичность, - | ОбщиеДанныеИнформационногоЦентра.Идентификатор КАК Идентификатор, - | ОбщиеДанныеИнформационногоЦентра.ВнешняяСсылка КАК ВнешняяСсылка - |ИЗ - | Справочник.ОбщиеДанныеИнформационногоЦентра КАК ОбщиеДанныеИнформационногоЦентра - |ГДЕ - | ОбщиеДанныеИнформационногоЦентра.ДатаНачалаАктуальности <= &ТекущаяДата - | И ОбщиеДанныеИнформационногоЦентра.Критичность <= &КритичностьПять - | И (ОбщиеДанныеИнформационногоЦентра.ДатаОкончанияАктуальности >= &ТекущаяДата - | ИЛИ ОбщиеДанныеИнформационногоЦентра.ДатаОкончанияАктуальности = &ПустаяДата) - | И НЕ ОбщиеДанныеИнформационногоЦентра.ПометкаУдаления - | - |УПОРЯДОЧИТЬ ПО - | ОбщиеДанныеИнформационногоЦентра.ДатаНачалаАктуальности УБЫВ"; - - Возврат ЗапросНеКритичныхНовостей.Выполнить().Выгрузить(); - -КонецФункции - -// Возвращает ссылку на элемент справочника "ТипыИнформацииИнформационногоЦентра" по Наименованию -// -// Параметры: -// Наименование - Строка - наименования типа новости. -// -// Возвращаемое значение: -// СправочникСсылка.ТипыИнформацииИнформационногоЦентра - тип информации. -// -Функция ОпределитьСсылкуТипаИнформации(знач Наименование) Экспорт - - УстановитьПривилегированныйРежим(Истина); - Наименование = СокрЛП(Наименование); - - НайденнаяСсылка = Справочники.ТипыИнформацииИнформационногоЦентра.НайтиПоНаименованию(Наименование); - - Если НайденнаяСсылка.Пустая() Тогда - ТипИнформации = Справочники.ТипыИнформацииИнформационногоЦентра.СоздатьЭлемент(); - ТипИнформации.Наименование = Наименование; - ТипИнформации.Записать(); - - Возврат ТипИнформации.Ссылка; - Иначе - Возврат НайденнаяСсылка; - КонецЕсли; - -КонецФункции - -// Возвращает строковое представление версии в числовом диапазоне. -// -// Параметры: -// Версия - Строка - версия. -// -// Возвращаемое значение: -// Число - представление версии числом. -// -Функция ПолучитьВерсиюЧислом(Версия) Экспорт - - МассивЧисел = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Версия, "."); - - Итерация = 1; - ВерсияЧислом = 0; - КоличествоВМассиве = МассивЧисел.Количество(); - - Если КоличествоВМассиве = 0 Тогда - Возврат 0; - КонецЕсли; - - Для Каждого ЧислоВерсии Из МассивЧисел Цикл - - Попытка - ТекущееЧисло = Число(ЧислоВерсии); - ВерсияЧислом = ВерсияЧислом + ТекущееЧисло * ВозвестиЧислоВПоложительнуюСтепень(1000, КоличествоВМассиве - Итерация); - Исключение - Возврат 0; - КонецПопытки; - - Итерация = Итерация + 1; - - КонецЦикла; - - Возврат ВерсияЧислом; - -КонецФункции - //////////////////////////////////////////////////////////////////////////////// -// Получение параметров для отправки сообщений пользователя +// Отправка сообщений в поддержку сервиса // Возвращает адрес электронной почты текущего пользователя. // @@ -417,6 +359,18 @@ КонецФункции +// Возвращает имя файла, в котором находятся технические параметры +// для службы техподдержки. +// +// Возвращаемое значение: +// Строка - имя файла. +// +Функция ПолучитьИмяФайлаТехническихПараметровДляСообщенияВПоддержку() Экспорт + + Возврат "TechnicalParameters.xml"; + +КонецФункции + // Возвращает текст технических параметров. // // Возвращаемое значение: @@ -424,9 +378,9 @@ // Ключ - строка - наименование вложения. // Значение - ДвоичныеДанные - файл вложения. // -Функция СформироватьXMLСТехническимиПараметрами() Экспорт +Функция СформироватьXMLСТехническимиПараметрами(ДополнительныеПараметры = Неопределено) Экспорт - МассивПараметров = ОпределитьМассивТехническихПараметров(); + МассивПараметров = ОпределитьМассивТехническихПараметров(ДополнительныеПараметры); ФайлXML = ПолучитьИмяВременногоФайла("xml"); @@ -446,11 +400,173 @@ КонецПопытки; Вложение = Новый СписокЗначений; - Вложение.Добавить(ДвоичныеДанныеФайла, ПолучитьИмяФайлаТехническихПараметровДляСообщенияВТехПоддержку(), Истина); + Вложение.Добавить(ДвоичныеДанныеФайла, ПолучитьИмяФайлаТехническихПараметровДляСообщенияВПоддержку(), Истина); + Возврат Вложение; КонецФункции +// Возвращает строку с внешней ссылкой. +// +// Параметры: +// Идентификатор - УникальныйИдентификатор - уникальный идентификатор новости. +// +// Возвращаемое значение: +// Строка - адрес внешнего ресурса. +// +Функция ПолучитьВнешнююСсылкуПоИдентификаторуНовости(Идентификатор) Экспорт + + УстановитьПривилегированныйРежим(Истина); + СсылкаНаДанные = Справочники.ОбщиеДанныеИнформационногоЦентра.НайтиПоРеквизиту("Идентификатор", Идентификатор); + Если СсылкаНаДанные.Пустая() Тогда + Возврат ""; + КонецЕсли; + + Возврат СсылкаНаДанные.ВнешняяСсылка; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики условных вызовов в другие подсистемы + +// Определяет заголовок формы "ИнформационныйЦентр". +// +// Параметры: +// ЗаголовокФормы - Строка - заголовок формы. +// +Процедура ПриОпределенииЗаголовкаОсновнойФормыИнформационныйЦентр(ЗаголовокФормы) Экспорт + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + УстановитьПривилегированныйРежим(Истина); + МодульРаботаВМоделиСервиса.ПриОпределенииЗаголовкаОсновнойФормыИнформационныйЦентр(ЗаголовокФормы); + КонецЕсли; + +КонецПроцедуры + +// Отправляет сообщение пользователя в техподдержку. +// +// Параметры: +// ПараметрыСообщения - Структура - параметры сообщения. +// Результат - Булево - Истина, если сообщение отправлено, Ложь - Иначе. +// +Процедура ПриОтправкеСообщенияПользователяВТехподдержку(ПараметрыСообщения, Результат) Экспорт + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ПриОтправкеСообщенияПользователяВТехподдержку(ПараметрыСообщения, Результат); + КонецЕсли; + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +//////////////////////////////////////////////////////////////////////////////// +// Оповещения пользователей в форме Информационного центра + +// Возвращает список актуальных критичных новостей (критичность > 5). +// +// Возвращаемое значение: +// ТаблицаЗначений с полями ТаблицыЗначений "ТаблицаНовостей" в процедуре СформироватьСписокНовостейНаРабочийСтол. +// +Функция СформироватьАктуальныеКритичныеНовости() + + ЗапросКритичныхНовостей = Новый Запрос; + + ЗапросКритичныхНовостей.УстановитьПараметр("ТекущаяДата", ТекущаяДатаСеанса()); + ЗапросКритичныхНовостей.УстановитьПараметр("КритичностьПять", 5); + ЗапросКритичныхНовостей.УстановитьПараметр("ПустаяДата", '00010101'); + + ЗапросКритичныхНовостей.Текст = + "ВЫБРАТЬ + | ОбщиеДанныеИнформационногоЦентра.Ссылка КАК СсылкаНаДанные + |ИЗ + | Справочник.ОбщиеДанныеИнформационногоЦентра КАК ОбщиеДанныеИнформационногоЦентра + |ГДЕ + | ОбщиеДанныеИнформационногоЦентра.ДатаНачалаАктуальности <= &ТекущаяДата + | И ОбщиеДанныеИнформационногоЦентра.Критичность > &КритичностьПять + | И (ОбщиеДанныеИнформационногоЦентра.ДатаОкончанияАктуальности >= &ТекущаяДата + | ИЛИ ОбщиеДанныеИнформационногоЦентра.ДатаОкончанияАктуальности = &ПустаяДата) + | И НЕ ОбщиеДанныеИнформационногоЦентра.ПометкаУдаления + | + |УПОРЯДОЧИТЬ ПО + | ОбщиеДанныеИнформационногоЦентра.Критичность УБЫВ, + | ОбщиеДанныеИнформационногоЦентра.ДатаНачалаАктуальности УБЫВ"; + + Возврат ЗапросКритичныхНовостей.Выполнить().Выгрузить(); + +КонецФункции + +// Возвращает список актуальных некритичных новостей (критичность <= 5). +// +// Возвращаемое значение: +// ТаблицаЗначений с полями ТаблицыЗначений "ТаблицаНовостей" в процедуре СформироватьСписокНовостейНаРабочийСтол. +// +Функция СформироватьАктуальныеНеКритичныеНовости() + + УстановитьПривилегированныйРежим(Истина); + + ЗапросНеКритичныхНовостей = Новый Запрос; + + ЗапросНеКритичныхНовостей.УстановитьПараметр("ТекущаяДата", ТекущаяДата()); // Проектное решение БСП + ЗапросНеКритичныхНовостей.УстановитьПараметр("КритичностьПять", 5); + ЗапросНеКритичныхНовостей.УстановитьПараметр("ПустаяДата", '00010101'); + ЗапросНеКритичныхНовостей.УстановитьПараметр("Просмотрены", Ложь); + ЗапросНеКритичныхНовостей.УстановитьПараметр("Пользователь", ПараметрыСеанса.ТекущийПользователь.Ссылка); + + ЗапросНеКритичныхНовостей.Текст = + "ВЫБРАТЬ + | ОбщиеДанныеИнформационногоЦентра.Ссылка КАК СсылкаНаДанные + |ПОМЕСТИТЬ ДанныеИЦ + |ИЗ + | Справочник.ОбщиеДанныеИнформационногоЦентра КАК ОбщиеДанныеИнформационногоЦентра + |ГДЕ + | ОбщиеДанныеИнформационногоЦентра.ДатаНачалаАктуальности <= &ТекущаяДата + | И ОбщиеДанныеИнформационногоЦентра.Критичность <= &КритичностьПять + | И (ОбщиеДанныеИнформационногоЦентра.ДатаОкончанияАктуальности >= &ТекущаяДата + | ИЛИ ОбщиеДанныеИнформационногоЦентра.ДатаОкончанияАктуальности = &ПустаяДата) + | И НЕ ОбщиеДанныеИнформационногоЦентра.ПометкаУдаления + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПросмотренныеДанныеИнформационногоЦентра.ДанныеИнформационногоЦентра, + | ПросмотренныеДанныеИнформационногоЦентра.Просмотрены + |ПОМЕСТИТЬ ПросмотренныеПользователем + |ИЗ + | РегистрСведений.ПросмотренныеДанныеИнформационногоЦентра КАК ПросмотренныеДанныеИнформационногоЦентра + |ГДЕ + | ПросмотренныеДанныеИнформационногоЦентра.Пользователь = &Пользователь + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ДанныеИЦ.СсылкаНаДанные, + | ЕСТЬNULL(ПросмотренныеПользователем.Просмотрены, &Просмотрены) КАК Просмотрены + |ПОМЕСТИТЬ Готовый + |ИЗ + | ДанныеИЦ КАК ДанныеИЦ + | ПОЛНОЕ СОЕДИНЕНИЕ ПросмотренныеПользователем КАК ПросмотренныеПользователем + | ПО ДанныеИЦ.СсылкаНаДанные = ПросмотренныеПользователем.ДанныеИнформационногоЦентра + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | Готовый.СсылкаНаДанные + |ИЗ + | Готовый КАК Готовый + |ГДЕ + | Готовый.Просмотрены = &Просмотрены"; + + Возврат ЗапросНеКритичныхНовостей.Выполнить().Выгрузить(); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Отправка сообщений в поддержку сервиса + // Возвращает массив технических параметров. // // Возвращаемое значение: @@ -458,19 +574,22 @@ // Имя - Строка - имя параметра. // Значение - Строка - значение параметра. // -Функция ОпределитьМассивТехническихПараметров() +Функция ОпределитьМассивТехническихПараметров(ДополнительныеПараметры) ИнформацияСистемная = Новый СистемнаяИнформация; - ОбластьДанных = ОбщегоНазначения.ЗначениеРазделителяСеанса(); - ОбластьДанных = Строка(Формат(ОбластьДанных, "ЧГ=0")); - МассивПараметров = Новый Массив; - МассивПараметров.Добавить(Новый Структура("Имя, Значение", "ИмяКонфигурации", Метаданные.Имя)); - МассивПараметров.Добавить(Новый Структура("Имя, Значение", "ВерсияКонфигурации",Метаданные.Версия)); - МассивПараметров.Добавить(Новый Структура("Имя, Значение", "ВерсияПлатформы", ИнформацияСистемная.ВерсияПриложения)); - МассивПараметров.Добавить(Новый Структура("Имя, Значение", "ОбластьДанных", ОбластьДанных)); - МассивПараметров.Добавить(Новый Структура("Имя, Значение", "Логин", ИмяПользователя())); + МассивПараметров.Добавить(Новый Структура("Имя, Значение", "ИмяКонфигурации", Метаданные.Имя)); + МассивПараметров.Добавить(Новый Структура("Имя, Значение", "ВерсияКонфигурации", Метаданные.Версия)); + МассивПараметров.Добавить(Новый Структура("Имя, Значение", "ВерсияПлатформы", ИнформацияСистемная.ВерсияПриложения)); + МассивПараметров.Добавить(Новый Структура("Имя, Значение", "ОбластьДанных", Строка(Формат(ОбщегоНазначения.ЗначениеРазделителяСеанса(), "ЧГ=0")))); + МассивПараметров.Добавить(Новый Структура("Имя, Значение", "Логин", ИмяПользователя())); + + Если ДополнительныеПараметры <> Неопределено Тогда + Для Каждого Параметр Из ДополнительныеПараметры Цикл + МассивПараметров.Добавить(Новый Структура("Имя, Значение", Параметр.Ключ, Строка(Параметр.Значение))); + КонецЦикла; + КонецЕсли; Возврат МассивПараметров; @@ -495,83 +614,9 @@ КонецПроцедуры -// Возвращает строку с внешней ссылкой. -// -// Параметры: -// Идентификатор - УникальныйИдентификатор - уникальный идентификатор новости. -// -// Возвращаемое значение: -// Строка - адрес внешнего ресурса. -// -Функция ПолучитьВнешнююСсылкуПоИдентификаторуНовости(Идентификатор) Экспорт - - УстановитьПривилегированныйРежим(Истина); - СсылкаНаДанные = Справочники.ОбщиеДанныеИнформационногоЦентра.НайтиПоРеквизиту("Идентификатор", Идентификатор); - Если СсылкаНаДанные.Пустая() Тогда - Возврат ""; - КонецЕсли; - - Возврат СсылкаНаДанные.ВнешняяСсылка; - -КонецФункции - -// Возвращает имя файла, в котором находятся технические параметры -// для службы техподдержки. -// -// Возвращаемое значение: -// Строка - имя файла. -// -Функция ПолучитьИмяФайлаТехническихПараметровДляСообщенияВТехПоддержку() Экспорт - - Возврат "TechnicalParameters.xml"; - -КонецФункции - //////////////////////////////////////////////////////////////////////////////// // Информационные ссылки -// Выводит информационные ссылки на форме. -// В данной процедуре 4 необязательных параметра, это проектное решение БСП. -// -// Параметры: -// Форма - УправляемаяФорма - контекст формы. -// ГруппаФормы - ЭлементФормы - группа формы, в которой выводятся информационные ссылки. -// КоличествоГрупп - Число - количество групп информационных ссылок в форме. -// КоличествоСсылокВГруппе - Число - количество информационных ссылок в группе. -// ВыводитьСсылкуВсе - Булево - выводить или нет ссылку "Все". -// -Процедура ВывестиКонтекстныеСсылки(Форма, ГруппаФормы, КоличествоГрупп = 3, КоличествоСсылокВГруппе = 1, ВыводитьСсылкуВсе = Истина, ПутьКФорме = "") Экспорт - - Попытка - Если ПустаяСтрока(ПутьКФорме) Тогда - ПутьКФорме = Форма.ИмяФормы; - КонецЕсли; - - ТаблицаСсылокФормы = ИнформационныйЦентрСерверПовтИсп.ПолучитьТаблицуИнформационныхСсылокДляФормы(ПутьКФорме); - Если ТаблицаСсылокФормы.Количество() = 0 Тогда - Возврат; - КонецЕсли; - - // Изменение параметров формы - ГруппаФормы.ОтображатьЗаголовок = Ложь; - ГруппаФормы.Подсказка = ""; - ГруппаФормы.Отображение = ОтображениеОбычнойГруппы.Нет; - ГруппаФормы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; - - // Добавление списка Информационных ссылок - ИмяРеквизита = "ИнформационныеСсылки"; - ДобавляемыеРеквизиты = Новый Массив; - ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("СписокЗначений"))); - Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); - - СформироватьГруппыВывода(Форма, ТаблицаСсылокФормы, ГруппаФормы, КоличествоГрупп, КоличествоСсылокВГруппе, ВыводитьСсылкуВсе); - Исключение - ИмяСобытия = ПолучитьИмяСобытияДляЖурналаРегистрации(); - ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - КонецПопытки; - -КонецПроцедуры - // Формирует элементы формы информационных ссылок в группе. // // Параметры: @@ -661,31 +706,44 @@ КонецФункции -// Возводит число в степень. -// -// Параметры: -// Число - Число - число, возводимое в степень. -// Степень - Число - степень, в которую необходимо возвести число. -// +// Процедуры и функции для удаления + +// Описывает ссылку сайта для для публикации приложений через Интернет. +// // Возвращаемое значение: -// Число - возведенное в степень число. -// -Функция ВозвестиЧислоВПоложительнуюСтепень(Число, Степень) +// Структура - структура с полями, которые описывают ссылку сайта. +// +Функция НовоеОписаниеСсылкиСайтаДляПубликацииПриложенийЧерезИнтернет() Экспорт - Если Степень = 0 Тогда - Возврат 1; - КонецЕсли; - - Если Степень = 1 Тогда - Возврат Число; - КонецЕсли; - - ВозвращаемоеЧисло = Число; - - Для Итерация = 2 по Степень Цикл - ВозвращаемоеЧисло = ВозвращаемоеЧисло * Число; - КонецЦикла; - - Возврат ВозвращаемоеЧисло; + Возврат Новый Структура("Имя, Адрес"); КонецФункции + +// Описывает структуру полезной ссылки. +// +// Возвращаемое значение: +// Структура - структура с полями, которые описывают полезную ссылку: +// Имя - Строка - наименование полезной ссылки. +// Адрес - Строка - адрес полезной ссылки. +// Пояснение - Строка - пояснение полезной ссылки. +// ДействиеПоНажатию - Строка - процедура-обработчик для полезной ссылки. +// +// Примечание: +// Поле "ДействиеПоНажатию" можно не устанавливать, если подразумевается переход по ссылке. +// +Функция НовоеОписаниеПолезнойСсылки() Экспорт + + Возврат Новый Структура("Имя, Адрес, Пояснение, ДействиеПоНажатию"); + +КонецФункции + +// Описывает структуру статьи. +// +// Возвращаемое значение: +// Структура - структура с полями, которые описывают статью. +// +Функция НовоеОписаниеСтатьи() Экспорт + + Возврат Новый Структура("Имя, Адрес"); + +КонецФункции diff --git a/SSL/src/CommonModules/ИнформационныйЦентрСерверПереопределяемый/Module.bsl b/SSL/src/CommonModules/ИнформационныйЦентрСерверПереопределяемый/Module.bsl index b7e60c0e4..b595e1937 100644 --- a/SSL/src/CommonModules/ИнформационныйЦентрСерверПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ИнформационныйЦентрСерверПереопределяемый/Module.bsl @@ -4,7 +4,7 @@ //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС // Определяет массив полезных ссылок для вывода на форме информационного центра на рабочем столе. // diff --git a/SSL/src/CommonModules/ИнформационныйЦентрСерверПовтИсп/Module.bsl b/SSL/src/CommonModules/ИнформационныйЦентрСерверПовтИсп/Module.bsl index 02fe03ac5..7a7c12296 100644 --- a/SSL/src/CommonModules/ИнформационныйЦентрСерверПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ИнформационныйЦентрСерверПовтИсп/Module.bsl @@ -4,7 +4,7 @@ //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС // Возвращает таблицу с информационными ссылками для форм // @@ -23,7 +23,7 @@ Функция ПолучитьТаблицуИнформационныхСсылокДляФормы(ПутьКФорме) Экспорт УстановитьПривилегированныйРежим(Истина); - ТекущаяВерсияКонфигурации = ИнформационныйЦентрСервер.ПолучитьВерсиюЧислом(Метаданные.Версия); + ТекущаяВерсияКонфигурации = ИнформационныйЦентрСлужебный.ПолучитьВерсиюЧислом(Метаданные.Версия); УстановитьПривилегированныйРежим(Ложь); Запрос = Новый Запрос; @@ -32,44 +32,46 @@ Запрос.УстановитьПараметр("ТекущаяВерсияКонфигурации", ТекущаяВерсияКонфигурации); Запрос.УстановитьПараметр("ТекущаяДата", ТекущаяДата()); // Проектное решение БСП Запрос.УстановитьПараметр("ПустаяДата", '00010101'); - Запрос.Текст = "ВЫБРАТЬ - | ПолныеПутиКФормам.Ссылка КАК Ссылка - |ПОМЕСТИТЬ ПутиКФормам - |ИЗ - | Справочник.ПолныеПутиКФормам КАК ПолныеПутиКФормам - |ГДЕ - | ПолныеПутиКФормам.ПолныйПутьКФорме ПОДОБНО &ПолныйПутьКФорме - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ - | ИнформационныеСсылкиДляФорм.Наименование КАК Наименование, - | ИнформационныеСсылкиДляФорм.Адрес КАК Адрес, - | ИнформационныеСсылкиДляФорм.Вес КАК Вес, - | ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности КАК ДатаНачалаАктуальности, - | ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности КАК ДатаОкончанияАктуальности, - | ИнформационныеСсылкиДляФорм.Подсказка КАК Подсказка - |ИЗ - | ПутиКФормам КАК ПутиКФормам - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИнформационныеСсылкиДляФорм КАК ИнформационныеСсылкиДляФорм - | ПО ПутиКФормам.Ссылка = ИнформационныеСсылкиДляФорм.ПолныйПутьКФорме - |ГДЕ - | ((ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииОт = &НулеваяВерсия - | И ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииДо = &НулеваяВерсия) - | ИЛИ (ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииОт = &НулеваяВерсия - | И ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииДо >= &ТекущаяВерсияКонфигурации) - | ИЛИ (ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииОт <= &ТекущаяВерсияКонфигурации - | И ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииДо = &НулеваяВерсия) - | ИЛИ (ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииОт <= &ТекущаяВерсияКонфигурации - | И ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииДо >= &ТекущаяВерсияКонфигурации)) И - | ((ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности = &ПустаяДата - | И ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности = &ПустаяДата) - | ИЛИ (ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности = &ПустаяДата - | И ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности >= &ТекущаяДата) - | ИЛИ (ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности <= &ТекущаяДата - | И ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности = &ПустаяДата) - | ИЛИ (ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности <= &ТекущаяДата - | И ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности >= &ТекущаяДата))"; + Запрос.Текст = + "ВЫБРАТЬ + | ПолныеПутиКФормам.Ссылка КАК Ссылка + |ПОМЕСТИТЬ ПутиКФормам + |ИЗ + | Справочник.ПолныеПутиКФормам КАК ПолныеПутиКФормам + |ГДЕ + | ПолныеПутиКФормам.ПолныйПутьКФорме ПОДОБНО &ПолныйПутьКФорме + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ИнформационныеСсылкиДляФорм.Наименование КАК Наименование, + | ИнформационныеСсылкиДляФорм.Адрес КАК Адрес, + | ИнформационныеСсылкиДляФорм.Вес КАК Вес, + | ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности КАК ДатаНачалаАктуальности, + | ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности КАК ДатаОкончанияАктуальности, + | ИнформационныеСсылкиДляФорм.Подсказка КАК Подсказка + |ИЗ + | ПутиКФормам КАК ПутиКФормам + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ИнформационныеСсылкиДляФорм КАК ИнформационныеСсылкиДляФорм + | ПО ПутиКФормам.Ссылка = ИнформационныеСсылкиДляФорм.ПолныйПутьКФорме + |ГДЕ + | (ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииОт = &НулеваяВерсия + | И ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииДо = &НулеваяВерсия + | ИЛИ ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииОт = &НулеваяВерсия + | И ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииДо >= &ТекущаяВерсияКонфигурации + | ИЛИ ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииОт <= &ТекущаяВерсияКонфигурации + | И ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииДо = &НулеваяВерсия + | ИЛИ ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииОт <= &ТекущаяВерсияКонфигурации + | И ИнформационныеСсылкиДляФорм.ВерсияКонфигурацииДо >= &ТекущаяВерсияКонфигурации) + | И (ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности = &ПустаяДата + | И ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности = &ПустаяДата + | ИЛИ ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности = &ПустаяДата + | И ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности >= &ТекущаяДата + | ИЛИ ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности <= &ТекущаяДата + | И ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности = &ПустаяДата + | ИЛИ ИнформационныеСсылкиДляФорм.ДатаНачалаАктуальности <= &ТекущаяДата + | И ИнформационныеСсылкиДляФорм.ДатаОкончанияАктуальности >= &ТекущаяДата)"; + Возврат Запрос.Выполнить().Выгрузить(); КонецФункции diff --git a/SSL/src/CommonModules/ИнформационныйЦентрСлужебный/Module.bsl b/SSL/src/CommonModules/ИнформационныйЦентрСлужебный/Module.bsl index a5f9a1a9d..9ff8878c9 100644 --- a/SSL/src/CommonModules/ИнформационныйЦентрСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ИнформационныйЦентрСлужебный/Module.bsl @@ -24,6 +24,80 @@ СерверныеОбработчики["СтандартныеПодсистемы.ОбновлениеВерсииИБ\ПриДобавленииОбработчиковОбновления"].Добавить( "ИнформационныйЦентрСлужебный"); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда + СерверныеОбработчики[ + "СтандартныеПодсистемы.РаботаВМоделиСервиса\ПриЗаполненииТаблицыПараметровИБ"].Добавить( + "ИнформационныйЦентрСлужебный"); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики служебных событий подсистем БСП + +// Формирует список параметров ИБ. +// +// Параметры: +// ТаблицаПараметров - ТаблицаЗначений - таблица описания параметров. +// Описание состав колонок - см. РаботаВМоделиСервиса.ПолучитьТаблицуПараметровИБ() +// +Процедура ПриЗаполненииТаблицыПараметровИБ(Знач ТаблицаПараметров) Экспорт + + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "АдресУправленияКонференцией"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "ИмяПользователяКонференцииИнформационногоЦентра"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "ПарольПользователяКонференцииИнформационногоЦентра"); + +КонецПроцедуры + +// Получает список обработчиков сообщений, которые обрабатывают подсистемы библиотеки. +// +// Параметры: +// Обработчики - ТаблицаЗначений - состав полей см. в ОбменСообщениями.НоваяТаблицаОбработчиковСообщений +// +Процедура ПриОпределенииОбработчиковКаналовСообщений(Обработчики) Экспорт + + СообщенияИнформационногоЦентраОбработчикСообщения.ПолучитьОбработчикиКаналовСообщений(Обработчики); + +КонецПроцедуры + +// Зарегистрировать обработчики поставляемых данных +// +// При получении уведомления о доступности новых общих данных, вызывается процедуры +// ДоступныНовыеДанные модулей, зарегистрированных через ПолучитьОбработчикиПоставляемыхДанных. +// В процедуру передается Дескриптор - ОбъектXDTO Descriptor. +// +// В случае, если ДоступныНовыеДанные устанавливает аргумент Загружать в значение Истина, +// данные загружаются, дескриптор и путь к файлу с данными передаются в процедуру +// ОбработатьНовыеДанные. Файл будет автоматически удален после завершения процедуры. +// Если в менеджере сервиса не был указан файл - значение аргумента равно Неопределено. +// +// Параметры: +// Обработчики, ТаблицаЗначений - таблица для добавления обработчиков. +// Колонки: +// ВидДанных, строка - код вида данных, обрабатываемый обработчиком +// КодОбработчика, строка(20) - будет использоваться при восстановлении обработки данных после сбоя +// Обработчик, ОбщийМодуль - модуль, содержащий следующие процедуры: +// ДоступныНовыеДанные(Дескриптор, Загружать) Экспорт +// ОбработатьНовыеДанные(Дескриптор, ПутьКФайлу) Экспорт +// ОбработкаДанныхОтменена(Дескриптор) Экспорт +// +Процедура ПриОпределенииОбработчиковПоставляемыхДанных(Обработчики) Экспорт + + ЗарегистрироватьОбработчикиПоставляемыхДанных(Обработчики); + +КонецПроцедуры + +// Добавляет процедуры-обработчики обновления, необходимые данной подсистеме. +// +// Параметры: +// Обработчики - ТаблицаЗначений - см. описание функции НоваяТаблицаОбработчиковОбновления +// общего модуля ОбновлениеИнформационнойБазы. +// +Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт + + ЗарегистрироватьОбработчикиОбновления(Обработчики); + КонецПроцедуры // Добавляет в список Обработчики процедуры-обработчики обновления, @@ -56,29 +130,59 @@ КонецПроцедуры -// Заполяет справочник "ПолныеПутиКформам" полными путями к формам. +// Заполяет справочник "ПолныеПутиКФормам" полными путями к формам. // Процедура СформироватьСловарьПолныхПутейКФормам() Экспорт - ДобавитьФормыВСправочник("ОбщиеФормы"); - ДобавитьФормыВСправочник("ПланыОбмена"); - ДобавитьФормыВСправочник("Справочники"); - ДобавитьФормыВСправочник("Документы"); - ДобавитьФормыВСправочник("ЖурналыДокументов"); - ДобавитьФормыВСправочник("Перечисления"); - ДобавитьФормыВСправочник("Отчеты"); - ДобавитьФормыВСправочник("Обработки"); - ДобавитьФормыВСправочник("ПланыВидовХарактеристик"); - ДобавитьФормыВСправочник("ПланыСчетов"); - ДобавитьФормыВСправочник("ПланыВидовРасчета"); - ДобавитьФормыВСправочник("РегистрыСведений"); - ДобавитьФормыВСправочник("РегистрыНакопления"); - ДобавитьФормыВСправочник("РегистрыБухгалтерии"); - ДобавитьФормыВСправочник("РегистрыРасчета"); - ДобавитьФормыВСправочник("БизнесПроцессы"); - ДобавитьФормыВСправочник("Задачи"); - ДобавитьФормыВСправочник("ХранилищаНастроек"); - ДобавитьФормыВСправочник("КритерииОтбора"); + // Формирование таблицы со списком полных форм конфигурации + ТаблицаФорм = Новый ТаблицаЗначений; + ТаблицаФорм.Колонки.Добавить("ПолныйПутьКФорме", Новый ОписаниеТипов("Строка")); + + ДобавитьФормыВСправочник(ТаблицаФорм, "ОбщиеФормы"); + ДобавитьФормыВСправочник(ТаблицаФорм, "ПланыОбмена"); + ДобавитьФормыВСправочник(ТаблицаФорм, "Справочники"); + ДобавитьФормыВСправочник(ТаблицаФорм, "Документы"); + ДобавитьФормыВСправочник(ТаблицаФорм, "ЖурналыДокументов"); + ДобавитьФормыВСправочник(ТаблицаФорм, "Перечисления"); + ДобавитьФормыВСправочник(ТаблицаФорм, "Отчеты"); + ДобавитьФормыВСправочник(ТаблицаФорм, "Обработки"); + ДобавитьФормыВСправочник(ТаблицаФорм, "ПланыВидовХарактеристик"); + ДобавитьФормыВСправочник(ТаблицаФорм, "ПланыСчетов"); + ДобавитьФормыВСправочник(ТаблицаФорм, "ПланыВидовРасчета"); + ДобавитьФормыВСправочник(ТаблицаФорм, "РегистрыСведений"); + ДобавитьФормыВСправочник(ТаблицаФорм, "РегистрыНакопления"); + ДобавитьФормыВСправочник(ТаблицаФорм, "РегистрыБухгалтерии"); + ДобавитьФормыВСправочник(ТаблицаФорм, "РегистрыРасчета"); + ДобавитьФормыВСправочник(ТаблицаФорм, "БизнесПроцессы"); + ДобавитьФормыВСправочник(ТаблицаФорм, "Задачи"); + ДобавитьФормыВСправочник(ТаблицаФорм, "ХранилищаНастроек"); + ДобавитьФормыВСправочник(ТаблицаФорм, "КритерииОтбора"); + + // Заполнение справочника "ПолныеПутиКФормам" + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ТаблицаФорм", ТаблицаФорм); + Запрос.Текст = + "ВЫБРАТЬ + | ТаблицаФорм.ПолныйПутьКФорме КАК ПолныйПутьКФорме + |ПОМЕСТИТЬ ТаблицаФорм + |ИЗ + | &ТаблицаФорм КАК ТаблицаФорм + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПолныеПутиКФормам.Ссылка КАК Ссылка, + | ТаблицаФорм.ПолныйПутьКФорме КАК ПолныйПутьКФорме + |ИЗ + | Справочник.ПолныеПутиКФормам КАК ПолныеПутиКФормам + | ПОЛНОЕ СОЕДИНЕНИЕ ТаблицаФорм КАК ТаблицаФорм + | ПО (ПОДСТРОКА(ПолныеПутиКФормам.ПолныйПутьКФорме, 1, 1000) = ПОДСТРОКА(ТаблицаФорм.ПолныйПутьКФорме, 1, 1000)) + |ГДЕ + | ПолныеПутиКФормам.Ссылка ЕСТЬ NULL "; + ВыборкаФорм = Запрос.Выполнить().Выбрать(); + Пока ВыборкаФорм.Следующий() Цикл + ДобавитьПолноеИмяВСправочник(ВыборкаФорм.ПолныйПутьКФорме); + КонецЦикла; КонецПроцедуры @@ -92,7 +196,14 @@ ИмяКонфигурации = Метаданные.Имя; УстановитьПривилегированныйРежим(Ложь); ПроксиВебСервиса = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_1(); - ПроксиВебСервиса.UpdateInfoReference(ИмяКонфигурации); + Результат = ПроксиВебСервиса.UpdateInfoReference(ИмяКонфигурации); + Если Результат Тогда + Возврат; + КонецЕсли; + + ТекстОшибки = НСтр("ru = 'Не удалось обновить Информационные ссылки'"); + ИмяСобытия = ИнформационныйЦентрСервер.ПолучитьИмяСобытияДляЖурналаРегистрации(); + ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ТекстОшибки); Исключение ИмяСобытия = ИнформационныйЦентрСервер.ПолучитьИмяСобытияДляЖурналаРегистрации(); ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); @@ -121,6 +232,44 @@ КонецПроцедуры +// Возвращает строковое представление версии в числовом диапазоне. +// +// Параметры: +// Версия - Строка - версия. +// +// Возвращаемое значение: +// Число - представление версии числом. +// +Функция ПолучитьВерсиюЧислом(Версия) Экспорт + + МассивЧисел = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Версия, "."); + + Итерация = 1; + ВерсияЧислом = 0; + КоличествоВМассиве = МассивЧисел.Количество(); + + Если КоличествоВМассиве = 0 Тогда + Возврат 0; + КонецЕсли; + + Для Каждого ЧислоВерсии Из МассивЧисел Цикл + + Попытка + ТекущееЧисло = Число(ЧислоВерсии); + ВерсияЧислом = ВерсияЧислом + ТекущееЧисло * ВозвестиЧислоВПоложительнуюСтепень(1000, КоличествоВМассиве - Итерация); + Исключение + Возврат 0; + КонецПопытки; + + Итерация = Итерация + 1; + + КонецЦикла; + + Возврат ВерсияЧислом; + +КонецФункции + + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ ПОЛУЧЕНИЯ ПОСТАВЛЯЕМЫХ ДАННЫХ @@ -210,8 +359,8 @@ Процедура ЗагрузитьИнформационныеСсылки(ПутьКФайлу) - // Формирование дерева тэгов - ДеревоТэгов = ПолучитьДеревоТэгов(); + // Формирование дерева тегов + ДеревоТегов = ПолучитьДеревоТегов(); ДатаОбновления = ТекущаяДата(); // Проектное решение БСП @@ -241,14 +390,14 @@ Если ТипЗнч(ИнформационнаяСсылка.context) = Тип("СписокXDTO") Тогда Для Каждого Контекст из ИнформационнаяСсылка.context Цикл Попытка - ЗаписатьСсылкуПоКонтекстам(ДеревоТэгов, ИнформационнаяСсылка, Контекст, ДатаОбновления); + ЗаписатьСсылкуПоКонтекстам(ДеревоТегов, ИнформационнаяСсылка, Контекст, ДатаОбновления); Исключение ИмяСобытия = ИнформационныйЦентрСервер.ПолучитьИмяСобытияДляЖурналаРегистрации(); ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецЦикла; Иначе - ЗаписатьСсылкуПоКонтекстам(ДеревоТэгов, ИнформационнаяСсылка, ИнформационнаяСсылка.context, ДатаОбновления); + ЗаписатьСсылкуПоКонтекстам(ДеревоТегов, ИнформационнаяСсылка, ИнформационнаяСсылка.context, ДатаОбновления); КонецЕсли; КонецЦикла; @@ -299,16 +448,16 @@ КонецПроцедуры -Процедура ЗаписатьСсылкуПоКонтекстам(ДеревоТэгов, ОбъектСсылки, Контекст, ДатаОбновления) +Процедура ЗаписатьСсылкуПоКонтекстам(ДеревоТегов, ОбъектСсылки, Контекст, ДатаОбновления) - Результат = ПроверитьНаличиеИмениФормыПоТэгу(Контекст.tag); + Результат = ПроверитьНаличиеИмениФормыПоТегу(Контекст.tag); Если Результат.ЭтоПутьКФорме Тогда ЗаписатьСсылкуПоКонтексту(ОбъектСсылки, Контекст, Результат.ПутьКФорме, ДатаОбновления); Возврат; КонецЕсли; - Тэг = Контекст.tag; - НайденнаяСтрока = ДеревоТэгов.Строки.Найти(Тэг, "Имя"); + Тег = Контекст.tag; + НайденнаяСтрока = ДеревоТегов.Строки.Найти(Тег, "Имя"); Если НайденнаяСтрока = Неопределено Тогда Возврат; КонецЕсли; @@ -344,8 +493,8 @@ ЭлементСправочника.Наименование = ОбъектСсылки.name; ЭлементСправочника.Подсказка = ОбъектСсылки.helpText; ЭлементСправочника.ПолныйПутьКФорме = СсылкаНаПутьКФорме; - ЭлементСправочника.ВерсияКонфигурацииОт = ИнформационныйЦентрСервер.ПолучитьВерсиюЧислом(Контекст.versionFrom); - ЭлементСправочника.ВерсияКонфигурацииДо = ИнформационныйЦентрСервер.ПолучитьВерсиюЧислом(Контекст.versionTo); + ЭлементСправочника.ВерсияКонфигурацииОт = ПолучитьВерсиюЧислом(Контекст.versionFrom); + ЭлементСправочника.ВерсияКонфигурацииДо = ПолучитьВерсиюЧислом(Контекст.versionTo); ЭлементСправочника.ДатаОбновления = ДатаОбновления; ЭлементСправочника.Записать(); @@ -373,18 +522,19 @@ КонецФункции -Функция ПроверитьНаличиеИмениФормыПоТэгу(Тэг) +Функция ПроверитьНаличиеИмениФормыПоТегу(Тег) Результат = Новый Структура("ЭтоПутьКФорме", Ложь); Запрос = Новый Запрос; - Запрос.УстановитьПараметр("ПолныйПутьКФорме", Тэг); - Запрос.Текст = "ВЫБРАТЬ - | ПолныеПутиКФормам.Ссылка КАК Ссылка - |ИЗ - | Справочник.ПолныеПутиКФормам КАК ПолныеПутиКФормам - |ГДЕ - | ПолныеПутиКФормам.ПолныйПутьКФорме ПОДОБНО &ПолныйПутьКФорме"; + Запрос.УстановитьПараметр("ПолныйПутьКФорме", Тег); + Запрос.Текст = + "ВЫБРАТЬ + | ПолныеПутиКФормам.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПолныеПутиКФормам КАК ПолныеПутиКФормам + |ГДЕ + | ПолныеПутиКФормам.ПолныйПутьКФорме ПОДОБНО &ПолныйПутьКФорме"; РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат Результат; @@ -399,59 +549,63 @@ КонецФункции -Функция ПолучитьДеревоТэгов() +Функция ПолучитьДеревоТегов() - ДеревоТэгов = Новый ДеревоЗначений; - ДеревоТэгов.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка")); + ДеревоТегов = Новый ДеревоЗначений; + ДеревоТегов.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка")); // Чтение общего макета ИмяФайлаМакета = ПолучитьИмяВременногоФайла("xml"); ПолучитьОбщийМакет("СоответствиеТэговОбщимФормам").Записать(ИмяФайлаМакета); - ЗаписиСоответствияТэговИФорм = Новый ЧтениеXML; - ЗаписиСоответствияТэговИФорм.ОткрытьФайл(ИмяФайлаМакета); + ЗаписиСоответствияТеговИФорм = Новый ЧтениеXML; + ЗаписиСоответствияТеговИФорм.ОткрытьФайл(ИмяФайлаМакета); - ТекущийТэгВДереве = Неопределено; - Пока ЗаписиСоответствияТэговИФорм.Прочитать() Цикл - // Чтение текущего тэга - ЭтоТэг = ЗаписиСоответствияТэговИФорм.ТипУзла = ТипУзлаXML.НачалоЭлемента и ВРег(СокрЛП(ЗаписиСоответствияТэговИФорм.Имя)) = ВРег("tag"); - Если ЭтоТэг Тогда - Пока ЗаписиСоответствияТэговИФорм.ПрочитатьАтрибут() Цикл - Если ВРег(ЗаписиСоответствияТэговИФорм.Имя) = ВРег("name") тогда - ТекущийТэгВДереве = ДеревоТэгов.Строки.Добавить(); - ТекущийТэгВДереве.Имя = ЗаписиСоответствияТэговИФорм.Значение; + ТекущийТегВДереве = Неопределено; + Пока ЗаписиСоответствияТеговИФорм.Прочитать() Цикл + // Чтение текущего тега + ЭтоТег = ЗаписиСоответствияТеговИФорм.ТипУзла = ТипУзлаXML.НачалоЭлемента и ВРег(СокрЛП(ЗаписиСоответствияТеговИФорм.Имя)) = ВРег("tag"); + Если ЭтоТег Тогда + Пока ЗаписиСоответствияТеговИФорм.ПрочитатьАтрибут() Цикл + Если ВРег(ЗаписиСоответствияТеговИФорм.Имя) = ВРег("name") тогда + ТекущийТегВДереве = ДеревоТегов.Строки.Добавить(); + ТекущийТегВДереве.Имя = ЗаписиСоответствияТеговИФорм.Значение; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; // Чтение формы - ЭтоФорма = ЗаписиСоответствияТэговИФорм.ТипУзла = ТипУзлаXML.НачалоЭлемента и ВРег(СокрЛП(ЗаписиСоответствияТэговИФорм.Имя)) = ВРег("form"); + ЭтоФорма = ЗаписиСоответствияТеговИФорм.ТипУзла = ТипУзлаXML.НачалоЭлемента и ВРег(СокрЛП(ЗаписиСоответствияТеговИФорм.Имя)) = ВРег("form"); Если ЭтоФорма Тогда - Пока ЗаписиСоответствияТэговИФорм.ПрочитатьАтрибут() Цикл - Если ВРег(ЗаписиСоответствияТэговИФорм.Имя) = ВРег("path") тогда - Если ТекущийТэгВДереве = Неопределено Тогда + Пока ЗаписиСоответствияТеговИФорм.ПрочитатьАтрибут() Цикл + Если ВРег(ЗаписиСоответствияТеговИФорм.Имя) = ВРег("path") тогда + Если ТекущийТегВДереве = Неопределено Тогда Прервать; КонецЕсли; - ТекущийЭлементДерева = ТекущийТэгВДереве.Строки.Добавить(); - ТекущийЭлементДерева.Имя = ЗаписиСоответствияТэговИФорм.Значение; + ТекущийЭлементДерева = ТекущийТегВДереве.Строки.Добавить(); + ТекущийЭлементДерева.Имя = ЗаписиСоответствияТеговИФорм.Значение; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; - Возврат ДеревоТэгов; + Возврат ДеревоТегов; КонецФункции -Процедура ДобавитьФормыВСправочник(ИмяКлассаМетаданного) +Процедура ДобавитьФормыВСправочник(ТаблицаФорм, ИмяКлассаМетаданного) КлассМетаданных = Метаданные[ИмяКлассаМетаданного]; КоличествоЭлементов = КлассМетаданных.Количество(); Если ИмяКлассаМетаданного = "ОбщиеФормы" Тогда Для ИтерацияЭлементов = 0 По КоличествоЭлементов - 1 Цикл - ПолноеИмяФормы = КлассМетаданных.Получить(ИтерацияЭлементов).ПолноеИмя(); - ДобавитьПолноеИмяВСправочник(ПолноеИмяФормы); + + ПолныйПутьКФорме = КлассМетаданных.Получить(ИтерацияЭлементов).ПолноеИмя(); + + ЭлементТаблицы = ТаблицаФорм.Добавить(); + ЭлементТаблицы.ПолныйПутьКФорме = ПолныйПутьКФорме; + КонецЦикла; Возврат; КонецЕсли; @@ -460,8 +614,12 @@ ФормыКлассаМетаданных = КлассМетаданных.Получить(ИтерацияЭлементов).Формы; КоличествоФорм = ФормыКлассаМетаданных.Количество(); Для ИтерацияФорм = 0 По КоличествоФорм - 1 Цикл - ПолноеИмяФормы = ФормыКлассаМетаданных.Получить(ИтерацияФорм).ПолноеИмя(); - ДобавитьПолноеИмяВСправочник(ПолноеИмяФормы); + + ПолныйПутьКФорме = ФормыКлассаМетаданных.Получить(ИтерацияФорм).ПолноеИмя(); + + ЭлементТаблицы = ТаблицаФорм.Добавить(); + ЭлементТаблицы.ПолныйПутьКФорме = ПолныйПутьКФорме; + КонецЦикла; КонецЦикла; @@ -469,10 +627,6 @@ Процедура ДобавитьПолноеИмяВСправочник(ПолноеИмяФормы) - Если Не СсылкаПутиКФормеВСправочнике(ПолноеИмяФормы).Пустая() Тогда - Возврат; - КонецЕсли; - ЭлементСправочника = Справочники.ПолныеПутиКФормам.СоздатьЭлемент(); ЭлементСправочника.Наименование = ПолноеИмяФормы; ЭлементСправочника.ПолныйПутьКФорме = ПолноеИмяФормы; @@ -484,12 +638,13 @@ Запрос = Новый Запрос; Запрос.УстановитьПараметр("ПолныйПутьКФорме", ПолноеИмяФормы); - Запрос.Текст = "ВЫБРАТЬ - | ПолныеПутиКФормам.Ссылка как Ссылка - |ИЗ - | Справочник.ПолныеПутиКФормам КАК ПолныеПутиКФормам - |ГДЕ - | ПолныеПутиКФормам.ПолныйПутьКФорме ПОДОБНО &ПолныйПутьКФорме"; + Запрос.Текст = + "ВЫБРАТЬ + | ПолныеПутиКФормам.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПолныеПутиКФормам КАК ПолныеПутиКФормам + |ГДЕ + | ПолныеПутиКФормам.ПолныйПутьКФорме ПОДОБНО &ПолныйПутьКФорме"; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); @@ -501,56 +656,32 @@ КонецФункции -//////////////////////////////////////////////////////////////////////////////// -// Обработчики служебных событий подсистем БСП - -// Получает список обработчиков сообщений, которые обрабатывают подсистемы библиотеки. -// -// Параметры: -// Обработчики - ТаблицаЗначений - состав полей см. в ОбменСообщениями.НоваяТаблицаОбработчиковСообщений -// -Процедура ПриОпределенииОбработчиковКаналовСообщений(Обработчики) Экспорт - - СообщенияИнформационногоЦентраОбработчикСообщения.ПолучитьОбработчикиКаналовСообщений(Обработчики); - -КонецПроцедуры - -// Зарегистрировать обработчики поставляемых данных -// -// При получении уведомления о доступности новых общих данных, вызывается процедуры -// ДоступныНовыеДанные модулей, зарегистрированных через ПолучитьОбработчикиПоставляемыхДанных. -// В процедуру передается Дескриптор - ОбъектXDTO Descriptor. -// -// В случае, если ДоступныНовыеДанные устанавливает аргумент Загружать в значение Истина, -// данные загружаются, дескриптор и путь к файлу с данными передаются в процедуру -// ОбработатьНовыеДанные. Файл будет автоматически удален после завершения процедуры. -// Если в менеджере сервиса не был указан файл - значение аргумента равно Неопределено. -// -// Параметры: -// Обработчики, ТаблицаЗначений - таблица для добавления обработчиков. -// Колонки: -// ВидДанных, строка - код вида данных, обрабатываемый обработчиком -// КодОбработчика, строка(20) - будет использоваться при восстановлении обработки данных после сбоя -// Обработчик, ОбщийМодуль - модуль, содержащий следующие процедуры: -// ДоступныНовыеДанные(Дескриптор, Загружать) Экспорт -// ОбработатьНовыеДанные(Дескриптор, ПутьКФайлу) Экспорт -// ОбработкаДанныхОтменена(Дескриптор) Экспорт -// -Процедура ПриОпределенииОбработчиковПоставляемыхДанных(Обработчики) Экспорт - - ЗарегистрироватьОбработчикиПоставляемыхДанных(Обработчики); - -КонецПроцедуры - -// Добавляет процедуры-обработчики обновления, необходимые данной подсистеме. +// Возводит число в степень. // // Параметры: -// Обработчики - ТаблицаЗначений - см. описание функции НоваяТаблицаОбработчиковОбновления -// общего модуля ОбновлениеИнформационнойБазы. +// Число - Число - число, возводимое в степень. +// Степень - Число - степень, в которую необходимо возвести число. // -Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт +// Возвращаемое значение: +// Число - возведенное в степень число. +// +Функция ВозвестиЧислоВПоложительнуюСтепень(Число, Степень) - ЗарегистрироватьОбработчикиОбновления(Обработчики); + Если Степень = 0 Тогда + Возврат 1; + КонецЕсли; -КонецПроцедуры + Если Степень = 1 Тогда + Возврат Число; + КонецЕсли; + + ВозвращаемоеЧисло = Число; + + Для Итерация = 2 по Степень Цикл + ВозвращаемоеЧисло = ВозвращаемоеЧисло * Число; + КонецЦикла; + + Возврат ВозвращаемоеЧисло; + +КонецФункции diff --git a/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl b/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl index 8d628238f..50d4d63ca 100644 --- a/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl +++ b/SSL/src/CommonModules/КалендарныеГрафики/Module.bsl @@ -47,6 +47,10 @@ КонецЦикла; // Алгоритм работает следующим образом: + // а) для графика работы + // Получаем количество включенных в график дней на дату отсчета + // Для всех последующих годов получаем "смещение" количества дней в виде суммы количества дней предыдущих годов + // б) для производственного календаря // Получаем все дни календаря, следующие после даты отсчета. // Для каждого из таких дней рассчитываем количество дней, включенных в график с даты отсчета. // Отбираем рассчитанное таким образом количество по таблице приращения дней. @@ -70,14 +74,65 @@ // По графику работы Запрос.Текст = "ВЫБРАТЬ - | КалендарныеГрафики.ДатаГрафика - |ПОМЕСТИТЬ ВТПоследующиеДатыГрафика + | КалендарныеГрафики.Год, + | МАКСИМУМ(КалендарныеГрафики.КоличествоДнейВГрафикеСНачалаГода) КАК ДнейВГрафике + |ПОМЕСТИТЬ ВТКоличествоДнейВГрафикеПоГодам |ИЗ | РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики |ГДЕ | КалендарныеГрафики.ДатаГрафика >= &ДатаОт | И КалендарныеГрафики.Календарь = &ГрафикРаботы - | И КалендарныеГрафики.ДеньВключенВГрафик"; + | И КалендарныеГрафики.ДеньВключенВГрафик + | + |СГРУППИРОВАТЬ ПО + | КалендарныеГрафики.Год + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | КоличествоДнейВГрафикеПоГодам.Год, + | СУММА(ЕСТЬNULL(КоличествоДнейПредыдущихГодов.ДнейВГрафике, 0)) КАК ДнейВГрафике + |ПОМЕСТИТЬ ВТКоличествоДнейСУчетомПредыдущихГодов + |ИЗ + | ВТКоличествоДнейВГрафикеПоГодам КАК КоличествоДнейВГрафикеПоГодам + | ЛЕВОЕ СОЕДИНЕНИЕ ВТКоличествоДнейВГрафикеПоГодам КАК КоличествоДнейПредыдущихГодов + | ПО (КоличествоДнейПредыдущихГодов.Год < КоличествоДнейВГрафикеПоГодам.Год) + | + |СГРУППИРОВАТЬ ПО + | КоличествоДнейВГрафикеПоГодам.Год + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | МИНИМУМ(КалендарныеГрафики.КоличествоДнейВГрафикеСНачалаГода) КАК КоличествоДнейВГрафикеСНачалаГода + |ПОМЕСТИТЬ ВТКоличествоДнейВГрафикеНаДатуОтсчета + |ИЗ + | РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики + |ГДЕ + | КалендарныеГрафики.ДатаГрафика >= &ДатаОт + | И КалендарныеГрафики.Год = ГОД(&ДатаОт) + | И КалендарныеГрафики.Календарь = &ГрафикРаботы + | И КалендарныеГрафики.ДеньВключенВГрафик + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПриращениеДней.ИндексСтроки, + | ЕСТЬNULL(КалендарныеГрафики.ДатаГрафика, НЕОПРЕДЕЛЕНО) КАК ДатаПоКалендарю + |ИЗ + | ВТПриращениеДней КАК ПриращениеДней + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТКоличествоДнейВГрафикеНаДатуОтсчета КАК КоличествоДнейВГрафикеНаДатуОтсчета + | ПО (ИСТИНА) + | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТКоличествоДнейСУчетомПредыдущихГодов КАК КоличествоДнейСУчетомПредыдущихГодов + | ПО (КоличествоДнейСУчетомПредыдущихГодов.Год = КалендарныеГрафики.Год) + | ПО (КалендарныеГрафики.КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеНаДатуОтсчета.КоличествоДнейВГрафикеСНачалаГода - КоличествоДнейСУчетомПредыдущихГодов.ДнейВГрафике + ПриращениеДней.КоличествоДней) + | И (КалендарныеГрафики.ДатаГрафика >= &ДатаОт) + | И (КалендарныеГрафики.Календарь = &ГрафикРаботы) + | И (КалендарныеГрафики.ДеньВключенВГрафик) + | + |УПОРЯДОЧИТЬ ПО + | ПриращениеДней.ИндексСтроки"; Иначе // По производственному календарю Запрос.Текст = @@ -89,38 +144,38 @@ |ГДЕ | КалендарныеГрафики.Дата >= &ДатаОт | И КалендарныеГрафики.ПроизводственныйКалендарь = &ГрафикРаботы - | И КалендарныеГрафики.ВидДня В (ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий), ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный))"; + | И КалендарныеГрафики.ВидДня В (ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Рабочий), ЗНАЧЕНИЕ(Перечисление.ВидыДнейПроизводственногоКалендаря.Предпраздничный)) + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПоследующиеДатыГрафика.ДатаГрафика, + | КОЛИЧЕСТВО(КалендарныеГрафики.ДатаГрафика) - 1 КАК КоличествоДнейВключенныхВГрафик + |ПОМЕСТИТЬ ВТПоследующиеДатыГрафикаСКоличествомДней + |ИЗ + | ВТПоследующиеДатыГрафика КАК ПоследующиеДатыГрафика + | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПоследующиеДатыГрафика КАК КалендарныеГрафики + | ПО (КалендарныеГрафики.ДатаГрафика <= ПоследующиеДатыГрафика.ДатаГрафика) + | + |СГРУППИРОВАТЬ ПО + | ПоследующиеДатыГрафика.ДатаГрафика + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПриращениеДней.ИндексСтроки, + | ЕСТЬNULL(ПоследующиеДни.ДатаГрафика, НЕОПРЕДЕЛЕНО) КАК ДатаПоКалендарю + |ИЗ + | ВТПриращениеДней КАК ПриращениеДней + | ЛЕВОЕ СОЕДИНЕНИЕ ВТПоследующиеДатыГрафикаСКоличествомДней КАК ПоследующиеДни + | ПО ПриращениеДней.КоличествоДней = ПоследующиеДни.КоличествоДнейВключенныхВГрафик + | + |УПОРЯДОЧИТЬ ПО + | ПриращениеДней.ИндексСтроки"; КонецЕсли; Запрос.УстановитьПараметр("ДатаОт", ДатаОт); Запрос.УстановитьПараметр("ГрафикРаботы", ГрафикРаботы); - Запрос.Выполнить(); - - Запрос.Текст = - "ВЫБРАТЬ - | ПоследующиеДатыГрафика.ДатаГрафика, - | КОЛИЧЕСТВО(КалендарныеГрафики.ДатаГрафика) - 1 КАК КоличествоДнейВключенныхВГрафик - |ПОМЕСТИТЬ ВТПоследующиеДатыГрафикаСКоличествомДней - |ИЗ - | ВТПоследующиеДатыГрафика КАК ПоследующиеДатыГрафика - | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПоследующиеДатыГрафика КАК КалендарныеГрафики - | ПО (КалендарныеГрафики.ДатаГрафика <= ПоследующиеДатыГрафика.ДатаГрафика) - | - |СГРУППИРОВАТЬ ПО - | ПоследующиеДатыГрафика.ДатаГрафика - |; - | - |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ - | ПриращениеДней.ИндексСтроки, - | ЕСТЬNULL(ПоследующиеДни.ДатаГрафика, НЕОПРЕДЕЛЕНО) КАК ДатаПоКалендарю - |ИЗ - | ВТПриращениеДней КАК ПриращениеДней - | ЛЕВОЕ СОЕДИНЕНИЕ ВТПоследующиеДатыГрафикаСКоличествомДней КАК ПоследующиеДни - | ПО ПриращениеДней.КоличествоДней = ПоследующиеДни.КоличествоДнейВключенныхВГрафик - | - |УПОРЯДОЧИТЬ ПО - | ПриращениеДней.ИндексСтроки"; Выборка = Запрос.Выполнить().Выбрать(); @@ -128,7 +183,7 @@ Пока Выборка.Следующий() Цикл Если Выборка.ДатаПоКалендарю = Неопределено Тогда - СообщениеОбОшибке = НСтр("ru = 'График работы ""%1"" не заполнен с даты %2 на указанное количество рабочих дней.'"); + СообщениеОбОшибке = НСтр("ru = 'График работы «%1» не заполнен с даты %2 на указанное количество рабочих дней.'"); Если ВызыватьИсключение Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СообщениеОбОшибке, @@ -320,7 +375,7 @@ Если Результат.Пустой() Тогда Если ВызыватьИсключение Тогда - СообщениеОбОшибке = НСтр("ru = 'График работы ""%1"" не заполнен на период %2.'"); + СообщениеОбОшибке = НСтр("ru = 'График работы «%1» не заполнен на период %2.'"); ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( СообщениеОбОшибке, ГрафикРаботы, ПредставлениеПериода(ДатаНачала, КонецДня(ДатаОкончания))); @@ -364,13 +419,15 @@ // если Истина – определяются рабочие даты, предшествующие переданным в параметре НачальныеДаты, // если Ложь – получаются даты не ранее начальной даты // ВызыватьИсключение - булево, если Истина вызывается исключение в случае незаполненного графика +// ИгнорироватьНезаполненностьГрафика - булево, если Истина, то в любом случае будет возвращено соответствие. +// Начальные даты, для которых не будет значений из-за незаполненности графика, включены не будут. // // Возвращаемое значение: // РабочиеДаты - соответствие, где ключ - дата из переданного массива, // значение - ближайшая к ней рабочая дата (если передана рабочая дата, то она же и возвращается) // Если выбранный график не заполнен, и ВызыватьИсключение = Ложь, возвращается Неопределено // -Функция ПолучитьДатыРабочихДней(График, НачальныеДаты, ПолучатьПредшествующие = Ложь, ВызыватьИсключение = Истина) Экспорт +Функция ПолучитьДатыРабочихДней(График, НачальныеДаты, ПолучатьПредшествующие = Ложь, ВызыватьИсключение = Истина, ИгнорироватьНезаполненностьГрафика = Ложь) Экспорт ТекстЗапросаВТ = ""; ПерваяЧасть = Истина; @@ -445,6 +502,9 @@ Если ЗначениеЗаполнено(Выборка.БлижайшаяДата) Тогда ДатыРабочихДней.Вставить(Выборка.Дата, Выборка.БлижайшаяДата); Иначе + Если ИгнорироватьНезаполненностьГрафика Тогда + Продолжить; + КонецЕсли; Если ВызыватьИсключение Тогда ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Невозможно определить ближайшую рабочую дату для даты %1, возможно, график работы не заполнен.'"), @@ -460,7 +520,8 @@ КонецФункции -// Составляет расписания работы для дат, включенных в указанные графики на указанный период +// Составляет расписания работы для дат, включенных в указанные графики на указанный период. +// Если расписание на предпраздничный день не задано, то оно определяется так, как если бы этот день был бы рабочим. // // Параметры // Графики - массив элементов типа СправочникСсылка.Календари @@ -558,14 +619,11 @@ | ДниВключенныеВГрафик.ГрафикРаботы, | ДниВключенныеВГрафик.ДатаГрафика, | ВЫБОР - | КОГДА ДниВключенныеВГрафик.ПредпраздничныйДень - | ТОГДА 0 - | ИНАЧЕ ВЫБОР - | КОГДА ДниВключенныеВГрафик.РезультатДеленияПоМодулю = 0 - | ТОГДА ДниВключенныеВГрафик.ДлинаЦикла - | ИНАЧЕ ДниВключенныеВГрафик.РезультатДеленияПоМодулю - | КОНЕЦ - | КОНЕЦ КАК НомерДня + | КОГДА ДниВключенныеВГрафик.РезультатДеленияПоМодулю = 0 + | ТОГДА ДниВключенныеВГрафик.ДлинаЦикла + | ИНАЧЕ ДниВключенныеВГрафик.РезультатДеленияПоМодулю + | КОНЕЦ КАК НомерДня, + | ДниВключенныеВГрафик.ПредпраздничныйДень |ПОМЕСТИТЬ ВТДатыНомераДней |ИЗ | (ВЫБРАТЬ @@ -599,11 +657,8 @@ |ВЫБРАТЬ | ДниВключенныеВГрафик.ГрафикРаботы, | ДниВключенныеВГрафик.ДатаГрафика, - | ВЫБОР - | КОГДА ДниВключенныеВГрафик.ПредпраздничныйДень - | ТОГДА 0 - | ИНАЧЕ ДЕНЬНЕДЕЛИ(ДниВключенныеВГрафик.ДатаГрафика) - | КОНЕЦ + | ДЕНЬНЕДЕЛИ(ДниВключенныеВГрафик.ДатаГрафика), + | ДниВключенныеВГрафик.ПредпраздничныйДень |ИЗ | ВТДниВключенныеВГрафик КАК ДниВключенныеВГрафик | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Календари КАК Календари @@ -613,18 +668,22 @@ |; | |//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ + |ВЫБРАТЬ РАЗЛИЧНЫЕ | ДниВключенныеВГрафик.ГрафикРаботы, | ДниВключенныеВГрафик.ДатаГрафика, | ДниВключенныеВГрафик.НомерДня, - | РасписанияРаботы.ВремяНачала, - | РасписанияРаботы.ВремяОкончания + | ЕСТЬNULL(РасписанияРаботыПредпраздничногоДня.ВремяНачала, РасписанияРаботы.ВремяНачала) КАК ВремяНачала, + | ЕСТЬNULL(РасписанияРаботыПредпраздничногоДня.ВремяОкончания, РасписанияРаботы.ВремяОкончания) КАК ВремяОкончания |ПОМЕСТИТЬ ВТРасписанияРаботы |ИЗ | ВТДатыНомераДней КАК ДниВключенныеВГрафик | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Календари.РасписаниеРаботы КАК РасписанияРаботы | ПО (РасписанияРаботы.Ссылка = ДниВключенныеВГрафик.ГрафикРаботы) | И (РасписанияРаботы.НомерДня = ДниВключенныеВГрафик.НомерДня) + | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Календари.РасписаниеРаботы КАК РасписанияРаботыПредпраздничногоДня + | ПО (РасписанияРаботыПредпраздничногоДня.Ссылка = ДниВключенныеВГрафик.ГрафикРаботы) + | И (РасписанияРаботыПредпраздничногоДня.НомерДня = 0) + | И (ДниВключенныеВГрафик.ПредпраздничныйДень) | |ИНДЕКСИРОВАТЬ ПО | ДниВключенныеВГрафик.ГрафикРаботы, @@ -730,6 +789,10 @@ ].Добавить("КалендарныеГрафики"); КонецЕсли; + СерверныеОбработчики[ + "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбязательныхОбъектовПланаОбмена" + ].Добавить("КалендарныеГрафики"); + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -747,6 +810,30 @@ КонецПроцедуры +// Используется для получения объектов метаданных обязательных для плана обмена. +// Если подсистема имеет объекты метаданных обязательные для включения в состав плана обмена, +// то в параметр <Объект> необходимо добавить эти объекты метаданных. +// +// Параметры: +// Объекты – Массив. Массив объектов метаданных конфигурации, которые необходимо включить в состав плана обмена. +// РаспределеннаяИнформационнаяБаза (только чтение) – Булево. Признак получения объектов для плана обмена РИБ. +// Истина – требуется получить список объектов плана обмена РИБ; +// Ложь – требуется получить список для плана обмена НЕ РИБ. +// +Процедура ПриПолученииОбязательныхОбъектовПланаОбмена(Объекты, Знач РаспределеннаяИнформационнаяБаза) Экспорт + + Если РаспределеннаяИнформационнаяБаза Тогда + + Объекты.Добавить(Метаданные.Справочники.ПроизводственныеКалендари); + Объекты.Добавить(Метаданные.РегистрыСведений.ДанныеПроизводственногоКалендаря); + + Объекты.Добавить(Метаданные.Справочники.Календари); + Объекты.Добавить(Метаданные.РегистрыСведений.КалендарныеГрафики); + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обновление информационной базы @@ -759,14 +846,24 @@ Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "1.1.3.11"; - Обработчик.Процедура = "КалендарныеГрафики.СоздатьКалендарьПятидневкаРоссийскойФедерации"; - - Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "2.0.1.15"; + Обработчик.НачальноеЗаполнение = Истина; Обработчик.Процедура = "КалендарныеГрафики.ОбновитьПроизводственныеКалендари"; Обработчик.ОбщиеДанные = Истина; + Обработчик = Обработчики.Добавить(); + Обработчик.НачальноеЗаполнение = Истина; + Обработчик.Процедура = "КалендарныеГрафики.ОбновитьДанныеПроизводственныхКалендарей"; + Обработчик.РежимВыполнения = "Монопольно"; + Обработчик.ОбщиеДанные = Истина; + + Обработчик = Обработчики.Добавить(); + Обработчик.НачальноеЗаполнение = Истина; + Обработчик.Процедура = "КалендарныеГрафики.ОбновитьИспользованиеНесколькихПроизводственныхКалендарей"; + + Обработчик = Обработчики.Добавить(); + Обработчик.НачальноеЗаполнение = Истина; + Обработчик.Процедура = "КалендарныеГрафики.СоздатьКалендарьПятидневкаРоссийскойФедерации"; + Обработчик = Обработчики.Добавить(); Обработчик.Версия = "2.1.3.1"; Обработчик.Процедура = "КалендарныеГрафики.ЗаполнитьНастройкиЗаполненияГрафиковРаботы"; @@ -776,8 +873,13 @@ Обработчик.Процедура = "КалендарныеГрафики.ОбновитьИспользованиеНесколькихПроизводственныхКалендарей"; Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "2.1.3.42"; + Обработчик.Версия = "2.1.4.21"; + Обработчик.Процедура = "КалендарныеГрафики.ЗаполнитьКоличествоДнейВГрафикеСНачалаГода"; + + Обработчик = Обработчики.Добавить(); + Обработчик.Версия = "2.1.4.24"; Обработчик.Процедура = "КалендарныеГрафики.ОбновитьДанныеПроизводственныхКалендарей"; + Обработчик.РежимВыполнения = "Монопольно"; Обработчик.ОбщиеДанные = Истина; КонецПроцедуры @@ -808,7 +910,7 @@ НовыйГрафикРаботы.ШаблонЗаполнения.Добавить().ДеньВключенВГрафик = НомерДня <= 5; КонецЦикла; - НовыйГрафикРаботы.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НовыйГрафикРаботы, Истина, Истина); КонецПроцедуры @@ -887,7 +989,7 @@ НоваяСтрока.ДеньВключенВГрафик = НомерДня <= КоличествоРабочихДней; КонецЦикла; КонецЕсли; - ГрафикРаботыОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ГрафикРаботыОбъект); КонецЦикла; КонецПроцедуры @@ -903,6 +1005,71 @@ КонецПроцедуры +// Заполняет вторичные данные для оптимизации расчета дат по календарю +// +Процедура ЗаполнитьКоличествоДнейВГрафикеСНачалаГода() Экспорт + + ТекстЗапроса = + "ВЫБРАТЬ РАЗЛИЧНЫЕ + | КалендарныеГрафики.Календарь, + | КалендарныеГрафики.Год + |ПОМЕСТИТЬ ВТГрафикиРаботыКоличествоДнейЗаполнено + |ИЗ + | РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики + |ГДЕ + | КалендарныеГрафики.КоличествоДнейВГрафикеСНачалаГода > 0 + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | КалендарныеГрафики.Календарь КАК Календарь, + | КалендарныеГрафики.Год КАК Год, + | КалендарныеГрафики.ДатаГрафика, + | КалендарныеГрафики.ДеньВключенВГрафик + |ИЗ + | РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики + | ЛЕВОЕ СОЕДИНЕНИЕ ВТГрафикиРаботыКоличествоДнейЗаполнено КАК ГрафикиРаботыКоличествоДнейЗаполнено + | ПО (ГрафикиРаботыКоличествоДнейЗаполнено.Календарь = КалендарныеГрафики.Календарь) + | И (ГрафикиРаботыКоличествоДнейЗаполнено.Год = КалендарныеГрафики.Год) + |ГДЕ + | ГрафикиРаботыКоличествоДнейЗаполнено.Год ЕСТЬ NULL + | + |УПОРЯДОЧИТЬ ПО + | КалендарныеГрафики.Календарь, + | КалендарныеГрафики.Год, + | КалендарныеГрафики.ДатаГрафика, + | КалендарныеГрафики.ДеньВключенВГрафик + |ИТОГИ ПО + | Календарь, + | Год"; + + // Выбираем графики работы и годы, для которых не заполнено значение ресурса КоличествоДнейВГрафикеСНачалаГода, + // заполняем для них последовательно рассчитывая количество дней + + Запрос = Новый Запрос(ТекстЗапроса); + ВыборкаПоГрафикам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + Пока ВыборкаПоГрафикам.Следующий() Цикл + ВыборкаПоГодам = ВыборкаПоГрафикам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); + Пока ВыборкаПоГодам.Следующий() Цикл + НаборЗаписей = РегистрыСведений.КалендарныеГрафики.СоздатьНаборЗаписей(); + КоличествоДнейВГрафикеСНачалаГода = 0; + Выборка = ВыборкаПоГодам.Выбрать(); + Пока Выборка.Следующий() Цикл + Если Выборка.ДеньВключенВГрафик Тогда + КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода + 1; + КонецЕсли; + СтрокаНабора = НаборЗаписей.Добавить(); + ЗаполнитьЗначенияСвойств(СтрокаНабора, Выборка); + СтрокаНабора.КоличествоДнейВГрафикеСНачалаГода = КоличествоДнейВГрафикеСНачалаГода; + КонецЦикла; + НаборЗаписей.Отбор.Календарь.Установить(ВыборкаПоГодам.Календарь); + НаборЗаписей.Отбор.Год.Установить(ВыборкаПоГодам.Год); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов в другие подсистемы @@ -912,8 +1079,8 @@ Процедура ЗапланироватьОбновлениеГрафиковРаботы(Знач УсловияОбновления) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.КалендарныеГрафикиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КалендарныеГрафикиСлужебныйВМоделиСервиса"); - Модуль.ЗапланироватьОбновлениеГрафиковРаботы(УсловияОбновления); + МодульКалендарныеГрафикиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КалендарныеГрафикиСлужебныйВМоделиСервиса"); + МодульКалендарныеГрафикиСлужебныйВМоделиСервиса.ЗапланироватьОбновлениеГрафиковРаботы(УсловияОбновления); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/КалендарныеГрафикиКлиентСервер/Module.bsl b/SSL/src/CommonModules/КалендарныеГрафикиКлиентСервер/Module.bsl index 5942b906b..547ae2098 100644 --- a/SSL/src/CommonModules/КалендарныеГрафикиКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/КалендарныеГрафикиКлиентСервер/Module.bsl @@ -21,7 +21,8 @@ Возврат; КонецЕсли; - Если Не ЗначениеЗаполнено(ТекущаяСтрока[ПолеУпорядочивания]) Тогда + Если ТипЗнч(ТекущаяСтрока[ПолеУпорядочивания]) <> Тип("Дата") + И Не ЗначениеЗаполнено(ТекущаяСтрока[ПолеУпорядочивания]) Тогда Возврат; КонецЕсли; diff --git a/SSL/src/CommonModules/КалендарныеГрафикиСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/КалендарныеГрафикиСлужебныйВМоделиСервиса/Module.bsl index ee2be8815..7b9dbda14 100644 --- a/SSL/src/CommonModules/КалендарныеГрафикиСлужебныйВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/КалендарныеГрафикиСлужебныйВМоделиСервиса/Module.bsl @@ -11,10 +11,6 @@ // СЕРВЕРНЫЕ ОБРАБОТЧИКИ. - СерверныеОбработчики[ - "СтандартныеПодсистемы.ОбновлениеВерсииИБ\ПриДобавленииОбработчиковОбновления"].Добавить( - "КалендарныеГрафикиСлужебныйВМоделиСервиса"); - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПоставляемыеДанные") Тогда СерверныеОбработчики[ "СтандартныеПодсистемы.РаботаВМоделиСервиса.ПоставляемыеДанные\ПриОпределенииОбработчиковПоставляемыхДанных"].Добавить( @@ -155,80 +151,6 @@ КонецПроцедуры -/////////////////////////////////////////////////////////////////////////////// -// Обновление информационной базы - -// Добавляет процедуры-обработчики обновления, необходимые данной подсистеме. -// -// Параметры: -// Обработчики - ТаблицаЗначений - см. описание функции НоваяТаблицаОбработчиковОбновления -// общего модуля ОбновлениеИнформационнойБазы. -// -Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт - - Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда - Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "2.1.2.6"; - Обработчик.Процедура = "КалендарныеГрафикиСлужебныйВМоделиСервиса.ЗаполнитьФлагиРучногоИзменения"; - Обработчик.Опциональный = Истина; - Обработчик.ОбщиеДанные = Истина; - КонецЕсли; - -КонецПроцедуры - -// Вызывается при обновлении версии в модели сервиса -// -Процедура ЗаполнитьФлагиРучногоИзменения() Экспорт - - УстановитьПривилегированныйРежим (Истина); - - Запрос = Новый Запрос( - "ВЫБРАТЬ - | ОбластиДанных.ОбластьДанныхВспомогательныеДанные КАК ОбластьДанных - |ИЗ - | РегистрСведений.ОбластиДанных КАК ОбластиДанных - |ГДЕ - | ОбластиДанных.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыОбластейДанных.Используется)"); - - ВыборкаОбластей = Запрос.Выполнить().Выбрать(); - Попытка - Пока ВыборкаОбластей.Следующий() Цикл - - ОбщегоНазначения.УстановитьРазделениеСеанса(Истина, ВыборкаОбластей.ОбластьДанных); - - Запрос = Новый Запрос( - "ВЫБРАТЬ - | УдалитьСвязиПоставляемыхДанных.ЭлементОбщихДанных КАК ГрафикРаботы - |ИЗ - | РегистрСведений.УдалитьСвязиПоставляемыхДанных КАК УдалитьСвязиПоставляемыхДанных - |ГДЕ - | УдалитьСвязиПоставляемыхДанных.ОбластьДанных = &ОбластьДанных - | И ТИПЗНАЧЕНИЯ(УдалитьСвязиПоставляемыхДанных.ЭлементОбщихДанных) = ТИП(Справочник.ПроизводственныеКалендари) - | И УдалитьСвязиПоставляемыхДанных.РучноеИзменение"); - - Запрос.УстановитьПараметр("ОбластьДанных", ВыборкаОбластей.ОбластьДанных); - - ВыборкаСправочников = Запрос.Выполнить().Выбрать(); - Пока ВыборкаСправочников.Следующий() Цикл - // Если в при использовании подсистемы «Поставляемые данные» был отказ от автоматического обновления, - // добавим запись в регистр ручных изменений графиков работы - НоваяЗапись = РегистрыСведений.РучныеИзмененияГрафиковРаботы.СоздатьМенеджерЗаписи(); - НоваяЗапись.ГрафикРаботы = ВыборкаСправочников.ГрафикРаботы; - НоваяЗапись.Год = 0; - НоваяЗапись.Записать(); - // Запись с незаполненным полем Год при обновлении интерпретируется - // как отказ от обновления графика за все годы - КонецЦикла; - КонецЦикла; - Исключение - ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); - ВызватьИсключение; - КонецПопытки; - - ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); - -КонецПроцедуры - // Вызывается при изменении производственных календарей // Процедура ЗапланироватьОбновлениеГрафиковРаботы(Знач УсловияОбновления) Экспорт @@ -300,9 +222,10 @@ Функция НачалоЭлемента(Знач ЧтениеXML, Знач Имя) Если ЧтениеXML.ТипУзла <> ТипУзлаXML.НачалоЭлемента Или ЧтениеXML.Имя <> Имя Тогда - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Календарные графики'"), УровеньЖурналаРегистрации.Ошибка, - ,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный формат файла данных. Ожидается начало элемента %1'"), Имя)); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Календарные графики'", + Метаданные.ОсновнойЯзык.КодЯзыка), УровеньЖурналаРегистрации.Ошибка, + ,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный формат файла данных. Ожидается начало элемента %1'"), Имя)); Возврат Ложь; КонецЕсли; @@ -313,9 +236,10 @@ Функция КонецЭлемента(Знач ЧтениеXML, Знач Имя) Если ЧтениеXML.ТипУзла <> ТипУзлаXML.КонецЭлемента Или ЧтениеXML.Имя <> Имя Тогда - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Календарные графики'"), УровеньЖурналаРегистрации.Ошибка, - ,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Неверный формат файла данных. Ожидается конец элемента %1'"), Имя)); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Календарные графики'", + Метаданные.ОсновнойЯзык.КодЯзыка), УровеньЖурналаРегистрации.Ошибка, + ,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неверный формат файла данных. Ожидается конец элемента %1'"), Имя)); Возврат Ложь; КонецЕсли; diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияXML/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияXML/Module.bsl new file mode 100644 index 000000000..7d2028279 --- /dev/null +++ b/SSL/src/CommonModules/КонтактнаяИнформацияXML/Module.bsl @@ -0,0 +1,676 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Подсистема "Контактная информация" +// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС +// + +// Сравнивает два XML и возвращает результат в виде таблицы значений. +// +// Параметры: +// Текст1, Текст2 - строки с XML данными +// +// Возвращает таблица значений с колонками: +// - Путь - строка - XPath путь к месту различия +// - Значение1 - строка - значение в XML из параметра Текст1 +// - Значение2 - строка - значение в XML из параметра Текст2 +// +Функция РазличияXML(Знач Текст1, Знач Текст2) Экспорт + Возврат ЗначениеИзСтрокиXML( XSLT_ТаблицаЗначенийРазличияXML(Текст1, Текст2) ); +КонецФункции + +// Возвращает соответствующее значение перечисления "ТипыКонтактнойИнформации" по строке XML +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию +// +Функция ТипКонтактнойИнформации(Знач XMLСтрока) Экспорт + Возврат ЗначениеИзСтрокиXML( XSLT_ТипКонтактнойИнформацииПоСтрокеXML(XMLСтрока) ); +КонецФункции + +// Читает строку состава из значения контактной информации +// Если значение состава сложного типа, то возвращает неопределено +// +// Параметры: +// Текст XML строка контактной информации. Может быть модифицирован +// +Функция СтрокаСоставаКонтактнойИнформации(Знач Текст, Знач НовоеЗначение=Неопределено) Экспорт + Чтение = Новый ЧтениеXML; + Чтение.УстановитьСтроку(Текст); + ОбъектXDTO= ФабрикаXDTO.ПрочитатьXML(Чтение, + ФабрикаXDTO.Тип(КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(), "КонтактнаяИнформация")); + + Состав = ОбъектXDTO.Состав; + Если Состав<>Неопределено + И Состав.Свойства().Получить("Значение")<>Неопределено + И ТипЗнч(Состав.Значение)=Тип("Строка") + Тогда + Возврат Состав.Значение; + КонецЕсли; + + Возврат Неопределено; +КонецФункции + +// Преобразует строку пар ключ=значение (см старый формат адреса) в структуру. +// +// Параметры: +// Текст - строка пар ключ=значение, разделенные переносом строки +// +Функция СтрокаКлючЗначениеВСтруктуру(Знач Текст) Экспорт + Возврат ЗначениеИзСтрокиXML( XSLT_СтрокаКлючЗначениеВСтруктуру(Текст) ); +КонецФункции + +// Преобразует строку пар ключ-значение (см старый формат адреса) в список значений. +// В возвращаемом списке значений представление - исходный ключ, значение - исходное значение +// +// Параметры: +// Текст - строка пар ключ=значение, разделенные переносом строки +// +Функция СтрокаКлючЗначениеВСписокЗначений(Знач Текст, Знач УникальностьПолей=Истина) Экспорт + Если УникальностьПолей Тогда + Возврат ЗначениеИзСтрокиXML( XSLT_УникальныеПоПредставлениюВСписке(XSLT_СтрокаКлючЗначениеВСписокЗначений(Текст)) ); + КонецЕсли; + Возврат ЗначениеИзСтрокиXML( XSLT_СтрокаКлючЗначениеВСписокЗначений(Текст) ); +КонецФункции + +// Преобразует структуру в строку пар ключ-значение, разделенный запятыми +// +// Параметры: +// Структура - исходная структура +// +Функция СтруктураВСтрокуКлючЗначение(Знач Структура) Экспорт + Возврат XSLT_СтруктураВСтрокуКлючЗначение( ЗначениеВСтрокуXML(Структура) ); +КонецФункции + +// Преобразует список значений в строку пар ключ-значение, разделенный запятыми +// +// Параметры: +// Список - список значений +// +Функция СписокЗначенийВСтрокуКлючЗначение(Знач Список) Экспорт + Возврат XSLT_СписокЗначенийВСтрокуКлючЗначение( ЗначениеВСтрокуXML(Список) ); +КонецФункции + +// Преобразует структуру в список значений. Ключ преобразуется в представление. +// +// Параметры: +// Структура - исходная структура +// +Функция СтруктураВСписокЗначений(Знач Структура) Экспорт + Возврат ЗначениеИзСтрокиXML( XSLT_СтруктураВСписокЗначений( ЗначениеВСтрокуXML(Структура) ) ); +КонецФункции + +// Преобразует список значений в структуру. Представление преобразуется в ключ. +// +// Параметры: +// Структура - исходная структура +// +Функция СписокЗначенийВСтруктуру(Знач Список) Экспорт + Возврат ЗначениеИзСтрокиXML( XSLT_СписокЗначенийВСтруктуру( ЗначениеВСтрокуXML(Список) ) ); +КонецФункции + +// Сравнивает два экземпляра контактной инфромации. +// +// Параметры: +// Данные1, Данные2 - данные экземпляров контактной информации. Каждый параметр независимо может принимать +// значения следующих типов: +// - ОбъектXTDO. Рассматривается как объект с контактной информацией +// - Строка. Рассматривается как контактная информация в формате XML +// - Структура, описывающие контактную информацию. Ожидаются поля: +// ЗначенияПолей - строка (XML или старый формат ключ-значение), структура, список значений, +// соответствие. Если в этом поле передана строка XML, то остальные поля +// структуры игнорируются. +// Представление - строка представления. Используется в случае, если не удалось вычислить +// представление из ЗначенияПолей (отсутствие в них поля Представление) +// ВидКонтактнойИнформации - ссылка на справочник ВидыКонтактнойИнформации или значение перечисления +// ТипыКонтактнойИнформации. Используется в случае, если не удалось вычислить +// тип из ЗначенияПолей +// Комментарий - строка комментария. Используется в случае, если не удалось вычислить +// комментарий из ЗначенияПолей +// +// Возвращает таблицу отличающихся полей со следующими колонками: +// Путь - строка XPath, идентифицирующая различающееся значение. Значение "ТипКонтактнойИнформации" означает, +// что переданные экземпляры контактной информации различаются типом. +// Описание - строка описания отличающегося реквизита в терминах предметной области +// Значение1 - строка значения, соответствующая объекту, переданному в параметре Данные1 +// Значение2 - строка значения, соответствующая объекту, переданному в параметре Данные2 +// +Функция РазличияКонтактнойИнформации(Знач Данные1, Знач Данные2) Экспорт + ДанныеКИ1 = ПривестиКонтактнуюИнформациюXML(Данные1); + ДанныеКИ2 = ПривестиКонтактнуюИнформациюXML(Данные2); + + ТипКонтактнойИнформации = ДанныеКИ1.ТипКонтактнойИнформации; + Если ТипКонтактнойИнформации<>ДанныеКИ2.ТипКонтактнойИнформации Тогда + // Различные типы, дальше не сравниваем + Результат = Новый ТаблицаЗначений; + Колонки = Результат.Колонки; + СтрокаРезультата = Результат.Добавить(); + СтрокаРезультата[Колонки.Добавить("Путь").Имя] = "ТипКонтактнойИнформации"; + СтрокаРезультата[Колонки.Добавить("Значение1").Имя] = ДанныеКИ1.ТипКонтактнойИнформации; + СтрокаРезультата[Колонки.Добавить("Значение2").Имя] = ДанныеКИ2.ТипКонтактнойИнформации; + СтрокаРезультата[Колонки.Добавить("Описание").Имя] = НСтр("ru='Различные типы контактной информации'"); + Возврат Результат; + КонецЕсли; + + ТекстРазличияXML = XSLT_ТаблицаЗначенийРазличияXML(ДанныеКИ1.ДанныеXML, ДанныеКИ2.ДанныеXML); + + // Отдаем интерпретацию в зависимости от типа + Возврат ЗначениеИзСтрокиXML( XSLT_ИнтерпретацияРазличияXMLКонтактнойИнформации( + ТекстРазличияXML, ТипКонтактнойИнформации)); + +КонецФункции + +// Преобразует контактную информацию в вид XML +// +// Параметры: +// Данные - строка XML, объект XTDO или структура, описывающие контактную информацию. +// В структуре ожидаются поля: +// "ЗначенияПолей" - строка (XML или старый формат ключ-значение) или структура или список значений. +// Если в этом поле передана строка XML, то остальные поля игнорируются +// "ВидКонтактнойИнформации" - СправочникСсылка.ВидыКонтактнойИнформации +// или Перечисление.ТипыКонтактнойИнформации +// "Представление" - строка представления +// "Комментарий" - необязательная строка комментария +// +// Возвращаемое значение - структура с полями: +// ТипКонтактнойИнформации - Перечисление.ТипыКонтактнойИнформации +// ДанныеXML - строка с текстом XML +// +Функция ПривестиКонтактнуюИнформациюXML(Знач Данные) Экспорт + Если ЭтоСтрокаXML(Данные) Тогда + Возврат Новый Структура("ДанныеXML, ТипКонтактнойИнформации", + Данные, ЗначениеИзСтрокиXML( XSLT_ТипКонтактнойИнформацииПоСтрокеXML(Данные) )); + + ИначеЕсли ТипЗнч(Данные)=Тип("ОбъектXDTO") Тогда + ДанныеXML = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(Данные); + Возврат Новый Структура("ДанныеXML, ТипКонтактнойИнформации", + ДанныеXML, ЗначениеИзСтрокиXML( XSLT_ТипКонтактнойИнформацииПоСтрокеXML(ДанныеXML) )); + + КонецЕсли; + // Ожидаем структуру + + Комментарий = Неопределено; + Данные.Свойство("Комментарий", Комментарий); + + ЗначенияПолей = Данные.ЗначенияПолей; + Если ЭтоСтрокаXML(ЗначенияПолей) Тогда + // Возможно необходимо переопределить комментарий + Если Не ПустаяСтрока(Комментарий) Тогда + КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(ЗначенияПолей, Комментарий); + КонецЕсли; + Возврат Новый Структура("ДанныеXML, ТипКонтактнойИнформации", + ЗначенияПолей, ЗначениеИзСтрокиXML( XSLT_ТипКонтактнойИнформацииПоСтрокеXML(ЗначенияПолей) )); + + КонецЕсли; + + // Разбираем по ЗначенияПолей, ВидКонтактнойИнформации, Представление + ТипЗначенийПолей = ТипЗнч(ЗначенияПолей); + Если ТипЗначенийПолей=Тип("Строка") Тогда + // Текст из пар ключ-значение + СтрокаXMLСтруктуры = XSLT_СтрокаКлючЗначениеВСтруктуру(ЗначенияПолей) + ИначеЕсли ТипЗначенийПолей=Тип("СписокЗначений") Тогда + // Список значений + СтрокаXMLСтруктуры = XSLT_СписокЗначенийВСтруктуру( ЗначениеВСтрокуXML(ЗначенияПолей) ); + ИначеЕсли ТипЗначенийПолей=Тип("Соответствие") Тогда + // Соответствие + СтрокаXMLСтруктуры = XSLT_СоответствиеВСтруктуру( ЗначениеВСтрокуXML(ЗначенияПолей) ); + Иначе + // Ожидаем структуру + СтрокаXMLСтруктуры = ЗначениеВСтрокуXML(ЗначенияПолей); + КонецЕсли; + + // Разбираем по ВидКонтактнойИнформации + ТипКонтактнойИнформации = УправлениеКонтактнойИнформацией.ТипВидаКонтактнойИнформации( + Данные.ВидКонтактнойИнформации); + Результат = Новый Структура("ТипКонтактнойИнформации, ДанныеXML", ТипКонтактнойИнформации); + + ВсеТипы = Перечисления.ТипыКонтактнойИнформации; + Если ТипКонтактнойИнформации=ВсеТипы.Адрес Тогда + Результат.ДанныеXML = XSLT_СтруктураВАдрес(СтрокаXMLСтруктуры, Данные.Представление, Комментарий); + + ИначеЕсли ТипКонтактнойИнформации=ВсеТипы.АдресЭлектроннойПочты Тогда + Результат.ДанныеXML = XSLT_СтруктураВАдресЭлектроннойПочты(СтрокаXMLСтруктуры, Данные.Представление, Комментарий); + + ИначеЕсли ТипКонтактнойИнформации=ВсеТипы.ВебСтраница Тогда + Результат.ДанныеXML = XSLT_СтруктураВВебСтраницу(СтрокаXMLСтруктуры, Данные.Представление, Комментарий); + + ИначеЕсли ТипКонтактнойИнформации=ВсеТипы.Телефон Тогда + Результат.ДанныеXML = XSLT_СтруктураВТелефон(СтрокаXMLСтруктуры, Данные.Представление, Комментарий); + + ИначеЕсли ТипКонтактнойИнформации=ВсеТипы.Факс Тогда + Результат.ДанныеXML = XSLT_СтруктураВФакс(СтрокаXMLСтруктуры, Данные.Представление, Комментарий); + + ИначеЕсли ТипКонтактнойИнформации=ВсеТипы.Другое Тогда + Результат.ДанныеXML = XSLT_СтруктураВДругое(СтрокаXMLСтруктуры, Данные.Представление, Комментарий); + + Иначе + ВызватьИсключение НСтр("ru='Ошибка параметров преобразования, не определен тип контактной информации'"); + + КонецЕсли; + + Возврат Результат; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +// Преобразует список значений, оставляя из него только последние значения пар ключ-значение по ключу-представлению. +// +// Параметры: +// Текст - сериализованный список значений +// +// Возвращаемое значение - строка XML сериализованного списка значений +// +Функция XSLT_УникальныеПоПредставлениюВСписке(Знач Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_УникальныеПоПредставлениюВСписке(); + Возврат Преобразователь.ПреобразоватьИзСтроки(Текст); +КонецФункции + +// Производит проверку двух строк XML - параметра и текущего +// Результат преобразования - сериализованый ValueTable (http://v8.1c.ru/8.1/data/core), в котором три колонки: +// - Путь - строка - путь к месту различия +// - Значение1 - строка - значение в XML из параметра Текст1 +// - Значение2 - строка - значение в XML из параметра Текст2 +// +// Проверяем только строки и атрибуты, без пробельных, CDATA и т.п. Порядок важен. +// +Функция XSLT_ТаблицаЗначенийРазличияXML(Текст1, Текст2) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_ТаблицаЗначенийРазличияXML(); + + Построитель = Новый ТекстовыйДокумент; + Построитель.ДобавитьСтроку("<dn><f>"); + Построитель.ДобавитьСтроку( XSLT_УдалитьОписаниеXML(Текст1) ); + Построитель.ДобавитьСтроку("</f><s>"); + Построитель.ДобавитьСтроку( XSLT_УдалитьОписаниеXML(Текст2) ); + Построитель.ДобавитьСтроку("</s></dn>"); + + Возврат Преобразователь.ПреобразоватьИзСтроки( Построитель.ПолучитьТекст() ); +КонецФункции + +// Преобразует текст с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML. +// В случае повторных ключей все включаются в результат, но при десериализации будет использован +// последний (особенность работы сериализатора платформы) +// +// Параметры: +// Текст - строка с парами Ключ=Значение +// +// Возвращаемое значение - строка XML сериализованной структуры +// +Функция XSLT_СтрокаКлючЗначениеВСтруктуру(Знач Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтрокаКлючЗначениеВСтруктуру(); + Возврат Преобразователь.ПреобразоватьИзСтроки( XSLT_УзелСтрокиПараметра(Текст) ); +КонецФункции + +// Преобразует текст с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML. +// В случае повторных ключей все включаются в результат +// +// Параметры: +// Текст - строка с парами Ключ=Значение +// +// Возвращаемое значение - строка XML сериализованного списка значений +// +Функция XSLT_СтрокаКлючЗначениеВСписокЗначений(Знач Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтрокаКлючЗначениеВСписокЗначений(); + Возврат Преобразователь.ПреобразоватьИзСтроки( XSLT_УзелСтрокиПараметра(Текст) ); +КонецФункции + +// Преобразует список значений в строку пар ключ=значение, разделенных переносом строки +// +// Параметры: +// Текст - сериализованный список значений +// +// Возвращаемое значение - строка результата +// +Функция XSLT_СписокЗначенийВСтрокуКлючЗначение(Знач Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СписокЗначенийВСтрокуКлючЗначение(); + Возврат Преобразователь.ПреобразоватьИзСтроки(Текст); +КонецФункции + +// Преобразует структуру в строку пар ключ=значение, разделенных переносом строки +// +// Параметры: +// Текст - сериализованная структура +// +// Возвращаемое значение - строка результата +// +Функция XSLT_СтруктураВСтрокуКлючЗначение(Знач Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВСтрокуКлючЗначение(); + Возврат Преобразователь.ПреобразоватьИзСтроки(Текст); +КонецФункции + +// Преобразует список значений в структур. Представление преобразуется в ключ +// +// Параметры: +// Текст - сериализованный список значений +// +// Возвращаемое значение - сериализованная структура +// +Функция XSLT_СписокЗначенийВСтруктуру(Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СписокЗначенийВСтруктуру(); + Возврат Преобразователь.ПреобразоватьИзСтроки(Текст); +КонецФункции + +// Преобразует структуру в список значений. Ключ преобразуется в представление. +// +// Параметры: +// Текст - сериализованная структура +// +// Возвращаемое значение - сериализованный список значений +// +Функция XSLT_СтруктураВСписокЗначений(Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВСписокЗначений(); + Возврат Преобразователь.ПреобразоватьИзСтроки(Текст); +КонецФункции + +// Преобразует соответсвие в структуру. Ключ преобразуется в ключ, значение - в значение. +// +// Параметры: +// Текст - сериализованное соответствие +// +// Возвращаемое значение - сериализованная структура +// +Функция XSLT_СоответствиеВСтруктуру(Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СоответствиеВСтруктуру(); + Возврат Преобразователь.ПреобразоватьИзСтроки(Текст); +КонецФункции + +// Анализирует таблицу Путь-Значение1-Значение2 для указанного вида контактной информации +// +// Параметры: +// Текст - строка XML с ValueTable из результата сравнения XML. Ожидаются колонки +// "Путь", "Значение1", "Значение2". +// ТипКонтактнойИнформации - значение перечисления типа +// +// Возвращает сериализованную таблицу значений отличающихся полей с колонками +// "Путь", "Описание", "Значение1", "Значение2". +// +Функция XSLT_ИнтерпретацияРазличияXMLКонтактнойИнформации(Знач Текст, Знач ТипКонтактнойИнформации) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_ИнтерпретацияРазличияXMLКонтактнойИнформации( + ТипКонтактнойИнформации); + Возврат Преобразователь.ПреобразоватьИзСтроки(Текст); +КонецФункции + +// Преобразует структуру в XML контакной информации +// +// Параметры: +// Текст - сериализованная структура +// Представление - необязательное представление. Используется, только если в структуре нет поля представления +// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария +// +// Возвращаемое значение - XML контактной информации +// +Функция XSLT_СтруктураВАдрес(Знач Текст, Знач Представление=Неопределено, Знач Комментарий=Неопределено) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВАдрес(); + Возврат XSLT_КонтрольПредставленияИКомментария( + Преобразователь.ПреобразоватьИзСтроки(Текст), + Представление, Комментарий); +КонецФункции + +// Преобразует структуру в XML контакной информации +// +// Параметры: +// Текст - сериализованная структура +// Представление - необязательное представление. Используется, только если в структуре нет поля представления +// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария +// +// Возвращаемое значение - XML контактной информации +// +Функция XSLT_СтруктураВАдресЭлектроннойПочты(Знач Текст, Знач Представление=Неопределено, Знач Комментарий=Неопределено) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВАдресЭлектроннойПочты(); + + Возврат XSLT_КонтрольПредставленияИКомментария( + XSLT_КонтрольСтроковогоЗначенияПростогоТипа( Преобразователь.ПреобразоватьИзСтроки(Текст), Представление), + Представление, Комментарий); +КонецФункции + +// Преобразует структуру в XML контакной информации +// +// Параметры: +// Текст - сериализованная структура +// Представление - необязательное представление. Используется, только если в структуре нет поля представления +// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария +// +// Возвращаемое значение - XML контактной информации +// +Функция XSLT_СтруктураВВебСтраницу(Знач Текст, Знач Представление=Неопределено, Знач Комментарий=Неопределено) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВВебСтраницу(); + + Возврат XSLT_КонтрольПредставленияИКомментария( + XSLT_КонтрольСтроковогоЗначенияПростогоТипа( Преобразователь.ПреобразоватьИзСтроки(Текст), Представление), + Представление, Комментарий); +КонецФункции + +// Преобразует структуру в XML контакной информации +// +// Параметры: +// Текст - сериализованная структура +// Представление - необязательное представление. Используется, только если в структуре нет поля представления +// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария +// +// Возвращаемое значение - XML контактной информации +// +Функция XSLT_СтруктураВТелефон(Знач Текст, Знач Представление=Неопределено, Знач Комментарий=Неопределено) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВТелефон(); + Возврат XSLT_КонтрольПредставленияИКомментария( + Преобразователь.ПреобразоватьИзСтроки(Текст), + Представление, Комментарий); +КонецФункции + +// Преобразует структуру в XML контакной информации +// +// Параметры: +// Текст - сериализованная структура +// Представление - необязательное представление. Используется, только если в структуре нет поля представления +// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария +// +// Возвращаемое значение - XML контактной информации +// +Функция XSLT_СтруктураВФакс(Знач Текст, Знач Представление=Неопределено, Знач Комментарий=Неопределено) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВФакс(); + Возврат XSLT_КонтрольПредставленияИКомментария( + Преобразователь.ПреобразоватьИзСтроки(Текст), + Представление, Комментарий); +КонецФункции + +// Преобразует структуру в XML контакной информации +// +// Параметры: +// Текст - сериализованная структура +// Представление - необязательное представление. Используется, только если в структуре нет поля представления +// Комментарий - необязательный комментарий. Используется, только если в структуре нет поля комментария +// +// Возвращаемое значение - XML контактной информации +// +Функция XSLT_СтруктураВДругое(Знач Текст, Знач Представление=Неопределено, Знач Комментарий=Неопределено) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_СтруктураВДругое(); + + Возврат XSLT_КонтрольПредставленияИКомментария( + XSLT_КонтрольСтроковогоЗначенияПростогоТипа( Преобразователь.ПреобразоватьИзСтроки(Текст), Представление), + Представление, Комментарий); +КонецФункции + +// Устанавливает в контактной информации представление и комментарий, если они не заполнены +// +// Параметры: +// Текст - XML контактной информации +// Представление - необязательное устанавливаемое представление. +// Комментарий - необязательный устанавливаемый комментарий. +// +// Возвращаемое значение - XML контактной информации +// +Функция XSLT_КонтрольПредставленияИКомментария(Знач Текст, Знач Представление=Неопределено, Знач Комментарий=Неопределено) + Если Представление=Неопределено И Комментарий=Неопределено Тогда + Возврат Текст; + КонецЕсли; + + XSLT_Текст = Новый ТекстовыйДокумент; + XSLT_Текст.ДобавитьСтроку(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:tns=""http://www.v8.1c.ru/ssl/contactinfo"" + |> + | <xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + | + | <xsl:template match=""node() | @*""> + | <xsl:copy> + | <xsl:apply-templates select=""node() | @*"" /> + | </xsl:copy> + | </xsl:template> + |"); + + Если Представление<>Неопределено Тогда + XSLT_Текст.ДобавитьСтроку(" + | <xsl:template match=""tns:КонтактнаяИнформация/@Представление""> + | <xsl:attribute name=""Представление""> + | <xsl:choose> + | <xsl:when test="".=''"">" + МногострочнаяСтрокаXML(Представление) + "</xsl:when> + | <xsl:otherwise> + | <xsl:value-of select="".""/> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:attribute> + | </xsl:template> + |"); + КонецЕсли; + + Если Комментарий<>Неопределено Тогда + XSLT_Текст.ДобавитьСтроку(" + | <xsl:template match=""tns:КонтактнаяИнформация/tns:Комментарий""> + | <xsl:element name=""Комментарий""> + | <xsl:choose> + | <xsl:when test=""text()=''"">" + МногострочнаяСтрокаXML(Комментарий) + "</xsl:when> + | <xsl:otherwise> + | <xsl:value-of select="".""/> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:attribute> + | </xsl:template> + |"); + КонецЕсли; + XSLT_Текст.ДобавитьСтроку(" + |</xsl:stylesheet> + |"); + + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки( XSLT_Текст.ПолучитьТекст() ); + + Возврат Преобразователь.ПреобразоватьИзСтроки(Текст); +КонецФункции + +// Устанавливает в контактной информации Состав.Значение на переданное представление +// +// Параметры: +// Текст - XML контактной информации +// Представление - устанавливаемое представление. +// +// Если Представление равно неопределено, то никаких действий не производит. Иначе проверяет на пустоту +// Состав. Если там ничего нет и атрибут "Состав.Значение" пуст, то ставим в состав значение представления +// +Функция XSLT_КонтрольСтроковогоЗначенияПростогоТипа(Знач Текст, Знач Представление) + Если Представление=Неопределено Тогда + Возврат Текст; + КонецЕсли; + + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:tns=""http://www.v8.1c.ru/ssl/contactinfo"" + |> + | <xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + | + | <xsl:template match=""node() | @*""> + | <xsl:copy> + | <xsl:apply-templates select=""node() | @*"" /> + | </xsl:copy> + | </xsl:template> + | + | <xsl:template match=""tns:КонтактнаяИнформация/tns:Состав/@Значение""> + | <xsl:attribute name=""Значение""> + | <xsl:choose> + | <xsl:when test="".=''"">" + МногострочнаяСтрокаXML(Представление) + "</xsl:when> + | <xsl:otherwise> + | <xsl:value-of select="".""/> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:attribute> + | </xsl:template> + | + |</xsl:stylesheet> + |"); + + Возврат Преобразователь.ПреобразоватьИзСтроки(Текст); +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// Возвращает фрагмент XML для подстановки строки в виде <Узел>Строка<Узел> +// +// Параметры: +// - Текст - строка, вставляемая в XML +// - ИмяЭлемента - необязательное имя для внешнего узла +// +Функция XSLT_УзелСтрокиПараметра(Знач Текст, Знач ИмяЭлемента="ExternalParamNode") + // Через запись xml для маскировки спецсимволов + Запись = Новый ЗаписьXML; + Запись.УстановитьСтроку(); + Запись.ЗаписатьНачалоЭлемента(ИмяЭлемента); + Запись.ЗаписатьТекст(Текст); + Запись.ЗаписатьКонецЭлемента(); + Возврат Запись.Закрыть(); +КонецФункции + +// Возвращает XML без описания <?xml...> для включения внутрь другого XML +// +// Параметры: +// - Текст - исходный XML +// +Функция XSLT_УдалитьОписаниеXML(Знач Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_УдалитьОписаниеXML(); + Возврат Преобразователь.ПреобразоватьИзСтроки(СокрЛ(Текст)); +КонецФункции + +// Преобразует текст XML контактной информации в перечисление типа +// +// Параметры: +// - Текст - исходный XML +// +// Возвращаемое значение - сериализованное значение перечисления ТипыКонтактнойИнформации +// +Функция XSLT_ТипКонтактнойИнформацииПоСтрокеXML(Знач Текст) + Преобразователь = КонтактнаяИнформацияСлужебныйПовтИсп.XSLT_ТипКонтактнойИнформацииПоСтрокеXML(); + Возврат Преобразователь.ПреобразоватьИзСтроки(СокрЛ(Текст)); +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +// Возвращает признак того, является ли текст XML +// +// Параметры: +// Текст - проверяемый текст +// +Функция ЭтоСтрокаXML(Текст) + Возврат ТипЗнч(Текст)=Тип("Строка") И Лев(СокрЛ(Текст),1)="<"; +КонецФункции + +// Десериализатор известных платформе типов +Функция ЗначениеИзСтрокиXML(Знач Текст) + ЧтениеXML = Новый ЧтениеXML; + ЧтениеXML.УстановитьСтроку(Текст); + Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML); +КонецФункции + +// Сериализатор известных платформе типов +Функция ЗначениеВСтрокуXML(Знач Значение) + ЗаписьXML = Новый ЗаписьXML; + ЗаписьXML.УстановитьСтроку(Новый ПараметрыЗаписиXML(, , Ложь, Ложь, "")); + СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Значение, НазначениеТипаXML.Явное); + // Платформенный сериализатор позволяет записать в значение атрибутов перенос строки + Возврат СтрЗаменить(ЗаписьXML.Закрыть(), Символы.ПС, " "); +КонецФункции + +// Для работы с атрибутами содержащими переносы строк +Функция МногострочнаяСтрокаXML(Знач Текст) + Возврат СтрЗаменить(Текст, Символы.ПС, " "); +КонецФункции diff --git a/SSL/src/CommonModules/СтруктураПодчиненности/СтруктураПодчиненности.mdo b/SSL/src/CommonModules/КонтактнаяИнформацияXML/КонтактнаяИнформацияXML.mdo similarity index 62% rename from SSL/src/CommonModules/СтруктураПодчиненности/СтруктураПодчиненности.mdo rename to SSL/src/CommonModules/КонтактнаяИнформацияXML/КонтактнаяИнформацияXML.mdo index 894f590ae..89c6972d7 100644 --- a/SSL/src/CommonModules/СтруктураПодчиненности/СтруктураПодчиненности.mdo +++ b/SSL/src/CommonModules/КонтактнаяИнформацияXML/КонтактнаяИнформацияXML.mdo @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> -<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ac78ccb4-6560-4daf-80e2-07df4d71a13e"> - <name>СтруктураПодчиненности</name> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="caf79125-bde8-4f52-8ad2-f915c7a884cc"> + <name>КонтактнаяИнформацияXML</name> <synonym> <key>ru</key> - <value>Структура подчиненности</value> + <value>Контактная информация XML</value> </synonym> <server>true</server> <externalConnection>true</externalConnection> diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияВызовСервера/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияВызовСервера/Module.bsl deleted file mode 100644 index 61da56487..000000000 --- a/SSL/src/CommonModules/КонтактнаяИнформацияВызовСервера/Module.bsl +++ /dev/null @@ -1,52 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////////////////////////// -// Подсистема "Контактная информация" -// -//////////////////////////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// ПРОГРАММНЫЙ ИНТЕРФЕЙС - -// Разбирает представление контактной информации и возвращает строку XML со значениями полей -// -// Параметры: -// Текст - строка XML -// ОжидаемыйТип - ссылка на вид КИ или перечисление типа КИ для контроля типов -// -Функция ПарсингКонтактнойИнформацииXML(Текст, ОжидаемыйВид) Экспорт - Возврат КонтактнаяИнформацияСлужебный.ПарсингКонтактнойИнформацииXML(Текст, ОжидаемыйВид); -КонецФункции - -// Возвращает представление контактной информации, хранящееся внутри XML. -// -// Параметры: -// Текст - XML строка контактной информации -// -Функция ПредставлениеКонтактнойИнформацииXML(Текст) Экспорт - Возврат КонтактнаяИнформацияСлужебный.ПредставлениеКонтактнойИнформации(Текст); -КонецФункции - -// Возвращает или устанавливает комментарий для контактной информации -// -// Параметры: -// Текст - XML строка контактной информации. Строка может измениться. -// НовоеЗначение - необязательный устанавливаемый новый комментарий. Если параметр не указан, -// то значение параметра "Текст" не меняется, иначе он принимает значение XML, -// соответствующее сериализованной КИ с новым комментарием -// Возвращаемое значение: -// Комментарий, хранящийся внутри XML. Возможно обновленный после установки из параметра "НовоеЗначение" -// -Функция КомментарийКонтактнойИнформацииXML(Текст, НовоеЗначение=Неопределено) Экспорт - Возврат КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(Текст, НовоеЗначение); -КонецФункции - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС - -// Возвращает значение перечисления типа соответствующего переданному виду КИ -// -// Параметры: -// ВидИнформации - ссылка на справочник ВидыКонтактнойИнформации -// -Функция ТипВидаКонтактнойИнформации(ВидИнформации) Экспорт - Возврат ВидИнформации.Тип; -КонецФункции diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияКлиент/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияКлиент/Module.bsl deleted file mode 100644 index c171fdf2f..000000000 --- a/SSL/src/CommonModules/КонтактнаяИнформацияКлиент/Module.bsl +++ /dev/null @@ -1,250 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////////////////////////// -// Подсистема "Контактная информация" -// -//////////////////////////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС - -// Конструктор для структуры параметров открытия формы контактной информации -// -// Параметры: -// ВидКонтактнойИнформации - вид редактируемой информации, СправочникСсылка.ВидыКонтактнойИнформации -// Значение - строка с сериализованным значением полей контактной информации -// Представление - необязательное представление -// -Функция ПараметрыФормыКонтактнойИнформации(ВидКонтактнойИнформации, Значение, Представление=Неопределено) Экспорт - Возврат Новый Структура("ВидКонтактнойИнформации, ЗначенияПолей, Представление", - ВидКонтактнойИнформации, Значение, Представление - ); -КонецФункции - -// Открывает подходящую форму контактной информации для редактирования или просмотра -// -// Параметры: -// Параметры - результат функции ПараметрыФормыКонтактнойИнформации -// Владелец - параметр для открываемой формы -// Уникальность - параметр для открываемой формы -// Окно - параметр для открываемой формы -// -Процедура ОткрытьФормуКонтактнойИнформации(Параметры, Владелец=Неопределено, Уникальность=Неопределено, Окно=Неопределено) Экспорт - ОткрытьФормуКонтактнойИнформацииВнутр(Параметры, Владелец, Уникальность, Окно); -КонецПроцедуры - -// Модально открывает подходящую форму контактной информации для редактирования или просмотра -// -// Параметры: -// Параметры - результат функции ПараметрыФормыКонтактнойИнформации -// Владелец - параметр для открываемой формы -// Уникальность - параметр для открываемой формы -// Окно - параметр для открываемой формы -// Таймаут - параметр для открываемой формы -// -Функция ОткрытьФормуКонтактнойИнформацииМодально(Параметры, Владелец=Неопределено, Уникальность=Неопределено, Окно=Неопределено) Экспорт - Возврат ОткрытьФормуКонтактнойИнформацииВнутр(Параметры, Владелец, Уникальность, Окно, Истина); -КонецФункции - -// Обработчик события НачалоВыбора для улицы -// -// Параметры: -// Элемент - вызывающий элемент формы -// КодКлассификатораНаселенногоПункта - ограничение по населенному пункту -// ТекущееЗначение - текущее значение - или код классификатора, или текст -// ПараметрыФормы - необязательная дополнительная структура параметров для формы подбора -// -Процедура НачалоВыбораУлицы(Элемент, КодКлассификатораНаселенногоПункта, ТекущееЗначение, ПараметрыФормы=Неопределено) Экспорт - Если КодКлассификатораНаселенногоПункта<=0 Тогда - Возврат; - КонецЕсли; - - Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); - ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; - Если Вариант=Неопределено Тогда - // Нет подсистемы классификатора - Возврат; - ИначеЕсли Вариант=ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда - НачалоВыбораУлицыКЛАДР(Элемент, КодКлассификатораНаселенногоПункта, ТекущееЗначение, ПараметрыФормы); - КонецЕсли; - -КонецПроцедуры - -// Обработчик события НачалоВыбора для элемента адреса (субъект РФ, район, город и т.п.) -// -// Параметры: -// Элемент - вызывающий элемент формы -// КодЧастиАдреса - идентификатор обрабатываемой части адреса, зависит от классификатора -// ЧастиАдреса - значения для других частей адреса, зависит от классификатора -// ПараметрыФормы - необязательная дополнительная структура параметров для формы подбора -// -Процедура НачалоВыбораЭлементаАдреса(Элемент, КодЧастиАдреса, ЧастиАдреса, ПараметрыФормы=Неопределено) Экспорт - Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); - ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; - - Если Вариант=Неопределено Тогда - // Нет подсистемы классификатора - Возврат; - ИначеЕсли Вариант=ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда - НачалоВыбораЭлементаАдресаКЛАДР(Элемент, КодЧастиАдреса, ЧастиАдреса, ПараметрыФормы); - КонецЕсли; - -КонецПроцедуры - -// Возвращает полное наименование для населенного пункта. Под населенным пунктом понимается синтетическое -// поле, характеризующее все, что больше улицы -// -// Параметры: -// ЧастиАдреса - значения для частей адреса, зависит от классификатора -// -Функция НаименованиеНаселенногоПунктаПоЧастямАдреса(ЧастиАдреса) Экспорт - Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); - ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; - - Если Вариант=Неопределено Тогда - // Нет подсистемы классификатора - Возврат ""; - ИначеЕсли Вариант=ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда - Возврат НаименованиеНаселенногоПунктаПоЧастямАдресаКЛАДР(ЧастиАдреса) - КонецЕсли; - - Возврат ""; -КонецФункции - -// Предлагает загрузить адресный классификатор -// -// Параметры: -// Текст - строка с дополнительным текстов предложения -// -Процедура ПредложениеЗагрузкиКлассификатора(Текст="") Экспорт - -#Если ВебКлиент Тогда - Возврат; -#КонецЕсли - - Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); - ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; - - Если Вариант=Неопределено Тогда - // Нет подсистемы классификатора - Возврат; - ИначеЕсли Вариант<>ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда - Возврат; - КонецЕсли; - - ТекстЗаголовка = НСтр("ru='Подтверждение'"); - ТекстВопроса = Текст + Символы.ПС + НСтр("ru='Загрузить классификатор сейчас?'"); - - Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); - Если Ответ=КодВозвратаДиалога.Да Тогда - ЗагрузитьАдресныйКлассификатор(); - КонецЕсли; - -КонецПроцедуры - -// Загружает адресный классификатор -// -Процедура ЗагрузитьАдресныйКлассификатор() Экспорт -#Если ВебКлиент Тогда - Возврат; -#КонецЕсли - - Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); - ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; - - Если Вариант=Неопределено Тогда - // Нет подсистемы классификатора - Возврат; - ИначеЕсли Вариант=ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - МодульКЛАДР = Вычислить("АдресныйКлассификаторКлиент"); - МодульКЛАДР.ЗагрузитьАдресныйКлассификатор(); - КонецЕсли; - КонецЕсли; - -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -// - -Функция ОткрытьФормуКонтактнойИнформацииВнутр(Параметры, Владелец, Уникальность, Окно, Модально=Ложь) - - Если Не Параметры.Свойство("Заголовок") Тогда - Параметры.Вставить("Заголовок", Строка(Параметры.ВидКонтактнойИнформации)); - КонецЕсли; - - ИмяОткрываемойФормы = КонтактнаяИнформацияКлиентСерверПовтИсп.ИмяФормыВводаКонтактнойИнформации(Параметры.ВидКонтактнойИнформации); - Если ИмяОткрываемойФормы=Неопределено Тогда - ВызватьИсключение НСтр("ru='Не обрабатываемый тип адреса: """ + Параметры.ВидКонтактнойИнформации + """'"); - КонецЕсли; - - Если Модально Тогда - Возврат ОткрытьФормуМодально(ИмяОткрываемойФормы, Параметры, Владелец); - КонецЕсли; - - ОткрытьФорму(ИмяОткрываемойФормы, Параметры, Владелец, Уникальность, Окно); - Возврат Неопределено; -КонецФункции - -// ------------------------------------------------------------------------------------------------- -// Реализация КЛАДР -// - -Процедура НачалоВыбораУлицыКЛАДР(Элемент, КодКлассификатораНаселенногоПункта, ТекущееЗначение, Параметры=Неопределено) - ПараметрыФормы = ?(Параметры=Неопределено, Новый Структура, Параметры); - - ПараметрыФормы.Вставить("Уровень", 5); - ПараметрыФормы.Вставить("Улица", Строка(ТекущееЗначение)); - - ИмяФормыКЛАДР = "РегистрСведений.АдресныйКлассификатор.Форма.ФормаВыбора"; - ОткрытьФорму(ИмяФормыКЛАДР, ПараметрыФормы, Элемент); -КонецПроцедуры - -Процедура НачалоВыбораЭлементаАдресаКЛАДР(Элемент, КодЧастиАдреса, ЧастиАдреса, Параметры=Неопределено) - - ПараметрыФормы = ?(Параметры=Неопределено, Новый Структура, Параметры); - - ПараметрыФормы.Вставить("Регион", ЧастиАдреса.Регион.Значение); - ПараметрыФормы.Вставить("Район", ЧастиАдреса.Район.Значение); - ПараметрыФормы.Вставить("Город", ЧастиАдреса.Город.Значение); - ПараметрыФормы.Вставить("НаселенныйПункт", ЧастиАдреса.НаселенныйПункт.Значение); - - КодРеквизита = ВРег(КодЧастиАдреса); - Если КодРеквизита="РЕГИОН" Тогда - Уровень = 1; - ИначеЕсли КодРеквизита="РАЙОН" Тогда - Уровень = 2; - ИначеЕсли КодРеквизита="ГОРОД" Тогда - Уровень = 3; - ИначеЕсли КодРеквизита="НАСЕЛЕННЫЙПУНКТ" Тогда - Уровень = 4; - ИначеЕсли КодРеквизита="УЛИЦА" Тогда - Уровень = 5; - Иначе - Возврат; - КонецЕсли; - ПараметрыФормы.Вставить("Уровень", Уровень); - - ИмяФормыКЛАДР = "РегистрСведений.АдресныйКлассификатор.Форма.ФормаВыбора"; - ОткрытьФорму(ИмяФормыКЛАДР, ПараметрыФормы, Элемент); -КонецПроцедуры - -Функция НаименованиеНаселенногоПунктаПоЧастямАдресаКЛАДР(ЧастиАдреса) - Возврат КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( - ЗначениеИлиНаименование(ЧастиАдреса.НаселенныйПункт), "", - ЗначениеИлиНаименование(ЧастиАдреса.Город), "", - ЗначениеИлиНаименование(ЧастиАдреса.Район), "", - ЗначениеИлиНаименование(ЧастиАдреса.Регион), "", - ); -КонецФункции - -// ------------------------------------------------------------------------------------------------- -// Общие служебные методы -// - -Функция ЗначениеИлиНаименование(ЧастьАдреса) - Если ПустаяСтрока(ЧастьАдреса.Значение) Тогда - Возврат СокрЛП("" + ЧастьАдреса.Наименование + " " + ЧастьАдреса.Сокращение); - КонецЕсли; - Возврат ЧастьАдреса.Значение; -КонецФункции - diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСервер/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСервер/Module.bsl index 7adad351c..dcc922058 100644 --- a/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСервер/Module.bsl @@ -3,29 +3,113 @@ // //////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС +// + +// Возвращает признак того, является ли строка данных контактной информации XML данными +// +// Параметры: +// Текст - проверяемая строка +// +Функция ЭтоКонтактнаяИнформацияВXML(Знач Текст) Экспорт + // Упрощенная проверка + Возврат ЭтоСтрокаXML(Текст); +КонецФункции + //////////////////////////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС +// // Возвращает аккуратно построеное наименование через запятую по парам "Название" + "Сокращение" // -Функция ПолноеНаименование(н0="", с0="", н1="", с1="", н2="", с2="", н3="", с3="", н4="", с4="", н5="", с5="", н6="", с6="", н7="", с7="", н8="", с8="", н9="", с9="") Экспорт +Функция ПолноеНаименование(Знач н0="", Знач с0="", Знач н1="", Знач с1="", Знач н2="", Знач с2="", Знач н3="", Знач с3="", Знач н4="", Знач с4="", Знач н5="", Знач с5="", Знач н6="", Знач с6="", Знач н7="", Знач с7="", Знач н8="", Знач с8="", Знач н9="", Знач с9="") Экспорт - ПолноеНаименование = СокрЛП( ?(ПустаяСтрока(н0), "", СокрЛП(н0) + " " + СокрЛП(с0)) ); + // Часть 0 + Результат = ?(ПустаяСтрока(н0), "", СокрЛП( СокрП(н0) + " " + СокрЛ(с0)) ); - Для ИндексПараметра=1 По 9 Цикл - НомерСтрокой = Формат(ИндексПараметра, "ЧН=; ЧГ="); - ТекН = СокрЛП(Вычислить("н"+НомерСтрокой)); - ТекС = СокрЛП(Вычислить("с"+НомерСтрокой)); - - Наименование = СокрЛП( ?(ПустаяСтрока(ТекН), "", ТекН + " " + ТекС) ); - Если ПустаяСтрока(Наименование) Или ПустаяСтрока(ПолноеНаименование) Тогда - ПолноеНаименование = ПолноеНаименование + Наименование; - Иначе - ПолноеНаименование = ПолноеНаименование + ", " + Наименование; - КонецЕсли; - КонецЦикла; + // Часть 1 + ТекН = СокрЛП(н1); + Наименование = ?(ТекН="", "", СокрЛП(ТекН + " " + СокрЛ(с1))); + Если Наименование="" Или Результат="" Тогда + Результат = Результат + Наименование; + Иначе + Результат = Результат + ", " + Наименование; + КонецЕсли; - Возврат ПолноеНаименование; + // Часть 2 + ТекН = СокрЛП(н2); + Наименование = ?(ТекН="", "", СокрЛП(ТекН + " " + СокрЛ(с2))); + Если Наименование="" Или Результат="" Тогда + Результат = Результат + Наименование; + Иначе + Результат = Результат + ", " + Наименование; + КонецЕсли; + + // Часть 3 + ТекН = СокрЛП(н3); + Наименование = ?(ТекН="", "", СокрЛП(ТекН + " " + СокрЛ(с3))); + Если Наименование="" Или Результат="" Тогда + Результат = Результат + Наименование; + Иначе + Результат = Результат + ", " + Наименование; + КонецЕсли; + + // Часть 4 + ТекН = СокрЛП(н4); + Наименование = ?(ТекН="", "", СокрЛП(ТекН + " " + СокрЛ(с4))); + Если Наименование="" Или Результат="" Тогда + Результат = Результат + Наименование; + Иначе + Результат = Результат + ", " + Наименование; + КонецЕсли; + + // Часть 5 + ТекН = СокрЛП(н5); + Наименование = ?(ТекН="", "", СокрЛП(ТекН + " " + СокрЛ(с5))); + Если Наименование="" Или Результат="" Тогда + Результат = Результат + Наименование; + Иначе + Результат = Результат + ", " + Наименование; + КонецЕсли; + + // Часть 6 + ТекН = СокрЛП(н6); + Наименование = ?(ТекН="", "", СокрЛП(ТекН + " " + СокрЛ(с6))); + Если Наименование="" Или Результат="" Тогда + Результат = Результат + Наименование; + Иначе + Результат = Результат + ", " + Наименование; + КонецЕсли; + + // Часть 7 + ТекН = СокрЛП(н7); + Наименование = ?(ТекН="", "", СокрЛП(ТекН + " " + СокрЛ(с7))); + Если Наименование="" Или Результат="" Тогда + Результат = Результат + Наименование; + Иначе + Результат = Результат + ", " + Наименование; + КонецЕсли; + + // Часть 8 + ТекН = СокрЛП(н8); + Наименование = ?(ТекН="", "", СокрЛП(ТекН + " " + СокрЛ(с8))); + Если Наименование="" Или Результат="" Тогда + Результат = Результат + Наименование; + Иначе + Результат = Результат + ", " + Наименование; + КонецЕсли; + + // Часть 9 + ТекН = СокрЛП(н9); + Наименование = ?(ТекН="", "", СокрЛП(ТекН + " " + СокрЛ(с9))); + Если Наименование="" Или Результат="" Тогда + Результат = Результат + Наименование; + Иначе + Результат = Результат + ", " + Наименование; + КонецЕсли; + + Возврат Результат; КонецФункции // Возвращает структуру с наименованием и сокращением от значения @@ -33,7 +117,7 @@ // Параметры: // Текст - строка полного наименования // -Функция НаименованиеСокращение(Текст) Экспорт +Функция НаименованиеСокращение(Знач Текст) Экспорт Результат = Новый Структура("Наименование, Сокращение"); Части = ЧастиАдреса(Текст, Истина); Если Части.Количество()>0 Тогда @@ -49,7 +133,7 @@ // Параметры: // Текст - строка полного наименования // -Функция Сокращение(Текст) Экспорт +Функция Сокращение(Знач Текст) Экспорт Части = НаименованиеСокращение(Текст); Возврат Части.Сокращение; КонецФункции @@ -61,7 +145,7 @@ // Текст - разделяемая строка // Разделители - необязательная строка символов-разделителей // -Функция СловаТекста(Текст, Разделители=Неопределено) Экспорт +Функция СловаТекста(Знач Текст, Знач Разделители=Неопределено) Экспорт НачалоСлова = 0; Состояние = 0; @@ -93,7 +177,7 @@ // Текст - разделяемый текст // ВыделятьСокращения - опциональный параметр режима работы // -Функция ЧастиАдреса(Текст, ВыделятьСокращения=Истина) Экспорт +Функция ЧастиАдреса(Знач Текст, Знач ВыделятьСокращения=Истина) Экспорт Результат = Новый Массив; Для Каждого Часть Из СловаТекста(Текст, ",") Цикл @@ -106,8 +190,7 @@ Пока Позиция>0 Цикл Если Сред(СтрокаЧасти, Позиция, 1)=" " Тогда Результат.Добавить(Новый Структура("Наименование, Сокращение", - СокрЛП(Лев(СтрокаЧасти, Позиция-1)), СокрЛП(Сред(СтрокаЧасти, Позиция)) - )); + СокрЛП(Лев(СтрокаЧасти, Позиция-1)), СокрЛП(Сред(СтрокаЧасти, Позиция)))); Позиция = -1; Прервать; КонецЕсли; @@ -135,22 +218,12 @@ Возврат Неопределено; КонецФункции -// Возвращает признак того, является текст XML -// -// Параметры: -// Текст - проверяемый текст -// -Функция ЭтоСтрокаXML(Текст) Экспорт - // Упрощенная проверка - Возврат ТипЗнч(Текст)=Тип("Строка") И Лев(СокрЛ(Текст),1)="<"; -КонецФункции - // Возвращает первый элемент из списка или Неопределено, если такого элемента нет // // Параметры: // СписокДанных - список значений, массив или поле формы // -Функция ПервыйИлиПустой(СписокДанных) Экспорт +Функция ПервыйИлиПустой(Знач СписокДанных) Экспорт ТипСписка = ТипЗнч(СписокДанных); Если ТипСписка=Тип("СписокЗначений") И СписокДанных.Количество()>0 Тогда @@ -164,3 +237,13 @@ Возврат Неопределено; КонецФункции +// Возвращает признак того, хранит ли строка данные XML +// +// Параметры: +// Текст - проверяемая строка +// +Функция ЭтоСтрокаXML(Знач Текст) Экспорт + // Упрощенная проверка + Возврат ТипЗнч(Текст)=Тип("Строка") И Лев(СокрЛ(Текст),1)="<"; +КонецФункции + diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСерверПовтИсп/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСерверПовтИсп/Module.bsl index da30c86bb..6b5ab832b 100644 --- a/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСерверПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/КонтактнаяИнформацияКлиентСерверПовтИсп/Module.bsl @@ -81,20 +81,8 @@ // ВидИнформации - запрашиваемый тип. Может принимать тип ПеречислениеСсылка.ТипыКонтактнойИнформации // или СправочникСсылка.ВидыКонтактнойИнформации // -Функция ИмяФормыВводаКонтактнойИнформации(ВидИнформации) Экспорт - - Тип = ТипЗнч(ВидИнформации); - Если Тип=Тип("ПеречислениеСсылка.ТипыКонтактнойИнформации") Тогда - ТипИнформации = ВидИнформации; - ИначеЕсли Тип=Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда -#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Или ВнешнееСоединение Тогда - ТипИнформации = ВидИнформации.Тип; -#Иначе - ТипИнформации = КонтактнаяИнформацияВызовСервера.ТипВидаКонтактнойИнформации(ВидИнформации); -#КонецЕсли - Иначе - Возврат Неопределено; - КонецЕсли; +Функция ИмяФормыВводаКонтактнойИнформации(Знач ВидИнформации) Экспорт + ТипИнформации = КонтактнаяИнформацияСлужебныйВызовСервера.ТипВидаКонтактнойИнформации(ВидИнформации); ВсеТипы = "Перечисление.ТипыКонтактнойИнформации."; Если ТипИнформации=ПредопределенноеЗначение(ВсеТипы + "Адрес") Тогда @@ -117,40 +105,7 @@ КонецЕсли; - Возврат Неопределено; -КонецФункции - -// Возвращает флаг того, что вид контактной информации можно активировать -// -// Параметры: -// ВидИнформации - запрашиваемый тип. Может принимать тип ПеречислениеСсылка.ТипыКонтактнойИнформации -// или СправочникСсылка.ВидыКонтактнойИнформации -// -Функция ВидИнформацииМожноАктивировать(ВидИнформации) Экспорт - - Тип = ТипЗнч(ВидИнформации); - Если Тип=Тип("ПеречислениеСсылка.ТипыКонтактнойИнформации") Тогда - ТипИнформации = ВидИнформации; - ИначеЕсли Тип=Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда -#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Или ВнешнееСоединение Тогда - ТипИнформации = ВидИнформации.Тип; -#Иначе - ТипИнформации = КонтактнаяИнформацияВызовСервера.ТипВидаКонтактнойИнформации(ВидИнформации); -#КонецЕсли - Иначе - Возврат Ложь; - КонецЕсли; - - ВсеТипы = "Перечисление.ТипыКонтактнойИнформации."; - Если ТипИнформации=ПредопределенноеЗначение(ВсеТипы + "АдресЭлектроннойПочты") Тогда - Возврат Истина; - - ИначеЕсли ТипИнформации=ПредопределенноеЗначение(ВсеТипы + "ВебСтраница") Тогда - Возврат Истина; - - КонецЕсли; - - Возврат Ложь; + Возврат Неопределено; КонецФункции // Возвращает массив вариантов наименований по типу (по признаку владения, строения, и т.п) @@ -219,6 +174,5 @@ Функция СтрокаОбъектаАдресации(Код, Наименование, Тип=0, Порядок=0, КодФИАС=0) Возврат Новый Структура("Код, Наименование, Тип, Порядок, КодФИАС, Сокращение, Ключ", - Код, Наименование, Тип, Порядок, КодФИАС, НРег(Наименование), ВРег(Наименование) - ); -КонецФункции \ No newline at end of file + Код, Наименование, Тип, Порядок, КодФИАС, НРег(Наименование), ВРег(Наименование)); +КонецФункции diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебный/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебный/Module.bsl index 4507f9daf..ad0a013ca 100644 --- a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебный/Module.bsl +++ b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебный/Module.bsl @@ -6,55 +6,16 @@ //////////////////////////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС -// Преобразует данные нового формата XML контактной информации в старый формат +// Устарело. Необходимо использовать УправлениеКонтактнойИнформацией.ПредыдущийФорматКонтактнойИнформацииXML // -// Параметры: -// Данные - строка значений полей в новом формате (xml) -// СтарыйСоставПолей - булево - необязательный флаг того, что из состава полей будут исключены -// поля, отсутствующие в версиях БСП младше 2.1.3 -// -// Возвращаемое значение: -// Строка с набором пар ключ-значение, разделенных переносом строки -// -Функция ПредыдущийФорматКонтактнойИнформацииXML(Данные, СтарыйСоставПолей=Ложь) Экспорт - - Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(Данные) Тогда - СтарыйФормат = КонтактнаяИнформацияВСтаруюСтруктуру(Данные, СтарыйСоставПолей); - Возврат УправлениеКонтактнойИнформациейКлиентСервер.ПреобразоватьСписокПолейВСтроку( - СтарыйФормат.ЗначенияПолей, Ложь - ); - КонецЕсли; - - Возврат Данные; +Функция ПредыдущийФорматКонтактнойИнформацииXML(Знач Данные, Знач СтарыйСоставПолей=Ложь) Экспорт + Возврат УправлениеКонтактнойИнформацией.ПредыдущийФорматКонтактнойИнформацииXML(Данные, СтарыйСоставПолей); КонецФункции -// Преобразует данные нового формата XML контактной информации в структуру старого формата +// Устарело. УправлениеКонтактнойИнформацией.ПредыдущаяСтруктураКонтактнойИнформацииXML // -// Параметры: -// Данные - строка значений полей, в новом формате (xml) или в старом (ключ=значение) -// ВидКонтактнойИнформации - необязательная ссылка на справочник вида, используется, если "Данные" - пустая строка -// -// Возвращаемое значение: -// Структура с набором пар ключ-значение -// -Функция ПредыдущаяСтруктураКонтактнойИнформацииXML(Данные, ВидКонтактнойИнформации=Неопределено) Экспорт - - Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(Данные) Тогда - // Новый формат КИ - Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураЗначенийПолей( - ПредыдущийФорматКонтактнойИнформацииXML(Данные) - ); - - ИначеЕсли ПустаяСтрока(Данные) И ВидКонтактнойИнформации<>Неопределено Тогда - // Генерируем по виду - Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураКонтактнойИнформацииПоТипу( - ВидКонтактнойИнформации.Тип - ); - - КонецЕсли; - - // Возвращаем полную структуру для данного вида с заполненными полями - Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураЗначенийПолей(Данные, ВидКонтактнойИнформации); +Функция ПредыдущаяСтруктураКонтактнойИнформацииXML(Знач Данные, Знач ВидКонтактнойИнформации=Неопределено) Экспорт + Возврат УправлениеКонтактнойИнформацией.ПредыдущаяСтруктураКонтактнойИнформацииXML(Данные, ВидКонтактнойИнформации); КонецФункции //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -153,22 +114,19 @@ // Возвращает варианты типов домов (по признаку владения) Функция ВариантыДанныхДом() Экспорт Возврат Новый Структура("ВариантыТипа, МожноПодбиратьЗначения", - КонтактнаяИнформацияКлиентСерверПовтИсп.НаименованияОбъектовАдресацииПоТипу(1), Ложь - ); + КонтактнаяИнформацияКлиентСерверПовтИсп.НаименованияОбъектовАдресацииПоТипу(1), Ложь); КонецФункции // Возвращает варианты типов домов (по признаку строения) Функция ВариантыДанныхСтроение() Экспорт Возврат Новый Структура("ВариантыТипа, МожноПодбиратьЗначения", - КонтактнаяИнформацияКлиентСерверПовтИсп.НаименованияОбъектовАдресацииПоТипу(2), Ложь - ); + КонтактнаяИнформацияКлиентСерверПовтИсп.НаименованияОбъектовАдресацииПоТипу(2), Ложь); КонецФункции // Возвращает варианты типов помещений Функция ВариантыДанныхПомещение() Экспорт Возврат Новый Структура("ВариантыТипа, МожноПодбиратьЗначения", - КонтактнаяИнформацияКлиентСерверПовтИсп.НаименованияОбъектовАдресацииПоТипу(3, Ложь), Ложь - ); + КонтактнаяИнформацияКлиентСерверПовтИсп.НаименованияОбъектовАдресацииПоТипу(3, Ложь), Ложь); КонецФункции // Возвращает флаг вхождения объекта в состав родителя @@ -193,9 +151,13 @@ // Возвращает код региона по его полному наименованию // // Параметры: -// НаименованиеРегиона - полное наименование региона с сокращением +// НаименованиеРегиона - Строка - полное наименование региона с сокращением // -Функция КодРегиона(ПолноеНаименование) Экспорт +// Возвращаемое значение: +// Строка - код региона из двух цифр. Пустая строка, если наименование определить не удалось +// Неопределено - если нет ни одной подсистемы адресного классификатора +// +Функция КодРегиона(Знач ПолноеНаименование) Экспорт Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); Если Вариант=Неопределено Тогда @@ -208,6 +170,48 @@ Возврат Неопределено; КонецФункции +// Возвращает наименование региона по его коду +// +// Параметры: +// Код - Строка, Число - код региона +// +// Возвращаемое значение: +// Строка - полное наименование региона с сокращением +// Неопределено - если нет ни одной подсистемы адресного классификатора +// +Функция РегионКода(Знач Код) Экспорт + Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); + + Если Вариант=Неопределено Тогда + // Нет подсистемы классификатора + Возврат Неопределено; + ИначеЕсли Вариант=Перечисления["ВариантыАдресногоКлассификатора"].КЛАДР Тогда + Возврат РегионКодаКЛАДР(Код); + КонецЕсли; + + Возврат Неопределено; +КонецФункции + +// Получает список всех регионов +// +// Возвращаемое значение: +// ТаблицаЗначений с колонками Код, Наименование, Сокращение, Представление +// Неопределено - если нет ни одной подсистемы адресного классификатора +// +Функция ВсеРегионы() Экспорт + Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); + + Если Вариант=Неопределено Тогда + // Нет подсистемы классификатора + Возврат Неопределено; + ИначеЕсли Вариант=Перечисления["ВариантыАдресногоКлассификатора"].КЛАДР Тогда + Возврат ВсеРегионыКЛАДР(); + КонецЕсли; + + Возврат Неопределено; +КонецФункции + + // Возвращает структуру, описывающую населенный пункт в иерархии младший-старший // для текущего адресного классификатора. Имена ключей структуры зависят от // классификатора @@ -313,14 +317,10 @@ Возврат Новый СписокЗначений; КонецФункции -// ------------------------------------------------------------------------------------------------- +//////////////////////////////////////////////////////////////////////////////////////////////////// // Общее служебное // -// ------------------------------------------------------------------------------------------------- -// Работа с сериализованной контактной информацией -// - // Преобразует контактную информацию XDTO в XML, возвращает строку // // Параметры: @@ -341,15 +341,16 @@ // // Параметры: // Текст - строка XML -// ОжидаемыйТип - необязательная ссылка на перечисление типа КИ для контроля типов +// ОжидаемыйВид - необязательная ссылка на КИ, перечисление типов КИ, или объект с полем "Тип" // -Функция ДесериализацияКонтактнойИнформации(Текст, ОжидаемыйВид=Неопределено) Экспорт +// РезультатыЧтения - если параметр указан, то в нем ожидается структура, куда будут внесены дополнительные +// необязательные поля: +// - ТекстОшибки - описание ошибок процесса чтения. Возвращаемый функцией результат будет +// корректного типа, но не заполнен. +// +Функция ДесериализацияКонтактнойИнформации(Знач Текст, Знач ОжидаемыйВид=Неопределено, РезультатыЧтения=Неопределено) Экспорт - Если ТипЗнч(ОжидаемыйВид)=Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда - ОжидаемыйТип = ОжидаемыйВид.Тип - Иначе - ОжидаемыйТип = ОжидаемыйВид; - КонецЕсли; + ОжидаемыйТип = УправлениеКонтактнойИнформацией.ТипВидаКонтактнойИнформации(ОжидаемыйВид); ПеречислениеАдрес = Перечисления.ТипыКонтактнойИнформации.Адрес; ПеречислениеАдресЭлектроннойПочты = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты; @@ -359,26 +360,60 @@ ПеречислениеДругое = Перечисления.ТипыКонтактнойИнформации.Другое; ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(); - Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(Текст) Тогда + Если КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(Текст) Тогда ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(Текст); - Результат = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); - НайденТип = ?(Результат.Состав=Неопределено, Неопределено, Результат.Состав.Тип()); - Если ОжидаемыйТип=ПеречислениеАдрес И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "Адрес") Тогда - ВызватьИсключение НСтр("ru='Ошибка десериализации контактной информации, ожидается адрес'"); - ИначеЕсли ОжидаемыйТип=ПеречислениеАдресЭлектроннойПочты И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "ЭлектроннаяПочта") Тогда - ВызватьИсключение НСтр("ru='Ошибка десериализации контактной информации, ожидается адрес электронной почты'"); - ИначеЕсли ОжидаемыйТип=ПеречислениеВебСтраница И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "ВебСайт") Тогда - ВызватьИсключение НСтр("ru='Ошибка десериализации контактной информации, ожидается веб-страница'"); - ИначеЕсли ОжидаемыйТип=ПеречислениеТелефон И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "НомерТелефона") Тогда - ВызватьИсключение НСтр("ru='Ошибка десериализации контактной информации, ожидается телефон'"); - ИначеЕсли ОжидаемыйТип=ПеречислениеФакс И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "НомерФакса") Тогда - ВызватьИсключение НСтр("ru='Ошибка десериализации контактной информации, ожидается телефон'"); - ИначеЕсли ОжидаемыйТип=ПеречислениеДругое И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "Прочее") Тогда - ВызватьИсключение НСтр("ru='Ошибка десериализации контактной информации, ожидается ""другое""'"); + ТекстОшибки = Неопределено; + Попытка + Результат = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); + Исключение + // Некорректный формат XML + ЗаписьЖурналаРегистрации(КонтактнаяИнформацияСлужебныйПовтИсп.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка, , Текст, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + + Если ТипЗнч(ОжидаемыйВид)=Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда + ТекстОшибки = СтрЗаменить(НСтр("ru='Некорректный формат XML контактной информации для ""%1"", значения полей были очищены.'"), + "%1", Строка(ОжидаемыйВид)); + Иначе + ТекстОшибки = НСтр("ru='Некорректный формат XML контактной информации, значения полей были очищены.'"); + КонецЕсли; + КонецПопытки; + + Если ТекстОшибки=Неопределено Тогда + // Контролируем соответствие типов + НайденТип = ?(Результат.Состав=Неопределено, Неопределено, Результат.Состав.Тип()); + Если ОжидаемыйТип=ПеречислениеАдрес И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "Адрес") Тогда + ТекстОшибки = НСтр("ru='Ошибка десериализации контактной информации, ожидается адрес'"); + ИначеЕсли ОжидаемыйТип=ПеречислениеАдресЭлектроннойПочты И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "ЭлектроннаяПочта") Тогда + ТекстОшибки = НСтр("ru='Ошибка десериализации контактной информации, ожидается адрес электронной почты'"); + ИначеЕсли ОжидаемыйТип=ПеречислениеВебСтраница И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "ВебСайт") Тогда + ТекстОшибки = НСтр("ru='Ошибка десериализации контактной информации, ожидается веб-страница'"); + ИначеЕсли ОжидаемыйТип=ПеречислениеТелефон И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "НомерТелефона") Тогда + ТекстОшибки = НСтр("ru='Ошибка десериализации контактной информации, ожидается телефон'"); + ИначеЕсли ОжидаемыйТип=ПеречислениеФакс И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "НомерФакса") Тогда + ТекстОшибки = НСтр("ru='Ошибка десериализации контактной информации, ожидается телефон'"); + ИначеЕсли ОжидаемыйТип=ПеречислениеДругое И НайденТип<>ФабрикаXDTO.Тип(ПространствоИмен, "Прочее") Тогда + ТекстОшибки = НСтр("ru='Ошибка десериализации контактной информации, ожидается ""другое""'"); + КонецЕсли; КонецЕсли; - Возврат Результат; + + Если ТекстОшибки=Неопределено Тогда + // Успешно прочитано + Возврат Результат; + КонецЕсли; + + // Проверим ошибку и вернем расширенную информацию + Если РезультатыЧтения=Неопределено Тогда + ВызватьИсключение ТекстОшибки; + ИначеЕсли ТипЗнч(РезультатыЧтения)<>Тип("Структура") Тогда + РезультатыЧтения = Новый Структура; + КонецЕсли; + РезультатыЧтения.Вставить("ТекстОшибки", ТекстОшибки); + + // Будет возвращен пустой объект + Текст = ""; КонецЕсли; Если ТипЗнч(Текст)=Тип("СписокЗначений") Тогда @@ -445,24 +480,21 @@ // // Параметры: // Текст - строка XML -// ОжидаемыйТип - ссылка на вид КИ или перечисление типа КИ для контроля типов +// ОжидаемыйТип - ссылка на вид КИ или перечисление типа КИ для контроля типов, +// объект с полем "Тип" // Функция ПарсингКонтактнойИнформации(Текст, ОжидаемыйВид) Экспорт - Если ТипЗнч(ОжидаемыйВид)=Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда - ОжидаемыйТип = ОжидаемыйВид.Тип - Иначе - ОжидаемыйТип = ОжидаемыйВид; - КонецЕсли; + ОжидаемыйТип = УправлениеКонтактнойИнформацией.ТипВидаКонтактнойИнформации(ОжидаемыйВид); Если ОжидаемыйТип=Перечисления.ТипыКонтактнойИнформации.Адрес Тогда Возврат ДесериализацияАдреса("", Текст, ОжидаемыйТип); ИначеЕсли ОжидаемыйТип=Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда - Возврат ДесериализацияПрочейКонтактнойИнформации("", Текст, ОжидаемыйТип); + Возврат ДесериализацияПрочейКонтактнойИнформации("", Текст, ОжидаемыйТип); ИначеЕсли ОжидаемыйТип=Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда - Возврат ДесериализацияПрочейКонтактнойИнформации("", Текст, ОжидаемыйТип); + Возврат ДесериализацияПрочейКонтактнойИнформации("", Текст, ОжидаемыйТип); ИначеЕсли ОжидаемыйТип=Перечисления.ТипыКонтактнойИнформации.Телефон Тогда Возврат ДесериализацияТелефона("", Текст, ОжидаемыйТип); @@ -486,8 +518,7 @@ // Функция ПарсингКонтактнойИнформацииXML(Текст, ОжидаемыйВид) Экспорт Возврат СериализацияКонтактнойИнформации( - ПарсингКонтактнойИнформации(Текст, ОжидаемыйВид) - ); + ПарсингКонтактнойИнформации(Текст, ОжидаемыйВид)); КонецФункции // Преобразует строку в XDTO контактную информацию адреса @@ -498,11 +529,14 @@ // если ЗначенияПолей пусто // ОжидаемыйТип - необязательный тип для контроля // -Функция ДесериализацияАдреса(ЗначенияПолей, Представление="", ОжидаемыйТип=Неопределено) Экспорт +// Возвращаемое значение +// ОбъектXDTO контактной информации. +// +Функция ДесериализацияАдреса(Знач ЗначенияПолей, Знач Представление="", Знач ОжидаемыйТип=Неопределено) Экспорт ТипЗначения = ТипЗнч(ЗначенияПолей); РазбиратьПоПолям = ТипЗначения=Тип("СписокЗначений") Или ТипЗначения=Тип("Структура") - Или (ТипЗначения=Тип("Строка") И Не ПустаяСтрока(ЗначенияПолей)); + Или ( ТипЗначения=Тип("Строка") И Не ПустаяСтрока(ЗначенияПолей) ); Если РазбиратьПоПолям Тогда // Разбираем из значений полей @@ -561,7 +595,7 @@ // Функция ДесериализацияПрочейКонтактнойИнформации(ЗначенияПолей, Представление="", ОжидаемыйТип=Неопределено) Экспорт - Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(ЗначенияПолей) Тогда + Если КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(ЗначенияПолей) Тогда // Общий формат контактной информации Возврат ДесериализацияКонтактнойИнформации(ЗначенияПолей, ОжидаемыйТип); КонецЕсли; @@ -598,7 +632,7 @@ // Функция ПредставлениеКонтактнойИнформации(XDTOИнформация, НовоеЗначение=Неопределено) Экспорт НадоСериализовать = ТипЗнч(XDTOИнформация)=Тип("Строка"); - Если НадоСериализовать И Не КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(XDTOИнформация) Тогда + Если НадоСериализовать И Не КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(XDTOИнформация) Тогда // Старая версия значений полей, возвращаем саму строку Возврат XDTOИнформация; КонецЕсли; @@ -606,11 +640,11 @@ ОбъектXDTO = ?(НадоСериализовать, ДесериализацияКонтактнойИнформации(XDTOИнформация), XDTOИнформация); Если НовоеЗначение<>Неопределено Тогда ОбъектXDTO.Представление = НовоеЗначение; + Если НадоСериализовать Тогда + XDTOИнформация = СериализацияКонтактнойИнформации(ОбъектXDTO); + КонецЕсли; КонецЕсли; - Если НадоСериализовать Тогда - XDTOИнформация = СериализацияКонтактнойИнформации(ОбъектXDTO); - КонецЕсли; Возврат ОбъектXDTO.Представление КонецФункции @@ -622,7 +656,7 @@ // Функция КомментарийКонтактнойИнформации(XDTOИнформация, НовоеЗначение=Неопределено) Экспорт НадоСериализовать = ТипЗнч(XDTOИнформация)=Тип("Строка"); - Если НадоСериализовать И Не КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(XDTOИнформация) Тогда + Если НадоСериализовать И Не КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(XDTOИнформация) Тогда // Старая версия значений полей, комментарий не поддерживается Возврат ""; КонецЕсли; @@ -630,12 +664,51 @@ ОбъектXDTO = ?(НадоСериализовать, ДесериализацияКонтактнойИнформации(XDTOИнформация), XDTOИнформация); Если НовоеЗначение<>Неопределено Тогда ОбъектXDTO.Комментарий = НовоеЗначение; + Если НадоСериализовать Тогда + XDTOИнформация = СериализацияКонтактнойИнформации(ОбъектXDTO); + КонецЕсли; + КонецЕсли; + + Возврат ОбъектXDTO.Комментарий; +КонецФункции + +// Вычисляет и устанавливает флаг того, что адрес был введен в свободной форме +// В качестве флага используется не пустота значения поля "Адрес_по_документу" +// +// Параметры: +// XDTOИнформация - ОбъектXDTO или XML строка контактной информации. Объект может измениться +// НовоеЗначение - булево - необязательное устанавливаемое новое значение +// +Функция АдресВведенВСвободнойФорме(XDTOИнформация, НовоеЗначение=Неопределено) Экспорт + НадоСериализовать = ТипЗнч(XDTOИнформация)=Тип("Строка"); + Если НадоСериализовать И Не КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(XDTOИнформация) Тогда + // Старая версия значений полей, не поддерживается + Возврат Ложь; + КонецЕсли; + + ОбъектXDTO = ?(НадоСериализовать, ДесериализацияКонтактнойИнформации(XDTOИнформация), XDTOИнформация); + Если Не ЭтоРоссийскийАдрес(ОбъектXDTO) Тогда + // Не поддерживаем + Возврат Ложь; + КонецЕсли; + + АдресРФ = ОбъектXDTO.Состав.Состав; + Если ТипЗнч(НовоеЗначение)<>Тип("Булево") Тогда + // Читаем + Возврат Не ПустаяСтрока(АдресРФ.Адрес_по_документу); + КонецЕсли; + + // Устанавливаем + Если НовоеЗначение Тогда + АдресРФ.Адрес_по_документу = ОбъектXDTO.Представление; + Иначе + АдресРФ.Сбросить("Адрес_по_документу"); КонецЕсли; Если НадоСериализовать Тогда XDTOИнформация = СериализацияКонтактнойИнформации(ОбъектXDTO); КонецЕсли; - Возврат ОбъектXDTO.Комментарий + Возврат НовоеЗначение; КонецФункции // Формирует и возвращает представление контактной информации @@ -839,8 +912,7 @@ Результат = Новый Структура("Здания, Помещения", ТаблицаЗначений("Тип, Значение, Сокращение, ПутьXPath, Вид", "Тип, Вид"), - ТаблицаЗначений("Тип, Значение, Сокращение, ПутьXPath, Вид", "Тип, Вид") - ); + ТаблицаЗначений("Тип, Значение, Сокращение, ПутьXPath, Вид", "Тип, Вид")); АдресРФ = РоссийскийАдрес(XDTOАдрес); Если АдресРФ=Неопределено Тогда @@ -863,9 +935,6 @@ КонецЕсли; // Чтение - Результат.Здания.Колонки.Добавить("Порядок"); - Результат.Помещения.Колонки.Добавить("Порядок"); - Для Каждого ДопЭлемент Из АдресРФ.ДопАдрЭл Цикл Если ДопЭлемент.Номер<>Неопределено Тогда КодОбъекта = ДопЭлемент.Номер.Тип; @@ -880,7 +949,6 @@ НоваяСтрока = Неопределено; КонецЕсли; Если НоваяСтрока<>Неопределено Тогда - НоваяСтрока.Порядок = ТипОбъекта.Порядок; НоваяСтрока.Тип = ТипОбъекта.Наименование; НоваяСтрока.Значение = ДопЭлемент.Номер.Значение; НоваяСтрока.Сокращение = ТипОбъекта.Сокращение; @@ -891,11 +959,8 @@ КонецЕсли; КонецЦикла; - Результат.Здания.Сортировать("Вид, Порядок, Значение"); - Результат.Здания.Колонки.Удалить("Порядок"); - - Результат.Помещения.Сортировать("Вид, Порядок, Значение"); - Результат.Помещения.Колонки.Удалить("Порядок"); + Результат.Здания.Сортировать("Вид"); + Результат.Помещения.Сортировать("Вид"); Возврат Результат; КонецФункции @@ -955,8 +1020,7 @@ ИначеЕсли АдресРФ.СвРайМО.СвМО<>Неопределено Тогда Район = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( АдресРФ.СвРайМО.СвМО.МунОбр2, "", - АдресРФ.СвРайМО.СвМО.МунОбр1, "" - ); + АдресРФ.СвРайМО.СвМО.МунОбр1, ""); Иначе Район = "";; КонецЕсли; @@ -966,8 +1030,7 @@ АдресРФ.Город, "", Район, "", АдресРФ.Округ, "", - АдресРФ.СубъектРФ, "" - ); + АдресРФ.СубъектРФ, ""); КонецФункции @@ -984,8 +1047,7 @@ КонецЕсли; Возврат КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( - АдресРФ.Улица, "" - ); + АдресРФ.Улица, ""); КонецФункции @@ -997,20 +1059,22 @@ // Функция ПредставлениеАдреса(XDTOАдрес, ВидИнформации) Экспорт - // 1) Страна, если надо + // 1) Страна, если надо. // 2) Индекс, субъект рф, округ, район, город, внутригородской район, населенный пункт, улица // 3) Здания, помещения - Страна = ?(ВидИнформации.ВключатьСтрануВПредставление, СокрЛП(XDTOАдрес.Страна), ""); - АдресРФ = XDTOАдрес.Состав; - - Если ТипЗнч(АдресРФ)<>Тип("ОбъектXDTO") Тогда - Возврат ?(ПустаяСтрока(Страна), "", Страна + ", ") + СокрЛП(АдресРФ); - КонецЕсли; + ПараметрыФормирования = Новый Структура("ВключатьСтрануВПредставление", Ложь); + ЗаполнитьЗначенияСвойств(ПараметрыФормирования, ВидИнформации); ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(); - Если АдресРФ.Тип()=ФабрикаXDTO.Тип(ПространствоИмен, "АдресРФ") Тогда - + АдресРФ = XDTOАдрес.Состав; + Страна = СокрЛП(XDTOАдрес.Страна); + + Если ЭтоРоссийскийАдрес(АдресРФ) Тогда + // Это российский адрес, смотрим на настройки + Если Не ПараметрыФормирования.ВключатьСтрануВПредставление Тогда + Страна = ""; + КонецЕсли; // Значимые части Представление = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( ПочтовыйИндексАдреса(АдресРФ), "", @@ -1020,31 +1084,33 @@ АдресРФ.Город, "", АдресРФ.ВнутригРайон, "", АдресРФ.НаселПункт, "", - АдресРФ.Улица, "" - ); + АдресРФ.Улица, ""); // Строения и помещения НомерНеВыведен = Истина; Данные = ЗданияИПомещенияАдреса(АдресРФ); Для Каждого Строка Из Данные.Здания Цикл Представление = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( Представление, "", - СокрЛП(Строка.Сокращение + ?(НомерНеВыведен, " № ", " ") + Строка.Значение), "" - ); + СокрЛП(Строка.Сокращение + ?(НомерНеВыведен, " № ", " ") + Строка.Значение), ""); НомерНеВыведен = Ложь; КонецЦикла; Для Каждого Строка Из Данные.Помещения Цикл Представление = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( Представление, "", - СокрЛП(Строка.Сокращение + " " + Строка.Значение), "" - ); + СокрЛП(Строка.Сокращение + " " + Строка.Значение), ""); КонецЦикла; + + Иначе + // Это иностранный адрес, страна в представление будет включена всегда. + Представление = СокрЛП(АдресРФ); КонецЕсли; - Возврат КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( - Страна, "", - Представление, "" - ); - + // При пустом представлении страну нет смысла выводить + Если ПустаяСтрока(Представление) Тогда + Возврат ""; + КонецЕсли; + + Возврат КонтактнаяИнформацияКлиентСервер.ПолноеНаименование(Страна, "", Представление, ""); КонецФункции // Возвращает перечень ошибок для адреса. @@ -1107,25 +1173,32 @@ КонецЕсли; Если РезультатГруппами Тогда - Если ОшибкиКлассификатора.Количество()>0 Тогда - // Добавляем ко всем ошибкам - ВсеОшибки.Добавить(ГруппаОшибокАдреса("ОшибкиПоКлассификатору", - НСтр("ru='Части адреса не соответствуют адресному классификатору:'") - )); + НаименованиеГруппыОшибки = "ОшибкиПоКлассификатору"; + КоличествоОшибок = ОшибкиКлассификатора.Количество(); + + Если КоличествоОшибок=1 И ОшибкиКлассификатора[0].Значение<>Неопределено + И ОшибкиКлассификатора[0].Значение.ПутьXPath=Неопределено + Тогда + ВсеОшибки.Добавить(ГруппаОшибокАдреса(НаименованиеГруппыОшибки, + ОшибкиКлассификатора[0].Представление)); + + ИначеЕсли КоличествоОшибок>0 Тогда + // Подробное описание ошибок + ВсеОшибки.Добавить(ГруппаОшибокАдреса(НаименованиеГруппыОшибки, + НСтр("ru='Части адреса не соответствуют адресному классификатору:'"))); + ГруппаОшибокКлассификатора = ВсеОшибки[ВсеОшибки.ВГраница()]; СписокСущностей = ""; Для Каждого Элемент Из ОшибкиКлассификатора Цикл ЭлементОшибки = Элемент.Значение; Если ЭлементОшибки=Неопределено Тогда - // абстрактная ошибка + // Абстрактная ошибка ДобавитьОшибкуЗаполненияАдреса(ГруппаОшибокКлассификатора, - "", Элемент.Представление - ); + "", Элемент.Представление); Иначе ДобавитьОшибкуЗаполненияАдреса(ГруппаОшибокКлассификатора, - ЭлементОшибки.ПутьXPath, Элемент.Представление - ); + ЭлементОшибки.ПутьXPath, Элемент.Представление); СписокСущностей = СписокСущностей + ", " + ЭлементОшибки.СущностьПоля; КонецЕсли; КонецЦикла; @@ -1185,50 +1258,41 @@ Представление = ПредставлениеАдреса(АдресРФ, ВидИнформации); Если XTDOКонтактная.Представление<>Представление Тогда Результат.Добавить(ГруппаОшибокАдреса("ПредставлениеНеСоответствуетНаборуПолей", - НСтр("ru='Адрес не соответствует значениям в наборе полей.'") - )); + НСтр("ru='Адрес не соответствует значениям в наборе полей.'"))); ДобавитьОшибкуЗаполненияАдреса(Результат[0], "", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Представление адреса для вида контактной информации ""%1"" отличается от данных в адресе.'"), - Строка(ВидИнформации) - ) - ); + Строка(ВидИнформации))); КонецЕсли; КонецЕсли; НеЗаполненыОбязательныеПоля = ГруппаОшибокАдреса("НеЗаполненыОбязательныеПоля", - НСтр("ru='Не заполнены обязательные поля:'") - ); + НСтр("ru='Не заполнены обязательные поля:'")); Результат.Добавить(НеЗаполненыОбязательныеПоля); НеУказаныСокращенияПолей = ГруппаОшибокАдреса("НеУказаныСокращенияПолей", - НСтр("ru='Не указано сокращение для полей:'") - ); + НСтр("ru='Не указано сокращение для полей:'")); Результат.Добавить(НеУказаныСокращенияПолей); НедопустимыеСимволыПолей = ГруппаОшибокАдреса("НедопустимыеСимволыПолей", - НСтр("ru='Найдены недопустимые символы в полях:'") - ); + НСтр("ru='Найдены недопустимые символы в полях:'")); Результат.Добавить(НедопустимыеСимволыПолей); НеСоответствуетДлинаПолей = ГруппаОшибокАдреса("НеСоответствуетДлинаПолей", - НСтр("ru='Не соответствует установленной длина полей:'") - ); + НСтр("ru='Не соответствует установленной длина полей:'")); Результат.Добавить(НеСоответствуетДлинаПолей); // 2) Индекс, Регион, Дом должны быть заполнены Индекс = ПочтовыйИндексАдреса(АдресРФ); Если ПустаяСтрока(Индекс) Тогда ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, КонтактнаяИнформацияКлиентСерверПовтИсп.XPathПочтовогоИндекса(), - НСтр("ru='Не указан почтовый индекс.'"), "Индекс" - ); + НСтр("ru='Не указан почтовый индекс.'"), "Индекс"); КонецЕсли; Регион = АдресРФ.СубъектРФ; Если ПустаяСтрока(Регион) Тогда ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, "СубъектРФ", - НСтр("ru='Не указан регион.'"), "Регион" - ); + НСтр("ru='Не указан регион.'"), "Регион"); КонецЕсли; ЗданияПомещения = ЗданияИПомещенияАдреса(АдресРФ); @@ -1236,12 +1300,10 @@ Если ДанныеДома=Неопределено Тогда ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, КонтактнаяИнформацияКлиентСерверПовтИсп.XPathНомераДополнительногоОбъектаАдресации("Дом"), - НСтр("ru='Не указан дом или владение.'"), "Дом" - ); + НСтр("ru='Не указан дом или владение.'"), "Дом"); ИначеЕсли ПустаяСтрока(ДанныеДома.Значение) Тогда ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, ДанныеДома.ПутьXPath, - НСтр("ru='Не заполнено значение дома или владения.'"), "Дом" - ); + НСтр("ru='Не заполнено значение дома или владения.'"), "Дом"); КонецЕсли; // 3) Регион, Район, Город, НаселенныйПункт, Улица должны: @@ -1258,22 +1320,19 @@ ДобавитьОшибкуЗаполненияАдреса(НеУказаныСокращенияПолей, "СубъектРФ", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Не указано сокращение в названии региона ""%1"".'"), Регион - ), "Регион" - ); + ), "Регион"); КонецЕсли; Если СтрДлина(Регион)>50 Тогда ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Название региона ""%1"" должно быть короче 50 символов.'"), Регион - ), "Регион" - ); + ), "Регион"); КонецЕсли; Если Не СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(Регион, Ложь, ДопустимоКромеКириллицы) Тогда ДобавитьОшибкуЗаполненияАдреса(НедопустимыеСимволыПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='В названии региона ""%1"" есть не кириллические символы.'"), Регион - ), "Регион" - ); + ), "Регион"); КонецЕсли КонецЕсли; @@ -1285,22 +1344,19 @@ ДобавитьОшибкуЗаполненияАдреса(НеУказаныСокращенияПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Не указано сокращение в названии района ""%1""'."), Район - ), "Район" - ); + ), "Район"); КонецЕсли; Если СтрДлина(Район)>50 Тогда ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Название района ""%1"" должно быть короче 50 символов.'"), Район - ), "Район" - ); + ), "Район"); КонецЕсли; Если Не СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(Район, Ложь, ДопустимоКромеКириллицы) Тогда ДобавитьОшибкуЗаполненияАдреса(НедопустимыеСимволыПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='В названии района ""%1"" есть не кириллические символы.'"), Район - ), "Район" - ); + ), "Район"); КонецЕсли; КонецЕсли; @@ -1312,22 +1368,19 @@ ДобавитьОшибкуЗаполненияАдреса(НеУказаныСокращенияПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Не указано сокращение в названии города ""%1"".'"), Город - ), "Город" - ); + ), "Город"); КонецЕсли; Если СтрДлина(Город)>50 Тогда ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Название города ""%1"" должно быть короче 50 символов.'"), Город - ), "Город" - ); + ), "Город"); КонецЕсли; Если Не СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(Город, Ложь, ДопустимоКромеКириллицы) Тогда ДобавитьОшибкуЗаполненияАдреса(НедопустимыеСимволыПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='В названии города ""%1"" есть не кириллические символы.'"), Город - ), "Город" - ); + ), "Город"); КонецЕсли; КонецЕсли; @@ -1339,22 +1392,19 @@ ДобавитьОшибкуЗаполненияАдреса(НеУказаныСокращенияПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Не указано сокращение в названии населенного пункта ""%1"".'"), НаселенныйПункт - ), "Населенный пункт" - ); + ), "Населенный пункт"); КонецЕсли; Если СтрДлина(НаселенныйПункт)>50 Тогда ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Название населенного пункта ""%1"" должно быть короче 50 символов.'"), НаселенныйПункт - ), "Населенный пункт" - ); + ), "Населенный пункт"); КонецЕсли; Если Не СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(НаселенныйПункт, Ложь, ДопустимоКромеКириллицы) Тогда ДобавитьОшибкуЗаполненияАдреса(НедопустимыеСимволыПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='В названии населенного пункта ""%1"" есть не кириллические символы.'"), НаселенныйПункт - ), "Населенный пункт" - ); + ), "Населенный пункт"); КонецЕсли; КонецЕсли; @@ -1366,22 +1416,19 @@ ДобавитьОшибкуЗаполненияАдреса(НеУказаныСокращенияПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Не указано сокращение в названии улицы ""%1"".'"), Улица - ), "Улица" - ); + ), "Улица"); КонецЕсли; Если СтрДлина(Район)>50 Тогда ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Название улицы ""%1"" должно быть короче 50 символов.'"), Улица - ), "Улица" - ); + ), "Улица"); КонецЕсли; Если Не СтроковыеФункцииКлиентСервер.ТолькоКириллицаВСтроке(Улица, Ложь, ДопустимоКромеКириллицы) Тогда ДобавитьОшибкуЗаполненияАдреса(НедопустимыеСимволыПолей, Поле, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='В названии улицы ""%1"" есть не кириллические символы.'"), Улица - ), "Улица" - ); + ), "Улица"); КонецЕсли; КонецЕсли; @@ -1390,8 +1437,7 @@ Поле = КонтактнаяИнформацияКлиентСерверПовтИсп.XPathПочтовогоИндекса(); Если СтрДлина(Индекс)<>6 Или Не СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Индекс) Тогда ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, Поле, - НСтр("ru='Почтовый индекс должен состоять из 6 цифр.'"), "Индекс" - ); + НСтр("ru='Почтовый индекс должен состоять из 6 цифр.'"), "Индекс"); КонецЕсли; КонецЕсли; @@ -1401,8 +1447,7 @@ ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, ДанныеЗдания.ПутьXPath, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Значение поля ""%1"" должно быть короче 10 символов.'"), ДанныеЗдания.Тип - ), ДанныеЗдания.Тип - ); + ), ДанныеЗдания.Тип); КонецЕсли; КонецЦикла; Для Каждого ДанныеПомещения Из ЗданияПомещения.Помещения Цикл @@ -1410,8 +1455,7 @@ ДобавитьОшибкуЗаполненияАдреса(НеСоответствуетДлинаПолей, ДанныеПомещения.ПутьXPath, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='Значение поля ""%1"" должно быть короче 10 символов.'"), ДанныеПомещения.Тип - ), ДанныеПомещения.Тип - ); + ), ДанныеПомещения.Тип); КонецЕсли; КонецЦикла; @@ -1420,20 +1464,17 @@ Если НазванияГородовФедеральногоЗначения().Найти(ВРег(Регион))=Неопределено Тогда ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, "Город", НСтр("ru='Город может быть не указан только в регионе - городе федерального значения.'"), - "Город" - ); + "Город"); ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, "НаселПункт", НСтр("ru='Населенный пункт может быть не указан только в регионе - городе федерального значения.'"), - "Населенный пункт" - ); + "Населенный пункт"); КонецЕсли; КонецЕсли; // 7) Улица не может быть пустой если НаселенныйПункт пустой Если ПустаяСтрока(НаселенныйПункт) И ПустаяСтрока(Улица) Тогда ДобавитьОшибкуЗаполненияАдреса(НеЗаполненыОбязательныеПоля, "Улица", - НСтр("ru='Если неопределен населенный пункт, то должна быть указана улица.'"), "Улица" - ); + НСтр("ru='Если неопределен населенный пункт, то должна быть указана улица.'"), "Улица"); КонецЕсли; // Все. Убираем пустые результаты, корректируем сообщение группы. @@ -1482,8 +1523,7 @@ XDTOДанные.КодГорода, XDTOДанные.Номер, XDTOДанные.Добавочный, - "" - ); + ""); КонецФункции // Возвращает представление факса @@ -1498,12 +1538,9 @@ XDTOДанные.КодГорода, XDTOДанные.Номер, XDTOДанные.Добавочный, - "" - ); + ""); КонецФункции -// ------------------------------------------------------------------------------------------------- - // Возвращает флаг того, что текущий пользователь может загружать или очищать адресный классификатор Функция ЕстьВозможностьИзмененияАдресногоКлассификатора() Экспорт @@ -1519,7 +1556,7 @@ Возврат Ложь; КонецФункции -// ------------------------------------------------------------------------------------------------- +//////////////////////////////////////////////////////////////////////////////////////////////////// // Совместимость // @@ -1532,7 +1569,7 @@ // Функция КонтактнаяИнформацияВСтаруюСтруктуру(XDTOКонтактнаяИнформация, СтарыйСоставПолей=Ложь) Экспорт - Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(XDTOКонтактнаяИнформация) Тогда + Если КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(XDTOКонтактнаяИнформация) Тогда XDTOКонтактная = ДесериализацияКонтактнойИнформации(XDTOКонтактнаяИнформация); Иначе XDTOКонтактная = XDTOКонтактнаяИнформация @@ -1561,7 +1598,15 @@ Возврат Результат; КонецФункции -// Внутреннее для совместимости +// Преобразует адрес формата XDTO в старый список полей типа СписокЗначений +// +// Параметры: +// XDTOАдрес - XDTOОбъект типа Адрес или АдресРФ, источник данных +// РасширенныйСоставПолей - Необязательный флаг того, что состав полей будет сокращен для совместимости +// с обменом БСП 2.1.2 +// +// Возвращаемый результат - список значений +// Функция АдресВСтарыйСписокПолей(XDTOАдрес, РасширенныйСоставПолей=Истина) Экспорт Список = Новый СписокЗначений; @@ -1660,6 +1705,7 @@ Возврат Список; КонецФункции + Процедура ДобавитьЗначение(Список, ИмяПоля, Значение, РазрешитьДубли=Ложь) Если Не РазрешитьДубли Тогда @@ -1673,6 +1719,7 @@ Список.Добавить(Строка(Значение), ИмяПоля); КонецПроцедуры + Функция ЗначениеЗданияИлиПомещения(Данные, Варианты, ВсеЗначенияВарианта) Результат = ТаблицаЗначений("Тип, Значение"); @@ -1699,15 +1746,15 @@ Возврат Результат; КонецФункции -// Внутреннее для создания структур Функция ГруппаОшибокАдреса(ТипОшибки, Сообщение) Возврат Новый Структура("ТипОшибки, Сообщение, Поля", ТипОшибки, Сообщение, Новый Массив); КонецФункции + Процедура ДобавитьОшибкуЗаполненияАдреса(Группа, ИмяПоля="", Сообщение="", СущностьПоля="") Группа.Поля.Добавить(Новый Структура("ИмяПоля, Сообщение, СущностьПоля", ИмяПоля, Сообщение, СущностьПоля)); КонецПроцедуры -// ------------------------------------------------------------------------------------------------- +//////////////////////////////////////////////////////////////////////////////////////////////////// // Реализация КЛАДР // @@ -1906,8 +1953,7 @@ Выборка.НаселенныеПунктыНаименование, Выборка.НаселенныеПунктыСокращение, Выборка.ГородаНаименование, Выборка.ГородаСокращение, Выборка.РайоныНаименование, Выборка.РайоныСокращение, - Выборка.РегионыНаименование, Выборка.РегионыСокращение - ); + Выборка.РегионыНаименование, Выборка.РегионыСокращение); Если Выборка.Неактуален Тогда ТекстПредупреждения = СтрЗаменить(ПредупреждениеНеактуальности, "%1", ПолноеНаименование); @@ -1923,8 +1969,7 @@ ДанныеВыбора.Добавить(Новый Структура("Предупреждение, Значение", ТекстПредупреждения, Новый Структура("Код, Представление, МожноЗагружатьРегион", Выборка.Код, ПолноеНаименование, Выборка.МожноЗагружатьРегион - )), ПолноеНаименование, Пометка, Картинка - ); + )), ПолноеНаименование, Пометка, Картинка); Иначе ДанныеВыбора.Добавить(ПолноеНаименование, ПолноеНаименование, Пометка, Картинка); КонецЕсли; @@ -1986,8 +2031,7 @@ Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ПолноеНаименование = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( - Выборка.Наименование, Выборка.Сокращение - ); + Выборка.Наименование, Выборка.Сокращение); Если Выборка.Неактуален Тогда ТекстПредупреждения = СтрЗаменить(ПредупреждениеНеактуальности, "%1", ПолноеНаименование); @@ -2003,8 +2047,7 @@ ДанныеВыбора.Добавить(Новый Структура("Предупреждение, Значение", ТекстПредупреждения, Новый Структура("Код, Представление", Выборка.Код, ПолноеНаименование - )), ПолноеНаименование, Пометка, Картинка - ); + )), ПолноеНаименование, Пометка, Картинка); Иначе ДанныеВыбора.Добавить(ПолноеНаименование, ПолноеНаименование, Пометка, Картинка); КонецЕсли; @@ -2012,8 +2055,7 @@ КонецЦикла; Возврат Новый Структура("СлишкомМногоДанных, ДанныеВыбора", - Выборка.Количество()>ВыбиратьСтрок, ДанныеВыбора - ); + Выборка.Количество()>ВыбиратьСтрок, ДанныеВыбора); КонецФункции @@ -2061,8 +2103,7 @@ | ИЛИ (Районы.Наименование>=&%1 И Районы.Наименование<&%2) | ИЛИ (Регионы.Наименование>=&%1 И Регионы.Наименование<&%2) |)", - ИмяПараметраНаименование, ИмяПараметраОграничитель - ); + ИмяПараметраНаименование, ИмяПараметраОграничитель); Иначе УсловиеНаименования = УсловиеНаименования + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(" |И ( @@ -2071,8 +2112,7 @@ | ИЛИ (Районы.Наименование=&%1 И Районы.Сокращение=&%2) | ИЛИ (Регионы.Наименование=&%1 И Регионы.Сокращение=&%2) |)", - ИмяПараметраНаименование, ИмяПараметраСокращение - ); + ИмяПараметраНаименование, ИмяПараметраСокращение); КонецЕсли; Запрос.УстановитьПараметр(ИмяПараметраНаименование, Наименование); Запрос.УстановитьПараметр(ИмяПараметраОграничитель, Наименование + ОграничительСверху); @@ -2182,8 +2222,7 @@ Выборка.НаселенныеПунктыНаименование, Выборка.НаселенныеПунктыСокращение, Выборка.ГородаНаименование, Выборка.ГородаСокращение, Выборка.РайоныНаименование, Выборка.РайоныСокращение, - Выборка.РегионыНаименование, Выборка.РегионыСокращение - ); + Выборка.РегионыНаименование, Выборка.РегионыСокращение); Если Выборка.Неактуален Тогда ТекстПредупреждения = ПредупреждениеНеактуальности; @@ -2219,8 +2258,7 @@ ДанныеВыбора.Добавить(Новый Структура("Предупреждение, Значение", ТекстПредупреждения, Новый Структура("Код, Представление, СписокРеквизитов", Выборка.Код, ПолноеНаименование, СписокРеквизитов - )), ПолноеНаименование, Пометка, Картинка - ); + )), ПолноеНаименование, Пометка, Картинка); КонецЦикла; Возврат Результат; @@ -2291,8 +2329,7 @@ Пока Выборка.Следующий() Цикл ПолноеНаименование = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( - Выборка.Наименование, Выборка.Сокращение - ); + Выборка.Наименование, Выборка.Сокращение); Если Выборка.Неактуален Тогда ТекстПредупреждения = ПредупреждениеНеактуальности; @@ -2307,8 +2344,7 @@ ДанныеВыбора.Добавить(Новый Структура("Предупреждение, Значение", ТекстПредупреждения, Новый Структура("Код, Представление", Выборка.Код, ПолноеНаименование - )), ПолноеНаименование, Пометка, Картинка - ); + )), ПолноеНаименование, Пометка, Картинка); КонецЦикла; Результат.СлишкомМногоДанных = Выборка.Количество()>ВыбиратьСтрок; @@ -2348,13 +2384,17 @@ Функция СписокРеквизитовНаселенныйПунктКЛАДР(Код=Неопределено) // Первый уровень - внутренние идентификаторы - Результат = Новый Структура("Регион, Район, Город, НаселенныйПункт", - // Второй уровень - одинаково для всех классификаторов - ЭлементАдреснойСтруктуры("Регион", "СубъектРФ"), - ЭлементАдреснойСтруктуры("Район", "СвРайМО/Район"), - ЭлементАдреснойСтруктуры("Город", "Город"), - ЭлементАдреснойСтруктуры("Нас.пункт", "НаселПункт", ,Истина) - ); + Результат = Новый Структура; + Результат.Вставить("Регион", ЭлементАдреснойСтруктуры(НСтр("ru='Регион'"), "СубъектРФ") ); + Результат.Вставить("Район", ЭлементАдреснойСтруктуры(НСтр("ru='Район'"), "СвРайМО/Район") ); + Результат.Вставить("Город", ЭлементАдреснойСтруктуры(НСтр("ru='Город'"), "Город") ); + Результат.Вставить("НаселенныйПункт", ЭлементАдреснойСтруктуры(НСтр("ru='Нас.пункт'"), "НаселПункт", ,Истина)); + + // Подсказки для интерфейса + Результат.Регион.Вставить("Подсказка", НСтр("ru='Регион адреса'")); + Результат.Район.Вставить("Подсказка", НСтр("ru='Район адреса'")); + Результат.Город.Вставить("Подсказка", НСтр("ru='Город адреса'")); + Результат.НаселенныйПункт.Вставить("Подсказка", НСтр("ru='Населенный пункт адреса'")); Если Код=Неопределено Тогда Возврат Результат; @@ -2450,8 +2490,7 @@ // Возвращает или пустую структуру-заготовку, или заполненную структуру по коду Функция СписокРеквизитовУлицаКЛАДР(Код=Неопределено) Результат = Новый Структура("Улица", - ЭлементАдреснойСтруктуры("Улица", "Улица"), - ); + ЭлементАдреснойСтруктуры("Улица", "Улица"),); Если Код<>Неопределено Тогда // Мы знаем что там КЛАДР, поэтому можем заполнить поля @@ -2671,8 +2710,7 @@ Пока Выборка.Следующий() Цикл ПолноеНаименование = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( - Выборка.АдресаНаименование, Выборка.АдресаСокращение - ); + Выборка.АдресаНаименование, Выборка.АдресаСокращение); Если Выборка.Неактуален Тогда ТекстПредупреждения = СтрЗаменить(ПредупреждениеНеактуальности, "%1", ПолноеНаименование); @@ -2689,12 +2727,10 @@ ДанныеСтроки = Новый Структура( "Код, Представление, ПолноеНаименование, Наименование, Сокращение, МожноЗагружатьРегион", Выборка.Код, ПолноеНаименование, ПолноеНаименование, - Выборка.АдресаНаименование, Выборка.АдресаСокращение, Выборка.МожноЗагружатьРегион - ); + Выборка.АдресаНаименование, Выборка.АдресаСокращение, Выборка.МожноЗагружатьРегион); ДанныеВыбора.Добавить(Новый Структура("Предупреждение, Значение", ТекстПредупреждения, ДанныеСтроки), - ПолноеНаименование, Пометка, Картинка - ); + ПолноеНаименование, Пометка, Картинка); Иначе ДанныеВыбора.Добавить(ПолноеНаименование, ПолноеНаименование, Пометка, Картинка); КонецЕсли; @@ -2742,20 +2778,40 @@ КонецЕсли; Если МодульКЛАДР.ЧислоЗаполненныхАдресныхОбъектов()=0 Тогда - // классификатор КЛАДР не загружен ни по одному региону - Результат.Добавить( - Новый Структура("СущностьПоля, ПутьXPath"), - НСтр("ru='Адресный классификатор не загружен.'") - ); + // Классификатор КЛАДР не загружен ни по одному региону + Результат.Добавить(Новый Структура("СущностьПоля, ПутьXPath"), + НСтр("ru='Адресный классификатор не загружен.'")); Возврат; КонецЕсли; Данные = СтруктураКЛАДРПоАдресуРФ(XDTOАдресРФ); + + // Проверим регион + КодРегиона = КодРегионаКЛАДР(Данные.Регион); + Если ПустаяСтрока(КодРегиона) Тогда + // Переданное значение - не регион с точки зрения КЛАДР + Результат.Добавить(Новый Структура("СущностьПоля, ПутьXPath"), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Регион ""%1"" не является субъектом РФ по классификатору'"), + Данные.Регион)); + Возврат; + КонецЕсли; + + // Проверим классификатор на загруженность по региону + Если Не МодульКЛАДР.АдресныйЭлементЗагружен(Данные.Регион) Тогда + Результат.Добавить(Новый Структура("СущностьПоля, ПутьXPath"), + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Адресный классификатор по региону ""%1"" не загружен'"), + Данные.Регион)); + Возврат; + КонецЕсли; + + // Проверим на соответсвие частей классификатору СтруктураПроверки = МодульКЛАДР.ПроверитьСоответствиеАдресаКЛАДРу( Данные.Индекс, Данные.Регион, Данные.Район, Данные.Город, Данные.НаселенныйПункт, Данные.Улица, - Данные.Дом, Данные.Корпус - ); + Данные.Дом, Данные.Корпус); Если СтруктураПроверки=Неопределено Или Не СтруктураПроверки.ЕстьОшибки Тогда + // Нет ошибок, адрес корректен Возврат; КонецЕсли; @@ -2766,13 +2822,11 @@ Если РеквизитыПроверки.Свойство(ИмяРеквизита) Тогда Результат.Добавить( Новый Структура("СущностьПоля, ПутьXPath", Элемент.Значение, РеквизитыПроверки[ИмяРеквизита].ПутьXPath), - Элемент.Значение - ); + Элемент.Значение); Иначе Результат.Добавить( Новый Структура("СущностьПоля, ПутьXPath"), - Элемент.Значение - ); + Элемент.Значение); КонецЕсли; КонецЦикла; @@ -2854,6 +2908,11 @@ | РегистрСведений.АдресныйКлассификатор |ГДЕ | ТипАдресногоЭлемента = 1 + | И КодРайонаВКоде = 0 + | И КодГородаВКоде = 0 + | И КодНаселенногоПунктаВКоде = 0 + | И КодУлицыВКоде = 0 + | | И Наименование = &Наименование | И Сокращение = &Сокращение |"); @@ -2867,7 +2926,62 @@ КонецЕсли; Возврат ""; -КонецФункции +КонецФункции + +Функция РегионКодаКЛАДР(Знач Код) + + Запрос = Новый Запрос(" + |ВЫБРАТЬ ПЕРВЫЕ 1 + | Наименование + "" "" + Сокращение КАК Регион + |ИЗ + | РегистрСведений.АдресныйКлассификатор + |ГДЕ + | ТипАдресногоЭлемента = 1 + | И КодАдресногоОбъектаВКоде = &Код + | И КодРайонаВКоде = 0 + | И КодГородаВКоде = 0 + | И КодНаселенногоПунктаВКоде = 0 + | И КодУлицыВКоде = 0 + |"); + + Если ТипЗнч(Код)=Тип("Число") Тогда + КодЧислом = Код; + Иначе + ТипЧисло = Новый ОписаниеТипов("Число"); + КодЧислом = ТипЧисло.ПривестиЗначение(Код); + КонецЕсли; + Запрос.УстановитьПараметр("Код", КодЧислом); + + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + Возврат Выборка.Регион; + КонецЕсли; + + Возврат ""; +КонецФункции + +Функция ВсеРегионыКЛАДР() + Запрос = Новый Запрос(" + |ВЫБРАТЬ + | КодАдресногоОбъектаВКоде КАК Код, + | Наименование КАК Наименование, + | Сокращение КАК Сокращение, + | Наименование + "" "" + Сокращение КАК Представление + |ИЗ + | РегистрСведений.АдресныйКлассификатор + |ГДЕ + | ТипАдресногоЭлемента = 1 + | И КодРайонаВКоде = 0 + | И КодГородаВКоде = 0 + | И КодНаселенногоПунктаВКоде = 0 + | И КодУлицыВКоде = 0 + |"); + Результат = Запрос.Выполнить().Выгрузить(); + Результат.Индексы.Добавить("Код"); + Результат.Индексы.Добавить("Представление"); + + Возврат Результат; +КонецФункции Функция ОпределитьПочтовыйИндексАдресаКЛАДР(XDTOАдресРФ) @@ -2876,8 +2990,7 @@ Данные = СтруктураКЛАДРПоАдресуРФ(XDTOАдресРФ); Индекс = МодульКЛАДР.ПолучитьИндекс( Данные.Регион, Данные.Район, Данные.Город, Данные.НаселенныйПункт, Данные.Улица, - Данные.Дом, Данные.Корпус - ); + Данные.Дом, Данные.Корпус); Если Не ПустаяСтрока(Индекс) Тогда Возврат СокрЛП(Индекс); КонецЕсли; @@ -2886,10 +2999,6 @@ Возврат Неопределено; КонецФункции -// ------------------------------------------------------------------------------------------------- -// Внутреннее -// - // Конструктор таблицы значений Функция ТаблицаЗначений(СписокКолонок, СписокИндексов="") ТаблицаРезультата = Новый ТаблицаЗначений; @@ -2910,11 +3019,10 @@ КонецФункции // Конструктор внутренней структуры элемента адреса -Функция ЭлементАдреснойСтруктуры(Заголовок=Неопределено, ПутьXPath=Неопределено, Значение=Неопределено, Предопределенный=Ложь) +Функция ЭлементАдреснойСтруктуры(Заголовок, ПутьXPath, Значение=Неопределено, Предопределенный=Ложь) Возврат Новый Структура("Заголовок, ПутьXPath, Значение, Предопределенный, Наименование, Сокращение, КодКлассификатора", - Заголовок, ПутьXPath, Значение, Предопределенный - ); -КонецФункции + Заголовок, ПутьXPath, Значение, Предопределенный); +КонецФункции // Возвращает строку для поиска в операторе ПОДОБНО Функция ЗамаскироватьСпецсимволы(Текст) @@ -2937,16 +3045,13 @@ // Индекс Результат.Вставить("Индекс", ЭлементАдреснойСтруктуры("Индекс", - КонтактнаяИнформацияКлиентСерверПовтИсп.XPathПочтовогоИндекса() - )); + КонтактнаяИнформацияКлиентСерверПовтИсп.XPathПочтовогоИндекса())); // Дом Результат.Вставить("Дом", ЭлементАдреснойСтруктуры("Дом", - КонтактнаяИнформацияКлиентСерверПовтИсп.XPathНомераДополнительногоОбъектаАдресации("Дом") - )); + КонтактнаяИнформацияКлиентСерверПовтИсп.XPathНомераДополнительногоОбъектаАдресации("Дом"))); // Корпус Результат.Вставить("Корпус", ЭлементАдреснойСтруктуры("Корпус", - КонтактнаяИнформацияКлиентСерверПовтИсп.XPathНомераДополнительногоОбъектаАдресации("Корпус") - )); + КонтактнаяИнформацияКлиентСерверПовтИсп.XPathНомераДополнительногоОбъектаАдресации("Корпус"))); Возврат Результат; КонецФункции @@ -2992,7 +3097,7 @@ // Внутреннее для сериализации Функция ДесериализацияАдресаОбщая(ЗначенияПолей, Представление, ОжидаемыйТип=Неопределено) - Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(ЗначенияПолей) Тогда + Если КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(ЗначенияПолей) Тогда // Общий формат контактной информации Возврат ДесериализацияКонтактнойИнформации(ЗначенияПолей, ОжидаемыйТип); КонецЕсли; @@ -3029,8 +3134,7 @@ СписокПолей = ЗначенияПолей; ИначеЕсли ТипЗначенийПолей=Тип("Структура") Тогда СписокПолей = УправлениеКонтактнойИнформациейКлиентСервер.ПреобразоватьСтрокуВСписокПолей( - УправлениеКонтактнойИнформациейКлиентСервер.СтрокаПолей(ЗначенияПолей, Ложь) - ); + УправлениеКонтактнойИнформациейКлиентСервер.СтрокаПолей(ЗначенияПолей, Ложь)); Иначе // Уже преобразовано в строку СписокПолей = УправлениеКонтактнойИнформациейКлиентСервер.ПреобразоватьСтрокуВСписокПолей(ЗначенияПолей); @@ -3056,8 +3160,10 @@ ИначеЕсли ИмяПоля="КОДСТРАНЫ" Тогда ; + ИначеЕсли ИмяПоля="КОДРЕГИОНА" Тогда - ; + АдресРФ.СубъектРФ = РегионКода(ЭлементСписка.Значение); + ИначеЕсли ИмяПоля="РЕГИОН" Тогда АдресРФ.СубъектРФ = ЭлементСписка.Значение; @@ -3136,6 +3242,7 @@ Возврат Результат; КонецФункции + Процедура ВставитьЗданиеПомещение(XDTOАдрес, Тип, Значение) Если ПустаяСтрока(Значение) Тогда Возврат; @@ -3157,17 +3264,20 @@ КонецЕсли; КонецПроцедуры + Функция СоздатьНомерДопАдрЭл(АдресРФ) ДопАдрЭл = СоздатьДопАдрЭл(АдресРФ); ДопАдрЭл.Номер = ФабрикаXDTO.Создать(ДопАдрЭл.Тип().Свойства.Получить("Номер").Тип); Возврат ДопАдрЭл.Номер; КонецФункции + Функция СоздатьДопАдрЭл(АдресРФ) СвойствоДопАдрЭл = АдресРФ.ДопАдрЭл.ВладеющееСвойство; ДопАдрЭл = ФабрикаXDTO.Создать(СвойствоДопАдрЭл.Тип); АдресРФ.ДопАдрЭл.Добавить(ДопАдрЭл); Возврат ДопАдрЭл; КонецФункции + Функция СвРайМО(АдресРФ) Если АдресРФ.СвРайМО<>Неопределено Тогда Возврат АдресРФ.СвРайМО; @@ -3177,7 +3287,7 @@ Возврат АдресРФ.СвРайМО; КонецФункции -Функция ДесериализацияАдресаПоПредставлениюКЛАДР(Представление) +Функция ДесериализацияАдресаПоПредставлениюКЛАДР(Знач Представление) ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(); @@ -3185,122 +3295,330 @@ Результат.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "Адрес")); Результат.Представление = Представление; - СтрокиЧастейАдреса = КонтактнаяИнформацияКлиентСервер.ЧастиАдреса(Представление); - КоличествоЧастей = СтрокиЧастейАдреса.Количество(); - Если КоличествоЧастей=0 Тогда + ДанныеАнализа = ЧастиАдресаТаблицей(Представление); + Если ДанныеАнализа.Количество()=0 Тогда Возврат Результат; КонецЕсли; Адрес = Результат.Состав; - // Страна - определяем по классификатору стран. - СтранаРоссия = Справочники.СтраныМира.Россия; - Страна = Справочники.СтраныМира.НайтиПоНаименованию(СтрокиЧастейАдреса[0].Наименование, Истина); - Если ЗначениеЗаполнено(Страна) Тогда - Адрес.Страна = Страна.Наименование; - // Если явно не Россия, то возвращаемся - Если Страна<>СтранаРоссия Тогда - Адрес.Состав = Представление; - Возврат Результат; - КонецЕсли; - СтрокиЧастейАдреса.Удалить(0); - КонецЕсли; - - // Считаем это все российским адресом - Адрес.Страна = СтранаРоссия.Наименование; - Адрес.Состав = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "АдресРФ")); - АдресРФ = Адрес.Состав; - - // Создадим затычку под район - СвРайМО(АдресРФ); - - // Индекс. Определяем по всем цифрам в первом элементе - Наименование = СтрокиЧастейАдреса[0].Наименование; - Индекс = Неопределено; - Если СтрДлина(Наименование)=6 Тогда - Попытка - Индекс = Число(Наименование); - Исключение - ; - КонецПопытки; - КонецЕсли; - Если Индекс<>Неопределено Тогда - // Определили индекс - ПочтовыйИндексАдреса(АдресРФ, Индекс); - СтрокиЧастейАдреса.Удалить(0); - КонецЕсли; - - // Части адреса до зданий - ЧастиАдреса = СписокРеквизитовНаселенныйПунктКЛАДР(); - Для Каждого КлючЗначение Из СписокРеквизитовУлицаКЛАДР() Цикл - ЧастиАдреса.Вставить(КлючЗначение.Ключ, КлючЗначение.Значение); - КонецЦикла; - - Для Каждого КлючЗначение Из ЧастиАдреса Цикл - Если СтрокиЧастейАдреса.Количество()=0 Тогда - Прервать; - КонецЕсли; + Запрос = Новый Запрос(" + |ВЫБРАТЬ + | ДанныеАдреса.Позиция0 КАК Позиция0, + | ДанныеАдреса.Позиция КАК Позиция, + | ДанныеАдреса.Значение КАК Значение, + | ДанныеАдреса.Наименование КАК Наименование, + | ДанныеАдреса.Сокращение КАК Сокращение, + | ДанныеАдреса.Начало КАК Начало, + | ДанныеАдреса.Длина КАК Длина + |ПОМЕСТИТЬ + | ДанныеАдреса + |ИЗ + | &ДанныеАдреса КАК ДанныеАдреса + |ИНДЕКСИРОВАТЬ ПО + | Позиция0, Позиция, Наименование, Сокращение + |;////////////////////////////////////////////////////////////////////////////// + | + |ВЫБРАТЬ + | ДанныеАдреса.Позиция КАК Позиция, + | ДанныеАдреса.Значение КАК Значение, + | ДанныеАдреса.Наименование КАК Наименование, + | ДанныеАдреса.Сокращение КАК Сокращение, + | + | ДанныеАдреса.Начало КАК Начало, + | ДанныеАдреса.Длина КАК Длина, + | ЛОЖЬ КАК Обработано, + | + | МИНИМУМ(АдресныйКлассификатор.ТипАдресногоЭлемента) КАК УровеньПоКлассификатору, + | ВЫБОР + | КОГДА МИНИМУМ(АдресныйКлассификатор.ТипАдресногоЭлемента) ЕСТЬ NULL ТОГДА ЛОЖЬ + | ИНАЧЕ ИСТИНА + | КОНЕЦ КАК НайденоПоКлассификатору, + | + | МИНИМУМ(АдресныеСокращения.Уровень) КАК УровеньПоСокращениям, + | ВЫБОР + | КОГДА МИНИМУМ(АдресныеСокращения.Уровень) ЕСТЬ NULL ТОГДА ЛОЖЬ + | ИНАЧЕ ИСТИНА + | КОНЕЦ КАК НайденоПоСокращениям, + | + | ВЫБОР + | КОГДА НЕ МИНИМУМ(СтраныМира.Наименование) ЕСТЬ NULL ТОГДА ИСТИНА + | КОГДА ДанныеАдреса.Значение В (&СтраныКлассификатора) ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК НайденоПоСтранамМира, + | + | ВЫБОР + | КОГДА ДанныеАдреса.Значение=СтранаРоссия.Наименование ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК ЭтоСтранаРоссия, + | + | ВЫБОР + | КОГДА ДанныеАдреса.Наименование ПОДОБНО ""[0-9][0-9][0-9][0-9][0-9][0-9]"" ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК НайденоПоИндексу + | + |ИЗ + | ДанныеАдреса КАК ДанныеАдреса + | + |ЛЕВОЕ СОЕДИНЕНИЕ + | РегистрСведений.АдресныйКлассификатор КАК АдресныйКлассификатор + |ПО + | АдресныйКлассификатор.Наименование=ДанныеАдреса.Наименование + | И АдресныйКлассификатор.Сокращение=ДанныеАдреса.Сокращение + | И АдресныйКлассификатор.ТипАдресногоЭлемента<=5 + | И АдресныйКлассификатор.ТипАдресногоЭлемента>=ДанныеАдреса.Позиция0 + | + |ЛЕВОЕ СОЕДИНЕНИЕ + | РегистрСведений.АдресныеСокращения КАК АдресныеСокращения + |ПО + | АдресныеСокращения.Сокращение=ДанныеАдреса.Сокращение + | И АдресныеСокращения.Уровень<=5 + | + |ЛЕВОЕ СОЕДИНЕНИЕ + | Справочник.СтраныМира КАК СтраныМира + |ПО + | СтраныМира.Наименование=ДанныеАдреса.Значение + | + |ЛЕВОЕ СОЕДИНЕНИЕ + | Справочник.СтраныМира КАК СтранаРоссия + |ПО + | СтранаРоссия.Ссылка = ЗНАЧЕНИЕ(Справочник.СтраныМира.Россия) + | + |СГРУППИРОВАТЬ ПО + | СтранаРоссия.Наименование, + | ДанныеАдреса.Позиция, + | ДанныеАдреса.Значение, + | ДанныеАдреса.Наименование, + | ДанныеАдреса.Сокращение, + | ДанныеАдреса.Начало, + | ДанныеАдреса.Длина + | + |УПОРЯДОЧИТЬ ПО + | ДанныеАдреса.Позиция УБЫВ + |"); - ИдентификаторЧасти = КлючЗначение.Ключ; - Наименование = СтрокиЧастейАдреса[0].Наименование; - Сокращение = СтрокиЧастейАдреса[0].Сокращение; - ВариантыДанных = СписокАнализаЭлементаАдресаКЛАДР(Наименование, Сокращение, ИдентификаторЧасти, ЧастиАдреса, Ложь, Истина, 2); - КоличествоВариантов = ВариантыДанных.Количество(); - - // Если нет вариантов, то возможно это уровень ниже - Если КоличествоВариантов=1 Тогда - // Найдено точно, ставим части адреса для ограничения остального - Приемник = КлючЗначение.Значение; - Источник = ВариантыДанных[0].Значение.Значение; - Приемник.КодКлассификатора = Источник.Код; - Приемник.Наименование = Источник.Наименование; - Приемник.Сокращение = Источник.Сокращение; - Приемник.Значение = КонтактнаяИнформацияКлиентСервер.ПолноеНаименование(Приемник.Наименование, Приемник.Сокращение); + Классификатор = Справочники.СтраныМира.ТаблицаКлассификатора(); + Запрос.УстановитьПараметр("СтраныКлассификатора", Классификатор.ВыгрузитьКолонку("Наименование") ); + Запрос.УстановитьПараметр("ДанныеАдреса", ДанныеАнализа); + + РезультатАнализа = Запрос.Выполнить().Выгрузить(); + + АдресРФ = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(ПространствоИмен, "АдресРФ")); + + // Просмотр будет с конца, чтобы актуальным было первое + ЭтоРоссийскийАдрес = Истина; + СтрокаСтраны = Неопределено; + + ОбработанныеУровни = Новый Соответствие; + ВведеноВСвободнойФорме = Ложь; + + ТаблицаЗданийПомещений = Новый ТаблицаЗначений; + ТаблицаЗданийПомещений.Колонки.Добавить("Тип"); + ТаблицаЗданийПомещений.Колонки.Добавить("Значение"); + + Для Каждого Строка Из РезультатАнализа Цикл + // Проход по классификатору, сокращения, страны, индекс + Если Строка.НайденоПоИндексу Тогда + ПочтовыйИндексАдреса(АдресРФ, Строка.Значение); + Строка.Обработано = Истина; - // И в результат - АдресРФ.Установить(Приемник.ПутьXPath, Приемник.Значение); + ИначеЕсли Строка.ЭтоСтранаРоссия Тогда + ЭтоРоссийскийАдрес = Истина; + Строка.Обработано = Истина; + СтрокаСтраны = Строка; + + ИначеЕсли Строка.НайденоПоСтранамМира Тогда + ЭтоРоссийскийАдрес = Ложь; + Строка.Обработано = Истина; + СтрокаСтраны = Строка; + + ИначеЕсли Строка.НайденоПоКлассификатору Тогда + Уровень = Строка.УровеньПоКлассификатору; + УстановитьЧастьВАдресеПоУровнюКЛАДР(АдресРФ, Уровень, Строка.Значение); + Строка.Обработано = Истина; + // Контроль повторной обработки + Если ОбработанныеУровни[Уровень]<>Неопределено Тогда + ВведеноВСвободнойФорме = Истина; + КонецЕсли; + + ИначеЕсли Строка.НайденоПоСокращениям Тогда + Уровень = Строка.УровеньПоСокращениям; + УстановитьЧастьВАдресеПоУровнюКЛАДР(АдресРФ, Уровень, Строка.Значение); + Строка.Обработано = Истина; + // Контроль повторной обработки + Если ОбработанныеУровни[Уровень]<>Неопределено Тогда + ВведеноВСвободнойФорме = Истина; + КонецЕсли; + + Иначе + // Проверка на квартиру или здание + Тип = СокрЛП(СтрЗаменить(Строка.Наименование, "№", "")); + Если КонтактнаяИнформацияКлиентСерверПовтИсп.КодСериализацииОбъектаАдресации(Тип)<>Неопределено Тогда + // Вставляем в начало, так как порядок результата запроса у нас обратный + НоваяСтрока = ТаблицаЗданийПомещений.Вставить(0); + НоваяСтрока.Значение = СокрЛП(СтрЗаменить(Строка.Сокращение, "№", "")); + НоваяСтрока.Тип = Тип; + Строка.Обработано = Истина; + КонецЕсли; - СтрокиЧастейАдреса.Удалить(0); - ИначеЕсли КоличествоВариантов>0 Тогда - // Есть много вариантов, не учитываем - СтрокиЧастейАдреса.Удалить(0); КонецЕсли; КонецЦикла; - // Остальное пытаемся распихать с конца по домам и квартирам, если не получилось - оставляем - ТаблицаЗданийПомещений = ТаблицаЗначений("Тип, Значение"); - ИндексСтроки = СтрокиЧастейАдреса.Количество() - 1; - Пока ИндексСтроки>=0 Цикл - Строка = СтрокиЧастейАдреса[ИндексСтроки]; + // Смотрим на страну разбора + Если ЭтоРоссийскийАдрес Тогда + Адрес.Страна = СокрЛП(Справочники.СтраныМира.Россия.Наименование); + Адрес.Состав = АдресРФ; - Тип = СокрЛП(СтрЗаменить(Строка.Наименование, "№", "")); - Если КонтактнаяИнформацияКлиентСерверПовтИсп.КодСериализацииОбъектаАдресации(Тип)<>Неопределено Тогда - НоваяСтрока = ТаблицаЗданийПомещений.Добавить(); - НоваяСтрока.Значение = СокрЛП(СтрЗаменить(Строка.Сокращение, "№", "")); - НоваяСтрока.Тип = Тип; - СтрокиЧастейАдреса.Удалить(ИндексСтроки); + ЗданияИПомещения = Новый Структура("Здания, Помещения", ТаблицаЗданийПомещений, ТаблицаЗданийПомещений); + ЗданияИПомещенияАдреса(АдресРФ, ЗданияИПомещения); + + Если ВведеноВСвободнойФорме Или РезультатАнализа.Найти(Ложь, "Обработано")<>Неопределено Тогда + // Что-то осталось, считаем адресом в свободной форме + АдресРФ.Адрес_По_Документу = Представление; КонецЕсли; - ИндексСтроки = ИндексСтроки - 1; - КонецЦикла; - ЗданияИПомещенияАдреса(АдресРФ, Новый Структура("Здания, Помещения", ТаблицаЗданийПомещений, ТаблицаЗданийПомещений)); + Возврат Результат; + КонецЕсли; - // Все, что осталось - склеиваем и ставим в населенный пункт - Остаток = ""; - Для Каждого Строка Из СтрокиЧастейАдреса Цикл - Остаток = Остаток + " " + КонтактнаяИнформацияКлиентСервер.ПолноеНаименование(Строка.Наименование, Строка.Сокращение); - КонецЦикла; - Если Не ПустаяСтрока(Остаток) Тогда - АдресРФ.НаселПункт = СокрЛП("" + АдресРФ.НаселПункт + СокрЛП(Остаток)); + // Адрес за пределами РФ + Если СтрокаСтраны=Неопределено Тогда + Адрес.Состав = Представление; + Иначе + Адрес.Страна = СтрокаСтраны.Значение; + + // Состав без страны, она остается в представлении + Позиция = СтрокаСтраны.Начало + СтрокаСтраны.Длина; + Длина = СтрДлина(Представление); + Разделители = "," + Символы.ПС; + Пока Позиция<=Длина И Найти(Разделители, Сред(Представление, Позиция, 1))<=0 Цикл + Позиция = Позиция + 1; + КонецЦикла; + Пока Позиция<=Длина И Найти(Разделители, Сред(Представление, Позиция, 1))>0 Цикл + Позиция = Позиция + 1; + КонецЦикла; + Адрес.Состав = СокрЛП( Лев(Представление, СтрокаСтраны.Начало -1 ) + " " + Сред(Представление, Позиция) ); КонецЕсли; Возврат Результат; КонецФункции +Функция ЧастиАдресаТаблицей(Знач Текст) + + ТипСтрока = Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(128)); + ТипЧисло = Новый ОписаниеТипов("Число"); + + Результат = Новый ТаблицаЗначений; + Колонки = Результат.Колонки; + Колонки.Добавить("Позиция0", ТипЧисло); + Колонки.Добавить("Позиция", ТипЧисло); + Колонки.Добавить("Значение", ТипСтрока); + Колонки.Добавить("Наименование", ТипСтрока); + Колонки.Добавить("Сокращение", ТипСтрока); + + Колонки.Добавить("Начало", ТипЧисло); + Колонки.Добавить("Длина", ТипЧисло); + + Номер = 0; + Для Каждого Часть Из СловаТекстаТаблицей(Текст, "," + Символы.ПС) Цикл + Значение = СокрЛП(Часть.Значение); + Если ПустаяСтрока(Значение) Тогда + Продолжить; + КонецЕсли; + + Строка = Результат.Добавить(); + Строка.Значение = Значение; + + Строка.Позиция0 = Номер; + Номер = Номер + 1; + Строка.Позиция = Номер; + + Строка.Начало = Часть.Начало; + Строка.Длина = Часть.Длина; + + Позиция = СтрДлина(Значение); + Пока Позиция>0 Цикл + Символ = Сред(Значение, Позиция, 1); + Если ПустаяСтрока(Символ) Тогда + Строка.Наименование = Лев(Значение, Позиция-1); + Прервать; + КонецЕсли; + Строка.Сокращение = Символ + Строка.Сокращение; + Позиция = Позиция - 1; + КонецЦикла; + + Если ПустаяСтрока(Строка.Наименование) Тогда + Строка.Наименование = Строка.Сокращение; + Строка.Сокращение = ""; + КонецЕсли; + КонецЦикла; + + Возврат Результат; +КонецФункции + +Функция СловаТекстаТаблицей(Знач Текст, Знач Разделители=Неопределено) + + НачалоСлова = 0; + Состояние = 0; + + ТипСтрока = Новый ОписаниеТипов("Строка"); + ТипЧисло = Новый ОписаниеТипов("Число"); + + Результат = Новый ТаблицаЗначений; + Колонки = Результат.Колонки; + Колонки.Добавить("Значение", ТипСтрока); + Колонки.Добавить("Начало", ТипЧисло); + Колонки.Добавить("Длина", ТипЧисло); + + Для Позиция=1 По СтрДлина(Текст) Цикл + ТекущийСимвол = Сред(Текст, Позиция, 1); + ЭтоРазделитель = ?(Разделители=Неопределено, ПустаяСтрока(ТекущийСимвол), Найти(Разделители, ТекущийСимвол)>0); + + Если Состояние=0 И (Не ЭтоРазделитель) Тогда + НачалоСлова = Позиция; + Состояние = 1; + ИначеЕсли Состояние=1 И ЭтоРазделитель Тогда + Строка = Результат.Добавить(); + Строка.Начало = НачалоСлова; + Строка.Длина = Позиция-НачалоСлова; + Строка.Значение = Сред(Текст, Строка.Начало, Строка.Длина); + Состояние = 0; + КонецЕсли; + КонецЦикла; + + Если Состояние=1 Тогда + Строка = Результат.Добавить(); + Строка.Начало = НачалоСлова; + Строка.Длина = Позиция-НачалоСлова; + Строка.Значение = Сред(Текст, Строка.Начало, Строка.Длина) + КонецЕсли; + + Возврат Результат; +КонецФункции + +Процедура УстановитьЧастьВАдресеПоУровнюКЛАДР(XDTOАдресРФ, Знач Уровень, Знач Значение) + + // XPath + Если Уровень=1 Тогда + Путь = "СубъектРФ"; + ИначеЕсли Уровень=2 Тогда + Путь = "СвРайМО/Район"; + ИначеЕсли Уровень=3 Тогда + Путь = "Город"; + ИначеЕсли Уровень=4 Тогда + Путь = "НаселПункт"; + ИначеЕсли Уровень=5 Тогда + Путь = "Улица"; + Иначе + Возврат; + КонецЕсли; + + УстановитьСвойствоПоXPath(XDTOАдресРФ, Путь, Значение); +КонецПроцедуры + Функция ДесериализацияТелефонаФакса(ЗначенияПолей, Представление="", ОжидаемыйТип=Неопределено) - Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(ЗначенияПолей) Тогда + Если КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(ЗначенияПолей) Тогда // Общий формат контактной информации Возврат ДесериализацияКонтактнойИнформации(ЗначенияПолей, ОжидаемыйТип); КонецЕсли; @@ -3423,6 +3741,7 @@ Возврат СократитьНеЦифры(Результат, ДопустимоКромеЦифр, Ложь); КонецФункции + Функция СократитьНеЦифры(Текст, ДопустимоКромеЦифр="", Направление=Истина) Длина = СтрДлина(Текст); diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/Module.bsl new file mode 100644 index 000000000..1acd68ccb --- /dev/null +++ b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/Module.bsl @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Подсистема "Контактная информация" +// +//////////////////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Разбирает представление контактной информации и возвращает строку XML со значениями полей +// +// Параметры: +// Текст - строка XML +// ОжидаемыйТип - ссылка на вид КИ или перечисление типа КИ для контроля типов +// +Функция ПарсингКонтактнойИнформацииXML(Знач Текст, Знач ОжидаемыйВид) Экспорт + Возврат КонтактнаяИнформацияСлужебный.ПарсингКонтактнойИнформацииXML(Текст, ОжидаемыйВид); +КонецФункции + +// Возвращает значение перечисления тип вида контактной информации +// +// Параметры: +// ВидИнформации - перечисление типа, ссылка на справочник ВидыКонтактнойИнформации или объект +// с полем "Тип" +// +Функция ТипВидаКонтактнойИнформации(Знач ВидИнформации) Экспорт + Возврат УправлениеКонтактнойИнформацией.ТипВидаКонтактнойИнформации(ВидИнформации); +КонецФункции + +// Возвращает строку состава из значения контактной информации. +// +// Параметры: +// XMLДанные - строка XML данных контакной информации +// +// Если значение состава сложного типа, то возвращает Неопределено +// +Функция СтрокаСоставаКонтактнойИнформации(Знач XMLДанные) Экспорт; + Возврат КонтактнаяИнформацияXML.СтрокаСоставаКонтактнойИнформации(XMLДанные); +КонецФункции + +// Преобразует все входящие форматы контактной информации в XML +// +Функция ПривестиКонтактнуюИнформациюXML(Знач Данные) Экспорт + Возврат КонтактнаяИнформацияXML.ПривестиКонтактнуюИнформациюXML(Данные); +КонецФункции + +// Возвращает найденную ссылку или создает новую страну мира и возвращает ссылку на нее +// +Функция СтранаМираПоДаннымКлассификатора(Знач КодСтраны) Экспорт + Возврат Справочники.СтраныМира.СсылкаПоДаннымКлассификатора( + Новый Структура("Код", КодСтраны) + ); +КонецФункции + +// Заполняет коллекцию ссылками на найденные или созданные страны мира +// +Процедура КоллекцияСтранМираПоДаннымКлассификатора(Коллекция) Экспорт + Для Каждого КлючЗначение Из Коллекция Цикл + Коллекция[КлючЗначение.Ключ] = Справочники.СтраныМира.СсылкаПоДаннымКлассификатора( + Новый Структура("Код", КлючЗначение.Значение.Код) + ); + КонецЦикла; +КонецПроцедуры + diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияВызовСервера/КонтактнаяИнформацияВызовСервера.mdo b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/КонтактнаяИнформацияСлужебныйВызовСервера.mdo similarity index 58% rename from SSL/src/CommonModules/КонтактнаяИнформацияВызовСервера/КонтактнаяИнформацияВызовСервера.mdo rename to SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/КонтактнаяИнформацияСлужебныйВызовСервера.mdo index 5795d0701..26a550031 100644 --- a/SSL/src/CommonModules/КонтактнаяИнформацияВызовСервера/КонтактнаяИнформацияВызовСервера.mdo +++ b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйВызовСервера/КонтактнаяИнформацияСлужебныйВызовСервера.mdo @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> <mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6afcc089-7f15-42e8-97b5-6aad6cf2e6f9"> - <name>КонтактнаяИнформацияВызовСервера</name> + <name>КонтактнаяИнформацияСлужебныйВызовСервера</name> <synonym> <key>ru</key> - <value>Контактная информация вызов сервера</value> + <value>Контактная информация служебный вызов сервера</value> </synonym> <server>true</server> <serverCall>true</serverCall> diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/Module.bsl new file mode 100644 index 000000000..418ffb2a6 --- /dev/null +++ b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/Module.bsl @@ -0,0 +1,1172 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Подсистема "Контактная информация" +// +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС +// + +// Возвращает имя события для регистрации в журнале событий контактной информации +// +Функция СобытиеЖурналаРегистрации() Экспорт + Возврат НСтр("ru='Контактная информация'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка() ); +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Поставщики преобразований +// + +// Преобразует список значений, оставляя из него только последние значения пар ключ-значение +// +// Результат преобразования - строка XML сериализованного списка значений +// +Функция XSLT_УникальныеПоПредставлениюВСписке() Экспорт + + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:tns=""http://v8.1c.ru/8.1/data/core"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + | + | <xsl:template match=""node() | @*""> + | <xsl:copy> + | <xsl:apply-templates select=""node() | @*"" /> + | </xsl:copy> + | </xsl:template> + | + | <xsl:template match=""//tns:ValueListType/tns:item""> + | <xsl:variable name=""presentation"" select=""string(tns:presentation)"" /> + | <xsl:if test=""0=count(following-sibling::tns:item[tns:presentation=$presentation])"" > + | <xsl:copy-of select=""."" /> + | </xsl:if> + | </xsl:template> + | + |</xsl:stylesheet> + |"); + + Возврат Преобразователь; +Конецфункции + +// Производит проверку двух строк XML - параметра и текущего +// +// Результат преобразования - сериализованный ValueTable (http://v8.1c.ru/8.1/data/core), в котором три колонки: +// - Путь - строка - путь к месту различия +// - Значение1 - строка - значение в XML из параметра Текст1 +// - Значение2 - строка - значение в XML из параметра Текст2 +// +// Проверяем только строки и атрибуты, без пробельных, CDATA и т.п. Порядок важен. +// +Функция XSLT_ТаблицаЗначенийРазличияXML() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + + // Пространство имен должно быть пустым! + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" + | xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" + | xmlns:xs=""http://www.w3.org/2001/XMLSchema"" + | + | xmlns:str=""http://exslt.org/strings"" + | xmlns:exsl=""http://exslt.org/common"" + | + | extension-element-prefixes=""str exsl"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + |" + XSLT_ШаблоныСтроковыхФункций() + " + |" + XSLT_ШаблоныФункцийXPath() + " + | + | <!-- parce tree elements to xpath-value --> + | <xsl:template match=""node()"" mode=""action""> + | + | <xsl:variable name=""text""> + | <xsl:call-template name=""str-trim-all""> + | <xsl:with-param name=""str"" select=""text()"" /> + | </xsl:call-template> + | </xsl:variable> + | + | <xsl:if test=""$text!=''""> + | <xsl:element name=""item""> + | <xsl:attribute name=""path""> + | <xsl:variable name=""tmp-path""> + | <xsl:call-template name=""build-path"" /> + | </xsl:variable> + | <xsl:value-of select=""substring($tmp-path, 6)"" /> <!-- pass '/dn/f' or '/dn/s' --> + | </xsl:attribute> + | <xsl:attribute name=""value""> + | <xsl:value-of select=""text()"" /> + | </xsl:attribute> + | </xsl:element> + | </xsl:if> + | + | <xsl:apply-templates select=""@* | node()"" mode=""action""/> + | </xsl:template> + | + | <!-- parce tree attributes to xpath-value --> + | <xsl:template match=""@*"" mode=""action""> + | <xsl:element name=""item""> + | <xsl:attribute name=""path""> + | <xsl:variable name=""tmp-path""> + | <xsl:call-template name=""build-path"" /> + | </xsl:variable> + | <xsl:value-of select=""substring($tmp-path, 6)"" /> <!-- pass '/dn/f' or '/dn/s' --> + | </xsl:attribute> + | <xsl:attribute name=""value""> + | <xsl:value-of select=""."" /> + | </xsl:attribute> + | </xsl:element> + | </xsl:template> + | + | <!-- main --> + | <xsl:variable name=""dummy""> + | <xsl:element name=""first""> + | <xsl:apply-templates select=""/dn/f"" mode=""action"" /> + | </xsl:element> + | <xsl:element name=""second""> + | <xsl:apply-templates select=""/dn/s"" mode=""action"" /> + | </xsl:element> + | </xsl:variable> + | <xsl:variable name=""dummy-nodeset"" select=""exsl:node-set($dummy)"" /> + | <xsl:variable name=""first-items"" select=""$dummy-nodeset/first/item"" /> + | <xsl:variable name=""second-items"" select=""$dummy-nodeset/second/item"" /> + | + | <xsl:template match=""/""> + | + | <!-- first vs second --> + | <xsl:variable name=""first-second""> + | <xsl:for-each select=""$first-items""> + | <xsl:call-template name=""compare""> + | <xsl:with-param name=""check"" select=""$second-items"" /> + | </xsl:call-template> + | </xsl:for-each> + | </xsl:variable> + | <xsl:variable name=""first-second-nodeset"" select=""exsl:node-set($first-second)"" /> + | + | <!-- second vs first without doubles --> + | <xsl:variable name=""doubles"" select=""$first-second-nodeset/item"" /> + | <xsl:variable name=""second-first""> + | <xsl:for-each select=""$second-items""> + | <xsl:call-template name=""compare""> + | <xsl:with-param name=""check"" select=""$first-items"" /> + | <xsl:with-param name=""doubles"" select=""$doubles"" /> + | </xsl:call-template> + | </xsl:for-each> + | </xsl:variable> + | + | <!-- result --> + | <ValueTable xmlns=""http://v8.1c.ru/8.1/data/core"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xsi:type=""ValueTable""> + | <column> + | <Name xsi:type=""xs:string"">Путь</Name> + | <ValueType> + | <Type>xs:string</Type> + | <StringQualifiers><Length>0</Length><AllowedLength>Variable</AllowedLength></StringQualifiers> + | </ValueType> + | </column> + | <column> + | <Name xsi:type=""xs:string"">Значение1</Name> + | <ValueType> + | <Type>xs:string</Type> + | <StringQualifiers><Length>0</Length><AllowedLength>Variable</AllowedLength></StringQualifiers> + | </ValueType> + | </column> + | <column> + | <Name xsi:type=""xs:string"">Значение2</Name> + | <ValueType> + | <Type>xs:string</Type> + | <StringQualifiers><Length>0</Length><AllowedLength>Variable</AllowedLength></StringQualifiers> + | </ValueType> + | </column> + | + | <xsl:for-each select=""$first-second-nodeset/item | exsl:node-set($second-first)/item""> + | <xsl:element name=""row""> + | <xsl:element name=""Value""> + | <xsl:value-of select=""@path""/> + | </xsl:element> + | <xsl:element name=""Value""> + | <xsl:value-of select=""@value1""/> + | </xsl:element> + | <xsl:element name=""Value""> + | <xsl:value-of select=""@value2""/> + | </xsl:element> + | </xsl:element> + | </xsl:for-each> + | + | </ValueTable> + | + | </xsl:template> + | <!-- /main --> + | + | <!-- compare sub --> + | <xsl:template name=""compare""> + | <xsl:param name=""check"" /> + | <xsl:param name=""doubles"" select=""/.."" /> + | + | <xsl:variable name=""path"" select=""@path""/> + | <xsl:variable name=""value"" select=""@value""/> + | <xsl:variable name=""diff"" select=""$check[@path=$path]""/> + | <xsl:choose> + | <xsl:when test=""count($diff)=0""> + | <xsl:if test=""count($doubles[@path=$path and @value1='' and @value2=$value])=0""> + | <xsl:element name=""item""> + | <xsl:attribute name=""path""> <xsl:value-of select=""$path""/> </xsl:attribute> + | <xsl:attribute name=""value1""> <xsl:value-of select=""$value""/> </xsl:attribute> + | <xsl:attribute name=""value2"" /> + | </xsl:element> + | </xsl:if> + | </xsl:when> + | <xsl:otherwise> + | + | <xsl:for-each select=""$diff[@value!=$value]""> + | <xsl:variable name=""diff-value"" select=""@value""/> + | <xsl:if test=""count($doubles[@path=$path and @value1=$diff-value and @value2=$value])=0""> + | <xsl:element name=""item""> + | <xsl:attribute name=""path""> <xsl:value-of select=""$path""/> </xsl:attribute> + | <xsl:attribute name=""value1""> <xsl:value-of select=""$value""/> </xsl:attribute> + | <xsl:attribute name=""value2""> <xsl:value-of select=""@value""/> </xsl:attribute> + | </xsl:element> + | </xsl:if> + | </xsl:for-each> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:template> + | + |</xsl:stylesheet> + |"); + + Возврат Преобразователь; +КонецФункции + +// Преобразует текст с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML. +// В случае повторных ключей все включаются в результат, но при десериализации будет использован +// последний (особенность работы сериализатора платформы) +// +// Результат преобразования - строка XML сериализованной структуры +// +Функция XSLT_СтрокаКлючЗначениеВСтруктуру() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" + | xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:str=""http://exslt.org/strings"" + | extension-element-prefixes=""str"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + |" + XSLT_ШаблоныСтроковыхФункций() + " + | + | <xsl:template match=""ExternalParamNode""> + | + | <xsl:variable name=""source""> + | <xsl:call-template name=""str-replace-all""> + | <xsl:with-param name=""str"" select=""."" /> + | <xsl:with-param name=""search-for"" select=""' '"" /> + | <xsl:with-param name=""replace-by"" select=""' '"" /> + | </xsl:call-template> + | </xsl:variable> + | + | <Structure xmlns=""http://v8.1c.ru/8.1/data/core"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""Structure""> + | + | <xsl:for-each select=""str:tokenize($source, ' ')"" > + | <xsl:if test=""contains(., '=')""> + | + | <xsl:element name=""Property""> + | <xsl:attribute name=""name"" > + | <xsl:call-template name=""str-trim-all""> + | <xsl:with-param name=""str"" select=""substring-before(., '=')"" /> + | </xsl:call-template> + | </xsl:attribute> + | + | <Value xsi:type=""xs:string""> + | <xsl:call-template name=""str-replace-all""> + | <xsl:with-param name=""str"" select=""substring-after(., '=')"" /> + | <xsl:with-param name=""search-for"" select=""' '"" /> + | <xsl:with-param name=""replace-by"" select=""' '"" /> + | </xsl:call-template> + | </Value> + | + | </xsl:element> + | + | </xsl:if> + | </xsl:for-each> + | + | </Structure> + | + | </xsl:template> + | + |</xsl:stylesheet> + |"); + + Возврат Преобразователь; +КонецФункции + +// Преобразует текст с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML. +// В случае повторных ключей все включаются в результат +// +// Результат преобразования - строка XML сериализованного списка значений +// +Функция XSLT_СтрокаКлючЗначениеВСписокЗначений() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" + | xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:str=""http://exslt.org/strings"" + | extension-element-prefixes=""str"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + |" + XSLT_ШаблоныСтроковыхФункций() + " + | + | <xsl:template match=""ExternalParamNode""> + | + | <xsl:variable name=""source""> + | <xsl:call-template name=""str-replace-all""> + | <xsl:with-param name=""str"" select=""."" /> + | <xsl:with-param name=""search-for"" select=""' '"" /> + | <xsl:with-param name=""replace-by"" select=""' '"" /> + | </xsl:call-template> + | </xsl:variable> + | + | <ValueListType xmlns=""http://v8.1c.ru/8.1/data/core"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""ValueListType""> + | <valueType/> + | + | <xsl:for-each select=""str:tokenize($source, ' ')"" > + | <xsl:if test=""contains(., '=')""> + | + | <item> + | <value xsi:type=""xs:string""> + | <xsl:call-template name=""str-replace-all""> + | <xsl:with-param name=""str"" select=""substring-after(., '=')"" /> + | <xsl:with-param name=""search-for"" select=""' '"" /> + | <xsl:with-param name=""replace-by"" select=""' '"" /> + | </xsl:call-template> + | </value> + | <presentation> + | <xsl:call-template name=""str-trim-left""> + | <xsl:with-param name=""str"" select=""substring-before(., '=')"" /> + | </xsl:call-template> + | </presentation> + | </item> + | + | </xsl:if> + | </xsl:for-each> + | + | </ValueListType > + | + | </xsl:template> + | + |</xsl:stylesheet> + |"); + + Возврат Преобразователь; +КонецФункции + +// Преобразует список значений в строку пар ключ=значение, разделенных переносом строки +// +// Результат преобразования - строка результата +// +Функция XSLT_СписокЗначенийВСтрокуКлючЗначение() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:tns=""http://v8.1c.ru/8.1/data/core"" + |> + |<xsl:output method=""text"" encoding=""utf-8""/> + |" + XSLT_ШаблоныСтроковыхФункций() + " + | + | <xsl:template match=""/""> + | <xsl:apply-templates select=""//tns:ValueListType/tns:item"" /> + | </xsl:template> + | + | <xsl:template match=""//tns:ValueListType/tns:item""> + | + | <xsl:call-template name=""str-trim-all""> + | <xsl:with-param name=""str"" select=""tns:presentation"" /> + | </xsl:call-template> + | <xsl:text/>=<xsl:text/> + | + | <xsl:call-template name=""str-replace-all""> + | <xsl:with-param name=""str"" select=""tns:value"" /> + | <xsl:with-param name=""search-for"" select=""' '"" /> + | <xsl:with-param name=""replace-by"" select=""' '"" /> + | </xsl:call-template> + | + | <xsl:if test=""position()!=last()""> + | <xsl:text/> + | <xsl:value-of select=""' '""/> + | <xsl:text/> + | </xsl:if> + | </xsl:template> + | + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Преобразует структуру в строку пар ключ=значение, разделенных переносом строки +// +// Результат преобразования - строка результата +// +Функция XSLT_СтруктураВСтрокуКлючЗначение() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:tns=""http://v8.1c.ru/8.1/data/core"" + |> + |<xsl:output method=""text"" encoding=""utf-8""/> + |" + XSLT_ШаблоныСтроковыхФункций() + " + | + | <xsl:template match=""/""> + | <xsl:apply-templates select=""//tns:Structure/tns:Property"" /> + | </xsl:template> + | + | <xsl:template match=""//tns:Property""> + | + | <xsl:value-of select=""@name"" /> + | <xsl:text/>=<xsl:text/> + | + | <xsl:call-template name=""str-replace-all""> + | <xsl:with-param name=""str"" select=""tns:Value"" /> + | <xsl:with-param name=""search-for"" select=""' '"" /> + | <xsl:with-param name=""replace-by"" select=""' '"" /> + | </xsl:call-template> + | + | <xsl:if test=""position()!=last()""> + | <xsl:text/> + | <xsl:value-of select=""' '""/> + | <xsl:text/> + | </xsl:if> + | </xsl:template> + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Преобразует список значений в структуру. Представление преобразуется в ключ +// +// Результат преобразования - сериализованная структура +// +Функция XSLT_СписокЗначенийВСтруктуру() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" + | xmlns:tns=""http://v8.1c.ru/8.1/data/core"" + | xmlns=""http://v8.1c.ru/8.1/data/core"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + |" + XSLT_ШаблоныСтроковыхФункций() + " + | + | <xsl:template match=""/""> + | <Structure xmlns=""http://v8.1c.ru/8.1/data/core"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""Structure""> + | <xsl:apply-templates select=""//tns:ValueListType/tns:item"" /> + | </Structure > + | </xsl:template> + | + | <xsl:template match=""//tns:ValueListType/tns:item""> + | <xsl:element name=""Property""> + | <xsl:attribute name=""name""> + | <xsl:call-template name=""str-trim-all""> + | <xsl:with-param name=""str"" select=""tns:presentation"" /> + | </xsl:call-template> + | </xsl:attribute> + | + | <xsl:element name=""Value""> + | <xsl:attribute name=""xsi:type""> + | <xsl:value-of select=""tns:value/@xsi:type""/> + | </xsl:attribute> + | <xsl:value-of select=""tns:value""/> + | </xsl:element> + | + | </xsl:element> + |</xsl:template> + | + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Преобразует структуру в список значений. Ключ преобразуется в представление. +// +// Результат преобразования - сериализованный список значений +// +Функция XSLT_СтруктураВСписокЗначений() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" + | xmlns:tns=""http://v8.1c.ru/8.1/data/core"" + | xmlns=""http://v8.1c.ru/8.1/data/core"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + |" + XSLT_ШаблоныСтроковыхФункций() + " + | + | <xsl:template match=""/""> + | <ValueListType xmlns=""http://v8.1c.ru/8.1/data/core"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""ValueListType""> + | <valueType/> + | <xsl:apply-templates select=""//tns:Structure/tns:Property"" /> + | </ValueListType> + | </xsl:template> + | + | <xsl:template match=""//tns:Property""> + | <item> + | <value xsi:type=""xs:string""> + | <xsl:value-of select=""tns:Value"" /> + | </value> + | <presentation> + | <xsl:value-of select=""@name"" /> + | </presentation> + | </item> + | </xsl:template> + | + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Преобразует соответствие в структуру. Ключ преобразуется в ключ, значение - в значение +// +// Результат преобразования - сериализованная структура +// +Функция XSLT_СоответствиеВСтруктуру() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" + | xmlns:tns=""http://v8.1c.ru/8.1/data/core"" + | xmlns=""http://v8.1c.ru/8.1/data/core"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + |" + XSLT_ШаблоныСтроковыхФункций() + " + | + | <xsl:template match=""/""> + | <Structure xmlns=""http://v8.1c.ru/8.1/data/core"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""Structure""> + | <xsl:apply-templates select=""//tns:Map/tns:pair"" /> + | </Structure > + | </xsl:template> + | + | <xsl:template match=""//tns:Map/tns:pair""> + | <xsl:element name=""Property""> + | <xsl:attribute name=""name""> + | <xsl:call-template name=""str-trim-all""> + | <xsl:with-param name=""str"" select=""tns:Key"" /> + | </xsl:call-template> + | </xsl:attribute> + | + | <xsl:element name=""Value""> + | <xsl:attribute name=""xsi:type""> + | <xsl:value-of select=""tns:Value/@xsi:type""/> + | </xsl:attribute> + | <xsl:value-of select=""tns:Value""/> + | </xsl:element> + | + | </xsl:element> + | </xsl:template> + | + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Убирает описание <?xml...> для включения внутрь другого XML +// +Функция XSLT_УдалитьОписаниеXML() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform""> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + | <xsl:template match=""node() | @*""> + | <xsl:copy> + | <xsl:apply-templates select=""node() | @*"" /> + | </xsl:copy> + | </xsl:template> + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Преобразует контактную информацию в виде XML (см пакет XDTO КонтактнаяИнформация) в перечисление ТипКонтакнойИнформации +// +// Результат преобразования - сериализованное значение перечисления +// +Функция XSLT_ТипКонтактнойИнформацииПоСтрокеXML() Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" + | xmlns:ci=""http://www.v8.1c.ru/ssl/contactinfo"" + |> + | <xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + | + | <xsl:template match=""/""> + | <EnumRef.ТипыКонтактнойИнформации xmlns=""http://v8.1c.ru/8.1/data/enterprise/current-config"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:type=""EnumRef.ТипыКонтактнойИнформации""> + | <xsl:call-template name=""enum-by-type"" > + | <xsl:with-param name=""type"" select=""ci:КонтактнаяИнформация/ci:Состав/@xsi:type"" /> + | </xsl:call-template> + | </EnumRef.ТипыКонтактнойИнформации> + | </xsl:template> + | + | <xsl:template name=""enum-by-type""> + | <xsl:param name=""type"" /> + | <xsl:choose> + | <xsl:when test=""$type='Адрес'""> + | <xsl:text>Адрес</xsl:text> + | </xsl:when> + | <xsl:when test=""$type='НомерТелефона'""> + | <xsl:text>Телефон</xsl:text> + | </xsl:when> + | <xsl:when test=""$type='НомерФакса'""> + | <xsl:text>Факс</xsl:text> + | </xsl:when> + | <xsl:when test=""$type='ЭлектроннаяПочта'""> + | <xsl:text>АдресЭлектроннойПочты</xsl:text> + | </xsl:when> + | <xsl:when test=""$type='ВебСайт'""> + | <xsl:text>ВебСтраница</xsl:text> + | </xsl:when> + | <xsl:when test=""$type='Прочее'""> + | <xsl:text>Другое</xsl:text> + | </xsl:when> + | </xsl:choose> + | </xsl:template> + | + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Преобразует таблицу различий XML в зависимости от типа контактной информации +// +// Параметры: +// ТипКонтактнойИнформации - значение или имя перечисления +// +// Результат преобразования - сериализованный ValueTable (http://v8.1c.ru/8.1/data/core), в котором три колонки: +// - Путь - строка - путь к месту различия +// - Описание - строка - описание отличающегося реквизита в терминах предметной области +// - Значение1 - строка - значение из первого XML +// - Значение2 - строка - значение из второго XML +// +Функция XSLT_ИнтерпретацияРазличияXMLКонтактнойИнформации(Знач ТипКонтактнойИнформации) Экспорт + + Если ТипЗнч(ТипКонтактнойИнформации)<>Тип("Строка") Тогда + ТипКонтактнойИнформации = ТипКонтактнойИнформации.Метаданные().Имя; + КонецЕсли; + + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" + | xmlns:ci=""http://www.v8.1c.ru/ssl/contactinfo"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + | <xsl:param name=""target-type"" select=""'" + ТипКонтактнойИнформации + "'""/> + | + | <xsl:template match=""/""> + | <xsl:choose> + | <xsl:when test=""$target-type='Адрес'""> + | <xsl:apply-templates select=""."" mode=""action-address""/> + | </xsl:when> + | <xsl:otherwise> + | <xsl:apply-templates select=""."" mode=""action-copy""/> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:template> + | + | <xsl:template match=""node() | @*"" mode=""action-copy""> + | <xsl:copy> + | <xsl:apply-templates select=""node() | @*"" mode=""action-copy""/> + | </xsl:copy> + | </xsl:template> + | + | <xsl:template match=""node() | @*"" mode=""action-address""> + | <xsl:copy> + | <xsl:apply-templates select=""node() | @*"" mode=""action-address""/> + | </xsl:copy> + | </xsl:template> + | + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Преобразует сериализованную структуру в контактную информацию в виде XML +// +Функция XSLT_СтруктураВАдрес() Экспорт + + КодыДопАдрЭл = Новый ТекстовыйДокумент; + Для Каждого ДопАдрЭл Из КонтактнаяИнформацияКлиентСерверПовтИсп.ТипыОбъектовАдресацииАдресаРФ() Цикл + КодыДопАдрЭл.ДобавитьСтроку("<data:item data:title=""" + ДопАдрЭл.Наименование + """>" + ДопАдрЭл.Код + "</data:item>"); + КонецЦикла; + + КодыРегионов = Новый ТекстовыйДокумент; + ВсеРегионы = КонтактнаяИнформацияСлужебный.ВсеРегионы(); + Если ВсеРегионы<>Неопределено Тогда + Для Каждого Строка Из ВсеРегионы Цикл + КодыРегионов.ДобавитьСтроку("<data:item data:code=""" + Формат(Строка.Код, "ЧН=; ЧГ=") + """>" + Строка.Представление + "</data:item>"); + КонецЦикла; + КонецЕсли; + + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" + | xmlns:tns=""http://v8.1c.ru/8.1/data/core"" + | xmlns=""http://www.v8.1c.ru/ssl/contactinfo"" + | + | xmlns:data=""http://www.v8.1c.ru/ssl/contactinfo"" + | + | xmlns:exsl=""http://exslt.org/common"" + | extension-element-prefixes=""exsl"" + | exclude-result-prefixes=""data"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + | " + XSLT_ШаблоныСтроковыхФункций() + " + | + | <xsl:variable name=""local-сountry"">РОССИЯ</xsl:variable> + | + | <xsl:variable name=""presentation"" select=""tns:Structure/tns:Property[@name='Представление']/tns:Value/text()"" /> + | + | <xsl:template match=""/""> + | <xsl:element name=""КонтактнаяИнформация""> + | + | <xsl:attribute name=""Представление""> + | <xsl:value-of select=""$presentation""/> + | </xsl:attribute> + | <xsl:element name=""Комментарий""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Комментарий']/tns:Value/text()""/> + | </xsl:element> + | + | <xsl:element name=""Состав""> + | <xsl:attribute name=""xsi:type"">Адрес</xsl:attribute> + | <xsl:variable name=""country"" select=""tns:Structure/tns:Property[@name='Страна']/tns:Value/text()""></xsl:variable> + | <xsl:variable name=""country-upper""> + | <xsl:call-template name=""str-upper""> + | <xsl:with-param name=""str"" select=""$country"" /> + | </xsl:call-template> + | </xsl:variable> + | + | <xsl:attribute name=""Страна""> + | <xsl:choose> + | <xsl:when test=""0=count($country)""> + | <xsl:value-of select=""$local-сountry"" /> + | </xsl:when> + | <xsl:otherwise> + | <xsl:value-of select=""$country"" /> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:attribute> + | + | <xsl:choose> + | <xsl:when test=""0=count($country)""> + | <xsl:apply-templates select=""/"" mode=""domestic"" /> + | </xsl:when> + | <xsl:when test=""$country-upper=$local-сountry""> + | <xsl:apply-templates select=""/"" mode=""domestic"" /> + | </xsl:when> + | <xsl:otherwise> + | <xsl:apply-templates select=""/"" mode=""foreign"" /> + | </xsl:otherwise> + | </xsl:choose> + | + | </xsl:element> + | </xsl:element> + | </xsl:template> + | + | <xsl:template match=""/"" mode=""foreign""> + | <xsl:element name=""Состав""> + | <xsl:attribute name=""xsi:type"">xs:string</xsl:attribute> + | + | <xsl:variable name=""value"" select=""tns:Structure/tns:Property[@name='Значение']/tns:Value/text()"" /> + | <xsl:choose> + | <xsl:when test=""0=count($value)""> + | <xsl:value-of select=""$presentation"" /> + | </xsl:when> + | <xsl:otherwise> + | <xsl:value-of select=""$value"" /> + | </xsl:otherwise> + | </xsl:choose> + | + | </xsl:element> + | </xsl:template> + | + | <xsl:template match=""/"" mode=""domestic""> + | <xsl:element name=""Состав""> + | <xsl:attribute name=""xsi:type"">АдресРФ</xsl:attribute> + | + | <xsl:element name=""СубъектРФ""> + | <xsl:variable name=""value"" select=""tns:Structure/tns:Property[@name='Регион']/tns:Value/text()"" /> + | + | <xsl:choose> + | <xsl:when test=""0=count($value)""> + | <xsl:variable name=""regioncode"" select=""tns:Structure/tns:Property[@name='КодРегиона']/tns:Value/text()""/> + | <xsl:variable name=""regiontitle"" select=""$enum-regioncode-nodes/data:item[@data:code=number($regioncode)]"" /> + | <xsl:if test=""0!=count($regiontitle)""> + | <xsl:value-of select=""$regiontitle""/> + | </xsl:if> + | </xsl:when> + | <xsl:otherwise> + | <xsl:value-of select=""$value"" /> + | </xsl:otherwise> + | </xsl:choose> + | + | </xsl:element> + | + | <xsl:element name=""СвРайМО""> + | <xsl:element name=""Район""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Район']/tns:Value/text()""/> + | </xsl:element> + | </xsl:element> + | + | <xsl:element name=""Город""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Город']/tns:Value/text()""/> + | </xsl:element> + | + | <xsl:element name=""НаселПункт""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='НаселенныйПункт']/tns:Value/text()""/> + | </xsl:element> + | + | <xsl:element name=""Улица""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Улица']/tns:Value/text()""/> + | </xsl:element> + | + | <xsl:variable name=""index"" select=""tns:Structure/tns:Property[@name='Индекс']/tns:Value/text()"" /> + | <xsl:if test=""0!=count($index)""> + | <xsl:element name=""ДопАдрЭл""> + | <xsl:attribute name=""ТипАдрЭл"">" + КонтактнаяИнформацияКлиентСерверПовтИсп.КодСериализацииПочтовогоИндекса() + "</xsl:attribute> + | <xsl:attribute name=""Значение""><xsl:value-of select=""$index""/></xsl:attribute> + | </xsl:element> + | </xsl:if> + | + | <xsl:call-template name=""add-elem-number""> + | <xsl:with-param name=""source"" select=""tns:Structure/tns:Property[@name='ТипДома']/tns:Value/text()"" /> + | <xsl:with-param name=""value"" select=""tns:Structure/tns:Property[@name='Дом']/tns:Value/text()"" /> + | </xsl:call-template> + | + | <xsl:call-template name=""add-elem-number""> + | <xsl:with-param name=""source"" select=""tns:Structure/tns:Property[@name='ТипКорпуса']/tns:Value/text()"" /> + | <xsl:with-param name=""value"" select=""tns:Structure/tns:Property[@name='Корпус']/tns:Value/text()"" /> + | </xsl:call-template> + | + | <xsl:call-template name=""add-elem-number""> + | <xsl:with-param name=""source"" select=""tns:Structure/tns:Property[@name='ТипКвартиры']/tns:Value/text()"" /> + | <xsl:with-param name=""value"" select=""tns:Structure/tns:Property[@name='Квартира']/tns:Value/text()"" /> + | </xsl:call-template> + | + | </xsl:element> + | </xsl:template> + | + | <xsl:param name=""enum-codevalue""> + |" + КодыДопАдрЭл.ПолучитьТекст() + " + | </xsl:param> + | <xsl:variable name=""enum-codevalue-nodes"" select=""exsl:node-set($enum-codevalue)"" /> + | + | <xsl:param name=""enum-regioncode""> + |" + КодыРегионов.ПолучитьТекст() + " + | </xsl:param> + | <xsl:variable name=""enum-regioncode-nodes"" select=""exsl:node-set($enum-regioncode)"" /> + | + | <xsl:template name=""add-elem-number""> + | <xsl:param name=""source"" /> + | <xsl:param name=""value"" /> + | + | <xsl:if test=""0!=count($source)""> + | <xsl:variable name=""type-code"" select=""$enum-codevalue-nodes/data:item[@data:title=$source]"" /> + | <xsl:if test=""0!=count($type-code)""> + | <xsl:element name=""ДопАдрЭл""> + | <xsl:element name=""Номер""> + | <xsl:attribute name=""Тип""><xsl:value-of select=""$type-code"" /></xsl:attribute> + | <xsl:attribute name=""Значение""><xsl:value-of select=""$value""/></xsl:attribute> + | </xsl:element> + | </xsl:element> + | </xsl:if> + | </xsl:if> + | + | </xsl:template> + | + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Преобразует сериализованную структуру в контактную информацию в виде XML +// +Функция XSLT_СтруктураВАдресЭлектроннойПочты() Экспорт + Возврат XSLT_СтруктураВСтроковыйСостав("ЭлектроннаяПочта"); +КонецФункции + +// Преобразует сериализованную структуру в контактную информацию в виде XML +// +Функция XSLT_СтруктураВВебСтраницу() Экспорт + Возврат XSLT_СтруктураВСтроковыйСостав("ВебСайт"); +КонецФункции + +// Преобразует сериализованную структуру в контактную информацию в виде XML +// +Функция XSLT_СтруктураВТелефон() Экспорт + Возврат XSLT_СтруктураВТелефонФакс("НомерТелефона"); +КонецФункции + +// Преобразует сериализованную структуру в контактную информацию в виде XML +// +Функция XSLT_СтруктураВФакс() Экспорт + Возврат XSLT_СтруктураВТелефонФакс("НомерФакса"); +КонецФункции + +// Преобразует сериализованную структуру в контактную информацию в виде XML +// +Функция XSLT_СтруктураВДругое() Экспорт + Возврат XSLT_СтруктураВСтроковыйСостав("Прочее"); +КонецФункции + +// Общее преобразование сериализованной структуры в контактную информацию в виде XML простого типа +Функция XSLT_СтруктураВСтроковыйСостав(Знач ИмяXDTOТипа) + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" + | xmlns:tns=""http://v8.1c.ru/8.1/data/core"" + | xmlns=""http://www.v8.1c.ru/ssl/contactinfo"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + | + |<xsl:template match=""/""> + | + | <xsl:element name=""КонтактнаяИнформация""> + | + | <xsl:attribute name=""Представление""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Представление']/tns:Value/text()""/> + | </xsl:attribute> + | <xsl:element name=""Комментарий""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Комментарий']/tns:Value/text()""/> + | </xsl:element> + | + | <xsl:element name=""Состав""> + | <xsl:attribute name=""xsi:type"">" + ИмяXDTOТипа + "</xsl:attribute> + | <xsl:attribute name=""Значение""> + | <xsl:choose> + | <xsl:when test=""0=count(tns:Structure/tns:Property[@name='Значение'])""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Представление']/tns:Value/text()""/> + | </xsl:when> + | <xsl:otherwise> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Значение']/tns:Value/text()""/> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:attribute> + | + | </xsl:element> + | </xsl:element> + | + |</xsl:template> + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +// Общее преобразование для телефона и факса +Функция XSLT_СтруктураВТелефонФакс(Знач ИмяXDTOТипа) Экспорт + Преобразователь = Новый ПреобразованиеXSL; + Преобразователь.ЗагрузитьИзСтроки(" + |<xsl:stylesheet version=""1.0"" xmlns:xsl=""http://www.w3.org/1999/XSL/Transform"" + | xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" + | xmlns:tns=""http://v8.1c.ru/8.1/data/core"" + | xmlns=""http://www.v8.1c.ru/ssl/contactinfo"" + |> + |<xsl:output method=""xml"" omit-xml-declaration=""yes"" indent=""yes"" encoding=""utf-8""/> + | <xsl:template match=""/""> + | + | <xsl:element name=""КонтактнаяИнформация""> + | + | <xsl:attribute name=""Представление""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Представление']/tns:Value/text()""/> + | </xsl:attribute> + | <xsl:element name=""Комментарий""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Комментарий']/tns:Value/text()""/> + | </xsl:element> + | <xsl:element name=""Состав""> + | <xsl:attribute name=""xsi:type"">" + ИмяXDTOТипа + "</xsl:attribute> + | + | <xsl:attribute name=""КодСтраны""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='КодСтраны']/tns:Value/text()""/> + | </xsl:attribute> + | <xsl:attribute name=""КодГорода""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='КодГорода']/tns:Value/text()""/> + | </xsl:attribute> + | <xsl:attribute name=""Номер""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='НомерТелефона']/tns:Value/text()""/> + | </xsl:attribute> + | <xsl:attribute name=""Добавочный""> + | <xsl:value-of select=""tns:Structure/tns:Property[@name='Добавочный']/tns:Value/text()""/> + | </xsl:attribute> + | + | </xsl:element> + | </xsl:element> + | + | </xsl:template> + |</xsl:stylesheet> + |"); + Возврат Преобразователь; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Библиотечные методы для XSL транформаций. Предназначено для имитации <xsl:include href="..."/> +// + +// Фрагмент XSL с процедурами для обработки строк +Функция XSLT_ШаблоныСтроковыхФункций() + Возврат " + |<!-- string functions --> + | + | <xsl:template name=""str-trim-left""> + | <xsl:param name=""str"" /> + | <xsl:variable name=""head"" select=""substring($str, 1, 1)""/> + | <xsl:variable name=""tail"" select=""substring($str, 2)""/> + | <xsl:choose> + | <xsl:when test=""(string-length($str) > 0) and (string-length(normalize-space($head)) = 0)""> + | <xsl:call-template name=""str-trim-left""> + | <xsl:with-param name=""str"" select=""$tail""/> + | </xsl:call-template> + | </xsl:when> + | <xsl:otherwise> + | <xsl:value-of select=""$str""/> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:template> + | + | <xsl:template name=""str-trim-right""> + | <xsl:param name=""str"" /> + | <xsl:variable name=""head"" select=""substring($str, 1, string-length($str) - 1)""/> + | <xsl:variable name=""tail"" select=""substring($str, string-length($str))""/> + | <xsl:choose> + | <xsl:when test=""(string-length($str) > 0) and (string-length(normalize-space($tail)) = 0)""> + | <xsl:call-template name=""str-trim-right""> + | <xsl:with-param name=""str"" select=""$head""/> + | </xsl:call-template> + | </xsl:when> + | <xsl:otherwise> + | <xsl:value-of select=""$str""/> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:template> + | + | <xsl:template name=""str-trim-all""> + | <xsl:param name=""str"" /> + | <xsl:call-template name=""str-trim-right""> + | <xsl:with-param name=""str""> + | <xsl:call-template name=""str-trim-left""> + | <xsl:with-param name=""str"" select=""$str""/> + | </xsl:call-template> + | </xsl:with-param> + | </xsl:call-template> + | </xsl:template> + | + | <xsl:template name=""str-replace-all""> + | <xsl:param name=""str"" /> + | <xsl:param name=""search-for"" /> + | <xsl:param name=""replace-by"" /> + | <xsl:choose> + | <xsl:when test=""contains($str, $search-for)""> + | <xsl:value-of select=""substring-before($str, $search-for)"" /> + | <xsl:value-of select=""$replace-by"" /> + | <xsl:call-template name=""str-replace-all""> + | <xsl:with-param name=""str"" select=""substring-after($str, $search-for)"" /> + | <xsl:with-param name=""search-for"" select=""$search-for"" /> + | <xsl:with-param name=""replace-by"" select=""$replace-by"" /> + | </xsl:call-template> + | </xsl:when> + | <xsl:otherwise> + | <xsl:value-of select=""$str"" /> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:template> + | + | <xsl:param name=""alpha-low"" select=""'абвгдеёжзийклмнопрстуфхцчшщыъьэюяabcdefghijklmnopqrstuvwxyz'"" /> + | <xsl:param name=""alpha-up"" select=""'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЫЪЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZ'"" /> + | + | <xsl:template name=""str-upper""> + | <xsl:param name=""str"" /> + | <xsl:value-of select=""translate($str, $alpha-low, $alpha-up)""/> + | </xsl:template> + | + | <xsl:template name=""str-lower""> + | <xsl:param name=""str"" /> + | <xsl:value-of select=""translate($str, alpha-up, $alpha-low)"" /> + | </xsl:template> + | + |<!-- /string functions --> + |"; +КонецФункции + +// Фрагмент XSL с процедурами для работы с xpath +Функция XSLT_ШаблоныФункцийXPath() + Возврат " + |<!-- path functions --> + | + | <xsl:template name=""build-path""> + | <xsl:variable name=""node"" select="".""/> + | + | <xsl:for-each select=""$node | $node/ancestor-or-self::node()[..]""> + | <xsl:choose> + | <!-- element --> + | <xsl:when test=""self::*""> + | <xsl:value-of select=""'/'""/> + | <xsl:value-of select=""name()""/> + | <xsl:variable name=""thisPosition"" select=""count(preceding-sibling::*[name(current()) = name()])""/> + | <xsl:variable name=""numFollowing"" select=""count(following-sibling::*[name(current()) = name()])""/> + | <xsl:if test=""$thisPosition + $numFollowing > 0""> + | <xsl:value-of select=""concat('[', $thisPosition +1, ']')""/> + | </xsl:if> + | </xsl:when> + | <xsl:otherwise> + | <!-- not element --> + | <xsl:choose> + | <!-- attribute --> + | <xsl:when test=""count(. | ../@*) = count(../@*)""> + | <xsl:value-of select=""'/'""/> + | <xsl:value-of select=""concat('@',name())""/> + | </xsl:when> + | <!-- text- --> + | <xsl:when test=""self::text()""> + | <xsl:value-of select=""'/'""/> + | <xsl:value-of select=""'text()'""/> + | <xsl:variable name=""thisPosition"" select=""count(preceding-sibling::text())""/> + | <xsl:variable name=""numFollowing"" select=""count(following-sibling::text())""/> + | <xsl:if test=""$thisPosition + $numFollowing > 0""> + | <xsl:value-of select=""concat('[', $thisPosition +1, ']')""/> + | </xsl:if> + | </xsl:when> + | <!-- processing instruction --> + | <xsl:when test=""self::processing-instruction()""> + | <xsl:value-of select=""'/'""/> + | <xsl:value-of select=""'processing-instruction()'""/> + | <xsl:variable name=""thisPosition"" select=""count(preceding-sibling::processing-instruction())""/> + | <xsl:variable name=""numFollowing"" select=""count(following-sibling::processing-instruction())""/> + | <xsl:if test=""$thisPosition + $numFollowing > 0""> + | <xsl:value-of select=""concat('[', $thisPosition +1, ']')""/> + | </xsl:if> + | </xsl:when> + | <!-- comment --> + | <xsl:when test=""self::comment()""> + | <xsl:value-of select=""'/'""/> + | <xsl:value-of select=""'comment()'""/> + | <xsl:variable name=""thisPosition"" select=""count(preceding-sibling::comment())""/> + | <xsl:variable name=""numFollowing"" select=""count(following-sibling::comment())""/> + | <xsl:if test=""$thisPosition + $numFollowing > 0""> + | <xsl:value-of select=""concat('[', $thisPosition +1, ']')""/> + | </xsl:if> + | </xsl:when> + | <!-- namespace --> + | <xsl:when test=""count(. | ../namespace::*) = count(../namespace::*)""> + | <xsl:variable name=""ap"">'</xsl:variable> + | <xsl:value-of select=""'/'""/> + | <xsl:value-of select=""concat('namespace::*','[local-name() = ', $ap, local-name(), $ap, ']')""/> + | </xsl:when> + | </xsl:choose> + | </xsl:otherwise> + | </xsl:choose> + | </xsl:for-each> + | + | </xsl:template> + | + |<!-- /path functions --> + |"; +КонецФункции + diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/КонтактнаяИнформацияСлужебныйПовтИсп.mdo b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/КонтактнаяИнформацияСлужебныйПовтИсп.mdo new file mode 100644 index 000000000..8294702e4 --- /dev/null +++ b/SSL/src/CommonModules/КонтактнаяИнформацияСлужебныйПовтИсп/КонтактнаяИнформацияСлужебныйПовтИсп.mdo @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="cce4c615-dc29-42b3-9d3d-b277dde4a2e4"> + <name>КонтактнаяИнформацияСлужебныйПовтИсп</name> + <synonym> + <key>ru</key> + <value>Контактная информация служебный повт исп</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> + <returnValuesReuse>DuringSession</returnValuesReuse> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/КурсыВалютСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/КурсыВалютСлужебныйВМоделиСервиса/Module.bsl index e3ebea543..d2523e8b3 100644 --- a/SSL/src/CommonModules/КурсыВалютСлужебныйВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/КурсыВалютСлужебныйВМоделиСервиса/Module.bsl @@ -162,7 +162,6 @@ Обработчик = Обработчики.Добавить(); Обработчик.Версия = "2.1.1.7"; Обработчик.Процедура = "КурсыВалютСлужебныйВМоделиСервиса.ПреобразованиеСвязейВалют"; - Обработчик.Опциональный = Истина; КонецПроцедуры @@ -184,7 +183,7 @@ НайденнаяСтрока = КлассификаторТаблица.Найти(Валюта.Код, "Code"); Если НайденнаяСтрока <> Неопределено И НайденнаяСтрока.RBCLoading = "истина" Тогда Валюта.ЗагружаетсяИзИнтернета = Истина; - Валюта.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Валюта); КонецЕсли; КонецЦикла; diff --git a/SSL/src/CommonModules/НапоминанияПользователяГлобальный/Module.bsl b/SSL/src/CommonModules/НапоминанияПользователяГлобальный/Module.bsl index a96d560ba..2b6d9806b 100644 --- a/SSL/src/CommonModules/НапоминанияПользователяГлобальный/Module.bsl +++ b/SSL/src/CommonModules/НапоминанияПользователяГлобальный/Module.bsl @@ -28,7 +28,7 @@ Если НапоминанияПользователяКлиент.ПолучитьТекущиеОповещения(ВремяБлижайшего).Количество() > 0 Тогда НапоминанияПользователяКлиент.ОткрытьФормуОповещения(); ИначеЕсли ЗначениеЗаполнено(ВремяБлижайшего) Тогда - ИнтервалСледующейПроверки = Мин(ВремяБлижайшего - ОбщегоНазначенияКлиент.ДатаСеанса(), ИнтервалСледующейПроверки); + ИнтервалСледующейПроверки = Макс(Мин(ВремяБлижайшего - ОбщегоНазначенияКлиент.ДатаСеанса(), ИнтервалСледующейПроверки), 1); КонецЕсли; ПодключитьОбработчикОжидания("ПроверитьТекущиеНапоминания", ИнтервалСледующейПроверки, Истина); diff --git a/SSL/src/CommonModules/НапоминанияПользователяСлужебный/Module.bsl b/SSL/src/CommonModules/НапоминанияПользователяСлужебный/Module.bsl index 3c5d3d2f0..005453ce8 100644 --- a/SSL/src/CommonModules/НапоминанияПользователяСлужебный/Module.bsl +++ b/SSL/src/CommonModules/НапоминанияПользователяСлужебный/Module.bsl @@ -362,8 +362,7 @@ "ИнтервалПроверкиНапоминаний", 1, , - ПолучитьИмяПользователяИБ(Пользователь) - ); + ПолучитьИмяПользователяИБ(Пользователь)); Возврат Макс(Интервал, 1); КонецФункции diff --git a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl index 92f95193a..5dc3b9036 100644 --- a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервиса/Module.bsl @@ -80,8 +80,7 @@ Попытка ОбменСообщениями.ОтправитьСообщение("ОбменДанными\УправляющееПриложение\ПризнакИзмененияДанных", Новый Структура("КодУзла", ОбменДаннымиСервер.КодУзлаПланаОбменаСтрокой(ОбластьДанных)), - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса() - ); + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); Константы.ЗарегистрированыИзмененияДанных.Установить(Истина); @@ -248,8 +247,7 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не определена конечная точка корреспондента для адреса ""%1"".'"), - Выборка2.Адрес - ); + Выборка2.Адрес); КонецЕсли; Запись = Новый Структура; @@ -385,6 +383,10 @@ // Процедура ПеренестиДанныеСостоянийОбменаДанными() Экспорт + Если ОбменДаннымиПовтИсп.РазделенныеПланыОбменаБСП().Количество() = 0 Тогда + Возврат; + КонецЕсли; + // Обработка регистров СостоянияОбменовДанными и СостоянияОбменовДаннымиОбластейДанных НачатьТранзакцию(); Попытка @@ -503,8 +505,7 @@ Если ПустаяСтрока(Каталог) Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Неправильный формат каталога обмена информацией ""%1"".'"), - Каталог - ); + Каталог); КонецЕсли; Разделитель = "/"; @@ -516,8 +517,7 @@ Если Найти(Каталог, Разделитель) = 0 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Неправильный формат каталога обмена информацией ""%1"".'"), - Каталог - ); + Каталог); КонецЕсли; КонецЕсли; @@ -527,8 +527,7 @@ Если Каталоги.Количество() = 0 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Неправильный формат каталога обмена информацией ""%1"".'"), - Каталог - ); + Каталог); КонецЕсли; Результат = Каталоги[Каталоги.ВГраница()]; @@ -538,8 +537,7 @@ Если Каталоги.Количество() = 1 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Неправильный формат каталога обмена информацией ""%1"".'"), - Каталог - ); + Каталог); КонецЕсли; Результат = Каталоги[Каталоги.ВГраница() - 1]; @@ -788,13 +786,14 @@ УстановитьПривилегированныйРежим(Истина); - Параметры.Вставить("СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботы", + Параметры.Вставить("ЭтоАвтономноеРабочееМесто", + АвтономнаяРаботаСлужебный.ЭтоАвтономноеРабочееМесто()); + Параметры.Вставить("СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботы", АвтономнаяРаботаСлужебный.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботы()); - Параметры.Вставить("СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботы", + Параметры.Вставить("СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботы", АвтономнаяРаботаСлужебный.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботы()); - Параметры.Вставить("ОткрытьПомощникНастройкиАвтономногоРабочегоМеста", + Параметры.Вставить("ОткрытьПомощникНастройкиАвтономногоРабочегоМеста", АвтономнаяРаботаСлужебный.ОткрытьПомощникНастройкиАвтономногоРабочегоМеста()); - КонецПроцедуры // Заполняет структуру параметров, необходимых для работы клиентского кода @@ -867,8 +866,7 @@ УдалитьФайлы(ФайлСообщения.ПолноеИмя); Исключение ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Продолжить; КонецПопытки; КонецЕсли; @@ -990,8 +988,7 @@ Процедура ВыполнитьВыгрузкуДанных(Отказ, Знач Корреспондент) Экспорт ОбменДаннымиСервер.ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы( - Отказ, Корреспондент, Перечисления.ДействияПриОбмене.ВыгрузкаДанных - ); + Отказ, Корреспондент, Перечисления.ДействияПриОбмене.ВыгрузкаДанных); КонецПроцедуры // Выполняет загрузку данных в обмене между областями данных. @@ -1003,8 +1000,7 @@ Процедура ВыполнитьЗагрузкуДанных(Отказ, Знач Корреспондент) Экспорт ОбменДаннымиСервер.ВыполнитьДействиеОбменаДляУзлаИнформационнойБазы( - Отказ, Корреспондент, Перечисления.ДействияПриОбмене.ЗагрузкаДанных - ); + Отказ, Корреспондент, Перечисления.ДействияПриОбмене.ЗагрузкаДанных); КонецПроцедуры // @@ -1061,8 +1057,7 @@ Иначе ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Неизвестное действие ""%1"" при обмене данными между областями данных.'"), - СтрокаСценария.ВыполняемоеДействие - ); + СтрокаСценария.ВыполняемоеДействие); КонецЕсли; // Переходим к следующему шагу сценария @@ -1136,8 +1131,7 @@ Иначе ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Неизвестное действие ""%1"" при обмене данными между областями данных.'"), - СтрокаСценария.ВыполняемоеДействие - ); + СтрокаСценария.ВыполняемоеДействие); КонецЕсли; // Завершение выполнения сценария @@ -1459,8 +1453,7 @@ СтрокаСообщения = НСтр("ru = 'Ошибка назначения кода узла корреспондента. |Назначенное значение ""%1"" - |Фактическое значение ""%2"".'" - ); + |Фактическое значение ""%2"".'"); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, КодКорреспондента, ФактическийКодКорреспондента); ВызватьИсключение СтрокаСообщения; КонецЕсли; @@ -1494,8 +1487,7 @@ FILEАбсолютныйКаталогОбменаИнформацией = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( FILEОбщийКаталогОбменаИнформацией, - FILEОтносительныйКаталогОбменаИнформацией - ); + FILEОтносительныйКаталогОбменаИнформацией); АбсолютныйКаталог = Новый Файл(FILEАбсолютныйКаталогОбменаИнформацией); Если Не АбсолютныйКаталог.Существует() Тогда @@ -1551,8 +1543,7 @@ СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Строка(Сообщение.Body.SessionId), Представление); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСессииОбменаСообщениямиСистемы(), - УровеньЖурналаРегистрации.Информация,,, СтрокаСообщения - ); + УровеньЖурналаРегистрации.Информация,,, СтрокаСообщения); РегистрыСведений.СессииОбменаСообщениямиСистемы.СохранитьДанныеСессии(Сообщение.Body.SessionId, Сообщение.Body.Data); КонецПроцедуры @@ -1570,8 +1561,7 @@ СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Строка(Сообщение.Body.SessionId), Представление); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСессииОбменаСообщениямиСистемы(), - УровеньЖурналаРегистрации.Информация,,, СтрокаСообщения - ); + УровеньЖурналаРегистрации.Информация,,, СтрокаСообщения); РегистрыСведений.СессииОбменаСообщениямиСистемы.ЗафиксироватьУспешноеВыполнениеСессии(Сообщение.Body.SessionId); КонецПроцедуры @@ -1585,14 +1575,11 @@ КонецЕсли; СтрокаСообщения = НСтр("ru = 'Ошибка выполнения сессии обмена сообщениями системы ""%1"".%2 - |Описание ошибки из корреспондента: %3'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка() - ); + |Описание ошибки из корреспондента: %3'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, - Строка(Сообщение.Body.SessionId), Представление, Сообщение.Body.ErrorDescription - ); + Строка(Сообщение.Body.SessionId), Представление, Сообщение.Body.ErrorDescription); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииСессииОбменаСообщениямиСистемы(), - УровеньЖурналаРегистрации.Ошибка,,, СтрокаСообщения - ); + УровеньЖурналаРегистрации.Ошибка,,, СтрокаСообщения); РегистрыСведений.СессииОбменаСообщениямиСистемы.ЗафиксироватьНеуспешноеВыполнениеСессии(Сообщение.Body.SessionId); КонецПроцедуры @@ -1792,8 +1779,7 @@ ПолучитьТаблицуПлановОбменаДляМонитора(МенеджерВременныхТаблиц, ПланыОбменаМетода, ДополнительныеСвойстваПланаОбмена); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ДополнительныеСвойстваПланаОбмена]", - ПолучитьДополнительныеСвойстваПланаОбменаСтрокой(ДополнительныеСвойстваПланаОбмена) - ); + ПолучитьДополнительныеСвойстваПланаОбменаСтрокой(ДополнительныеСвойстваПланаОбмена)); Если ТолькоНеуспешные Тогда Отбор = " @@ -2115,4 +2101,4 @@ ПередЗаписьюОбщихДанных(Источник, Отказ); -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаКлиент/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаКлиент/Module.bsl index e801ab58b..52f99c7e0 100644 --- a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаКлиент/Module.bsl @@ -11,22 +11,25 @@ Процедура ПриНачалеРаботыСистемы(Знач ОбрабатыватьПараметрыЗапуска = Ложь) Экспорт ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); - Если ПараметрыРаботыКлиента.РазделениеВключено ИЛИ Не ПараметрыРаботыКлиента.ДоступноИспользованиеРазделенныхДанных Тогда + + Если ПараметрыРаботыКлиента.РазделениеВключено Тогда Возврат; КонецЕсли; - ПредлагатьСинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииСеанса = - ПараметрыРаботыКлиента.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботы; - - Если ПараметрыРаботыКлиента.ОткрытьПомощникНастройкиАвтономногоРабочегоМеста Тогда + Если ПараметрыРаботыКлиента.ЭтоАвтономноеРабочееМесто Тогда - ОткрытьФорму("Обработка.ПомощникСозданияАвтономногоРабочегоМеста.Форма.НастройкаНаСторонеАвтономногоРабочегоМеста"); - - ИначеЕсли ПараметрыРаботыКлиента.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботы Тогда - - ПоказатьОповещениеПользователя(НСтр("ru = 'Автономная работа'"), "e1cib/app/Обработка.ВыполнениеОбменаДанными", - НСтр("ru = 'Рекомендуется синхронизировать данные с приложением в Интернете.'"), БиблиотекаКартинок.Информация32 - ); + ПредлагатьСинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииСеанса = + ПараметрыРаботыКлиента.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботы + ; + Если ПараметрыРаботыКлиента.ОткрытьПомощникНастройкиАвтономногоРабочегоМеста Тогда + + ОткрытьФорму("Обработка.ПомощникСозданияАвтономногоРабочегоМеста.Форма.НастройкаНаСторонеАвтономногоРабочегоМеста"); + + ИначеЕсли ПараметрыРаботыКлиента.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботы Тогда + + ПоказатьОповещениеПользователя(НСтр("ru = 'Автономная работа'"), "e1cib/app/Обработка.ВыполнениеОбменаДанными", + НСтр("ru = 'Рекомендуется синхронизировать данные с приложением в Интернете.'"), БиблиотекаКартинок.Информация32); + КонецЕсли; КонецЕсли; @@ -44,9 +47,13 @@ И СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().ПараметрыАвтономнойРаботы.СинхронизацияССервисомДавноНеВыполнялась Тогда ТекстФлажка = НСтр("ru = 'Синхронизировать данные с приложением в Интернете'"); + ПараметрыФормы = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().ПараметрыАвтономнойРаботы.ПараметрыФормыВыполненияОбменаДанными; + ПараметрыФормы = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ПараметрыФормы); + ПараметрыФормы.Вставить("ЗавершениеРаботыСистемы", Истина); + ПараметрыФормы = Новый ФиксированнаяСтруктура(ПараметрыФормы); ДействиеПриУстановленномФлажке = Новый Структура; ДействиеПриУстановленномФлажке.Вставить("Форма", "Обработка.ВыполнениеОбменаДанными.Форма.Форма"); - ДействиеПриУстановленномФлажке.Вставить("ПараметрыФормы", СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().ПараметрыАвтономнойРаботы.ПараметрыФормыВыполненияОбменаДанными); + ДействиеПриУстановленномФлажке.Вставить("ПараметрыФормы", ПараметрыФормы); ПараметрыПредупреждения = Новый Структура; ПараметрыПредупреждения.Вставить("ТекстФлажка", ТекстФлажка); @@ -58,19 +65,6 @@ КонецПроцедуры -// Обработчик события открытия инструкции по восстановлению/изменению пароля синхронизации данных -// с автономным рабочим местом. -// -Процедура ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных() Экспорт - - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("ИмяМакета", "КакИзменитьПарольСинхронизацииДанных"); - ПараметрыФормы.Вставить("Заголовок", НСтр("ru = 'Как изменить пароль синхронизации данных'")); - - ОткрытьФорму("Обработка.ПомощникСозданияАвтономногоРабочегоМеста.Форма.ДополнительноеОписание", ПараметрыФормы,, "КакИзменитьПарольСинхронизацииДанных"); - -КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // Обработчики служебных событий подсистем БСП diff --git a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаПовтИсп/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаПовтИсп/Module.bsl index bb37795f8..480fcf804 100644 --- a/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиВМоделиСервисаПовтИсп/Module.bsl @@ -14,8 +14,7 @@ Функция ПолучитьWSПроксиСервисаОбмена() Экспорт НастройкиТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаWS( - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса() - ); + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); СтруктураНастроек = Новый Структура; СтруктураНастроек.Вставить("WSURLВебСервиса", НастройкиТранспорта.WSURLВебСервиса); diff --git a/SSL/src/CommonModules/ОбменДаннымиВызовСервера/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиВызовСервера/Module.bsl index 95cbd4194..1670a8aaa 100644 --- a/SSL/src/CommonModules/ОбменДаннымиВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиВызовСервера/Module.bsl @@ -27,7 +27,7 @@ ИдентификаторОперации = "", ИдентификаторФайла = "", ДлительнаяОперацияРазрешена = Ложь, - Знач Пароль = "" + Знач ПараметрыАутентификации = Неопределено ) Экспорт ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(Отказ, @@ -39,8 +39,7 @@ ИдентификаторОперации, ИдентификаторФайла, ДлительнаяОперацияРазрешена, - Пароль - ); + ПараметрыАутентификации); КонецПроцедуры @@ -207,8 +206,7 @@ ОбменДаннымиСервер.ЗафиксироватьЗавершениеОбменаСОшибкой(УзелИнформационнойБазы, ДействиеПриОбмене, ДатаНачала, - СтрокаСообщенияОбОшибке - ); + СтрокаСообщенияОбОшибке); КонецПроцедуры // Выполняет получение файла сообщения обмена из базы-корреспондента через веб-сервис. @@ -219,7 +217,7 @@ Знач УзелИнформационнойБазы, Знач ИдентификаторФайла, Знач ДатаНачалаОперации, - Знач Пароль = "" + Знач ПараметрыАутентификации = Неопределено ) Экспорт ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазыЗавершениеДлительнойОперации( @@ -227,8 +225,7 @@ УзелИнформационнойБазы, ИдентификаторФайла, ДатаНачалаОперации, - Пароль - ); + ПараметрыАутентификации); КонецПроцедуры // Выполняет попытку установки внешнего соединения по переданным параметрам подключения. @@ -334,6 +331,32 @@ КонецФункции +// Возвращает состояние выполнения фонового задания. +// Используется для реализации логики длительных операций. +// +// Параметры: +// ИдентификаторЗадания - УникальныйИдентификатор - идентификатор фонового задания, для которого необходимо получить состояние. +// +// Возвращаемое значение: +// Строка – состояние выполнения фонового задания: +// "Активно" - задание выполняется; +// "Завершено" - задание выполнено успешно; +// "ЗавершеноАварийно" - задание завершено аварийно или отменено пользователем. +// +Функция СостояниеЗадания(Знач ИдентификаторЗадания) Экспорт + + Попытка + Результат = ?(ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания), "Завершено", "Активно"); + Исключение + Результат = "ЗавершеноАварийно"; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными'"), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + КонецПопытки; + + Возврат Результат; +КонецФункции + // Получает состояние длительной операции (фонового задания), выполняемой в базе-корреспонденте. // Функция СостояниеДлительнойОперации(Знач ИдентификаторОперации, @@ -357,6 +380,27 @@ Возврат WSПрокси.GetContinuousOperationStatus(ИдентификаторОперации, СтрокаСообщенияОбОшибке); КонецФункции +// Получает состояние длительной операции (фонового задания), выполняемой в базе-корреспонденте для узла информационной базы. +// +Функция СостояниеДлительнойОперацииДляУзлаИнформационнойБазы(Знач ИдентификаторОперации, + Знач УзелИнформационнойБазы, + Знач ПараметрыАутентификации = Неопределено, + СтрокаСообщенияОбОшибке = "" + ) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ПараметрыПодключения = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаWS(УзелИнформационнойБазы, ПараметрыАутентификации); + + WSПрокси = ОбменДаннымиСервер.ПолучитьWSПрокси(ПараметрыПодключения, СтрокаСообщенияОбОшибке); + + Если WSПрокси = Неопределено Тогда + ВызватьИсключение СтрокаСообщенияОбОшибке; + КонецЕсли; + + Возврат WSПрокси.GetContinuousOperationStatus(ИдентификаторОперации, СтрокаСообщенияОбОшибке); +КонецФункции + // Получает сообщение обмена из базы-корреспондента через веб-сервис. // Сохраняет полученное сообщение обмена во временный каталог. // @@ -366,7 +410,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - Пароль = "" + Знач ПараметрыАутентификации = Неопределено ) Экспорт Возврат ОбменДаннымиСервер.ПолучитьСообщениеОбменаВоВременныйКаталогИзИнформационнойБазыКорреспондентаЧерезВебСервис( @@ -375,8 +419,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - Пароль - ); + ПараметрыАутентификации); КонецФункции // Получает сообщение обмена из базы-корреспондента через веб-сервис. @@ -387,15 +430,14 @@ Отказ, УзелИнформационнойБазы, ИдентификаторФайла, - Знач Пароль = "" + Знач ПараметрыАутентификации = Неопределено ) Экспорт Возврат ОбменДаннымиСервер.ПолучитьСообщениеОбменаВоВременныйКаталогИзИнформационнойБазыКорреспондентаЧерезВебСервисЗавершениеДлительнойОперации( Отказ, УзелИнформационнойБазы, ИдентификаторФайла, - Пароль - ); + ПараметрыАутентификации); КонецФункции // Возвращает признак изменения конфигурации для подчиненного узла распределенной ИБ. @@ -438,6 +480,18 @@ КонецПроцедуры +// Выполняет удаление настройки синхронизации данных. +// +Процедура УдалитьНастройкуСинхронизации(Знач УзелИнформационнойБазы) Экспорт + + ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные); + + УстановитьПривилегированныйРежим(Истина); + + УзелИнформационнойБазы.ПолучитьОбъект().Удалить(); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обмен данными под полными правами @@ -449,18 +503,33 @@ // Процедура УстановкаПараметровСеанса(ИмяПараметра, УстановленныеПараметры) Экспорт - // процедура обновления повторно-используемых значений и параметров сеанса - ОбновитьКэшМеханизмаРегистрацииОбъектов(); - - // зарегистрируем имена параметров, которые установлены при - // выполнении ОбменДаннымиВызовСервера.ОбновитьКэшМеханизмаРегистрацииОбъектов - УстановленныеПараметры.Добавить("ИспользуемыеПланыОбмена"); - УстановленныеПараметры.Добавить("ПравилаВыборочнойРегистрацииОбъектов"); - УстановленныеПараметры.Добавить("ПравилаРегистрацииОбъектов"); - УстановленныеПараметры.Добавить("ДатаОбновленияПовторноИспользуемыхЗначенийМРО"); - - ОбменДаннымиСервер.УстановитьРежимЗагрузкиПараметровРаботыПрограммы(Ложь); - УстановленныеПараметры.Добавить("ЗагрузкаПараметровРаботыПрограммы"); + Если ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + + // процедура обновления повторно-используемых значений и параметров сеанса + ОбновитьКэшМеханизмаРегистрацииОбъектов(); + + // зарегистрируем имена параметров, которые установлены при + // выполнении ОбменДаннымиВызовСервера.ОбновитьКэшМеханизмаРегистрацииОбъектов + УстановленныеПараметры.Добавить("ИспользуемыеПланыОбмена"); + УстановленныеПараметры.Добавить("ПравилаВыборочнойРегистрацииОбъектов"); + УстановленныеПараметры.Добавить("ПравилаРегистрацииОбъектов"); + УстановленныеПараметры.Добавить("ДатаОбновленияПовторноИспользуемыхЗначенийМРО"); + + ОбменДаннымиСервер.УстановитьРежимЗагрузкиПараметровРаботыПрограммы(Ложь); + УстановленныеПараметры.Добавить("ЗагрузкаПараметровРаботыПрограммы"); + + ПараметрыСеанса.ПаролиСинхронизацииДанных = Новый ФиксированноеСоответствие(Новый Соответствие); + УстановленныеПараметры.Добавить("ПаролиСинхронизацииДанных"); + + ПараметрыСеанса.ПриоритетныеДанныеОбмена = Новый ФиксированныйМассив(Новый Массив); + УстановленныеПараметры.Добавить("ПриоритетныеДанныеОбмена"); + + Иначе + + ПараметрыСеанса.ПаролиСинхронизацииДанных = Новый ФиксированноеСоответствие(Новый Соответствие); + УстановленныеПараметры.Добавить("ПаролиСинхронизацииДанных"); + + КонецЕсли; КонецПроцедуры @@ -669,21 +738,73 @@ Возврат ПараметрыСеанса.ЗагрузкаПараметровРаботыПрограммы = Истина; КонецФункции -// Возвращает признак режима загрузки параметров работы программы из сообщения обмена +// Возвращает признак ошибки при запуске: +// 1) Ошибка загрузки сообщения обмена: +// - ошибка загрузки идентификаторов объектов метаданных при загрузке сообщения обмена, +// - ошибка проверки идентификаторов объектов метаданных, +// - ошибка загрузки сообщения обмена перед обновлением ИБ, +// - ошибка загрузки сообщения обмена перед обновлением ИБ в режиме когда версия не изменилась; +// 2) Ошибка обновления ИБ после успешной загрузки сообщения обмена. // -Функция ВыполнитьЗагрузкуПараметровРаботыПрограммы() Экспорт +Функция ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском() Экспорт УстановитьПривилегированныйРежим(Истина); - Возврат Константы.ВыполнитьЗагрузкуПараметровРаботыПрограммы.Получить() = Истина; + Возврат Константы.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском.Получить() = Истина + И ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПропуститьПовторнуюЗагрузкуСообщенияОбменаДанными") = Неопределено; + КонецФункции -// Отменяет режим загрузки параметров работы программы из сообщения обмена -// -Процедура ОтменитьЗагрузкуПараметровРаботыПрограммы() Экспорт +// Сбрасывает признак повторения загрузки, установленный при ошибке. +Процедура ОтключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском() Экспорт + УстановитьПривилегированныйРежим(Истина); - Константы.ВыполнитьЗагрузкуПараметровРаботыПрограммы.Установить(Ложь); + Константы.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском.Установить(Ложь); + +КонецПроцедуры + +// Возвращает список приоритетных данных обмена +// +// Возвращаемое значение: +// Тип: Массив. Коллекция ссылок на выгруженные приоритетные данные обмена +// +Функция ПриоритетныеДанныеОбмена() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Результат = Новый Массив; + + Для Каждого Элемент Из ПараметрыСеанса.ПриоритетныеДанныеОбмена Цикл + + Результат.Добавить(Элемент); + + КонецЦикла; + + Возврат Результат; +КонецФункции + +// Дополняет список приоритетных данных обмена переданным значением +// +Процедура ДополнитьПриоритетныеДанныеОбмена(Знач Данные) Экспорт + + Результат = ПриоритетныеДанныеОбмена(); + + Результат.Добавить(Данные); + + УстановитьПривилегированныйРежим(Истина); + + ПараметрыСеанса.ПриоритетныеДанныеОбмена = Новый ФиксированныйМассив(Результат); + +КонецПроцедуры + +// Очищает список приоритетных данных обмена +// +Процедура ОчиститьПриоритетныеДанныеОбмена() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + ПараметрыСеанса.ПриоритетныеДанныеОбмена = Новый ФиксированныйМассив(Новый Массив); КонецПроцедуры diff --git a/SSL/src/CommonModules/ОбменДаннымиКлиент/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиКлиент/Module.bsl index 5f5e77552..086cd0ce2 100644 --- a/SSL/src/CommonModules/ОбменДаннымиКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиКлиент/Module.bsl @@ -128,7 +128,7 @@ ПараметрыФормы.Вставить("НачальноеЗначениеВыбора", НачальноеЗначениеВыбора); ПараметрыФормы.Вставить("ИмяРеквизита", ИмяРеквизита); - ОткрытьФормуМодально("ОбщаяФорма.ВыборОбъектовИнформационнойБазыКорреспондента", ПараметрыФормы, Владелец); + ОткрытьФорму("ОбщаяФорма.ВыборОбъектовИнформационнойБазыКорреспондента", ПараметрыФормы, Владелец); КонецПроцедуры @@ -159,7 +159,7 @@ ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь); ПараметрыФормы.Вставить("ИмяРеквизита", ИмяРеквизита); - ОткрытьФормуМодально("ОбщаяФорма.ВыборОбъектовИнформационнойБазыКорреспондента", ПараметрыФормы, Владелец); + ОткрытьФорму("ОбщаяФорма.ВыборОбъектовИнформационнойБазыКорреспондента", ПараметрыФормы, Владелец); КонецПроцедуры @@ -345,6 +345,29 @@ КонецПроцедуры +// Процедура-обработчик запуска клиентского сеанса приложения. +// Если выполняется запуск ИБ для подчиненного узла РИБ, +// с необходимостью повтора загрузки сообщения обмена, тогда +// пользователю предлагается принять решение о повторной загрузке +// или продолжении без загрузки. +// +Процедура ПередНачаломРаботыСистемы(Отказ, ПараметрыКлиента, ОбновитьПараметрыКлиента) Экспорт + + Если НЕ ПараметрыКлиента.Свойство("ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском") Тогда + Возврат; + КонецЕсли; + + ОбновитьПараметрыКлиента = Истина; + + Результат = ОткрытьФормуМодально( + "РегистрСведений.НастройкиТранспортаОбмена.Форма.ПовторнаяСинхронизацияДанныхПередЗапуском"); + + Если Результат <> "Продолжить" Тогда + Отказ = Истина; + КонецЕсли; + +КонецПроцедуры + // Процедура-обработчик запуска клиентского сеанса приложения. // Если выполняется первый запуск ИБ для подчиненного узла РИБ, // то открывается форма помощника создания обмена данными. @@ -359,7 +382,7 @@ Если ПараметрыРаботыКлиента.ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла Тогда ПараметрыФормы = Новый Структура("ИмяПланаОбмена, ЭтоПродолжениеНастройкиВПодчиненномУзлеРИБ", ПараметрыРаботыКлиента.ИмяПланаОбменаРИБ); - ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.Форма", ПараметрыФормы); + ОткрытьФорму("Обработка.ПомощникСозданияОбменаДанными.Форма.Форма", ПараметрыФормы, , , ВариантОткрытияОкна.ОтдельноеОкно); ИначеЕсли ПараметрыРаботыКлиента.ПроверитьНеобходимостьОбновленияКонфигурацииПодчиненногоУзла Тогда @@ -460,8 +483,8 @@ Знач ИмяРегистра, ФормаВладелец, Знач ИмяФормы = "", - ПараметрыФормы = Неопределено - ) Экспорт + ПараметрыФормы = Неопределено, + ОткрытьМодально = Ложь) Экспорт Перем КлючЗаписи; @@ -505,7 +528,11 @@ КонецЕсли; // открываем форму записи РС - ОткрытьФормуМодально(ПолноеИмяФормы, ПараметрыЗаписи, ФормаВладелец); + Если ОткрытьМодально Тогда + ОткрытьФормуМодально(ПолноеИмяФормы, ПараметрыЗаписи, ФормаВладелец); + Иначе + ОткрытьФорму(ПолноеИмяФормы, ПараметрыЗаписи, ФормаВладелец); + КонецЕсли; КонецПроцедуры @@ -529,7 +556,7 @@ // вызов сервера ПараметрыФормы = ОбменДаннымиВызовСервера.ПолучитьСтруктуруДанныхОтбораЖурналаРегистрации(УзелИнформационнойБазы, ДействиеПриОбмене); - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма", ПараметрыФормы, Владелец); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", ПараметрыФормы, Владелец); КонецПроцедуры @@ -539,19 +566,7 @@ // УзелИнформационнойБазы - ПланОбменаСсылка - узел плана обмена, для которого необходимо открыть форму; // Владелец – форма-владелец для открываемой формы; // -Процедура ВыполнитьОбменДаннымиОбработкаКоманды(УзелИнформационнойБазы, Владелец, ЗадатьВопрос = Истина, АдресДляВосстановленияПароляУчетнойЗаписи = "") Экспорт - - Если ЗадатьВопрос Тогда - - ТекстВопроса = НСтр("ru = 'Синхронизировать данные с ""[УзелИнформационнойБазы]""?'"); - ТекстВопроса = СтрЗаменить(ТекстВопроса, "[УзелИнформационнойБазы]", Строка(УзелИнформационнойБазы)); - - Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Да); - Если Ответ = КодВозвратаДиалога.Нет Тогда - Возврат; - КонецЕсли; - - КонецЕсли; +Процедура ВыполнитьОбменДаннымиОбработкаКоманды(УзелИнформационнойБазы, Владелец, АдресДляВосстановленияПароляУчетнойЗаписи = "") Экспорт ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("УзелИнформационнойБазы", УзелИнформационнойБазы); @@ -650,8 +665,7 @@ ПараметрыПодключения.ИмяПользователя, ПараметрыПодключения.ПарольПользователя, ИмяПланаОбмена, - КодНовогоУзлаВторойБазы - ); + КодНовогоУзлаВторойБазы); Иначе // клиент-серверный @@ -664,8 +678,7 @@ ПараметрыПодключения.ИмяПользователя, ПараметрыПодключения.ПарольПользователя, ИмяПланаОбмена, - КодНовогоУзлаВторойБазы - ); + КодНовогоУзлаВторойБазы); КонецЕсли; @@ -691,16 +704,78 @@ // Для внутреннего использования // -Процедура ВыполнитьОбновлениеИнформационнойБазы() Экспорт +Процедура ВыполнитьОбновлениеИнформационнойБазы(ЗавершениеРаботыСистемы = Ложь) Экспорт СтандартнаяОбработка = Истина; - ПриВыполненииОбновленияИнформационнойБазы(СтандартнаяОбработка); + ПриВыполненииОбновленияИнформационнойБазы(СтандартнаяОбработка, ЗавершениеРаботыСистемы); Если СтандартнаяОбработка Тогда ОткрытьФорму("ОбщаяФорма.ДополнительноеОписание", Новый Структура("Заголовок,ИмяМакета", - НСтр("ru = 'Установка обновления'"), "ИнструкцияКакВыполнитьУстановкуОбновленияВручную") - ); + НСтр("ru = 'Установка обновления'"), "ИнструкцияКакВыполнитьУстановкуОбновленияВручную")); + КонецЕсли; + +КонецПроцедуры + +// Открывает форму монитора зарегистрированных к отправке данных +// +Процедура ОткрытьСоставОтправляемыхДанных(Знач УзелИнформационнойБазы) Экспорт + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("УзелОбмена", УзелИнформационнойБазы); + ПараметрыФормы.Вставить("ЗапрещеноВыбиратьУзелОбмена", Истина); + + ПараметрыФормы.Вставить("ИменаСкрываемыхМетаданных", Новый СписокЗначений); + ПараметрыФормы.ИменаСкрываемыхМетаданных.Добавить("РегистрСведений.СоответствияОбъектовИнформационныхБаз"); + + ОткрытьФорму("Обработка.РегистрацияИзмененийДляОбменаДанными.Форма", ПараметрыФормы,, УзелИнформационнойБазы); +КонецПроцедуры + +// Выполняет удаление настройки синхронизации данных +// +Процедура УдалитьНастройкуСинхронизации(Знач УзелИнформационнойБазы) Экспорт + + Ответ = Вопрос(НСтр("ru = 'Удалить настройку синхронизации данных?'"), РежимДиалогаВопрос.ДаНет,, КодВозвратаДиалога.Да); + + Если Ответ = КодВозвратаДиалога.Да Тогда + + ОбменДаннымиВызовСервера.УдалитьНастройкуСинхронизации(УзелИнформационнойБазы); + + Оповестить("Запись_УзелПланаОбмена"); + + ЗакрытьФормы("ФормаУзла"); + + КонецЕсли; + +КонецПроцедуры + +// Закрывает все открытые формы, в имени которых встречается указанная подстрока, +// и у которых не установлен флаг модифицированности. +// +Процедура ЗакрытьФормы(Знач ИмяФормы) + + Окна = ПолучитьОкна(); + + Если Окна <> Неопределено Тогда + + Для Каждого Окно Из Окна Цикл + + Если Не Окно.Основное Тогда + + Форма = Окно.ПолучитьСодержимое(); + + Если ТипЗнч(Форма) = Тип("УправляемаяФорма") + И Не Форма.Модифицированность + И Найти(Форма.ИмяФормы, ИмяФормы) <> 0 Тогда + + Форма.Закрыть(); + + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + КонецЕсли; КонецПроцедуры @@ -708,17 +783,6 @@ //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов из других подсистем -// Только для внутреннего использования -Процедура ПодтвердитьНастройкиЗагрузкиСообщенияВПодчиненномУзлеРИБ(ГлавныйУзел) Экспорт - - Отбор = Новый Структура("Узел", ГлавныйУзел); - ЗначенияЗаполнения = Новый Структура("Узел", ГлавныйУзел); - - ОткрытьФормуЗаписиРегистраСведенийПоОтбору( - Отбор, ЗначенияЗаполнения, "НастройкиТранспортаОбмена", Неопределено); - -КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов в другие подсистемы @@ -727,11 +791,11 @@ // Параметры: // СтандартнаяОбработка - Булево - если в процедуре установить данному параметру значение Ложь, то инструкция по // "ручному" обновлению показана не будет. -Процедура ПриВыполненииОбновленияИнформационнойБазы(СтандартнаяОбработка) +Процедура ПриВыполненииОбновленияИнформационнойБазы(СтандартнаяОбработка, ЗавершениеРаботыСистемы = Ложь) Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеКонфигурацииКлиент"); - Модуль.ПриВыполненииОбновленияИнформационнойБазы(СтандартнаяОбработка); + МодульОбновлениеКонфигурацииКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеКонфигурацииКлиент"); + МодульОбновлениеКонфигурацииКлиент.ПриВыполненииОбновленияИнформационнойБазы(СтандартнаяОбработка, ЗавершениеРаботыСистемы); КонецЕсли; КонецПроцедуры @@ -744,8 +808,8 @@ Процедура ПриИзмененииВыделенныхОбъектов(Список) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ГрупповоеИзменениеОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ГрупповоеИзменениеОбъектовКлиент"); - Модуль.ИзменитьВыделенные(Список); + МодульГрупповоеИзменениеОбъектовКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ГрупповоеИзменениеОбъектовКлиент"); + МодульГрупповоеИзменениеОбъектовКлиент.ИзменитьВыделенные(Список); КонецЕсли; КонецПроцедуры @@ -769,8 +833,8 @@ Если ЗапуститьМенеджерЗаданий Тогда Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РегламентныеЗадания") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РегламентныеЗаданияСлужебныйГлобальный"); - Модуль.ЗапуститьОтдельныйСеансДляВыполненияРегламентныхЗаданийЧерезОбработчикОжидания(); + МодульРегламентныеЗаданияСлужебныйГлобальный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РегламентныеЗаданияСлужебныйГлобальный"); + МодульРегламентныеЗаданияСлужебныйГлобальный.ЗапуститьОтдельныйСеансДляВыполненияРегламентныхЗаданийЧерезОбработчикОжидания(); КонецЕсли; КонецЕсли; @@ -779,11 +843,16 @@ // Обработчик события открытия инструкции по восстановлению/изменению пароля синхронизации данных // с автономным рабочим местом. // -Процедура ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных() Экспорт +Процедура ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных(Знач АдресДляВосстановленияПароляУчетнойЗаписи) Экспорт - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервисаКлиент"); - Модуль.ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных(); + Если ПустаяСтрока(АдресДляВосстановленияПароляУчетнойЗаписи) Тогда + + Предупреждение(НСтр("ru = 'Адрес для восстановления пароля учетной записи не задан.'")); + + Иначе + + ПерейтиПоНавигационнойСсылке(АдресДляВосстановленияПароляУчетнойЗаписи); + КонецЕсли; КонецПроцедуры @@ -798,8 +867,8 @@ Процедура ПриОткрытииФормыОтчетаПоВерсии(Ссылка, СравниваемыеВерсии) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектовКлиент"); - Модуль.ПриОткрытииФормыОтчетаПоВерсии(Ссылка, СравниваемыеВерсии); + МодульВерсионированиеОбъектовКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектовКлиент"); + МодульВерсионированиеОбъектовКлиент.ПриОткрытииФормыОтчетаПоВерсии(Ссылка, СравниваемыеВерсии); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/ОбменДаннымиКлиентСервер/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиКлиентСервер/Module.bsl index 22bc33080..5744289c6 100644 --- a/SSL/src/CommonModules/ОбменДаннымиКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиКлиентСервер/Module.bsl @@ -13,11 +13,9 @@ Если СтрокаСодержитСимвол(ИмяПользователя, НедопустимыеСимволыВИмениПользователяWSПрокси()) Тогда СтрокаСообщения = НСтр("ru = 'В имени пользователя %1 содержатся недопустимые символы. - |Имя пользователя не должно содержать символы %2.'" - ); + |Имя пользователя не должно содержать символы %2.'"); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, - ИмяПользователя, НедопустимыеСимволыВИмениПользователяWSПрокси() - ); + ИмяПользователя, НедопустимыеСимволыВИмениПользователяWSПрокси()); ВызватьИсключение СтрокаСообщения; КонецЕсли; @@ -27,7 +25,13 @@ // Функция НедопустимыеСимволыВИмениПользователяWSПрокси() Экспорт - Возврат "@/\[]#&*?:;="; + СистемнаяИнформация = Новый СистемнаяИнформация; + + Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.2.17.0") > 0 Тогда + Возврат ":"; + Иначе + Возврат "@/\[]#&*?:;="; + КонецЕсли; КонецФункции diff --git a/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl index 917fdc0b5..51729bfc5 100644 --- a/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиПереопределяемый/Module.bsl @@ -6,6 +6,20 @@ //////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС +// Возвращает префикс кодов и номеров объектов информационной базы по умолчанию +// +// Параметры: +// Нет. +// +// Возвращаемое значение: +// Строка, 2 - префикс кодов и номеров объектов информационной базы по умолчанию +// +Функция ПрефиксИнформационнойБазыПоУмолчанию() Экспорт + + Возврат НСтр("ru = 'ДМ'"); + +КонецФункции + // Определяет список планов обмена, которые используют функционал подсистемы обмена данными. // // Параметры: @@ -159,16 +173,43 @@ КонецПроцедуры -// Возвращает префикс кодов и номеров объектов информационной базы по умолчанию +// Обработчик при коллизии изменений данных. +// Событие возникает при получении данных, если в текущей информационной базе изменен тот же объект, +// что получен из сообщения обмена и эти объекты различаются. +// Используется для переопределения стандартной обработки коллизий изменений данных. +// Стандартная обработка коллизий предполагает получение изменений от главного узла +// и игнорирование изменений, полученных от подчиненного узла. +// В данном обработчике должен быть переопределен параметр ПолучениеЭлемента, +// если требуется изменить поведение по умолчанию. +// В данном обработчике можно задать поведение системы при возникновении коллизии изменений данных в разрезе данных, +// в разрезе свойств данных, в разрезе отправителей или для всей информационной базы в целом, или для всех данных в целом. +// Обработчик вызывается как в обмене в распределенной информационной базе (РИБ), +// так и во всех остальных обменах, в том числе в обменах по правилам обмена. // -// Параметры: -// Нет. -// -// Возвращаемое значение: -// Строка, 2 - префикс кодов и номеров объектов информационной базы по умолчанию +// Параметры: +// ЭлементДанных – Элемент данных, прочитанный из сообщения обмена данными. +// Элементами данных могут быть КонстантаМенеджерЗначения.<Имя константы>, +// объекты базы данных (кроме объекта "Удаление объекта"), наборы записей регистров, последовательностей или перерасчетов. // -Функция ПрефиксИнформационнойБазыПоУмолчанию() Экспорт +// ПолучениеЭлемента – Тип: ПолучениеЭлементаДанных. +// Значение данного параметра может быть переопределено в обработчике. +// Определяет, будет ли прочитанный элемент данных записан в базу данных или нет в случае коллизии. +// При вызове обработчика параметр имеет значение Авто, что означает действия по умолчанию +// (принимать от главного, игнорировать от подчиненного). +// +// Отправитель – Тип: ПланОбменаСсылка. Узел плана обмена, от имени которого выполняется получение данных. +// +// ПолучениеОтГлавного – Тип: Булево. +// В распределенной информационной базе обозначает признак получения данных от главного узла. +// Истина – выполняется получение данных от главного узла, Ложь – от подчиненного. +// В обменах по правилам обмена принимает значение Истина – если в правилах обмена приоритет объекта +// при коллизии установлен в значение "Выше" (значение по умолчанию) или не указан; +// Ложь – если в правилах обмена приоритет объекта при коллизии установлен в значение "Ниже" или "Совпадает". +// Во всех остальных типах обмена данными параметр принимает значение Истина. +// +Процедура ПриКоллизииИзмененийДанных(Знач ЭлементДанных, ПолучениеЭлемента, Знач Отправитель, Знач ПолучениеОтГлавного) Экспорт - Возврат НСтр("ru = 'ДМ'"); -КонецФункции + +КонецПроцедуры + diff --git a/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl index fd4ba526c..e63a925e3 100644 --- a/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиПовтИсп/Module.bsl @@ -165,9 +165,8 @@ Функция ЭтоАвтономноеРабочееМесто() Экспорт Возврат АвтономнаяРаботаПоддерживается() - И ПланыОбмена.ГлавныйУзел() <> Неопределено - И ПланыОбмена.ГлавныйУзел().Метаданные().Имя = ПланОбменаАвтономнойРаботы() - ; + И ОбменДаннымиСервер.ГлавныйУзел() <> Неопределено + И ОбменДаннымиСервер.ГлавныйУзел().Метаданные().Имя = ПланОбменаАвтономнойРаботы(); КонецФункции @@ -422,7 +421,7 @@ // Возвращаемое значение: // Тип: Булево. Истина – узел принадлежит плану обмена РИБ; Ложь – нет. // -Функция ЭтоУзелРаспределеннойИнформационнойБазы(УзелИнформационнойБазы) Экспорт +Функция ЭтоУзелРаспределеннойИнформационнойБазы(Знач УзелИнформационнойБазы) Экспорт Возврат УзелИнформационнойБазы.Метаданные().РаспределеннаяИнформационнаяБаза; @@ -466,7 +465,7 @@ // Возвращаемое значение: // Тип: Булево. Истина – узел принадлежит плану обмена, использующего функционал БСП; Ложь – нет. // -Функция ЭтоУзелОбменаДаннымиБСП(УзелИнформационнойБазы) Экспорт +Функция ЭтоУзелОбменаДаннымиБСП(Знач УзелИнформационнойБазы) Экспорт Возврат ПланыОбменаБСП().Найти(ПолучитьИмяПланаОбмена(УзелИнформационнойБазы)) <> Неопределено; @@ -890,6 +889,13 @@ КонецЕсли; + // Если сервер 1С запущен на ОС Linux, то обмен через COM-соединение не поддерживается + Если ОбщегоНазначения.ЭтоLinuxСервер() Тогда + + ОбщегоНазначенияКлиентСервер.УдалитьЗначениеИзМассива(Результат, Перечисления.ВидыТранспортаСообщенийОбмена.COM); + + КонецЕсли; + Возврат Результат; КонецФункции @@ -930,9 +936,7 @@ Возврат ОбменДаннымиСервер.УстановитьВнешнееСоединениеСБазой( РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспорта( - УзелИнформационнойБазы, Перечисления.ВидыТранспортаСообщенийОбмена.COM - ) - ); + УзелИнформационнойБазы, Перечисления.ВидыТранспортаСообщенийОбмена.COM)); КонецФункции @@ -942,9 +946,9 @@ // УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена, для которого выполняется получение сообщения обмена // Пароль - Строка - Пароль для WS соединения // -Функция ОбменВыполняетсяВОднойЛокальнойСети(Знач УзелИнформационнойБазы, Знач Пароль = "") Экспорт +Функция ОбменВыполняетсяВОднойЛокальнойСети(Знач УзелИнформационнойБазы, Знач ПараметрыАутентификации = Неопределено) Экспорт - Возврат ОбменДаннымиСервер.ОбменВыполняетсяВОднойЛокальнойСети(УзелИнформационнойБазы, Пароль); + Возврат ОбменДаннымиСервер.ОбменВыполняетсяВОднойЛокальнойСети(УзелИнформационнойБазы, ПараметрыАутентификации); КонецФункции @@ -1203,8 +1207,7 @@ УзелИнформационнойБазы, ДействиеПриОбмене, ВидТранспортаСообщенийОбмена, - ИспользоватьНастройкиТранспорта - ); + ИспользоватьНастройкиТранспорта); КонецФункции // Выполняет инициализацию подсистемы обмена данными для выполнения процесса обмена @@ -1275,83 +1278,110 @@ // ВыборПериода: флаг того, что к объекту можно применить выбор по периода // Функция СсылочныеТаблицыСоставаУзла(УзелОбмена, Периодические=Истина, Справочные=Истина) Экспорт - - ТаблицаРезультата = Новый ТаблицаЗначений; - Для Каждого КлючЗначение Из (Новый Структура("ПолноеИмяМетаданных, Представление, ПредставлениеСписка, ИндексКартинки, Тип, ВыборПериода")) Цикл - ТаблицаРезультата.Колонки.Добавить(КлючЗначение.Ключ); - КонецЦикла; - Для Каждого КлючЗначение Из (Новый Структура("ПолноеИмяМетаданных, Представление, ПредставлениеСписка, Тип")) Цикл - ТаблицаРезультата.Индексы.Добавить(КлючЗначение.Ключ); - КонецЦикла; - - Если УзелОбмена=Неопределено Тогда - Возврат ТаблицаРезультата; - КонецЕсли; - - // Все регистрируемое на узле - Для Каждого ЭлементСостава Из УзелОбмена.Метаданные().Состав Цикл - Мета = ЭлементСостава.Метаданные; - Описание = ОписаниеОбъектаМетаданных(Мета); - Если Описание.ИндексКартинки>=0 Тогда - // Наш ссылочный тип - Если Не Периодические И Описание.Периодический Тогда - Продолжить; - ИначеЕсли Не Справочные И Описание.Справочный Тогда - Продолжить; - КонецЕсли; - - Строка = ТаблицаРезультата.Добавить(); - ЗаполнитьЗначенияСвойств(Строка, Описание); - Строка.ВыборПериода = Описание.Периодический; - Строка.ПолноеИмяМетаданных = Мета.ПолноеИмя(); - Строка.ПредставлениеСписка = ОбменДаннымиСервер.ПредставлениеСпискаОбъектов(Мета); - Строка.Представление = ОбменДаннымиСервер.ПредставлениеОбъекта(Мета); - КонецЕсли; - КонецЦикла; - - ТаблицаРезультата.Сортировать("ПредставлениеСписка"); - Возврат ТаблицаРезультата; + + ТаблицаРезультата = Новый ТаблицаЗначений; + Для Каждого КлючЗначение Из (Новый Структура("ПолноеИмяМетаданных, Представление, ПредставлениеСписка, ИндексКартинки, Тип, ВыборПериода")) Цикл + ТаблицаРезультата.Колонки.Добавить(КлючЗначение.Ключ); + КонецЦикла; + Для Каждого КлючЗначение Из (Новый Структура("ПолноеИмяМетаданных, Представление, ПредставлениеСписка, Тип")) Цикл + ТаблицаРезультата.Индексы.Добавить(КлючЗначение.Ключ); + КонецЦикла; + + Если УзелОбмена=Неопределено Тогда + Возврат ТаблицаРезультата; + КонецЕсли; + + // Все регистрируемое на узле + Для Каждого ЭлементСостава Из УзелОбмена.Метаданные().Состав Цикл + Мета = ЭлементСостава.Метаданные; + Описание = ОписаниеОбъектаМетаданных(Мета); + Если Описание.ИндексКартинки>=0 Тогда + // Наш ссылочный тип + Если Не Периодические И Описание.Периодический Тогда + Продолжить; + ИначеЕсли Не Справочные И Описание.Справочный Тогда + Продолжить; + КонецЕсли; + + Строка = ТаблицаРезультата.Добавить(); + ЗаполнитьЗначенияСвойств(Строка, Описание); + Строка.ВыборПериода = Описание.Периодический; + Строка.ПолноеИмяМетаданных = Мета.ПолноеИмя(); + Строка.ПредставлениеСписка = ОбменДаннымиСервер.ПредставлениеСпискаОбъектов(Мета); + Строка.Представление = ОбменДаннымиСервер.ПредставлениеОбъекта(Мета); + КонецЕсли; + КонецЦикла; + + ТаблицаРезультата.Сортировать("ПредставлениеСписка"); + Возврат ТаблицаРезультата; КонецФункции Функция ОписаниеОбъектаМетаданных(Мета) - Рез = Новый Структура("ИндексКартинки, Периодический, Справочный, Тип", -1, Ложь, Ложь); - - Если Метаданные.Справочники.Содержит(Мета) Тогда - Рез.ИндексКартинки = 3; - Рез.Справочный = Истина; - Рез.Тип = Тип("СправочникСсылка." + Мета.Имя); - - ИначеЕсли Метаданные.Документы.Содержит(Мета) Тогда - Рез.ИндексКартинки = 7; - Рез.Периодический = Истина; - Рез.Тип = Тип("ДокументСсылка." + Мета.Имя); - - ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(Мета) Тогда - Рез.ИндексКартинки = 9; - Рез.Справочный = Истина; - Рез.Тип = Тип("ПланВидовХарактеристикСсылка." + Мета.Имя); - - ИначеЕсли Метаданные.ПланыСчетов.Содержит(Мета) Тогда - Рез.ИндексКартинки = 11; - Рез.Справочный = Истина; - Рез.Тип = Тип("ПланСчетовСсылка." + Мета.Имя); - - ИначеЕсли Метаданные.ПланыВидовРасчета.Содержит(Мета) Тогда - Рез.ИндексКартинки = 13; - Рез.Справочный = Истина; - Рез.Тип = Тип("ПланВидовРасчетаСсылка." + Мета.Имя); - - ИначеЕсли Метаданные.БизнесПроцессы.Содержит(Мета) Тогда - Рез.ИндексКартинки = 23; - Рез.Периодический = Истина; - Рез.Тип = Тип("БизнесПроцессСсылка." + Мета.Имя); - - ИначеЕсли Метаданные.Задачи.Содержит(Мета) Тогда - Рез.ИндексКартинки = 25; - Рез.Периодический = Истина; - Рез.Тип = Тип("ЗадачаСсылка." + Мета.Имя); - - КонецЕсли; - - Возврат Рез; -КонецФункции + Рез = Новый Структура("ИндексКартинки, Периодический, Справочный, Тип", -1, Ложь, Ложь); + + Если Метаданные.Справочники.Содержит(Мета) Тогда + Рез.ИндексКартинки = 3; + Рез.Справочный = Истина; + Рез.Тип = Тип("СправочникСсылка." + Мета.Имя); + + ИначеЕсли Метаданные.Документы.Содержит(Мета) Тогда + Рез.ИндексКартинки = 7; + Рез.Периодический = Истина; + Рез.Тип = Тип("ДокументСсылка." + Мета.Имя); + + ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(Мета) Тогда + Рез.ИндексКартинки = 9; + Рез.Справочный = Истина; + Рез.Тип = Тип("ПланВидовХарактеристикСсылка." + Мета.Имя); + + ИначеЕсли Метаданные.ПланыСчетов.Содержит(Мета) Тогда + Рез.ИндексКартинки = 11; + Рез.Справочный = Истина; + Рез.Тип = Тип("ПланСчетовСсылка." + Мета.Имя); + + ИначеЕсли Метаданные.ПланыВидовРасчета.Содержит(Мета) Тогда + Рез.ИндексКартинки = 13; + Рез.Справочный = Истина; + Рез.Тип = Тип("ПланВидовРасчетаСсылка." + Мета.Имя); + + ИначеЕсли Метаданные.БизнесПроцессы.Содержит(Мета) Тогда + Рез.ИндексКартинки = 23; + Рез.Периодический = Истина; + Рез.Тип = Тип("БизнесПроцессСсылка." + Мета.Имя); + + ИначеЕсли Метаданные.Задачи.Содержит(Мета) Тогда + Рез.ИндексКартинки = 25; + Рез.Периодический = Истина; + Рез.Тип = Тип("ЗадачаСсылка." + Мета.Имя); + + КонецЕсли; + + Возврат Рез; +КонецФункции + +// Определяет используется ли версионирование +// +// Параметры: +// Отправитель - ПланОбменаСсылка - Если параметр передается, то определяет необходимо +// ли использовать создание версий объектов для переданного узла +// +Функция ИспользуетсяВерсионирование(Отправитель = Неопределено, ПроверятьПраваДоступа = Ложь) Экспорт + + Используется = Ложь; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда + + Используется = ?(Отправитель <> Неопределено, ЭтоУзелОбменаДаннымиБСП(Отправитель), Истина); + + Если Используется И ПроверятьПраваДоступа Тогда + + МодульВерсионированиеОбъектов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); + Используется = МодульВерсионированиеОбъектов.ЕстьПравоНаЧтениеВерсийОбъектов(); + + КонецЕсли; + + КонецЕсли; + + Возврат Используется; + +КонецФункции \ No newline at end of file diff --git a/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl index d05b0c20a..d9e21fa75 100644 --- a/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиСервер/Module.bsl @@ -289,11 +289,103 @@ КонецПроцедуры -// Возвращает количество проблем обмена данными +// Проверяет факт восстановления этой базы из резервной копии. +// Если база была восстановлена из резервной копии, то необходимо выполнить синхронизацию номеров отправленных и полученных сообщений +// для двух баз (номеру отправленного сообщения в этой базе присваивается значение номера принятого сообщения из базы-корреспондента). +// Если база была восстановлена из резервной копии, то рекомендуется не снимать с регистрации изменения данных на текущем узле, +// т.к. эти данные могли быть еще не отправлены. // -Функция КоличествоПроблем() Экспорт +// Параметры: +// Отправитель (обязательный). Тип: ПланОбменаСсылка. Узел, от имени которого было сформировано и отправлено сообщение обмена. +// +// НомерПринятого (обязательный). Тип: Число. Номер принятого сообщения в базе-корреспонденте. +// +// Возвращаемое значение: +// Тип: Фиксированная структура. Свойства структуры: +// "Отправитель" – см. выше параметр <Отправитель> +// "НомерПринятого" – см. выше параметр <НомерПринятого> +// "ВосстановленаРезервнаяКопия". Тип: Булево. Признак восстановления этой базы из резервной копии. +// Принимает значение Истина, если обнаружен факт восстановления этой базы из резервной копии. +// +Функция ПараметрыРезервнойКопии(Знач Отправитель, Знач НомерПринятого) Экспорт - Возврат РегистрыСведений.РезультатыОбменаДанными.КоличествоПроблем(); + // Для базы, которая была поднята из резервной копии, номер отправленного сообщения + // будет меньше номера принятого сообщения в корреспонденте. + // Т.е. эта база получит номер принятого сообщения, + // который она еще не отправляла - "сообщение из будущего". + Результат = Новый Структура("Отправитель, НомерПринятого, ВосстановленаРезервнаяКопия"); + Результат.Отправитель = Отправитель; + Результат.НомерПринятого = НомерПринятого; + Результат.ВосстановленаРезервнаяКопия = (НомерПринятого > ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Отправитель, "НомерОтправленного")); + + Возврат Новый ФиксированнаяСтруктура(Результат); +КонецФункции + +// Выполняет синхронизацию номеров отправленных и полученных сообщений +// для двух баз (номеру отправленного сообщения в этой базе присваивается значение номера принятого сообщения из базы-корреспондента). +// +// Параметры: +// ПараметрыРезервнойКопии (обязательный). Тип: Фиксированная структура. Свойства структуры: +// "Отправитель". Тип: ПланОбменаСсылка. Узел, от имени которого было сформировано и отправлено сообщение обмена. +// "НомерПринятого". Тип: Число. Номер принятого сообщения в базе-корреспонденте. +// "ВосстановленаРезервнаяКопия". Тип: Булево. Признак восстановления этой базы из резервной копии. +// +Процедура ПриВосстановленииРезервнойКопии(Знач ПараметрыРезервнойКопии) Экспорт + + Если ПараметрыРезервнойКопии.ВосстановленаРезервнаяКопия Тогда + + // Устанавливаем в качестве номера отправленного сообщения в этой базе номер принятого сообщения в корреспонденте. + ОбъектУзла = ПараметрыРезервнойКопии.Отправитель.ПолучитьОбъект(); + ОбъектУзла.НомерОтправленного = ПараметрыРезервнойКопии.НомерПринятого; + ОбъектУзла.ДополнительныеСвойства.Вставить("Загрузка"); + ОбъектУзла.Записать(); + + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Работа с монитором проблем обмена данными + +// Возвращает количество нерассмотренных проблем обмена данными. Используется для отображения +// количества проблем обмена в пользовательском интерфейсе. Например, для использования в заголовке +// гиперссылки для перехода к монитору проблем обмена. +// +Функция КоличествоНерассмотренныхПроблем(Узлы = Неопределено) Экспорт + + Возврат КоличествоПроблемОбменаДанными(Узлы) + КоличествоПроблемВерсионирования(Узлы); + +КонецФункции + +// Возвращает структуру заголовка гиперссылки для перехода к монитору проблем обмена данными +// +// Возвращаемое значение: +// Тип Структура +// Заголовок - Строка - содержит заголовок гиперссылки +// Картинка - Картинка для гиперссылки +// +Функция СтруктураЗаголовкаГиперссылкиМонитораПроблем(Узлы = Неопределено) Экспорт + + Количество = КоличествоНерассмотренныхПроблем(Узлы); + + Если Количество > 0 Тогда + + Заголовок = Нстр("ru = 'Предупреждения (%1)'"); + Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Заголовок, Количество); + Картинка = БиблиотекаКартинок.Предупреждение; + + Иначе + + Заголовок = Нстр("ru = 'Предупреждений нет'"); + Картинка = Новый Картинка; + + КонецЕсли; + + СтруктураЗаголовка = Новый Структура; + СтруктураЗаголовка.Вставить("Заголовок", Заголовок); + СтруктураЗаголовка.Вставить("Картинка", Картинка); + + Возврат СтруктураЗаголовка; КонецФункции @@ -440,12 +532,6 @@ СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииПереименованийОбъектовМетаданных"].Добавить( "ОбменДаннымиСервер"); - СерверныеОбработчики["СтандартныеПодсистемы.ОбновлениеВерсииИБ\ПередОбновлениемИнформационнойБазы"].Добавить( - "ОбменДаннымиСервер"); - - СерверныеОбработчики["СтандартныеПодсистемы.ОбновлениеВерсииИБ\ПослеОбновленияИнформационнойБазы"].Добавить( - "ОбменДаннымиСервер"); - СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриОпределенииПоддерживаемыхВерсийПрограммныхИнтерфейсов"].Добавить( "ОбменДаннымиСервер"); @@ -470,27 +556,42 @@ СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииИсключенийПоискаСсылок"].Добавить( "ОбменДаннымиСервер"); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + + СерверныеОбработчики["СтандартныеПодсистемы.УправлениеДоступом\ПриЗаполненииПоставляемыхПрофилейГруппДоступа"].Добавить( + "ОбменДаннымиСервер"); + + КонецЕсли; + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов // Выполняет загрузку идентификаторов объектов метаданных, полученных из главного узла РИБ. -Процедура ПриОбновленииИдентификаторовОбъектовМетаданных(Отказ) Экспорт +Процедура ПередПроверкойИдентификаторовОбъектовМетаданныхВПодчиненномУзлеРИБ(Отказ = Ложь) Экспорт - Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") = Ложь Тогда + Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования(); + + Если КонфигурацияИзменена() Тогда + Возврат; // Полученные изменения конфигурации еще не применены к информационной базе + КонецЕсли; + + Если ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить( + "ИдентификаторыОбъектовМетаданныхВПодчиненномУзлеУжеЗагружены") <> Неопределено Тогда + Возврат; + КонецЕсли; + + Если НЕ ЗагрузитьСообщениеОбменаДанными() + И НЕ ОбменДаннымиВызовСервера.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском() Тогда + Возврат; + КонецЕсли; + + Попытка - Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") = Ложь Тогда - ИспользоватьСинхронизациюДанных = Константы.ИспользоватьСинхронизациюДанных.СоздатьМенеджерЗначения(); - ИспользоватьСинхронизациюДанных.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); - ИспользоватьСинхронизациюДанных.ОбменДанными.Загрузка = Истина; - ИспользоватьСинхронизациюДанных.Значение = Истина; - ИспользоватьСинхронизациюДанных.Записать(); - - Иначе - - Если ПолучитьИспользуемыеПланыОбмена().Количество() > 0 Тогда + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда ИспользоватьСинхронизациюДанных = Константы.ИспользоватьСинхронизациюДанных.СоздатьМенеджерЗначения(); ИспользоватьСинхронизациюДанных.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); @@ -498,6 +599,102 @@ ИспользоватьСинхронизациюДанных.Значение = Истина; ИспользоватьСинхронизациюДанных.Записать(); + Иначе + + Если ПолучитьИспользуемыеПланыОбмена().Количество() > 0 Тогда + + ИспользоватьСинхронизациюДанных = Константы.ИспользоватьСинхронизациюДанных.СоздатьМенеджерЗначения(); + ИспользоватьСинхронизациюДанных.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + ИспользоватьСинхронизациюДанных.ОбменДанными.Загрузка = Истина; + ИспользоватьСинхронизациюДанных.Значение = Истина; + ИспользоватьСинхронизациюДанных.Записать(); + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") = Истина Тогда + + УзелИнформационнойБазы = ГлавныйУзел(); + + Если УзелИнформационнойБазы <> Неопределено Тогда + + ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы); + + // Загрузка только параметров работы программы + ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы, Истина, Ложь, ВидТранспорта,,,,,, Истина); + + КонецЕсли; + + КонецЕсли; + + Исключение + ВключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском(); + + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Обмен данными.Загрузка справочника ""Идентификаторы объектов метаданных""'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка,,, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + ВызватьИсключение НСтр("ru = 'Из главного узла не загружены изменения справочника ""Идентификаторы объектов метаданных"". + | + |Ошибка загрузки данных. См. подробности в журнале регистрации.'" + ); + КонецПопытки; + + Если Отказ Тогда + + Если КонфигурацияИзменена() Тогда + ВызватьИсключение + НСтр("ru = 'Загружены изменения программы, полученные из главного узла. + |Завершите работу программы. Откройте программу в конфигураторе и + |выполните команду ""Обновить конфигурацию базы данных (F7)"". + | + |После этого запустите программу.'"); + КонецЕсли; + + ВключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском(); + + ВызватьИсключение НСтр("ru = 'Из главного узла не загружены изменения справочника ""Идентификаторы объектов метаданных"". + | + |Ошибка загрузки данных. См. подробности в журнале регистрации.'" + ); + КонецЕсли; + +КонецПроцедуры + +// Выполняет загрузку сообщения обмена, которое содержало +// изменения конфигурации, до обновления информационной базы. +// +Процедура ЗагрузитьСообщениеПередОбновлениемИнформационнойБазы() Экспорт + + Если КонфигурацияИзменена() Тогда + Возврат; // Полученные изменения конфигурации еще не применены к информационной базе + КонецЕсли; + + Если НЕ ЗагрузитьСообщениеОбменаДанными() + И НЕ ОбменДаннымиВызовСервера.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском() Тогда + Возврат; + КонецЕсли; + + Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") = Ложь Тогда + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + + Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + + Константы.ИспользоватьСинхронизациюДанных.Установить(Истина); + + КонецЕсли; + + Иначе + + Если ПолучитьИспользуемыеПланыОбмена().Количество() > 0 Тогда + + Константы.ИспользоватьСинхронизациюДанных.Установить(Истина); + КонецЕсли; КонецЕсли; @@ -506,14 +703,25 @@ Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") = Истина Тогда - УзелИнформационнойБазы = ПланыОбмена.ГлавныйУзел(); + УзелИнформационнойБазы = ГлавныйУзел(); Если УзелИнформационнойБазы <> Неопределено Тогда + // Обновление правил регистрации объектов выполняем до загрузки данных + ВыполнитьОбновлениеПравилДляОбменаДанными(); + ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы); - // Загрузка только параметров работы программы - ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы, Истина, Ложь, ВидТранспорта,,,,,, Истина); + Отказ = Ложь; + + ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(Отказ, УзелИнформационнойБазы, Истина, Ложь, ВидТранспорта); // только загрузка + + Если Отказ Тогда + + ВключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском(); + + ВызватьИсключение НСтр("ru = 'Получение данных из главного узла завершилось с ошибками.'"); + КонецЕсли; КонецЕсли; @@ -521,25 +729,117 @@ КонецПроцедуры -// Устанавливает признак необходимости загрузки идентификаторов объектов метаданных из сообщения обмена. -// Очищает хранилище сообщения обмена, полученного из главного узла РИБ. +// Выполняет выгрузку сообщения обмена, которое содержало +// изменения конфигурации, до обновления информационной базы. // -Процедура ПриОшибкеПолученияИдентификаторовОбъектовМетаданных() Экспорт +Процедура ВыгрузитьСообщениеПослеОбновленияИнформационнойБазы() Экспорт - Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(Новый ХранилищеЗначения(Неопределено)); + Если КонфигурацияИзменена() Тогда + Возврат; // Полученные изменения конфигурации еще не применены к информационной базе + КонецЕсли; - Константы.ВыполнитьЗагрузкуПараметровРаботыПрограммы.Установить(Истина); + Попытка + Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") = Истина Тогда + + УзелИнформационнойБазы = ГлавныйУзел(); + + Если УзелИнформационнойБазы <> Неопределено Тогда + + ВыполнитьВыгрузку = Истина; + + НастройкиТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспорта(УзелИнформационнойБазы); + + ВидТранспорта = НастройкиТранспорта.ВидТранспортаСообщенийОбменаПоУмолчанию; + + Если ВидТранспорта = Перечисления.ВидыТранспортаСообщенийОбмена.WS + И Не НастройкиТранспорта.WSЗапомнитьПароль Тогда + + ВыполнитьВыгрузку = Ложь; + + РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.УстановитьПризнакОтправкиДанных(УзелИнформационнойБазы); + + КонецЕсли; + + Если ВыполнитьВыгрузку Тогда + + ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(Ложь, УзелИнформационнойБазы, Ложь, Истина, ВидТранспорта); // только выгрузка + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + ОбменДаннымиВызовСервера.ОтключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском(); + Исключение + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецПопытки; КонецПроцедуры -// Только для внутреннего использования. -Функция НеобходимоПодтвердитьНастройкиЗагрузкиСообщенияВПодчиненномУзлеРИБ() Экспорт +// Выполняет загрузку и выгрузку сообщения обмена, которое +// содержало изменения конфигурации, которые не потребовали +// обновления информационной базы. +// +Процедура ВыполнитьСинхронизациюПриОтсутствииОбновленияИнформационнойБазы() Экспорт - УстановитьПривилегированныйРежим(Истина); + Если ЗагрузитьСообщениеОбменаДанными() Тогда + + // Если выполнен возврат к конфигурации базы данных, + // тогда загрузка и выгрузка не требуется. + Если НЕ КонфигурацияИзменена() + И НЕ ОбменДаннымиВызовСервера.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском() Тогда + + Константы.ЗагрузитьСообщениеОбменаДанными.Установить(Ложь); + Возврат; + КонецЕсли; + + ЗагрузитьСообщениеПередОбновлениемИнформационнойБазы(); + + ВыгрузитьСообщениеПослеОбновленияИнформационнойБазы(); + + КонецЕсли; - Возврат Константы.ВыполнитьЗагрузкуПараметровРаботыПрограммы.Получить() = Истина; +КонецПроцедуры + +// Устанавливает признак необходимости загрузки идентификаторов объектов метаданных из сообщения обмена. +// Очищает хранилище сообщения обмена, полученного из главного узла РИБ. +// Если указано, вызывает исключение с пояснением дальнейших действий. +// +Процедура ПриОшибкеПроверкиИдентификаторовОбъектовМетаданныхВПодчиненномУзлеРИБ(ВызыватьИсключение = Ложь) Экспорт -КонецФункции + Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования(); + + ВключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском(); + + Если ВызыватьИсключение Тогда + ТекстОшибки = + НСтр("ru = 'Из главного узла не загружены изменения справочника ""Идентификаторы объектов метаданных"". + | + |Если недоступно сообщение обмена данными, тогда перезапустите программу, + |настройте параметры подключения и повторите синхронизацию. + |Если из главного узла не получены все необходимые изменения, тогда + |в главном узле выполните обновление информационной базы, + |повторите синхронизацию данных в главном и подчиненном узлах. + | + |Чтобы выполнить обновление информационной базы в главном узле, один раз выполните + |запуск программы с параметром запуска ЗапуститьОбновлениеИнформационнойБазы. + |Чтобы при этом зарегистрировать изменения всего справочника, укажите дополнительный + |параметр запуска ЗарегистрироватьПолноеИзменениеИОМДляПодчиненныхУзловРИБ.'"); + + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Обмен данными.Загрузка справочника Идентификаторы объектов метаданных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, + , + , + ТекстОшибки); + + ВызватьИсключение ТекстОшибки; + КонецЕсли; + +КонецПроцедуры // Возвращает Истина, если настройка подчиненного узла РИБ не завершена и // требуется обновления параметров работы программы, которые не участвуют в РИБ. @@ -595,7 +895,6 @@ Обработчик = Обработчики.Добавить(); Обработчик.Версия = "2.1.1.5"; - Обработчик.Приоритет = 1; Обработчик.ОбщиеДанные = Истина; Обработчик.Процедура = "ОбменДаннымиСервер.УстановитьПризнакСохраненияПароляДляОбменаЧерезИнтернет"; @@ -733,7 +1032,7 @@ ВызватьИсключение НСтр("ru = 'Ошибка при обновлении регламентного задания для сценария обмена данными.'"); КонецЕсли; - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецЦикла; @@ -745,7 +1044,7 @@ Процедура ОбновитьКонстантуНастройкаПодчиненногоУзлаРИБЗавершена() Экспорт Если ЭтоПодчиненныйУзелРИБ() - И РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаДляУзлаЗаданы(ПланыОбмена.ГлавныйУзел()) Тогда + И РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаДляУзлаЗаданы(ГлавныйУзел()) Тогда Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Установить(Истина); @@ -852,6 +1151,19 @@ КонецФункции +// Формирует выборку измененных данных для передачи их в тот или иной узел плана обмена. +// Если обращение к методу выполняется в активной транзакции, то вызывает исключение. +// См. описание метода ПланыОбменаМенеджер.ВыбратьИзменения() в синтаксис-помощнике. +// +Функция ВыбратьИзменения(Знач Узел, Знач НомерСообщения, Знач ФильтрВыборки = Неопределено) Экспорт + + Если ТранзакцияАктивна() Тогда + ВызватьИсключение НСтр("ru = 'Выборка изменений данных запрещена в активной транзакции.'"); + КонецЕсли; + + Возврат ПланыОбмена.ВыбратьИзменения(Узел, НомерСообщения, ФильтрВыборки); +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -867,110 +1179,8 @@ Обработчики.Вставить("ПравилаВыборочнойРегистрацииОбъектов", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса"); Обработчики.Вставить("ПравилаРегистрацииОбъектов", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса"); Обработчики.Вставить("ЗагрузкаПараметровРаботыПрограммы", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса"); - -КонецПроцедуры - -// Обработчик события "перед обновлением информационной базы". Выполняет загрузку данных из главного узла. -Процедура ПередОбновлениемИнформационнойБазы() Экспорт - - Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") = Ложь Тогда - - Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда - - Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда - - Константы.ИспользоватьСинхронизациюДанных.Установить(Истина); - - КонецЕсли; - - Иначе - - Если ПолучитьИспользуемыеПланыОбмена().Количество() > 0 Тогда - - Константы.ИспользоватьСинхронизациюДанных.Установить(Истина); - - КонецЕсли; - - КонецЕсли; - - КонецЕсли; - - Попытка - Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") = Истина Тогда - - УзелИнформационнойБазы = ПланыОбмена.ГлавныйУзел(); - - Если УзелИнформационнойБазы <> Неопределено Тогда - - ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы); - - ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(Ложь, УзелИнформационнойБазы, Истина, Ложь, ВидТранспорта); // только загрузка - - КонецЕсли; - - КонецЕсли; - - Исключение - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); - КонецПопытки; - -КонецПроцедуры - -// Вызывается после завершения монопольного обновления данных ИБ. -// -// Параметры: -// ПредыдущаяВерсия - Строка - версия подсистемы до обновления. "0.0.0.0" для "пустой" ИБ. -// ТекущаяВерсия - Строка - версия подсистемы после обновления. -// ВыполненныеОбработчики - ДеревоЗначений - список выполненных процедур-обработчиков обновления -// подсистемы, сгруппированных по номеру версии. -// Процедура обхода выполненных обработчиков: -// -// Для Каждого Версия Из ВыполненныеОбработчики.Строки Цикл -// -// Если Версия.Версия = "*" Тогда -// // Обработчик, который может выполнятся при каждой смене версии. -// Иначе -// // Обработчик, который выполняется для определенной версии. -// КонецЕсли; -// -// Для Каждого Обработчик Из Версия.Строки Цикл -// ... -// КонецЦикла; -// -// КонецЦикла; -// -// ВыводитьОписаниеОбновлений - Булево (возвращаемое значение)- если установить Истина, -// тогда выводить форму с описанием обновлений. -// МонопольныйРежим - Булево - признак выполнения обновления в монопольном режиме. -// Истина - обновление выполнялось в монопольном режиме. -// -Процедура ПослеОбновленияИнформационнойБазы(Знач ПредыдущаяВерсия, Знач ТекущаяВерсия, - Знач ВыполненныеОбработчики, ВыводитьОписаниеОбновлений, МонопольныйРежим) Экспорт - - // Выгрузка данных в главный узел. - - Попытка - Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") = Истина Тогда - - УзелИнформационнойБазы = ПланыОбмена.ГлавныйУзел(); - - Если УзелИнформационнойБазы <> Неопределено Тогда - - ВидТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы); - - ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(Ложь, УзелИнформационнойБазы, Ложь, Истина, ВидТранспорта); // только выгрузка - - КонецЕсли; - - КонецЕсли; - - Исключение - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); - КонецПопытки; + Обработчики.Вставить("ПаролиСинхронизацииДанных", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса"); + Обработчики.Вставить("ПриоритетныеДанныеОбмена", "ОбменДаннымиВызовСервера.УстановкаПараметровСеанса"); КонецПроцедуры @@ -1008,19 +1218,17 @@ УстановитьПривилегированныйРежим(Истина); - Параметры.Вставить("ИмяПланаОбменаРИБ", ?(ЭтоПодчиненныйУзелРИБ(), ПланыОбмена.ГлавныйУзел().Метаданные().Имя, "")); - Параметры.Вставить("ГлавныйУзел", ПланыОбмена.ГлавныйУзел()); + Параметры.Вставить("ИмяПланаОбменаРИБ", ?(ЭтоПодчиненныйУзелРИБ(), ГлавныйУзел().Метаданные().Имя, "")); + Параметры.Вставить("ГлавныйУзел", ГлавныйУзел()); Параметры.Вставить("ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла", Не ОбменДаннымиПовтИсп.ЭтоАвтономноеРабочееМесто() И ЭтоПодчиненныйУзелРИБ() - И Не Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить() - ); + И Не Константы.НастройкаПодчиненногоУзлаРИБЗавершена.Получить()); Параметры.Вставить("ПроверитьНеобходимостьОбновленияКонфигурацииПодчиненногоУзла", Не Параметры.ОткрытьПомощникСозданияОбменаДаннымиДляНастройкиПодчиненногоУзла - И Пользователи.РолиДоступны("ВыполнениеСинхронизацииДанных") - ); + И Пользователи.РолиДоступны("ВыполнениеСинхронизацииДанных")); КонецПроцедуры @@ -1082,8 +1290,9 @@ Если РаспределеннаяИнформационнаяБаза Тогда - Объекты.Добавить(Метаданные.Константы.ВыполнитьЗагрузкуПараметровРаботыПрограммы); + Объекты.Добавить(Метаданные.Константы.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском); Объекты.Добавить(Метаданные.Константы.ДатаОбновленияПовторноИспользуемыхЗначенийМРО); + Объекты.Добавить(Метаданные.Константы.ЗагрузитьСообщениеОбменаДанными); Объекты.Добавить(Метаданные.Константы.ИспользоватьСинхронизациюДанных); Объекты.Добавить(Метаданные.Константы.ИспользоватьСинхронизациюДанныхВЛокальномРежиме); Объекты.Добавить(Метаданные.Константы.ИспользоватьСинхронизациюДанныхВМоделиСервиса); @@ -1131,6 +1340,29 @@ КонецПроцедуры +// Заполняет описания поставляемых профилей групп доступа и +// переопределяет параметры обновления профилей и групп доступа. +// Подробнее см. УправлениеДоступомПереопределяемый.ЗаполнитьПоставляемыеПрофилиГруппДоступа. +// +Процедура ПриЗаполненииПоставляемыхПрофилейГруппДоступа(ОписанияПрофилей, ПараметрыОбновления) Экспорт + + // Профиль "Синхронизация данных с другими программами". + ОписаниеПрофиля = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом").НовоеОписаниеПрофиляГруппДоступа(); + ОписаниеПрофиля.Идентификатор = ПрофильДоступаСинхронизацияДанныхСДругимиПрограммами(); + ОписаниеПрофиля.Наименование = НСтр("ru = 'Синхронизация данных с другими программами'"); + ОписаниеПрофиля.Описание = НСтр("ru = 'Дополнительно назначается тем пользователям, которым должны быть доступны средства + |для мониторинга и синхронизации данных с другими программами.'"); + + // Основные возможности профиля. + РолиПрофиля = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + РолиПрофиляДоступаСинхронизацияДанныхСДругимиПрограммами()); + Для Каждого Роль Из РолиПрофиля Цикл + ОписаниеПрофиля.Роли.Добавить(СокрЛП(Роль)); + КонецЦикла; + ОписанияПрофилей.Добавить(ОписаниеПрофиля); + +КонецПроцедуры + // Заполняет массив списком имен объектов метаданных, данные которых могут содержать ссылки на различные объекты метаданных, // но при этом эти ссылки не должны учитываться в бизнес-логике приложения. // @@ -1159,19 +1391,6 @@ КонецПроцедуры -// Определяет используется ли в конфигурации версионирование -// -// Параметры: -// Используется - Булево - Истина, если используется, Ложь - иначе. -// -Процедура ПриОпределенииИспользованияВерсионирования(Используется) Экспорт - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда - Используется = Истина; - КонецЕсли; - -КонецПроцедуры - // Определяет используется ли в конфигурации подсистема даты запрета изменения // // Параметры: @@ -1195,26 +1414,8 @@ Процедура ПриИгнорированииВерсииОбъекта(Ссылка, НомерВерсии, Игнорировать) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); - Модуль.ИгнорироватьВерсиюОбъекта(Ссылка, НомерВерсии, Игнорировать); - КонецЕсли; - -КонецПроцедуры - -// Создает и записывает версию объекта в информационную базу. -// -// Параметры -// Объект - записываемый объект ИБ; -// АвторВерсии - Пользователь или Узел плана обмена - Источник версии; -// ТипВерсииОбъекта - Перечисление - Тип создаваемой версии; -// Комментарий - Строка - Комментарий к создаваемой версии; -// УникальныйИдентификаторСтрокой - Строка - Создает пустую ссылку из УИДа, если у переданного объекта ссылка отсутствует. -// -Процедура ПриСозданииВерсииОбъекта(Объект, АвторВерсии, Знач ТипВерсииОбъекта, Комментарий, УникальныйИдентификаторСтрокой = "", БезусловнаяЗапись = Ложь) Экспорт - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); - Модуль.СоздатьВерсиюОбъекта(Объект, АвторВерсии, ТипВерсииОбъекта, Комментарий, УникальныйИдентификаторСтрокой, БезусловнаяЗапись); + МодульВерсионированиеОбъектов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); + МодульВерсионированиеОбъектов.ИгнорироватьВерсиюОбъекта(Ссылка, НомерВерсии, Игнорировать); КонецЕсли; КонецПроцедуры @@ -1227,31 +1428,11 @@ // НомерИгнорируемойВерсии - Число - Номер версии, на которую необходимо проигнорировать // ПропуститьПроверкуЗапретаИзменения - Булево - Признак пропуска проверки даты запрета загрузки // -Процедура ПриПереходеНаВерсиюОбъекта(ОбъектСсылка, НомерВерсииДляПерехода, НомерИгнорируемойВерсии, ПропуститьПроверкуЗапретаИзменения = Ложь) Экспорт +Процедура ПриПереходеНаВерсиюОбъекта(ОбъектСсылка, НомерВерсии, ПринятьВерсию, ПропуститьПроверкуЗапретаИзменения = Ложь) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); - Модуль.ПриПереходеНаВерсиюОбъекта(ОбъектСсылка, НомерВерсииДляПерехода, НомерИгнорируемойВерсии, ПропуститьПроверкуЗапретаИзменения); - КонецЕсли; - -КонецПроцедуры - -// Возвращает количество коллизий или непринятых объектов -// -// Параметры: -// ЭтоКоличествоКоллизий - Булево - Если Истина, то возвращает количество коллизий, иначе количество непринятых. -// ПоказыватьПроигнорированные - Булево - Признак необходимости учета проигнорированных. -// УзелИнформационнойБазы - ПланОбменаСсылка - Количество по конкретному узлу -// Период - Стандартный период - Количество за дату -// СтрокаПоиска - Строка - Количество объектов, содержащих в комментарии СтрокаПоиска -// -Процедура ПриОбновленииЗаголовковСтраницРезультатовОбменаДанными(Количество, ЭтоКоличествоКоллизий, ПоказыватьПроигнорированные = Ложь, - УзелИнформационнойБазы = Неопределено, Период = Неопределено, СтрокаПоиска = "") Экспорт - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); - Количество = Модуль.КоличествоКоллизийИлиНепринятых(ЭтоКоличествоКоллизий, - ПоказыватьПроигнорированные, УзелИнформационнойБазы, Период, СтрокаПоиска); + МодульВерсионированиеОбъектов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); + МодульВерсионированиеОбъектов.ПриПереходеНаВерсиюОбъекта(ОбъектСсылка, НомерВерсии, ПринятьВерсию, ПропуститьПроверкуЗапретаИзменения); КонецЕсли; КонецПроцедуры @@ -1264,8 +1445,8 @@ Процедура ПриОбновленииЗаголовковКомандМонитораОбменаДанными(ДатаСобытия, ПолучитьДатуПоследнейКоллизии) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); - ДатаСобытия = Модуль.ДатаПоследнейКоллизииИлиЗапретаЗагрузки(ПолучитьДатуПоследнейКоллизии); + МодульВерсионированиеОбъектов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); + ДатаСобытия = МодульВерсионированиеОбъектов.ДатаПоследнейКоллизииИлиЗапретаЗагрузки(ПолучитьДатуПоследнейКоллизии); КонецЕсли; КонецПроцедуры @@ -1289,29 +1470,8 @@ Процедура ПриОтключенииСинхронизацииДанных(Отказ) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); - Модуль.ПриОтключенииСинхронизацииДанных(Отказ); - КонецЕсли; - -КонецПроцедуры - -// Обработчик вызывается перед записью данных в ИБ при загрузке из сообщения обмена -// Используется только для обменов не РИБ. -// -// Параметры: -// Данные – СправочникОбъект, ДокументОбъект, РегистСведенийНаборЗаписей и др. данные. -// Данные, которые были зачитаны из сообщения обмена, но еще не были записаны в ИБ. -// УзелПланаОбмена - ПланыОбменаСсылка. -// Отказ - Булево (возвращаемое значение). -// СообщениеОбОшибке - Строка (возвращаемое значение). -// -Процедура ПередЗаписьюДанныхИзСообщенияОбмена(Данные, УзелПланаОбмена, Отказ, СообщениеОбОшибке) Экспорт - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДатыЗапретаИзменения"); - Если Модуль.ЗагрузкаЗапрещена(Данные, УзелПланаОбмена, СообщениеОбОшибке) = Истина Тогда - Отказ = Истина; - КонецЕсли; + МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); + МодульОбменДаннымиВМоделиСервиса.ПриОтключенииСинхронизацииДанных(Отказ); КонецЕсли; КонецПроцедуры @@ -1332,8 +1492,8 @@ Процедура ПослеОпределенияПолучателей(Данные, Получатели, Знач ИмяПланаОбмена) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); - Модуль.ПослеОпределенияПолучателей(Данные, Получатели, ИмяПланаОбмена); + МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); + МодульОбменДаннымиВМоделиСервиса.ПослеОпределенияПолучателей(Данные, Получатели, ИмяПланаОбмена); КонецЕсли; КонецПроцедуры @@ -1354,15 +1514,15 @@ // если в РС значение не задано, то значение по умолчанию - Перечисления.ВидыТранспортаСообщенийОбмена.FILE // Процедура ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(Отказ, - УзелИнформационнойБазы, - ВыполнятьЗагрузку = Истина, - ВыполнятьВыгрузку = Истина, - ВидТранспортаСообщенийОбмена = Неопределено, + Знач УзелИнформационнойБазы, + Знач ВыполнятьЗагрузку = Истина, + Знач ВыполнятьВыгрузку = Истина, + Знач ВидТранспортаСообщенийОбмена = Неопределено, ДлительнаяОперация = Ложь, ИдентификаторОперации = "", ИдентификаторФайла = "", - ДлительнаяОперацияРазрешена = Ложь, - Знач Пароль = "", + Знач ДлительнаяОперацияРазрешена = Ложь, + Знач ПараметрыАутентификации = Неопределено, Знач ТолькоПараметры = Ложь ) Экспорт @@ -1372,14 +1532,15 @@ Если ВидТранспортаСообщенийОбмена = Перечисления.ВидыТранспортаСообщенийОбмена.COM Тогда // Обмен через внешнее соединение + ПроверитьВозможностьВнешнегоСоединения(); + Если ВыполнятьЗагрузку Тогда // ЗАГРУЗКА ДАННЫХ ЧЕРЕЗ ВНЕШНЕЕ СОЕДИНЕНИЕ ВыполнитьДействиеОбменаДляУзлаИнформационнойБазыПоВнешнемуСоединению(Отказ, УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных, - Неопределено - ); + Неопределено); КонецЕсли; @@ -1389,8 +1550,7 @@ ВыполнитьДействиеОбменаДляУзлаИнформационнойБазыПоВнешнемуСоединению(Отказ, УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ВыгрузкаДанных, - Неопределено - ); + Неопределено); КонецЕсли; @@ -1406,9 +1566,8 @@ ИдентификаторОперации, ИдентификаторФайла, ДлительнаяОперацияРазрешена, - Пароль, - ТолькоПараметры - ); + ПараметрыАутентификации, + ТолькоПараметры); КонецЕсли; @@ -1422,9 +1581,8 @@ ИдентификаторОперации, ИдентификаторФайла, ДлительнаяОперацияРазрешена, - Пароль, - ТолькоПараметры - ); + ПараметрыАутентификации, + ТолькоПараметры); КонецЕсли; @@ -1437,8 +1595,7 @@ УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных, ВидТранспортаСообщенийОбмена, - ТолькоПараметры - ); + ТолькоПараметры); КонецЕсли; @@ -1449,8 +1606,7 @@ УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ВыгрузкаДанных, ВидТранспортаСообщенийОбмена, - ТолькоПараметры - ); + ТолькоПараметры); КонецЕсли; @@ -1528,6 +1684,8 @@ Если Выборка.ОбменЧерезВнешнееСоединение Тогда + ПроверитьВозможностьВнешнегоСоединения(); + ВыполнитьДействиеОбменаДляУзлаИнформационнойБазыПоВнешнемуСоединению(Отказ, Выборка.УзелИнформационнойБазы, Выборка.ВыполняемоеДействие, Выборка.КоличествоЭлементовВТранзакции); ИначеЕсли Выборка.ОбменЧерезВебСервис Тогда @@ -1725,16 +1883,16 @@ ИмяКаталогаСообщенияОбмена = ""; СтрокаСообщенияОбОшибке = ""; - Если Не СоздатьВременныйКаталогСообщенийОбмена(ИмяКаталогаСообщенияОбмена, СтрокаСообщенияОбОшибке) Тогда - + Попытка + ИмяКаталогаСообщенияОбмена = СоздатьВременныйКаталогСообщенийОбмена(); + Исключение Если ВыводитьСообщения Тогда Сообщение = НСтр("ru = 'Не удалось произвести обмен: %1'"); - Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, СтрокаСообщенияОбОшибке); + Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Сообщение,,,, Отказ); КонецЕсли; - Возврат Результат; - КонецЕсли; + КонецПопытки; // получаем внешнее соединение для узла информационной базы ДанныеСоединения = ОбменДаннымиПовтИсп.ВнешнееСоединениеДляУзлаИнформационнойБазы(УзелИнформационнойБазы); @@ -1789,12 +1947,12 @@ // Получает сообщение обмена из информационной базы корреспондента через веб-сервис во временный каталог пользователя ОС // // Параметры: -// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибки -// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена, для которого выполняется получение сообщения обмена -// ИдентификаторФайла - УникальныйИдентификатор - Идентификатор файла -// ДлительнаяОперация - Булево - Признак использования длительное операции -// ИдентификаторОперации - УникальныйИдентификатор - Уникальный идентификатор длительной операции -// Пароль - Строка - Пароль для WS соединения +// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибки +// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена, для которого выполняется получение сообщения обмена +// ИдентификаторФайла - УникальныйИдентификатор - Идентификатор файла +// ДлительнаяОперация - Булево - Признак использования длительное операции +// ИдентификаторОперации - УникальныйИдентификатор - Уникальный идентификатор длительной операции +// ПараметрыАутентификации - Структура. Содержит параметры аутентификации на веб-сервисе (Пользователь, Пароль). // // Возвращаемое значение: // Тип: Структура. Содержит ключи: @@ -1808,7 +1966,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - Пароль = "" + ПараметрыАутентификации = Неопределено ) Экспорт ПроверитьВозможностьВыполненияОбменов(); @@ -1834,7 +1992,7 @@ СтрокаСообщенияОбОшибке = ""; // получаем прокси веб-сервиса для узла информационной базы - Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке, Пароль); + Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке, ПараметрыАутентификации); Если Прокси = Неопределено Тогда @@ -1856,8 +2014,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - Истина - ); + Истина); Исключение @@ -1880,7 +2037,7 @@ КонецЕсли; Попытка - ИмяФайлаИзСервисаПередачиФайлов = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, Пароль); + ИмяФайлаИзСервисаПередачиФайлов = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, ПараметрыАутентификации); Исключение Отказ = Истина; @@ -1893,17 +2050,18 @@ Возврат Результат; КонецПопытки; - Если Не СоздатьВременныйКаталогСообщенийОбмена(ИмяКаталогаСообщенияОбмена, СтрокаСообщенияОбОшибке) Тогда - + Попытка + ИмяКаталогаСообщенияОбмена = СоздатьВременныйКаталогСообщенийОбмена(); + Исключение Отказ = Истина; Сообщение = НСтр("ru = 'При получении сообщения обмена возникли ошибки: %1'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); - Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, СтрокаСообщенияОбОшибке); + Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); СтруктураНастроекОбмена = Новый Структура("КлючСообщенияЖурналаРегистрации"); СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации = ПолучитьКлючСообщенияЖурналаРегистрации(УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных); ЗаписьЖурналаРегистрацииОбменаДанными(Сообщение, СтруктураНастроекОбмена, Истина); Возврат Результат; - КонецЕсли; + КонецПопытки; ШаблонИмениФайлаСообщения = ПолучитьШаблонИмениФайлаСообщения(ТекущийУзелПланаОбмена, УзелИнформационнойБазы, Ложь); @@ -1928,10 +2086,10 @@ // Используется в том случае, если получение сообщения обмена выполнялось в контексте фонового задания в базе-корреспонденте. // // Параметры: -// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибки -// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена, для которого выполняется получение сообщения обмена -// ИдентификаторФайла - УникальныйИдентификатор - Идентификатор файла -// Пароль - Строка - Пароль для WS соединения +// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибки +// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена, для которого выполняется получение сообщения обмена +// ИдентификаторФайла - УникальныйИдентификатор - Идентификатор файла +// ПараметрыАутентификации - Структура. Содержит параметры аутентификации на веб-сервисе (Пользователь, Пароль). // // Возвращаемое значение: // Тип: Структура. Содержит ключи: @@ -1943,7 +2101,7 @@ Отказ, УзелИнформационнойБазы, ИдентификаторФайла, - Знач Пароль = "" + Знач ПараметрыАутентификации = Неопределено ) Экспорт // возвращаемое значение функции @@ -1960,7 +2118,7 @@ Попытка - ИмяФайлаИзСервисаПередачиФайлов = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, Пароль); + ИмяФайлаИзСервисаПередачиФайлов = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, ПараметрыАутентификации); Исключение Отказ = Истина; @@ -1973,17 +2131,18 @@ Возврат Результат; КонецПопытки; - Если Не СоздатьВременныйКаталогСообщенийОбмена(ИмяКаталогаСообщенияОбмена, СтрокаСообщенияОбОшибке) Тогда - + Попытка + ИмяКаталогаСообщенияОбмена = СоздатьВременныйКаталогСообщенийОбмена(); + Исключение Отказ = Истина; Сообщение = НСтр("ru = 'При получении сообщения обмена возникли ошибки: %1'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); - Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, СтрокаСообщенияОбОшибке); + Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); СтруктураНастроекОбмена = Новый Структура("КлючСообщенияЖурналаРегистрации"); СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации = ПолучитьКлючСообщенияЖурналаРегистрации(УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных); ЗаписьЖурналаРегистрацииОбменаДанными(Сообщение, СтруктураНастроекОбмена, Истина); Возврат Результат; - КонецЕсли; + КонецПопытки; ИмяПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(УзелИнформационнойБазы); ТекущийУзелПланаОбмена = ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбмена(ИмяПланаОбмена); @@ -2010,18 +2169,18 @@ // Выполняет загрузку полученного файла сообщения обмена в эту базу. // // Параметры: -// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибки -// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена, для которого выполняется получение сообщения обмена -// ИдентификаторФайла - УникальныйИдентификатор - Идентификатор файла -// ДатаНачалаОперации - Дата - Дата начала загрузки -// Пароль - Строка - Пароль для WS соединения +// Отказ - Булево - флаг отказа; поднимается в случае возникновения ошибки +// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена, для которого выполняется получение сообщения обмена +// ИдентификаторФайла - УникальныйИдентификатор - Идентификатор файла +// ДатаНачалаОперации - Дата - Дата начала загрузки +// ПараметрыАутентификации - Структура. Содержит параметры аутентификации на веб-сервисе (Пользователь, Пароль). // Процедура ВыполнитьОбменДаннымиДляУзлаИнформационнойБазыЗавершениеДлительнойОперации( Отказ, Знач УзелИнформационнойБазы, Знач ИдентификаторФайла, Знач ДатаНачалаОперации, - Знач Пароль = "" + Знач ПараметрыАутентификации = Неопределено ) Экспорт ПроверитьВозможностьВыполненияОбменов(); @@ -2031,13 +2190,12 @@ УстановитьПривилегированныйРежим(Истина); Попытка - ФайлСообщенияОбмена = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, Пароль); + ФайлСообщенияОбмена = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, ПараметрыАутентификации); Исключение ЗафиксироватьЗавершениеОбменаСОшибкой(УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных, ДатаНачалаОперации, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Отказ = Истина; Возврат; КонецПопытки; @@ -2047,14 +2205,12 @@ ВыполнитьОбменДаннымиДляУзлаИнформационнойБазыЧерезФайлИлиСтроку( УзелИнформационнойБазы, ФайлСообщенияОбмена, - Перечисления.ДействияПриОбмене.ЗагрузкаДанных,,,, ДатаНачалаОперации - ); + Перечисления.ДействияПриОбмене.ЗагрузкаДанных,,,, ДатаНачалаОперации); Исключение ЗафиксироватьЗавершениеОбменаСОшибкой(УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных, ДатаНачалаОперации, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Отказ = Истина; КонецПопытки; @@ -2106,8 +2262,7 @@ УдалитьФайлы(ФайлСообщения.ПолноеИмя); Исключение ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Продолжить; КонецПопытки; КонецЕсли; @@ -2121,8 +2276,8 @@ // Удаляем неактуальные сообщения обмена, отмеченные в РС.СообщенияОбменаДаннымиОбластейДанных Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); - Модуль.ПриУдаленииНеактуальныхСообщенийОбмена(); + МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); + МодульОбменДаннымиВМоделиСервиса.ПриУдаленииНеактуальныхСообщенийОбмена(); КонецЕсли; КонецПроцедуры @@ -2141,8 +2296,7 @@ ПолноеИмяФайлаСообщенияОбмена, Перечисления.ДействияПриОбмене.ВыгрузкаДанных, ИмяПланаОбмена, - КодУзлаИнформационнойБазы - ); + КодУзлаИнформационнойБазы); Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПолноеИмяФайлаСообщенияОбмена)); @@ -2163,16 +2317,14 @@ ИмяФайлаСообщения = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( КаталогВременногоХранилищаФайлов(), - УникальноеИмяФайлаСообщенияОбмена() - ); + УникальноеИмяФайлаСообщенияОбмена()); ВыполнитьОбменДаннымиДляУзлаИнформационнойБазыЧерезФайлИлиСтроку( Неопределено, ИмяФайлаСообщения, Перечисления.ДействияПриОбмене.ВыгрузкаДанных, ИмяПланаОбмена, - КодУзлаИнформационнойБазы - ); + КодУзлаИнформационнойБазы); ПоместитьФайлВХранилище(ИмяФайлаСообщения, ИдентификаторФайла); @@ -2189,8 +2341,7 @@ ПолноеИмяФайлаСообщенияОбмена, Перечисления.ДействияПриОбмене.ВыгрузкаДанных, ИмяПланаОбмена, - КодУзлаИнформационнойБазы - ); + КодУзлаИнформационнойБазы); КонецПроцедуры @@ -2203,8 +2354,7 @@ Перечисления.ДействияПриОбмене.ВыгрузкаДанных, ИмяПланаОбмена, КодУзлаИнформационнойБазы, - СообщениеОбмена - ); + СообщениеОбмена); КонецПроцедуры @@ -2217,8 +2367,7 @@ Перечисления.ДействияПриОбмене.ЗагрузкаДанных, ИмяПланаОбмена, КодУзлаИнформационнойБазы, - СообщениеОбмена - ); + СообщениеОбмена); КонецПроцедуры @@ -2238,8 +2387,7 @@ ИмяВременногоФайла, Перечисления.ДействияПриОбмене.ЗагрузкаДанных, ИмяПланаОбмена, - КодУзлаИнформационнойБазы - ); + КодУзлаИнформационнойБазы); Исключение ПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); Попытка @@ -2305,6 +2453,16 @@ ПрочитатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, ПолноеИмяФайлаСообщенияОбмена, СообщениеОбмена); + // {Обработчик: ПослеЧтенияСообщенияОбмена} Начало + СтандартнаяОбработка = Истина; + + ПослеЧтенияСообщенияОбмена( + СтруктураНастроекОбмена.УзелИнформационнойБазы, + ПолноеИмяФайлаСообщенияОбмена, + РезультатВыполненияОбменаВыполнено(СтруктураНастроекОбмена.РезультатВыполненияОбмена), + СтандартнаяОбработка); + // {Обработчик: ПослеЧтенияСообщенияОбмена} Окончание + ИначеЕсли СтруктураНастроекОбмена.ПроизводитьВыгрузкуДанных Тогда ЗаписатьСообщениеСИзменениямиДляУзла(СтруктураНастроекОбмена, ПолноеИмяФайлаСообщенияОбмена, СообщениеОбмена); @@ -2404,8 +2562,7 @@ // ИНИЦИАЛИЗАЦИЯ ОБМЕНА ДАННЫМИ СтруктураНастроекОбмена = ОбменДаннымиПовтИсп.ПолучитьСтруктуруНастроекОбменаДляУзлаИнформационнойБазы( - УзелИнформационнойБазы, ДействиеПриОбмене, ВидТранспортаСообщенийОбмена - ); + УзелИнформационнойБазы, ДействиеПриОбмене, ВидТранспортаСообщенийОбмена); Если СтруктураНастроекОбмена.Отказ Тогда @@ -2446,9 +2603,8 @@ ИдентификаторОперации = "", ИдентификаторФайла = "", ДлительнаяОперацияРазрешена = Ложь, - Пароль = "", - Знач ТолькоПараметры = Ложь - ) + ПараметрыАутентификации = Неопределено, + Знач ТолькоПараметры = Ложь) УстановитьПривилегированныйРежим(Истина); @@ -2485,7 +2641,7 @@ СтрокаСообщенияОбОшибке = ""; // получаем прокси веб-сервиса для узла информационной базы - Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке, Пароль); + Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке, ПараметрыАутентификации); Если Прокси = Неопределено Тогда @@ -2508,8 +2664,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ); + ДлительнаяОперацияРазрешена); Если ДлительнаяОперация Тогда ЗаписьЖурналаРегистрацииОбменаДанными(НСтр("ru = 'Ожидание получения данных от базы-корреспондента...'", @@ -2517,7 +2672,7 @@ Возврат; КонецЕсли; - ФайлСообщенияОбмена = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, Пароль); + ФайлСообщенияОбмена = ПолучитьФайлИзХранилищаВСервисе(Новый УникальныйИдентификатор(ИдентификаторФайла), УзелИнформационнойБазы,, ПараметрыАутентификации); Исключение ЗаписьЖурналаРегистрацииОбменаДанными(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СтруктураНастроекОбмена, Истина); СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка; @@ -2540,8 +2695,7 @@ ФайлСообщенияОбмена, РезультатВыполненияОбменаВыполнено(СтруктураНастроекОбмена.РезультатВыполненияОбмена), СтандартнаяОбработка, - Не ТолькоПараметры - ); + Не ТолькоПараметры); // {Обработчик: ПослеЧтенияСообщенияОбмена} Окончание Если СтандартнаяОбработка Тогда @@ -2552,8 +2706,7 @@ КонецЕсли; Исключение ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецЕсли; @@ -2563,7 +2716,7 @@ СтрокаСообщенияОбОшибке = ""; // получаем прокси веб-сервиса для узла информационной базы - Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке, Пароль); + Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке, ПараметрыАутентификации); Если Прокси = Неопределено Тогда @@ -2596,7 +2749,7 @@ СтрокаСообщенияОбОшибке = ""; // получаем прокси веб-сервиса для узла информационной базы - Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке, Пароль); + Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке, ПараметрыАутентификации); Если Прокси = Неопределено Тогда @@ -2621,7 +2774,7 @@ Попытка - ИдентификаторФайлаСтрокой = Строка(ПоместитьФайлВХранилищеВСервисе(ФайлСообщенияОбмена, УзелИнформационнойБазы,, Пароль)); + ИдентификаторФайлаСтрокой = Строка(ПоместитьФайлВХранилищеВСервисе(ФайлСообщенияОбмена, УзелИнформационнойБазы,, ПараметрыАутентификации)); Попытка УдалитьФайлы(ФайлСообщенияОбмена); @@ -2633,8 +2786,7 @@ ИдентификаторФайлаСтрокой, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ); + ДлительнаяОперацияРазрешена); Если ДлительнаяОперация Тогда ЗаписьЖурналаРегистрацииОбменаДанными(НСтр("ru = 'Ожидание загрузки данных в базе-корреспонденте...'", @@ -2699,8 +2851,7 @@ СтруктураНастроекОбмена = ПолучитьСтруктуруНастроекОбменаДляВнешнегоСоединения( УзелИнформационнойБазы, ДействиеПриОбмене, - КоличествоЭлементовВТранзакции - ); + КоличествоЭлементовВТранзакции); СтруктураНастроекОбмена.ДатаНачала = ТекущаяДатаСеанса(); @@ -2719,8 +2870,7 @@ // получаем внешнее соединение для узла информационной базы ВнешнееСоединение = ОбменДаннымиПовтИсп.ПолучитьВнешнееСоединениеДляУзлаИнформационнойБазы( УзелИнформационнойБазы, - СтрокаСообщенияОбОшибке - ); + СтрокаСообщенияОбОшибке); Если ВнешнееСоединение = Неопределено Тогда @@ -2799,7 +2949,21 @@ ОбработкаОбменаДаннымиВнешнееСоединение = ВнешнееСоединение.Обработки.КонвертацияОбъектовИнформационныхБаз.Создать(); ОбработкаОбменаДаннымиВнешнееСоединение.РежимОбмена = "Выгрузка"; ОбработкаОбменаДаннымиВнешнееСоединение.СохраненныеНастройки = ПравилаКонвертацииОбъектов; - ОбработкаОбменаДаннымиВнешнееСоединение.ВосстановитьПравилаИзВнутреннегоФормата(); + + Попытка + ОбработкаОбменаДаннымиВнешнееСоединение.ВосстановитьПравилаИзВнутреннегоФормата(); + Исключение + ЗаписьЖурналаРегистрацииОбменаДанными( + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Возникла ошибка во второй информационной базе: %1'"), + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())), СтруктураНастроекОбмена, Истина + ); + + // если настройка содержит ошибки, то обмен не производим; статус "Отменено" + СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Отменено; + ЗафиксироватьЗавершениеОбмена(СтруктураНастроекОбмена); + Отказ = Истина; + Возврат; + КонецПопытки; // задаем узлы обмена ОбработкаОбменаДаннымиВнешнееСоединение.УзелДляОбмена = СтруктураНастроекОбменаВнешнееСоединение.УзелИнформационнойБазы; @@ -2925,8 +3089,7 @@ СообщениеОбмена, РезультатВыполненияОбменаВыполнено(СтруктураНастроекОбмена.РезультатВыполненияОбмена), СтандартнаяОбработка, - Не ТолькоПараметры - ); + Не ТолькоПараметры); // {Обработчик: ПослеЧтенияСообщенияОбмена} Окончание Если СтандартнаяОбработка Тогда @@ -2964,7 +3127,7 @@ Процедура ПередЧтениемСообщенияОбмена(Знач Получатель, СообщениеОбмена, СтандартнаяОбработка) Если ЭтоПодчиненныйУзелРИБ() - И ТипЗнч(ПланыОбмена.ГлавныйУзел()) = ТипЗнч(Получатель) Тогда + И ТипЗнч(ГлавныйУзел()) = ТипЗнч(Получатель) Тогда СохраненноеСообщениеОбмена = Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Получить().Получить(); @@ -2976,6 +3139,8 @@ СохраненноеСообщениеОбмена.Записать(СообщениеОбмена); + ЗаписатьСобытиеПолученияДанных(Получатель, НСтр("ru = 'Сообщение обмена получено из кэша.'")); + КонецЕсли; КонецЕсли; @@ -2987,21 +3152,20 @@ Процедура ПослеЧтенияСообщенияОбмена(Знач Получатель, Знач СообщениеОбмена, Знач СообщениеПрочитано, СтандартнаяОбработка, Знач УдалитьСообщение = Истина) Если ЭтоПодчиненныйУзелРИБ() - И ТипЗнч(ПланыОбмена.ГлавныйУзел()) = ТипЗнч(Получатель) Тогда + И ТипЗнч(ГлавныйУзел()) = ТипЗнч(Получатель) Тогда + + СохранитьСообщениеВКэш = Ложь; Если КонфигурацияИзменена() Тогда - Если ТипЗнч(Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Получить().Получить()) <> Тип("ДвоичныеДанные") Тогда - - Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить( - Новый ХранилищеЗначения(Новый ДвоичныеДанные(СообщениеОбмена), Новый СжатиеДанных(9)) - ); - - КонецЕсли; + // Т.к. конфигурация может быть изменена повторно, требуется + // обновить кэш, если он содержит устаревшее сообщение, + // а не только при первой загрузке изменений конфигурации. + СохранитьСообщениеВКэш = Истина; Если Не СообщениеПрочитано Тогда - ОбновлениеИнформационнойБазы.УстановитьНеобходимостьОбновленияИнформационнойБазы(); + Константы.ЗагрузитьСообщениеОбменаДанными.Установить(Истина); КонецЕсли; @@ -3011,10 +3175,49 @@ Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(Новый ХранилищеЗначения(Неопределено)); + Константы.ЗагрузитьСообщениеОбменаДанными.Установить(Ложь); + + Если ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы() Тогда + // После выгрузки сообщения обмена повторение загрузки отключается. + // Однако, если в процессе обновления происходит ошибка, следует + // перейти в режим повторной загрузки, чтобы был выбор - загрузить + // новое сообщение или продолжить без загрузки. + ВключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском(); + КонецЕсли; + + Иначе + // Т.к. чтение сообщение обмена может быть без загрузки метаданных, + // то нужно сохранить сообщение обмена после чтения параметров работы программы, + // чтобы не загружать его повторно для основного чтения. + СохранитьСообщениеВКэш = Истина; КонецЕсли; КонецЕсли; + Если СохранитьСообщениеВКэш Тогда + СтароеСообщение = Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Получить().Получить(); + НовоеСообщение = Новый ДвоичныеДанные(СообщениеОбмена); + ОбновитьКэш = Ложь; + + Если ТипЗнч(СтароеСообщение) <> Тип("ДвоичныеДанные") Тогда + ОбновитьКэш = Истина; + Иначе + Если СтароеСообщение.Размер() <> НовоеСообщение.Размер() Тогда + ОбновитьКэш = Истина; + ИначеЕсли НовоеСообщение <> СтароеСообщение Тогда + ОбновитьКэш = Истина; + КонецЕсли; + КонецЕсли; + + Если ОбновитьКэш Тогда + Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить( + Новый ХранилищеЗначения(НовоеСообщение, Новый СжатиеДанных(9))); + + ЗаписатьСобытиеПолученияДанных( + Получатель, НСтр("ru = 'Сообщение обмена записано в кэш.'")); + КонецЕсли; + КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -3057,8 +3260,7 @@ СообщениеОбмена, СтруктураНастроекОбмена.КоличествоЭлементовВТранзакции, СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации, - КоличествоОбъектовОбработано - ); + КоличествоОбъектовОбработано); Если СтандартнаяОбработка = Истина Тогда @@ -3070,8 +3272,7 @@ СообщениеОбмена, СтруктураНастроекОбмена.КоличествоЭлементовВТранзакции, СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации, - КоличествоОбъектовОбработано - ); + КоличествоОбъектовОбработано); КонецЕсли; @@ -3081,8 +3282,7 @@ ЗаписьЖурналаРегистрации(СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации, УровеньЖурналаРегистрации.Ошибка, СтруктураНастроекОбмена.УзелИнформационнойБазы.Метаданные(), - СтруктураНастроекОбмена.УзелИнформационнойБазы, СтрокаСообщенияОбОшибке - ); + СтруктураНастроекОбмена.УзелИнформационнойБазы, СтрокаСообщенияОбОшибке); СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка; СтруктураНастроекОбмена.СтрокаСообщенияОбОшибке = СтрокаСообщенияОбОшибке; Возврат; @@ -3121,8 +3321,7 @@ СообщениеОбмена, СтруктураНастроекОбмена.КоличествоЭлементовВТранзакции, СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации, - КоличествоОбъектовОбработано - ); + КоличествоОбъектовОбработано); СтруктураНастроекОбмена.КоличествоОбъектовОбработано = КоличествоОбъектовОбработано; @@ -3176,8 +3375,7 @@ СообщениеОбмена, СтруктураНастроекОбмена.КоличествоЭлементовВТранзакции, СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации, - КоличествоОбъектовОбработано - ); + КоличествоОбъектовОбработано); Если СтандартнаяОбработка = Истина Тогда @@ -3189,8 +3387,7 @@ СообщениеОбмена, СтруктураНастроекОбмена.КоличествоЭлементовВТранзакции, СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации, - КоличествоОбъектовОбработано - ); + КоличествоОбъектовОбработано); КонецЕсли; @@ -3199,8 +3396,7 @@ ЗаписьЖурналаРегистрации(СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации, УровеньЖурналаРегистрации.Ошибка, СтруктураНастроекОбмена.УзелИнформационнойБазы.Метаданные(), - СтруктураНастроекОбмена.УзелИнформационнойБазы, СтрокаСообщенияОбОшибке - ); + СтруктураНастроекОбмена.УзелИнформационнойБазы, СтрокаСообщенияОбОшибке); СтруктураНастроекОбмена.РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка; СтруктураНастроекОбмена.СтрокаСообщенияОбОшибке = СтрокаСообщенияОбОшибке; Возврат; @@ -3264,8 +3460,7 @@ СообщениеОбмена, КоличествоЭлементовВТранзакции = 0, КлючСообщенияЖурналаРегистрации = "", - КоличествоОбъектовОбработано = 0 - ) + КоличествоОбъектовОбработано = 0) Если ПустаяСтрока(КлючСообщенияЖурналаРегистрации) Тогда КлючСообщенияЖурналаРегистрации = СобытиеЖурналаРегистрацииОбменДанными(); @@ -3301,7 +3496,7 @@ ОбменДаннымиВызовСервера.ПроверитьКэшМеханизмаРегистрацииОбъектов(); // Получаем выборку изменённых данных - ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения); + ВыборкаИзменений = ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения); Если ИспользоватьТранзакции Тогда НачатьТранзакцию(); @@ -3458,10 +3653,18 @@ Возврат; КонецЕсли; - // Удаляем регистрацию изменений для узла отправителя сообщения - ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + ПараметрыРезервнойКопии = ПараметрыРезервнойКопии(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); - РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.СнятьПризнакНачальнойВыгрузкиДанных(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + УдалитьРегистрациюИзменений = Не ПараметрыРезервнойКопии.ВосстановленаРезервнаяКопия; + + Если УдалитьРегистрациюИзменений Тогда + + // Удаляем регистрацию изменений для узла отправителя сообщения + ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + + РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.СнятьПризнакНачальнойВыгрузкиДанных(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + + КонецЕсли; // считаем сколько объектов прочитали КоличествоЗаписанныхОбъектов = 0; @@ -3493,42 +3696,16 @@ ПолучениеЭлемента = ПолучениеЭлементаДанных.Авто; ОтправкаНазад = Ложь; - СтандартныеПодсистемыСервер.ПриПолученииДанныхОтПодчиненного(Данные, ПолучениеЭлемента, ОтправкаНазад); + СтандартныеПодсистемыСервер.ПриПолученииДанныхОтГлавного(Данные, ПолучениеЭлемента, ОтправкаНазад, ЧтениеСообщения.Отправитель); Если ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать Тогда Продолжить; КонецЕсли; - + ЭтоУдалениеОбъекта = (ТипЗнч(Данные) = Тип("УдалениеОбъекта")); КоличествоОбъектовОбработано = КоличествоОбъектовОбработано + 1; - // Проверяем на наличие коллизии изменений - Если ПланыОбмена.ИзменениеЗарегистрировано(ЧтениеСообщения.Отправитель, Данные) Тогда - - ОбъектМетаданных = ?(ЭтоУдалениеОбъекта, Данные.Ссылка.Метаданные(), Данные.Метаданные()); - - РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.ВыполненоСПредупреждениями; - - ПрименятьИзменения = МенеджерПланаОбмена.ПрименитьОбъектПриКоллизииИзменений(ЧтениеСообщения.Отправитель, Данные); - - Если ПрименятьИзменения Тогда - - ЗаписьЖурналаРегистрации(КлючСообщенияЖурналаРегистрации, УровеньЖурналаРегистрации.Предупреждение, - ОбъектМетаданных, Строка(Данные), НСтр("ru = 'Возникла коллизия изменений для объекта. Объект этой базы заменён версией объекта из сообщения обмена.'", - ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); - // - Иначе - - ЗаписьЖурналаРегистрации(КлючСообщенияЖурналаРегистрации, УровеньЖурналаРегистрации.Предупреждение, - ОбъектМетаданных, Строка(Данные), НСтр("ru = 'Возникла коллизия изменений для объекта. Объект этой базы не был изменён.'", - ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); - // - Продолжить; - КонецЕсли; - - КонецЕсли; - Если Не ОтправкаНазад Тогда Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; КонецЕсли; @@ -3566,34 +3743,12 @@ КонецЕсли; - // Выполняем проверку на коллизии дат запрета загрузки. - Отказ = Ложь; - СообщениеОбОшибке = ""; - ПередЗаписьюДанныхИзСообщенияОбмена(Данные, УзелИнформационнойБазы, Отказ, СообщениеОбОшибке); - - Если Отказ Тогда - // Если загрузка запрещена регистрируется ошибка и загрузка продолжается. - ЗаписьЖурналаРегистрации( - КлючСообщенияЖурналаРегистрации, - УровеньЖурналаРегистрации.Предупреждение, - УзелИнформационнойБазы.Метаданные(), - УзелИнформационнойБазы, - СообщениеОбОшибке); - Продолжить; - КонецЕсли; - Если ЭтоУдалениеОбъекта И РазрешитьУдалениеОбъектов Тогда Данные = УдалениеОбъекта; КонецЕсли; - Если ТипЗнч(Данные) <> Тип("УдалениеОбъекта") Тогда - - Данные.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); - - КонецЕсли; - // Выполняем попытку записи объекта Попытка Данные.Записать(); @@ -3635,24 +3790,21 @@ Если РезультатВыполненияОбмена = Перечисления.РезультатыВыполненияОбмена.Ошибка Тогда - Если ИспользоватьТранзакции Тогда - - ОтменитьТранзакцию(); - - КонецЕсли; - ЧтениеСообщения.ПрерватьЧтение(); + Если ИспользоватьТранзакции Тогда + ОтменитьТранзакцию(); + КонецЕсли; Иначе - Если ИспользоватьТранзакции Тогда - - ЗафиксироватьТранзакцию(); - - КонецЕсли; - ЧтениеСообщения.ЗакончитьЧтение(); + ПриВосстановленииРезервнойКопии(ПараметрыРезервнойКопии); + + Если ИспользоватьТранзакции Тогда + ЗафиксироватьТранзакцию(); + КонецЕсли; + КонецЕсли; ЧтениеXML.Закрыть(); @@ -3783,14 +3935,14 @@ // Возвращаемое значение: // Строка - путь к полученному файлу. // -Функция ПолучитьФайлИзХранилищаВСервисе(Знач ИдентификаторФайла, Знач УзелИнформационнойБазы, Знач РазмерЧасти = 1024, Знач Пароль = "") Экспорт +Функция ПолучитьФайлИзХранилищаВСервисе(Знач ИдентификаторФайла, Знач УзелИнформационнойБазы, Знач РазмерЧасти = 1024, Знач ПараметрыАутентификации = Неопределено) Экспорт // возвращаемое значение функции ИмяФайлаРезультата = ""; - Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы,, Пароль); + Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы,, ПараметрыАутентификации); - ОбменВыполняетсяВОднойСети = ОбменДаннымиПовтИсп.ОбменВыполняетсяВОднойЛокальнойСети(УзелИнформационнойБазы, Пароль); + ОбменВыполняетсяВОднойСети = ОбменДаннымиПовтИсп.ОбменВыполняетсяВОднойЛокальнойСети(УзелИнформационнойБазы, ПараметрыАутентификации); Если ОбменВыполняетсяВОднойСети Тогда @@ -3812,6 +3964,17 @@ ШаблонИмениФайла = "data.zip.[n]"; + // Протоколирование событий обмена + СтруктураНастроекОбмена = Новый Структура("КлючСообщенияЖурналаРегистрации"); + СтруктураНастроекОбмена.КлючСообщенияЖурналаРегистрации = ПолучитьКлючСообщенияЖурналаРегистрации(УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных); + + Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Начало получения сообщения обмена из Интернета (количество частей файла %1).'"), + Формат(КоличествоЧастей, "ЧН=0; ЧГ=0") + ); + ЗаписьЖурналаРегистрацииОбменаДанными(Комментарий, СтруктураНастроекОбмена); + // + Для НомерЧасти = 1 По КоличествоЧастей Цикл ДанныеЧасти = Неопределено; @@ -3842,6 +4005,16 @@ ВызватьИсключение(НСтр("ru = 'Файл архива не содержит данных.'")); КонецЕсли; + // Протоколирование событий обмена + ФайлАрхива = Новый Файл(ИмяАрхива); + + Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Окончание получения сообщения обмена из Интернета (размер сжатого сообщения обмена %1 Мб).'"), + Формат(Окр(ФайлАрхива.Размер() / 1024 / 1024, 3), "ЧН=0; ЧГ=0") + ); + ЗаписьЖурналаРегистрацииОбменаДанными(Комментарий, СтруктураНастроекОбмена); + // + ИмяФайла = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогСборки, Разархиватор.Элементы[0].Имя); Разархиватор.Извлечь(Разархиватор.Элементы[0], КаталогСборки); @@ -3874,14 +4047,14 @@ // Возвращаемое значение: // УникальныйИдентификатор - идентификатор файла в сервисе передачи файлов. // -Функция ПоместитьФайлВХранилищеВСервисе(Знач ИмяФайла, Знач УзелИнформационнойБазы, Знач РазмерЧасти = 1024, Знач Пароль = "") Экспорт +Функция ПоместитьФайлВХранилищеВСервисе(Знач ИмяФайла, Знач УзелИнформационнойБазы, Знач РазмерЧасти = 1024, Знач ПараметрыАутентификации = Неопределено) Экспорт // возвращаемое значение функции ИдентификаторФайла = Неопределено; - Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы,, Пароль); + Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы,, ПараметрыАутентификации); - ОбменВыполняетсяВОднойСети = ОбменДаннымиПовтИсп.ОбменВыполняетсяВОднойЛокальнойСети(УзелИнформационнойБазы, Пароль); + ОбменВыполняетсяВОднойСети = ОбменДаннымиПовтИсп.ОбменВыполняетсяВОднойЛокальнойСети(УзелИнформационнойБазы, ПараметрыАутентификации); Если ОбменВыполняетсяВОднойСети Тогда @@ -3948,8 +4121,8 @@ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); - Модуль.ПриПолученииФайлаИзХранилища(ИдентификаторФайла, ИмяФайла); + МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); + МодульОбменДаннымиВМоделиСервиса.ПриПолученииФайлаИзХранилища(ИдентификаторФайла, ИмяФайла); Иначе @@ -3984,8 +4157,8 @@ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); - Модуль.ПриПомещенииФайлаВХранилище(СтруктураЗаписи); + МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); + МодульОбменДаннымиВМоделиСервиса.ПриПомещенииФайлаВХранилище(СтруктураЗаписи); Иначе ПриПомещенииФайлаВХранилище(СтруктураЗаписи); @@ -3998,12 +4171,12 @@ // Определяет возможность передачи файлов между двумя базами через локальную сеть // // Параметры: -// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена, для которого выполняется получение сообщения обмена -// Пароль - Строка - Пароль для WS соединения +// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена, для которого выполняется получение сообщения обмена +// ПараметрыАутентификации - Структура. Содержит параметры аутентификации на веб-сервисе (Пользователь, Пароль). // -Функция ОбменВыполняетсяВОднойЛокальнойСети(Знач УзелИнформационнойБазы, Знач Пароль = "") Экспорт +Функция ОбменВыполняетсяВОднойЛокальнойСети(Знач УзелИнформационнойБазы, Знач ПараметрыАутентификации = Неопределено) Экспорт - Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы,, Пароль); + Прокси = ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы,, ПараметрыАутентификации); ИмяВременногоФайла = СтрЗаменить("test{GUID}.tmp", "GUID", Строка(Новый УникальныйИдентификатор)); @@ -4789,8 +4962,7 @@ Если Реквизит.Тип.Типы().Количество() <> 1 Тогда СтрокаСообщения = НСтр("ru = 'Составной тип данных для значений по умолчанию не поддерживается. - |Реквизит ""%1"".'" - ); + |Реквизит ""%1"".'"); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Реквизит.ПолноеИмя()); ВызватьИсключение СтрокаСообщения; КонецЕсли; @@ -4800,8 +4972,7 @@ Если Не ОбщегоНазначения.ЭтоСправочник(ОбъектМетаданных) Тогда СтрокаСообщения = НСтр("ru = 'Выбор значений по умолчанию поддерживается только для справочников. - |Реквизит ""%1"".'" - ); + |Реквизит ""%1"".'"); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Реквизит.ПолноеИмя()); ВызватьИсключение СтрокаСообщения; КонецЕсли; @@ -5016,14 +5187,10 @@ Если ПолучитьФункциональнуюОпцию("ИспользоватьСинхронизациюДанных") <> Истина Тогда - Сообщение = НСтр("ru = 'Выполнение обмена запрещено администратором.'"); - СообщениеДляЖурналаРегистрации = НСтр("ru = 'Выполнение обмена запрещено администратором.'", - ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); - - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), УровеньЖурналаРегистрации.Ошибка,,, СообщениеДляЖурналаРегистрации); - - ВызватьИсключение Сообщение; + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), УровеньЖурналаРегистрации.Ошибка,,, + НСтр("ru = 'Выполнение обмена запрещено администратором.'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); + ВызватьИсключение НСтр("ru = 'Выполнение обмена запрещено администратором.'"); КонецЕсли; КонецПроцедуры @@ -5052,6 +5219,51 @@ КонецПроцедуры +// Для внутреннего использования +// +Процедура ПроверитьВозможностьВнешнегоСоединения() + + Если ОбщегоНазначения.ЭтоLinuxСервер() Тогда + + ВызватьИсключение НСтр("ru = 'Выполнение обмена данными через прямое подключение на сервере под управлением ОС Linux недоступно. + |Для выполнения обмена данными через прямое подключение требуется использовать ОС Windows.'"); + + КонецЕсли; + +КонецПроцедуры + +// Возвращает признак наличия у пользователя прав на выполнение синхронизации данных. +// Выполнять синхронизацию данных может, либо полноправный пользователь, +// либо пользователь с правами поставляемого профиля "Синхронизация данных с другими программами". +// +// Параметры: +// Пользователь (необязательный) – ПользовательИнформационнойБазы, Неопределено. +// Пользователь, для которого необходимо вычислить признак разрешения использования синхронизации данных. +// Если параметр не задан, то функция вычисляется для текущего пользователя информационной базы. +// +Функция СинхронизацияДанныхРазрешена(Знач Пользователь = Неопределено) Экспорт + + Если Пользователь = Неопределено Тогда + Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); + КонецЕсли; + + Если Пользователь.Роли.Содержит(Метаданные.Роли.ПолныеПрава) Тогда + Возврат Истина; + КонецЕсли; + + РолиПрофиля = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( + РолиПрофиляДоступаСинхронизацияДанныхСДругимиПрограммами()); + Для Каждого Роль Из РолиПрофиля Цикл + + Если Не Пользователь.Роли.Содержит(Метаданные.Роли.Найти(СокрЛП(Роль))) Тогда + Возврат Ложь; + КонецЕсли; + + КонецЦикла; + + Возврат Истина; +КонецФункции + // // Заполняет список значений доступными видами транспорта для узла плана обмена @@ -5101,19 +5313,15 @@ СтрокаСообщения = НСтр("ru = '%1, %2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, СтруктураНастроекОбмена.РезультатВыполненияОбмена, - СтруктураНастроекОбмена.ДействиеПриОбмене - ); + СтруктураНастроекОбмена.ДействиеПриОбмене); Иначе СтрокаСообщения = НСтр("ru = '%1, %2; Объектов обработано: %3'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, СтруктураНастроекОбмена.РезультатВыполненияОбмена, СтруктураНастроекОбмена.ДействиеПриОбмене, - СтруктураНастроекОбмена.КоличествоОбъектовОбработано - ); + СтруктураНастроекОбмена.КоличествоОбъектовОбработано); КонецЕсли; - ЗаписьЖурналаРегистрацииОбменаДанными(СтрокаСообщения, СтруктураНастроекОбмена); - СтруктураНастроекОбмена.ДатаОкончания = ТекущаяДатаСеанса(); // фиксируем состояние обмена в РС @@ -5124,8 +5332,12 @@ ЗафиксироватьУспешныйОбменДаннымиВРегистреСведений(СтруктураНастроекОбмена); + РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.СнятьПризнакОтправкиДанных(СтруктураНастроекОбмена.УзелИнформационнойБазы); + КонецЕсли; + ЗаписьЖурналаРегистрацииОбменаДанными(СтрокаСообщения, СтруктураНастроекОбмена); + КонецПроцедуры // Фиксирует состояние обмена данными в регистре сведений СостоянияОбменовДанными @@ -5194,6 +5406,16 @@ КонецПроцедуры +Процедура ЗаписатьСобытиеПолученияДанных(Знач УзелИнформационнойБазы, Знач Комментарий, Знач ЭтоОшибка = Ложь) + + Уровень = ?(ЭтоОшибка, УровеньЖурналаРегистрации.Ошибка, УровеньЖурналаРегистрации.Информация); + + КлючСообщенияЖурналаРегистрации = ПолучитьКлючСообщенияЖурналаРегистрации(УзелИнформационнойБазы, Перечисления.ДействияПриОбмене.ЗагрузкаДанных); + + ЗаписьЖурналаРегистрации(КлючСообщенияЖурналаРегистрации, Уровень,,, Комментарий); + +КонецПроцедуры + // Для внутреннего использования // Процедура ФормаНастройкиУзлаОбработчикПриСозданииНаСервере(Форма, ИмяРеквизитаФормы) @@ -5526,23 +5748,6 @@ Возврат ПараметрыПодключения; КонецФункции -// Для внутреннего использования -// -Функция СоздатьВременныйКаталогСообщенийОбмена(ИмяВременногоКаталога, СтрокаСообщенияОбОшибке = "") - - ИмяВременногоКаталога = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогВременныхФайлов(), ИмяВременногоКаталогаСообщенийОбмена()); - - // создаем временный каталог для сообщений обмена - Попытка - СоздатьКаталог(ИмяВременногоКаталога); - Исключение - СтрокаСообщенияОбОшибке = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - Возврат Ложь; - КонецПопытки; - - Возврат Истина; -КонецФункции - // Для внутреннего использования // Функция ДобавитьЛитералКИмениФайла(Знач ПолноеИмяФайла, Знач Литерал) @@ -5651,8 +5856,7 @@ ДанныеСообщения, Знач КоличествоЭлементовВТранзакции, Знач ИмяСобытияЖурналаРегистрации, - КоличествоОтправленныхОбъектов - ) + КоличествоОтправленныхОбъектов) ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( "СтандартныеПодсистемы.ОбменДанными\ПриВыгрузкеДанныхСлужебный"); @@ -5678,8 +5882,7 @@ ДанныеСообщения, Знач КоличествоЭлементовВТранзакции, Знач ИмяСобытияЖурналаРегистрации, - КоличествоОтправленныхОбъектов - ) + КоличествоОтправленныхОбъектов) ОбменДаннымиПереопределяемый.ПриВыгрузкеДанных(СтандартнаяОбработка, Получатель, @@ -5687,8 +5890,7 @@ ДанныеСообщения, КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, - КоличествоОтправленныхОбъектов - ); + КоличествоОтправленныхОбъектов); КонецПроцедуры @@ -5700,8 +5902,7 @@ ДанныеСообщения, Знач КоличествоЭлементовВТранзакции, Знач ИмяСобытияЖурналаРегистрации, - КоличествоПолученныхОбъектов - ) + КоличествоПолученныхОбъектов) ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( "СтандартныеПодсистемы.ОбменДанными\ПриЗагрузкеДанныхСлужебный"); @@ -5727,8 +5928,7 @@ ДанныеСообщения, Знач КоличествоЭлементовВТранзакции, Знач ИмяСобытияЖурналаРегистрации, - КоличествоПолученныхОбъектов - ) + КоличествоПолученныхОбъектов) ОбменДаннымиПереопределяемый.ПриЗагрузкеДанных(СтандартнаяОбработка, Отправитель, @@ -5736,8 +5936,7 @@ ДанныеСообщения, КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, - КоличествоПолученныхОбъектов - ); + КоличествоПолученныхОбъектов); КонецПроцедуры @@ -6540,8 +6739,7 @@ УстановитьПривилегированныйРежим(Истина); Результат = Новый Структура("ПланОбменаСуществует, ПрефиксИнформационнойБазы, ПрефиксИнформационнойБазыПоУмолчанию, - |НаименованиеИнформационнойБазы, НаименованиеИнформационнойБазыПоУмолчанию, НастройкиПараметровУчетаЗаданы, КодЭтогоУзла" - ); + |НаименованиеИнформационнойБазы, НаименованиеИнформационнойБазыПоУмолчанию, НастройкиПараметровУчетаЗаданы, КодЭтогоУзла"); Результат.ПланОбменаСуществует = (Метаданные.ПланыОбмена.Найти(ИмяПланаОбмена) <> Неопределено); @@ -6691,7 +6889,7 @@ УстановитьПривилегированныйРежим(Истина); - Параметры.Вставить("ГлавныйУзел", ПланыОбмена.ГлавныйУзел()); + Параметры.Вставить("ГлавныйУзел", ГлавныйУзел()); КонецПроцедуры @@ -6742,8 +6940,7 @@ СтрокаСообщения = НСтр("ru = 'Для плана(ов) обмена %1 используются правила обмена, загруженные из файла. |Эти правила могут быть несовместимы с новой версией программы. |Для предупреждения возможного возникновения ошибок при работе с программой рекомендуется актуализировать правила обмена из файла.'", - ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка() - ); + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(ПланыОбменаМассив)); ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, СтрокаСообщения); @@ -6804,8 +7001,7 @@ Функция УстановитьВнешнееСоединениеСБазой(СтруктураНастроек) Экспорт Результат = ОбщегоНазначения.УстановитьВнешнееСоединениеСБазой( - ЗаполнитьПараметрыПодключенияВнешнегоСоединения(СтруктураНастроек) - ); + ЗаполнитьПараметрыПодключенияВнешнегоСоединения(СтруктураНастроек)); ВнешнееСоединение = Результат.Соединение; Если ВнешнееСоединение<>Неопределено Тогда @@ -6856,8 +7052,7 @@ СтруктураНастроек.WSИмяПользователя, СтруктураНастроек.WSПароль, СтруктураНастроек.WSТаймаут, - ДелатьКонтрольныйВызов - ); + ДелатьКонтрольныйВызов); Исключение СообщениеПользователю = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); СтрокаСообщенияОбОшибке = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); @@ -6921,17 +7116,16 @@ // Для внутреннего использования // -Функция ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке = "", Пароль = "") +Функция ПолучитьWSПроксиДляУзлаИнформационнойБазы(УзелИнформационнойБазы, СтрокаСообщенияОбОшибке = "", ПараметрыАутентификации = Неопределено) - СтруктураНастроек = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаWS(УзелИнформационнойБазы, Пароль); + СтруктураНастроек = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаWS(УзелИнформационнойБазы, ПараметрыАутентификации); Попытка ВерсииКорреспондента = ОбменДаннымиПовтИсп.ВерсииКорреспондента(СтруктураНастроек); Исключение СтрокаСообщенияОбОшибке = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииУстановкаПодключенияКWebСервису(), - УровеньЖурналаРегистрации.Ошибка,,, СтрокаСообщенияОбОшибке - ); + УровеньЖурналаРегистрации.Ошибка,,, СтрокаСообщенияОбОшибке); Возврат Неопределено; КонецПопытки; @@ -7006,9 +7200,9 @@ Попытка ВерсииКорреспондента = ОбменДаннымиПовтИсп.ВерсииКорреспондента(СтруктураНастроек); Исключение + СброситьПарольСинхронизацииДанных(Корреспондент); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации, - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); СообщениеПользователю = КраткоеПредставлениеПервойОшибки(ИнформацияОбОшибке()); Возврат Ложь; КонецПопытки; @@ -7021,21 +7215,26 @@ WSПрокси = ПолучитьWSПрокси_2_1_1_7(СтруктураНастроек,, СообщениеПользователю, 5); Если WSПрокси = Неопределено Тогда + СброситьПарольСинхронизацииДанных(Корреспондент); Возврат Ложь; КонецЕсли; Попытка - Возврат WSПрокси.TestConnection( + ЕстьПодключение = WSПрокси.TestConnection( ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(Корреспондент), ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ОбменДаннымиПовтИсп.ПолучитьЭтотУзелПланаОбменаПоСсылке(Корреспондент), "Код"), - СообщениеПользователю - ); + СообщениеПользователю); + Если ЕстьПодключение Тогда + УстановитьПарольСинхронизацииДанных(Корреспондент, СтруктураНастроек.WSПароль); + КонецЕсли; + + Возврат ЕстьПодключение; Исключение + СброситьПарольСинхронизацииДанных(Корреспондент); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации, - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); СообщениеПользователю = КраткоеПредставлениеПервойОшибки(ИнформацияОбОшибке()); Возврат Ложь; КонецПопытки; @@ -7050,7 +7249,15 @@ КонецЕсли; - Возврат WSПрокси <> Неопределено; + ЕстьПодключение = (WSПрокси <> Неопределено); + + Если ЕстьПодключение Тогда + УстановитьПарольСинхронизацииДанных(Корреспондент, СтруктураНастроек.WSПароль); + Иначе + СброситьПарольСинхронизацииДанных(Корреспондент); + КонецЕсли; + + Возврат ЕстьПодключение; КонецФункции // Выводит сообщение об ошибке и выставляет параметр Отказ в "Истина". @@ -7162,8 +7369,7 @@ Процедура ЗагрузитьПравилаДляОбменаДанными(Отказ, Знач ИмяПланаОбмена, Знач ВидПравил, - Знач ИмяМакетаПравил - ) + Знач ИмяМакетаПравил) СтруктураЗаписи = Новый Структура; СтруктураЗаписи.Вставить("ИмяПланаОбмена", ИмяПланаОбмена); @@ -7345,6 +7551,9 @@ УстановитьПривилегированныйРежим(Истина); + // обновляем повторно используемые значения Механизма регистрации объектов + ОбменДаннымиВызовСервера.ПроверитьКэшМеханизмаРегистрацииОбъектов(); + СтандартнаяОбработка = Истина; ОбменДаннымиПереопределяемый.РегистрацияИзмененийНачальнойВыгрузкиДанных(УзелИнформационнойБазы, СтандартнаяОбработка, Данные); @@ -7383,6 +7592,17 @@ КонецПроцедуры +// Устанавливает признак повторения загрузки при ошибке загрузки или обновления. +// Очищает хранилище сообщения обмена, полученного из главного узла РИБ. +// +Процедура ВключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском() + + Константы.СообщениеОбменаДаннымиИзГлавногоУзла.Установить(Новый ХранилищеЗначения(Неопределено)); + + Константы.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском.Установить(Истина); + +КонецПроцедуры + // Для внутреннего использования // Функция СостояниеДлительнойОперацииДляУзлаИнформационнойБазы(Знач УзелИнформационнойБазы, @@ -7421,10 +7641,37 @@ // Функция ЭтоПодчиненныйУзелРИБ() Экспорт - Возврат ПланыОбмена.ГлавныйУзел() <> Неопределено; + Возврат ГлавныйУзел() <> Неопределено; КонецФункции +// Получает узел распределенной информационной базы, являющийся главным для текущей информационной базы при условии, +// что распределенная информационная база создана на базе плана обмена, обслуживаемым подсистемой обмена данными БСП. +// +// Возвращаемое значение: +// Тип: ПланОбменаСсылка.<Имя плана обмена>; Неопределено. +// Если текущая информационная база не является узлом распределенной информационной базы +// или главный узел для нее не определен (она сама является корневым узлом) +// или распределенная информационная база создана на базе плана обмена, который не обслуживается подсистемой обмена данными БСП, +// то метод возвращает Неопределено. +// +Функция ГлавныйУзел() Экспорт + + Результат = ПланыОбмена.ГлавныйУзел(); + + Если Результат <> Неопределено Тогда + + Если Не ОбменДаннымиПовтИсп.ЭтоУзелОбменаДаннымиБСП(Результат) Тогда + + Результат = Неопределено; + + КонецЕсли; + + КонецЕсли; + + Возврат Результат; +КонецФункции + // Возвращает массив номеров версий, поддерживаемых интерфейсом корреспондента для подсистемы ОбменДанными. // // Параметры: @@ -7452,6 +7699,84 @@ Возврат КраткоеПредставлениеОшибки(ИнформацияОбОшибке); КонецФункции +// Создает временный каталог сообщений обмена. +// Фиксирует имя каталога в регистре для последующего его удаления. +// +Функция СоздатьВременныйКаталогСообщенийОбмена() Экспорт + + Результат = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ОбщегоНазначенияПовтИсп.КаталогВременногоХранилищаФайлов(), ИмяВременногоКаталогаСообщенийОбмена()); + + СоздатьКаталог(Результат); + + Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + + УстановитьПривилегированныйРежим(Истина); + + ПоместитьФайлВХранилище(Результат); + + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Возвращает признак необходимости загрузки сообщения обмена данными +Функция ЗагрузитьСообщениеОбменаДанными() Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Возврат Константы.ЗагрузитьСообщениеОбменаДанными.Получить() = Истина; + +КонецФункции + +Функция ИнвертироватьПолучениеЭлементаДанныхПоУмолчанию(Знач ПолучениеОтГлавного) Экспорт + + Возврат ?(ПолучениеОтГлавного, ПолучениеЭлементаДанных.Игнорировать, ПолучениеЭлементаДанных.Принять); + +КонецФункции + +Функция ПолучитьКонтекстОбъекта(Знач Объект) Экспорт + + Результат = Новый Структура; + + Для Каждого Реквизит Из Объект.Метаданные().Реквизиты Цикл + + Результат.Вставить(Реквизит.Имя, Объект[Реквизит.Имя]); + + КонецЦикла; + + Для Каждого ТабличнаяЧасть Из Объект.Метаданные().ТабличныеЧасти Цикл + + Результат.Вставить(ТабличнаяЧасть.Имя, Объект[ТабличнаяЧасть.Имя].Выгрузить()); + + КонецЦикла; + + Возврат Результат; +КонецФункции + +Процедура ЗагрузитьКонтекстОбъекта(Знач Контекст, Знач Объект) Экспорт + + Для Каждого Реквизит Из Объект.Метаданные().Реквизиты Цикл + + Если Контекст.Свойство(Реквизит.Имя) Тогда + + Объект[Реквизит.Имя] = Контекст[Реквизит.Имя]; + + КонецЕсли; + + КонецЦикла; + + Для Каждого ТабличнаяЧасть Из Объект.Метаданные().ТабличныеЧасти Цикл + + Если Контекст.Свойство(ТабличнаяЧасть.Имя) Тогда + + Объект[ТабличнаяЧасть.Имя].Загрузить(Контекст[ТабличнаяЧасть.Имя]); + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + // // Для внутреннего использования @@ -7511,6 +7836,58 @@ Возврат ОбработкаОбменаДанными; КонецФункции +// Работа с паролями синхронизации данных + +// Возвращает значения пароля синхронизации данных для заданного узла. +// Если пароля нет, то возвращается Неопределено. +// +// Возвращаемое значение: +// Тип: Строка, Неопределено - значения пароля синхронизации данных. +// +Функция ПарольСинхронизацииДанных(Знач УзелИнформационнойБазы) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + Возврат ПараметрыСеанса.ПаролиСинхронизацииДанных.Получить(УзелИнформационнойБазы); +КонецФункции + +// Возвращает признак того, что пароль синхронизации данных был задан пользователем. +// +Функция ПарольСинхронизацииДанныхЗадан(Знач УзелИнформационнойБазы) Экспорт + + Возврат ПарольСинхронизацииДанных(УзелИнформационнойБазы) <> Неопределено; + +КонецФункции + +// Устанавливает пароль синхронизации данных для заданного узла. +// Пароль сохраняется в параметре сеанса. +// +Процедура УстановитьПарольСинхронизацииДанных(Знач УзелИнформационнойБазы, Знач Пароль) + + УстановитьПривилегированныйРежим(Истина); + + ПаролиСинхронизацииДанных = Новый Соответствие; + + Для Каждого Элемент Из ПараметрыСеанса.ПаролиСинхронизацииДанных Цикл + + ПаролиСинхронизацииДанных.Вставить(Элемент.Ключ, Элемент.Значение); + + КонецЦикла; + + ПаролиСинхронизацииДанных.Вставить(УзелИнформационнойБазы, Пароль); + + ПараметрыСеанса.ПаролиСинхронизацииДанных = Новый ФиксированноеСоответствие(ПаролиСинхронизацииДанных); + +КонецПроцедуры + +// Сбрасывает пароль синхронизации данных для заданного узла. +// +Процедура СброситьПарольСинхронизацииДанных(Знач УзелИнформационнойБазы) + + УстановитьПарольСинхронизацииДанных(УзелИнформационнойБазы, Неопределено); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Контроль неразделенных данных @@ -7527,8 +7904,7 @@ ЗаписьЖурналаРегистрации( ПредставлениеИсключения, УровеньЖурналаРегистрации.Ошибка, - Данные.Метаданные() - ); + Данные.Метаданные()); ВызватьИсключение ПредставлениеИсключения; КонецЕсли; @@ -8252,8 +8628,7 @@ // Процедура ВыполнитьИнициализациюСтруктурыНастроекОбменаДляУзлаИнформационнойБазы( СтруктураНастроекОбмена, - ИспользоватьНастройкиТранспорта - ) + ИспользоватьНастройкиТранспорта) СтруктураСвойств = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СтруктураНастроекОбмена.УзелИнформационнойБазы, "Код, Наименование"); @@ -8285,8 +8660,7 @@ СтруктураНастроекОбмена.КоличествоЭлементовВТранзакции = ?(СтруктураНастроекОбмена.ДействиеПриОбмене = Перечисления.ДействияПриОбмене.ЗагрузкаДанных, СтруктураНастроекОбмена.НастройкиТранспорта.КоличествоЭлементовВТранзакцииЗагрузкиДанных, - СтруктураНастроекОбмена.НастройкиТранспорта.КоличествоЭлементовВТранзакцииВыгрузкиДанных - ); + СтруктураНастроекОбмена.НастройкиТранспорта.КоличествоЭлементовВТранзакцииВыгрузкиДанных); Если СтруктураНастроекОбмена.НастройкиТранспорта.Свойство("WSИспользоватьПередачуБольшогоОбъемаДанных") Тогда СтруктураНастроекОбмена.ИспользоватьПередачуБольшогоОбъемаДанных = СтруктураНастроекОбмена.НастройкиТранспорта.WSИспользоватьПередачуБольшогоОбъемаДанных; @@ -8644,7 +9018,13 @@ ОбработкаОбменаДаннымиXML.СохраненныеНастройки = ПравилаКонвертацииОбъектов; - ОбработкаОбменаДаннымиXML.ВосстановитьПравилаИзВнутреннегоФормата(); + Попытка + ОбработкаОбменаДаннымиXML.ВосстановитьПравилаИзВнутреннегоФормата(); + Исключение + ЗаписьЖурналаРегистрацииОбменаДанными(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), СтруктураНастроекОбмена, Истина); + ЗафиксироватьЗавершениеИнициализацииОбмена(СтруктураНастроекОбмена); + Возврат; + КонецПопытки; КонецПроцедуры @@ -8725,20 +9105,27 @@ // Процедура УстановитьНастройкиРежимаОтладкиДляОбработки(ОбработкаОбменаДанными, СтруктураНастроекОбмена) - ЗаполнитьЗначенияСвойств(ОбработкаОбменаДанными, СтруктураНастроекОбмена); - - РежимПротоколированияОбменаДанными = Неопределено; - - Если СтруктураНастроекОбмена.Свойство("РежимПротоколированияОбменаДанными", РежимПротоколированияОбменаДанными) - И РежимПротоколированияОбменаДанными Тогда + Если СтруктураНастроекОбмена.Свойство("ИмяФайлаВнешнейОбработкиОтладкиВыгрузки") Тогда - Если СтруктураНастроекОбмена.ИмяФайлаПротоколаОбмена = "" Тогда - ОбработкаОбменаДанными.ВыводВОкноСообщенийИнформационныхСообщений = Истина; - ОбработкаОбменаДанными.ВыводВПротоколИнформационныхСообщений = Ложь; - Иначе - ОбработкаОбменаДанными.ВыводВОкноСообщенийИнформационныхСообщений = Ложь; - ОбработкаОбменаДанными.ВыводВПротоколИнформационныхСообщений = Истина; - ОбработкаОбменаДанными.ИмяФайлаПротоколаОбмена = СтруктураНастроекОбмена.ИмяФайлаПротоколаОбмена; + ОбработкаОбменаДанными.ОтладкаОбработчиковВыгрузки = СтруктураНастроекОбмена.ОтладкаОбработчиковВыгрузки; + ОбработкаОбменаДанными.ОтладкаОбработчиковЗагрузки = СтруктураНастроекОбмена.ОтладкаОбработчиковЗагрузки; + ОбработкаОбменаДанными.ИмяФайлаВнешнейОбработкиОтладкиВыгрузки = СтруктураНастроекОбмена.ИмяФайлаВнешнейОбработкиОтладкиВыгрузки; + ОбработкаОбменаДанными.ИмяФайлаВнешнейОбработкиОтладкиЗагрузки = СтруктураНастроекОбмена.ИмяФайлаВнешнейОбработкиОтладкиЗагрузки; + ОбработкаОбменаДанными.РежимПротоколированияОбменаДанными = СтруктураНастроекОбмена.РежимПротоколированияОбменаДанными; + ОбработкаОбменаДанными.ИмяФайлаПротоколаОбмена = СтруктураНастроекОбмена.ИмяФайлаПротоколаОбмена; + ОбработкаОбменаДанными.ПродолжитьПриОшибке = СтруктураНастроекОбмена.ПродолжитьПриОшибке; + + Если СтруктураНастроекОбмена.РежимПротоколированияОбменаДанными Тогда + + Если СтруктураНастроекОбмена.ИмяФайлаПротоколаОбмена = "" Тогда + ОбработкаОбменаДанными.ВыводВОкноСообщенийИнформационныхСообщений = Истина; + ОбработкаОбменаДанными.ВыводВПротоколИнформационныхСообщений = Ложь; + Иначе + ОбработкаОбменаДанными.ВыводВОкноСообщенийИнформационныхСообщений = Ложь; + ОбработкаОбменаДанными.ВыводВПротоколИнформационныхСообщений = Истина; + ОбработкаОбменаДанными.ИмяФайлаПротоколаОбмена = СтруктураНастроекОбмена.ИмяФайлаПротоколаОбмена; + + КонецЕсли; КонецЕсли; @@ -8840,6 +9227,141 @@ // КонецФункции +// Регистрирует ошибки при отложенном проведении документа в мониторе проблем обмена +// +// Параметры: +// Объект - ДокументОбъект - Документ при отложенном проведении которого возникли ошибки +// УзелОбмена - ПланОбменаСсылка - Узел информационной базы из которой получен документ +// СообщениеОбОшибке - Сообщение об ошибке для журнала регистрации +// +// Примечание: СообщениеОбОшибке содержит в себе текст сообщения для журнала регистрации. +// Рекомендуется передавать в качестве этого параметра КраткоеПредставлениеОшибки(ИнформацияОбОшибке()). +// Текст сообщения для отображения в мониторе формируется из системных сообщений пользователю, которые +// были сформированы, но еще не были выведены пользователю. Поэтому рекомендуется, чтобы к моменту вызова +// данного метода в буфере сообщений системы не содержалось сообщений. +// +// Пример вызова процедуры при загрузке документа в информационную базу: +// +// Процедура ПровестиДокументПриЗагрузке(Документ, УзелОбмена) +// Документ.ОбменДанными.Загрузка = Истина; +// Документ.Записать(); +// Документ.ОбменДанными.Загрузка = Ложь; +// Отказ = Ложь; +// +// Попытка +// Документ.Записать(РежимЗаписиДокумента.Проведение); +// Исключение +// СообщениеОбОшибке = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); +// Отказ = Истина; +// КонецПопытки; +// +// Если Отказ Тогда +// ЗарегистрироватьОшибкуПроведенияДокумента(Документ, УзелОбмена, СообщениеОбОшибке); +// КонецЕсли; +// +// КонецПроцедуры; +// +Процедура ЗарегистрироватьОшибкуПроведенияДокумента(Объект, УзелОбмена, СообщениеОбОшибке) Экспорт + + СтрокаСообщения = НСтр("ru = 'Ошибка при отложенном проведении документа: %1. Описание ошибки: %2'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); + СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Строка(Объект), СообщениеОбОшибке); + + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), УровеньЖурналаРегистрации.Предупреждение, ,, СтрокаСообщения); + + СообщенияПользователю = ПолучитьСообщенияПользователю(Истина); + ТекстОшибки = ""; + Для Каждого Сообщение Из СообщенияПользователю Цикл + ТекстОшибки = ТекстОшибки + Сообщение.Текст + Символы.ПС; + КонецЦикла; + + РегистрыСведений.РезультатыОбменаДанными.ЗарегистрироватьОшибкуПроверкиОбъекта(Объект.Ссылка, УзелОбмена, + ТекстОшибки, Перечисления.ТипыПроблемОбменаДанными.НепроведенныйДокумент); + + +КонецПроцедуры + +// Регистрирует ошибки при отложенной записи объекта в мониторе проблем обмена +// +// Параметры: +// Объект - Объект ссылочного типа - Объект при отложенной записи которого возникли ошибки +// УзелОбмена - ПланОбменаСсылка - Узел информационной базы из которой получен объект +// СообщениеОбОшибке - Сообщение об ошибке для журнала регистрации +// +// Примечание: СообщениеОбОшибке содержит в себе текст сообщения для журнала регистрации. +// Рекомендуется передавать в качестве этого параметра КраткоеПредставлениеОшибки(ИнформацияОбОшибке()). +// Текст сообщения для отображения в мониторе формируется из системных сообщений пользователю, которые +// были сформированы, но еще не были выведены пользователю. Поэтому рекомендуется, чтобы к моменту вызова +// данного метода в буфере сообщений системы не содержалось сообщений. +// +// Пример вызова процедуры при записи объекта в информационную базу: +// +// Процедура ЗаписатьОбъектПриЗагрузке(Объект, УзелОбмена) +// Объект.ОбменДанными.Загрузка = Истина; +// Объект.Записать(); +// Объект.ОбменДанными.Загрузка = Ложь; +// Отказ = Ложь; +// +// Попытка +// Объект.Записать(); +// Исключение +// СообщениеОбОшибке = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); +// Отказ = Истина; +// КонецПопытки; +// +// Если Отказ Тогда +// ЗарегистрироватьОшибкуЗаписиОбъекта(Объект, УзелОбмена, СообщениеОбОшибке); +// КонецЕсли; +// +// КонецПроцедуры; +// +Процедура ЗарегистрироватьОшибкуЗаписиОбъекта(Объект, УзелОбмена, СообщениеОбОшибке) Экспорт + + СтрокаСообщения = НСтр("ru = 'Ошибка при отложенной запись объекта: %1. Описание ошибки: %2'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); + СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Строка(Объект), СообщениеОбОшибке); + + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииОбменДанными(), УровеньЖурналаРегистрации.Предупреждение, ,, СтрокаСообщения); + + СообщенияПользователю = ПолучитьСообщенияПользователю(Истина); + ТекстОшибки = ""; + Для Каждого Сообщение Из СообщенияПользователю Цикл + ТекстОшибки = ТекстОшибки + Сообщение.Текст + Символы.ПС; + КонецЦикла; + + РегистрыСведений.РезультатыОбменаДанными.ЗарегистрироватьОшибкуПроверкиОбъекта(Объект.Ссылка, УзелОбмена, + ТекстОшибки, Перечисления.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Работа с монитором проблем обмена данными + +// Для внутреннего использования +// +Функция КоличествоПроблемОбменаДанными(УзлыОбмена = Неопределено, ТипПроблемы = Неопределено, + УчитыватьПроигнорированные = Ложь, Период = Неопределено, СтрокаПоиска = "") Экспорт + + Возврат РегистрыСведений.РезультатыОбменаДанными.КоличествоПроблем(УзлыОбмена, + ТипПроблемы, УчитыватьПроигнорированные, Период, СтрокаПоиска); + +КонецФункции + +// Для внутреннего использования +// +Функция КоличествоПроблемВерсионирования(УзлыОбмена = Неопределено, ЭтоКоличествоКоллизий = Неопределено, + УчитыватьПроигнорированные = Ложь, Период = Неопределено, СтрокаПоиска = "") Экспорт + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда + МодульВерсионированиеОбъектов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); + Возврат МодульВерсионированиеОбъектов.КоличествоКоллизийИлиНепринятых(УзлыОбмена, + ЭтоКоличествоКоллизий, УчитыватьПроигнорированные, Период, СтрокаПоиска); + КонецЕсли; + + Возврат 0; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ @@ -8911,8 +9433,7 @@ КонецЕсли; Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Последняя синхронизация: %1'"), - ОтносительнаяДатаСинхронизации(ДатаСинхронизации) - ); + ОтносительнаяДатаСинхронизации(ДатаСинхронизации)); КонецФункции // Возвращает представление относительной даты синхронизации. @@ -9107,9 +9628,20 @@ // Для внутреннего использования // +Функция СобытиеЖурналаРегистрацииОбменДанными() Экспорт + + Возврат НСтр("ru = 'Обмен данными'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); + +КонецФункции + +// Возвращает Истина при необходимости обновления конфигурации информационной базы подчиненного узла РИБ. +// В главном узле всегда - Ложь. +// +// Копия функции ОбщегоНазначения.ТребуетсяОбновлениеКонфигурацииПодчиненногоУзлаРИБ +// Функция ТребуетсяУстановкаОбновления() Экспорт - Возврат КонфигурацияИзменена() И ЭтоПодчиненныйУзелРИБ(); + Возврат ЭтоПодчиненныйУзелРИБ() И КонфигурацияИзменена(); КонецФункции @@ -9200,7 +9732,7 @@ // Обертки фоновых процедур интерактивного изменения выгрузки // Процедура ИнтерактивноеИзменениеВыгрузки_СформироватьТабличныйДокументПользователя(СтруктураОбработки, АдресРезультата, ПолноеИмяМетаданных, Представление) Экспорт - ОбъектОтчета = ОбъектОтчетаПоНастройкам(СтруктураОбработки); + ОбъектОтчета = ИнтерактивноеИзменениеВыгрузки_ОбъектПоНастройкам(СтруктураОбработки); Результат = ОбъектОтчета.СформироватьТабличныйДокументПользователя(ПолноеИмяМетаданных, Представление); ПоместитьВоВременноеХранилище(Результат, АдресРезультата); @@ -9209,7 +9741,7 @@ // Для внутреннего использования // Процедура ИнтерактивноеИзменениеВыгрузки_СформироватьДеревоЗначений(СтруктураОбработки, АдресРезультата, СписокИменМетаданных) Экспорт - ОбъектОтчета = ОбъектОтчетаПоНастройкам(СтруктураОбработки); + ОбъектОтчета = ИнтерактивноеИзменениеВыгрузки_ОбъектПоНастройкам(СтруктураОбработки); Результат = ОбъектОтчета.СформироватьДеревоЗначений(СписокИменМетаданных); ПоместитьВоВременноеХранилище(Результат, АдресРезультата); @@ -9218,14 +9750,14 @@ // Для внутреннего использования // Процедура ИнтерактивноеИзменениеВыгрузки_ЗарегистрироватьДополнительныеИзменения(СтруктураОбработки) Экспорт - ОбъектОтчета = ОбъектОтчетаПоНастройкам(СтруктураОбработки); + ОбъектОтчета = ИнтерактивноеИзменениеВыгрузки_ОбъектПоНастройкам(СтруктураОбработки); ОбъектОтчета.ЗарегистрироватьДополнительныеИзменения(); КонецПроцедуры // Для внутреннего использования // -Функция ОбъектОтчетаПоНастройкам(Знач Настройки) +Функция ИнтерактивноеИзменениеВыгрузки_ОбъектПоНастройкам(Знач Настройки) ОбъектОтчета = Обработки.ИнтерактивноеИзменениеВыгрузки.Создать(); ОбъектОтчета.КомпоновщикОтбораВсехДокументов = ОбъектОтчета.КомпоновщикНастроекОбщегоОтбора(); @@ -9234,13 +9766,13 @@ ЭлементыОтбора = ОбъектОтчета.КомпоновщикОтбораВсехДокументов.Настройки.Отбор.Элементы; ЭлементыОтбора.Очистить(); ОбъектОтчета.ДобавитьЗначенияОтбораКомпоновки( - ЭлементыОтбора, Настройки.НастройкиКомпоновщикаОтбораВсехДокументов.Отбор.Элементы - ); + ЭлементыОтбора, Настройки.НастройкиКомпоновщикаОтбораВсехДокументов.Отбор.Элементы); Возврат ОбъектОтчета; КонецФункции -// Обслуживание фоновых заданий +// Для внутреннего использования +// Функция ЗапуститьФоновоеЗадание(ИмяМетода, ПараметрыМетода, ОписаниеМетода="") Экспорт Задание = ФоновыеЗадания.Выполнить(ИмяМетода, ПараметрыМетода, , ОписаниеМетода); @@ -9249,28 +9781,43 @@ Возврат Неопределено; Исключение Если Задание.Состояние=СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда - ВызватьИсключение; + ВызватьИсключениеАварийногоЗадания(Задание); КонецЕсли; КонецПопытки; Возврат Задание.УникальныйИдентификатор; - КонецФункции +// Для внутреннего использования +// +Процедура ВызватьИсключениеАварийногоЗадания(Знач Задание) + // Запись об аварийном завершении фонового задания уже сделана, пробрасываем исключение наверх + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Задание ""%1"" завершено аварийно. + | + |%2'"), + Задание.Наименование, КраткоеПредставлениеОшибки(Задание.ИнформацияОбОшибке) + ); +КонецПроцедуры + // Для внутреннего использования // Функция ФоновоеЗаданиеЗавершено(ИдентификаторЗадания) Экспорт - Если ИдентификаторЗадания=Неопределено Тогда - Возврат Истина; // Файловая база + Результат = Истина; + Если ИдентификаторЗадания<>Неопределено Тогда + // Не файловая база + Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); + Если Задание<>Неопределено Тогда + // Все непонятное - завершено + Если Задание.Состояние=СостояниеФоновогоЗадания.ЗавершеноАварийно Тогда + ВызватьИсключениеАварийногоЗадания(Задание); + КонецЕсли; + Результат = Задание.Состояние<>СостояниеФоновогоЗадания.Активно; + КонецЕсли; КонецЕсли; - Задание = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания); - Если Задание=Неопределено Тогда - Возврат Истина; // Все непонятное - завершено - КонецЕсли; - - Возврат Задание.Состояние<>СостояниеФоновогоЗадания.Активно; + Возврат Результат; КонецФункции // Для внутреннего использования @@ -9286,11 +9833,25 @@ КонецПроцедуры -// Для внутреннего использования -// -Функция СобытиеЖурналаРегистрацииОбменДанными() Экспорт +// Возвращает идентификатор поставляемого профиля групп доступа "Синхронизация данных с другими программами" +// +// Возвращаемое значение: +// Тип: Строка. +// +Функция ПрофильДоступаСинхронизацияДанныхСДругимиПрограммами() Экспорт - Возврат НСтр("ru = 'Обмен данными'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); + Возврат "04937803-5dba-11df-a1d4-005056c00008"; КонецФункции +// Возвращает список ролей профиля групп доступа "Синхронизация данных с другими программами" +// +Функция РолиПрофиляДоступаСинхронизацияДанныхСДругимиПрограммами() + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда + Возврат "ВыполнениеСинхронизацииДанных, УдаленныйДоступБазоваяФункциональность, ЧтениеИнформацииОВерсияхОбъектов"; + Иначе + Возврат "ВыполнениеСинхронизацииДанных, УдаленныйДоступБазоваяФункциональность"; + КонецЕсли; + +КонецФункции diff --git a/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl b/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl index 08c10e9f8..c2b2aea0d 100644 --- a/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl +++ b/SSL/src/CommonModules/ОбменДаннымиСобытия/Module.bsl @@ -6,51 +6,69 @@ //////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС -// Процедура предназначена для определения вида отправки выгружаемого элемента данных -// Вызывается из обработчиков планов обмена: ПриОтправкеДанныхГлавному(), ПриОтправкеДанныхПодчиненному() +// Процедура-обработчик события "ПередЗаписью" документов для механизма регистрации объектов на узлах // // Параметры: -// ЭлементДанных, ОтправкаЭлемента - см. описание параметров в синтаксис помощнике -// для методов ПриОтправкеДанныхГлавному() и ПриОтправкеДанныхПодчиненному() -// -Процедура ПриОтправкеДанныхКорреспонденту(ЭлементДанных, ОтправкаЭлемента, Знач СозданиеНачальногоОбраза = Ложь, Получатель = Неопределено) Экспорт +// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации +// Источник - ДокументОбъект - источник события +// Отказ - Булево - флаг отказа от выполнения обработчика +// +Процедура МеханизмРегистрацииОбъектовПередЗаписьюДокумента(ИмяПланаОбмена, Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт - Если Получатель = Неопределено Тогда - - // - - ИначеЕсли ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить - ИЛИ ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать Тогда - - // Стандартную обработку не переопределяем - - ИначеЕсли ОбменДаннымиПовтИсп.ЭтоУзелОбменаДаннымиБСП(Получатель.Ссылка) Тогда - - ПриОтправкеДанных( - ЭлементДанных, - ОтправкаЭлемента, - Получатель.Ссылка, - ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(Получатель.Ссылка), - СозданиеНачальногоОбраза - ); - - КонецЕсли; + МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ, РежимЗаписи); КонецПроцедуры -// Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной информационной базе. +// Процедура-обработчик события "ПередЗаписью" ссылочных типов данных (кроме документов) для механизма регистрации объектов на узлах // // Параметры: -// см. описание обработчика события ПриПолученииДанныхОтГлавного() в синтаксис-помощнике. +// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации +// Источник - источник события, кроме типа ДокументОбъект +// Отказ - Булево - флаг отказа от выполнения обработчика // -Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель) Экспорт +Процедура МеханизмРегистрацииОбъектовПередЗаписью(ИмяПланаОбмена, Источник, Отказ) Экспорт - Если ОбменДаннымиВызовСервера.ЗагрузкаПараметровРаботыПрограммы() Тогда - - // В режиме загрузки параметров работы программы игнорируем получение всех данных. - ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать; - - КонецЕсли; + МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ); + +КонецПроцедуры + +// Процедура-обработчик события "ПередЗаписью" регистров для механизма регистрации объектов на узлах +// +// Параметры: +// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации +// Источник - НаборЗаписейРегистра - источник события +// Отказ - Булево - флаг отказа от выполнения обработчика +// Замещение - Булево - признак замещения существующего набора записей +// +Процедура МеханизмРегистрацииОбъектовПередЗаписьюРегистра(ИмяПланаОбмена, Источник, Отказ, Замещение) Экспорт + + МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ,, Замещение, Истина); + +КонецПроцедуры + +// Процедура-обработчик события "ПередЗаписью" константы для механизма регистрации объектов на узлах +// +// Параметры: +// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации +// Источник - КонстантаМенеджерЗначения - источник события +// Отказ - Булево - флаг отказа от выполнения обработчика +// +Процедура МеханизмРегистрацииОбъектовПередЗаписьюКонстанты(ИмяПланаОбмена, Источник, Отказ) Экспорт + + МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ,,,,, Истина); + +КонецПроцедуры + +// Процедура-обработчик события "ПередУдалением" ссылочных типов данных для механизма регистрации объектов на узлах +// +// Параметры: +// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации +// Источник - источник события +// Отказ - Булево - флаг отказа от выполнения обработчика +// +Процедура МеханизмРегистрацииОбъектовПередУдалением(ИмяПланаОбмена, Источник, Отказ) Экспорт + + МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ,,,, Истина); КонецПроцедуры @@ -194,71 +212,117 @@ КонецФункции //////////////////////////////////////////////////////////////////////////////// -// Механизм регистрации объектов (МРО) +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС -// Процедура-обработчик события "ПередЗаписью" документов для механизма регистрации объектов на узлах +// Процедура предназначена для определения вида отправки выгружаемого элемента данных +// Вызывается из обработчиков планов обмена: ПриОтправкеДанныхГлавному(), ПриОтправкеДанныхПодчиненному() // // Параметры: -// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации -// Источник - ДокументОбъект - источник события -// Отказ - Булево - флаг отказа от выполнения обработчика -// -Процедура МеханизмРегистрацииОбъектовПередЗаписьюДокумента(ИмяПланаОбмена, Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт +// ЭлементДанных, ОтправкаЭлемента - см. описание параметров в синтаксис помощнике +// для методов ПриОтправкеДанныхГлавному() и ПриОтправкеДанныхПодчиненному() +// +Процедура ПриОтправкеДанныхКорреспонденту(ЭлементДанных, ОтправкаЭлемента, Знач СозданиеНачальногоОбраза = Ложь, Получатель = Неопределено) Экспорт - МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ, РежимЗаписи); + Если Получатель = Неопределено Тогда + + // + + ИначеЕсли ОтправкаЭлемента = ОтправкаЭлементаДанных.Удалить + ИЛИ ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать Тогда + + // Стандартную обработку не переопределяем + + ИначеЕсли ОбменДаннымиПовтИсп.ЭтоУзелОбменаДаннымиБСП(Получатель.Ссылка) Тогда + + ПриОтправкеДанных( + ЭлементДанных, + ОтправкаЭлемента, + Получатель.Ссылка, + ОбменДаннымиПовтИсп.ПолучитьИмяПланаОбмена(Получатель.Ссылка), + СозданиеНачальногоОбраза); + + КонецЕсли; + + // Фиксируем выгруженные предопределенные данные (только для РИБ) + Если Не СозданиеНачальногоОбраза + И ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() + И ОтправкаЭлемента <> ОтправкаЭлементаДанных.Игнорировать + И ОбменДаннымиПовтИсп.ЭтоУзелРаспределеннойИнформационнойБазы(Получатель.Ссылка) + И ТипЗнч(ЭлементДанных) <> Тип("УдалениеОбъекта") + Тогда + + ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(ЭлементДанных.Метаданные()); + + Если ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаСправочники() + ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаПланыВидовХарактеристик() + ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаПланыСчетов() + ИЛИ ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаПланыВидовРасчета() Тогда + + Если ЭлементДанных.Предопределенный Тогда + + ОбменДаннымиВызовСервера.ДополнитьПриоритетныеДанныеОбмена(ЭлементДанных.Ссылка); + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; КонецПроцедуры -// Процедура-обработчик события "ПередЗаписью" ссылочных типов данных (кроме документов) для механизма регистрации объектов на узлах +// Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной информационной базе. // // Параметры: -// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации -// Источник - источник события, кроме типа ДокументОбъект -// Отказ - Булево - флаг отказа от выполнения обработчика +// см. описание обработчика события ПриПолученииДанныхОтГлавного() в синтаксис-помощнике. // -Процедура МеханизмРегистрацииОбъектовПередЗаписью(ИмяПланаОбмена, Источник, Отказ) Экспорт +Процедура ПриПолученииДанныхОтГлавногоВНачале(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель) Экспорт - МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ); + Если ОбменДаннымиВызовСервера.ЗагрузкаПараметровРаботыПрограммы() Тогда + + // В режиме загрузки параметров работы программы игнорируем получение всех данных. + ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать; + + КонецЕсли; КонецПроцедуры -// Процедура-обработчик события "ПередЗаписью" регистров для механизма регистрации объектов на узлах +// Процедура предназначена для выполнения проверок на наличие коллизий запрета загрузки и изменения данных +// Вызывается из обработчика плана обмена: ПриПолученииДанныхОтГлавного // // Параметры: -// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации -// Источник - НаборЗаписейРегистра - источник события -// Отказ - Булево - флаг отказа от выполнения обработчика -// Замещение - Булево - признак замещения существующего набора записей +// см. описание обработчика события ПриПолученииДанныхОтГлавного() в синтаксис-помощнике. // -Процедура МеханизмРегистрацииОбъектовПередЗаписьюРегистра(ИмяПланаОбмена, Источник, Отказ, Замещение) Экспорт +Процедура ПриПолученииДанныхОтГлавногоВКонце(ЭлементДанных, ПолучениеЭлемента, Знач Отправитель) Экспорт - МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ,, Замещение, Истина); + // Проверка на запрет загрузки по дате запрета + ПроверитьНаличиеЗапретаЗагрузкиПоДате(ЭлементДанных, ПолучениеЭлемента, Отправитель); + + Если ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать Тогда + Возврат; + КонецЕсли; + + // Проверка на коллизию изменения данных + ПроверитьКоллизиюИзмененийДанных(ЭлементДанных, ПолучениеЭлемента, Отправитель, Истина); КонецПроцедуры -// Процедура-обработчик события "ПередЗаписью" константы для механизма регистрации объектов на узлах +// Процедура предназначена для выполнения проверок на наличие коллизий запрета загрузки и изменения данных +// Вызывается из обработчика плана обмена: ПриПолученииДанныхОтПодчиненного // // Параметры: -// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации -// Источник - КонстантаМенеджерЗначения - источник события -// Отказ - Булево - флаг отказа от выполнения обработчика +// см. описание обработчика события ПриПолученииДанныхОтПодчиненного() в синтаксис-помощнике. // -Процедура МеханизмРегистрацииОбъектовПередЗаписьюКонстанты(ИмяПланаОбмена, Источник, Отказ) Экспорт +Процедура ПриПолученииДанныхОтПодчиненногоВКонце(ЭлементДанных, ПолучениеЭлемента, Знач Отправитель) Экспорт - МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ,,,,, Истина); + // Проверка на запрет загрузки по дате запрета + ПроверитьНаличиеЗапретаЗагрузкиПоДате(ЭлементДанных, ПолучениеЭлемента, Отправитель); -КонецПроцедуры - -// Процедура-обработчик события "ПередУдалением" ссылочных типов данных для механизма регистрации объектов на узлах -// -// Параметры: -// ИмяПланаОбмена – Строка – имя плана обмена, для которого выполняется механизм регистрации -// Источник - источник события -// Отказ - Булево - флаг отказа от выполнения обработчика -// -Процедура МеханизмРегистрацииОбъектовПередУдалением(ИмяПланаОбмена, Источник, Отказ) Экспорт + Если ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать Тогда + Возврат; + КонецЕсли; - МеханизмРегистрацииОбъектов(ИмяПланаОбмена, Источник, Отказ,,,, Истина); + // Проверка на коллизию изменения данных + ПроверитьКоллизиюИзмененийДанных(ЭлементДанных, ПолучениеЭлемента, Отправитель, Ложь); КонецПроцедуры @@ -318,8 +382,24 @@ Возврат; КонецЕсли; - ТаблицаРеквизитовСсылочногоТипа = Неопределено; + ЗарегистрированныеКВыгрузкеОбъекты = Неопределено; + Если Источник.ДополнительныеСвойства.Свойство("ЗарегистрированныеКВыгрузкеОбъекты", ЗарегистрированныеКВыгрузкеОбъекты) Тогда + + ОбменДаннымиВызовСервера.ОбновитьКэшМеханизмаРегистрацииОбъектов(); + + Для Каждого Объект Из ЗарегистрированныеКВыгрузкеОбъекты Цикл + + Если Не ВыгрузкаОбъектаРазрешена(Источник.Ссылка, Объект) Тогда + + ПланыОбмена.УдалитьРегистрациюИзменений(Источник.Ссылка, Объект); + + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + ТаблицаРеквизитовСсылочногоТипа = Неопределено; Если Источник.ДополнительныеСвойства.Свойство("ТаблицаРеквизитовУзла", ТаблицаРеквизитовСсылочногоТипа) Тогда // Выполняем регистрацию выбранных объектов ссылочного типа на текущем узле без использования ПРО @@ -374,27 +454,109 @@ И ОбменДаннымиВызовСервера.ИзмененияЗарегистрированы(Источник.Ссылка) Тогда - КодОсновногоЯзыка = ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка(); - - ПодробноеПредставлениеОшибки = НСтр("ru = 'Настройка обмена данными не может быть изменена. - |Существуют зарегистрированные изменения данных для обмена. - |Выполните обмен данными два раза и повторите попытку.'" - ); - - ПодробноеПредставлениеОшибкиДляЖурналаРегистрации = НСтр("ru = 'Настройка обмена данными не может быть изменена. - |Существуют зарегистрированные изменения данных для обмена. - |Выполните обмен данными два раза и повторите попытку.'", КодОсновногоЯзыка - ); - - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ПодробноеПредставлениеОшибки,,,, Отказ); - - ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными'", КодОсновногоЯзыка), УровеньЖурналаРегистрации.Ошибка,, - Источник.Ссылка, ПодробноеПредставлениеОшибкиДляЖурналаРегистрации); + СохранитьРазрешенныеКВыгрузкеОбъекты(Источник); КонецЕсли; КонецПроцедуры +Процедура СохранитьРазрешенныеКВыгрузкеОбъекты(УзелОбъект) + + ЗарегистрированныеДанные = Новый Массив; + СоставПланаОбмена = УзелОбъект.Метаданные().Состав; + + Запрос = Новый Запрос; + ТекстЗапроса = + "ВЫБРАТЬ + | * + |ИЗ + | [Таблица].Изменения КАК ТаблицаИзменений + |ГДЕ + | ТаблицаИзменений.Узел = &Узел"; + Запрос.УстановитьПараметр("Узел", УзелОбъект.Ссылка); + + Для Каждого ЭлементСостава Из СоставПланаОбмена Цикл + + Если ЭлементСостава.Авторегистрация = АвтоРегистрацияИзменений.Разрешить Тогда + Продолжить; + КонецЕсли; + + МетаданныеЭлемента = ЭлементСостава.Метаданные; + ПолноеИмяОбъектаМетаданных = МетаданныеЭлемента.ПолноеИмя(); + + Запрос.Текст = СтрЗаменить(ТекстЗапроса, "[Таблица]", ПолноеИмяОбъектаМетаданных); + + Результат = Запрос.Выполнить(); + + Если Не Результат.Пустой() Тогда + + ЗарегистрированныеДанныеОдногоТипа = Результат.Выгрузить(); + + Если ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(МетаданныеЭлемента) Тогда + + Для Каждого Строка Из ЗарегистрированныеДанныеОдногоТипа Цикл + + Если ОбщегоНазначения.СсылкаСуществует(Строка.Ссылка) Тогда + + ОбъектСсылки = Строка.Ссылка.ПолучитьОбъект(); + + Если ВыгрузкаОбъектаРазрешена(УзелОбъект.Ссылка, ОбъектСсылки) Тогда + ЗарегистрированныеДанные.Добавить(ОбъектСсылки); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + ИначеЕсли ОбщегоНазначения.ЭтоКонстанта(МетаданныеЭлемента) Тогда + + МенеджерЗначенияКонстанты = Константы[МетаданныеЭлемента.Имя].СоздатьМенеджерЗначения(); + Если ВыгрузкаОбъектаРазрешена(УзелОбъект.Ссылка, МенеджерЗначенияКонстанты) Тогда + ЗарегистрированныеДанные.Добавить(МенеджерЗначенияКонстанты); + КонецЕсли; + + Иначе //Регистр или последовательность + + Для Каждого Строка Из ЗарегистрированныеДанныеОдногоТипа Цикл + + НаборЗаписей = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъектаМетаданных).СоздатьНаборЗаписей(); + + Для Каждого ЭлементОтбора Из НаборЗаписей.Отбор Цикл + + Если ЗарегистрированныеДанныеОдногоТипа.Колонки.Найти(ЭлементОтбора.Имя) <> Неопределено Тогда + + НаборЗаписей.Отбор[ЭлементОтбора.Имя].Установить(Строка[ЭлементОтбора.Имя]); + + КонецЕсли; + + КонецЦикла; + + НаборЗаписей.Прочитать(); + + Если ВыгрузкаОбъектаРазрешена(УзелОбъект.Ссылка, НаборЗаписей) Тогда + ЗарегистрированныеДанные.Добавить(НаборЗаписей); + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + УзелОбъект.ДополнительныеСвойства.Вставить("ЗарегистрированныеКВыгрузкеОбъекты", ЗарегистрированныеДанные); + +КонецПроцедуры + +Функция ВыгрузкаОбъектаРазрешена(УзелОбмена, Объект) + + Отправка = ОтправкаЭлементаДанных.Авто; + ПриОтправкеДанныхКорреспонденту(Объект, Отправка, , УзелОбмена); + Возврат Отправка <> ОтправкаЭлементаДанных.Удалить; + +КонецФункции + // Только для внутреннего использования // Процедура ОтменитьОтправкуДанныхУзлаВРаспределеннойИнформационнойБазе(Источник, ЭлементДанных, Игнорировать) Экспорт @@ -451,6 +613,38 @@ КонецПроцедуры +// Получает текущее значение набора записей в информационной базе +// +// Параметры: +// Данные - Набор записей регистров +// +// Возвращаемое значение: +// НаборЗаписей, содержащий текущее значение в информационной базе +// +Функция ПолучитьНаборЗаписей(Знач Данные) Экспорт + + ОбъектМетаданных = Данные.Метаданные(); + + НаборЗаписей = НаборЗаписейПоТипу(ОбъектМетаданных); + + Для Каждого ЗначениеОтбора Из Данные.Отбор Цикл + + Если ЗначениеОтбора.Использование = Ложь Тогда + Продолжить; + КонецЕсли; + + СтрокаОтбора = НаборЗаписей.Отбор.Найти(ЗначениеОтбора.Имя); + СтрокаОтбора.Значение = ЗначениеОтбора.Значение; + СтрокаОтбора.Использование = Истина; + + КонецЦикла; + + НаборЗаписей.Прочитать(); + + Возврат НаборЗаписей; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Механизм регистрации объектов (МРО) @@ -474,8 +668,7 @@ Замещение = Ложь, ЭтоРегистр = Ложь, ЭтоУдалениеОбъекта = Ложь, - ЭтоКонстанта = Ложь - ) + ЭтоКонстанта = Ложь) Попытка @@ -588,8 +781,7 @@ МассивУзловРезультат = Новый Массив; ВыполнитьПравилаРегистрацииОбъектовДляПланаОбмена(МассивУзловРезультат, Объект, ИмяПланаОбмена, - ОбъектМетаданных, ПроверятьСсылку, ЭтоРегистр, ЭтоУдалениеОбъекта, Замещение, РежимЗаписи - ); + ОбъектМетаданных, ПроверятьСсылку, ЭтоРегистр, ЭтоУдалениеОбъекта, Замещение, РежимЗаписи); // обработчик "После определения получателей" ОбменДаннымиСервер.ПослеОпределенияПолучателей(Объект, МассивУзловРезультат, ИмяПланаОбмена); @@ -600,8 +792,7 @@ Исключение ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными.Правила регистрации объектов'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Отказ = Истина; КонецПопытки; @@ -617,8 +808,7 @@ Исключение ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка определения модифицированности объекта: %1'"), - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; Возврат ОбъектМодифицирован; @@ -822,8 +1012,7 @@ ЭтоУдалениеОбъекта = Ложь, Замещение = Ложь, РежимЗаписи = Неопределено, - Выгрузка = Ложь - ) + Выгрузка = Ложь) Попытка ВыполнитьПравилаРегистрацииОбъектовДляПланаОбменаПопыткаИсключение(МассивУзловРезультат, Объект, @@ -834,16 +1023,14 @@ ЭтоУдалениеОбъекта, Замещение, РежимЗаписи, - Выгрузка - ); + Выгрузка); Исключение ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка выполнения правил регистрации объектов для плана обмена %1. |Описание ошибки: |%2'"), ИмяПланаОбмена, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецПроцедуры @@ -857,8 +1044,7 @@ ЭтоУдалениеОбъекта, Замещение, РежимЗаписи, - Выгрузка - ) + Выгрузка) ПравилаРегистрацииОбъекта = Новый Массив; @@ -1041,65 +1227,20 @@ Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Узел"); КонецФункции -Функция НаборЗаписейПоТипу(ОбъектМетаданных) - - ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(ОбъектМетаданных); - - Если ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыСведений() Тогда - - Результат = РегистрыСведений[ОбъектМетаданных.Имя].СоздатьНаборЗаписей(); - - ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыНакопления() Тогда - - Результат = РегистрыНакопления[ОбъектМетаданных.Имя].СоздатьНаборЗаписей(); - - ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыБухгалтерии() Тогда - - Результат = РегистрыБухгалтерии[ОбъектМетаданных.Имя].СоздатьНаборЗаписей(); - - ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыРасчета() Тогда - - Результат = РегистрыРасчета[ОбъектМетаданных.Имя].СоздатьНаборЗаписей(); - - Иначе - - СтрокаСообщения = НСтр("ru = 'Для объекта метаданных %1 не предусмотрено набора записей.'"); - СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ОбъектМетаданных.ПолноеИмя()); - ВызватьИсключение СтрокаСообщения; - КонецЕсли; - - Возврат Результат; -КонецФункции - Процедура ВыполнитьПравилоРегистрацииОбъектаДляНабораЗаписей(МассивУзловРезультат, ПРО, Объект, ОбъектМетаданных, ИмяПланаОбмена, Замещение, - Выгрузка - ) + Выгрузка) // определяем массив узлов-получателей по текущему набору записей ОпределитьМассивПолучателейПоНаборуЗаписей(МассивУзловРезультат, Объект, ПРО, ОбъектМетаданных, ИмяПланаОбмена, Ложь, Выгрузка); Если Замещение И Не Выгрузка Тогда - СтарыйНаборЗаписей = НаборЗаписейПоТипу(ОбъектМетаданных); - - Для Каждого ЗначениеОтбора Из Объект.Отбор Цикл - - Если ЗначениеОтбора.Использование = Ложь Тогда - Продолжить; - КонецЕсли; - - СтрокаОтбора = СтарыйНаборЗаписей.Отбор.Найти(ЗначениеОтбора.Имя); - СтрокаОтбора.Значение = ЗначениеОтбора.Значение; - СтрокаОтбора.Использование = Истина; - - КонецЦикла; - - СтарыйНаборЗаписей.Прочитать(); + СтарыйНаборЗаписей = ПолучитьНаборЗаписей(Объект); // определяем массив узлов-получателей по старому набору записей ОпределитьМассивПолучателейПоНаборуЗаписей(МассивУзловРезультат, СтарыйНаборЗаписей, ПРО, ОбъектМетаданных, ИмяПланаОбмена, Истина, Ложь); @@ -1115,8 +1256,7 @@ ПроверятьСсылку, ЭтоУдалениеОбъекта, РежимЗаписи, - Выгрузка - ) + Выгрузка) // ПРОБ - Правила регистрации по свойствам Объекта // ПРОП - Правила регистрации по свойствам Плана обмена @@ -1144,8 +1284,7 @@ ПроверятьСсылку, ЭтоУдалениеОбъекта, РежимЗаписи, - Выгрузка - ) + Выгрузка) // {Обработчик: Перед обработкой} Начало Отказ = Ложь; @@ -1181,8 +1320,7 @@ ОбъектМетаданных, ИмяПланаОбмена, Замещение, - Выгрузка - ) + Выгрузка) // {Обработчик: Перед обработкой} Начало Отказ = Ложь; @@ -1218,8 +1356,7 @@ ПРО, ЭтоУдалениеОбъекта, ПроверятьСсылку, - Выгрузка - ) + Выгрузка) // получаем структуру значений свойств для объекта ЗначенияСвойствОбъекта = ПолучитьЗначенияСвойствДляОбъекта(Источник, ПРО); @@ -1261,8 +1398,7 @@ ОбъектМетаданных, ИмяПланаОбмена, ЭтоВерсияОбъектаДоИзменения, - Выгрузка - ) + Выгрузка) // получаем значение регистратора из отбора для набора записей Регистратор = Неопределено; @@ -1591,8 +1727,7 @@ Возврат ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных( "ПланОбмена." + ИмяПланаОбмена, - ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных() - ); + ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных()); КонецФункции @@ -1600,8 +1735,48 @@ Возврат ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных( ОбъектМетаданных.ПолноеИмя(), - ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных() - ); + ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных()); + +КонецФункции + +// Создает набор записей для регистра +// +// Параметры: +// ОбъектМетаданных регистра - для получения набора записей +// +// Возвращаемое значение: +// НаборЗаписей. В случае если для объекта метаданных не предусмотрено набора записей +// вызывается исключение. +// +Функция НаборЗаписейПоТипу(ОбъектМетаданных) + + ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(ОбъектМетаданных); + + Если ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыСведений() Тогда + + Результат = РегистрыСведений[ОбъектМетаданных.Имя].СоздатьНаборЗаписей(); + + ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыНакопления() Тогда + + Результат = РегистрыНакопления[ОбъектМетаданных.Имя].СоздатьНаборЗаписей(); + + ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыБухгалтерии() Тогда + + Результат = РегистрыБухгалтерии[ОбъектМетаданных.Имя].СоздатьНаборЗаписей(); + + ИначеЕсли ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаРегистрыРасчета() Тогда + + Результат = РегистрыРасчета[ОбъектМетаданных.Имя].СоздатьНаборЗаписей(); + + Иначе + + СтрокаСообщения = НСтр("ru = 'Для объекта метаданных %1 не предусмотрено набора записей.'"); + СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ОбъектМетаданных.ПолноеИмя()); + ВызватьИсключение СтрокаСообщения; + + КонецЕсли; + + Возврат Результат; КонецФункции @@ -1695,8 +1870,7 @@ |// {Начало алгоритма} |[ЗначениеКонстанты] |// {Окончание алгоритма} - |'" - ); + |'"); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ИмяПланаОбмена]", ПРО.ИмяПланаОбмена); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ОбъектМетаданныхИмя]", ПРО.ОбъектМетаданныхИмя); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[Описание]", ИнформацияОбОшибке().Описание); @@ -1893,8 +2067,7 @@ СтрокаСообщения = НСтр("ru = 'Ошибка при выполнении обработчика: ""[ИмяОбработчика]""; |План обмена: [ИмяПланаОбмена]; |Объект метаданных: [ОбъектМетаданныхИмя] - |Описание ошибки: [Описание]'" - ); + |Описание ошибки: [Описание]'"); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ИмяОбработчика]", НСтр("ru = 'Перед обработкой'")); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ИмяПланаОбмена]", ПРО.ИмяПланаОбмена); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ОбъектМетаданныхИмя]", ПРО.ОбъектМетаданныхИмя); @@ -1914,8 +2087,7 @@ Выполнить(ПРО.ПриОбработке); Исключение СтрокаСообщения = НСтр("ru = 'Ошибка при выполнении обработчика: ""[ИмяОбработчика]""; План обмена: [ИмяПланаОбмена]; Объект метаданных: [ОбъектМетаданныхИмя] - |Описание ошибки: [Описание]'" - ); + |Описание ошибки: [Описание]'"); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ИмяОбработчика]", НСтр("ru = 'При обработке'")); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ИмяПланаОбмена]", ПРО.ИмяПланаОбмена); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ОбъектМетаданныхИмя]", ПРО.ОбъектМетаданныхИмя); @@ -1935,8 +2107,7 @@ Выполнить(ПРО.ПриОбработкеДополнительный); Исключение СтрокаСообщения = НСтр("ru = 'Ошибка при выполнении обработчика: ""[ИмяОбработчика]""; План обмена: [ИмяПланаОбмена]; Объект метаданных: [ОбъектМетаданныхИмя] - |Описание ошибки: [Описание]'" - ); + |Описание ошибки: [Описание]'"); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ИмяОбработчика]", НСтр("ru = 'При обработке (дополнительный)'")); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ИмяПланаОбмена]", ПРО.ИмяПланаОбмена); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ОбъектМетаданныхИмя]", ПРО.ОбъектМетаданныхИмя); @@ -1956,8 +2127,7 @@ Выполнить(ПРО.ПослеОбработки); Исключение СтрокаСообщения = НСтр("ru = 'Ошибка при выполнении обработчика: ""[ИмяОбработчика]""; План обмена: [ИмяПланаОбмена]; Объект метаданных: [ОбъектМетаданныхИмя] - |Описание ошибки: [Описание]'" - ); + |Описание ошибки: [Описание]'"); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ИмяОбработчика]", НСтр("ru = 'После обработки'")); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ИмяПланаОбмена]", ПРО.ИмяПланаОбмена); СтрокаСообщения = СтрЗаменить(СтрокаСообщения, "[ОбъектМетаданныхИмя]", ПРО.ОбъектМетаданныхИмя); @@ -1977,8 +2147,7 @@ ОтправкаЭлемента, УзелИнформационнойБазы, Знач ИмяПланаОбмена, - Знач СозданиеНачальногоОбраза - ) + Знач СозданиеНачальногоОбраза) Если ТипЗнч(ЭлементДанных) = Тип("УдалениеОбъекта") Тогда Возврат; // удаление объекта отсылаем "как есть" @@ -1990,6 +2159,9 @@ Возврат; // фильтрацию не выполняем КонецЕсли; + // Актуализируем кэш + ОбменДаннымиВызовСервера.ПроверитьКэшМеханизмаРегистрацииОбъектов(); + ИмяБазовогоТипа = ОбщегоНазначения.ИмяБазовогоТипаПоОбъектуМетаданных(ОбъектМетаданных); Если ИмяБазовогоТипа = ОбщегоНазначения.ИмяТипаСправочники() @@ -2059,8 +2231,7 @@ , , , - Истина - ); + Истина); // если в массиве нет текущего узла, то удаляем строку из набора Если МассивУзловДляРегистрацииОбъекта.Найти(УзелИнформационнойБазы) = Неопределено Тогда @@ -2644,4 +2815,293 @@ РегистрыСведений.РезультатыОбменаДанными.ЗарегистрироватьУстранениеПроблемы(Источник, Перечисления.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты); -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Работа с коллизиями изменений данных при обмене + +// Проверяет наличие коллизий при загрузке +// и выдает информацию есть ли коллизия при обмене +Процедура ПроверитьКоллизиюИзмененийДанных(ЭлементДанных, ПолучениеЭлемента, Знач Отправитель, Знач ЭтоПолучениеОтГлавного) + + Если ТипЗнч(ЭлементДанных) = Тип("УдалениеОбъекта") Тогда + + Возврат; + + ИначеЕсли ЭлементДанных.ДополнительныеСвойства.Свойство("ОбменДанными") И ЭлементДанных.ДополнительныеСвойства.ОбменДанными.АнализДанных Тогда + + Возврат; + + КонецЕсли; + + Отправитель = Отправитель.Ссылка; + МетаданныеОбъекта = ЭлементДанных.Метаданные(); + ЭтоСсылочныйТип = ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(МетаданныеОбъекта); + + ЕстьКоллизия = ПланыОбмена.ИзменениеЗарегистрировано(Отправитель, ЭлементДанных); + + // Выполняем дополнительную проверку на изменение объекта + // если объект до коллизии и после коллизии не изменен, + // то считаем, что коллизии нет + Если ЕстьКоллизия Тогда + + Если ЭтоСсылочныйТип Тогда + + ОбъектВБазе = ЭлементДанных.Ссылка.ПолучитьОбъект(); + СсылкаСуществует = (ОбъектВБазе <> Неопределено); + + Иначе + СсылкаСуществует = Ложь; + ОбъектВБазе = Неопределено; + КонецЕсли; + + СтрокаОбъектаДоИзменения = ПолучитьДанныеОбъектаСтрокойДоИзменения(ЭлементДанных, МетаданныеОбъекта, ЭтоСсылочныйТип, СсылкаСуществует, ОбъектВБазе); + СтрокаОбъектаПослеИзменения = ПолучитьДанныеОбъектаСтрокойПослеИзменения(ЭлементДанных, МетаданныеОбъекта); + + // Если значения совпадают, то коллизии нет + Если СтрокаОбъектаДоИзменения = СтрокаОбъектаПослеИзменения Тогда + + ЕстьКоллизия = Ложь; + + КонецЕсли; + + КонецЕсли; + + Если ЕстьКоллизия Тогда + + ОбменДаннымиПереопределяемый.ПриКоллизииИзмененийДанных(ЭлементДанных, ПолучениеЭлемента, Отправитель, ЭтоПолучениеОтГлавного); + + Если ПолучениеЭлемента = ПолучениеЭлементаДанных.Авто Тогда + ПолучениеЭлемента = ?(ЭтоПолучениеОтГлавного, ПолучениеЭлементаДанных.Принять, ПолучениеЭлементаДанных.Игнорировать); + КонецЕсли; + + ЗаписатьОбъект = (ПолучениеЭлемента = ПолучениеЭлементаДанных.Принять); + + ЗарегистрироватьПредупреждениеОКоллизииВЖурналеРегистрации(ЭлементДанных, МетаданныеОбъекта, ЗаписатьОбъект, ЭтоСсылочныйТип); + + Если Не ЭтоСсылочныйТип Тогда + Возврат; + КонецЕсли; + + Если ОбменДаннымиПовтИсп.ИспользуетсяВерсионирование(Отправитель) Тогда + + Если СсылкаСуществует Тогда + + Если ЗаписатьОбъект Тогда + Комментарий = НСтр("ru = 'Предыдущая версия (автоматическое разрешение конфликта).'"); + Иначе + Комментарий = НСтр("ru = 'Текущая версия (автоматическое разрешение конфликта).'"); + КонецЕсли; + + ПриСозданииВерсииОбъекта(ОбъектВБазе,,, Комментарий, СсылкаСуществует); + + КонецЕсли; + + Если ЗаписатьОбъект Тогда + + СведенияОВерсииОбъекта = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру( + ЭлементДанных.ДополнительныеСвойства.СведенияОВерсииОбъекта); + + СведенияОВерсииОбъекта.ТипВерсииОбъекта = "ПринятыеДанныеПоКоллизии"; + СведенияОВерсииОбъекта.АвторВерсии = Отправитель; + СведенияОВерсииОбъекта.Комментарий = НСтр("ru = 'Принятая версия (автоматическое разрешение конфликта).'"); + + ЭлементДанных.ДополнительныеСвойства.СведенияОВерсииОбъекта = Новый ФиксированнаяСтруктура(СведенияОВерсииОбъекта); + + Иначе + + Комментарий = НСтр("ru = 'Отклоненная версия (автоматическое разрешение конфликта).'"); + ПриСозданииВерсииОбъекта(ЭлементДанных, Отправитель, "НепринятыеДанныеПоКоллизии", Комментарий, СсылкаСуществует); + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +// Выполняет проверку на наличие запрета загрузки по дате +// +// Параметры: +// ЭлементДанных – СправочникОбъект, ДокументОбъект, РегистСведенийНаборЗаписей и др. данные. +// Данные, которые были зачитаны из сообщения обмена, но еще не были записаны в ИБ. +// ПолучениеЭлемента - ПолучениеЭлементаДанных. +// Отправитель - ПланыОбменаСсылка. +// +Процедура ПроверитьНаличиеЗапретаЗагрузкиПоДате(ЭлементДанных, ПолучениеЭлемента, Знач Отправитель) + + Если Отправитель.Метаданные().РаспределеннаяИнформационнаяБаза Тогда + Возврат; + КонецЕсли; + + Если ОбщегоНазначения.ЭтоКонстанта(ЭлементДанных.Метаданные()) Тогда + Возврат; + КонецЕсли; + + СообщениеОбОшибке = ""; + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда + МодульДатыЗапретаИзменения = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДатыЗапретаИзменения"); + + Если МодульДатыЗапретаИзменения.ЗагрузкаЗапрещена(ЭлементДанных, Отправитель, СообщениеОбОшибке) = Истина Тогда + + ЗарегистрироватьЗапретЗагрузкиДанныхПоДате(ЭлементДанных, Отправитель, СообщениеОбОшибке); + ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать; + + КонецЕсли; + + КонецЕсли; + + ЭлементДанных.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); + +КонецПроцедуры + +// Регистрирует запрет на загрузку данных по причине установленной даты запрета загрузки данных +// в журнале регистрации. Для ссылочных типов при наличии подсистемы ВерсионированиеОбъектов +// регистрирует его так же в мониторе проблем обмена. +// +// Параметры: +// Объект - Объект ссылочного типа для которого выполняется регистрация запрета +// УзелОбмена - ПланОбменаСсылка - Узел информационной базы из которой получен объект +// СообщениеОбОшибке - Строка - Подробное описание причины отказа от загрузки +// +// Примечание: Для проверки наличия запрета загрузки по дате см. процедуру +// общего модуля ДатыЗапретаИзменения.ЗагрузкаЗапрещена +// +Процедура ЗарегистрироватьЗапретЗагрузкиДанныхПоДате(ЭлементДанных, Отправитель, СообщениеОбОшибке) + + ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(), + УровеньЖурналаРегистрации.Предупреждение, , ЭлементДанных, СообщениеОбОшибке); + + Если ОбменДаннымиПовтИсп.ИспользуетсяВерсионирование(Отправитель) И ОбщегоНазначения.ЭтоОбъектСсылочногоТипа(ЭлементДанных.Метаданные()) Тогда + + СсылкаНаОбъект = ЭлементДанных.Ссылка; + + Если ОбщегоНазначения.СсылкаСуществует(СсылкаНаОбъект) Тогда + + ОбъектВБазе = СсылкаНаОбъект.ПолучитьОбъект(); + ПриСозданииВерсииОбъекта(ОбъектВБазе,,, НСтр("ru = 'Версия создана при синхронизации данных.'")); + СтрокаСообщенияОбОшибке = СообщениеОбОшибке; + ТипВерсииОбъекта = "НепринятыеДанныеПоДатеЗапретаОбъектСуществует"; + + Иначе + + СтрокаСообщенияОбОшибке = Нстр("ru = '%1 запрещено загружать в запрещенный период.%2%2%3'"); + СтрокаСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, + Строка(ЭлементДанных), Символы.ПС, СообщениеОбОшибке); + ТипВерсииОбъекта = "НепринятыеДанныеПоДатеЗапретаОбъектНеСуществует"; + + КонецЕсли; + + ПриСозданииВерсииОбъекта(ЭлементДанных, Отправитель, ТипВерсииОбъекта, СтрокаСообщенияОбОшибке); + + КонецЕсли; + +КонецПроцедуры + +// Создает и записывает версию объекта в информационную базу. +// +// Параметры +// Объект - записываемый объект ИБ; +// АвторВерсии - Пользователь или Узел плана обмена - Источник версии; +// ТипВерсииОбъекта - Перечисление - Тип создаваемой версии; +// Комментарий - Строка - Комментарий к создаваемой версии; +// УникальныйИдентификаторСтрокой - Строка - Создает пустую ссылку из УИДа, если у переданного объекта ссылка отсутствует. +// +Процедура ПриСозданииВерсииОбъекта(Объект, АвторВерсии = Неопределено, ТипВерсииОбъекта = "ИзмененоПользователем", + Комментарий = "", СсылкаСуществует = Неопределено) + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда + + СведенияОВерсииОбъекта = Новый Структура; + + СведенияОВерсииОбъекта.Вставить("АвторВерсии", АвторВерсии); + СведенияОВерсииОбъекта.Вставить("ТипВерсииОбъекта", ТипВерсииОбъекта); + СведенияОВерсииОбъекта.Вставить("Комментарий", Комментарий); + + МодульВерсионированиеОбъектов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); + МодульВерсионированиеОбъектов.СоздатьВерсиюОбъектаПоОбменуДанными(Объект, СведенияОВерсииОбъекта, СсылкаСуществует); + + КонецЕсли; + +КонецПроцедуры + +// Только для внутреннего использования +// +Процедура ЗарегистрироватьПредупреждениеОКоллизииВЖурналеРегистрации(Объект, МетаданныеОбъекта, ЗаписатьОбъект, ЭтоСсылочныйТип) + + Если ЗаписатьОбъект Тогда + + ТекстПредупрежденияЖР = НСтр("ru = 'Возник конфликт изменений объектов. + |Объект этой информационной базы был заменен версией объекта из второй информационной базы.'"); + + Иначе + + ТекстПредупрежденияЖР = НСтр("ru = 'Возник конфликт изменений объектов. + |Объект из второй информационной базы не принят. Объект этой информационной базы не изменен.'"); + + КонецЕсли; + + Данные = ?(ЭтоСсылочныйТип, Объект.Ссылка, Неопределено); + + ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(), + УровеньЖурналаРегистрации.Предупреждение, МетаданныеОбъекта, Данные, ТекстПредупрежденияЖР); + +КонецПроцедуры + +// Только для внутреннего использования +// +Функция ПолучитьДанныеОбъектаСтрокойДоИзменения(Объект, МетаданныеОбъекта, ЭтоСсылочныйТип, СсылкаСуществует, ОбъектВБазе) + + // возвращаемое значение функции + СтрокаОбъекта = ""; + + Если ЭтоСсылочныйТип Тогда + + Если СсылкаСуществует Тогда + + // получаем представление объекта из ИБ по ссылке + СтрокаОбъекта = ОбщегоНазначения.ЗначениеВСтрокуXML(ОбъектВБазе); + + Иначе + + СтрокаОбъекта = "Объект удален"; + + КонецЕсли; + + ИначеЕсли ОбщегоНазначения.ЭтоКонстанта(МетаданныеОбъекта) Тогда + + // получаем значение константы из ИБ + СтрокаОбъекта = XMLСтрока(Константы[МетаданныеОбъекта.Имя].Получить()); + + Иначе // Набор записей + + СтарыйНаборЗаписей = ПолучитьНаборЗаписей(Объект); + СтрокаОбъекта = ОбщегоНазначения.ЗначениеВСтрокуXML(СтарыйНаборЗаписей); + + КонецЕсли; + + Возврат СтрокаОбъекта; + +КонецФункции + +// Только для внутреннего использования +// +Функция ПолучитьДанныеОбъектаСтрокойПослеИзменения(Объект, МетаданныеОбъекта) + + // возвращаемое значение функции + СтрокаОбъекта = ""; + + Если ОбщегоНазначения.ЭтоКонстанта(МетаданныеОбъекта) Тогда + + СтрокаОбъекта = XMLСтрока(Объект.Значение); + + Иначе + + СтрокаОбъекта = ОбщегоНазначения.ЗначениеВСтрокуXML(Объект); + + КонецЕсли; + + Возврат СтрокаОбъекта; + +КонецФункции \ No newline at end of file diff --git a/SSL/src/CommonModules/ОбменСообщениями/Module.bsl b/SSL/src/CommonModules/ОбменСообщениями/Module.bsl index 0d973eb7e..f9a0ad25f 100644 --- a/SSL/src/CommonModules/ОбменСообщениями/Module.bsl +++ b/SSL/src/CommonModules/ОбменСообщениями/Module.bsl @@ -113,7 +113,6 @@ КонецЕсли; - ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ | ТаблицаИзменений.Узел КАК КонечнаяТочка, @@ -131,8 +130,7 @@ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ПОМЕСТИТЬ]", "ПОМЕСТИТЬ ВТ_Изменения"); Иначе ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ПОМЕСТИТЬ]", ""); - КонецЕсли; - + КонецЕсли; КонецЦикла; ТекстЗапроса = ТекстЗапроса + " @@ -184,8 +182,7 @@ НедоступныеКонечныеТочки.Добавить(Группа.КонечнаяТочка); ЗаписьЖурналаРегистрации(ОбменСообщениямиВнутренний.СобытиеЖурналаРегистрацииЭтойПодсистемы(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецЦикла; @@ -251,8 +248,7 @@ НастройкиПодключенияПолучателя, КонечнаяТочка, НаименованиеКонечнойТочкиПолучателя, - НаименованиеКонечнойТочкиОтправителя - ); + НаименованиеКонечнойТочкиОтправителя); КонецПроцедуры @@ -529,16 +525,15 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Попытка отправки сообщения заблокированной конечной точке ""%1"".'"), - Строка(Получатель) - ); + Строка(Получатель)); КонецЕсли; СправочникДляСообщения = Справочники.СообщенияСистемы; СтандартнаяОбработка = Истина; Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); - ПереопределенныйСправочник = Модуль.ПриВыбореСправочникаДляСообщения(ТелоСообщения); + МодульСообщенияВМоделиСервисаРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); + ПереопределенныйСправочник = МодульСообщенияВМоделиСервисаРазделениеДанных.ПриВыбореСправочникаДляСообщения(ТелоСообщения); Если ПереопределенныйСправочник <> Неопределено Тогда СправочникДляСообщения = ПереопределенныйСправочник; КонецЕсли; @@ -568,8 +563,8 @@ СтандартнаяОбработкаЗаписи = Истина; Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); - Модуль.ПередЗаписьюСообщения(НовоеСообщение, СтандартнаяОбработкаЗаписи); + МодульСообщенияВМоделиСервисаРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); + МодульСообщенияВМоделиСервисаРазделениеДанных.ПередЗаписьюСообщения(НовоеСообщение, СтандартнаяОбработкаЗаписи); КонецЕсли; Если СтандартнаяОбработкаЗаписи Тогда @@ -712,8 +707,7 @@ ДанныеСообщения, КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, - КоличествоОтправленныхОбъектов - ); + КоличествоОтправленныхОбъектов); КонецПроцедуры @@ -773,8 +767,7 @@ ДанныеСообщения, КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, - КоличествоПолученныхОбъектов - ); + КоличествоПолученныхОбъектов); КонецПроцедуры @@ -837,8 +830,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервиса"); - Модуль.ПриОтправкеСообщения(КаналСообщений, ТелоСообщения, ОбъектСообщения); + МодульСообщенияВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервиса"); + МодульСообщенияВМоделиСервиса.ПриОтправкеСообщения(КаналСообщений, ТелоСообщения, ОбъектСообщения); КонецЕсли; @@ -856,8 +849,8 @@ Процедура ПриПолученииСообщения(КаналСообщений, ТелоСообщения, ОбъектСообщения) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервиса"); - Модуль.ПриПолученииСообщения(КаналСообщений, ТелоСообщения, ОбъектСообщения); + МодульСообщенияВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервиса"); + МодульСообщенияВМоделиСервиса.ПриПолученииСообщения(КаналСообщений, ТелоСообщения, ОбъектСообщения); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/ОбменСообщениямиВнутренний/Module.bsl b/SSL/src/CommonModules/ОбменСообщениямиВнутренний/Module.bsl index 7e7dec68e..8819a980a 100644 --- a/SSL/src/CommonModules/ОбменСообщениямиВнутренний/Module.bsl +++ b/SSL/src/CommonModules/ОбменСообщениямиВнутренний/Module.bsl @@ -57,7 +57,7 @@ ИспользоватьТранзакции = КоличествоЭлементовВТранзакции <> 1; // Получаем выборку изменённых данных - ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения); + ВыборкаИзменений = ОбменДаннымиСервер.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения); Если ИспользоватьТранзакции Тогда НачатьТранзакцию(); @@ -200,8 +200,16 @@ ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеXML, ДопустимыйНомерСообщения.Больший); - // Удаляем регистрацию изменений для узла отправителя сообщения - ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + ПараметрыРезервнойКопии = ОбменДаннымиСервер.ПараметрыРезервнойКопии(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + + УдалитьРегистрациюИзменений = Не ПараметрыРезервнойКопии.ВосстановленаРезервнаяКопия; + + Если УдалитьРегистрациюИзменений Тогда + + // Удаляем регистрацию изменений для узла отправителя сообщения + ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + + КонецЕсли; // считаем сколько объектов прочитали КоличествоЗаписанныхОбъектов = 0; @@ -319,8 +327,7 @@ Иначе ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось выполнить обмен сообщениями по причине: область данных %1 заблокирована!'"), - ОбластьДанных - ); + ОбластьДанных); КонецЕсли; КонецЕсли; @@ -370,6 +377,8 @@ ЧтениеСообщения.ЗакончитьЧтение(); КонецЕсли; + ОбменДаннымиСервер.ПриВосстановленииРезервнойКопии(ПараметрыРезервнойКопии); + ЧтениеXML.Закрыть(); Если ИспользоватьТранзакции Тогда @@ -381,6 +390,7 @@ ОтменитьТранзакцию(); КонецЕсли; ЧтениеСообщения.ПрерватьЧтение(); + ЧтениеXML.Закрыть(); ВызватьИсключение; КонецПопытки; @@ -459,6 +469,24 @@ УстановитьПривилегированныйРежим(Истина); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииЭтойПодсистемы(), + УровеньЖурналаРегистрации.Информация,,, + НСтр("ru = 'Обработка очереди сообщений системы запущена из сеанса с установленными + |значениями разделителей. Обработка будет производиться только для сообщений, + |сохраненных в разделенном справочнике, в элементах со значениями разделителей, + |совпадающих со значениями разделителей сеанса.'") + ); + + ОбрабатыватьСообщенияВНеразделенныхДанных = Ложь; + + Иначе + + ОбрабатыватьСообщенияВНеразделенныхДанных = Истина; + + КонецЕсли; + МодульРаботаВМоделиСервиса = Неопределено; Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); @@ -470,6 +498,14 @@ СправочникиСообщений = ОбменСообщениямиПовтИсп.ПолучитьСправочникиСообщений(); Для Каждого СправочникСообщений Из СправочникиСообщений Цикл + ПолноеИмяСправочника = СправочникСообщений.ПустаяСсылка().Метаданные().ПолноеИмя(); + ЭтоНеразделенныйСправочник = Не ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() ИЛИ + Не ОбщегоНазначения.ЭтоРазделенныйОбъектМетаданных(ПолноеИмяСправочника, ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных()); + + Если ЭтоНеразделенныйСправочник И Не ОбрабатыватьСообщенияВНеразделенныхДанных Тогда + Продолжить; + КонецЕсли; + Если Не ПустаяСтрока(ТекстЗапроса) Тогда ТекстЗапроса = ТекстЗапроса + " @@ -479,9 +515,7 @@ КонецЕсли; - ПолноеИмяСправочника = СправочникСообщений.ПустаяСсылка().Метаданные().ПолноеИмя(); - - Подзапрос = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Подзапрос = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( "ВЫБРАТЬ | ТаблицаСообщений.ОбластьДанныхВспомогательныеДанные КАК ОбластьДанных, | ТаблицаСообщений.Ссылка КАК Ссылка, @@ -493,10 +527,9 @@ | ТаблицаСообщений.Получатель = &Получатель | И (НЕ ТаблицаСообщений.Заблокировано) | [Отбор]" - , ПолноеИмяСправочника - ); + , ПолноеИмяСправочника); - Если Не ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() ИЛИ Не ОбщегоНазначения.ЭтоРазделенныйОбъектМетаданных(ПолноеИмяСправочника, ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных()) Тогда + Если ЭтоНеразделенныйСправочник Тогда Подзапрос = СтрЗаменить(Подзапрос, "ТаблицаСообщений.ОбластьДанныхВспомогательныеДанные КАК ОбластьДанных", "-1 КАК ОбластьДанных"); КонецЕсли; @@ -540,6 +573,7 @@ Если МодульРаботаВМоделиСервиса <> Неопределено И Выборка.ОбластьДанных <> -1 И МодульРаботаВМоделиСервиса.ОбластьДанныхЗаблокирована(Выборка.ОбластьДанных) Тогда + // Область заблокирована, перейти к следующей записи Продолжить; КонецЕсли; @@ -578,6 +612,14 @@ СтрокаТаблицы.Обработчик.ОбработатьСообщение(ЗаголовокСообщения.КаналСообщений, ОбъектСообщения.ТелоСообщения.Получить(), ЗаголовокСообщения.Отправитель); + Если ТранзакцияАктивна() Тогда + Пока ТранзакцияАктивна() Цикл + ОтменитьТранзакцию(); + КонецЦикла; + ОбъектСообщения.Заблокировано = Истина; + ВызватьИсключение НСтр("ru = 'В обработчике сообщения не была зафиксирована транзакция.'"); + КонецЕсли; + КонецЦикла; Исключение @@ -592,8 +634,7 @@ УровеньЖурналаРегистрации.Ошибка,,, СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка обработки сообщения %1: %2'"), - ЗаголовокСообщения.КаналСообщений, ПодробноеПредставлениеОшибки) - ); + ЗаголовокСообщения.КаналСообщений, ПодробноеПредставлениеОшибки)); КонецПопытки; Если СообщениеОбработано Тогда @@ -624,20 +665,18 @@ КонецЕсли; - Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Если ОбрабатыватьСообщенияВНеразделенныхДанных И ОбщегоНазначенияПовтИсп.РазделениеВключено() И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'После обработки сообщения канала %1 не было выключено разделение сеанса!'"), - ЗаголовокСообщения.КаналСообщений - ); + ЗаголовокСообщения.КаналСообщений); ЗаписьЖурналаРегистрации( СобытиеЖурналаРегистрацииЭтойПодсистемы(), УровеньЖурналаРегистрации.Ошибка, , , - ТекстСообщенияОбОшибке - ); + ТекстСообщенияОбОшибке); ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); @@ -646,8 +685,7 @@ Исключение ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииЭтойПодсистемы(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; РазблокироватьДанныеДляРедактирования(Выборка.Ссылка); @@ -699,8 +737,7 @@ ОтменитьТранзакцию(); Отказ = Истина; ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииУстановкаВедущейКонечнойТочки(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; @@ -738,8 +775,7 @@ Исключение ОтменитьТранзакцию(); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииУстановкаВедущейКонечнойТочки(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); КонецПопытки; @@ -793,8 +829,7 @@ ОтменитьТранзакцию(); Отказ = Истина; ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКонечнойТочки(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); КонецПопытки; @@ -861,8 +896,7 @@ ОтменитьТранзакцию(); Отказ = Истина; ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКонечнойТочки(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; @@ -1016,8 +1050,7 @@ Иначе ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось выполнить обмен сообщениями по причине: область данных %1 заблокирована!'"), - ОбластьДанных - ); + ОбластьДанных); КонецЕсли; КонецЕсли; @@ -1076,6 +1109,22 @@ Возврат ОбменДаннымиСервер.ПолучитьWSПроксиПоПараметрамПодключения(СтруктураНастроек, СтрокаСообщенияОбОшибке); КонецФункции +// Проверяет поддержку информационной базой корреспондента частичного получения сообщений +// обмена данными при обмене сообщениями (если не поддерживает - частичное получение сообщений +// обмена на стороне этой информационной базы не должно использоваться). +// +// Параметры: +// Отправитель - ПланОбменаСсылка.ОбменСообщениями, +// +// Возвращаемое значение: Булево. +// +Функция КорреспондентПоддерживаетЧастичноеПолучениеСообщенийОбмена(Знач Корреспондент) + + ВерсииКорреспондента = ВерсииКорреспондента(Корреспондент); + Возврат (ВерсииКорреспондента.Найти("2.1.1.8") <> Неопределено); + +КонецФункции + // Возвращает массив номеров версий, поддерживаемых интерфейсом корреспондента для подсистемы ОбменСообщениями. // // Параметры: @@ -1100,22 +1149,6 @@ Возврат ОбщегоНазначения.ПолучитьВерсииИнтерфейса(ПараметрыПодключения, "ОбменСообщениями"); КонецФункции -// Проверяет поддержку информационной базой корреспондента частичного получения сообщений -// обмена данными при обмене сообщениями (если не поддерживает - частичное получение сообщений -// обмена на стороне этой информационной базы не должно использоваться). -// -// Параметры: -// Отправитель - ПланОбменаСсылка.ОбменСообщениями, -// -// Возвращаемое значение: Булево. -// -Функция КорреспондентПоддерживаетЧастичноеПолучениеСообщенийОбмена(Знач Корреспондент) - - ВерсииКорреспондента = ВерсииКорреспондента(Корреспондент); - Возврат (ВерсииКорреспондента.Найти("2.1.1.8") <> Неопределено); - -КонецФункции - // Только для внутреннего использования Функция СобытиеЖурналаРегистрацииПодключениеКонечнойТочки() Экспорт @@ -1367,8 +1400,7 @@ Отказ = Истина; КонечнаяТочка = Неопределено; ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКонечнойТочки(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; diff --git a/SSL/src/CommonModules/ОбменСообщениямиКлиент/Module.bsl b/SSL/src/CommonModules/ОбменСообщениямиКлиент/Module.bsl index e04b4fa19..2a48bb7c9 100644 --- a/SSL/src/CommonModules/ОбменСообщениямиКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбменСообщениямиКлиент/Module.bsl @@ -11,8 +11,7 @@ Процедура ОтправитьИПолучитьСообщения() Экспорт Состояние(НСтр("ru = 'Выполняется отправка и получение сообщений.'"),, - НСтр("ru = 'Пожалуйста, подождите...'"), БиблиотекаКартинок.Информация32 - ); + НСтр("ru = 'Пожалуйста, подождите...'"), БиблиотекаКартинок.Информация32); Отказ = Ложь; @@ -21,8 +20,7 @@ Если Отказ Тогда Состояние(НСтр("ru = 'Возникли ошибки при отправке и получении сообщений!'"),, - НСтр("ru = 'Используйте журнал регистрации для диагностики ошибок.'"), БиблиотекаКартинок.Ошибка32 - ); + НСтр("ru = 'Используйте журнал регистрации для диагностики ошибок.'"), БиблиотекаКартинок.Ошибка32); Иначе diff --git a/SSL/src/CommonModules/ОбменСообщениямиПовтИсп/Module.bsl b/SSL/src/CommonModules/ОбменСообщениямиПовтИсп/Module.bsl index dba3d3d51..5b7f39387 100644 --- a/SSL/src/CommonModules/ОбменСообщениямиПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ОбменСообщениямиПовтИсп/Module.bsl @@ -34,8 +34,8 @@ МассивСправочников = Новый Массив(); Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); - Модуль.ПриЗаполненииСправочниковСообщений(МассивСправочников); + МодульСообщенияВМоделиСервисаРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); + МодульСообщенияВМоделиСервисаРазделениеДанных.ПриЗаполненииСправочниковСообщений(МассивСправочников); КонецЕсли; МассивСправочников.Добавить(Справочники.СообщенияСистемы); diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl index 32cb3347e..165a92bd3 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазы/Module.bsl @@ -26,115 +26,101 @@ Возврат Истина; КонецЕсли; - УстановитьПривилегированныйРежим(Истина); - - Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() - И Константы.ЗапуститьОбновлениеИнформационнойБазы.Получить() Тогда - - Возврат Истина; - КонецЕсли; - Возврат Ложь; КонецФункции -// Возвращает Истина при необходимости обновления конфигурации информационной базы подчиненного узла РИБ. -// В главном узле всегда - Ложь. -// -Функция ТребуетсяОбновлениеКонфигурацииУзлаРИБ() Экспорт - - Возврат КонфигурацияИзменена() И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ(); - -КонецФункции - // Возвращает Истина, если выполняется обновление ИБ Функция ВыполняетсяОбновлениеИнформационнойБазы() Экспорт - Возврат НеобходимоОбновлениеИнформационнойБазы() И ЕстьПраваНаОбновлениеИнформационнойБазы(); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() + И Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат НеобходимоОбновлениеИнформационнойБазы(); + КонецЕсли; + + Возврат ПараметрыСеанса.ВыполняетсяОбновлениеИБ; КонецФункции -// Обновление ИБ будет выполнено вне зависимости от изменения версии конфигурации. -// -// Если версия конфигурации не изменилась, будут выполнены только обязательные -// обработчики обновления (у которых версия = "*"). -// -// Необходимость снимается автоматически после обновления ИБ. -// -// Не используется в модели сервиса. -// -Процедура УстановитьНеобходимостьОбновленияИнформационнойБазы() Экспорт - - Константы.ЗапуститьОбновлениеИнформационнойБазы.Установить(Истина); - -КонецПроцедуры - // Возвращает пустую таблицу обработчиков обновления и первоначального заполнения ИБ. // // Возвращаемое значение: // ТаблицаЗначений – таблица с колонками: -// Версия - номер версии конфигурации, при переходе на которую должна -// быть выполнена процедура-обработчик обновления -// Процедура - полное имя процедуры-обработчика обновления. -// Должна быть обязательно экспортной. -// Опциональный - если Истина, то обработчик не должен срабатывать -// при первом запуске на "пустой" базе. -// Приоритет - Число. Для внутреннего использования. -// ОбщиеДанные - если Истина, то обработчик должен срабатывать до -// выполнения любых обработчиков, использующих разделенные -// данные. -// УправлениеОбработчиками - Булево. Если Истина обработчик должен иметь -// параметр типа структура в котором есть свойство -// РазделенныеОбработчики - таблица значений со структурой возвращаемой -// этой функцией. Используются только колонки Процедура, -// Приоритет и МонопольныйРежим. -// В случае необходимости выполнения разделенного обработчика, -// в данную таблицу необходимо добавить строку с описанием -// процедуры обработчика. -// Имеет смысл только для обязательных (Версия = *) -// обработчиков обновления с установленным флагом ОбщиеДанные -// ВыполнятьВГруппеОбязательных - Булево. Следует указывать если обработчик требуется -// выполнять в одной группе с обработчиками на версии "*". -// При этом, возможно менять порядок выполнения обработчика -// относительно других путем изменения приоритета. -// МонопольныйРежим - Неопределено, Булево. -// Неопределено - обработчик должен безусловно выполняться в -// монопольном режиме. -// Для обязательных обработчиков обновления (Версия = "*") -// Ложь - обработчик не требует монопольного режима -// Истина - обработчик может требовать монопольного режима -// для выполнения. -// В такие обработчики передается параметр типа структура -// со свойством МонопольныйРежим (типа булево). -// При запуске обработчика в монопольном режиме передается -// значение Истина. В этом случае обработчик должен выполнить -// требуемые действия по обновлению. Изменение параметра -// в теле обработчика игнорируется. -// При запуске обработчика в немонопольном режиме передается -// значение Ложь. В этом случае обработчик не должен вносить -// никакие изменения в ИБ. -// Если в результате анализа выясняется что обработчику требуется -// изменить данные ИБ следует установить значение параметра в -// Истина и прекратить выполнение обработчика. -// В этом случае оперативное (немонопольное обновление ИБ) будет -// отменено и выдана ошибка с требованием выполнить обновление -// в монопольном режиме. -// Для обработчиков перехода на конкретную версию (версия <> *) -// Ложь - обработчик не требует монопольного режима для выполнения -// Истина - обработчик требует монопольного режима для выполнения +// НачальноеЗаполнение - если Истина, то обработчик должен срабатывать при запуске +// на "пустой" базе. +// Версия - Строка, например, "2.1.3.39" - номер версии конфигурации, при переходе +// на которую должна быть выполнена процедура-обработчик обновления. +// - Пустая строка - значит обработчик только для начального заполнения +// (должно быть указано свойство НачальноеЗаполнение). +// Процедура - полное имя процедуры-обработчика обновления/начального заполнения. +// Обязательно должна быть экспортной. +// +// ВыполнятьВГруппеОбязательных - Булево. Следует указывать если обработчик требуется +// выполнять в одной группе с обработчиками на версии "*". +// При этом, возможно менять порядок выполнения обработчика +// относительно других путем изменения приоритета. +// Приоритет - Число. Для внутреннего использования. +// +// ОбщиеДанные - если Истина, то обработчик должен срабатывать до +// выполнения любых обработчиков, использующих разделенные +// данные. +// УправлениеОбработчиками - Булево. Если Истина обработчик должен иметь +// параметр типа структура в котором есть свойство +// РазделенныеОбработчики - таблица значений со структурой возвращаемой +// этой функцией. Колонка Версия игнорируется. +// В случае необходимости выполнения разделенного обработчика, +// в данную таблицу необходимо добавить строку с описанием +// процедуры обработчика. +// Имеет смысл только для обязательных (Версия = *) +// обработчиков обновления с установленным флагом ОбщиеДанные +// Комментарий - Строка, описание действий, выполняемых обработчиком обновления. +// РежимВыполнения - Строка, режим выполнения обработчика обновления. Допустимые значения: +// Монопольно, Отложенно, Оперативно. Если значение не было заполнено, +// обработчик считается монопольным. +// МонопольныйРежим - Неопределено, Булево. +// Неопределено - обработчик должен безусловно выполняться в монопольном режиме. +// Для обработчиков перехода на конкретную версию (версия <> *): +// Ложь - обработчик не требует монопольного режима для выполнения. +// Истина - обработчик требует монопольного режима для выполнения. +// Для обязательных обработчиков обновления (Версия = "*"): +// Ложь - обработчик не требует монопольного режима. +// Истина - обработчик может требовать монопольного режима для выполнения. +// В такие обработчики передается параметр типа структура +// со свойством МонопольныйРежим (типа булево). +// При запуске обработчика в монопольном режиме передается +// значение Истина. В этом случае обработчик должен выполнить +// требуемые действия по обновлению. Изменение параметра +// в теле обработчика игнорируется. +// При запуске обработчика в немонопольном режиме передается +// значение Ложь. В этом случае обработчик не должен вносить +// никакие изменения в ИБ. +// Если в результате анализа выясняется что обработчику требуется +// изменить данные ИБ следует установить значение параметра в +// Истина и прекратить выполнение обработчика. +// В этом случае оперативное (немонопольное обновление ИБ) будет +// отменено и выдана ошибка с требованием выполнить обновление +// в монопольном режиме. // Функция НоваяТаблицаОбработчиковОбновления() Экспорт Обработчики = Новый ТаблицаЗначений; - Обработчики.Колонки.Добавить("Версия", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(0))); + // Основные свойства. + Обработчики.Колонки.Добавить("НачальноеЗаполнение", Новый ОписаниеТипов("Булево")); + Обработчики.Колонки.Добавить("Версия", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(0))); Обработчики.Колонки.Добавить("Процедура", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(0))); - Обработчики.Колонки.Добавить("Опциональный"); - Обработчики.Колонки.Добавить("Приоритет", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2))); - Обработчики.Колонки.Добавить("ОбщиеДанные", Новый ОписаниеТипов("Булево")); - Обработчики.Колонки.Добавить("УправлениеОбработчиками", Новый ОписаниеТипов("Булево")); + Обработчики.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(0))); + Обработчики.Колонки.Добавить("РежимВыполнения", Новый ОписаниеТипов("Строка")); + // Дополнительные свойства (для библиотек). Обработчики.Колонки.Добавить("ВыполнятьВГруппеОбязательных", Новый ОписаниеТипов("Булево")); + Обработчики.Колонки.Добавить("Приоритет", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(2))); + // Поддержка модели сервиса. + Обработчики.Колонки.Добавить("ОбщиеДанные", Новый ОписаниеТипов("Булево")); + Обработчики.Колонки.Добавить("УправлениеОбработчиками", Новый ОписаниеТипов("Булево")); Обработчики.Колонки.Добавить("МонопольныйРежим"); + // Устарело. Обратная совместимость до редакции "2.2". + Обработчики.Колонки.Добавить("Опциональный"); + Возврат Обработчики; КонецФункции @@ -152,7 +138,7 @@ // ДеревоЗначений – выполненные обработчики обновления. // Функция ВыполнитьИтерациюОбновления(Знач ИдентификаторБиблиотеки, Знач ВерсияМетаданныхИБ, - Знач ОбработчикиОбновления, Знач ОперативноеОбновление = Ложь) Экспорт + Знач ОбработчикиОбновления, Знач ХодВыполненияОбработчиков, Знач ОперативноеОбновление = Ложь) Экспорт ТекущаяВерсияИБ = ВерсияИБ(ИдентификаторБиблиотеки); Если ПустаяСтрока(ТекущаяВерсияИБ) Тогда @@ -182,7 +168,7 @@ ВыполняемыеОбработчики = ОбработчикиОбновленияВИнтервале(ОбработчикиОбновления, ТекущаяВерсияИБ, ВерсияМетаданных); КонецЕсли; - ОтключитьОбработчикиОбновления(ИдентификаторБиблиотеки, ВыполняемыеОбработчики, ВерсияМетаданных); + ОтключитьОбработчикиОбновления(ИдентификаторБиблиотеки, ВыполняемыеОбработчики, ВерсияМетаданных, ХодВыполненияОбработчиков); ОбязательныеРазделенныеОбработчики = НоваяТаблицаОбработчиковОбновления(); @@ -234,7 +220,10 @@ КонецЕсли; КонецЕсли; - ВыполнитьОбработчикОбновления(ЗаписыватьВЖурнал, ИдентификаторБиблиотеки, Обработчик, ПараметрыОбработчика) + ДополнительныеПараметры = Новый Структура("ЗаписыватьВЖурнал, ИдентификаторБиблиотеки, ХодВыполненияОбработчиков", + ЗаписыватьВЖурнал, ИдентификаторБиблиотеки, ХодВыполненияОбработчиков); + + ВыполнитьОбработчикОбновления(Обработчик, ПараметрыОбработчика, ДополнительныеПараметры); КонецЦикла; Если Версия.Версия = "*" Тогда @@ -268,10 +257,9 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); - Модуль.СформироватьПланОбновленияОбластиДанных(ИдентификаторБиблиотеки, ОбработчикиОбновления, - ОбязательныеРазделенныеОбработчики, ИсходнаяВерсияИБ, ВерсияМетаданныхИБ - ); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.СформироватьПланОбновленияОбластиДанных(ИдентификаторБиблиотеки, ОбработчикиОбновления, + ОбязательныеРазделенныеОбработчики, ИсходнаяВерсияИБ, ВерсияМетаданныхИБ); КонецЕсли; @@ -281,6 +269,44 @@ КонецФункции +// Записывает изменения в переданном объекте. +// +// Параметры: +// Данные - объект, который необходимо записать. +// РегистрироватьНаУзлахПлановОбмена - Булево - включает регистрацию на узлах планов обмена при записи объекта. +// ВключитьБизнесЛогику - Булево - включает бизнес-логику при записи объекта. +// +Процедура ЗаписатьДанные(Знач Данные, Знач РегистрироватьНаУзлахПлановОбмена = Ложь, Знач ВключитьБизнесЛогику = Ложь) Экспорт + + Данные.ОбменДанными.Загрузка = Не ВключитьБизнесЛогику; + Если Не РегистрироватьНаУзлахПлановОбмена Тогда + Данные.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + Данные.ОбменДанными.Получатели.АвтоЗаполнение = Ложь; + КонецЕсли; + + Данные.Записать(); + +КонецПроцедуры + +// Удаляет переданный объект. +// +// Параметры: +// Данные - объект, который необходимо удалить. +// РегистрироватьНаУзлахПлановОбмена - Булево - включает регистрацию на узлах планов обмена при записи объекта. +// ВключитьБизнесЛогику - Булево - включает бизнес-логику при записи объекта. +// +Процедура УдалитьДанные(Знач Данные, Знач РегистрироватьНаУзлахПлановОбмена = Ложь, Знач ВключитьБизнесЛогику = Ложь) Экспорт + + Данные.ОбменДанными.Загрузка = Не ВключитьБизнесЛогику; + Если Не РегистрироватьНаУзлахПлановОбмена Тогда + Данные.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + Данные.ОбменДанными.Получатели.АвтоЗаполнение = Ложь; + КонецЕсли; + + Данные.Удалить(); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС @@ -381,11 +407,36 @@ СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбязательныхОбъектовПланаОбмена"].Добавить( "ОбновлениеИнформационнойБазы"); + СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовНачальногоОбразаПланаОбмена"].Добавить( + "ОбновлениеИнформационнойБазы"); + + СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииПараметровРаботыКлиентаПриЗапуске"].Добавить( + "ОбновлениеИнформационнойБазы"); + + СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииОбработчиковУстановкиПараметровСеанса"].Добавить( + "ОбновлениеИнформационнойБазы"); + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий") Тогда + СерверныеОбработчики[ + "СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий\ПриПолученииСпискаШаблонов"].Добавить( + "ОбновлениеИнформационнойБазы"); + КонецЕсли; + СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовИсключенийПланаОбмена"].Добавить( "ОбновлениеИнформационнойБазы"); - СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовНачальногоОбразаПланаОбмена"].Добавить( - "ОбновлениеИнформационнойБазы"); +КонецПроцедуры + +// Инициализирует параметр сеанса ВыполняетсяОбновлениеИБ. +// +Процедура УстановкаПараметровСеанса(Знач ИмяПараметра, УстановленныеПараметры) Экспорт + + Если ИмяПараметра <> "ВыполняетсяОбновлениеИБ" Тогда + Возврат; + КонецЕсли; + + ПараметрыСеанса.ВыполняетсяОбновлениеИБ = НеобходимоОбновлениеИнформационнойБазы(); + УстановленныеПараметры.Добавить("ВыполняетсяОбновлениеИБ"); КонецПроцедуры @@ -460,8 +511,8 @@ КонецЕсли; СообщениеАдминистраторуСистемы = - НСтр("ru = 'Вход в программу временно невозможен в связи с обновлением версии конфигурации. - |Для завершения обновления конфигурации требуются административные права + НСтр("ru = 'Вход в программу временно невозможен в связи с обновлением на новую версию. + |Для завершения обновления версии программы требуются административные права |(роли ""Администратор системы"" и ""Полные права"").'"); УстановитьПривилегированныйРежим(Истина); @@ -472,7 +523,7 @@ Если НеобходимоОбновлениеНеразделенныхДанныхИнформационнойБазы() Тогда СообщениеАдминистраторуОбластиДанных = - НСтр("ru = 'Вход в программу временно невозможен в связи с обновлением версии конфигурации. + НСтр("ru = 'Вход в приложение временно невозможен в связи с обновлением на новую версию. |Обратитесь к администратору сервиса за подробностями.'"); Если ДоступноИспользованиеРазделенныхДанных Тогда @@ -486,53 +537,62 @@ Сообщение = СообщениеАдминистраторуОбластиДанных; КонецЕсли; КонецЕсли; - - ИначеЕсли НЕ РазделениеВключено - ИЛИ ДоступноИспользованиеРазделенныхДанных Тогда - Если НеобходимоОбновлениеИнформационнойБазы() - И НЕ ЕстьПраваНаОбновлениеИнформационнойБазы(УчитыватьПривилегированныйРежим, Истина) Тогда - - ЭтоЗапускСПустымСпискомПользователей = ЭтоЗапускСПустымСпискомПользователей(); - - Если ПривилегированныйРежим() - И НЕ УчитыватьПривилегированныйРежим - И ЭтоЗапускСПустымСпискомПользователей Тогда - Возврат ""; // Возможно, использован параметр запуска UsePrivilegedMode. - КонецЕсли; - - Если ЭтоЗапускСПустымСпискомПользователей Тогда - Если ПриЗапускеКлиентскогоПриложения Тогда - // Проверка выполняется в подсистеме пользователи (с предложением добавить администратора). - Возврат ""; - КонецЕсли; - // Сообщение администратору системы при пустом списке пользователей. - Сообщение = - НСтр("ru = 'Для завершения обновления версии конфигурации требуются административные права. - |Необходимо добавить в список пользователей информационной базы учетную запись - |администратора с двумя ролями ""Администратор системы"" и ""Полные права"", - |и повторить запуск программы от его имени. - | - |Для перехода к списку пользователей информационной базы необходимо открыть Конфигуратор и - |воспользоваться пунктом меню ""Администрирование - Пользователи"".'"); - Иначе - Если ЕстьПравоАдминистрирование Тогда - Сообщение = СообщениеАдминистраторуСистемы; - Иначе - Если РазделениеВключено Тогда - // Сообщение пользователю сервиса. - Сообщение = - НСтр("ru = 'Вход в программу временно невозможен в связи с обновлением версии конфигурации. - |Обратитесь к администратору за подробностями.'"); - Иначе - // Сообщение пользователю локального режима. - Сообщение = - НСтр("ru = 'Вход в программу временно невозможен в связи с обновлением версии конфигурации. - |Обратитесь к администратору за подробностями.'"); - КонецЕсли; - КонецЕсли; - КонецЕсли; + Возврат Сообщение; + КонецЕсли; + + // Сообщение администратору сервиса не выдается + Если РазделениеВключено И Не ДоступноИспользованиеРазделенныхДанных Тогда + Возврат ""; + КонецЕсли; + + Если ЕстьПраваНаОбновлениеИнформационнойБазы(УчитыватьПривилегированныйРежим, Истина) Тогда + Возврат ""; + КонецЕсли; + + Если Не НеобходимоОбновлениеИнформационнойБазы() И Не ТребуетсяПроверитьЛегальностьПолученияОбновления() Тогда + Возврат ""; + КонецЕсли; + + ЭтоЗапускСПустымСпискомПользователей = ЭтоЗапускСПустымСпискомПользователей(); + + Если ПривилегированныйРежим() И НЕ УчитыватьПривилегированныйРежим И ЭтоЗапускСПустымСпискомПользователей Тогда + Возврат ""; // Возможно, использован параметр запуска UsePrivilegedMode. + КонецЕсли; + + Если ЭтоЗапускСПустымСпискомПользователей Тогда + + Если ПриЗапускеКлиентскогоПриложения Тогда + // Проверка выполняется в подсистеме пользователи (с предложением добавить администратора). + Возврат ""; КонецЕсли; + + // Сообщение администратору системы при пустом списке пользователей. + Сообщение = + НСтр("ru = 'Для завершения обновления версии программы требуются административные права. + |Необходимо добавить в список пользователей информационной базы учетную запись + |администратора с двумя ролями ""Администратор системы"" и ""Полные права"", + |и повторить запуск программы от его имени. + | + |Для перехода к списку пользователей информационной базы необходимо открыть Конфигуратор и + |воспользоваться пунктом меню ""Администрирование - Пользователи"".'"); + Возврат Сообщение; + КонецЕсли; + + Если ЕстьПравоАдминистрирование Тогда + Возврат СообщениеАдминистраторуСистемы; + КонецЕсли; + + Если РазделениеВключено Тогда + // Сообщение пользователю сервиса. + Сообщение = + НСтр("ru = 'Вход в приложение временно невозможен в связи с обновлением на новую версию. + |Обратитесь к администратору сервиса за подробностями.'"); + Иначе + // Сообщение пользователю локального режима. + Сообщение = + НСтр("ru = 'Вход в программу временно невозможен в связи с обновлением на новую версию. + |Обратитесь к администратору за подробностями.'"); КонецЕсли; Возврат Сообщение; @@ -571,6 +631,8 @@ КонецПопытки; КонецЕсли; + НачальноеЗаполнениеДанных = НачальноеЗаполнениеДанных(); + ВерсияМетаданных = Метаданные.Версия; Если ПустаяСтрока(ВерсияМетаданных) Тогда ВерсияМетаданных = "0.0.0.0"; @@ -591,9 +653,28 @@ КонецЕсли; Если НЕ НеобходимоОбновлениеИнформационнойБазы() Тогда + + Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() + И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда + + // Загрузка и выгрузка сообщения обмена после перезапуска в связи с получением изменений конфигурации. + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + МодульОбменДаннымиСервер.ВыполнитьСинхронизациюПриОтсутствииОбновленияИнформационнойБазы(); + + КонецЕсли; + Возврат "НеУспешно"; КонецЕсли; + Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() + И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда + + // Загрузка сообщения обмена после перезапуска в связи с получением изменений конфигурации. + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + МодульОбменДаннымиСервер.ЗагрузитьСообщениеПередОбновлениемИнформационнойБазы(); + + КонецЕсли; + ОписанияПодсистем = СтандартныеПодсистемыПовтИсп.ОписанияПодсистем(); Для каждого ИмяПодсистемы Из ОписанияПодсистем.Порядок Цикл ОписаниеПодсистемы = ОписанияПодсистем.ПоИменам.Получить(ИмяПодсистемы); @@ -627,8 +708,8 @@ КонецЕсли; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); - КлючЗаписи = Модуль.КлючЗаписиВерсийПодсистем(); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); + КлючЗаписи = МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.КлючЗаписиВерсийПодсистем(); КонецЕсли; КонецЕсли; @@ -702,15 +783,32 @@ КонецЕсли; Попытка + + ХодВыполненияОбработчиков = КоличествоОбработчиковНаТекущуюВерсию(ИтерацииОбновления); // Выполняем все обработчики обновления для подсистем конфигурации. - Для каждого ИтерацияОбновления Из ИтерацииОбновления Цикл + Для Каждого ИтерацияОбновления Из ИтерацииОбновления Цикл ИтерацияОбновления.ВыполненныеОбработчики = ВыполнитьИтерациюОбновления( ИтерацияОбновления.Подсистема, ИтерацияОбновления.Версия, ИтерацияОбновления.Обработчики, + ХодВыполненияОбработчиков, ОперативноеОбновление); КонецЦикла; + // Для файловой базы отложенные обработчики выполняются в основном цикле обновления + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() И + (Не ОбщегоНазначенияПовтИсп.РазделениеВключено() + Или ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных()) Тогда + + ЗапланироватьОтложенноеОбновление(ИтерацииОбновления, НачальноеЗаполнениеДанных); + + ПараметрЗапускаКлиента = ПараметрыСеанса.ПараметрыКлиентаНаСервере.Получить("ПараметрЗапуска"); + Если Найти(НРег(ПараметрЗапускаКлиента), НРег("ОтладкаОтложенногоОбновления")) = 0 Тогда + ВыполнитьОтложенноеОбновлениеСейчас(); + КонецЕсли; + + КонецЕсли; + Исключение // Отключение монопольного режима. Если НЕ РежимОтладки Тогда @@ -731,7 +829,7 @@ КонецПопытки; Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() - ИЛИ НЕ ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + ИЛИ НЕ ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда ОбновитьРазделыОписанияИзменений(); КонецЕсли; @@ -750,6 +848,8 @@ ВыводитьОписаниеОбновлений = ВерсияДанных <> "0.0.0.0"; + ОбновитьПовторноИспользуемыеЗначения(); + Для каждого ИтерацияОбновления Из ИтерацииОбновления Цикл ИтерацияОбновления.ОсновнойСерверныйМодуль.ПослеОбновленияИнформационнойБазы( ИтерацияОбновления.ПредыдущаяВерсия, @@ -759,23 +859,45 @@ НЕ ОперативноеОбновление); КонецЦикла; - Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда - // Только для локального режима (не используется в модели сервиса). + Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() + И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Если Константы.ЗапуститьОбновлениеИнформационнойБазы.Получить() Тогда - // Снятие признака необходимости обновления ИБ, если он использовался. - - Если НЕ ТребуетсяОбновлениеКонфигурацииУзлаРИБ() Тогда - // Для подчиненного узла РИБ признак снимается только в случае, - // когда запуск выполнен после обновления конфигурации базы данных. - - Константы.ЗапуститьОбновлениеИнформационнойБазы.Установить(Ложь); - КонецЕсли; + // Выгрузка сообщения обмена после перезапуска в связи с получением изменений конфигурации. + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + МодульОбменДаннымиСервер.ВыгрузитьСообщениеПослеОбновленияИнформационнойБазы(); + + КонецЕсли; + + // Для клиент-серверной базы запланировать выполнение отложенных обработчиков обновления + Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + + Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено() + Или ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + ЗапланироватьОтложенноеОбновление(ИтерацииОбновления, НачальноеЗаполнениеДанных); КонецЕсли; + + КонецЕсли; + + Если Не НачальноеЗаполнениеДанных И Не ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("ОбновлениеИБ", "ВывестиОписаниеИзмененийДляАдминистратора", Истина, , ИмяПользователя()); + КонецЕсли; + + Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() + И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда + + // Сброс неуспешного статуса обновления конфигурации + // при завершении обновления вручную (без скрипта). + МодульОбновлениеКонфигурации = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеКонфигурации"); + МодульОбновлениеКонфигурации.ПослеОбновленияИнформационнойБазы(); КонецЕсли; ОбновитьПовторноИспользуемыеЗначения(); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() + И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + ПараметрыСеанса.ВыполняетсяОбновлениеИБ = Ложь; + КонецЕсли; + Возврат "Успешно"; КонецФункции @@ -801,8 +923,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); - Модуль.ПриОпределенииВерсииИБ(ИдентификаторБиблиотеки, ПолучитьВерсиюОбщихДанных, + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ПриОпределенииВерсииИБ(ИдентификаторБиблиотеки, ПолучитьВерсиюОбщихДанных, СтандартнаяОбработка, Результат); КонецЕсли; @@ -870,8 +992,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); - Модуль.ПриОпределенииПервогоВходаВОбластьДанных(СтандартнаяОбработка, Результат); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ПриОпределенииПервогоВходаВОбластьДанных(СтандартнаяОбработка, Результат); КонецЕсли; @@ -950,7 +1072,7 @@ // Для внутреннего использования Функция ОбработчикиОбновленияВИнтервале(Знач ИсходнаяТаблицаОбработчиков, Знач ВерсияОт, - Знач ВерсияДо, Знач ПолучатьРазделенные = Ложь, Знач ОперативноеОбновление = Ложь) Экспорт + Знач ВерсияДо, Знач ПолучатьРазделенные = Ложь, Знач Отбор = "Монопольно") Экспорт // Добавление номера в таблицу, для упорядочивания в порядке добавления ВсеОбработчики = ИсходнаяТаблицаОбработчиков.Скопировать(); @@ -985,7 +1107,8 @@ Схема.Параметры.Найти("ВерсияДо").Значение = ВерсияДо; Схема.Параметры.Найти("ВесВерсииОт").Значение = ВесВерсии(Схема.Параметры.Найти("ВерсияОт").Значение); Схема.Параметры.Найти("ВесВерсииДо").Значение = ВесВерсии(Схема.Параметры.Найти("ВерсияДо").Значение); - Схема.Параметры.Найти("ОперативноеОбновление").Значение = ОперативноеОбновление; + Схема.Параметры.Найти("ОперативноеОбновление").Значение = (Отбор = "Оперативно"); + Схема.Параметры.Найти("ОтложенноеОбновление").Значение = (Отбор = "Отложенно"); Компоновщик = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = Компоновщик.Выполнить(Схема, Схема.НастройкиПоУмолчанию, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); @@ -1005,6 +1128,23 @@ КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Обработчики условных вызовов в эту подсистемы + +// Вызывается при выполнении скрипта обновления из процедуры ОбновлениеКонфигурации.ЗавершитьОбновление(). +Процедура ПослеЗавершенияОбновления() Экспорт + + СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы(); + + Если СведенияОбОбновлении = Неопределено Тогда + Возврат; + КонецЕсли; + + СведенияОбОбновлении.ЛегальностьПолученияОбновленияПодтверждена = Истина; + ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Процедуры для установки/обновления/получения параметров работы программы (кэшей). @@ -1246,6 +1386,10 @@ // Функция ВесВерсии(Знач Версия) Экспорт + Если Версия = "" Тогда + Возврат 0; + КонецЕсли; + Возврат ВесВерсииИзМассиваСтрок(СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Версия, ".")); КонецФункции @@ -1280,6 +1424,8 @@ Если ОписаниеПодсистемы.Имя = ИмяОсновнойПодсистемы Тогда ИтерацияОбновлениеОсновнойПодсистемы = ИтерацияОбновления; КонецЕсли; + + ПроверитьСвойстваОбработчиков(ИтерацияОбновления, ОписаниеПодсистемы.Имя = ИмяОсновнойПодсистемы); КонецЦикла; // Для обратной совместимости. @@ -1294,6 +1440,7 @@ ИтерацияОбновления.Вставить("ПредыдущаяВерсия", ВерсияИБ(ИмяОсновнойПодсистемы)); ИтерацииОбновления.Добавить(ИтерацияОбновления); + ПроверитьСвойстваОбработчиков(ИтерацияОбновления, Истина); КонецЕсли; Возврат ИтерацииОбновления; @@ -1430,6 +1577,213 @@ КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// Механизм отложенного обновления + +// Удаляет отложенный обработчики из очереди выполняемых обработчиков на новую версию. +// +// Параметры: +// ИмяОбработчика - Строка - Строковый идентификатор отложенного обработчика. +// +Процедура УдалитьОтложенныйОбработчикИзОчереди(ИмяОбработчика) Экспорт + + СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы(); + + Если СведенияОбОбновлении = Неопределено Тогда + Возврат; + КонецЕсли; + + ОтобранныйОбработчик = СведенияОбОбновлении.ДеревоОбработчиков.НайтиСтроки(Новый Структура("ИмяОбработчика", ИмяОбработчика)); + Если ОтобранныйОбработчик <> Неопределено И ОтобранныйОбработчик.Количество() > 0 Тогда + + Для Каждого СтрокаОбработчик Из ОтобранныйОбработчик Цикл + СтрокаОбработчик.Родитель.Удалить(СтрокаОбработчик); + КонецЦикла; + + КонецЕсли; + + ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + +КонецПроцедуры + +// Формирует дерево отложенных обработчиков и активирует регламентное задание. +// +Процедура ЗапланироватьОтложенноеОбновление(ИтерацииОбновления, НачальноеЗаполнениеДанных) + + ДеревоОбработчиков = ВыполненныеОбработчикиПрошлыхВерсий(НачальноеЗаполнениеДанных); + СведенияОбОбновлении = НовыеСведенияОбОбновлении(НачальноеЗаполнениеДанных); + + ИмяБиблиотеки = ""; + НомерВерсии = ""; + + Для каждого ИтерацияОбновления Из ИтерацииОбновления Цикл + + ИмяБиблиотеки = ИтерацияОбновления.Подсистема; + ОбработчикиПоВерсиям = ОбработчикиОбновленияВИнтервале(ИтерацияОбновления.Обработчики, + ИтерацияОбновления.ПредыдущаяВерсия, + ИтерацияОбновления.Версия, + Истина, + "Отложенно"); + + Если ОбработчикиПоВерсиям.Строки.Количество() = 0 Тогда + Продолжить; + КонецЕсли; + + // Добавление строки библиотеки. + НайденнаяСтрока = ДеревоОбработчиков.Строки.Найти(ИмяБиблиотеки, "ИмяБиблиотеки"); + Если НайденнаяСтрока <> Неопределено Тогда + СтрокаДереваБиблиотека = НайденнаяСтрока; + Иначе + СтрокаДереваБиблиотека = ДеревоОбработчиков.Строки.Добавить(); + СтрокаДереваБиблиотека.ИмяБиблиотеки = ИмяБиблиотеки; + КонецЕсли; + СтрокаДереваБиблиотека.Статус = ""; + + Для каждого СтрокаВерсия Из ОбработчикиПоВерсиям.Строки Цикл + НайденнаяСтрока = СтрокаДереваБиблиотека.Строки.Найти(СтрокаВерсия.Версия, "НомерВерсии"); + Если НайденнаяСтрока <> Неопределено Тогда + НайденнаяСтрока.Статус = ""; + + Для Каждого НевыполненныйОбработчик Из НайденнаяСтрока.Строки Цикл + НевыполненныйОбработчик.ЧислоПопыток = 0; + КонецЦикла; + + Продолжить; + КонецЕсли; + СтрокаДереваВерсии = СтрокаДереваБиблиотека.Строки.Добавить(); + СтрокаДереваВерсии.НомерВерсии = СтрокаВерсия.Версия; + СтрокаДереваВерсии.Статус = ""; + + Для Каждого СтрокаОбработчики Из СтрокаВерсия.Строки Цикл + + Если СтрокаОбработчики.МонопольныйРежим = Истина Тогда + + ТекстОшибки = НСтр("ru = 'У отложенного обработчика ""%1"" + |не должен быть установлен признак ""МонопольныйРежим"".'"); + ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстОшибки, СтрокаОбработчики.Процедура); + ЗаписатьОшибку(ТекстОшибки); + ВызватьИсключение ТекстОшибки; + + КонецЕсли; + + СтрокаДереваОбработчики = СтрокаДереваВерсии.Строки.Добавить(); + СтрокаДереваОбработчики.ИмяБиблиотеки = ИмяБиблиотеки; + СтрокаДереваОбработчики.НомерВерсии = СтрокаОбработчики.Версия; + СтрокаДереваОбработчики.ВерсияРегистрации = СтрокаОбработчики.ВерсияРегистрации; + СтрокаДереваОбработчики.ИмяОбработчика = СтрокаОбработчики.Процедура; + СтрокаДереваОбработчики.Комментарий = СтрокаОбработчики.Комментарий; + СтрокаДереваОбработчики.Статус = "НеВыполнено"; + СтрокаДереваОбработчики.ЧислоПопыток = 0; + КонецЦикла; + + КонецЦикла; + + КонецЦикла; + + ВыполнитьПроверкуДереваВыполненныхОбработчиков(ДеревоОбработчиков); + СведенияОбОбновлении.ДеревоОбработчиков = ДеревоОбработчиков; + ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + + // Планирование выполнения регламентного задания + // При работе в модели сервиса - добавляется регламентное задание в очередь + Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + ПриВключенииОтложенногоОбновления(Истина); + Иначе + РегламентноеЗадание = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ОтложенноеОбновлениеИБ); + РегламентноеЗадание.Использование = Истина; + РегламентноеЗадание.Записать(); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +// Управляет процессом выполнения отложенных обработчиков обновления. +// +Процедура ВыполнитьОтложенноеОбновление() Экспорт + + СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы(); + + Если Не ОбщегоНазначенияПовтИсп.РазделениеВключено() + И СведенияОбОбновлении.ВремяОкончанияОбновления = Неопределено Тогда + Возврат; // Ожидаем, пока запишется вся информация об основном цикле обновления + КонецЕсли; + + Если СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления <> Неопределено Тогда + ОтключитьОтложенноеОбновление(); + Возврат; + КонецЕсли; + + Если СведенияОбОбновлении.ВремяНачалаОтложенногоОбновления = Неопределено Тогда + СведенияОбОбновлении.ВремяНачалаОтложенногоОбновления = ТекущаяДатаСеанса(); + КонецЕсли; + Если ТипЗнч(СведенияОбОбновлении.НомерСеанса) <> Тип("СписокЗначений") Тогда + СведенияОбОбновлении.НомерСеанса = Новый СписокЗначений; + КонецЕсли; + СведенияОбОбновлении.НомерСеанса.Добавить(НомерСеансаИнформационнойБазы()); + ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + + Если Не ВыполнитьОтложенныйОбработчикОбновления(СведенияОбОбновлении) Тогда + ОтключитьОтложенноеОбновление(); + КонецЕсли; + +КонецПроцедуры + +// Выполняет все процедуры отложенного обновления в цикле за один вызов. +// +Процедура ВыполнитьОтложенноеОбновлениеСейчас() Экспорт + + СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы(); + + Если СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления <> Неопределено Тогда + Возврат; + КонецЕсли; + + Если СведенияОбОбновлении.ВремяНачалаОтложенногоОбновления = Неопределено Тогда + СведенияОбОбновлении.ВремяНачалаОтложенногоОбновления = ТекущаяДатаСеанса(); + КонецЕсли; + + Если ТипЗнч(СведенияОбОбновлении.НомерСеанса) <> Тип("СписокЗначений") Тогда + СведенияОбОбновлении.НомерСеанса = Новый СписокЗначений; + КонецЕсли; + СведенияОбОбновлении.НомерСеанса.Добавить(НомерСеансаИнформационнойБазы()); + ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + + ОбработчикиВыполнялись = Истина; + КоличествоЗапусков = 0; // защита от бесконечного зацикливания из-за возможных ошибок в обработчиках обновления + Пока ОбработчикиВыполнялись И КоличествоЗапусков < 10000 Цикл + ОбработчикиВыполнялись = ВыполнитьОтложенныйОбработчикОбновления(СведенияОбОбновлении); + КоличествоЗапусков = КоличествоЗапусков + 1; + КонецЦикла; + +КонецПроцедуры + +// Получает сведения об обновлении информационной базы. +// +Функция СведенияОбОбновленииИнформационнойБазы() Экспорт + + УстановитьПривилегированныйРежим(Истина); + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат НовыеСведенияОбОбновлении(Истина); + КонецЕсли; + + Возврат Константы.СведенияОбОбновленииИБ.Получить().Получить(); + +КонецФункции + +// Записывает данные по обновлению в константу "СведенияОбОбновлении". +// +Процедура ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении) Экспорт + + МенеджерКонстанты = Константы.СведенияОбОбновленииИБ.СоздатьМенеджерЗначения(); + МенеджерКонстанты.Значение = Новый ХранилищеЗначения(СведенияОбОбновлении); + ЗаписатьДанные(МенеджерКонстанты); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики событий подсистем БСП @@ -1464,6 +1818,29 @@ КонецПроцедуры +// Доопределяет структуру параметров, необходимых для работы клиентского кода +// при запуске конфигурации, т.е. в обработчиках событий +// - ПередНачаломРаботыСистемы, +// - ПриНачалеРаботыСистемы. +// +// Важно: при запуске недопустимо использовать команды сброса кэша +// повторно используемых модулей, иначе запуск может привести +// к непредсказуемым ошибкам или лишним серверным вызовам. +// +// Параметры: +// Параметры - Структура, в которую можно вставить параметры работы клиента при запуске. +// Ключ - имя параметра, +// Значение - значение параметра. +// +// Пример использования: +// Параметры.Вставить(<ИмяПараметра>, <Код получения значения параметра>); +// +Процедура ПриДобавленииПараметровРаботыКлиентаПриЗапуске(Параметры) Экспорт + + Параметры.Вставить("ПроверитьЛегальностьПолученияОбновления", ТребуетсяПроверитьЛегальностьПолученияОбновления()); + +КонецПроцедуры + // Добавляет процедуры-обработчики обновления, необходимые данной подсистеме. // // Параметры: @@ -1493,6 +1870,22 @@ +КонецПроцедуры + +// Используется для получения объектов метаданных, которые должны входить в состав плана обмена +// и НЕ должны входить в состав подписок на события регистрации изменений для этого плана обмена. +// Эти объекты метаданных используются только в момент создания начального образа подчиненного узла +// и не мигрируют в процессе обмена. +// Если подсистема имеет объекты метаданных, которые участвуют только в создании начального образа подчиненного узла, +// то в параметр <Объект> необходимо добавить эти объекты метаданных. +// +// Параметры: +// Объекты – Массив. Массив объектов метаданных конфигурации. +// +Процедура ПриПолученииОбъектовНачальногоОбразаПланаОбмена(Объекты) Экспорт + + Объекты.Добавить(Метаданные.РегистрыСведений.ВерсииПодсистем); + КонецПроцедуры // Используется для получения объектов метаданных, которые не следует включать в состав плана обмена. @@ -1509,25 +1902,32 @@ Если РаспределеннаяИнформационнаяБаза Тогда - Объекты.Добавить(Метаданные.Константы.ЗапуститьОбновлениеИнформационнойБазы); + Объекты.Добавить(Метаданные.Константы.РазделыОписанияИзмененийСистемы); КонецЕсли; КонецПроцедуры -// Используется для получения объектов метаданных, которые должны входить в состав плана обмена -// и НЕ должны входить в состав подписок на события регистрации изменений для этого плана обмена. -// Эти объекты метаданных используются только в момент создания начального образа подчиненного узла -// и не мигрируют в процессе обмена. -// Если подсистема имеет объекты метаданных, которые участвуют только в создании начального образа подчиненного узла, -// то в параметр <Объект> необходимо добавить эти объекты метаданных. +// Обработчик события ПриПолученииСпискаШаблонов. +// +// Формирует список шаблонов заданий очереди. // // Параметры: -// Объекты – Массив. Массив объектов метаданных конфигурации. +// Шаблоны - Массив строк. В параметр следует добавить имена предопределенных +// неразделенных регламентных заданий, которые должны использоваться в качестве +// шаблонов для заданий очереди. // -Процедура ПриПолученииОбъектовНачальногоОбразаПланаОбмена(Объекты) Экспорт +Процедура ПриПолученииСпискаШаблонов(Шаблоны) Экспорт - Объекты.Добавить(Метаданные.РегистрыСведений.ВерсииПодсистем); + Шаблоны.Добавить("ОтложенноеОбновлениеИБ"); + +КонецПроцедуры + +// Возвращает соответствие имен параметров сеанса и обработчиков для их инициализации. +// +Процедура ПриДобавленииОбработчиковУстановкиПараметровСеанса(Обработчики) Экспорт + + Обработчики.Вставить("ВыполняетсяОбновлениеИБ", "ОбновлениеИнформационнойБазы.УстановкаПараметровСеанса"); КонецПроцедуры @@ -1553,8 +1953,22 @@ Процедура ПриСнятииБлокировкиФайловойБазы() Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СоединенияИБ"); - Модуль.ПриСнятииБлокировкиФайловойБазы(); + МодульСоединенияИБ = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СоединенияИБ"); + МодульСоединенияИБ.ПриСнятииБлокировкиФайловойБазы(); + КонецЕсли; + +КонецПроцедуры + +// Устанавливает использование регламентного задания заполнения данных управления доступом. +// +// Параметры: +// Использование - Булево - Истина, если задание нужно включить, иначе Ложь. +// +Процедура ПриВключенииОтложенногоОбновления(Знач Использование) Экспорт + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ПриВключенииОтложенногоОбновления(Использование); КонецЕсли; КонецПроцедуры @@ -1641,7 +2055,7 @@ ИтерацияОбновления.ПредыдущаяВерсия, ИтерацияОбновления.Версия, ФлагРазделенности, - Истина); + "Оперативно"); Если ДеревоОбработчиков.Строки.Количество() = 0 Тогда Продолжить; @@ -1680,7 +2094,10 @@ КонецЕсли; ПараметрыОбработчика.Вставить("МонопольныйРежим", Ложь); - ВыполнитьОбработчикОбновления(ЗаписыватьВЖурнал, ИтерацияОбновления.Подсистема, Обработчик, ПараметрыОбработчика); + ДополнительныеПараметры = Новый Структура("ЗаписыватьВЖурнал, ИдентификаторБиблиотеки, ХодВыполненияОбработчиков", + ЗаписыватьВЖурнал, ИтерацияОбновления.Подсистема, Неопределено); + + ВыполнитьОбработчикОбновления(Обработчик, ПараметрыОбработчика, ДополнительныеПараметры); Если ПараметрыОбработчика.МонопольныйРежим = Истина Тогда Возврат Ложь; // Требуется обновление в монопольном режиме @@ -1720,8 +2137,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); - Модуль.ПриУстановкеВерсииИБ(ИдентификаторБиблиотеки, НомерВерсии, СтандартнаяОбработка); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ПриУстановкеВерсииИБ(ИдентификаторБиблиотеки, НомерВерсии, СтандартнаяОбработка); КонецЕсли; @@ -1796,7 +2213,7 @@ // ВерсияМетаданныхИБ – Строка – версия метаданных. Отключаются только те обработчики // у которых версия совпадает с версией метаданных. // -Процедура ОтключитьОбработчикиОбновления(ИдентификаторБиблиотеки, ВыполняемыеОбработчики, ВерсияМетаданных) +Процедура ОтключитьОбработчикиОбновления(ИдентификаторБиблиотеки, ВыполняемыеОбработчики, ВерсияМетаданных, ХодВыполненияОбработчиков) ОтключаемыеОбработчики = Новый ТаблицаЗначений; ОтключаемыеОбработчики.Колонки.Добавить("ИдентификаторБиблиотеки"); @@ -1819,6 +2236,7 @@ Если ВыполняемыйОбработчик <> Неопределено И ВыполняемыйОбработчик.Версия = "*" И ОтключаемыйОбработчик.Версия = ВерсияМетаданных Тогда ОбработчикиБиблиотеки.Строки.Удалить(ВыполняемыйОбработчик); + ХодВыполненияОбработчиков.ВсегоОбработчиковНаВерсию = ХодВыполненияОбработчиков.ВсегоОбработчиковНаВерсию - 1; ИначеЕсли ВыполняемыйОбработчик <> Неопределено И ВыполняемыйОбработчик.Версия <> "*" И ОтключаемыйОбработчик.Версия = ВерсияМетаданных Тогда ТекстИсключения = НСтр("ru='Обработчик обновления %1 не может быть отключен, @@ -1846,12 +2264,15 @@ Возврат ОбщегоНазначенияКлиентСервер.ВерсияКонфигурацииБезНомераСборки( Версия) + "." + Формат(Число(Массив[3]) + 1, "ЧГ="); - КонецФункции +КонецФункции -Процедура ВыполнитьОбработчикОбновления(ЗаписыватьВЖурнал, ИдентификаторБиблиотеки, Обработчик, Параметры = Неопределено) +Процедура ВыполнитьОбработчикОбновления(Обработчик, Параметры, ДополнительныеПараметры) - Если ЗаписыватьВЖурнал Тогда - ЗначениеНаНачало = Вычислить("ТекущаяУниверсальнаяДатаВМиллисекундах()"); // для возможности запуска на 8.2.16 + ЗаписатьИнформациюОХодеОбновления(Обработчик, ДополнительныеПараметры.ХодВыполненияОбработчиков); + + Если ДополнительныеПараметры.ЗаписыватьВЖурнал Тогда + ОписаниеОбработчика = + ПодготовитьДетальнуюИнформациюОХодеОбновления(Обработчик, Параметры, ДополнительныеПараметры.ИдентификаторБиблиотеки); КонецЕсли; Если Параметры <> Неопределено Тогда @@ -1866,6 +2287,11 @@ Попытка ОбщегоНазначения.ВыполнитьБезопасно(Обработчик.Процедура, ПараметрыОбработчика); Исключение + + Если ДополнительныеПараметры.ЗаписыватьВЖурнал Тогда + ЗаписатьДетальнуюИнформациюОХодеОбновления(ОписаниеОбработчика); + КонецЕсли; + ИмяОбработчика = Обработчик.Процедура + "(" + ?(ПараметрыОбработчика = Неопределено, "", "Параметры") + ")"; ЗаписатьОшибку(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'При вызове обработчика обновления: @@ -1878,64 +2304,36 @@ ВызватьИсключение; КонецПопытки; - Если ТранзакцияАктивнаНаНачалоВыполнения Тогда - Если ТранзакцияАктивна() Тогда - // Проверка поглощенных исключений в обработчиках - Попытка - Константы.ИспользоватьРазделениеПоОбластямДанных.Получить(); - Исключение - ШаблонКомментария = НСтр("ru = 'При выполнении обработчика обновления %1 - |было поглощено исключение в транзакции.'"); - Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, Обработчик.Процедура); - - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'"), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); - ВызватьИсключение(Комментарий); - КонецПопытки; - Иначе - ШаблонКомментария = НСтр("ru = 'При выполнении обработчика обновления %1 - |была завершена внешняя транзакция.'"); - Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, Обработчик.Процедура); - - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'"), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); - ВызватьИсключение(Комментарий); - КонецЕсли; - Иначе - Если ТранзакцияАктивна() Тогда - ШаблонКомментария = НСтр("ru = 'При выполнении обработчика обновления %1 - |открытая внутри транзакция не была завершена.'"); - Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, Обработчик.Процедура); - - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'"), - УровеньЖурналаРегистрации.Ошибка, - , - , - Комментарий); - ВызватьИсключение(Комментарий); - КонецЕсли; + ПроверитьВложеннуюТранзакцию(ТранзакцияАктивнаНаНачалоВыполнения, Обработчик.Процедура); + + Если ДополнительныеПараметры.ЗаписыватьВЖурнал Тогда + ЗаписатьДетальнуюИнформациюОХодеОбновления(ОписаниеОбработчика); КонецЕсли; - Если НЕ ЗаписыватьВЖурнал Тогда - Возврат; - КонецЕсли; - - Длительность = Вычислить("ТекущаяУниверсальнаяДатаВМиллисекундах()") - ЗначениеНаНачало; // для возможности запуска на 8.2.16 +КонецПроцедуры + +Функция ПодготовитьДетальнуюИнформациюОХодеОбновления(Обработчик, Параметры, ИдентификаторБиблиотеки, ОбработчикОтложенный = Ложь) ОписаниеОбработчика = Новый Структура; ОписаниеОбработчика.Вставить("Библиотека", ИдентификаторБиблиотеки); - ОписаниеОбработчика.Вставить("Версия", Обработчик.Версия); + Если ОбработчикОтложенный Тогда + ОписаниеОбработчика.Вставить("Версия", Обработчик.НомерВерсии); + ОписаниеОбработчика.Вставить("Процедура", Обработчик.ИмяОбработчика); + Иначе + ОписаниеОбработчика.Вставить("Версия", Обработчик.Версия); + ОписаниеОбработчика.Вставить("Процедура", Обработчик.Процедура); + КонецЕсли; ОписаниеОбработчика.Вставить("ВерсияРегистрации", Обработчик.ВерсияРегистрации); - ОписаниеОбработчика.Вставить("Процедура", Обработчик.Процедура); - ОписаниеОбработчика.Вставить("Длительность", Длительность / 1000); // В секундах ОписаниеОбработчика.Вставить("Параметры", Параметры); + Если ОбработчикОтложенный Тогда + ОписаниеОбработчика.Вставить("РежимВыполнения", "Отложенно"); + ИначеЕсли ЗначениеЗаполнено(Обработчик.РежимВыполнения) Тогда + ОписаниеОбработчика.Вставить("РежимВыполнения", Обработчик.РежимВыполнения); + Иначе + ОписаниеОбработчика.Вставить("РежимВыполнения", "Монопольно"); + КонецЕсли; + Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() И ОбщегоНазначения.ИспользованиеРазделителяСеанса() Тогда @@ -1949,6 +2347,19 @@ КонецЕсли; + ОписаниеОбработчика.Вставить("ЗначениеНаНачало", Вычислить("ТекущаяУниверсальнаяДатаВМиллисекундах()")); + + Возврат ОписаниеОбработчика; + +КонецФункции + +Процедура ЗаписатьДетальнуюИнформациюОХодеОбновления(ОписаниеОбработчика) + + Длительность = Вычислить("ТекущаяУниверсальнаяДатаВМиллисекундах()") - ОписаниеОбработчика.ЗначениеНаНачало; // для возможности запуска на 8.2.16 + + ОписаниеОбработчика.Вставить("Выполнен", Ложь); + ОписаниеОбработчика.Вставить("Длительность", Длительность / 1000); // В секундах + ЗаписьЖурналаРегистрации( СобытиеЖурналаРегистрацииПротокол(), УровеньЖурналаРегистрации.Информация, @@ -1958,6 +2369,174 @@ КонецПроцедуры +Процедура ПроверитьВложеннуюТранзакцию(ТранзакцияАктивнаНаНачалоВыполнения, НазваниеОбработчика) + + Если ТранзакцияАктивнаНаНачалоВыполнения Тогда + Если ТранзакцияАктивна() Тогда + // Проверка поглощенных исключений в обработчиках + Попытка + Константы.ИспользоватьРазделениеПоОбластямДанных.Получить(); + Исключение + ШаблонКомментария = НСтр("ru = 'Ошибка выполнения обработчика обновления %1: + |Обработчиком обновления было поглощено исключение при активной внешней транзакции. + |При активных транзакциях, открытых выше по стеку, исключение также необходимо пробрасывать выше по стеку.'"); + Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, НазваниеОбработчика); + + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'"), + УровеньЖурналаРегистрации.Ошибка, + , + , + Комментарий); + ВызватьИсключение(Комментарий); + КонецПопытки; + Иначе + ШаблонКомментария = НСтр("ru = 'Ошибка выполнения обработчика обновления %1: + |Обработчиком обновления была закрыта лишняя транзакция, открытая ранее (выше по стеку).'"); + Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, НазваниеОбработчика); + + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'"), + УровеньЖурналаРегистрации.Ошибка, + , + , + Комментарий); + ВызватьИсключение(Комментарий); + КонецЕсли; + Иначе + Если ТранзакцияАктивна() Тогда + ШаблонКомментария = НСтр("ru = 'Ошибка выполнения обработчика обновления %1: + |Открытая внутри обработчика обновления транзакция осталась активной (не была закрыта или отменена).'"); + Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонКомментария, НазваниеОбработчика); + + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации() + ". " + НСтр("ru = 'Выполнение обработчиков'"), + УровеньЖурналаРегистрации.Ошибка, + , + , + Комментарий); + ВызватьИсключение(Комментарий); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +Процедура ПроверитьСвойстваОбработчиков(ИтерацияОбновления, ЭтоКонфигурация) + + Для каждого Обработчик Из ИтерацияОбновления.Обработчики Цикл + ОписаниеОшибки = ""; + + Если ПустаяСтрока(Обработчик.Версия) Тогда + + Если Обработчик.НачальноеЗаполнение <> Истина Тогда + ОписаниеОшибки = НСтр("ru = 'У обработчика не заполнено свойство Версия или + |свойство НачальноеЗаполнение.'"); + КонецЕсли; + + ИначеЕсли Обработчик.Версия <> "*" Тогда + + Попытка + НулеваяВерсия = ОбщегоНазначенияКлиентСервер.СравнитьВерсии(Обработчик.Версия, "0.0.0.0") = 0; + Исключение + НулеваяВерсия = Ложь; + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У обработчика не правильно заполнено свойство Версия: ""%1"". + |Правильный формат, например: ""2.1.3.70"".'"), + Метаданные.Версия); + КонецПопытки; + + Если НулеваяВерсия Тогда + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У обработчика не правильно заполнено свойство Версия: ""%1"". + |Версия не может быть нулевой.'"), + Метаданные.Версия); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(ОписаниеОшибки) + И Обработчик.ВыполнятьВГруппеОбязательных <> Истина + И Обработчик.Приоритет <> 0 Тогда + + ОписаниеОшибки = НСтр("ru = 'У обработчика не правильно заполнено свойство Приоритет или + |свойство ВыполнятьВГруппеОбязательных.'"); + КонецЕсли; + КонецЕсли; + + Если Обработчик.РежимВыполнения <> "" + И Обработчик.РежимВыполнения <> "Монопольно" + И Обработчик.РежимВыполнения <> "Оперативно" + И Обработчик.РежимВыполнения <> "Отложенно" Тогда + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'У обработчика ""%1"" не правильно заполнено свойство РежимВыполнения. + |Допустимое значение: ""Монопольно"", ""Отложенно"", ""Оперативно"".'"), + Обработчик.Процедура); + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(ОписаниеОшибки) + И Обработчик.Опциональный = Истина + И Обработчик.НачальноеЗаполнение = Истина Тогда + + ОписаниеОшибки = НСтр("ru = 'У обработчика не правильно заполнено свойство Опциональный или + |свойство НачальноеЗаполнение.'"); + КонецЕсли; + + Если ЗначениеЗаполнено(ОписаниеОшибки) Тогда + Если ЭтоКонфигурация Тогда + ЗаголовокОшибки = НСтр("ru = 'Ошибка в свойстве обработчика обновления конфигурации'"); + Иначе + ЗаголовокОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка в свойстве обработчика обновления библиотеки %1 версии %2'"), + ИтерацияОбновления.Подсистема, + ИтерацияОбновления.Версия); + КонецЕсли; + + ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ЗаголовокОшибки + Символы.ПС + + НСтр("ru = '(%1).'") + Символы.ПС + + Символы.ПС + + ОписаниеОшибки, + Обработчик.Процедура); + + ЗаписатьОшибку(ОписаниеОшибки); + ВызватьИсключение ОписаниеОшибки; + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Только для внутреннего использования +// +Функция КоличествоОбработчиковНаТекущуюВерсию(ИтерацииОбновления) + + КоличествоОбработчиков = 0; + Для Каждого ИтерацияОбновления Из ИтерацииОбновления Цикл + + ОбработчикиПоВерсиям = ОбработчикиОбновленияВИнтервале( + ИтерацияОбновления.Обработчики, ИтерацияОбновления.ПредыдущаяВерсия, ИтерацияОбновления.Версия); + Для Каждого СтрокаОбработчикиВерсия Из ОбработчикиПоВерсиям.Строки Цикл + КоличествоОбработчиков = КоличествоОбработчиков + СтрокаОбработчикиВерсия.Строки.Количество(); + КонецЦикла; + + КонецЦикла; + + Сообщение = НСтр("ru = 'Для обновления информационной базы на новую версию будут выполнены обработчики: %1'"); + Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Сообщение, КоличествоОбработчиков); + ЗаписатьИнформацию(Сообщение); + + Возврат Новый Структура("ВсегоОбработчиков, ВыполненоОбработчиков", КоличествоОбработчиков, 0); + +КонецФункции + +Функция ТребуетсяПроверитьЛегальностьПолученияОбновления() + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + Возврат Ложь; + КонецЕсли; + + СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы(); + ПроверитьЛегальностьПолученияОбновления = (Не НеобходимоОбновлениеИнформационнойБазы() И + СведенияОбОбновлении <> Неопределено И + Не СведенияОбОбновлении.ЛегальностьПолученияОбновленияПодтверждена); + Возврат ПроверитьЛегальностьПолученияОбновления; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Протоколирование хода обновления @@ -1967,12 +2546,25 @@ КонецПроцедуры -Процедура ЗаписатьОшибку(Знач Текст) +Процедура ЗаписатьОшибку(Знач Текст) ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, Текст); КонецПроцедуры +Процедура ЗаписатьИнформациюОХодеОбновления(Обработчик, ХодВыполненияОбработчиков) + + Если ХодВыполненияОбработчиков <> Неопределено И Не ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + ХодВыполненияОбработчиков.ВыполненоОбработчиков = ХодВыполненияОбработчиков.ВыполненоОбработчиков + 1; + Сообщение = НСтр("ru = 'Выполняется обработчик обновления %1 (%2 из %3).'"); + Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Сообщение, Обработчик.Процедура, + ХодВыполненияОбработчиков.ВыполненоОбработчиков, ХодВыполненияОбработчиков.ВсегоОбработчиков); + ЗаписатьИнформацию(Сообщение); + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Описание обновлений @@ -2009,6 +2601,12 @@ Возврат Ложь; КонецЕсли; + ВывестиОписаниеИзмененийДляАдминистратора = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ОбновлениеИБ", "ВывестиОписаниеИзмененийДляАдминистратора",,, ИмяПользователя()); + Если ВывестиОписаниеИзмененийДляАдминистратора = Истина Тогда + ОбщегоНазначения.ХранилищеОбщихНастроекУдалить("ОбновлениеИБ", "ВывестиОписаниеИзмененийДляАдминистратора", ИмяПользователя()); + Возврат Истина; + КонецЕсли; + Если Не РольДоступна(Метаданные.Роли.ПросмотрОписанияИзмененийПрограммы) И Не РольДоступна(Метаданные.Роли.ПолныеПрава) Тогда Возврат Ложь; @@ -2119,6 +2717,11 @@ Результат = Новый Массив; + Если Разделы = Неопределено Тогда + ОбновитьРазделыОписанияИзменений(); + Разделы = РазделыОписанияИзменений(); + КонецЕсли; + ВесВерсии = ВесВерсии(Версия); Для каждого ЭлементСписка Из Разделы Цикл Если ЭлементСписка.Значение <= ВесВерсии Тогда @@ -2131,3 +2734,238 @@ Возврат Результат; КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Вспомогательные процедуры и функции отложенного обновления + +// Только для внутреннего использования. +// +Функция ВыполненныеОбработчикиПрошлыхВерсий(НачальноеЗаполнениеДанных) + + СведенияОбОбновлении = СведенияОбОбновленииИнформационнойБазы(); + Если СведенияОбОбновлении <> Неопределено + И СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Ложь Тогда + + // Оставляем только не выполненные + НайденныеОбработчики = СведенияОбОбновлении.ДеревоОбработчиков.Строки.НайтиСтроки(Новый Структура("Статус", "Выполнено"), Истина); + Для Каждого ЭлементДерева Из НайденныеОбработчики Цикл + СтрокаВерсии = ЭлементДерева.Родитель.Строки; + СтрокаВерсии.Удалить(ЭлементДерева); + КонецЦикла; + // Сбрасываем количество попыток у обработчиков со статусом "Ошибка". + НайденныеОбработчики = СведенияОбОбновлении.ДеревоОбработчиков.Строки.НайтиСтроки(Новый Структура("Статус", "Ошибка"), Истина); + Для Каждого ЭлементДерева Из НайденныеОбработчики Цикл + ЭлементДерева.ЧислоПопыток = 0; + КонецЦикла; + + Возврат СведенияОбОбновлении.ДеревоОбработчиков; + + Иначе + Возврат НовыеСведенияОбОбработчикахОбновления(); + КонецЕсли; + +КонецФункции + +// Только для внутреннего использования. +// +Процедура ВыполнитьПроверкуДереваВыполненныхОбработчиков(ДеревоОбработчиков) + + Для Каждого СтрокаДереваБиблиотека Из ДеревоОбработчиков.Строки Цикл + + Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл + + Если СтрокаДереваВерсия.Строки.Количество() = 0 Тогда + СтрокаДереваВерсия.Статус = "Завершено"; + Иначе + СтрокаДереваВерсия.Статус = ""; + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +// Только для внутреннего использования. +// +Процедура ОтключитьОтложенноеОбновление() + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + ПриВключенииОтложенногоОбновления(Ложь); + Иначе + РегламентноеЗадание = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ОтложенноеОбновлениеИБ); + РегламентноеЗадание.Использование = Ложь; + РегламентноеЗадание.Записать(); + КонецЕсли; + +КонецПроцедуры + +// Только для внутреннего использования. +// +Функция ВыполнитьОтложенныйОбработчикОбновления(СведенияОбОбновлении, ВыполнитьНеудачные = Ложь) + + ОбработчикиВыполнялись = Ложь; + ЕстьНеудачные = Ложь; + ЕстьПропущенныеОбработчики = Ложь; + ЗаписыватьВЖурнал = Константы.ДетализироватьОбновлениеИБВЖурналеРегистрации.Получить(); + + Для Каждого ДеревоОбработчиковБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл + + Если ДеревоОбработчиковБиблиотека.Статус = "Завершено" Тогда + Продолжить; + КонецЕсли; + + Для Каждого ДеревоОбработчиковВерсия Из ДеревоОбработчиковБиблиотека.Строки Цикл + + Если ДеревоОбработчиковВерсия.Статус = "Завершено" Тогда + Продолжить; + КонецЕсли; + + Для Каждого ОбработчикОбновления Из ДеревоОбработчиковВерсия.Строки Цикл + + Если ОбработчикОбновления.Статус = "Выполнено" Тогда + Продолжить; + КонецЕсли; + + Если ОбработчикОбновления.ЧислоПопыток > 0 И Не ВыполнитьНеудачные Тогда + ЕстьНеудачные = Истина; + Продолжить; + КонецЕсли; + + Если ОбработчикОбновления.ЧислоПопыток >= 3 Тогда + ЕстьПропущенныеОбработчики = Истина; + Продолжить; + КонецЕсли; + + ТранзакцияАктивнаНаНачалоВыполнения = ТранзакцияАктивна(); + ОбработчикиВыполнялись = Истина; + ИмяОбработчика = ОбработчикОбновления.ИмяОбработчика; + Попытка + СообщениеОЗапущенномОбработчике = НСтр("ru = 'Выполняется процедура обновления ""%1"".'"); + СообщениеОЗапущенномОбработчике = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + СообщениеОЗапущенномОбработчике, ИмяОбработчика); + ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Информация,,, СообщениеОЗапущенномОбработчике); + + Параметры = Новый Структура("ОбработкаЗавершена", Истина); + ПараметрыОбработчика = Новый Массив; + ПараметрыОбработчика.Добавить(Параметры); + + Если ЗаписыватьВЖурнал Тогда + ОписаниеОбработчика = ПодготовитьДетальнуюИнформациюОХодеОбновления(ОбработчикОбновления, Параметры, ОбработчикОбновления.ИмяБиблиотеки, Истина); + КонецЕсли; + + ОбщегоНазначения.ВыполнитьБезопасно(ИмяОбработчика, ПараметрыОбработчика); + Если Параметры.ОбработкаЗавершена Тогда + ОбработчикОбновления.Статус = "Выполнено"; + ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + КонецЕсли; + Исключение + + Если ЗаписыватьВЖурнал Тогда + ЗаписатьДетальнуюИнформациюОХодеОбновления(ОписаниеОбработчика); + КонецЕсли; + + ОбработчикОбновления.Статус = "Ошибка"; + ОбработчикОбновления.ЧислоПопыток = ОбработчикОбновления.ЧислоПопыток + 1; + ИнформацияОбОшибке = ИнформацияОбОшибке(); + ОбработчикОбновления.ИнформацияОбОшибке = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); + ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + ВызватьИсключение; + КонецПопытки; + + ПроверитьВложеннуюТранзакцию(ТранзакцияАктивнаНаНачалоВыполнения, ИмяОбработчика); + + Если ЗаписыватьВЖурнал Тогда + ЗаписатьДетальнуюИнформациюОХодеОбновления(ОписаниеОбработчика); + КонецЕсли; + + Прервать; + КонецЦикла; + + Если Не ОбработчикиВыполнялись И ЕстьНеудачные И Не ВыполнитьНеудачные Тогда + Возврат ВыполнитьОтложенныйОбработчикОбновления(СведенияОбОбновлении, Истина); + КонецЕсли; + + Если ЕстьНеудачные Или ОбработчикиВыполнялись Тогда + Прервать; + Иначе + + Если ЕстьПропущенныеОбработчики Тогда + ДеревоОбработчиковВерсия.Статус = "ЕстьПропущенныеОбработчики"; + Иначе + ДеревоОбработчиковВерсия.Статус = "Завершено"; + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + Если ЕстьНеудачные Или ОбработчикиВыполнялись Тогда + Прервать; + Иначе + + Если ЕстьПропущенныеОбработчики Тогда + ДеревоОбработчиковБиблиотека.Статус = "ЕстьПропущенныеОбработчики"; + Прервать; + КонецЕсли; + + ДеревоОбработчиковБиблиотека.Статус = "Завершено"; + КонецЕсли; + + КонецЦикла; + + Если Не ОбработчикиВыполнялись Тогда + + СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления = ТекущаяДатаСеанса(); + СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Не ЕстьПропущенныеОбработчики; + ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + + КонецЕсли; + Возврат ОбработчикиВыполнялись; + +КонецФункции + +// Только для внутреннего использования +// +Функция НовыеСведенияОбОбновлении(НачальноеЗаполнениеДанных) + + СведенияОбОбновлении = Новый Структура; + + Если СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда + ЛегальностьПолученияОбновленияПодтверждена = Истина; + Иначе + ЛегальностьПолученияОбновленияПодтверждена = НачальноеЗаполнениеДанных; + КонецЕсли; + + СведенияОбОбновлении.Вставить("ВремяНачалаОбновления"); + СведенияОбОбновлении.Вставить("ВремяОкончанияОбновления"); + СведенияОбОбновлении.Вставить("ПродолжительностьОбновления"); + СведенияОбОбновлении.Вставить("ВремяНачалаОтложенногоОбновления"); + СведенияОбОбновлении.Вставить("ВремяОкончаниеОтложенногоОбновления"); + СведенияОбОбновлении.Вставить("НомерСеанса"); + СведенияОбОбновлении.Вставить("ОтложенноеОбновлениеЗавершеноУспешно"); + СведенияОбОбновлении.Вставить("ЛегальностьПолученияОбновленияПодтверждена", ЛегальностьПолученияОбновленияПодтверждена); + СведенияОбОбновлении.Вставить("ДеревоОбработчиков"); + + Возврат СведенияОбОбновлении; + +КонецФункции + +// Только для внутреннего использования +// +Функция НовыеСведенияОбОбработчикахОбновления() + + ДеревоОбработчиков = Новый ДеревоЗначений; + ДеревоОбработчиков.Колонки.Добавить("ИмяБиблиотеки"); + ДеревоОбработчиков.Колонки.Добавить("НомерВерсии"); + ДеревоОбработчиков.Колонки.Добавить("ВерсияРегистрации"); + ДеревоОбработчиков.Колонки.Добавить("ИмяОбработчика"); + ДеревоОбработчиков.Колонки.Добавить("Статус"); + ДеревоОбработчиков.Колонки.Добавить("ЧислоПопыток"); + ДеревоОбработчиков.Колонки.Добавить("ИнформацияОбОшибке"); + ДеревоОбработчиков.Колонки.Добавить("Комментарий"); + + Возврат ДеревоОбработчиков; + +КонецФункции \ No newline at end of file diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl index ff424edcb..bdd9f173e 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыБСП/Module.bsl @@ -28,7 +28,7 @@ Процедура ПриДобавленииПодсистемы(Описание) Экспорт Описание.Имя = "СтандартныеПодсистемы"; - Описание.Версия = "2.1.3.51"; + Описание.Версия = "2.1.4.34"; КонецПроцедуры @@ -39,17 +39,15 @@ // для всех поддерживаемых версий библиотеки или конфигурации. // Вызывается перед началом обновления данных ИБ для построения плана обновления. // -// Параметры: -// Обработчики - ТаблицаЗначений - описание полей -// см. в процедуре ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления +// Обработчики - ТаблицаЗначений - описание полей, см. в процедуре +// ОбновлениеИнформационнойБазы.НоваяТаблицаОбработчиковОбновления. // // Пример добавления процедуры-обработчика в список: // Обработчик = Обработчики.Добавить(); -// Обработчик.Версия = "1.0.0.0"; -// Обработчик.Процедура = "ОбновлениеИБ.ПерейтиНаВерсию_1_0_0_0"; +// Обработчик.Версия = "1.1.0.0"; +// Обработчик.Процедура = "ОбновлениеИБ.ПерейтиНаВерсию_1_1_0_0"; // Обработчик.МонопольныйРежим = Ложь; -// Обработчик.Опциональный = Истина; -// +// Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт // Обработчики этого события для подсистем БСП добавляются через подписку на служебное событие: diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыВызовСервера/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыВызовСервера/Module.bsl index 4440167d2..d38c4a995 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыВызовСервера/Module.bsl @@ -24,3 +24,69 @@ КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Записывает в константу продолжительность основного цикла обновления. +// +Процедура ЗаписатьВремяВыполненияОбновления(ВремяНачалаОбновления, ВремяОкончанияОбновления) Экспорт + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат; + КонецЕсли; + + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + СведенияОбОбновлении.ВремяНачалаОбновления = ВремяНачалаОбновления; + СведенияОбОбновлении.ВремяОкончанияОбновления = ВремяОкончанияОбновления; + + ВремяВСекундах = ВремяОкончанияОбновления - ВремяНачалаОбновления; + + Часы = Цел(ВремяВСекундах/3600); + Минуты = Цел((ВремяВСекундах - Часы * 3600) / 60); + Секунды = ВремяВСекундах - Часы * 3600 - Минуты * 60; + + ПродолжительностьЧасы = ?(Часы = 0, "", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 час'"), Часы)); + ПродолжительностьМинуты = ?(Минуты = 0, "", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 мин'"), Минуты)); + ПродолжительностьСекунды = ?(Секунды = 0, "", + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 сек'"), Секунды)); + + ПродолжительностьОбновления = ПродолжительностьЧасы + " " + ПродолжительностьМинуты + " " + ПродолжительностьСекунды; + + СведенияОбОбновлении.ПродолжительностьОбновления = СокрЛП(ПродолжительностьОбновления); + + МенеджерКонстанты = Константы.СведенияОбОбновленииИБ.СоздатьМенеджерЗначения(); + МенеджерКонстанты.Значение = Новый ХранилищеЗначения(СведенияОбОбновлении); + МенеджерКонстанты.Записать(); + +КонецПроцедуры + +// Проверяет статус отложенных обработчиков обновления. +// +Функция ЕстьНеВыполненныеОбработчики() Экспорт + + Если Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Возврат ""; + КонецЕсли; + + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + Если СведенияОбОбновлении = Неопределено Тогда + Возврат ""; + КонецЕсли; + + Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл + Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл + Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл + Если Обработчик.Статус = "Ошибка" Тогда + Возврат "СтатусОшибка"; + ИначеЕсли Обработчик.Статус <> "Выполнено" Тогда + Возврат "СтатусНеВыполнено"; + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЦикла; + + Возврат ""; + +КонецФункции \ No newline at end of file diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl new file mode 100644 index 000000000..b62ff5822 --- /dev/null +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/Module.bsl @@ -0,0 +1,36 @@ +//////////////////////////////////////////////////////////////////////////////// +// Подсистема "Обновление версии ИБ". +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Проверяет статус отложенного обновления. Если обновление завершилось +// с ошибками - информирует об этом пользователя и администратора. +// +Процедура ПроверитьСтатусОтложенногоОбновления() Экспорт + + ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента(); + + Если ПараметрыРаботыКлиента.РазделениеВключено Тогда + Возврат; + КонецЕсли; + + Если ОбновлениеИнформационнойБазыВызовСервера.ЕстьНеВыполненныеОбработчики() <> "" Тогда + + Если ПараметрыРаботыКлиента.ЭтоПолноправныйПользователь Тогда + + Если ОбновлениеИнформационнойБазыВызовСервера.ЕстьНеВыполненныеОбработчики() = "СтатусОшибка" Тогда + ОткрытьФорму("Обработка.ОбновлениеИнформационнойБазы.Форма.ИндикацияХодаОтложенногоОбновленияИБ"); + Иначе + ОбновлениеИнформационнойБазыКлиент.ОповеститьОтложенныеОбработчикиНеВыполнены(); + КонецЕсли; + + Иначе + ОбновлениеИнформационнойБазыКлиент.ОповеститьОтложенныеОбработчикиНеВыполнены(); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры diff --git a/SSL/src/CommonModules/КонтактнаяИнформацияКлиент/КонтактнаяИнформацияКлиент.mdo b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/ОбновлениеИнформационнойБазыГлобальный.mdo similarity index 51% rename from SSL/src/CommonModules/КонтактнаяИнформацияКлиент/КонтактнаяИнформацияКлиент.mdo rename to SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/ОбновлениеИнформационнойБазыГлобальный.mdo index 2fbeaa6ac..b80585a92 100644 --- a/SSL/src/CommonModules/КонтактнаяИнформацияКлиент/КонтактнаяИнформацияКлиент.mdo +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыГлобальный/ОбновлениеИнформационнойБазыГлобальный.mdo @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> -<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="58351093-c827-48a1-b1a1-887d3f13b6df"> - <name>КонтактнаяИнформацияКлиент</name> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a2704bf4-3c9b-470d-8be2-ac1335667557"> + <name>ОбновлениеИнформационнойБазыГлобальный</name> <synonym> <key>ru</key> - <value>Контактная информация клиент</value> + <value>Обновление информационной базы глобальный</value> </synonym> + <global>true</global> <clientManagedApplication>true</clientManagedApplication> <clientOrdinaryApplication>true</clientOrdinaryApplication> </mdclass:CommonModule> diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl index a91a4b2dd..a3f22245d 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыКлиент/Module.bsl @@ -4,19 +4,6 @@ // //////////////////////////////////////////////////////////////////////////////// -//////////////////////////////////////////////////////////////////////////////// -// ПРОГРАММНЫЙ ИНТЕРФЕЙС - -// Проверить, есть ли необходимость выполнять обновление информационной базы, и -// если необходимо - выполняется обновление. -// Если обновление не удалось выполнить, то процедура предлагает завершить работу системы. -// -Процедура ВыполнитьОбновлениеИнформационнойБазы(Отказ = Ложь) Экспорт - - ОбновитьИнформационнуюБазу(Отказ); - -КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -27,99 +14,20 @@ ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); Если НЕ ПараметрыРаботыКлиента.ДоступноИспользованиеРазделенныхДанных Тогда + СтандартныеПодсистемыКлиент.ЗавершающиеДействияПриНачалеРаботыСистемы(); Возврат; КонецЕсли; Если НЕ ПараметрыРаботыКлиента.НеобходимоОбновлениеИнформационнойБазы Тогда + Если ПараметрыРаботыКлиента.ЗагрузитьСообщениеОбменаДанными Тогда + ОбновлениеИнформационнойБазыВызовСервера.ВыполнитьОбновлениеИнформационнойБазы(, Истина); + КонецЕсли; + СтандартныеПодсистемыКлиент.ЗавершающиеДействияПриНачалеРаботыСистемы(); Возврат; КонецЕсли; - НачальноеЗаполнениеДанных = ПараметрыРаботыКлиента.НачальноеЗаполнениеДанных; - - ТекстСостояния = НСтр("ru = 'Пожалуйста, подождите, выполняется обновление информационной базы...'"); - Состояние(ТекстСостояния); - ДокументОписаниеОбновлений = Неопределено; - ИнформацияОбОшибке = Неопределено; - - ВремяНачалаОбновления = ОбщегоНазначенияКлиент.ДатаСеанса(); - - Попытка - ПризнакВыполненияОбработчиков = ОбновлениеИнформационнойБазыВызовСервера.ВыполнитьОбновлениеИнформационнойБазы( - Ложь, ПриЗапускеКлиентскогоПриложения); - Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); - КонецПопытки; - - Если ИнформацияОбОшибке = Неопределено Тогда - ВремяОкончанияОбновления = ОбщегоНазначенияКлиент.ДатаСеанса(); - - Пока ПризнакВыполненияОбработчиков = "ОшибкаУстановкиМонопольногоРежима" Цикл - // Открытие формы для отключения активных сеансов - ПриОткрытииФормыОшибкиУстановкиМонопольногоРежима(Отказ); - Если Не Отказ Тогда - Состояние(ТекстСостояния); - - Попытка - ПризнакВыполненияОбработчиков = ОбновлениеИнформационнойБазыВызовСервера.ВыполнитьОбновлениеИнформационнойБазы( - Ложь, ПриЗапускеКлиентскогоПриложения); - Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); - Прервать; - КонецПопытки; - - ВремяОкончанияОбновления = ОбщегоНазначенияКлиент.ДатаСеанса(); - Если ПризнакВыполненияОбработчиков <> "ОшибкаУстановкиМонопольногоРежима" Тогда - ОбновлениеИнформационнойБазыВызовСервера.СнятьБлокировкуФайловойБазы(); - КонецЕсли; - - Иначе - Возврат; - КонецЕсли; - - КонецЦикла; - КонецЕсли; - - Если ИнформацияОбОшибке <> Неопределено Тогда - ВремяОкончанияОбновления = ОбщегоНазначенияКлиент.ДатаСеанса(); - ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'При обновлении версии программы возникла ошибка: - | - |%1'"), - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); - - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("ТекстСообщенияОбОшибке", ТекстСообщенияОбОшибке); - ПараметрыФормы.Вставить("ВремяНачалаОбновления", ВремяНачалаОбновления); - ПараметрыФормы.Вставить("ВремяОкончанияОбновления", ВремяОкончанияОбновления); - - ЗавершитьРаботу = ОткрытьФормуМодально("ОбщаяФорма.СообщениеОНеудачномОбновлении", ПараметрыФормы); - Если ЗавершитьРаботу = Неопределено - Или ЗавершитьРаботу Тогда - Отказ = Истина; - Возврат; - Иначе - ЗавершитьРаботуСистемы(Ложь, Истина); - Отказ = Истина; - Возврат; - КонецЕсли; - КонецЕсли; - - Состояние(НСтр("ru = 'Обновление информационной базы выполнено успешно.'")); - - Если ПризнакВыполненияОбработчиков = "Успешно" Тогда - ОбновитьИнтерфейс(); - КонецЕсли; - - ВывестиОписаниеИзмененийДляАдминистратора = - (ПризнакВыполненияОбработчиков = "Успешно" И Не НачальноеЗаполнениеДанных); - - Если ВывестиОписаниеИзмененийДляАдминистратора Тогда - Если ТипЗнч(ПараметрыРаботыКлиентаПриОбновлении) <> Тип("Структура") Тогда - ПараметрыРаботыКлиентаПриОбновлении = Новый Структура; - КонецЕсли; - ПараметрыРаботыКлиентаПриОбновлении.Вставить("ВремяНачалаОбновления", ВремяНачалаОбновления); - ПараметрыРаботыКлиентаПриОбновлении.Вставить("ВремяОкончанияОбновления", ВремяОкончанияОбновления); - КонецЕсли; + ПараметрыФормы = Новый Структура("ПриЗапускеКлиентскогоПриложения", ПриЗапускеКлиентскогоПриложения); + ОткрытьФорму("Обработка.ОбновлениеИнформационнойБазы.Форма.ИндикацияХодаОбновленияИБ", ПараметрыФормы); КонецПроцедуры @@ -129,39 +37,47 @@ Процедура ПоказатьОписаниеИзмененийСистемы() ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); - Если ПараметрыРаботыКлиента.ПоказатьОписаниеИзмененийСистемы Или ВывестиОписаниеИзмененийДляАдминистратора = Истина Тогда - ВывестиОписаниеИзмененийДляАдминистратора = Ложь; + Если ПараметрыРаботыКлиента.ПоказатьОписаниеИзмененийСистемы Тогда ПараметрыФормы = Новый Структура; - - Если ТипЗнч(ПараметрыРаботыКлиентаПриОбновлении) = Тип("Структура") - И ПараметрыРаботыКлиентаПриОбновлении.Свойство("ВремяНачалаОбновления") - И ПараметрыРаботыКлиентаПриОбновлении.Свойство("ВремяОкончанияОбновления") Тогда - - ПараметрыФормы.Вставить("ВремяНачалаОбновления", ПараметрыРаботыКлиентаПриОбновлении.ВремяНачалаОбновления); - ПараметрыФормы.Вставить("ВремяОкончанияОбновления", ПараметрыРаботыКлиентаПриОбновлении.ВремяОкончанияОбновления); - КонецЕсли; - ПараметрыФормы.Вставить("ПоказыватьТолькоИзменения", Истина); + ОткрытьФорму("ОбщаяФорма.ОписаниеИзмененийСистемы", ПараметрыФормы); КонецЕсли; КонецПроцедуры +// Выводит оповещение пользователю о том, что отложенная обработка данных +// не выполнена. +// +Процедура ОповеститьОтложенныеОбработчикиНеВыполнены() Экспорт + + ПоказатьОповещениеПользователя( + НСтр("ru = 'Работа в программе временно ограничена'"), + НавигационнаяСсылкаОбработки(), + НСтр("ru = 'Не завершен переход на новую версию'"), + БиблиотекаКартинок.Предупреждение32); + +КонецПроцедуры + +// Возвращает навигационную ссылку обработки ОбновлениеИнформационнойБазы. +// +Функция НавигационнаяСсылкаОбработки() + Возврат "e1cib/app/Обработка.ОбновлениеИнформационнойБазы"; +КонецФункции + +// Подключает глобальный обработчик ожидания в форме. +Процедура ПодключитьОбработчикПроверкиСтатусаОтложенногоОбновления() Экспорт + ПодключитьОбработчикОжидания("ПроверитьСтатусОтложенногоОбновления", 2, Истина); +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики событий подсистем БСП // Вызывается при интерактивном начале работы пользователя с областью данных. // Соответствует событию ПриНачалеРаботыСистемы модулей приложения. // -// Параметры: -// ОбработкаПараметровЗапуска - Булево. -// Истина - обработчик вызван при обычном входе пользователя -// в систему и обработка параметров запуска будет выполнена. -// Ложь - обработчик вызван при входе неразделенного пользователя -// в область данных и обработка параметров запуска будет пропущена. -// -Процедура ПриНачалеРаботыСистемы(ОбработкаПараметровЗапуска) Экспорт +Процедура ПриНачалеРаботыСистемы() Экспорт ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); Если НЕ ПараметрыРаботыКлиента.ДоступноИспользованиеРазделенныхДанных Тогда @@ -170,24 +86,4 @@ ПоказатьОписаниеИзмененийСистемы(); -КонецПроцедуры - -//////////////////////////////////////////////////////////////////////////////// -// Обработчики условных вызовов в другие подсистемы - -// Вызывается при неудачной попытке установить монопольный режим в файловой базе. -// -// Параметры: -// Отказ - булево - если Истина - завершает работу программы -// -Процедура ПриОткрытииФормыОшибкиУстановкиМонопольногоРежима(Отказ) Экспорт - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СоединенияИБКлиент"); - Модуль.ПриОткрытииФормыОшибкиУстановкиМонопольногоРежима(Отказ); - КонецЕсли; - -КонецПроцедуры - - - +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl index 06d06f618..b3480980c 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыПереопределяемый/Module.bsl @@ -10,8 +10,8 @@ // // Пример добавления процедуры-обработчика в список: // Обработчик = Обработчики.Добавить(); -// Обработчик.Версия = "1.0.0.0"; -// Обработчик.Процедура = "ОбновлениеИБ.ПерейтиНаВерсию_1_0_0_0"; +// Обработчик.Версия = "1.1.0.0"; +// Обработчик.Процедура = "ОбновлениеИБ.ПерейтиНаВерсию_1_1_0_0"; // // Вызывается перед началом обновления данных ИБ. // @@ -95,5 +95,4 @@ Процедура ДобавитьОтключаемыеОбработчикиОбновления(ОтключаемыеОбработчики) Экспорт - КонецПроцедуры diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса/Module.bsl index 5ba641499..614307322 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса/Module.bsl @@ -203,6 +203,28 @@ КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// Обработчики условных вызовов в эту подсистему + +// Устанавливает в очереди заданий флаг использования того задания, которое +// соответствует регламентному заданию для выполнения отложенного обновления. +// +// Параметры: +// Использование - Булево - новое значения флага использования. +// +Процедура ПриВключенииОтложенногоОбновления(Знач Использование) Экспорт + + Шаблон = ОчередьЗаданий.ШаблонПоИмени("ОтложенноеОбновлениеИБ"); + + ОтборЗадания = Новый Структура; + ОтборЗадания.Вставить("Шаблон", Шаблон); + Задания = ОчередьЗаданий.ПолучитьЗадания(ОтборЗадания); + + ПараметрыЗадания = Новый Структура("Использование", Использование); + ОчередьЗаданий.ИзменитьЗадание(Задания[0].Идентификатор, ПараметрыЗадания); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -423,10 +445,10 @@ ВерсииПодсистемОбластейДанных = РегистрыСведений.ВерсииПодсистемОбластейДанных.СоздатьНаборЗаписей(); ВерсииПодсистемОбластейДанных.Загрузить(Запрос.Выполнить().Выгрузить()); - ВерсииПодсистемОбластейДанных.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ВерсииПодсистемОбластейДанных); НаборУдалитьВерсииПодсистем = РегистрыСведений.УдалитьВерсииПодсистем.СоздатьНаборЗаписей(); - НаборУдалитьВерсииПодсистем.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборУдалитьВерсииПодсистем); ЗафиксироватьТранзакцию(); @@ -546,15 +568,12 @@ ЗначенияКлюча.Вставить("ОбластьДанныхВспомогательныеДанные", Выборка.ОбластьДанных); ЗначенияКлюча.Вставить("ИмяПодсистемы", ""); КлючЗаписи = РаботаВМоделиСервиса.СоздатьКлючЗаписиРегистраСведенийВспомогательныхДанных( - РегистрыСведений.ВерсииПодсистемОбластейДанных, ЗначенияКлюча - ); + РегистрыСведений.ВерсииПодсистемОбластейДанных, ЗначенияКлюча); ОшибкаУстановкиБлокировки = Ложь; НачатьТранзакцию(); - Попытка - Попытка ЗаблокироватьДанныеДляРедактирования(КлючЗаписи); // Будет снята при окончании транзакции Исключение @@ -629,7 +648,6 @@ Исключение ОтменитьТранзакцию(); - Если ОшибкаУстановкиБлокировки Тогда Продолжить; Иначе @@ -673,8 +691,7 @@ ЗначенияКлюча.Вставить("ОбластьДанныхВспомогательныеДанные", ОбщегоНазначения.ЗначениеРазделителяСеанса()); ЗначенияКлюча.Вставить("ИмяПодсистемы", ""); КлючЗаписи = РаботаВМоделиСервиса.СоздатьКлючЗаписиРегистраСведенийВспомогательныхДанных( - РегистрыСведений.ВерсииПодсистемОбластейДанных, ЗначенияКлюча - ); + РегистрыСведений.ВерсииПодсистемОбластейДанных, ЗначенияКлюча); КонецЕсли; Возврат КлючЗаписи; diff --git a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйПовтИсп/Module.bsl index a7f5997b1..ad4149141 100644 --- a/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеИнформационнойБазыСлужебныйПовтИсп/Module.bsl @@ -19,10 +19,10 @@ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль( + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль( "ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); - МинимальнаяВерсияОбластейДанных = Модуль.МинимальнаяВерсияОбластейДанных(); + МинимальнаяВерсияОбластейДанных = МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.МинимальнаяВерсияОбластейДанных(); Иначе МинимальнаяВерсияОбластейДанных = Неопределено; КонецЕсли; diff --git a/SSL/src/CommonModules/ОбновлениеКонфигурации/Module.bsl b/SSL/src/CommonModules/ОбновлениеКонфигурации/Module.bsl index 066b8c49c..9f0ee44c4 100644 --- a/SSL/src/CommonModules/ОбновлениеКонфигурации/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеКонфигурации/Module.bsl @@ -40,7 +40,8 @@ // Процедура ДобавитьПараметрыРаботыКлиента(Параметры) Экспорт - Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() + ИЛИ ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда Возврат; КонецЕсли; @@ -56,8 +57,12 @@ // Процедура ДобавитьПараметрыРаботыКлиентаПриЗапуске(Параметры) Экспорт + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; + КонецЕсли; + Параметры.Вставить("НастройкиОбновления", Новый ФиксированнаяСтруктура(ПолучитьНастройкиОбновления())); - + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -97,15 +102,20 @@ // Функция ПолучитьНастройкиОбновления() Экспорт + ЕстьДоступДляОбновления = ПроверитьДоступДляОбновления(); + ЕстьДоступДляПроверкиОбновления = ПроверитьДоступДляПроверкиОбновления(); + + КонфигурацияИзменена = ?(ЕстьДоступДляОбновления Или ЕстьДоступДляПроверкиОбновления, КонфигурацияИзменена(), Ложь); + Настройки = Новый Структура; Настройки.Вставить("КороткоеИмяКонфигурации", КороткоеИмяКонфигурации()); Настройки.Вставить("АдресСервераДляПроверкиНаличияОбновления", АдресСервераДляПроверкиНаличияОбновления()); Настройки.Вставить("КаталогОбновлений", КаталогОбновлений()); Настройки.Вставить("АдресРесурсаДляПроверкиНаличияОбновления", АдресРесурсаДляПроверкиНаличияОбновления()); - Настройки.Вставить("КонфигурацияИзменена", КонфигурацияИзменена()); + Настройки.Вставить("КонфигурацияИзменена", КонфигурацияИзменена); Настройки.Вставить("ПроверитьПрошлыеОбновленияБазы", ОбновлениеКонфигурацииУспешно() <> Неопределено); - Настройки.Вставить("ЕстьДоступДляОбновления", ПроверитьДоступДляОбновления()); - Настройки.Вставить("ЕстьДоступДляПроверкиОбновления", ПроверитьДоступДляПроверкиОбновления()); + Настройки.Вставить("ЕстьДоступДляОбновления", ЕстьДоступДляОбновления); + Настройки.Вставить("ЕстьДоступДляПроверкиОбновления", ЕстьДоступДляПроверкиОбновления); Настройки.Вставить("НастройкиОбновленияКонфигурации", ПолучитьСтруктуруНастроекПомощника()); @@ -168,8 +178,7 @@ СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ОбновлениеКонфигурации", - "НастройкиОбновленияКонфигурации" - ); + "НастройкиОбновленияКонфигурации"); Если СтруктураНастройки <> Неопределено Тогда // Значение из настроек пользователя ИспользоватьЗначениеНастройки = Ложь; @@ -204,8 +213,7 @@ СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ОбновлениеКонфигурации", - "НастройкиОбновленияКонфигурации" - ); + "НастройкиОбновленияКонфигурации"); Если СтруктураНастройки <> Неопределено Тогда // Значение из настроек пользователя ИспользоватьЗначениеНастройки = Ложь; @@ -230,8 +238,7 @@ СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ОбновлениеКонфигурации", - "НастройкиОбновленияКонфигурации" - ); + "НастройкиОбновленияКонфигурации"); Если СтруктураНастройки <> Неопределено Тогда // Значение из настроек пользователя ИспользоватьЗначениеНастройки = Ложь; @@ -256,8 +263,7 @@ СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ОбновлениеКонфигурации", - "НастройкиОбновленияКонфигурации" - ); + "НастройкиОбновленияКонфигурации"); Если СтруктураНастройки <> Неопределено Тогда // Значение из настроек пользователя ИспользоватьЗначениеНастройки = Ложь; @@ -332,8 +338,7 @@ Настройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ОбновлениеКонфигурации", - "НастройкиОбновленияКонфигурации" - ); + "НастройкиОбновленияКонфигурации"); Если Настройки = Неопределено Тогда КоличествоСтарыхНастроек = 0; @@ -367,8 +372,7 @@ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( "ОбновлениеКонфигурации", "НастройкиОбновленияКонфигурации", - НастройкиОбновленияКонфигурации - ); + НастройкиОбновленияКонфигурации); КонецПроцедуры @@ -472,8 +476,7 @@ "НастройкиОбновленияКонфигурации", , , - ИмяПользователя - ); + ИмяПользователя); // Если в ранних версиях было сохранено расписание... Если Настройки <> Неопределено И Настройки.Свойство("РасписаниеПроверкиНаличияОбновления", Расписание) @@ -486,18 +489,42 @@ "НастройкиОбновленияКонфигурации", Настройки, , - ИмяПользователя - ); + ИмяПользователя); КонецЕсли; КонецЦикла; КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// Обработчики условных вызовов из других подсистем + +// Вызывается не через событие, т.к. нужно сделать вызов самым последним. +Процедура ПослеОбновленияИнформационнойБазы() Экспорт + + ЗначениеХранилища = Константы.СтатусОбновленияКонфигурации.Получить(); + + Статус = Неопределено; + Если ЗначениеХранилища <> Неопределено Тогда + Статус = ЗначениеХранилища.Получить(); + КонецЕсли; + + Если Статус <> Неопределено И Статус.ОбновлениеВыполнено И Статус.РезультатОбновленияКонфигурации <> Неопределено + И Не Статус.РезультатОбновленияКонфигурации Тогда + + Статус.РезультатОбновленияКонфигурации = Истина; + Константы.СтатусОбновленияКонфигурации.Установить(Новый ХранилищеЗначения(Статус)); + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов в другие подсистемы // Вызывается при выполнении скрипта обновления из процедуры ОбновлениеКонфигурации.ЗавершитьОбновление(). Процедура ПослеЗавершенияОбновления() Экспорт -КонецПроцедуры \ No newline at end of file + ОбновлениеИнформационнойБазы.ПослеЗавершенияОбновления(); + +КонецПроцедуры diff --git a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl index 3c8924d92..f430278c6 100644 --- a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиент/Module.bsl @@ -10,6 +10,10 @@ // Процедура ПроверитьОбновлениеКонфигурации() Экспорт + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; + КонецЕсли; + #Если НЕ ВебКлиент Тогда ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); Если ПараметрыРаботыКлиента.РазделениеВключено Или Не ПараметрыРаботыКлиента.ДоступноИспользованиеРазделенныхДанных Тогда @@ -111,10 +115,15 @@ // Параметры: // СтандартнаяОбработка - Булево - если в процедуре установить данному параметру значение Ложь, то инструкция по // "ручному" обновлению показана не будет. -Процедура ПриВыполненииОбновленияИнформационнойБазы(СтандартнаяОбработка) Экспорт +Процедура ПриВыполненииОбновленияИнформационнойБазы(СтандартнаяОбработка, ЗавершениеРаботыСистемы = Ложь) Экспорт СтандартнаяОбработка = Ложь; - ОткрытьФорму("Обработка.ОбновлениеКонфигурации.Форма.Форма"); + Если ЗавершениеРаботыСистемы Тогда + ПараметрыФормы = Новый Структура("ЗавершениеРаботыСистемы, ПолученоОбновлениеКонфигурации", Истина, Истина); + ОткрытьФормуМодально("Обработка.ОбновлениеКонфигурации.Форма.Форма", ПараметрыФормы); + Иначе + ОткрытьФорму("Обработка.ОбновлениеКонфигурации.Форма.Форма"); + КонецЕсли; КонецПроцедуры @@ -172,8 +181,7 @@ Неопределено, // ПараметрыФайлаПроверкиОбновления "", // ИмяСтраницы ОбщегоНазначенияКлиент.ДатаСеанса(), // ВремяПолученияОбновления - "" // ПоследняяВерсияКонфигурации - ); + ""); // ПоследняяВерсияКонфигурации КонецЕсли; Возврат ДоступноеОбновлениеКонфигурации; @@ -219,7 +227,14 @@ Функция АдресКаталогаШаблоновНаСервереОбновлений() Экспорт СерверОбновлений = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().НастройкиОбновления.КаталогОбновлений; - СерверОбновлений = СтрЗаменить(СерверОбновлений, "http://", ""); + + Если Найти(СерверОбновлений, "ftp://") <> 0 Тогда + Протокол = "ftp://"; + Иначе + Протокол = "http://"; + КонецЕсли; + + СерверОбновлений = СтрЗаменить(СерверОбновлений, Протокол, ""); КаталогШаблоновНаСервере = ""; Позиция = Найти(СерверОбновлений, "/"); Если Позиция > 0 Тогда @@ -237,12 +252,20 @@ Функция АдресСервераОбновлений() Экспорт СерверОбновлений = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().НастройкиОбновления.КаталогОбновлений; - СерверОбновлений = СтрЗаменить(СерверОбновлений, "http://", ""); + + Если Найти(СерверОбновлений, "ftp://") <> 0 Тогда + Протокол = "ftp://"; + Иначе + Протокол = "http://"; + КонецЕсли; + + СерверОбновлений = СтрЗаменить(СерверОбновлений, Протокол, ""); Позиция = Найти(СерверОбновлений, "/"); Если Позиция > 0 Тогда СерверОбновлений = Сред(СерверОбновлений, 1, Позиция - 1); КонецЕсли; - Возврат "http://" + СерверОбновлений; + + Возврат Протокол + СерверОбновлений; КонецФункции @@ -686,13 +709,37 @@ ПараметрыПредупреждения.Вставить("ТекстФлажка", ТекстФлажка); ПараметрыПредупреждения.Вставить("ДействиеПриУстановленномФлажке", ДействиеПриУстановленномФлажке); ПараметрыПредупреждения.Вставить("Приоритет", 50); - ПараметрыПредупреждения.Вставить("ОчищатьПредупрежденияДругихОбработчиков", Истина); + ПараметрыПредупреждения.Вставить("ВывестиОдноПредупреждение", Истина); Предупреждения.Добавить(ПараметрыПредупреждения); КонецЕсли; КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// Обработчики условных вызовов в другие подсистемы + +// Проверяет легальность получения обновления. При отсутствии подсистемы +// проверки легальности возвращает Истина +// +Функция ПроверитьЛегальностьПолученияОбновления() Экспорт + + ОбновлениеПолученоЛегально = Истина; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления") Тогда + МодульПроверкаЛегальностиПолученияОбновленияКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПроверкаЛегальностиПолученияОбновленияКлиент"); + ОбновлениеПолученоЛегально = МодульПроверкаЛегальностиПолученияОбновленияКлиент.ПроверитьЛегальностьПолученияОбновления(); + + Если ОбновлениеПолученоЛегально = Неопределено Тогда + ОбновлениеПолученоЛегально = Истина; + КонецЕсли; + + КонецЕсли; + + Возврат ОбновлениеПолученоЛегально; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Обработчики событий подсистем БСП @@ -727,14 +774,7 @@ // Вызывается при интерактивном начале работы пользователя с областью данных. // Соответствует событию ПриНачалеРаботыСистемы модулей приложения. // -// Параметры: -// ОбработкаПараметровЗапуска - Булево. -// Истина - обработчик вызван при обычном входе пользователя -// в систему и обработка параметров запуска будет выполнена. -// Ложь - обработчик вызван при входе неразделенного пользователя -// в область данных и обработка параметров запуска будет пропущена. -// -Процедура ПриНачалеРаботыСистемы(Знач ОбрабатыватьПараметрыЗапуска = Ложь) Экспорт +Процедура ПриНачалеРаботыСистемы() Экспорт ПроверитьОбновлениеКонфигурации(); diff --git a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиентПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиентПереопределяемый/Module.bsl index 81455752b..ece8b4c4f 100644 --- a/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиентПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ОбновлениеКонфигурацииКлиентПереопределяемый/Module.bsl @@ -18,13 +18,6 @@ // Процедура ПриПереходеНаСтраницуПомощника(ПредыдущаяСтраница, СледующаяСтраница, Отказ) Экспорт - // СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления - Если ПредыдущаяСтраница = "ФайлОбновления" И СледующаяСтраница <> "ФайлОбновления" - И НЕ ПроверкаЛегальностиПолученияОбновленияКлиент.ПроверитьЛегальностьПолученияОбновления() Тогда - Отказ = Истина; - КонецЕсли; - // Конец СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления - КонецПроцедуры // Обработчик вызывается перед завершением работы системы при обновлении конфигурации из помощника. diff --git a/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl index 0f5db1440..a3b7f4a31 100644 --- a/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначения/Module.bsl @@ -45,10 +45,15 @@ // // Возвращаемое значение: // Структура - содержит имена (ключи) и значения затребованных реквизитов. -// +// Если строка затребованных реквизитов пуста, то возвращается пустая структура +// Функция ЗначенияРеквизитовОбъекта(Ссылка, Реквизиты) Экспорт Если ТипЗнч(Реквизиты) = Тип("Строка") Тогда + Если ПустаяСтрока(Реквизиты) Тогда + Возврат Новый Структура; + КонецЕсли; + СтруктураРеквизитов = Новый Структура(Реквизиты); ИначеЕсли ТипЗнч(Реквизиты) = Тип("Структура") @@ -213,7 +218,7 @@ Результат = Новый Массив; - ШаблонЗапроса = + ШаблонЗапроса = "ВЫБРАТЬ | ПсевдонимЗаданнойТаблицы.Ссылка КАК Ссылка |ИЗ @@ -231,10 +236,11 @@ ИменаДокументов = Новый Массив; Для Каждого Документ Из Документы Цикл - ИмяДокумента = Документ.Метаданные().ПолноеИмя(); - Если ИменаДокументов.Найти(ИмяДокумента) = Неопределено - и Метаданные.Документы.Содержит(Метаданные.НайтиПоПолномуИмени(ИмяДокумента)) Тогда - ИменаДокументов.Добавить(ИмяДокумента); + МетаданныеДокумента = Документ.Метаданные(); + Если ИменаДокументов.Найти(МетаданныеДокумента.ПолноеИмя()) = Неопределено + И Метаданные.Документы.Содержит(МетаданныеДокумента) + И МетаданныеДокумента.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда + ИменаДокументов.Добавить(МетаданныеДокумента.ПолноеИмя()); КонецЕсли; КонецЦикла; @@ -620,178 +626,6 @@ КонецФункции // ПрочитатьXMLВТаблицу() -// Читает из строки XML или ЧтенияXML и возвращает структуру с описанием и данными таблицы значений. -// -// Параметры: -// Текст - строка, или ЧтениеXML с данными. -// -// Ожидаемый XML: -// - типовая сериализация таблицы значений ( {http://v8.1c.ru/8.1/data/core}, ValueTable ) -// -// - старый формат: -// <Items Description="<Описание>" Columns="<ИмяКолонки1>, <ИмяКолонки2>... <ИмяКолонки3>" > -// <Item <ИмяКолонки1>="<Значение1>" <ИмяКолонки2>="<Значение2>" ... /> -// ... -// </Items> -// -// - новый, упрощенный формат: -// <ТегКорня <ПервыйАтрибут>="<ОписаниеКолонок" Description="<Описание>"> -// <ТегСтроки <ИмяКолонки1>="<Значение1>" <ИмяКолонки2>="<Значение2>" ... /> -// ... -// </ТегКорня> -// При этом ТегКорня и ТегСтроки могут быть произвольными, Описание таблицы считывается из необязательного -// атрибута Description корня, описание колонок - из первого атрибута корня. Описание колонок состоит из -// разделенных запятыми данных одиночной колонки. Для одиночной колонки указывается имя, необязательный тип -// и необязательные квалификаторы. Например, описание колонок может быть таким: -// "Код (Строка, 3, Фиксированная), Наименование (Строка), Порядок(Число, 10, 0, Неотрицательный), Данные" -// Подробно описание типов см в функции ОписаниеТипаИзСтроки. -// -Функция ТаблицаЗначенийИзXML(Текст) Экспорт - - Если ТипЗнч(Текст)=Тип("ЧтениеXML") Тогда - Чтение = Текст; - Иначе - Чтение = Новый ЧтениеXML; - Чтение.УстановитьСтроку(Текст); - КонецЕсли; - - // Пытаемся читать как стандартную сериализацию - ТипДанных = СериализаторXDTO.ПолучитьXMLТип(Чтение); - Если ТипДанных=СериализаторXDTO.XMLТип(Тип("ТаблицаЗначений")) Тогда - Возврат Новый Структура("Данные, Описание", СериализаторXDTO.ПрочитатьXML(Чтение) ); - КонецЕсли; - - // Разбираем формат вручную (стоим на корневом узле - результат попытки чтения) - ТипУзла = Чтение.ТипУзла; - Пока Истина Цикл - Если ТипУзла=ТипУзлаXML.НачалоЭлемента Тогда - Прервать; - ИначеЕсли ТипУзла=ТипУзлаXML.Ничего Тогда - ВызватьИсключение НСтр("ru='Не найден корневой узел XML'"); - КонецЕсли; - Чтение.Прочитать(); - КонецЦикла; - - ИмяКорня = Чтение.Имя; - - ИмяАтрибутаОписания = "Description"; - Описание = Чтение.ПолучитьАтрибут(ИмяАтрибутаОписания); - - ИменаКолонок = Чтение.ПолучитьАтрибут("Columns"); - Если ИменаКолонок=Неопределено Тогда - // Читаем из первого подходящего атрибута - не описания - Пока Чтение.СледующийАтрибут() Цикл - Если Описание=Неопределено Или Чтение.Имя<>ИмяАтрибутаОписания Тогда - ИменаКолонок = Чтение.Значение; - Прервать; - КонецЕсли; - КонецЦикла; - КонецЕсли; - - // Формируем колонки с типом - ИменаКолонок = СтрЗаменить(СтрЗаменить(ИменаКолонок, " ", "") + ",", "),", Символы.ПС); - Результат = Новый ТаблицаЗначений; - Колонки = Результат.Колонки; - - Для Индекс=1 По СтрЧислоСтрок(ИменаКолонок) Цикл - СтрокаИмени = СтрПолучитьСтроку(ИменаКолонок, Индекс); - Поз = Найти(СтрокаИмени, "("); - Если Поз>0 Тогда - // Нашли описание типа - Результат.Колонки.Добавить(Лев(СтрокаИмени, Поз-1), ОписаниеТипаИзСтроки( Сред(СтрокаИмени, Поз+1) )); - Иначе - Для Каждого КлючЗначение Из Новый Структура(СтрокаИмени) Цикл - Колонки.Добавить(КлючЗначение.Ключ); - КонецЦикла - КонецЕсли; - КонецЦикла; - - // Собственно чтение - Пока Чтение.Прочитать() Цикл - ТипУзла = Чтение.ТипУзла; - Если ТипУзла=ТипУзлаXML.КонецЭлемента И Чтение.Имя=ИмяКорня Тогда - Прервать; - ИначеЕсли ТипУзла=ТипУзлаXML.НачалоЭлемента Тогда - СтрокаТаблицы = Результат.Добавить(); - Для Каждого Колонка Из Колонки Цикл - Имя = Колонка.Имя; - СтрокаТаблицы[Имя] = Чтение.ПолучитьАтрибут(Имя); - КонецЦикла; - КонецЕсли; - КонецЦикла; - - Возврат Новый Структура("Описание, Данные", Описание, Результат); -КонецФункции - -// Возвращает объект ОписаниеТипов, построенный по строке текста -// -// Параметры: -// Текст - строка, описывающая тип. Состоит из обязательного имени типа и необязательных квалификаторов, -// разделенных запятыми. -// -// Для типа "Строка" распознаются необязательные квалификаторы: -// - максимальная длина (число, по умолчанию 0 - без ограничений) -// - допустимая длина (строка "Переменная" или "Фиксированная", по умолчанию - переменная) -// -// Для типа "Число" распознаются необязательные квалификаторы: -// - число разрядов (число, по умолчанию 0 - без ограничений) -// - число разрядов дробной части (число, по умолчанию 0) -// - допустимый знак (строка "Любой" или "Неотрицательный", по умолчанию - любой) -// -// Для типа "Дата" распознается необязательный квалификатор части даты (строка "Время" или "Дата" или "ДатаВремя", -// по умолчанию "ДатаВремя") -// -// Для типа "ДвоичныеДанные" распознаются необязательные квалификаторы: -// - максимальная длина (число, по умолчанию 0 - без ограничений) -// - допустимая длина (строка "Переменная" или "Фиксированная", по умолчанию - переменная) -// -// Для остальных типов обрабатывается только имя типа -// -Функция ОписаниеТипаИзСтроки(Текст) Экспорт - ЧастиОписания = СтрЗаменить(СтрЗаменить(Текст, Символы.ПС, ""), ",", Символы.ПС); - КоличествоЧастей = СтрЧислоСтрок(ЧастиОписания); - - ИмяИсходногоТипа = СокрЛП(СтрПолучитьСтроку(ЧастиОписания, 1)); - Если КоличествоЧастей=1 Тогда - Возврат Новый ОписаниеТипов(ИмяИсходногоТипа); - КонецЕсли; - - ИсходныйТип = Тип(ИмяИсходногоТипа); - Если ИсходныйТип=Тип("Строка") Или ИсходныйТип=Тип("ДвоичныеДанные") Тогда - МаксимальнаяДлинаСтроки = "0" + СокрЛП(СтрПолучитьСтроку(ЧастиОписания, 2)); - ДопустимаяДлинаСтроки = СокрЛП(СтрПолучитьСтроку(ЧастиОписания, 3)); - Если ПустаяСтрока(ДопустимаяДлинаСтроки) Тогда - ДопустимаяДлинаСтроки = "Переменная"; - КонецЕсли; - Возврат Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки( - Число(МаксимальнаяДлинаСтроки), ДопустимаяДлина[ДопустимаяДлинаСтроки] - )); - - ИначеЕсли ИсходныйТип=Тип("Число") Тогда - ДлинаЧисла = "0" + СокрЛП(СтрПолучитьСтроку(ЧастиОписания, 2)); - ДлинаДробнойЧасти = "0" + СокрЛП(СтрПолучитьСтроку(ЧастиОписания, 3)); - ДопустимыйЗнакЧисла = СокрЛП(СтрПолучитьСтроку(ЧастиОписания, 4)); - Если ПустаяСтрока(ДопустимыйЗнакЧисла) Тогда - ДопустимыйЗнакЧисла = "Любой"; - КонецЕсли; - Возврат Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла( - Число(ДлинаЧисла), Число(ДлинаДробнойЧасти), ДопустимыйЗнак[ДопустимыйЗнакЧисла] - )); - - ИначеЕсли ИсходныйТип=Тип("Дата") Тогда - СоставДаты = СокрЛП(СтрПолучитьСтроку(ЧастиОписания, 2)); - Если ПустаяСтрока(СоставДаты) Тогда - СоставДаты = "ДатаВремя"; - КонецЕсли; - Возврат Новый ОписаниеТипов("Дата", Новый КвалификаторыДаты( - ЧастиДаты[СоставДаты] - )); - - КонецЕсли; - - Возврат Новый ОписаниеТипов(ИмяИсходногоТипа); -КонецФункции - // Функция выполняет сравнение двух коллекций строк, для которых доступен обход // посредством оператора Для каждого … Из … Цикл. // Сравниваемые коллекции должны отвечать следующим требованиям: @@ -1368,8 +1202,14 @@ Функция УстановитьВнешнееСоединениеСБазой(Параметры) Экспорт Результат = Новый Структура("Соединение, КраткоеОписаниеОшибки, ПодробноеОписаниеОшибки, ОшибкаПодключенияКомпоненты", - Неопределено, "", "", Ложь - ); + Неопределено, "", "", Ложь); + + Если ЭтоLinuxСервер() Тогда + Результат.Соединение = Неопределено; + Результат.ПодробноеОписаниеОшибки = НСтр("ru = 'Прямое подключение к информационной базе недоступно на сервере под управлением ОС Linux.'"); + Результат.КраткоеОписаниеОшибки = Результат.ПодробноеОписаниеОшибки; + Возврат Результат; + КонецЕсли; Попытка COMConnector = Новый COMObject(ИмяCOMСоединителя()); // "V82.COMConnector" @@ -1814,15 +1654,13 @@ ИмяТочкиПодключения, ИмяПользователя, Пароль, - 3 - ); + 3); Попытка WSПроксиPing.Ping(); Исключение ЗаписьЖурналаРегистрации(НСтр("ru = 'WSПрокси'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; КонецПопытки; @@ -1835,8 +1673,7 @@ ИмяТочкиПодключения, ИмяПользователя, Пароль, - Таймаут - ); + Таймаут); КонецФункции @@ -1949,6 +1786,7 @@ ОбщиеПараметры.Вставить("МинимальноНеобходимаяВерсияПлатформы", "8.2.17.153"); ОбщиеПараметры.Вставить("РаботаВПрограммеЗапрещена", Ложь); ОбщиеПараметры.Вставить("ЗапрашиватьПодтверждениеПриЗавершенииПрограммы", Истина); + ОбщиеПараметры.Вставить("ОтключитьСправочникИдентификаторыОбъектовМетаданных", Ложь); ОбщегоНазначенияПереопределяемый.ПриОпределенииОбщихПараметровБазовойФункциональности(ОбщиеПараметры); @@ -1969,6 +1807,56 @@ КонецФункции +// Возвращает Истина при необходимости обновления конфигурации информационной базы подчиненного узла РИБ. +// В главном узле всегда - Ложь. +// +Функция ТребуетсяОбновлениеКонфигурацииПодчиненногоУзлаРИБ() Экспорт + + Возврат ЭтоПодчиненныйУзелРИБ() И КонфигурацияИзменена(); + +КонецФункции + +// Возвращает Истина, если текущий сеанс выполняется на сервере, работающим под управлением ОС Linux. +// +// Возвращаемое значение: +// (Булево) Истина, если сервер работает под управлением ОС Linux. +// +Функция ЭтоLinuxСервер() Экспорт + + СистемнаяИнформация = Новый СистемнаяИнформация; + Возврат СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 ИЛИ СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64; + +КонецФункции + +// Выполняет проверки перед запуском переданной формы. +// +Функция ПриСозданииФормыНаСервере(Форма, СтандартнаяОбработка, Отказ) Экспорт + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() + И Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Отказ = Истина; + Возврат Истина; + КонецЕсли; + + Если Форма.Параметры.Свойство("АвтоТест") И ПравоДоступа("Администрирование", Метаданные) Тогда + // Возврат при получении формы для анализа. + Возврат Истина; + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеВерсииИБ") Тогда + + МодульОбновлениеИнформационнойБазы = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазы"); + Если МодульОбновлениеИнформационнойБазы.ВыполняетсяОбновлениеИнформационнойБазы() Тогда + Отказ = Истина; + Возврат Истина; + КонецЕсли; + + КонецЕсли; + + Возврат Ложь; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Процедуры и функции для работы с формами @@ -2279,73 +2167,97 @@ // СправочникМенеджер, ДокументМенеджер, ... // Функция МенеджерОбъектаПоПолномуИмени(ПолноеИмя) Экспорт + Перем КлассОМ, ИмяОМ, Менеджер; ЧастиИмени = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПолноеИмя, "."); - КлассОМ = ЧастиИмени[0]; - ИмяОМ = ЧастиИмени[1]; - - Если ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда - Возврат ПланыОбмена[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда - Возврат Справочники[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда - Возврат Документы[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда - Возврат ЖурналыДокументов[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда - Возврат Перечисления[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ОТЧЕТ" Тогда - Возврат Отчеты[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ОБРАБОТКА" Тогда - Возврат Обработки[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда - Возврат ПланыВидовХарактеристик[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда - Возврат ПланыСчетов[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда - Возврат ПланЫВидовРасчета[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРСВЕДЕНИЙ" Тогда - Возврат РегистрыСведений[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРНАКОПЛЕНИЯ" Тогда - Возврат РегистрыНакопления[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРБУХГАЛТЕРИИ" Тогда - Возврат РегистрыБухгалтерии[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРРАСЧЕТА" Тогда - Возврат РегистрыРасчета[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда - Возврат БизнесПроцессы[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда - Возврат Задачи[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "КОНСТАНТА" Тогда - Возврат Константы[ИмяОМ]; - - ИначеЕсли ВРег(КлассОМ) = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда - Возврат Последовательности[ИмяОМ]; - - Иначе - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru='Неизвестный тип объекта метаданных (%1)'"), КлассОМ); + Если ЧастиИмени.Количество() = 2 Тогда + КлассОМ = ЧастиИмени[0]; + ИмяОМ = ЧастиИмени[1]; КонецЕсли; + Если ВРег(КлассОМ) = "ПЛАНОБМЕНА" Тогда + Менеджер = ПланыОбмена; + + ИначеЕсли ВРег(КлассОМ) = "СПРАВОЧНИК" Тогда + Менеджер = Справочники; + + ИначеЕсли ВРег(КлассОМ) = "ДОКУМЕНТ" Тогда + Менеджер = Документы; + + ИначеЕсли ВРег(КлассОМ) = "ЖУРНАЛДОКУМЕНТОВ" Тогда + Менеджер = ЖурналыДокументов; + + ИначеЕсли ВРег(КлассОМ) = "ПЕРЕЧИСЛЕНИЕ" Тогда + Менеджер = Перечисления; + + ИначеЕсли ВРег(КлассОМ) = "ОТЧЕТ" Тогда + Менеджер = Отчеты; + + ИначеЕсли ВРег(КлассОМ) = "ОБРАБОТКА" Тогда + Менеджер = Обработки; + + ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВХАРАКТЕРИСТИК" Тогда + Менеджер = ПланыВидовХарактеристик; + + ИначеЕсли ВРег(КлассОМ) = "ПЛАНСЧЕТОВ" Тогда + Менеджер = ПланыСчетов; + + ИначеЕсли ВРег(КлассОМ) = "ПЛАНВИДОВРАСЧЕТА" Тогда + Менеджер = ПланыВидовРасчета; + + ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРСВЕДЕНИЙ" Тогда + Менеджер = РегистрыСведений; + + ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРНАКОПЛЕНИЯ" Тогда + Менеджер = РегистрыНакопления; + + ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРБУХГАЛТЕРИИ" Тогда + Менеджер = РегистрыБухгалтерии; + + ИначеЕсли ВРег(КлассОМ) = "РЕГИСТРРАСЧЕТА" Тогда + Если ЧастиИмени.Количество() = 2 Тогда + // Регистр расчета + Менеджер = РегистрыРасчета; + Иначе + КлассПодчиненногоОМ = ЧастиИмени[2]; + ИмяПодчиненногоОМ = ЧастиИмени[3]; + Если ВРег(КлассПодчиненногоОМ) = "ПЕРЕРАСЧЕТ" Тогда + // Перерасчет + Менеджер = РегистрыРасчета[ИмяОМ].Перерасчеты; + Иначе + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неизвестный тип объекта метаданных ""%1""'"), ПолноеИмя); + КонецЕсли; + КонецЕсли; + + ИначеЕсли ВРег(КлассОМ) = "БИЗНЕСПРОЦЕСС" Тогда + Менеджер = БизнесПроцессы; + + ИначеЕсли ВРег(КлассОМ) = "ЗАДАЧА" Тогда + Менеджер = Задачи; + + ИначеЕсли ВРег(КлассОМ) = "КОНСТАНТА" Тогда + Менеджер = Константы; + + ИначеЕсли ВРег(КлассОМ) = "ПОСЛЕДОВАТЕЛЬНОСТЬ" Тогда + Менеджер = Последовательности; + КонецЕсли; + + Если Менеджер <> Неопределено Тогда + Попытка + Возврат Менеджер[ИмяОМ]; + Исключение + Менеджер = Неопределено; + КонецПопытки; + КонецЕсли; + + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Неизвестный тип объекта метаданных ""%1""'"), ПолноеИмя); + КонецФункции + // Возвращает менеджер объекта по ссылке на объект // // Не обрабатываются точки маршрутов бизнес-процессов @@ -2664,6 +2576,8 @@ // Функция ИдентификаторОбъектаМетаданных(ОписаниеОбъектаМетаданных) Экспорт + Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования(); + Кэш = СтандартныеПодсистемыПовтИсп.ПараметрыБазовойФункциональности( ).ИдентификаторыОбъектовМетаданных; @@ -2734,12 +2648,8 @@ | |Для объекта метаданных ""%1"" |не найден идентификатор - |в справочнике ""Идентификаторы объектов метаданных"". - | - |Если справочник не был обновлен при обновлении информационной базы, - |следует выполнить обновление вручную: - |""Все функции"" -> ""Справочник. Идентификаторы объектов метаданных"" -> - |команда формы списка ""Обновить данные справочника"".'"), + |в справочнике ""Идентификаторы объектов метаданных"".'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), Таблица); ИначеЕсли Выгрузка.Количество() > 1 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -2747,12 +2657,8 @@ | |Для объекта метаданных ""%1"" |найдено несколько идентификаторов - |в справочнике ""Идентификаторы объектов метаданных"". - | - |Данные справочника некорректны. Если справочник не был обновлен - |при обновлении информационной базы, следует выполнить обновление вручную: - |""Все функции"" -> ""Справочник. Идентификаторы объектов метаданных"" -> - |команда формы списка ""Обновить данные справочника"".'"), + |в справочнике ""Идентификаторы объектов метаданных"".'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), Таблица); КонецЕсли; @@ -2765,12 +2671,8 @@ | |Для объекта метаданных ""%1"" |найден идентификатор в справочнике ""Идентификаторы объектов метаданных"", - |которому соответствует удаленный объект метаданных. - | - |Данные справочника некорректны. Если справочник не был обновлен - |при обновлении информационной базы, следует выполнить обновление вручную: - |""Все функции"" -> ""Справочник. Идентификаторы объектов метаданных"" -> - |команда формы списка ""Обновить данные справочника"".'"), + |которому соответствует удаленный объект метаданных.'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), Таблица); Иначе ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -2778,12 +2680,8 @@ | |Для объекта метаданных ""%1"" |найден идентификатор в справочнике ""Идентификаторы объектов метаданных"", - |который соответствует другому объекту метаданных ""%2"". - | - |Данные справочника некорректны. Если справочник не был обновлен - |при обновлении информационной базы, следует выполнить обновление вручную: - |""Все функции"" -> ""Справочник. Идентификаторы объектов метаданных"" -> - |команда формы списка ""Обновить данные справочника"".'"), + |который соответствует другому объекту метаданных ""%2"".'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), Таблица, РезультатПроверки.ОбъектМетаданных); КонецЕсли; @@ -2803,6 +2701,8 @@ // Функция ОбъектМетаданныхПоИдентификатору(Идентификатор) Экспорт + Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования(); + Кэш = СтандартныеПодсистемыПовтИсп.ПараметрыБазовойФункциональности( ).ИдентификаторыОбъектовМетаданных; @@ -2846,12 +2746,8 @@ НСтр("ru = 'Ошибка при выполнении функции ОбщегоНазначения.ОбъектМетаданныхПоИдентификатору(). | |Идентификатор ""%1"" - |не найден в справочнике ""Идентификаторы объектов метаданных"". - | - |Если справочник не был обновлен при обновлении информационной базы, - |следует выполнить обновление вручную: - |""Все функции"" -> ""Справочник. Идентификаторы объектов метаданных"" -> - |команда формы списка ""Обновить данные справочника"".'"), + |не найден в справочнике ""Идентификаторы объектов метаданных"".'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), Строка(Идентификатор)); КонецЕсли; @@ -2866,12 +2762,8 @@ |Идентификатору ""%1"" |найденому в справочнике ""Идентификаторы объектов метаданных"", |соответствует несуществующий объект метаданных - |""%2"". - | - |Если справочник не был обновлен при обновлении информационной базы, - |следует выполнить обновление вручную: - |""Все функции"" -> ""Справочник. Идентификаторы объектов метаданных"" -> - |команда формы списка ""Обновить данные справочника"".'"), + |""%2"".'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), Строка(Идентификатор), Выгрузка[0].ПолноеИмя); Иначе @@ -2880,12 +2772,8 @@ | |Идентификатору ""%1"" |найденому в справочнике ""Идентификаторы объектов метаданных"", - |соответствует удаленный объект метаданных. - | - |Данные справочника некорректны. Если справочник не был обновлен - |при обновлении информационной базы, следует выполнить обновление вручную: - |""Все функции"" -> ""Справочник. Идентификаторы объектов метаданных"" -> - |команда формы списка ""Обновить данные справочника"".'"), + |соответствует удаленный объект метаданных.'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), Строка(Идентификатор)); КонецЕсли; Иначе @@ -2895,12 +2783,8 @@ |Идентификатору ""%1"" |найденому в справочнике ""Идентификаторы объектов метаданных"", |соответствует объект метаданных ""%2"", - |полное имя которого отличается от заданного в идентификаторе. - | - |Если справочник не был обновлен при обновлении информационной базы, - |следует выполнить обновление вручную: - |""Все функции"" -> ""Справочник. Идентификаторы объектов метаданных"" -> - |команда формы списка ""Обновить данные справочника"".'"), + |полное имя которого отличается от заданного в идентификаторе.'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), Строка(Идентификатор), РезультатПроверки.ОбъектМетаданных.ПолноеИмя()); КонецЕсли; @@ -2912,12 +2796,8 @@ | |Идентификатор ""%1"" |найден в справочнике ""Идентификаторы объектов метаданных"", - |но значение реквизита ""Пометка удаления"" установлено Истина. - | - |Если справочник не был обновлен при обновлении информационной базы, - |следует выполнить обновление вручную: - |""Все функции"" -> ""Справочник. Идентификаторы объектов метаданных"" -> - |команда формы списка ""Обновить данные справочника"".'"), + |но значение реквизита ""Пометка удаления"" установлено Истина.'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), Строка(Идентификатор)); КонецЕсли; @@ -2938,6 +2818,8 @@ // Процедура ДобавитьПереименование(Итог, ВерсияИБ, СтароеПолноеИмя, НовоеПолноеИмя, ИдентификаторБиблиотеки = "") Экспорт + Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования(); + СтароеИмяКоллекции = ВРег(ИмяКоллекции(СтароеПолноеИмя)); НовоеИмяКоллекции = ВРег(ИмяКоллекции(НовоеПолноеИмя)); @@ -3179,8 +3061,7 @@ ПредставлениеОбъекта = ?(ПустаяСтрока(ОбъектМетаданных.ПредставлениеОбъекта), ?(ПустаяСтрока(ОбъектМетаданных.Синоним), ОбъектМетаданных.Имя, ОбъектМетаданных.Синоним ), - ОбъектМетаданных.ПредставлениеОбъекта - ); + ОбъектМетаданных.ПредставлениеОбъекта); Результат = "[ПредставлениеОбъекта] [Код], [Наименование]"; Результат = СтрЗаменить(Результат, "[ПредставлениеОбъекта]", ПредставлениеОбъекта); @@ -3305,6 +3186,26 @@ КонецФункции +// Возвращает имя предопределенного элемента по указанной ссылке. +// Рекомендуется использовать вместо метода ПолучитьИмяПредопределенного для +// конфигураций рассчитанных для платформ версий 8.2 и 8.3 одновременно. +// +// Параметры: +// Ссылка - ссылка на предопределенный элемент. +// +// Возвращаемое значение: +// Строка - имя предопределенного элемента. +// +Функция ИмяПредопределенного(Знач Ссылка) Экспорт + + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Возврат ЗначениеРеквизитаОбъекта(Ссылка, "ИмяПредопределенныхДанных"); + Иначе + Возврат МенеджерОбъектаПоСсылке(Ссылка).ПолучитьИмяПредопределенного(Ссылка); + КонецЕсли; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Функции определения типов объектов метаданных @@ -3815,8 +3716,7 @@ Значение, ОписаниеНастроек, ИмяПользователя, - НужноОбновитьПовторноИспользуемыеЗначения - ); + НужноОбновитьПовторноИспользуемыеЗначения); КонецПроцедуры @@ -3835,8 +3735,7 @@ КлючНастроек, ЗначениеПоУмолчанию, ОписаниеНастроек, - ИмяПользователя - ); + ИмяПользователя); КонецФункции @@ -3852,8 +3751,7 @@ ХранилищеОбщихНастроек, КлючОбъекта, КлючНастроек, - ИмяПользователя - ); + ИмяПользователя); КонецПроцедуры @@ -3923,8 +3821,7 @@ Значение, ОписаниеНастроек, ИмяПользователя, - НужноОбновитьПовторноИспользуемыеЗначения - ); + НужноОбновитьПовторноИспользуемыеЗначения); КонецПроцедуры @@ -3943,8 +3840,7 @@ КлючНастроек, ЗначениеПоУмолчанию, ОписаниеНастроек, - ИмяПользователя - ); + ИмяПользователя); КонецФункции @@ -3960,8 +3856,7 @@ ХранилищеСистемныхНастроек, КлючОбъекта, КлючНастроек, - ИмяПользователя - ); + ИмяПользователя); КонецПроцедуры @@ -3982,8 +3877,7 @@ Значение, ОписаниеНастроек, ИмяПользователя, - НужноОбновитьПовторноИспользуемыеЗначения - ); + НужноОбновитьПовторноИспользуемыеЗначения); КонецПроцедуры @@ -4002,8 +3896,7 @@ КлючНастроек, ЗначениеПоУмолчанию, ОписаниеНастроек, - ИмяПользователя - ); + ИмяПользователя); КонецФункции @@ -4019,8 +3912,7 @@ ХранилищеНастроекДанныхФорм, КлючОбъекта, КлючНастроек, - ИмяПользователя - ); + ИмяПользователя); КонецПроцедуры @@ -4134,8 +4026,7 @@ // Процедура пакетной записи сообщений в журнал регистрации // -// Параметры: СобытияДляЖурналаРегистрации - массив структур, клиентская глобальная переменная -// Каждая структура - сообщение для журнала регистрации. +// Параметры: СобытияДляЖурналаРегистрации - СписокЗначений, клиентская глобальная переменная // После записи переменная очищается. Процедура ЗаписатьСобытияВЖурналРегистрации(СобытияДляЖурналаРегистрации) Экспорт @@ -4249,9 +4140,11 @@ КонецЕсли; Иначе Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - НачатьТранзакцию(); - Модуль.ЗаблокироватьТекущуюОбластьДанных(ПроверитьОтсутствиеДругихСеансов); + Если НЕ СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + НачатьТранзакцию(); + КонецЕсли; + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ЗаблокироватьТекущуюОбластьДанных(ПроверитьОтсутствиеДругихСеансов); Иначе ВызватьИсключение(НСтр("ru = 'Подсистема ""Работа в модели сервиса"" не доступна'")); КонецЕсли; @@ -4278,11 +4171,16 @@ КонецЕсли; Иначе Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Попытка - ЗафиксироватьТранзакцию(); - Исключение - ОтменитьТранзакцию(); - КонецПопытки; + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.РазблокироватьТекущуюОбластьДанных(); + + Если НЕ СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Попытка + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + КонецПопытки; + КонецЕсли; Иначе ВызватьИсключение(НСтр("ru = 'Подсистема ""Работа в модели сервиса"" не доступна'")); КонецЕсли; @@ -4402,8 +4300,8 @@ Процедура ЗаписатьВспомогательныеДанные(ОбъектВспомогательныхДанных) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.ЗаписатьВспомогательныеДанные(ОбъектВспомогательныхДанных); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ЗаписатьВспомогательныеДанные(ОбъектВспомогательныхДанных); Иначе ОбъектВспомогательныхДанных.Записать(); КонецЕсли; @@ -4419,8 +4317,8 @@ Процедура УдалитьВспомогательныеДанные(ОбъектВспомогательныхДанных) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.УдалитьВспомогательныеДанные(ОбъектВспомогательныхДанных); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.УдалитьВспомогательныеДанные(ОбъектВспомогательныхДанных); Иначе ОбъектВспомогательныхДанных.Удалить(); КонецЕсли; @@ -5130,20 +5028,13 @@ РодительМетаданные = ЭлементМетаданные.Родитель(); + // Регистрация исключаемого объекта метаданных целиком (всех ссылок, которые он может содержать). Если ТипЗнч(РодительМетаданные) = Тип("ОбъектМетаданныхКонфигурация") Тогда - // Если указан корневой объект метаданных (справочник, документ, регистр и т.п.): - // - Добавление в исключения объекта метаданных целиком (всех ссылок, которые он может содержать). ИсключенияПоискаСсылок.Вставить(ЭлементМетаданные, "*"); Продолжить; КонецЕсли; - // Если указан конкретный реквизит объекта метаданных: - ПутиКРеквизитам = ИсключенияПоискаСсылок[ЭлементМетаданные]; - Если ПутиКРеквизитам = "*" Тогда - Продолжить; // - Пропуск, если весь объект метаданных уже исключен. - КонецЕсли; - - // - Регистрация исключаемого реквизита объекта метаданных. + // Регистрация исключаемого реквизита объекта метаданных. ОтносительныйПутьКРеквизиту = ЭлементМетаданные.Имя; РодительРодителя = РодительМетаданные.Родитель(); Пока ТипЗнч(РодительРодителя) <> Тип("ОбъектМетаданныхКонфигурация") Цикл @@ -5152,10 +5043,12 @@ РодительРодителя = РодительМетаданные.Родитель(); КонецЦикла; + ПутиКРеквизитам = ИсключенияПоискаСсылок.Получить(РодительМетаданные); Если ПутиКРеквизитам = Неопределено Тогда ПутиКРеквизитам = Новый Массив; + ИначеЕсли ПутиКРеквизитам = "*" Тогда + Продолжить; // - Пропуск, если весь объект метаданных уже исключен. КонецЕсли; - ПутиКРеквизитам.Добавить(ОтносительныйПутьКРеквизиту); ИсключенияПоискаСсылок.Вставить(РодительМетаданные, ПутиКРеквизитам); @@ -5191,8 +5084,8 @@ Процедура ПриСкачиванииФайлаНаСервере(Знач Адрес, Знач ПараметрыПолучения, ВозвращаемоеЗначение) Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПолучениеФайловИзИнтернета"); - ВозвращаемоеЗначение = Модуль.СкачатьФайлНаСервере(Адрес, ПараметрыПолучения); + МодульПолучениеФайловИзИнтернета = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПолучениеФайловИзИнтернета"); + ВозвращаемоеЗначение = МодульПолучениеФайловИзИнтернета.СкачатьФайлНаСервере(Адрес, ПараметрыПолучения); КонецЕсли; КонецПроцедуры @@ -5206,8 +5099,8 @@ Процедура ПриУстановкеРазделенияСеанса(Знач Использование, Знач ОбластьДанных = Неопределено) Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.УстановитьРазделениеСеанса(Использование, ОбластьДанных); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.УстановитьРазделениеСеанса(Использование, ОбластьДанных); КонецЕсли; КонецПроцедуры @@ -5221,8 +5114,8 @@ Процедура ПриПолученииЗначенияРазделителяСеанса(ЗначениеРазделителя) Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - ЗначениеРазделителя = Модуль.ЗначениеРазделителяСеанса(); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + ЗначениеРазделителя = МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса(); Иначе ВызватьИсключение(НСтр("ru = 'Подсистема ""Работа в модели сервиса"" не доступна'")); КонецЕсли; @@ -5237,8 +5130,8 @@ Процедура ПриПолученииИспользованияРазделителяСеанса(ИспользованиеРазделителя) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - ИспользованиеРазделителя = Модуль.ИспользованиеРазделителяСеанса(); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + ИспользованиеРазделителя = МодульРаботаВМоделиСервиса.ИспользованиеРазделителяСеанса(); Иначе ВызватьИсключение(НСтр("ru = 'Подсистема ""Работа в модели сервиса"" не доступна'")); КонецЕсли; diff --git a/SSL/src/CommonModules/ОбщегоНазначенияВызовСервера/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияВызовСервера/Module.bsl index 6653aa187..4112b71f7 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияВызовСервера/Module.bsl @@ -10,8 +10,7 @@ // Процедура пакетной записи сообщений в журнал регистрации // -// Параметры: СобытияДляЖурналаРегистрации - массив структур, клиентская глобальная переменная -// Каждая структура - сообщение для журнала регистрации. +// Параметры: СобытияДляЖурналаРегистрации - СписокЗначений, клиентская глобальная переменная // После записи переменная очищается. Процедура ЗаписатьСобытияВЖурналРегистрации(СобытияДляЖурналаРегистрации) Экспорт diff --git a/SSL/src/CommonModules/ОбщегоНазначенияКлиентПовтИсп/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияКлиентПовтИсп/Module.bsl index 7bded60de..aa8b6f2e6 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияКлиентПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияКлиентПовтИсп/Module.bsl @@ -10,6 +10,14 @@ // Возвращает Истина, если этот веб клиент не поддерживает расширение работы с файлами. Функция ЭтоВебКлиентБезПоддержкиРасширенияРаботыСФайлами() Экспорт + #Если Не ВебКлиент Тогда + Возврат Ложь; + #КонецЕсли + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83() Тогда + Возврат Ложь; + КонецЕсли; + СистемнаяИнфо = Новый СистемнаяИнформация; Если Найти(СистемнаяИнфо.ИнформацияПрограммыПросмотра, "Safari") <> 0 Тогда @@ -73,5 +81,3 @@ Возврат ОбщегоНазначенияВызовСервера.ШрифтСтиля(ИмяШрифтаСтиля); КонецФункции - - diff --git a/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl index 1b0752319..ce9fa82cd 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияКлиентСервер/Module.bsl @@ -1587,6 +1587,11 @@ Элемент.Использование = Использование; КонецЕсли; + // Важно: установка идентификатора должна выполняться + // в конце настройки элемента, иначе он будет скопирован + // в пользовательские настройки частично заполненным. + Элемент.ИдентификаторПользовательскойНастройки = ИмяПоля; + Возврат Элемент; КонецФункции @@ -1653,9 +1658,7 @@ // Представление - представление поля компоновки // Примечание: поиск может осуществляться или по ЛевомуЗначению, или по Представлению // -Процедура УдалитьЭлементыГруппыОтбора(знач ОбластьУдаления, - знач ИмяПоля = Неопределено, - знач Представление = Неопределено) Экспорт +Процедура УдалитьЭлементыГруппыОтбора(знач ОбластьУдаления, знач ИмяПоля = Неопределено, знач Представление = Неопределено) Экспорт Если ЗначениеЗаполнено(ИмяПоля) Тогда ЗначениеПоиска = Новый ПолеКомпоновкиДанных(ИмяПоля); @@ -1707,6 +1710,9 @@ Если ВидСравнения = Неопределено Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; КонецЕсли; + Если РежимОтображения = Неопределено Тогда + РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + КонецЕсли; ДобавитьЭлементКомпоновки(ОбластьПоискаДобавления, ИмяПоля, ВидСравнения, ПравоеЗначение, Представление, Использование, РежимОтображения); КонецЕсли; @@ -1727,8 +1733,16 @@ Использование = Неопределено, РежимОтображения = Неопределено) Экспорт - Если Платформа83БезИспользованияРежимаСовместимости() Тогда - ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор; + Если РежимОтображения = Неопределено Тогда + РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + КонецЕсли; + + Если ЭтоПлатформа83БезРежимаСовместимости() Тогда + Если РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный Тогда + ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор; + Иначе + ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор; + КонецЕсли; Иначе ОтборДинамическогоСписка = ДинамическийСписок.Отбор; КонецЕсли; @@ -1740,27 +1754,43 @@ ВидСравнения, Представление, Использование, - РежимОтображения - ); + РежимОтображения); КонецПроцедуры -// Устанавливает значение Значение параметра ИмяПараметра динамического списка Список -// или отключает его использование в зависимости от признака Использование. +// Удаляет элементы группы отбора динамического списка. +// Работает для платформы версии 8.3. // +// Параметры: +// ДинамическийСписок (ДинамическийСписок) Реквизит формы, для которого требуется установить отбор. +// Остальные параметры - см. УдалитьЭлементыГруппыОтбора() +// +Процедура УдалитьЭлементыГруппыОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля = Неопределено, Представление = Неопределено) Экспорт + + Если ЭтоПлатформа83БезРежимаСовместимости() Тогда + ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор; + Иначе + ОтборДинамическогоСписка = ДинамическийСписок.Отбор; + КонецЕсли; + + УдалитьЭлементыГруппыОтбора(ОтборДинамическогоСписка, ИмяПоля, Представление); + +КонецПроцедуры + +// Устанавливает / обновляет значение параметра динамического списка. Процедура УстановитьПараметрДинамическогоСписка(Список, ИмяПараметра, Значение, Использование = Истина) Экспорт - Если Использование Тогда - Список.Параметры.УстановитьЗначениеПараметра(ИмяПараметра, Значение); - Иначе - ЗначениеПараметра = Список.Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(ИмяПараметра)); - Если ЗначениеПараметра <> Неопределено Тогда - ЗначениеПараметра.Значение = Значение; - ЗначениеПараметра.Использование = Ложь; + ЗначениеПараметраКомпоновкиДанных = Список.Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных(ИмяПараметра)); + Если ЗначениеПараметраКомпоновкиДанных <> Неопределено Тогда + Если Использование И ЗначениеПараметраКомпоновкиДанных.Значение <> Значение Тогда + ЗначениеПараметраКомпоновкиДанных.Значение = Значение; + КонецЕсли; + Если ЗначениеПараметраКомпоновкиДанных.Использование <> Использование Тогда + ЗначениеПараметраКомпоновкиДанных.Использование = Использование; КонецЕсли; КонецЕсли; -КонецПроцедуры +КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // Функции для работы с управляемыми формами @@ -1866,6 +1896,84 @@ КонецФункции +// Возвращает значение свойства Линия системного перечисления ОтображениеОбычнойГруппы. +// +// Возвращаемое значение: +// ОтображениеОбычнойГруппы - Линия для 8.2 и СлабоеВыделение для 8.3. +// +Функция ОтображениеОбычнойГруппыЛиния() Экспорт + + Если ЭтоПлатформа83БезРежимаСовместимости() Тогда + Возврат ОтображениеОбычнойГруппы["СлабоеВыделение"]; + Иначе + Возврат ОтображениеОбычнойГруппы["Линия"]; + КонецЕсли; + +КонецФункции + +// Возвращает значение свойства Отступ системного перечисления ОтображениеОбычнойГруппы. +// +// Возвращаемое значение: +// ОтображениеОбычнойГруппы - Отступ для 8.2 и ОбычноеВыделение для 8.3. +// +Функция ОтображениеОбычнойГруппыОтступ() Экспорт + + Если ЭтоПлатформа83БезРежимаСовместимости() Тогда + Возврат ОтображениеОбычнойГруппы["ОбычноеВыделение"]; + Иначе + Возврат ОтображениеОбычнойГруппы["Отступ"]; + КонецЕсли; + +КонецФункции + +// Возвращает значение свойства РамкаГруппы системного перечисления ОтображениеОбычнойГруппы. +// +// Возвращаемое значение: +// ОтображениеОбычнойГруппы - РамкаГруппы для 8.2 и СильноеВыделение для 8.3. +// +Функция ОтображениеОбычнойГруппыРамкаГруппы() Экспорт + + Если ЭтоПлатформа83БезРежимаСовместимости() Тогда + Возврат ОтображениеОбычнойГруппы["СильноеВыделение"]; + Иначе + Возврат ОтображениеОбычнойГруппы["РамкаГруппы"]; + КонецЕсли; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Работа с предопределенными данными +// + +// Получает ссылку предопределенного элемента по его полному имени. +// Поддерживаются только те таблицы, которые могут содержать предопределенные элементы: +// справочники, планы видов характеристик, планы счетов и планы видов расчета. +// +// Параметры: +// ПолноеИмяПредопределенного (Строка) Полный путь к предопределенному элементу, включая его имя. +// Формат полностью аналогичен функции глобального контекста ПредопределенноеЗначение(). +// Например: +// "Справочник.ВидыКонтактнойИнформации.EmailПользователя" +// "ПланВидовХарактеристик.ВидыДоступа.ВнешниеПользователи" +// "ПланСчетов.Хозрасчетный.Материалы" +// "ПланВидовРасчета.Начисления.ОплатаПоОкладу" +// +// Возвращаемое значение: +// Ссылка предопределенного элемента или Неопределено если элемент не найден. +// +Функция ПредопределенныйЭлемент(ПолноеИмяПредопределенного) Экспорт + Если ВРег(Прав(ПолноеИмяПредопределенного, 13)) = ".ПУСТАЯССЫЛКА" // Для получения пустых ссылок. + ИЛИ НЕ ЭтоПлатформа83БезРежимаСовместимости() Тогда // А также в версии 8.2 или 8.3 в режиме совместимости с 8.2. + Возврат ПредопределенноеЗначение(ПолноеИмяПредопределенного); // Используется стандартная функция платформы. + КонецЕсли; + + #Если Клиент Тогда + Возврат СтандартныеПодсистемыКлиентПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного); + #Иначе + Возврат СтандартныеПодсистемыПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного); + #КонецЕсли +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Прочие функции // @@ -2056,16 +2164,25 @@ КонецФункции // Возвращает Истина если конфигурация запущена под управлением платформы 8.3 без использования режима совместимости. -Функция Платформа83БезИспользованияРежимаСовместимости() Экспорт - #Если Клиент Тогда - Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().Платформа83БезИспользованияРежимаСовместимости; +Функция ЭтоПлатформа83БезРежимаСовместимости() Экспорт + #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + Возврат СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости(); #Иначе - Возврат СтандартныеПодсистемыСервер.Платформа83БезИспользованияРежимаСовместимости(); + Возврат СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ЭтоПлатформа83БезРежимаСовместимости; #КонецЕсли КонецФункции +// Возвращает Истина если конфигурация запущена под управлением платформы 8.3. +// +Функция ЭтоПлатформа83() Экспорт + + Информация = Новый СистемнаяИнформация; + Возврат Лев(Информация.ВерсияПриложения, 3) = "8.3"; + +КонецФункции + // Возвращает Истина, если клиентское приложение подключено к базе через веб-сервер. -// Если подключение не клиентское возвращает Ложь. +// Если нет клиентского приложения, возвращается Ложь. // Функция КлиентПодключенЧерезВебСервер() Экспорт @@ -2078,7 +2195,7 @@ ).Получить("СтрокаСоединенияИнформационнойБазы"); Если СтрокаСоединенияИнформационнойБазы = Неопределено Тогда - Возврат Ложь; + Возврат Ложь; // Нет клиентского приложения. КонецЕсли; #КонецЕсли @@ -2086,6 +2203,57 @@ КонецФункции +// Возвращает Истина, если клиентское приложение запущено под управлением ОС Linux. +// +// Возвращаемое значение: +// Булево. Если нет клиентского приложения, возвращается Ложь. +// +Функция ЭтоLinuxКлиент() Экспорт + +#Если Клиент Или ВнешнееСоединение Тогда + СистемнаяИнформация = Новый СистемнаяИнформация; + + ЭтоLinuxКлиент = СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 + ИЛИ СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64; +#Иначе + УстановитьПривилегированныйРежим(Истина); + + ЭтоLinuxКлиент = СтандартныеПодсистемыСервер.ПараметрыКлиентаНаСервере().Получить("ЭтоLinuxКлиент"); + + Если ЭтоLinuxКлиент = Неопределено Тогда + Возврат Ложь; // Нет клиентского приложения. + КонецЕсли; +#КонецЕсли + + Возврат ЭтоLinuxКлиент; + +КонецФункции + +// Возвращает Истина, если клиентское приложение является Веб-клиентом. +// +// Возвращаемое значение: +// Булево. Если нет клиентского приложения, возвращается Ложь. +// +Функция ЭтоВебКлиент() Экспорт + +#Если ВебКлиент Тогда + Возврат Истина; +#ИначеЕсли Клиент Или ВнешнееСоединение Тогда + Возврат Ложь; +#Иначе + УстановитьПривилегированныйРежим(Истина); + + ЭтоВебКлиент = СтандартныеПодсистемыСервер.ПараметрыКлиентаНаСервере().Получить("ЭтоВебКлиент"); + + Если ЭтоВебКлиент = Неопределено Тогда + Возврат Ложь; // Нет клиентского приложения. + КонецЕсли; + + Возврат ЭтоВебКлиент; +#КонецЕсли + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Устаревшие процедуры и функции diff --git a/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl index 24238e500..359426135 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияПереопределяемый/Module.bsl @@ -24,25 +24,33 @@ КонецФункции -// Возвращает список имен объектов метаданных, данные которых могут содержать ссылки на различные объекты метаданных, -// но при этом эти ссылки не должны учитываться в бизнес-логике приложения. +// Объекты метаданных, содержимое которых не должно учитывается в бизнес-логике приложения. // -// Пример: -// Для документ "Реализация товаров и услуг" настроена подсистема версионирования объектов, -// и подсистема свойств. При этом на экземпляр документа может быть множество ссылок -// в информационной базе (из других документов, регистров). Часть ссылок имеют значение для бизнес-логики -// (например движения по регистрам). Другая часть ссылок - "техногенные" ссылки на объект из объектов ИБ, -// которые относятся к подсистеме версионирования объектов и подсистеме свойств. Такие "техногенные" -// ссылки должны быть отфильтрованы, например, в обработке удаления помеченных и при поиске ссылок на объект -// в подсистеме запрета редактирования ключевых реквизитов. -// Список таких "техногенных" объектов нужно перечислить в этой функции. +// Описание: +// Для документа "Реализация товаров и услуг" настроены подсистемы "Версионирование объектов" и "Свойства". +// При этом документ может быть указан в других объектах метаданных - документах или регистрах. +// Часть ссылок имеют значение для бизнес-логики (например движения по регистрам) и должны выводиться пользователю. +// Другая часть ссылок - "техногенные" ссылки на документ из данных подсистем "Версионирование объектов" и "Свойства", +// должны скрываться от пользователя при поиске ссылок на объект. +// Например, в обработке удаления помеченных или в подсистеме запрета редактирования ключевых реквизитов. +// Список таких "техногенных" объектов нужно перечислить в этой функции. // -// При этом необходимо позаботиться об удалении "техногенных" данных или очистке ссылок на удаленные объекты. -// Это может быть реализовано с помощью подписки на событие ПередУдалением, -// или с помощью установки признака Ведущее для измерений регистров сведений. +// Важно: +// Для избежания появления пустых "битых" ссылок рекомендуется предусмотреть процедуру очистки указанных объектов метаданных. +// Для измерений регистров сведений - с помощью установки флажка "Ведущее", +// тогда запись регистра сведений будет удалена вместе с удалением ссылки, указанной в измерении. +// Для других реквизитов указанных объектов - с помощью подписки на событие ПередУдалением всех типов объектов метаданных, +// которые могут быть записаны в реквизиты указанных объектов метаданных. +// В обработчике необходимо найти "техногенные" объекты, в реквизитах которых указана ссылка удаляемого объекта, +// и выбрать как именно очищать ссылку: очищать значение реквизита, удалять строку таблицы или удалять весь объект. // // Возвращаемое значение: -// Массив - массив строк, например, "РегистрСведений.ВерсииОбъектов". +// (Массив) из +// |- (ОбъектМетаданных) Объект метаданных или его реквизит, например: +// Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов); +// Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов.Реквизиты.АвторВерсии); +// |- (Строка) Полное имя объекта метаданных, например: +// Массив.Добавить("РегистрСведений.ВерсииОбъектов"); // Функция ПолучитьИсключенияПоискаСсылок() Экспорт @@ -50,7 +58,7 @@ Возврат Массив; -КонецФункции +КонецФункции // Устанавливает текстовое описание предмета // @@ -153,6 +161,9 @@ // "Больше не задавать этот вопрос" диалога "Завершить работу с программой?". // Значение по умолчанию Истина. // Если установить Ложь, то пользователь не увидит диалог, пока явно не включит его отображение через свои настройки. +// |- ОтключитьСправочникИдентификаторыОбъектовМетаданных (Булево) - отключает заполнение справочника +// ИдентификаторыОбъектовМетаданных, процедуры выгрузки и загрузки элементов справочника в узлах РИБ. +// Востребовано при частичном встраивании БСП в конфигурации на платформе 8.1 // Процедура ПриОпределенииОбщихПараметровБазовойФункциональности(ОбщиеПараметры) Экспорт diff --git a/SSL/src/CommonModules/ОбщегоНазначенияПовтИсп/Module.bsl b/SSL/src/CommonModules/ОбщегоНазначенияПовтИсп/Module.bsl index bb956e16d..bfb75e706 100644 --- a/SSL/src/CommonModules/ОбщегоНазначенияПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ОбщегоНазначенияПовтИсп/Module.bsl @@ -26,135 +26,6 @@ КонецФункции -// Возвращает список полных имен всех объектов метаданных, использующихся в общем реквизите-разделителе, -// имя которого передано в качестве значения параметра Разделитель, и значения свойств объекта метаданных, -// которые могут потребоваться для дальнейшей его обработки в универсальных алгоритмах. -// Для последовательностей и журналов документов определяет разделенность по входящим документам: любому из. -// -// Параметры: -// Разделитель - Строка, имя общего реквизита. -// -// Возвращаемое значение: -// ФиксированноеСоответствие, -// Ключ - Строка, полное имя объекта метаданных, -// Значение - ФиксированнаяСтруктура, -// Имя - Строка, имя объекта метаданных, -// Разделитель - Строка, имя разделителя, которым разделен объект метаданных, -// УсловноеРазделение - Строка, полное имя объекта метаданных, выступающего в качестве условия использования -// разделения объекта метаданных данным разделителем. -// -Функция РазделенныеОбъектыМетаданных(Знач Разделитель) Экспорт - - Результат = Новый Соответствие; - - // I. Перебрать состав всех общих реквизитов. - - МетаданныеОбщегоРеквизита = Метаданные.ОбщиеРеквизиты.Найти(Разделитель); - Если МетаданныеОбщегоРеквизита = Неопределено Тогда - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Общий реквизит %1 не обнаружен в конфигурации!'"), Разделитель); - КонецЕсли; - - Если МетаданныеОбщегоРеквизита.РазделениеДанных = Метаданные.СвойстваОбъектов.РазделениеДанныхОбщегоРеквизита.Разделять Тогда - - СоставОбщегоРеквизита = ОбщегоНазначенияПовтИсп.СоставОбщегоРеквизита(МетаданныеОбщегоРеквизита.Имя); - - ИспользоватьОбщийРеквизит = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Использовать; - АвтоИспользоватьОбщийРеквизит = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Авто; - АвтоИспользованиеОбщегоРеквизита = - (МетаданныеОбщегоРеквизита.АвтоИспользование = Метаданные.СвойстваОбъектов.АвтоИспользованиеОбщегоРеквизита.Использовать); - - Для Каждого ЭлементСостава Из СоставОбщегоРеквизита Цикл - - Если (АвтоИспользованиеОбщегоРеквизита И ЭлементСостава.Использование = АвтоИспользоватьОбщийРеквизит) - ИЛИ ЭлементСостава.Использование = ИспользоватьОбщийРеквизит Тогда - - ДополнительныеДанные = Новый Структура("Имя,Разделитель,УсловноеРазделение", ЭлементСостава.Метаданные.Имя, Разделитель, Неопределено); - Если ЭлементСостава.УсловноеРазделение <> Неопределено Тогда - ДополнительныеДанные.УсловноеРазделение = ЭлементСостава.УсловноеРазделение.ПолноеИмя(); - КонецЕсли; - - Результат.Вставить(ЭлементСостава.Метаданные.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); - - КонецЕсли; - - КонецЦикла; - - Иначе - - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Для общего реквизита %1 не используется разделение данных!'"), Разделитель); - - КонецЕсли; - - // II. Для последовательностей и журналов определять разделенность по входящим документам. - - // 1) Последовательности. Перебор с проверкой первого входящего документа. Если документов нет, считаем разделенной. - Для Каждого МетаданныеПоследовательности Из Метаданные.Последовательности Цикл - - ДополнительныеДанные = Новый Структура("Имя,Разделитель,УсловноеРазделение", МетаданныеПоследовательности.Имя, Разделитель, Неопределено); - - Если МетаданныеПоследовательности.Документы.Количество() = 0 Тогда - ШаблонСообщения = НСтр("ru = 'В последовательность %1 не включено ни одного документа.'"); - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, МетаданныеПоследовательности.Имя); - ЗаписьЖурналаРегистрации("ОбщегоНазначенияПовтИсп.РазделенныеОбъектыМетаданных", УровеньЖурналаРегистрации.Ошибка, - МетаданныеПоследовательности, , ТекстСообщения); - - Результат.Вставить(МетаданныеПоследовательности.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); - - Иначе - - Для Каждого МетаданныеДокумента Из МетаданныеПоследовательности.Документы Цикл - - ДополнительныеДанныеОтДокумента = Результат.Получить(МетаданныеДокумента.ПолноеИмя()); - - Если ДополнительныеДанныеОтДокумента <> Неопределено Тогда - ЗаполнитьЗначенияСвойств(ДополнительныеДанные, ДополнительныеДанныеОтДокумента, "Разделитель,УсловноеРазделение"); - Результат.Вставить(МетаданныеПоследовательности.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); - КонецЕсли; - Прервать; - - КонецЦикла; - КонецЕсли; - - КонецЦикла; - - // 2) Журналы. Перебор с проверкой первого входящего документа. Если документов нет, считаем разделенным. - Для Каждого МетаданныеЖурналаДокументов Из Метаданные.ЖурналыДокументов Цикл - - ДополнительныеДанные = Новый Структура("Имя,Разделитель,УсловноеРазделение", МетаданныеЖурналаДокументов.Имя, Разделитель, Неопределено); - - Если МетаданныеЖурналаДокументов.РегистрируемыеДокументы.Количество() = 0 Тогда - - ШаблонСообщения = НСтр("ru = 'В журнал %1 не включено ни одного документа.'"); - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, МетаданныеЖурналаДокументов.Имя); - ЗаписьЖурналаРегистрации("ОбщегоНазначенияПовтИсп.РазделенныеОбъектыМетаданных", УровеньЖурналаРегистрации.Ошибка, - МетаданныеЖурналаДокументов, , ТекстСообщения); - - Результат.Вставить(МетаданныеЖурналаДокументов.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); - - Иначе - - Для Каждого МетаданныеДокумента Из МетаданныеЖурналаДокументов.РегистрируемыеДокументы Цикл - - ДополнительныеДанныеОтДокумента = Результат.Получить(МетаданныеДокумента.ПолноеИмя()); - - Если ДополнительныеДанныеОтДокумента <> Неопределено Тогда - ЗаполнитьЗначенияСвойств(ДополнительныеДанные, ДополнительныеДанныеОтДокумента, "Разделитель,УсловноеРазделение"); - Результат.Вставить(МетаданныеЖурналаДокументов.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); - КонецЕсли; - Прервать; - - КонецЦикла; - - КонецЕсли; - - КонецЦикла; - - Возврат Новый ФиксированноеСоответствие(Результат); - -КонецФункции - // Возвращает состав общего реквизита с заданным именем. // // Параметры: @@ -192,8 +63,8 @@ Результат = ""; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Результат = Модуль.РазделительОсновныхДанных(); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + Результат = МодульРаботаВМоделиСервиса.РазделительОсновныхДанных(); КонецЕсли; Возврат Результат; @@ -208,8 +79,8 @@ Результат = ""; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Результат = Модуль.РазделительВспомогательныхДанных(); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + Результат = МодульРаботаВМоделиСервиса.РазделительВспомогательныхДанных(); КонецЕсли; Возврат Результат; @@ -330,11 +201,12 @@ // Определение режима работы для панелей настроек программы. // -// В панелях настроек включены 4 интерфейса: +// В панелях настроек включены 5 интерфейсов: // - Для администратора сервиса в области данных абонента (АС) // - Для администратора абонента (АА) // - Для администратора локального решения в клиент-серверном режиме (ЛКС) // - Для администратора локального решения в файловом режиме (ЛФ) +// - Для администратора автономного рабочего места (АРМ) // // Интерфейсы АС и АА разрезаются при помощи скрытия групп и элементов формы // для всех ролей, кроме роли "АдминистраторСистемы". @@ -351,17 +223,12 @@ РежимРаботы.Вставить("ЭтоАдминистраторСистемы", Пользователи.ЭтоПолноправныйПользователь(, Истина)); // АС, ЛКС, ЛФ // Общие настройки - РежимРаботы.Вставить("МодельСервиса", Ложь); // АС, АА - РежимРаботы.Вставить("Локальный", Ложь); // ЛКС, ЛФ - РежимРаботы.Вставить("Файловый", Ложь); // АС, АА, ЛФ + РежимРаботы.Вставить("МодельСервиса", РазделениеВключено()); // АС, АА + РежимРаботы.Вставить("Локальный", ПолучитьФункциональнуюОпцию("РаботаВЛокальномРежиме")); // ЛКС, ЛФ + РежимРаботы.Вставить("Автономный", ПолучитьФункциональнуюОпцию("РаботаВАвтономномРежиме")); // АРМ + РежимРаботы.Вставить("Файловый", Ложь); // АС, АА, ЛФ РежимРаботы.Вставить("КлиентСерверный", Ложь); // АС, АА, ЛКС - Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда - РежимРаботы.МодельСервиса = Истина; - Иначе - РежимРаботы.Локальный = Истина; - КонецЕсли; - Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда РежимРаботы.Файловый = Истина; Иначе @@ -370,24 +237,21 @@ // Точные настройки РежимРаботы.Вставить("АдминистраторСервиса", - РежимРаботы.МодельСервиса И РежимРаботы.ЭтоАдминистраторСистемы - ); // АС + РежимРаботы.МодельСервиса И РежимРаботы.ЭтоАдминистраторСистемы); // АС РежимРаботы.Вставить("АдминистраторАбонента", - РежимРаботы.МодельСервиса И НЕ РежимРаботы.ЭтоАдминистраторСистемы И РежимРаботы.ЭтоАдминистраторПрограммы - ); // АА + РежимРаботы.МодельСервиса И НЕ РежимРаботы.ЭтоАдминистраторСистемы И РежимРаботы.ЭтоАдминистраторПрограммы); // АА РежимРаботы.Вставить("ЛокальныйФайловый", - РежимРаботы.Локальный И РежимРаботы.Файловый - ); // ЛФ + РежимРаботы.Локальный И РежимРаботы.Файловый); // ЛФ РежимРаботы.Вставить("ЛокальныйКлиентСерверный", - РежимРаботы.Локальный И РежимРаботы.КлиентСерверный - ); // ЛКС + РежимРаботы.Локальный И РежимРаботы.КлиентСерверный); // ЛКС + + // Другие настройки + РежимРаботы.Вставить("ЭтоLinuxКлиент", ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент()); + РежимРаботы.Вставить("ЭтоВебКлиент", ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент()); Возврат РежимРаботы; КонецФункции -//////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ - // Функция возвращает имя каталога временных файлов. // // Возвращаемое значение: @@ -404,6 +268,8 @@ ТипПлатформыСервера = ОбщегоНазначенияПовтИсп.ТипПлатформыСервера(); + УстановитьПривилегированныйРежим(Истина); + Если ТипПлатформыСервера = ТипПлатформы.Windows_x86 ИЛИ ТипПлатформыСервера = ТипПлатформы.Windows_x86_64 Тогда @@ -421,6 +287,8 @@ КонецЕсли; + УстановитьПривилегированныйРежим(Ложь); + ПредставлениеКонстанты = ?(ОбщийТипПлатформы = "Linux", Метаданные.Константы.КаталогВременныхФайловДляLinux.Представление(), Метаданные.Константы.КаталогВременныхФайловДляWindows.Представление()); @@ -451,6 +319,160 @@ КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает список полных имен всех объектов метаданных, использующихся в общем реквизите-разделителе, +// имя которого передано в качестве значения параметра Разделитель, и значения свойств объекта метаданных, +// которые могут потребоваться для дальнейшей его обработки в универсальных алгоритмах. +// Для последовательностей и журналов документов определяет разделенность по входящим документам: любому из. +// +// Параметры: +// Разделитель - Строка, имя общего реквизита. +// +// Возвращаемое значение: +// ФиксированноеСоответствие, +// Ключ - Строка, полное имя объекта метаданных, +// Значение - ФиксированнаяСтруктура, +// Имя - Строка, имя объекта метаданных, +// Разделитель - Строка, имя разделителя, которым разделен объект метаданных, +// УсловноеРазделение - Строка, полное имя объекта метаданных, выступающего в качестве условия использования +// разделения объекта метаданных данным разделителем. +// +Функция РазделенныеОбъектыМетаданных(Знач Разделитель) Экспорт + + Результат = Новый Соответствие; + + // I. Перебрать состав всех общих реквизитов. + + МетаданныеОбщегоРеквизита = Метаданные.ОбщиеРеквизиты.Найти(Разделитель); + Если МетаданныеОбщегоРеквизита = Неопределено Тогда + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Общий реквизит %1 не обнаружен в конфигурации!'"), Разделитель); + КонецЕсли; + + Если МетаданныеОбщегоРеквизита.РазделениеДанных = Метаданные.СвойстваОбъектов.РазделениеДанныхОбщегоРеквизита.Разделять Тогда + + СоставОбщегоРеквизита = ОбщегоНазначенияПовтИсп.СоставОбщегоРеквизита(МетаданныеОбщегоРеквизита.Имя); + + ИспользоватьОбщийРеквизит = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Использовать; + АвтоИспользоватьОбщийРеквизит = Метаданные.СвойстваОбъектов.ИспользованиеОбщегоРеквизита.Авто; + АвтоИспользованиеОбщегоРеквизита = + (МетаданныеОбщегоРеквизита.АвтоИспользование = Метаданные.СвойстваОбъектов.АвтоИспользованиеОбщегоРеквизита.Использовать); + + Для Каждого ЭлементСостава Из СоставОбщегоРеквизита Цикл + + Если (АвтоИспользованиеОбщегоРеквизита И ЭлементСостава.Использование = АвтоИспользоватьОбщийРеквизит) + ИЛИ ЭлементСостава.Использование = ИспользоватьОбщийРеквизит Тогда + + ДополнительныеДанные = Новый Структура("Имя,Разделитель,УсловноеРазделение", ЭлементСостава.Метаданные.Имя, Разделитель, Неопределено); + Если ЭлементСостава.УсловноеРазделение <> Неопределено Тогда + ДополнительныеДанные.УсловноеРазделение = ЭлементСостава.УсловноеРазделение.ПолноеИмя(); + КонецЕсли; + + Результат.Вставить(ЭлементСостава.Метаданные.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); + + // По регистрам расчета дополнительно определяется разделенность подчиненных им перерасчетов + Если ОбщегоНазначения.ЭтоРегистрРасчета(ЭлементСостава.Метаданные) Тогда + + Перерасчеты = ЭлементСостава.Метаданные.Перерасчеты; + Для Каждого Перерасчет Из Перерасчеты Цикл + + ДополнительныеДанные.Имя = Перерасчет.Имя; + Результат.Вставить(Перерасчет.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); + + КонецЦикла; + + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + Иначе + + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Для общего реквизита %1 не используется разделение данных!'"), Разделитель); + + КонецЕсли; + + // II. Для последовательностей и журналов определять разделенность по входящим документам. + + // 1) Последовательности. Перебор с проверкой первого входящего документа. Если документов нет, считаем разделенной. + Для Каждого МетаданныеПоследовательности Из Метаданные.Последовательности Цикл + + ДополнительныеДанные = Новый Структура("Имя,Разделитель,УсловноеРазделение", МетаданныеПоследовательности.Имя, Разделитель, Неопределено); + + Если МетаданныеПоследовательности.Документы.Количество() = 0 Тогда + + ШаблонСообщения = НСтр("ru = 'В последовательность %1 не включено ни одного документа.'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, МетаданныеПоследовательности.Имя); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Получение разделенных объектов метаданных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, + МетаданныеПоследовательности, , ТекстСообщения); + + Результат.Вставить(МетаданныеПоследовательности.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); + + Иначе + + Для Каждого МетаданныеДокумента Из МетаданныеПоследовательности.Документы Цикл + + ДополнительныеДанныеОтДокумента = Результат.Получить(МетаданныеДокумента.ПолноеИмя()); + + Если ДополнительныеДанныеОтДокумента <> Неопределено Тогда + ЗаполнитьЗначенияСвойств(ДополнительныеДанные, ДополнительныеДанныеОтДокумента, "Разделитель,УсловноеРазделение"); + Результат.Вставить(МетаданныеПоследовательности.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); + КонецЕсли; + + Прервать; + + КонецЦикла; + + КонецЕсли; + + КонецЦикла; + + // 2) Журналы. Перебор с проверкой первого входящего документа. Если документов нет, считаем разделенным. + Для Каждого МетаданныеЖурналаДокументов Из Метаданные.ЖурналыДокументов Цикл + + ДополнительныеДанные = Новый Структура("Имя,Разделитель,УсловноеРазделение", МетаданныеЖурналаДокументов.Имя, Разделитель, Неопределено); + + Если МетаданныеЖурналаДокументов.РегистрируемыеДокументы.Количество() = 0 Тогда + + ШаблонСообщения = НСтр("ru = 'В журнал %1 не включено ни одного документа.'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, МетаданныеЖурналаДокументов.Имя); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Получение разделенных объектов метаданных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, + МетаданныеЖурналаДокументов, , ТекстСообщения); + + Результат.Вставить(МетаданныеЖурналаДокументов.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); + + Иначе + + Для Каждого МетаданныеДокумента Из МетаданныеЖурналаДокументов.РегистрируемыеДокументы Цикл + + ДополнительныеДанныеОтДокумента = Результат.Получить(МетаданныеДокумента.ПолноеИмя()); + + Если ДополнительныеДанныеОтДокумента <> Неопределено Тогда + ЗаполнитьЗначенияСвойств(ДополнительныеДанные, ДополнительныеДанныеОтДокумента, "Разделитель,УсловноеРазделение"); + Результат.Вставить(МетаданныеЖурналаДокументов.ПолноеИмя(), Новый ФиксированнаяСтруктура(ДополнительныеДанные)); + КонецЕсли; + + Прервать; + + КонецЦикла; + + КонецЕсли; + + КонецЦикла; + + Возврат Новый ФиксированноеСоответствие(Результат); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + // Функция получает данные кеша версий из ресурса типа ХранилищеЗначения регистра КэшПрограммныхИнтерфейсов. // // Параметры: @@ -639,4 +661,3 @@ ИмяТочкиПодключения, ИмяПользователя, Пароль, Таймаут); КонецФункции - diff --git a/SSL/src/CommonModules/ОрганизацииСлужебный/Module.bsl b/SSL/src/CommonModules/ОрганизацииСлужебный/Module.bsl index 9b2c5839f..d56fae645 100644 --- a/SSL/src/CommonModules/ОрганизацииСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ОрганизацииСлужебный/Module.bsl @@ -26,7 +26,6 @@ КонецПроцедуры - // Добавляет процедуры-обработчики обновления, необходимые данной подсистеме. // // Параметры: @@ -37,6 +36,7 @@ Обработчик = Обработчики.Добавить(); Обработчик.Версия = "2.1.3.16"; + Обработчик.НачальноеЗаполнение = Истина; Обработчик.Процедура = "ОрганизацииСлужебный.ОбновитьПредопределенныеВидыКонтактнойИнформацииОрганизаций"; КонецПроцедуры diff --git a/SSL/src/CommonModules/ОтправкаSMSЧерезБилайн/Module.bsl b/SSL/src/CommonModules/ОтправкаSMSЧерезБилайн/Module.bsl index 2732ff9ce..4973f5d13 100644 --- a/SSL/src/CommonModules/ОтправкаSMSЧерезБилайн/Module.bsl +++ b/SSL/src/CommonModules/ОтправкаSMSЧерезБилайн/Module.bsl @@ -75,7 +75,7 @@ СтруктураОтвета.Прочитать(); ОписаниеОшибки = ОписаниеОшибки + СтруктураОтвета.Значение + Символы.ПС; КонецЕсли; - КонецЕсли; + КонецЕсли; КонецЦикла; СтруктураОтвета.Закрыть(); УдалитьФайлы(ИмяФайлаОтвета); @@ -128,7 +128,7 @@ СтруктураОтвета.Прочитать(); SMSSTS_CODE = СтруктураОтвета.Значение; КонецЕсли; - КонецЕсли; + КонецЕсли; КонецЦикла; СтруктураОтвета.Закрыть(); УдалитьФайлы(ИмяФайлаОтвета); @@ -257,10 +257,7 @@ БинарныйМассивВЧисло( ПобитовоеИли( ЧислоВБинарныйМассив(192,8), - ЧислоВБинарныйМассив(Цел(КодСимвола / Pow(2,6)),8) - ) - ) - ); // 0xc0 | (ch >> 6) + ЧислоВБинарныйМассив(Цел(КодСимвола / Pow(2,6)),8)))); // 0xc0 | (ch >> 6) Результат = Результат + ПредставлениеБайта( БинарныйМассивВЧисло( @@ -268,21 +265,14 @@ ЧислоВБинарныйМассив(128,8), ПобитовоеИ( ЧислоВБинарныйМассив(КодСимвола,8), - ЧислоВБинарныйМассив(63,8) - ) - ) - ) - ); //0x80 | (ch & 0x3F) + ЧислоВБинарныйМассив(63,8))))); //0x80 | (ch & 0x3F) Иначе // 0x7FF < ch <= 0xFFFF Результат = Результат + ПредставлениеБайта ( БинарныйМассивВЧисло( ПобитовоеИли( ЧислоВБинарныйМассив(224,8), - ЧислоВБинарныйМассив(Цел(КодСимвола / Pow(2,12)),8) - ) - ) - ); // 0xe0 | (ch >> 12) + ЧислоВБинарныйМассив(Цел(КодСимвола / Pow(2,12)),8)))); // 0xe0 | (ch >> 12) Результат = Результат + ПредставлениеБайта( @@ -291,11 +281,7 @@ ЧислоВБинарныйМассив(128,8), ПобитовоеИ( ЧислоВБинарныйМассив(Цел(КодСимвола / Pow(2,6)),8), - ЧислоВБинарныйМассив(63,8) - ) - ) - ) - ); //0x80 | ((ch >> 6) & 0x3F) + ЧислоВБинарныйМассив(63,8))))); //0x80 | ((ch >> 6) & 0x3F) Результат = Результат + ПредставлениеБайта( @@ -304,11 +290,7 @@ ЧислоВБинарныйМассив(128,8), ПобитовоеИ( ЧислоВБинарныйМассив(КодСимвола,8), - ЧислоВБинарныйМассив(63,8) - ) - ) - ) - ); //0x80 | (ch & 0x3F) + ЧислоВБинарныйМассив(63,8))))); //0x80 | (ch & 0x3F) КонецЕсли; КонецЦикла; diff --git a/SSL/src/CommonModules/ОтправкаSMSЧерезМТС/Module.bsl b/SSL/src/CommonModules/ОтправкаSMSЧерезМТС/Module.bsl index b689ed6dc..c575ee133 100644 --- a/SSL/src/CommonModules/ОтправкаSMSЧерезМТС/Module.bsl +++ b/SSL/src/CommonModules/ОтправкаSMSЧерезМТС/Module.bsl @@ -101,3 +101,4 @@ Функция ПодключитьВебСервис() Возврат WSСсылки.ОтправкаSMSЧерезМТС.СоздатьWSПрокси("http://mcommunicator.ru/M2M", "MTS_x0020_Communicator_x0020_M2M_x0020_XML_x0020_API", "MTS_x0020_Communicator_x0020_M2M_x0020_XML_x0020_APISoap12"); КонецФункции + diff --git a/SSL/src/CommonModules/ОценкаПроизводительностиВызовСервераПолныеПрава/Module.bsl b/SSL/src/CommonModules/ОценкаПроизводительностиВызовСервераПолныеПрава/Module.bsl index 39989e115..0107a1903 100644 --- a/SSL/src/CommonModules/ОценкаПроизводительностиВызовСервераПолныеПрава/Module.bsl +++ b/SSL/src/CommonModules/ОценкаПроизводительностиВызовСервераПолныеПрава/Module.bsl @@ -30,8 +30,7 @@ КлючеваяОперацияСсылка, Длительность, ДатаДанные.Ключ, - Данные["ДатаОкончания"] - ); + Данные["ДатаОкончания"]); КонецЦикла; КонецЦикла; Возврат ПериодЗаписи(); diff --git a/SSL/src/CommonModules/ОценкаПроизводительностиКлиентСервер/Module.bsl b/SSL/src/CommonModules/ОценкаПроизводительностиКлиентСервер/Module.bsl index 52c113717..2a4582071 100644 --- a/SSL/src/CommonModules/ОценкаПроизводительностиКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ОценкаПроизводительностиКлиентСервер/Module.bsl @@ -36,8 +36,7 @@ ДатаИВремяНаКлиенте = ТекущаяДата(); ОценкаПроизводительностиЗамерВремени.Вставить( "СмещениеДатыКлиента", - ДатаИВремяНаСервере - ДатаИВремяНаКлиенте - ); + ДатаИВремяНаСервере - ДатаИВремяНаКлиенте); ПодключитьОбработчикОжидания("ЗаписатьРезультатыАвто", ТекущийПериодЗаписи, Истина); КонецЕсли; @@ -82,8 +81,7 @@ КлючеваяОперацияСсылка, Длительность, ДатаНачала, - ЗначениеТаймера(Ложь) - ); + ЗначениеТаймера(Ложь)); КонецПроцедуры // Функция вызывается при старте замера времени и его завершении. diff --git a/SSL/src/CommonModules/ОчередьЗаданий/Module.bsl b/SSL/src/CommonModules/ОчередьЗаданий/Module.bsl index 97cf38bbf..76169c6fb 100644 --- a/SSL/src/CommonModules/ОчередьЗаданий/Module.bsl +++ b/SSL/src/CommonModules/ОчередьЗаданий/Module.bsl @@ -109,8 +109,7 @@ ОписаниеОтбора.Значение, ОписаниеПараметра, ПолучатьРазделенные, - ПолучатьНеразделенные - ); + ПолучатьНеразделенные); КонецЕсли; @@ -128,8 +127,7 @@ КлючИЗначение.Значение, ОписаниеПараметра, ПолучатьРазделенные, - ПолучатьНеразделенные - ); + ПолучатьНеразделенные); КонецЕсли; КонецЕсли; @@ -339,12 +337,11 @@ СтандартнаяОбработка = Истина; Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); - Модуль.ПриОпределенииЗапланированногоМоментаЗапуска( + МодульОчередьЗаданийСлужебныйРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); + МодульОчередьЗаданийСлужебныйРазделениеДанных.ПриОпределенииЗапланированногоМоментаЗапуска( ПараметрыЗадания, ПланируемыйМоментЗапуска, - СтандартнаяОбработка - ); + СтандартнаяОбработка); КонецЕсли; @@ -354,9 +351,12 @@ ПараметрыЗадания.Вставить("ЗапланированныйМоментЗапуска", ПланируемыйМоментЗапуска); + УказанМоментЗапуска = Истина; + Иначе ПараметрыЗадания.Вставить("ЗапланированныйМоментЗапуска", ТекущаяУниверсальнаяДата()); + УказанМоментЗапуска = Ложь; КонецЕсли; @@ -381,8 +381,8 @@ СтандартнаяОбработка = Истина; Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); - ПереопределенныйСправочник = Модуль.ПриВыбореСправочникаДляЗадания(ПараметрыЗадания); + МодульОчередьЗаданийСлужебныйРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); + ПереопределенныйСправочник = МодульОчередьЗаданийСлужебныйРазделениеДанных.ПриВыбореСправочникаДляЗадания(ПараметрыЗадания); Если ПереопределенныйСправочник <> Неопределено Тогда СправочникДляЗадания = ПереопределенныйСправочник; КонецЕсли; @@ -400,7 +400,9 @@ КонецЕсли; КонецЦикла; - Если Задание.Использование Тогда + Если Задание.Использование + И (УказанМоментЗапуска ИЛИ ПараметрыЗадания.Расписание = Неопределено) Тогда + Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.Запланировано; Иначе Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.НеЗапланировано; @@ -502,12 +504,11 @@ СтандартнаяОбработка = Истина; Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); - Модуль.ПриОпределенииЗапланированногоМоментаЗапуска( + МодульОчередьЗаданийСлужебныйРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); + МодульОчередьЗаданийСлужебныйРазделениеДанных.ПриОпределенииЗапланированногоМоментаЗапуска( ПараметрыЗадания, ЗапланированныйМоментЗапуска, - СтандартнаяОбработка - ); + СтандартнаяОбработка); КонецЕсли; @@ -517,6 +518,9 @@ ПараметрыЗадания.Вставить("ЗапланированныйМоментЗапуска", ЗапланированныйМоментЗапуска); + УказанМоментЗапуска = Истина; + Иначе + УказанМоментЗапуска = Ложь; КонецЕсли; // Типы сохраняемые в хранилище значения @@ -530,6 +534,13 @@ ПараметрыЗадания.Вставить("Расписание", Новый ХранилищеЗначения(ПараметрыЗадания.Расписание)); КонецЕсли; + // Перепланирование задания с расписанием + Если НЕ ПараметрыЗадания.Свойство("ЗапланированныйМоментЗапуска", ЗапланированныйМоментЗапуска) + И ПараметрыЗадания.Свойство("Расписание") Тогда + + ПараметрыЗадания.Вставить("ЗапланированныйМоментЗапуска", ЗапланированныйМоментЗапуска); + КонецЕсли; + // Блокировка записи задания ЗаблокироватьДанныеДляРедактирования(Идентификатор); @@ -556,7 +567,11 @@ КонецЕсли; КонецЦикла; - Если Задание.Использование Тогда + Если Задание.Использование + И (УказанМоментЗапуска + ИЛИ НЕ ПараметрыЗадания.Свойство("Расписание") + ИЛИ ПараметрыЗадания.Расписание = Неопределено) Тогда + Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.Запланировано; Иначе Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.НеЗапланировано; diff --git a/SSL/src/CommonModules/ОчередьЗаданийПереопределяемый/Module.bsl b/SSL/src/CommonModules/ОчередьЗаданийПереопределяемый/Module.bsl index f81361c56..a0b2d836d 100644 --- a/SSL/src/CommonModules/ОчередьЗаданийПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ОчередьЗаданийПереопределяемый/Module.bsl @@ -32,6 +32,28 @@ +КонецПроцедуры + +// Заполняет соответствие методов обработчиков ошибок псевдонимам методов, при возникновении +// ошибок в которых они вызываются. +// +// Параметры: +// ОбработчикиОшибок - Соответствие +// Ключ - Псевдоним метода, например ОчиститьОбластьДанных +// Значение - Имя метода - обработчика ошибок, для вызова при возникновении ошибки. +// Обработчик ошибок вызывается в случае завершения выполнения исходного задания +// с ошибкой. Обработчик ошибок вызывается в той же области данных, что и исходное +// задание. +// Метод обработчика ошибок считается разрешенным к вызову механизмами очереди. +// Параметры обработчика ошибок: +// ПараметрыЗадания - Структура - параметры задания очереди +// Параметры +// НомерПопытки +// КоличествоПовторовПриАварийномЗавершении +// ДатаНачалаПоследнегоЗапуска +// +Процедура ПриОпределенииОбработчиковОшибок(ОбработчикиОшибок) Экспорт + КонецПроцедуры // Формирует таблицу регламентных заданий diff --git a/SSL/src/CommonModules/ОчередьЗаданийСлужебный/Module.bsl b/SSL/src/CommonModules/ОчередьЗаданийСлужебный/Module.bsl index 041553977..bc26c9f26 100644 --- a/SSL/src/CommonModules/ОчередьЗаданийСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ОчередьЗаданийСлужебный/Module.bsl @@ -56,6 +56,7 @@ // Серверные события: // ПриПолученииСпискаШаблонов // ПриОпределенииПсевдонимовОбработчиков +// ПриОпределенииОбработчиковОшибок // ПриОпределенииИспользованияРегламентныхЗаданий // // См. описание этой же процедуры в модуле СтандартныеПодсистемыСервер. @@ -92,6 +93,33 @@ // (То же, что ОчередьЗаданийПереопределяемый.ПолучитьРазрешенныеМетодыОчередиЗаданий). СерверныеСобытия.Добавить( "СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий\ПриОпределенииПсевдонимовОбработчиков"); + + // Заполняет соответствие методов обработчиков ошибок псевдонимам методов, при возникновении + // ошибок в которых они вызываются. + // + // Параметры: + // ОбработчикиОшибок - Соответствие + // Ключ - Псевдоним метода, например ОчиститьОбластьДанных + // Значение - Имя метода - обработчика ошибок, для вызова при возникновении ошибки. + // Обработчик ошибок вызывается в случае завершения выполнения исходного задания + // с ошибкой. Обработчик ошибок вызывается в той же области данных, что и исходное + // задание. + // Метод обработчика ошибок считается разрешенным к вызову механизмами очереди. + // Параметры обработчика ошибок: + // ПараметрыЗадания - Структура - параметры задания очереди + // Параметры + // НомерПопытки + // КоличествоПовторовПриАварийномЗавершении + // ДатаНачалаПоследнегоЗапуска + // ИнформацияОбОшибке - ИнформацияОбОшибке - описание ошибки, произошедшей при + // выполнении задания + // + // Синтаксис: + // Процедура ПриОпределенииОбработчиковОшибок(ОбработчикиОшибок) Экспорт + // + // (То же, что ОчередьЗаданийПереопределяемый.ПриОпределенииОбработчиковОшибок). + СерверныеСобытия.Добавить( + "СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий\ПриОпределенииОбработчиковОшибок"); // Формирует таблицу регламентных заданий с признаком использования в модели сервиса // @@ -342,15 +370,24 @@ | Очередь.НомерПопытки, | Очередь.Шаблон КАК Шаблон, | ЕСТЬNULL(Очередь.Шаблон.Ссылка, НЕОПРЕДЕЛЕНО) КАК СсылкаШаблона, + | ЕСТЬNULL(ЧасовыеПояса.Значение, """") КАК ЧасовойПояс, + | ВЫБОР + | КОГДА Очередь.Шаблон = ЗНАЧЕНИЕ(Справочник.ШаблоныЗаданийОчереди.ПустаяСсылка) + | ТОГДА Очередь.Расписание + | ИНАЧЕ Очередь.Шаблон.Расписание + | КОНЕЦ КАК Расписание, | ВЫБОР | КОГДА Очередь.Шаблон = ЗНАЧЕНИЕ(Справочник.ШаблоныЗаданийОчереди.ПустаяСсылка) | ТОГДА Очередь.ИмяМетода | ИНАЧЕ Очередь.Шаблон.ИмяМетода | КОНЕЦ КАК ИмяМетода, | Очередь.Параметры, - | Очередь.ДатаНачалаПоследнегоЗапуска + | Очередь.ДатаНачалаПоследнегоЗапуска, + | Очередь.ДатаЗавершенияПоследнегоЗапуска |ИЗ %1 КАК ОЧЕРЕДЬ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.БлокировкиСеансовОбластейДанных КАК Блокировки | ПО Очередь.ОбластьДанныхВспомогательныеДанные = Блокировки.ОбластьДанныхВспомогательныеДанные + | ЛЕВОЕ СОЕДИНЕНИЕ Константа.ЧасовойПоясОбластиДанных КАК ЧасовыеПояса + | ПО Очередь.ОбластьДанныхВспомогательныеДанные = ЧасовыеПояса.ОбластьДанныхВспомогательныеДанные |ГДЕ | Очередь.Использование | И Очередь.ЗапланированныйМоментЗапуска <= &ТекущаяУниверсальнаяДата @@ -375,9 +412,12 @@ | Очередь.НомерПопытки, | НЕОПРЕДЕЛЕНО КАК Шаблон, | НЕОПРЕДЕЛЕНО КАК СсылкаШаблона, + | """" КАК ЧасовойПояс, + | Очередь.Расписание КАК Расписание, | Очередь.ИмяМетода КАК ИмяМетода, | Очередь.Параметры, - | Очередь.ДатаНачалаПоследнегоЗапуска + | Очередь.ДатаНачалаПоследнегоЗапуска, + | Очередь.ДатаЗавершенияПоследнегоЗапуска |ИЗ %1 КАК ОЧЕРЕДЬ |ГДЕ | Очередь.Использование @@ -399,9 +439,12 @@ | ВложенныйЗапрос.НомерПопытки, | ВложенныйЗапрос.Шаблон, | ВложенныйЗапрос.СсылкаШаблона, + | ВложенныйЗапрос.ЧасовойПояс, + | ВложенныйЗапрос.Расписание, | ВложенныйЗапрос.ИмяМетода, | ВложенныйЗапрос.Параметры, - | ВложенныйЗапрос.ДатаНачалаПоследнегоЗапуска + | ВложенныйЗапрос.ДатаНачалаПоследнегоЗапуска, + | ВложенныйЗапрос.ДатаЗавершенияПоследнегоЗапуска |ИЗ | (" + ТекстЗапроса + ") КАК ВложенныйЗапрос | @@ -436,17 +479,20 @@ И Выборка.ОбластьДанных <> -1 И МодульРаботаВМоделиСервиса.ОбластьДанныхЗаблокирована(Выборка.ОбластьДанных) Тогда + РазблокироватьДанныеДляРедактирования(Выборка.Идентификатор); + // Область заблокирована, перейти к следующей записи Продолжить; КонецЕсли; Если ЗначениеЗаполнено(Выборка.Шаблон) - И Выборка.СсылкаШаблона = Неопределено Тогда + И Выборка.СсылкаШаблона = Неопределено Тогда ШаблонСообщения = НСтр("ru = 'На найден шаблон задания очереди с идентификатором %1'", Метаданные.ОсновнойЯзык.КодЯзыка); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Выборка.Шаблон); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь заданий. Выполнение'", Метаданные.ОсновнойЯзык.КодЯзыка), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь заданий. Выполнение'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -467,7 +513,47 @@ Возврат; КонецЕсли; - ВыполнитьЗаданиеОчереди(Выборка.Идентификатор, ИсполняющееФоновоеЗадание, Выборка.Шаблон, Выборка.ИмяМетода); + Расписание = Выборка.Расписание.Получить(); + Если Расписание <> Неопределено Тогда + // Проверка попадания в допустимые интервалы очереди + ЧасовойПояс = Выборка.ЧасовойПояс; + + Если ПустаяСтрока(ЧасовойПояс) Тогда + ЧасовойПояс = Неопределено; + КонецЕсли; + + ВремяОбласти = МестноеВремя(ТекущаяУниверсальнаяДата(), ЧасовойПояс); + Просрочено = НЕ Расписание.ТребуетсяВыполнение(ВремяОбласти); + Иначе + Просрочено = Ложь; + КонецЕсли; + + Если Просрочено Тогда + // Требуется перепланировать задание + НачатьТранзакцию(); + Попытка + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить(Выборка.Идентификатор.Метаданные().ПолноеИмя()); + ЭлементБлокировки.УстановитьЗначение("Ссылка", Выборка.Идентификатор); + + Если Выборка.ОбластьДанных <> -1 Тогда + ОбщегоНазначения.УстановитьРазделениеСеанса(Истина, Выборка.ОбластьДанных); + КонецЕсли; + Блокировка.Заблокировать(); + + Задание = Выборка.Идентификатор.ПолучитьОбъект(); + Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.НеЗапланировано; + Задание.Записать(); + ЗафиксироватьТранзакцию(); + Исключение + ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); + Иначе + ВыполнитьЗаданиеОчереди(Выборка.Идентификатор, ИсполняющееФоновоеЗадание, Выборка.Шаблон, Выборка.ИмяМетода); + КонецЕсли; РазблокироватьДанныеДляРедактирования(Выборка.Идентификатор); @@ -572,7 +658,9 @@ ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Информация, , Строка(ЗаписьЗадания.УникальныйИдентификатор()), Комментарий + ЗаписьЗадания.ИмяМетода + ";" + - ?(ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() И ОбщегоНазначения.ЭтоРазделенныйОбъектМетаданных(ЗаписьЗадания.Метаданные().ПолноеИмя(), ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных()), Формат(ЗаписьЗадания.ОбластьДанныхВспомогательныеДанные, "ЧН=0; ЧГ="), "-1")); + ?(ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() И ОбщегоНазначения.ЭтоРазделенныйОбъектМетаданных(ЗаписьЗадания.Метаданные().ПолноеИмя(), + ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных()), + Формат(ЗаписьЗадания.ОбластьДанныхВспомогательныеДанные, "ЧН=0; ЧГ="), "-1")); КонецПроцедуры @@ -933,7 +1021,7 @@ Блокировка.Заблокировать(); Если НЕ ОбщегоНазначения.СсылкаСуществует(Выборка.Идентификатор) Тогда - ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); + Блокировка.Заблокировать(); РазблокироватьДанныеДляРедактирования(Выборка.Идентификатор); ОтменитьТранзакцию(); Возврат; @@ -943,7 +1031,8 @@ // Если состояние задания Выполняется, но данные не заблокированы для редактирования - значит оно уже не выполняется Если Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.Выполняется Тогда - ЗаписьКонтроляВыполнения(НСтр("ru = 'Очередь регламентных заданий.Завершено с ошибками'"), Выборка.Идентификатор, + ЗаписьКонтроляВыполнения(НСтр("ru = 'Очередь регламентных заданий.Завершено с ошибками'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), Выборка.Идентификатор, НСтр("ru = 'Исполняющее задание было принудительно завершено'")); КонецЕсли; @@ -956,12 +1045,12 @@ Метаданные.ОсновнойЯзык.КодЯзыка); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Задание.Шаблон); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь заданий. Планирование'", Метаданные.ОсновнойЯзык.КодЯзыка), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь заданий. Планирование'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , - ТекстСообщения - ); + ТекстСообщения); ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); РазблокироватьДанныеДляРедактирования(Выборка.Идентификатор); @@ -1014,12 +1103,12 @@ ШаблонСообщения = НСтр("ru = 'Для шаблон заданий очереди %1 не найдено расписание'", Метаданные.ОсновнойЯзык.КодЯзыка); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Задание.Шаблон); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь заданий. Планирование'", Метаданные.ОсновнойЯзык.КодЯзыка), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь заданий. Планирование'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , - ТекстСообщения - ); + ТекстСообщения); ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); ОтменитьТранзакцию(); @@ -1056,8 +1145,8 @@ ОбластьДанных = Неопределено; Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); - ПереопределеннаяОбластьДанных = Модуль.ОпределитьОбластьДанныхДляЗадания(Ссылка); + МодульОчередьЗаданийСлужебныйРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); + ПереопределеннаяОбластьДанных = МодульОчередьЗаданийСлужебныйРазделениеДанных.ОпределитьОбластьДанныхДляЗадания(Ссылка); Если ПереопределеннаяОбластьДанных <> Неопределено Тогда ОбластьДанных = ПереопределеннаяОбластьДанных; КонецЕсли; @@ -1111,8 +1200,10 @@ // Выполнение задания ВыполненоУспешно = Ложь; + ИнформацияОбОшибкеВыполненияЗадания = Неопределено; Попытка - ЗаписьКонтроляВыполнения(НСтр("ru = 'Очередь регламентных заданий.Старт'"), Ссылка); + ЗаписьКонтроляВыполнения(НСтр("ru = 'Очередь регламентных заданий.Старт'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), Ссылка); Если ЗначениеЗаполнено(Шаблон) Тогда ОбщегоНазначения.ВыполнитьБезопасно(ИмяМетода); @@ -1130,16 +1221,17 @@ ШаблонСообщения = НСтр("ru = 'По завершении выполнения обработчика %1 не была закрыта транзакция'", Метаданные.ОсновнойЯзык.КодЯзыка); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Задание.ИмяМетода); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь регламентных заданий. Выполнение'", Метаданные.ОсновнойЯзык.КодЯзыка), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь регламентных заданий. Выполнение'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , ИсполняющееФоновоеЗадание, - ТекстСообщения - ); + ТекстСообщения); КонецЕсли; - ЗаписьКонтроляВыполнения(НСтр("ru = 'Очередь регламентных заданий.Завершено успешно'"), Ссылка); + ЗаписьКонтроляВыполнения(НСтр("ru = 'Очередь регламентных заданий.Завершено успешно'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), Ссылка); Исключение @@ -1147,16 +1239,66 @@ ОтменитьТранзакцию(); КонецЦикла; - ЗаписьКонтроляВыполнения(НСтр("ru = 'Очередь регламентных заданий.Завершено с ошибками'"), Ссылка, + ЗаписьКонтроляВыполнения(НСтр("ru = 'Очередь регламентных заданий.Завершено с ошибками'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), Ссылка, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь регламентных заданий. Выполнение'", Метаданные.ОсновнойЯзык.КодЯзыка), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Очередь регламентных заданий. Выполнение'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , ИсполняющееФоновоеЗадание, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + ИнформацияОбОшибкеВыполненияЗадания = ИнформацияОбОшибке(); КонецПопытки; + + Если НЕ ВыполненоУспешно Тогда + // Вызов обработчиков ошибок + ОбработчикОшибок = + ОчередьЗаданийСлужебныйПовтИсп.СоответствиеОбработчиковОшибокПсевдонимам().Получить(ВРег(ИмяМетода)); + + Если ОбработчикОшибок <> Неопределено Тогда + + ПараметрыЗадания = Новый Структура; + ПараметрыЗадания.Вставить("Параметры", Задание.Параметры.Получить()); + ПараметрыЗадания.Вставить("НомерПопытки", Задание.НомерПопытки); + ПараметрыЗадания.Вставить("КоличествоПовторовПриАварийномЗавершении", Задание.КоличествоПовторовПриАварийномЗавершении); + ПараметрыЗадания.Вставить("ДатаНачалаПоследнегоЗапуска", Задание.ДатаНачалаПоследнегоЗапуска); + + ПараметрыОбработчикаОшибок = Новый Массив; + ПараметрыОбработчикаОшибок.Добавить(ПараметрыЗадания); + ПараметрыОбработчикаОшибок.Добавить(ИнформацияОбОшибкеВыполненияЗадания); + + Попытка + ОбщегоНазначения.ВыполнитьБезопасно(ОбработчикОшибок, ПараметрыОбработчикаОшибок); + Исключение + Пока ТранзакцияАктивна() Цикл + ОтменитьТранзакцию(); + КонецЦикла; + + ШаблонКомментария = НСтр("ru = 'Ошибка при выполнении обработчика ошибок + |Псевдоним метода: %1 + |Метод обработчика ошибок: %2 + |По причине: + |%3'"); + ТекстКомментария = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонКомментария, + ИмяМетода, + ОбработчикОшибок, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Очередь регламентных заданий. Ошибка обработчика ошибок'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, + , + , + ТекстКомментария); + КонецПопытки; + КонецЕсли; + КонецЕсли; НачатьТранзакцию(); Попытка @@ -1170,6 +1312,7 @@ Задание = Ссылка.ПолучитьОбъект(); Задание.ДатаЗавершенияПоследнегоЗапуска = ТекущаяУниверсальнаяДата(); + Если ВыполненоУспешно Тогда Задание.СостояниеЗадания = Перечисления.СостоянияЗаданий.Завершено; Иначе @@ -1226,6 +1369,8 @@ // Процедура УстановитьИспользованиеРегламентныхЗаданий() Экспорт + ИнвертироватьИспользование = Не ОбщегоНазначенияПовтИсп.РазделениеВключено(); + ТаблицаИспользованияРегламентныхЗаданий = ПолучитьТаблицуИспользованияРегламентныхЗаданий(); Для Каждого Строка Из ТаблицаИспользованияРегламентныхЗаданий Цикл @@ -1233,9 +1378,17 @@ Отбор = Новый Структура("Метаданные", Метаданные.РегламентныеЗадания[Строка.РегламентноеЗадание]); НайденныеРегламентныеЗадания = РегламентныеЗадания.ПолучитьРегламентныеЗадания(Отбор); - Для каждого РегламентноеЗадание Из НайденныеРегламентныеЗадания Цикл - РегламентноеЗадание.Использование = Строка.Использование; - РегламентноеЗадание.Записать(); + Для Каждого РегламентноеЗадание Из НайденныеРегламентныеЗадания Цикл + Если ИнвертироватьИспользование Тогда + ТребуемоеИспользование = Не Строка.Использование; + Иначе + ТребуемоеИспользование = Строка.Использование; + КонецЕсли; + + Если РегламентноеЗадание.Использование <> ТребуемоеИспользование Тогда + РегламентноеЗадание.Использование = ТребуемоеИспользование; + РегламентноеЗадание.Записать(); + КонецЕсли; КонецЦикла; КонецЦикла; @@ -1303,4 +1456,4 @@ КонецПопытки; -КонецПроцедуры +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/CommonModules/ОчередьЗаданийСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/ОчередьЗаданийСлужебныйПовтИсп/Module.bsl index 38aa0b462..52f074bb6 100644 --- a/SSL/src/CommonModules/ОчередьЗаданийСлужебныйПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ОчередьЗаданийСлужебныйПовтИсп/Module.bsl @@ -44,6 +44,35 @@ КонецФункции +// Возвращает соответствие обработчиков ошибок псевдонимам методов, для которых они вызываются +// (в верхнем регистре) +// +// Возвращаемое значение: +// ФиксированноеСоответствие +// Ключ - Псевдоним метода +// Значение - Полное имя метода обработчика +// +Функция СоответствиеОбработчиковОшибокПсевдонимам() Экспорт + + ОбработчикиОшибок = Новый Соответствие; + ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( + "СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий\ПриОпределенииОбработчиковОшибок"); + + Для каждого Обработчик Из ОбработчикиСобытия Цикл + Обработчик.Модуль.ПриОпределенииОбработчиковОшибок(ОбработчикиОшибок); + КонецЦикла; + + ОчередьЗаданийПереопределяемый.ПриОпределенииОбработчиковОшибок(ОбработчикиОшибок); + + Результат = Новый Соответствие; + Для каждого КлючИЗначение Из ОбработчикиОшибок Цикл + Результат.Вставить(ВРег(КлючИЗначение.Ключ), КлючИЗначение.Значение); + КонецЦикла; + + Возврат Новый ФиксированноеСоответствие(Результат); + +КонецФункции + // Возвращает описание параметров заданий очереди // // Возвращаемое значение: @@ -250,8 +279,8 @@ МассивСправочников.Добавить(Справочники.ОчередьЗаданий); Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); - Модуль.ПриЗаполненииСправочниковЗаданий(МассивСправочников); + МодульОчередьЗаданийСлужебныйРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); + МодульОчередьЗаданийСлужебныйРазделениеДанных.ПриЗаполненииСправочниковЗаданий(МассивСправочников); КонецЕсли; Возврат МассивСправочников; diff --git a/SSL/src/CommonModules/ОчередьЗаданийСлужебныйРазделениеДанных/Module.bsl b/SSL/src/CommonModules/ОчередьЗаданийСлужебныйРазделениеДанных/Module.bsl index cf7100648..1049ab97a 100644 --- a/SSL/src/CommonModules/ОчередьЗаданийСлужебныйРазделениеДанных/Module.bsl +++ b/SSL/src/CommonModules/ОчередьЗаданийСлужебныйРазделениеДанных/Module.bsl @@ -79,7 +79,7 @@ // ИнтервалПовтораПриАварийномЗавершении // Расписание // КоличествоПовторовПриАварийномЗавершении -// Результат - Дата (дата и время), запланированный момент запуска для задания. +// Результат = Дата (дата и время), запланированный момент запуска для задания. // СтандартнаяОбработка - Булево, признак необходимости приведения времени задания к часовому // поясу сервера // @@ -397,9 +397,8 @@ Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "1.0.0.0"; + Обработчик.НачальноеЗаполнение = Истина; Обработчик.Процедура = "ОчередьЗаданийСлужебныйРазделениеДанных.СоздатьЗаданияОчередиПоШаблонамВТекущейОбласти"; - Обработчик.Приоритет = 75; Обработчик.МонопольныйРежим = Истина; Обработчик = Обработчики.Добавить(); diff --git a/SSL/src/CommonModules/ПерепрефиксацияОбъектов/Module.bsl b/SSL/src/CommonModules/ПерепрефиксацияОбъектов/Module.bsl index 5ab034c90..f01173d60 100644 --- a/SSL/src/CommonModules/ПерепрефиксацияОбъектов/Module.bsl +++ b/SSL/src/CommonModules/ПерепрефиксацияОбъектов/Module.bsl @@ -125,8 +125,7 @@ Знач НовыйПрефикс, Знач СДаты = Неопределено, Знач ПредыдущийПрефиксИнформационнойБазы = Неопределено, - СчетчикОбработанныхОбъектов = 0 - ) + СчетчикОбработанныхОбъектов = 0) Если ТранзакцияАктивна() Тогда @@ -164,8 +163,7 @@ Знач НовыйПрефикс, Знач СДаты = Неопределено, Знач ПредыдущийПрефиксИнформационнойБазы = Неопределено, - СчетчикОбработанныхОбъектов = 0 - ) + СчетчикОбработанныхОбъектов = 0) Если ТранзакцияАктивна() Тогда @@ -203,8 +201,7 @@ Знач НовыйПрефикс, Знач СДаты = Неопределено, Знач ПредыдущийПрефиксИнформационнойБазы = Неопределено, - СчетчикОбработанныхОбъектов = 0 - ) + СчетчикОбработанныхОбъектов = 0) СчетчикОбработанныхОбъектов = 0; @@ -216,8 +213,7 @@ Знач НовыйПрефикс, Знач СДаты = Неопределено, Знач ПредыдущийПрефиксИнформационнойБазы = Неопределено, - СчетчикОбработанныхОбъектов = 0 - ) + СчетчикОбработанныхОбъектов = 0) СчетчикОбработанныхОбъектов = 0; @@ -232,8 +228,7 @@ Знач СДаты = Неопределено, Знач ПредыдущийПрефиксИнформационнойБазы = Неопределено, Знач ОбрабатыватьВсеДанные = Ложь, - СчетчикОбработанныхОбъектов - ) + СчетчикОбработанныхОбъектов) ПроверитьВозможностьУстановкиПрефикса(); @@ -261,8 +256,7 @@ ОписаниеОбъекта.ЭтоДокумент, СтандартныйПрефикс, ПредыдущийПрефиксИнформационнойБазы, - ОбрабатыватьВсеДанные - ); + ОбрабатыватьВсеДанные); Если Выборка.Пустой() Тогда Продолжить; @@ -351,8 +345,7 @@ УстановитьПрефиксИнформационнойБазы(ПредыдущийПрефиксИнформационнойБазы); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПерепрефиксацияОбъектов(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; КонецПопытки; @@ -363,8 +356,7 @@ Знач СДаты = Неопределено, Знач ПредыдущийПрефиксИнформационнойБазы = Неопределено, Знач ОбрабатыватьВсеДанные = Ложь, - СчетчикОбработанныхОбъектов - ) + СчетчикОбработанныхОбъектов) ПроверитьВозможностьУстановкиПрефикса(); @@ -397,8 +389,7 @@ ПредыдущийПрефиксИнформационнойБазы, ОбрабатыватьВсеДанные, НовыйПрефиксПолный, - СчетчикОбработанныхОбъектов - ); + СчетчикОбработанныхОбъектов); КонецЦикла; @@ -413,8 +404,7 @@ ПредыдущийПрефиксИнформационнойБазы, ОбрабатыватьВсеДанные, НовыйПрефиксПолный, - СчетчикОбработанныхОбъектов - ); + СчетчикОбработанныхОбъектов); КонецЦикла; @@ -427,8 +417,7 @@ УстановитьПрефиксИнформационнойБазы(ПредыдущийПрефиксИнформационнойБазы); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПерепрефиксацияОбъектов(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; КонецПопытки; @@ -489,8 +478,7 @@ ОписаниеОбъекта.ЭтоДокумент, СтандартныйПрефикс, ПредыдущийПрефиксИнформационнойБазы, - ОбрабатыватьВсеДанные - ); + ОбрабатыватьВсеДанные); Если Выборка.Пустой() Тогда Продолжить; @@ -649,8 +637,7 @@ СтандартныйПрефикс, ПредыдущийПрефиксИнформационнойБазы, ОбрабатыватьВсеДанные, - Истина - ); + Истина); Если Выборка.Пустой() Тогда Продолжить; @@ -855,8 +842,7 @@ УстановитьПрефиксИнформационнойБазы(ПредыдущийПрефиксИнформационнойБазы); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПерепрефиксацияОбъектов(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; КонецПопытки; @@ -869,8 +855,7 @@ Знач СтандартныйПрефикс, Знач ПредыдущийПрефикс, Знач ОбрабатыватьВсеДанные, - Знач ВыбиратьОрганизацию = Ложь - ) + Знач ВыбиратьОрганизацию = Ложь) Запрос = Новый Запрос; @@ -999,8 +984,7 @@ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ПрефиксОрганизацииЗадан]", ?(ВыбиратьОрганизацию, "ВЫБОР КОГДА Таблица.Организация.Префикс = """" ТОГДА Ложь ИНАЧЕ Истина КОНЕЦ КАК ПрефиксОрганизацииЗадан,", - "Ложь КАК ПрефиксОрганизацииЗадан,") - ); + "Ложь КАК ПрефиксОрганизацииЗадан,")); ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ВыборкаДаты]", ?(ЭтоДокумент, "Таблица.Дата КАК Дата,", "Неопределено КАК Дата,")); Запрос.Текст = ТекстЗапроса; @@ -1031,13 +1015,11 @@ Если КоличествоЛидирующихНулей < 0 Тогда СтрокаСообщения = НСтр("ru = 'Преобразование %1 объекта %2 не может быть выполнено. - |Недостаточная длина %1. Минимальная длина %1 объекта должна составлять %3 символов.'" - ); + |Недостаточная длина %1. Минимальная длина %1 объекта должна составлять %3 символов.'"); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ?(ЭтоДокумент, НСтр("ru = 'номера'"), НСтр("ru = 'кода'")), Строка(Объект), - Строка(СтрДлина(НовыйПолныйПрефикс) + СтрДлина(КодСтрокой)) - ); + Строка(СтрДлина(НовыйПолныйПрефикс) + СтрДлина(КодСтрокой))); ВызватьИсключение СтрокаСообщения; КонецЕсли; @@ -1071,13 +1053,11 @@ Если КоличествоЛидирующихНулей < 0 Тогда СтрокаСообщения = НСтр("ru = 'Преобразование %1 объекта %2 не может быть выполнено. - |Недостаточная длина %1. Минимальная длина %1 объекта должна составлять %3 символов.'" - ); + |Недостаточная длина %1. Минимальная длина %1 объекта должна составлять %3 символов.'"); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ?(ЭтоДокумент, НСтр("ru = 'номера'"), НСтр("ru = 'кода'")), Строка(Объект), - Строка(СтрДлина(НовыйПолныйПрефикс) + СтрДлина(БазовыйКод)) - ); + Строка(СтрДлина(НовыйПолныйПрефикс) + СтрДлина(БазовыйКод))); ВызватьИсключение СтрокаСообщения; КонецЕсли; @@ -1410,8 +1390,7 @@ Знач ПредыдущийПрефиксИнформационнойБазы, Знач ОбрабатыватьВсеДанные, Знач НовыйПрефиксПолный, - СчетчикОбработанныхОбъектов - ) + СчетчикОбработанныхОбъектов) Выборка = ВыборкаДанных( ИмяОбъекта, @@ -1419,8 +1398,7 @@ ЭтоДокумент, Истина, ПредыдущийПрефиксИнформационнойБазы, - ОбрабатыватьВсеДанные - ); + ОбрабатыватьВсеДанные); Если Выборка.Пустой() Тогда Возврат; @@ -1523,8 +1501,8 @@ Процедура ПриОпределенииПрефиксаИнформационнойБазы(ПрефиксИнформационнойБазы) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); - ПрефиксИнформационнойБазы = Модуль.ПрефиксИнформационнойБазы(); + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + ПрефиксИнформационнойБазы = МодульОбменДаннымиСервер.ПрефиксИнформационнойБазы(); Иначе ПрефиксИнформационнойБазы = ""; КонецЕсли; @@ -1553,8 +1531,8 @@ Процедура УстановитьПрефиксИнформационнойБазы(Знач Префикс) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); - Модуль.УстановитьПрефиксИнформационнойБазы(Префикс); + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + МодульОбменДаннымиСервер.УстановитьПрефиксИнформационнойБазы(Префикс); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/ПолнотекстовыйПоискКлиент/Module.bsl b/SSL/src/CommonModules/ПолнотекстовыйПоискКлиент/Module.bsl index be5c75136..8dda3782a 100644 --- a/SSL/src/CommonModules/ПолнотекстовыйПоискКлиент/Module.bsl +++ b/SSL/src/CommonModules/ПолнотекстовыйПоискКлиент/Module.bsl @@ -32,8 +32,8 @@ Процедура ПолнотекстовыйПоискПриОткрытииОбъекта(Значение, СтандартнаяОбработка) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.БизнесПроцессыИЗадачи") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БизнесПроцессыИЗадачиКлиент"); - Модуль.ПолнотекстовыйПоискПриОткрытииОбъекта(Значение, СтандартнаяОбработка); + МодульБизнесПроцессыИЗадачиКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БизнесПроцессыИЗадачиКлиент"); + МодульБизнесПроцессыИЗадачиКлиент.ПолнотекстовыйПоискПриОткрытииОбъекта(Значение, СтандартнаяОбработка); КонецЕсли; КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl b/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl index 3193be3f5..b1ef68b1e 100644 --- a/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl +++ b/SSL/src/CommonModules/ПолнотекстовыйПоискСервер/Module.bsl @@ -33,8 +33,7 @@ // или индекс обновлялся менее 5 минут назад. НЕ ОперацииРазрешены() ИЛИ ПолнотекстовыйПоиск.ИндексАктуален() - ИЛИ ТекущаяДата() < ПолнотекстовыйПоиск.ДатаАктуальности() + 300 // Исключение из правила ТекущаяДатаСеанса(). - ); + ИЛИ ТекущаяДата() < ПолнотекстовыйПоиск.ДатаАктуальности() + 300); // Исключение из правила ТекущаяДатаСеанса(). КонецФункции @@ -66,7 +65,7 @@ Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "1.0.0.0"; + Обработчик.НачальноеЗаполнение = Истина; Обработчик.Процедура = "ПолнотекстовыйПоискСервер.ИнициализироватьФункциональнуюОпциюПолнотекстовыйПоиск"; Обработчик.ОбщиеДанные = Истина; @@ -155,8 +154,7 @@ ТекстДляЖурнала = КомментарийСПараметрами; Если Параметр1 <> Неопределено Тогда ТекстДляЖурнала = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - ТекстДляЖурнала, Параметр1, Параметр2, Параметр3 - ); + ТекстДляЖурнала, Параметр1, Параметр2, Параметр3); КонецЕсли; Если ТипЗнч(ИнформацияОбОшибке) = Тип("ИнформацияОбОшибке") Тогда ТекстДляЖурнала = ТекстДляЖурнала + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке); @@ -167,10 +165,9 @@ // Запись в журнал регистрации ЗаписьЖурналаРегистрации( - НСтр("ru = 'Полнотекстовое индексирование'"), + НСтр("ru = 'Полнотекстовое индексирование'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурнала, , , - ТекстДляЖурнала - ); + ТекстДляЖурнала); КонецПроцедуры diff --git a/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаКлиент/Module.bsl b/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаКлиент/Module.bsl index b865cef14..43bc78e3f 100644 --- a/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаКлиент/Module.bsl +++ b/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаКлиент/Module.bsl @@ -67,8 +67,7 @@ Таймаут, ЗащищенноеСоединение, ПассивноеСоединение, - НастройкаСохранения - ); + НастройкаСохранения); Возврат Результат; diff --git a/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаКлиентСервер/Module.bsl b/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаКлиентСервер/Module.bsl index 32912d5ea..236ba1324 100644 --- a/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ПолучениеФайловИзИнтернетаКлиентСервер/Module.bsl @@ -483,14 +483,19 @@ #Если Сервер ИЛИ ВнешнееСоединение Тогда ЗаписьЖурналаРегистрации( - НСтр("ru = 'Получение файлов из Интернета'"), + СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , - СообщениеОбОшибке - ); + СообщениеОбОшибке); #Иначе - ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(НСтр("ru = 'Получение файлов из Интернета'"), + ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), "Ошибка", СообщениеОбОшибке,,Истина); #КонецЕсли КонецПроцедуры +Функция СобытиеЖурналаРегистрации() + + Возврат НСтр("ru = 'Получение файлов из Интернета'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); + +КонецФункции + diff --git a/SSL/src/CommonModules/Пользователи/Module.bsl b/SSL/src/CommonModules/Пользователи/Module.bsl index 2b93614bc..8059634f5 100644 --- a/SSL/src/CommonModules/Пользователи/Module.bsl +++ b/SSL/src/CommonModules/Пользователи/Module.bsl @@ -45,7 +45,6 @@ // // ПроверятьПраваАдминистрированияСистемы - Булево - если задано Истина, тогда // проверяется наличие роли для администрирования системы. -// У пустого пользователя - роль ПолныеПрава для базовых конфигураций. // Начальное значение: Ложь. // // УчитыватьПривилегированныйРежим - Булево - если задано Истина, тогда @@ -1542,7 +1541,8 @@ Если ЗаписатьВЖурнал Тогда ЗаписьЖурналаРегистрации( - НСтр("ru = 'Пользователи.Ошибка записи пользователя ИБ'"), + НСтр("ru = 'Пользователи.Ошибка записи пользователя ИБ'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , diff --git a/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl b/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl index 3a80eb8d9..969c96de6 100644 --- a/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ПользователиСлужебный/Module.bsl @@ -125,7 +125,10 @@ СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовНачальногоОбразаПланаОбмена"].Добавить( "ПользователиСлужебный"); - + + СерверныеОбработчики["СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииПараметровРаботыКлиента"].Добавить( + "ПользователиСлужебный"); + КонецПроцедуры /////////////////////////////////////////////////////////////////////////////// @@ -187,6 +190,7 @@ ТекущийПользователь = СвойстваНеуказанногоПользователя.Ссылка; КонецЕсли; Иначе + ИмяПользователя = ТекущийПользовательИБ.Имя; ИдентификаторПользователяИБ = ТекущийПользовательИБ.УникальныйИдентификатор; Пользователи.НайтиНеоднозначныхПользователейИБ(, ИдентификаторПользователяИБ); @@ -231,7 +235,6 @@ Если ЭтоНеразделенныйПользователь ИЛИ Пользователи.ЭтоПолноправныйПользователь( , , Ложь) Тогда - ИмяПользователя = ТекущийПользовательИБ.Имя; ИдентификаторПользователяИБ = ТекущийПользовательИБ.УникальныйИдентификатор; Если ЭтоНеразделенныйПользователь Тогда @@ -465,7 +468,8 @@ ПослеЗаписиАдминистратораПриАвторизации(Комментарий); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Пользователи.Администратор зарегистрирован в справочнике Пользователи'"), + НСтр("ru = 'Пользователи.Администратор зарегистрирован в справочнике Пользователи'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение, Метаданные.Справочники.Пользователи, Пользователь, @@ -531,8 +535,13 @@ Обработчик = Обработчики.Добавить(); Обработчик.Версия = "2.1.3.16"; + Обработчик.НачальноеЗаполнение = Истина; Обработчик.Процедура = "ПользователиСлужебный.ОбновитьПредопределенныеВидыКонтактнойИнформацииПользователей"; + Обработчик = Обработчики.Добавить(); + Обработчик.Версия = "2.1.4.19"; + Обработчик.Процедура = "ПользователиСлужебный.ПеренестиГруппыВнешнихПользователейВКорень"; + КонецПроцедуры // Определяет, что используется нестандартный способ установки ролей пользователям ИБ. @@ -563,24 +572,37 @@ СистемнаяИнформация = Новый СистемнаяИнформация; Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.2.17.0") > 0 Тогда - НастройкиКлиента = Новый НастройкиКлиентскогоПриложения(); - НастройкиКлиента.ОтображатьПанелиНавигацииИДействий = Ложь; - НастройкиКлиента.ОтображатьПанельРазделов = Истина; - НастройкиКлиента.РежимОткрытияФормПриложения = Вычислить("РежимОткрытияФормПриложения.Закладки"); + Такси = Ложь; + Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СистемнаяИнформация.ВерсияПриложения, "8.3.3.0") > 0 Тогда + ИмяСвойства = "РежимСовместимостиИнтерфейса"; + ТекущийРежим = Метаданные[ИмяСвойства]; + Если ТекущийРежим = Метаданные.СвойстваОбъектов[ИмяСвойства].Такси + ИЛИ ТекущийРежим = Метаданные.СвойстваОбъектов[ИмяСвойства].ТаксиРазрешитьВерсия8_2 Тогда + + Такси = Истина; + КонецЕсли; + КонецЕсли; - НастройкиИнтерфейса = Новый НастройкиКомандногоИнтерфейса(); - НастройкиИнтерфейса.ОтображениеПанелиРазделов = Вычислить("ОтображениеПанелиРазделов.Текст"); + Если Не Такси Тогда - ПользователиПереопределяемый.ПриУстановкеНачальныхНастроек( - НастройкиКлиента, - НастройкиИнтерфейса - ); - - ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения", "", - НастройкиКлиента, , ИмяПользователя); - - ХранилищеСистемныхНастроек.Сохранить("Общее/ПанельРазделов/НастройкиКомандногоИнтерфейса", "", - НастройкиИнтерфейса, , ИмяПользователя); + НастройкиКлиента = Новый НастройкиКлиентскогоПриложения(); + НастройкиКлиента.ОтображатьПанелиНавигацииИДействий = Ложь; + НастройкиКлиента.ОтображатьПанельРазделов = Истина; + НастройкиКлиента.РежимОткрытияФормПриложения = Вычислить("РежимОткрытияФормПриложения.Закладки"); + + НастройкиИнтерфейса = Новый НастройкиКомандногоИнтерфейса(); + НастройкиИнтерфейса.ОтображениеПанелиРазделов = Вычислить("ОтображениеПанелиРазделов.Текст"); + + ПользователиПереопределяемый.ПриУстановкеНачальныхНастроек( + НастройкиКлиента, + НастройкиИнтерфейса); + + ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения", "", + НастройкиКлиента, , ИмяПользователя); + + ХранилищеСистемныхНастроек.Сохранить("Общее/ПанельРазделов/НастройкиКомандногоИнтерфейса", "", + НастройкиИнтерфейса, , ИмяПользователя); + КонецЕсли; КонецЕсли; @@ -869,6 +891,23 @@ КонецПроцедуры +// Доопределяет структуру параметров, необходимых для работы клиентского кода +// конфигурации. +// +// Параметры: +// Параметры - Структура, в которую можно вставить параметры работы клиента при запуске. +// Ключ - имя параметра, +// Значение - значение параметра. +// +// Пример использования: +// Параметры.Вставить(<ИмяПараметра>, <Код получения значения параметра>); +// +Процедура ПриДобавленииПараметровРаботыКлиента(Параметры) Экспорт + + Параметры.Вставить("ЭтоПолноправныйПользователь", Пользователи.ЭтоПолноправныйПользователь()); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики подписок на события @@ -1571,7 +1610,8 @@ УстановитьПривилегированныйРежим(Истина); ТекущийПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь(); - Если НЕ ЗначениеЗаполнено(ТекущийПользовательИБ.Имя) Тогда + Если НЕ ЗначениеЗаполнено(ТекущийПользовательИБ.Имя) + И ПользователиИнформационнойБазы.ПолучитьПользователей().Количество() = 0 Тогда Если ТипЗнч(ОписаниеПользователяИБ) = Тип("Структура") Тогда // Проверка перед записью обычного пользователя или пользователя ИБ. @@ -1700,6 +1740,7 @@ Имя = ОписаниеПользователяИБ.Имя; Если ПустаяСтрока(Имя) Тогда + // Хранилище настроек использует только первые 64 символа имени пользователя ИБ. ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Не заполнено Имя (для входа).'"), , @@ -1708,7 +1749,8 @@ Отказ); ИначеЕсли СтрДлина(Имя) > 64 Тогда - // Хранилище настроек использует только первые 64 символа имени пользователя ИБ. + // Аутентификация через web использует символ ":", + // как разделитель имени и пароля пользователя. ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Имя (для входа) превышает 64 символа.'"), , @@ -1717,8 +1759,6 @@ Отказ); ИначеЕсли Найти(Имя, ":") > 0 Тогда - // Аутентификация через web использует символ ":", - // как разделитель имени и пароля пользователя. ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Имя (для входа) содержит запрещенный символ "":"".'"), , @@ -2256,7 +2296,7 @@ Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("ВнешниеПользователи", МассивВнешнихПользователей); - Запрос.УстановитьПараметр("ВсеРоли", ПользователиСлужебный.ВсеРоли().Таблица); + Запрос.УстановитьПараметр("ВсеРоли", ВсеРоли().Таблица); Запрос.УстановитьПараметр("СтарыеРолиВнешнихПользователей", СтарыеРолиВнешнихПользователей); Запрос.УстановитьПараметр("ИспользоватьВнешнихПользователей", ПолучитьФункциональнуюОпцию("ИспользоватьВнешнихПользователей")); @@ -2356,7 +2396,8 @@ Строка(Выборка.ГруппаВнешнихПользователей)); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Пользователи.Роль не найдена в метаданных'"), + НСтр("ru = 'Пользователи.Роль не найдена в метаданных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -3019,11 +3060,9 @@ ОписаниеПользователя = СвободныеПользователи.Найти(ПолноеИмяПользователя, "Наименование"); Если ОписаниеПользователя <> Неопределено Тогда - ОбъектПользователь = ОписаниеПользователя.Ссылка.ПолучитьОбъект(); - ОбъектПользователь.ОбменДанными.Загрузка = Истина; ОбъектПользователь.ИдентификаторПользователяИБ = ПользовательИБ.УникальныйИдентификатор; - ОбъектПользователь.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ОбъектПользователь); КонецЕсли; КонецЦикла; @@ -3067,9 +3106,8 @@ Пока Выборка.Следующий() Цикл ПользовательОбъект = Выборка.Ссылка.ПолучитьОбъект(); - ПользовательОбъект.ОбменДанными.Загрузка = Истина; ПользовательОбъект.Служебный = Истина; - ПользовательОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ПользовательОбъект); КонецЦикла; КонецПроцедуры @@ -3112,8 +3150,7 @@ КонецЕсли; Индекс = Индекс-1; КонецЦикла; - Объект.ОбменДанными.Загрузка = Истина; - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецЦикла; КонецПроцедуры @@ -3132,7 +3169,7 @@ НачатьТранзакцию(); Попытка - + ТаблицаПользователей = Запрос.Выполнить().Выгрузить(); Для Каждого Пользователь Из ТаблицаПользователей Цикл @@ -3142,7 +3179,7 @@ МенеджерЗаписи.ИдентификаторПользователяИБ = Пользователь.ИдентификаторПользователяИБ; МенеджерЗаписи.ПорядковыйНомер = НовыйПорядковыйНомер; МенеджерЗаписи.Записать(); - + КонецЦикла; ЗафиксироватьТранзакцию(); @@ -3174,9 +3211,8 @@ Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ПользовательОбъект = Выборка.Ссылка.ПолучитьОбъект(); - ПользовательОбъект.ОбменДанными.Загрузка = Истина; ПользовательОбъект.Наименование = Пользователи.ПолноеИмяСлужебногоПользователя(Выборка.ИдентификаторПользователяИБ); - ПользовательОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ПользовательОбъект); КонецЦикла; КонецПроцедуры @@ -3191,6 +3227,28 @@ КонецПроцедуры +// Вызывается при переходе на версию конфигурации 2.1.4.19 +Процедура ПеренестиГруппыВнешнихПользователейВКорень() Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыВнешнихПользователей.Ссылка + |ИЗ + | Справочник.ГруппыВнешнихПользователей КАК ГруппыВнешнихПользователей + |ГДЕ + | ГруппыВнешнихПользователей.Родитель.ВсеОбъектыАвторизации = ИСТИНА"; + + Результат = Запрос.Выполнить().Выгрузить(); + + Для Каждого СтрокаГруппаПользователей Из Результат Цикл + ГруппаПользователей = СтрокаГруппаПользователей.Ссылка.ПолучитьОбъект(); + ГруппаПользователей.Родитель = Справочники.ГруппыВнешнихПользователей.ПустаяСсылка(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ГруппаПользователей); + КонецЦикла; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов в другие подсистемы @@ -3205,8 +3263,8 @@ Процедура ПослеЗаписиАдминистратораПриАвторизации(Комментарий) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); - Модуль.ПослеЗаписиАдминистратораПриАвторизации(Комментарий); + МодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПослеЗаписиАдминистратораПриАвторизации(Комментарий); КонецЕсли; КонецПроцедуры @@ -3232,8 +3290,8 @@ ДополнительныеПараметрыКоманднойСтроки) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АвтономнаяРаботаСлужебный"); - Модуль.ПередАвторизациейТекущегоПользователяПриНачалеРаботыСистемы(Перезапустить); + МодульАвтономнаяРаботаСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АвтономнаяРаботаСлужебный"); + МодульАвтономнаяРаботаСлужебный.ПередАвторизациейТекущегоПользователяПриНачалеРаботыСистемы(Перезапустить); КонецЕсли; КонецПроцедуры @@ -3244,8 +3302,8 @@ Процедура ПриАвторизацииАдминистратораПриНачалеРаботыСистемы(Администратор) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); - Модуль.ПриАвторизацииАдминистратораПриНачалеРаботыСистемы(Администратор); + МодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПриАвторизацииАдминистратораПриНачалеРаботыСистемы(Администратор); КонецЕсли; КонецПроцедуры @@ -3261,8 +3319,8 @@ Процедура ПриСозданииЗапросаНаСменуПочты(Знач НоваяПочта, Знач Пользователь, Знач ПарольПользователяСервиса) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - Модуль.СоздатьЗапросНаСменуПочты(НоваяПочта, Пользователь, ПарольПользователяСервиса); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + МодульПользователиСлужебныйВМоделиСервиса.СоздатьЗапросНаСменуПочты(НоваяПочта, Пользователь, ПарольПользователяСервиса); КонецЕсли; КонецПроцедуры @@ -3279,8 +3337,8 @@ Процедура ПриПолученииДействийСПользователемСервиса(ДоступныеДействия, Знач Пользователь = Неопределено) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - ДоступныеДействия = Модуль.ПолучитьДействияСПользователемСервиса(Пользователь); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + ДоступныеДействия = МодульПользователиСлужебныйВМоделиСервиса.ПолучитьДействияСПользователемСервиса(Пользователь); КонецЕсли; КонецПроцедуры @@ -3304,11 +3362,11 @@ Процедура ПослеОбновленияСоставовГруппПользователейПереопределяемый(УчастникиИзменений, ИзмененныеГруппы) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); - Модуль.ПослеОбновленияСоставовГруппПользователей(УчастникиИзменений, ИзмененныеГруппы); + МодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПослеОбновленияСоставовГруппПользователей(УчастникиИзменений, ИзмененныеГруппы); - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); - Модуль.ОбновитьРолиПользователей(УчастникиИзменений); + МодульУправлениеДоступом = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ОбновитьРолиПользователей(УчастникиИзменений); КонецЕсли; КонецПроцедуры @@ -3326,8 +3384,8 @@ НовыйОбъектАвторизации) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); - Модуль.ПослеИзмененияОбъектаАвторизацииВнешнегоПользователя( + МодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПослеИзмененияОбъектаАвторизацииВнешнегоПользователя( ВнешнийПользователь, СтарыйОбъектАвторизации, НовыйОбъектАвторизации); КонецЕсли; @@ -3347,8 +3405,8 @@ Процедура ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); - Модуль.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый); + МодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПослеДобавленияИзмененияПользователяИлиГруппы(Ссылка, ЭтоНовый); КонецЕсли; КонецПроцедуры @@ -3366,8 +3424,8 @@ Процедура ПослеУстановкиПользователяИБ(Ссылка, ПарольПользователяСервиса) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); - Модуль.ОбновитьРолиПользователей(Ссылка, ПарольПользователяСервиса); + МодульУправлениеДоступом = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ОбновитьРолиПользователей(Ссылка, ПарольПользователяСервиса); КонецЕсли; КонецПроцедуры @@ -3378,8 +3436,8 @@ Процедура ОбновитьОписаниеWebСервисаМенеджераСервиса() Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - Модуль.ОбновитьОписаниеWebСервисаМенеджераСервиса(); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + МодульПользователиСлужебныйВМоделиСервиса.ОбновитьОписаниеWebСервисаМенеджераСервиса(); КонецЕсли; КонецПроцедуры @@ -3388,8 +3446,8 @@ Процедура ОбновитьПользователяСервиса(ПользовательОбъект, СоздатьПользователяСервиса) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - Модуль.ОбновитьПользователяСервиса(ПользовательОбъект, СоздатьПользователяСервиса); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + МодульПользователиСлужебныйВМоделиСервиса.ОбновитьПользователяСервиса(ПользовательОбъект, СоздатьПользователяСервиса); КонецЕсли; КонецПроцедуры @@ -3404,8 +3462,8 @@ Процедура АннулироватьДоступПользователяСервиса(ПользовательОбъект) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - Модуль.АннулироватьДоступПользователяСервиса(ПользовательОбъект); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + МодульПользователиСлужебныйВМоделиСервиса.АннулироватьДоступПользователяСервиса(ПользовательОбъект); КонецЕсли; КонецПроцедуры @@ -3422,8 +3480,8 @@ СтандартнаяОбработка) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - Модуль.ОбработкаПолученияФормыПользователя( + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + МодульПользователиСлужебныйВМоделиСервиса.ОбработкаПолученияФормыПользователя( ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка); КонецЕсли; @@ -3441,8 +3499,8 @@ Процедура ЭтоНеразделенныйПользовательИБ(Знач ИдентификаторПользователяИБ, ПользовательНеразделенный) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - ПользовательНеразделенный = Модуль.ЭтоНеразделенныйПользовательИБ(ИдентификаторПользователяИБ); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + ПользовательНеразделенный = МодульПользователиСлужебныйВМоделиСервиса.ЭтоНеразделенныйПользовательИБ(ИдентификаторПользователяИБ); Иначе ПользовательНеразделенный = Ложь; КонецЕсли; @@ -3455,8 +3513,8 @@ Процедура ЗарегистрироватьНеразделенногоПользователя() Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - Модуль.ЗарегистрироватьНеразделенногоПользователя(); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + МодульПользователиСлужебныйВМоделиСервиса.ЗарегистрироватьНеразделенногоПользователя(); КонецЕсли; КонецПроцедуры @@ -3469,8 +3527,8 @@ Процедура ПриОпределенииДоступностиИзмененияПользователей(ДоступноИзменениеПользователей) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - ДоступноИзменениеПользователей = Модуль.ДоступноИзменениеПользователей(); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + ДоступноИзменениеПользователей = МодульПользователиСлужебныйВМоделиСервиса.ДоступноИзменениеПользователей(); Иначе ДоступноИзменениеПользователей = Истина; КонецЕсли; @@ -3494,8 +3552,8 @@ Процедура ПриПолученииПользовательскихВариантовОтчетов(ОтчетМетаданные, ПользовательИнформационнойБазы, СведенияОВариантахОтчетов, СтандартнаяОбработка) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); - Модуль.ПользовательскиеВариантыОтчетов(ОтчетМетаданные, ПользовательИнформационнойБазы, + МодульВариантыОтчетов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); + МодульВариантыОтчетов.ПользовательскиеВариантыОтчетов(ОтчетМетаданные, ПользовательИнформационнойБазы, СведенияОВариантахОтчетов, СтандартнаяОбработка); КонецЕсли; @@ -3515,8 +3573,8 @@ Процедура ПриУдаленииПользовательскихВариантовОтчета(СведенияОВариантеОтчета, ПользовательИнформационнойБазы, СтандартнаяОбработка) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); - Модуль.УдалитьПользовательскийВариантОтчета(СведенияОВариантеОтчета, + МодульВариантыОтчетов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); + МодульВариантыОтчетов.УдалитьПользовательскийВариантОтчета(СведенияОВариантеОтчета, ПользовательИнформационнойБазы, СтандартнаяОбработка); КонецЕсли; @@ -3536,8 +3594,8 @@ Процедура ПриПолученииПрочихПользовательскихНастроек(ПользовательСсылка, Настройки) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - Модуль.ПолучитьНастройкиДополнительныхОтчетовИОбработок(ПользовательСсылка, Настройки); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПолучитьНастройкиДополнительныхОтчетовИОбработок(ПользовательСсылка, Настройки); КонецЕсли; КонецПроцедуры @@ -3552,8 +3610,8 @@ Процедура ПриСохраненииПрочихПользовательскихНастроек(Настройки, ПользователиПолучатели) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - Модуль.ДобавитьКомандыВСписокБыстрогоДоступа(Настройки, ПользователиПолучатели); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ДобавитьКомандыВСписокБыстрогоДоступа(Настройки, ПользователиПолучатели); КонецЕсли; КонецПроцедуры @@ -3568,8 +3626,8 @@ Процедура ПриУдаленииПрочихПользовательскихНастроек(Настройки, ОчищаемыйПользователь) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - Модуль.УдалитьКомандыИзСпискаБыстрогоДоступа(Настройки, ОчищаемыйПользователь); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.УдалитьКомандыИзСпискаБыстрогоДоступа(Настройки, ОчищаемыйПользователь); КонецЕсли; КонецПроцедуры @@ -4158,7 +4216,8 @@ ТаблицаСтрокой = Запись.Закрыть(); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Пользователи.Ошибка при установке ролей пользователю ИБ'"), + НСтр("ru = 'Пользователи.Ошибка при установке ролей пользователю ИБ'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , ПользовательИБ, @@ -4175,7 +4234,8 @@ Для каждого Право Из СвойстваНедоступнойРоли.Права Цикл ЗаписьЖурналаРегистрации( - НСтр("ru = 'Пользователи.Ошибка при установке ролей пользователю ИБ'"), + НСтр("ru = 'Пользователи.Ошибка при установке ролей пользователю ИБ'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , ПользовательИБ, diff --git a/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервиса/Module.bsl index 696a5fcab..526a97ff9 100644 --- a/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервиса/Module.bsl @@ -147,7 +147,7 @@ ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяСервиса"), НоваяПочта, ИнформацияОбОшибке); - ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); КонецПроцедуры @@ -226,7 +226,7 @@ Иначе Прокси.UpdateUser(ПользовательСервиса, ИнформацияОбОшибке); КонецЕсли; - ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); КонецПроцедуры @@ -314,7 +314,7 @@ ИнформацияОбОшибке = Неопределено; ПраваДоступаXDTO = Прокси.GetAccessRights(ОбластьДанных, ИдентификаторСервисаТекущегоПользователя(), ИнформацияОбОшибке); - ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); Для каждого ЭлементСпискаПрав Из ПраваДоступаXDTO.Item Цикл Если ЭлементСпискаПрав.AccessRight = "CreateUser" Тогда @@ -357,7 +357,7 @@ ИнформацияОбОшибке = Неопределено; ПраваДоступаОбъектовXDTO = Прокси.GetObjectsAccessRights(ОбъектыДоступа, ИдентификаторСервисаТекущегоПользователя(), ИнформацияОбОшибке); - ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); Возврат ПраваДоступаОбъектовXDTOВДействияСПользователемСервиса(Прокси.ФабрикаXDTO, ПраваДоступаОбъектовXDTO); @@ -372,7 +372,7 @@ ИнформацияОбОшибке = Неопределено; СписокПользователей = Прокси.GetUsersList(РаботаВМоделиСервиса.ЗначениеРазделителяСеанса(), ); - ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); Результат = Новый ТаблицаЗначений; Результат.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("УникальныйИдентификатор")); @@ -404,7 +404,7 @@ ОбщегоНазначения.ЗначениеРазделителяСеанса(), ИдентификаторПользователяСервиса, ИнформацияОбОшибке); - ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке) + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); КонецПроцедуры @@ -545,21 +545,3 @@ КонецЕсли; КонецФункции - -Процедура ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке) - - Если ИнформацияОбОшибке = Неопределено Тогда - Возврат; - КонецЕсли; - - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Пользователи.Ошибка вызова операции web-сервиса'"), - УровеньЖурналаРегистрации.Ошибка, - , - , - ИнформацияОбОшибке.DetailErrorDescription); - - ВызватьИсключение ИнформацияОбОшибке.BriefErrorDescription; - -КонецПроцедуры - diff --git a/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервисаКлиент/Module.bsl b/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервисаКлиент/Module.bsl index e4ee002d9..b32063c2d 100644 --- a/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервисаКлиент/Module.bsl +++ b/SSL/src/CommonModules/ПользователиСлужебныйВМоделиСервисаКлиент/Module.bsl @@ -9,21 +9,18 @@ // Открывает форму ввода пароля пользователя сервиса // // Параметры: +// ВладелецФормы - УправляемаяФорма, которую нужно оповестить о выборе. // ПарольПользователяСервиса - Строка - пароль пользователя сервиса -// Отказ - Булево - флаг отказа от выполнения действия +// ПарольЕщёНеВведен - Булево // -Процедура ЗапроситьПарольДляАутентификацииВСервисе(ПарольПользователяСервиса, Отказ) Экспорт +Процедура ЗапроситьПарольДляАутентификацииВСервисе(ВладелецФормы, ПарольПользователяСервиса, ПарольЕщёНеВведен) Экспорт Если ПарольПользователяСервиса <> Неопределено Тогда Возврат; КонецЕсли; - Результат = ОткрытьФормуМодально("ОбщаяФорма.АутентификацияВСервисе"); + ОткрытьФорму("ОбщаяФорма.АутентификацияВСервисе", , ВладелецФормы); + + ПарольЕщёНеВведен = Истина; - Если ТипЗнч(Результат) = Тип("Строка") Тогда - ПарольПользователяСервиса = Результат; - Иначе - Отказ = Истина; - КонецЕсли; - КонецПроцедуры diff --git a/SSL/src/CommonModules/ПользователиСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/ПользователиСлужебныйПовтИсп/Module.bsl index 1127d7033..81a7594cf 100644 --- a/SSL/src/CommonModules/ПользователиСлужебныйПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/ПользователиСлужебныйПовтИсп/Module.bsl @@ -30,7 +30,8 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка обновления информационной базы. |Не заполнен параметр работы пользователей: - |""%1"".'"), + |""%1"".'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), ПредставлениеПараметра); КонецЕсли; diff --git a/SSL/src/CommonModules/ПоставляемыеДанные/Module.bsl b/SSL/src/CommonModules/ПоставляемыеДанные/Module.bsl index b6ed8db01..911be8599 100644 --- a/SSL/src/CommonModules/ПоставляемыеДанные/Module.bsl +++ b/SSL/src/CommonModules/ПоставляемыеДанные/Module.bsl @@ -312,7 +312,8 @@ // Запись в журнал регистрации. СообщениеОбОшибке = ТекстОшибкиПриПолученииФайла(ИнформацияОбОшибке(), СсылкаИлиИдентификатор); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Поставляемые данные.Получение файла из тома'"), + НСтр("ru = 'Поставляемые данные.Получение файла из тома'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.ПоставляемыеДанные, СсылкаИлиИдентификатор, diff --git a/SSL/src/CommonModules/ПрефиксацияОбъектовСобытия/Module.bsl b/SSL/src/CommonModules/ПрефиксацияОбъектовСобытия/Module.bsl index 19eab1f84..2ea32f813 100644 --- a/SSL/src/CommonModules/ПрефиксацияОбъектовСобытия/Module.bsl +++ b/SSL/src/CommonModules/ПрефиксацияОбъектовСобытия/Module.bsl @@ -152,8 +152,7 @@ Если РеквизитОрганизацияДоступен(Источник) Тогда ПерепрефиксацияОбъектов.ПриОпределенииПрефиксаОрганизации( - Источник[ИмяРеквизитаОрганизация(Источник.Метаданные())], ПрефиксОрганизации - ); + Источник[ИмяРеквизитаОрганизация(Источник.Метаданные())], ПрефиксОрганизации); // если задана пустая ссылка на организацию Если ПрефиксОрганизации = Ложь Тогда diff --git a/SSL/src/CommonModules/ПрисоединенныеФайлы/Module.bsl b/SSL/src/CommonModules/ПрисоединенныеФайлы/Module.bsl index 1deb4f5eb..3ebf03453 100644 --- a/SSL/src/CommonModules/ПрисоединенныеФайлы/Module.bsl +++ b/SSL/src/CommonModules/ПрисоединенныеФайлы/Module.bsl @@ -49,7 +49,8 @@ // Запись в журнал регистрации. СообщениеОбОшибке = ТекстОшибкиПриПолученииФайла(ИнформацияОбОшибке(), ПрисоединенныйФайл); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Получение файла из тома'"), + НСтр("ru = 'Файлы.Получение файла из тома'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники[ПрисоединенныйФайл.Метаданные().Имя], ПрисоединенныйФайл, @@ -139,7 +140,8 @@ Исключение СообщениеОбОшибке = ТекстОшибкиПриПолученииФайла(ИнформацияОбОшибке(), ПрисоединенныйФайл); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Открытие файла'"), + НСтр("ru = 'Файлы.Открытие файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники[ПрисоединенныйФайл.Метаданные().Имя], ПрисоединенныйФайл, @@ -341,7 +343,8 @@ ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Добавление присоединенного файла'"), + НСтр("ru = 'Файлы.Добавление присоединенного файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , diff --git a/SSL/src/CommonModules/ПрисоединенныеФайлыКлиент/Module.bsl b/SSL/src/CommonModules/ПрисоединенныеФайлыКлиент/Module.bsl index 2af57d749..c456a6231 100644 --- a/SSL/src/CommonModules/ПрисоединенныеФайлыКлиент/Module.bsl +++ b/SSL/src/CommonModules/ПрисоединенныеФайлыКлиент/Module.bsl @@ -535,7 +535,13 @@ Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные); ТабличныйДокумент = ФайловыеФункцииСлужебныйВызовСервера.ТабличныйДокументИзВременногоХранилища(Адрес); - ТабличныйДокумент.Показать(ЗаголовокСтрока, ИмяОткрываемогоФайла); + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ИмяДокумента", ЗаголовокСтрока); + ПараметрыОткрытия.Вставить("ПутьКФайлу", ИмяОткрываемогоФайла); + ПараметрыОткрытия.Вставить("ТабличныйДокумент", ТабличныйДокумент); + + ОткрытьФорму("ОбщаяФорма.РедактированиеТабличногоДокумента", ПараметрыОткрытия); + Возврат; КонецЕсли; diff --git a/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебный/Module.bsl b/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебный/Module.bsl index cfcb85b25..45d9edb4a 100644 --- a/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ПрисоединенныеФайлыСлужебный/Module.bsl @@ -482,7 +482,6 @@ Обработчик = Обработчики.Добавить(); Обработчик.Версия = "2.1.2.11"; Обработчик.Процедура = "ПрисоединенныеФайлыСлужебный.ОчиститьНекорректныеЗаписиРегистраСведенийНаличиеПрисоединенныхФайлов"; - Обработчик.Опциональный = Истина; КонецПроцедуры @@ -522,8 +521,7 @@ НовыйПутьФайла = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( ИмяКаталогаФайлов, - Строка(УникальныйИдентификатор) + "CatalogRef_" + ЭлементДанных.Метаданные().Имя - ); + Строка(УникальныйИдентификатор) + "CatalogRef_" + ЭлементДанных.Метаданные().Имя); ФайловыеФункцииСлужебный.СкопироватьФайлПриСозданииНачальногоОбраза(ПолныйПуть, НовыйПутьФайла); @@ -552,7 +550,8 @@ Исключение // Возможно, файл не был найден. Отправку данных не прерываем. ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Не удалось отправить файл при обмене данными'"), + НСтр("ru = 'Файлы.Не удалось отправить файл при обмене данными'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -867,7 +866,8 @@ Исключение ИнформацияОбОшибке = ИнформацияОбОшибке(); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Запись файла на диск'"), + НСтр("ru = 'Файлы.Запись файла на диск'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники[ФайлСсылка.Метаданные().Имя], ФайлСсылка, @@ -896,7 +896,8 @@ ОтменитьТранзакцию(); КонецЕсли; ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Обновление данных присоединенного файла в хранилище файлов'"), + НСтр("ru = 'Файлы.Обновление данных присоединенного файла в хранилище файлов'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -1151,7 +1152,8 @@ УдалитьФайлы(ИмяВременногоФайла); Исключение ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Извлечение текста'"), + НСтр("ru = 'Файлы.Извлечение текста'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -1190,7 +1192,7 @@ Пока Выборка.Следующий() Цикл НаборЗаписей.Отбор.ОбъектСФайлами.Установить(Выборка.ОбъектСФайлами); НаборЗаписей.Очистить(); - НаборЗаписей.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей); КонецЦикла; КонецПроцедуры @@ -1554,8 +1556,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ФайловыеФункцииВМоделиСервиса") Тогда Если ОбщегоНазначения.ИспользованиеРазделителяСеанса() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебныйВМоделиСервиса"); - Модуль.ОбновитьСостояниеОчередиИзвлеченияТекста(ИсточникТекста, СостояниеИзвлеченияТекста); + МодульФайловыеФункцииСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебныйВМоделиСервиса"); + МодульФайловыеФункцииСлужебныйВМоделиСервиса.ОбновитьСостояниеОчередиИзвлеченияТекста(ИсточникТекста, СостояниеИзвлеченияТекста); КонецЕсли; КонецЕсли; @@ -1581,7 +1583,8 @@ Исключение // Возможно, файл не был найден. Отправку данных не прерываем. ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Не удалось отправить файл при обмене данными'"), + НСтр("ru = 'Файлы.Не удалось отправить файл при обмене данными'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , diff --git a/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияГлобальный/Module.bsl b/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияГлобальный/Module.bsl new file mode 100644 index 000000000..9a252afed --- /dev/null +++ b/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияГлобальный/Module.bsl @@ -0,0 +1,15 @@ +//////////////////////////////////////////////////////////////////////////////// +// Подсистема "Проверка легальности получения обновления". +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Выполняет обработчик проверки легальности получения обновления. +// +Процедура ОбработчикПроверкиЛегальностиПолученияОбновленияВ83() Экспорт + + ПроверкаЛегальностиПолученияОбновленияКлиент.ПроверитьЛегальностьПолученияОбновленияВ83(); + +КонецПроцедуры diff --git a/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияГлобальный/ПроверкаЛегальностиПолученияОбновленияГлобальный.mdo b/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияГлобальный/ПроверкаЛегальностиПолученияОбновленияГлобальный.mdo new file mode 100644 index 000000000..150dce4f0 --- /dev/null +++ b/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияГлобальный/ПроверкаЛегальностиПолученияОбновленияГлобальный.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a2b2f025-3108-4f13-9440-8909b5e685f5"> + <name>ПроверкаЛегальностиПолученияОбновленияГлобальный</name> + <synonym> + <key>ru</key> + <value>Проверка легальности получения обновления глобальный</value> + </synonym> + <global>true</global> + <clientManagedApplication>true</clientManagedApplication> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияКлиент/Module.bsl b/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияКлиент/Module.bsl index 9b355f1f4..a1a60944d 100644 --- a/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияКлиент/Module.bsl +++ b/SSL/src/CommonModules/ПроверкаЛегальностиПолученияОбновленияКлиент/Module.bsl @@ -13,12 +13,15 @@ // Параметры: // ЗавершатьРаботуСистемы - Булево - завершать работу системы, если пользователь // указал что обновление получено не легально. +// ОткрыватьСЗадержкой - Булево - если Истина, то окно проверки легальности откроется +// с задержкой в 2 секунды. Необходимо для проверки +// легальности при запуске программы. // // Возвращаемое значение: // Булево - Истина, если проверка завершилась успешно (пользователь // подтвердил, что обновление получено легально). // -Функция ПроверитьЛегальностьПолученияОбновления(ЗавершатьРаботуСистемы = Ложь) Экспорт +Функция ПроверитьЛегальностьПолученияОбновления(ЗавершатьРаботуСистемы = Ложь, ОткрыватьСЗадержкой = Ложь) Экспорт Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ЭтоБазоваяВерсияКонфигурации Тогда Возврат Истина; @@ -28,18 +31,20 @@ ПараметрыФормы.Вставить("ПоказыватьПредупреждениеОПерезапуске", ЗавершатьРаботуСистемы); ПараметрыФормы.Вставить("ПринудительныйЗапуск", Истина); - Результат = ОткрытьФормуМодально("Обработка.ЛегальностьПолученияОбновлений.Форма", ПараметрыФормы); - - Если Результат <> Истина Тогда - Если ЗавершатьРаботуСистемы Тогда - ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; - ЗавершитьРаботуСистемы(Ложь); + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + + Если ОткрыватьСЗадержкой Тогда + ПараметрыРаботыКлиентаПриОбновлении.Вставить("ПараметрыЛегальностиПолученияОбновлений", ПараметрыФормы); + ПодключитьОбработчикОжидания("ОбработчикПроверкиЛегальностиПолученияОбновленияВ83", 2, Истина); + Иначе + ОткрытьФорму("Обработка.ЛегальностьПолученияОбновлений.Форма", ПараметрыФормы); КонецЕсли; - Возврат Ложь; + + Иначе + Результат = ОткрытьФормуМодально("Обработка.ЛегальностьПолученияОбновлений.Форма", ПараметрыФормы); + Возврат (Результат = Истина); КонецЕсли; - Возврат Истина; - КонецФункции //////////////////////////////////////////////////////////////////////////////// @@ -55,12 +60,23 @@ Возврат Истина; КонецЕсли; - Если ПараметрыКлиента.НачальноеЗаполнениеДанных - Или Не ПараметрыКлиента.НеобходимоОбновлениеИнформационнойБазы + Если ПараметрыКлиента.ПроверитьЛегальностьПолученияОбновления = Ложь Или Не ПараметрыКлиента.ЭтоГлавныйУзел Тогда Возврат Истина; КонецЕсли; - Возврат ПроверитьЛегальностьПолученияОбновления(Истина); + Возврат ПроверитьЛегальностьПолученияОбновления(Истина, Истина); КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Только для внутреннего использования. +// +Процедура ПроверитьЛегальностьПолученияОбновленияВ83() Экспорт + + ПараметрыФормы = ПараметрыРаботыКлиентаПриОбновлении.ПараметрыЛегальностиПолученияОбновлений; + ОткрытьФорму("Обработка.ЛегальностьПолученияОбновлений.Форма", ПараметрыФормы); + +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/CommonModules/РаботаВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/РаботаВМоделиСервиса/Module.bsl index 3d4c8f650..e35bfa1e3 100644 --- a/SSL/src/CommonModules/РаботаВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/РаботаВМоделиСервиса/Module.bsl @@ -35,14 +35,7 @@ КонецПроцедуры -// Устанавливает управляемую блокировку на пространства блокировок всех -// объектов, входящих в состав разделителя и неразделенные регистры сведений -// хранящие разделенные данные (по текущему значению разделителя). -// Опционально проверяется наличие других пользовательских сеансов -// в текущей области данных. -// Может использоваться только в транзакции. -// Может использоваться только при включенном разделении и установленном -// значении разделителя. +// Устанавливает блокировку области данных // // Параметры: // ПроверитьОтсутствиеДругихСеансов - Булево - проверить отсутствие других @@ -59,8 +52,7 @@ Ключ = СоздатьКлючЗаписиРегистраСведенийВспомогательныхДанных( РегистрыСведений.ОбластиДанных, - Новый Структура(РазделительВспомогательныхДанных(), ОбщегоНазначения.ЗначениеРазделителяСеанса()) - ); + Новый Структура(РазделительВспомогательныхДанных(), ОбщегоНазначения.ЗначениеРазделителяСеанса())); КоличествоПопыток = 5; ТекущаяПопытка = 0; @@ -93,6 +85,11 @@ КонецПопытки; КонецЦикла; + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() И НЕ РазделяемаяБлокировка Тогда + УстановитьМонопольныйРежим(Истина); + Возврат; + КонецЕсли; + МодельДанных = РаботаВМоделиСервисаПовтИсп.ПолучитьМодельДанныхОбласти(); Если РазделяемаяБлокировка Тогда @@ -128,6 +125,10 @@ ПространствоБлокировки = ПространствоБлокировки + ".Записи"; + ИначеЕсли ЭтоПолноеИмяПерерасчета(ПолноеИмяОбъектаМетаданных) Тогда + + ПространствоБлокировки = "Перерасчет." + ОписаниеОбъектаМетаданных.Имя + ".НаборЗаписей"; + ИначеЕсли ЭтоПолноеИмяЖурналаДокументов(ПолноеИмяОбъектаМетаданных) ИЛИ ЭтоПолноеИмяПеречисления(ПолноеИмяОбъектаМетаданных) ИЛИ ЭтоПолноеИмяПоследовательности(ПолноеИмяОбъектаМетаданных) ИЛИ @@ -168,8 +169,23 @@ КонецПроцедуры +// Снимает исключительную блокировку области с текущей области данных +// +Процедура РазблокироватьТекущуюОбластьДанных() Экспорт + + Ключ = СоздатьКлючЗаписиРегистраСведенийВспомогательныхДанных( + РегистрыСведений.ОбластиДанных, + Новый Структура(РазделительВспомогательныхДанных(), ОбщегоНазначения.ЗначениеРазделителяСеанса())); + + РазблокироватьДанныеДляРедактирования(Ключ); + + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + УстановитьМонопольныйРежим(Ложь); + КонецЕсли; + +КонецПроцедуры + // Проверяет блокировку области данных. -// Не может использоваться в транзакции. // // Параметры: // ОбластьДанных - Число - значение разделителя области данных, @@ -182,8 +198,7 @@ Ключ = СоздатьКлючЗаписиРегистраСведенийВспомогательныхДанных( РегистрыСведений.ОбластиДанных, - Новый Структура(РазделительВспомогательныхДанных(), ОбластьДанных) - ); + Новый Структура(РазделительВспомогательныхДанных(), ОбластьДанных)); Попытка ЗаблокироватьДанныеДляРедактирования(Ключ); @@ -216,8 +231,7 @@ КлючОбласти = СоздатьКлючЗаписиРегистраСведенийВспомогательныхДанных( РегистрыСведений.ОбластиДанных, - Новый Структура(РазделительВспомогательныхДанных(), ОбластьДанных) - ); + Новый Структура(РазделительВспомогательныхДанных(), ОбластьДанных)); ЗаблокироватьДанныеДляРедактирования(КлючОбласти); Попытка @@ -276,7 +290,7 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Копирование области данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Копирование области данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Если ИмяФайлаВыгрузки <> Неопределено Тогда Попытка @@ -289,14 +303,13 @@ ОбщегоНазначения.УстановитьРазделениеСеанса(, ОбластьПриемник); - НачатьТранзакцию(); Попытка - ЗаблокироватьТекущуюОбластьДанных(); + ОбщегоНазначения.ЗаблокироватьИБ(); ВыгрузкаЗагрузкаДанных.ЗагрузитьТекущуюОбластьИзАрхива(ИмяФайлаВыгрузки); - ЗафиксироватьТранзакцию(); + ОбщегоНазначения.РазблокироватьИБ(); Исключение - ОтменитьТранзакцию(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Копирование области данных'"), + ОбщегоНазначения.РазблокироватьИБ(); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Копирование области данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Попытка УдалитьФайлы(ИмяФайлаВыгрузки); @@ -335,8 +348,7 @@ КлючОбласти = СоздатьКлючЗаписиРегистраСведенийВспомогательныхДанных( РегистрыСведений.ОбластиДанных, - Новый Структура(РазделительВспомогательныхДанных(), ОбластьДанных) - ); + Новый Структура(РазделительВспомогательныхДанных(), ОбластьДанных)); ЗаблокироватьДанныеДляРедактирования(КлючОбласти); Попытка @@ -433,10 +445,10 @@ Удаление.Записать(); КонецЦикла; - ИначеЕсли ЭтоПолноеИмяРегистра(ПолноеИмяОбъектаМетаданных) Тогда + ИначеЕсли ЭтоПолноеИмяРегистра(ПолноеИмяОбъектаМетаданных) + ИЛИ ЭтоПолноеИмяПерерасчета(ПолноеИмяОбъектаМетаданных) Тогда ЭтоРегистрСведений = ЭтоПолноеИмяРегистраСведений(ПолноеИмяОбъектаМетаданных); - Если ЭтоРегистрСведений Тогда ОбъектМетаданныхОбласти = Метаданные.РегистрыСведений.Найти(ОписаниеОбъектаМетаданных.Имя); ЭтоНезависимыйРегистрСведений = (ОбъектМетаданныхОбласти.РежимЗаписи = Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.Независимый); @@ -446,29 +458,35 @@ Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъектаМетаданных); - Если Не ЭтоНезависимыйРегистрСведений Тогда + Если ЭтоНезависимыйРегистрСведений Тогда + + НаборЗаписей = Менеджер.СоздатьНаборЗаписей(); + НаборЗаписей.ОбменДанными.Загрузка = Истина; + НаборЗаписей.Записать(); + + Иначе + + ПараметрыВыборки = ПараметрыВыборки(ПолноеИмяОбъектаМетаданных); + ИмяПоляРегистратор = ПараметрыВыборки.ИмяПоляРегистратор; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | _XMLВыгрузка_Таблица.Регистратор КАК Регистратор |ИЗ - | " + ПолноеИмяОбъектаМетаданных + " КАК _XMLВыгрузка_Таблица"; + | " + ПараметрыВыборки.Таблица + " КАК _XMLВыгрузка_Таблица"; + Если ИмяПоляРегистратор <> "Регистратор" Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "Регистратор", ИмяПоляРегистратор); + КонецЕсли; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл НаборЗаписей = Менеджер.СоздатьНаборЗаписей(); - НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор); + НаборЗаписей.Отбор[ИмяПоляРегистратор].Установить(Выборка[ИмяПоляРегистратор]); НаборЗаписей.ОбменДанными.Загрузка = Истина; НаборЗаписей.Записать(); КонецЦикла; - Иначе - - НаборЗаписей = Менеджер.СоздатьНаборЗаписей(); - НаборЗаписей.ОбменДанными.Загрузка = Истина; - НаборЗаписей.Записать(); - КонецЕсли; КонецЕсли; @@ -560,8 +578,7 @@ Ключ = СоздатьКлючЗаписиРегистраСведенийВспомогательныхДанных( РегистрыСведений.ОбластиДанных, - Новый Структура(РазделительВспомогательныхДанных(), Выборка.ОбластьДанных) - ); + Новый Структура(РазделительВспомогательныхДанных(), Выборка.ОбластьДанных)); Попытка ЗаблокироватьДанныеДляРедактирования(Ключ); @@ -595,6 +612,11 @@ КонецЕсли; Менеджер.Повтор = Менеджер.Повтор + 1; + + КопияМенеджера = РегистрыСведений.ОбластиДанных.СоздатьМенеджерЗаписи(); + ЗаполнитьЗначенияСвойств(КопияМенеджера, Менеджер); + Менеджер = КопияМенеджера; + Менеджер.Записать(); ПараметрыМетода = Новый Массив; @@ -910,6 +932,62 @@ КонецФункции +// Возвращает внутренний адрес менеджера сервиса +// +// Возвращаемое значение: +// Строка - внутренний адрес менеджера сервиса +// +Функция ВнутреннийАдресМенеджераСервиса() Экспорт + + Возврат Константы.ВнутреннийАдресМенеджераСервиса.Получить(); + +КонецФункции + +// Возвращает имя служебного пользователя менеджера сервиса +// +// Возвращаемое значение: +// Строка - имя служебного пользователя менеджера сервиса +// +Функция ИмяСлужебногоПользователяМенеджераСервиса() Экспорт + + Возврат Константы.ИмяСлужебногоПользователяМенеджераСервиса.Получить(); + +КонецФункции + +// Возвращает пароль служебного пользователя менеджера сервиса +// +// Возвращаемое значение: +// Строка - пароль служебного пользователя менеджера сервиса +// +Функция ПарольСлужебногоПользователяМенеджераСервиса() Экспорт + + Возврат Константы.ПарольСлужебногоПользователяМенеджераСервиса.Получить(); + +КонецФункции + +// Обрабатывает информация об ошибке полученную из web-сервиса. +// В случае если передана не пустая информация об ошибке, записывает +// подробное представление ошибки в журнал регистрации и вызывает +// исключение с текстом краткого представления об ошибке. +// +Процедура ОбработатьИнформациюОбОшибкеWebСервиса(Знач ИнформацияОбОшибке) Экспорт + + Если ИнформацияОбОшибке = Неопределено Тогда + Возврат; + КонецЕсли; + + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Резервное копирование приложений.Ошибка вызова операции web-сервиса'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, + , + , + ИнформацияОбОшибке.DetailErrorDescription); + + ВызватьИсключение ИнформацияОбОшибке.BriefErrorDescription; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Работа с файлами @@ -1217,7 +1295,7 @@ Если РазделениеПереключено Тогда // Не установлен режим безопасного разделения данных - ЗаписьЖурналаРегистрации(НСтр("ru = 'Ошибка публикации'", Метаданные.ОсновнойЯзык.КодЯзыка), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Ошибка публикации'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -1255,15 +1333,14 @@ // с переключением разделения сеанса на время записи. // // Параметры: -// ОбъектВспомогательныхДанных - значение ссылочного типа или УдалениеОбъекта, +// ОбъектВспомогательныхДанных - значение ссылочного типа или УдалениеОбъекта. // Процедура ЗаписатьВспомогательныеДанные(ОбъектВспомогательныхДанных) Экспорт ОбработатьВспомогательныеДанные( ОбъектВспомогательныхДанных, Истина, - Ложь - ); + Ложь); КонецПроцедуры @@ -1271,15 +1348,14 @@ // с переключением разделения сеанса на время записи. // // Параметры: -// ОбъектВспомогательныхДанных - значение ссылочного типа, +// ОбъектВспомогательныхДанных - значение ссылочного типа. // Процедура УдалитьВспомогательныеДанные(ОбъектВспомогательныхДанных) Экспорт ОбработатьВспомогательныеДанные( ОбъектВспомогательныхДанных, Ложь, - Истина - ); + Истина); КонецПроцедуры @@ -1528,7 +1604,26 @@ // Функция ЭтоПолноеИмяРегистраРасчета(Знач ПолноеИмя) Экспорт - Возврат ПроверкаТипаОбъектаМетаданныхПоПолномуИмени(ПолноеИмя, "РегистрРасчета", "CalculationRegister"); + Возврат ПроверкаТипаОбъектаМетаданныхПоПолномуИмени(ПолноеИмя, "РегистрРасчета", "CalculationRegister") + И Не ЭтоПолноеИмяПерерасчета(ПолноеИмя); + +КонецФункции + +// Перерасчеты + +// Определяет принадлежность объекта метаданных к типу "Перерасчет" по полному имени +// объекта метаданных +// +// Параметры: +// ПолноеИмя – Строка, полное имя объекта метаданных, для которого необходимо определить +// принадлежность к заданному типу +// +// Возвращаемое значение: +// Тип: Булево. Истина – объект метаданных принадлежит заданному типу; Ложь – нет. +// +Функция ЭтоПолноеИмяПерерасчета(Знач ПолноеИмя) Экспорт + + Возврат ПроверкаТипаОбъектаМетаданныхПоПолномуИмени(ПолноеИмя, "Перерасчет", "Recalculation", 2); КонецФункции @@ -1648,6 +1743,36 @@ КонецФункции +// Для внутреннего использования. +// +Функция ПараметрыВыборки(Знач ПолноеИмяОбъектаМетаданных) Экспорт + + Результат = Новый Структура("Таблица,ИмяПоляРегистратор"); + + Если ЭтоПолноеИмяРегистра(ПолноеИмяОбъектаМетаданных) + ИЛИ ЭтоПолноеИмяПоследовательности(ПолноеИмяОбъектаМетаданных) Тогда + + Результат.Таблица = ПолноеИмяОбъектаМетаданных; + Результат.ИмяПоляРегистратор = "Регистратор"; + + ИначеЕсли ЭтоПолноеИмяПерерасчета(ПолноеИмяОбъектаМетаданных) Тогда + + Подстроки = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПолноеИмяОбъектаМетаданных, "."); + Результат.Таблица = Подстроки[0] + "." + Подстроки[1] + "." + Подстроки[3]; + Результат.ИмяПоляРегистратор = "ОбъектПерерасчета"; + + Иначе + + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Функция ПараметрыВыборки() не должна использоваться для объекта %1.'"), + ПолноеИмяОбъектаМетаданных); + + КонецЕсли; + + Возврат Результат; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -1725,7 +1850,7 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Подготовка области данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Подготовка области данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; КонецПопытки; @@ -1744,6 +1869,10 @@ // Процедура СменитьСтатусОбластиИУведомитьМенеджер(Знач МенеджерЗаписи, Знач РезультатПодготовки, Знач СообщениеОбОшибке) + КопияМенеджера = РегистрыСведений.ОбластиДанных.СоздатьМенеджерЗаписи(); + ЗаполнитьЗначенияСвойств(КопияМенеджера, МенеджерЗаписи); + МенеджерЗаписи = КопияМенеджера; + ВключатьСообщениеОбОшибке = Ложь; Если РезультатПодготовки = "Успех" Тогда МенеджерЗаписи.Статус = Перечисления.СтатусыОбластейДанных.Используется; @@ -1755,7 +1884,7 @@ МенеджерЗаписи.Статус = Перечисления.СтатусыОбластейДанных.Удалена; ТипСообщения = СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс.СообщениеОбластьДанныхУдалена(); ИначеЕсли РезультатПодготовки = "ФатальнаяОшибка" Тогда - ЗаписьЖурналаРегистрации(НСтр("ru = 'Подготовка области данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Подготовка области данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , СообщениеОбОшибке); МенеджерЗаписи.ОшибкаОбработки = Истина; ТипСообщения = СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс.СообщениеОшибкаПодготовкиОбластиДанных(); @@ -1855,7 +1984,7 @@ Попытка УдалитьФайлы(ИмяФайлаВыгрузки); Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Подготовка области данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Подготовка области данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; Возврат Результат; @@ -1866,10 +1995,15 @@ // Функции определения типов объектов метаданных по полному имени объекта // метаданных -Функция ПроверкаТипаОбъектаМетаданныхПоПолномуИмени(Знач ПолноеИмя, Знач РусскаяЛокализация, Знач АнглийскаяЛокализация) +Функция ПроверкаТипаОбъектаМетаданныхПоПолномуИмени(Знач ПолноеИмя, Знач РусскаяЛокализация, Знач АнглийскаяЛокализация, Знач ПозицияПодстроки = 0) - ИмяТипа = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПолноеИмя, ".").Получить(0); - Возврат ИмяТипа = РусскаяЛокализация ИЛИ ИмяТипа = АнглийскаяЛокализация; + Подстроки = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ПолноеИмя, "."); + Если Подстроки.Количество() > ПозицияПодстроки Тогда + ИмяТипа = Подстроки.Получить(ПозицияПодстроки); + Возврат ИмяТипа = РусскаяЛокализация ИЛИ ИмяТипа = АнглийскаяЛокализация; + Иначе + Возврат Ложь; + КонецЕсли; КонецФункции @@ -2170,6 +2304,8 @@ Функция ПолучитьФайлИзХранилища(Знач ИдентификаторФайла, Знач ПараметрыПодключения, Знач ПутьВместоДанных = Ложь, Знач ПроверятьСуществование = Ложь) Экспорт + НачалоВыполнения = ТекущаяУниверсальнаяДата(); + ОписаниеПрокси = ОписаниеПроксиСервисаПередачиФайлов(ПараметрыПодключения); ОбменЧерезФС = МожноПередаватьЧерезФСССервера(ОписаниеПрокси.Прокси, ОписаниеПрокси.ЕстьПоддержка2йВерсии); @@ -2192,6 +2328,8 @@ ОписаниеФайла = СоздатьОписаниеФайла(); ОписаниеФайла.Имя = СвойстваФайла.Имя; + РазмерПолученногоФайла = СвойстваФайла.Размер(); + Если ПутьВместоДанных Тогда ОписаниеФайла.Данные = Неопределено; ОписаниеФайла.ПолноеИмя = СвойстваФайла.ПолноеИмя; @@ -2204,12 +2342,19 @@ КонецПопытки; КонецЕсли; + ЗаписатьВЖурналСобытиеФайловогоХранилища( + НСтр("ru = 'Извлечение'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + ИдентификаторФайла, + РазмерПолученногоФайла, + ТекущаяУниверсальнаяДата() - НачалоВыполнения, + ОбменЧерезФС); + Возврат ОписаниеФайла; Иначе ОбменЧерезФС = Ложь; КонецЕсли; Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Получение файла из хранилища'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Получение файла из хранилища'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ОбменЧерезФС = Ложь; КонецПопытки; @@ -2273,6 +2418,7 @@ ФайлРезультата = Новый Файл(ПолучитьИмяВременногоФайла()); ПереместитьФайл(ИмяФайла, ФайлРезультата.ПолноеИмя); + РазмерПолученногоФайла = ФайлРезультата.Размер(); ОписаниеФайла = СоздатьОписаниеФайла(); ОписаниеФайла.Имя = ФайлРезультата.Имя; @@ -2295,6 +2441,13 @@ Исключение КонецПопытки; + ЗаписатьВЖурналСобытиеФайловогоХранилища( + НСтр("ru = 'Извлечение'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + ИдентификаторФайла, + РазмерПолученногоФайла, + ТекущаяУниверсальнаяДата() - НачалоВыполнения, + ОбменЧерезФС); + Возврат ОписаниеФайла; КонецФункции @@ -2314,6 +2467,8 @@ // Функция ПоместитьФайлВХранилище(Знач АдресДанныеФайл, Знач ПараметрыПодключения, Знач ИмяФайла = "") + НачалоВыполнения = ТекущаяУниверсальнаяДата(); + ОписаниеПрокси = ОписаниеПроксиСервисаПередачиФайлов(ПараметрыПодключения); Описание = ПолучитьИмяФайлаСДанными(АдресДанныеФайл, ИмяФайла); @@ -2327,7 +2482,15 @@ ЦелевойФайл = Новый Файл(ОбщийКаталог + СвойстваФайла.Имя); Если ЦелевойФайл.Существует() Тогда Если СвойстваФайла.ПолноеИмя = ЦелевойФайл.ПолноеИмя Тогда // Это один и тот же файл. Его можно, не передавая, сразу читать на сервере. - Возврат ОписаниеПрокси.Прокси.ReadFileFromFS(ЦелевойФайл.Имя, СвойстваФайла.Имя); + Результат = ОписаниеПрокси.Прокси.ReadFileFromFS(ЦелевойФайл.Имя, СвойстваФайла.Имя); + РазмерИсходногоФайла = ЦелевойФайл.Размер(); + ЗаписатьВЖурналСобытиеФайловогоХранилища( + НСтр("ru = 'Помещение'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + Результат, + РазмерИсходногоФайла, + ТекущаяУниверсальнаяДата() - НачалоВыполнения, + ОбменЧерезФС); + Возврат Результат; // Нельзя удалять, поскольку он является и источником. КонецЕсли; // Источник и приемник - разные файлы. Чтобы не затереть чужой файл, делаем приемнику уникальное имя. @@ -2336,14 +2499,21 @@ КонецЕсли; Попытка - Если Описание.Данные = Неопределено тогда + Если Описание.Данные = Неопределено Тогда КопироватьФайл(СвойстваФайла.ПолноеИмя, ЦелевойФайл.ПолноеИмя); Иначе Описание.Данные.Записать(ЦелевойФайл.ПолноеИмя); КонецЕсли; Результат = ОписаниеПрокси.Прокси.ReadFileFromFS(ЦелевойФайл.Имя, СвойстваФайла.Имя); + РазмерИсходногоФайла = ЦелевойФайл.Размер(); + ЗаписатьВЖурналСобытиеФайловогоХранилища( + НСтр("ru = 'Помещение'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + Результат, + РазмерИсходногоФайла, + ТекущаяУниверсальнаяДата() - НачалоВыполнения, + ОбменЧерезФС); Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Добавление файла. Обмен через ФС'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Добавление файла. Обмен через ФС'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ОбменЧерезФС = Ложь; КонецПопытки; @@ -2372,6 +2542,9 @@ Описание.Данные.Записать(ПолноеИмяФайла); КонецЕсли; + ЦелевойФайл = Новый Файл(ПолноеИмяФайла); + РазмерИсходногоФайла = ЦелевойФайл.Размер(); + // Архивировать файл. ИмяНеразделенногоФайла = ПолучитьИмяВременногоФайла("zip"); Архиватор = Новый ЗаписьZipФайла(ИмяНеразделенногоФайла, , , , УровеньСжатияZIP.Минимальный); @@ -2422,6 +2595,13 @@ ОписаниеПрокси.Прокси.SaveFileFromParts(ИдентификаторПередачи, КоличествоЧастей, Результат); КонецЕсли; + ЗаписатьВЖурналСобытиеФайловогоХранилища( + НСтр("ru = 'Помещение'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + Результат, + РазмерИсходногоФайла, + ТекущаяУниверсальнаяДата() - НачалоВыполнения, + ОбменЧерезФС); + КонецЕсли; // Не ОбменЧерезФС Возврат Результат; @@ -2650,6 +2830,30 @@ КонецФункции +Процедура ЗаписатьВЖурналСобытиеФайловогоХранилища(Знач Событие, + Знач ИдФайла, Знач Размер, Знач Длительность, Знач ПередачаЧерезФайловуюСистему) + + ДанныеСобытия = Новый Структура; + ДанныеСобытия.Вставить("ИдФайла", ИдФайла); + ДанныеСобытия.Вставить("Размер", Размер); + ДанныеСобытия.Вставить("Длительность", Длительность); + + Если ПередачаЧерезФайловуюСистему Тогда + ДанныеСобытия.Вставить("Транспорт", "file"); + Иначе + ДанныеСобытия.Вставить("Транспорт", "ws"); + КонецЕсли; + + ЗаписьЖурналаРегистрации( + НСтр("ru = 'Хранилище файлов'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()) + "." + Событие, + УровеньЖурналаРегистрации.Информация, + , + , + ОбщегоНазначения.ЗначениеВСтрокуXML(ДанныеСобытия)); + + +КонецПроцедуры + ///////////////////////////////////////////////////////////////////////////////// // Временные файлы @@ -2677,7 +2881,8 @@ КонецЕсли; КонецЕсли; Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции удаления временного файла'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Выполнение операции удаления временного файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; @@ -3099,14 +3304,13 @@ УстановитьПривилегированныйРежим(Истина); - НачатьТранзакцию(); Попытка - ЗаблокироватьТекущуюОбластьДанных(); + ОбщегоНазначения.ЗаблокироватьИБ(); ВыгрузкаЗагрузкаДанных.ЗагрузитьТекущуюОбластьИзАрхива(ИмяФайлаВыгрузки); - ЗафиксироватьТранзакцию(); + ОбщегоНазначения.РазблокироватьИБ(); Исключение - ОтменитьТранзакцию(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Копирование области данных'"), + ОбщегоНазначения.РазблокироватьИБ(); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Копирование области данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Попытка УдалитьФайлы(ИмяФайлаВыгрузки); @@ -3134,13 +3338,12 @@ Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда - ПредставлениеИсключения = НСтр("ru = 'Нарушение прав доступа!'"); + ПредставлениеИсключения = НСтр("ru = 'Нарушение прав доступа!'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); ЗаписьЖурналаРегистрации( ПредставлениеИсключения, УровеньЖурналаРегистрации.Ошибка, - Источник.Метаданные() - ); + Источник.Метаданные()); ВызватьИсключение ПредставлениеИсключения; @@ -3157,7 +3360,7 @@ // Параметры: // ОбъектВспомогательныхДанных - значение ссылочного типа или УдалениеОбъекта, // Записать - Булево, признак выполнения записи значения ссылочного типа, -// Удалить - Булево, признак выполнения удаления значения ссылочного типа, +// Удалить - Булево, признак выполнения удаления значения ссылочного типа. // Процедура ОбработатьВспомогательныеДанные(ОбъектВспомогательныхДанных, Знач Записать, Знач Удалить) @@ -3334,10 +3537,6 @@ Попытка - Блокировка = Новый БлокировкаДанных(); - БлокировкаРегистра = Блокировка.Добавить("РегистрСведений.ОбластиДанных"); - БлокировкаРегистра.Режим = РежимБлокировкиДанных.Исключительный; - Блокировка.Заблокировать(); ТекстЗапроса = "ВЫБРАТЬ @@ -3474,9 +3673,16 @@ СтандартныеРазделители.Добавить(Метаданные.ОбщиеРеквизиты.ОбластьДанныхОсновныеДанные); СтандартныеРазделители.Добавить(Метаданные.ОбщиеРеквизиты.ОбластьДанныхВспомогательныеДанные); + КонтрольныеПроцедуры = Новый Массив; + КонтрольныеПроцедуры.Добавить(Метаданные.ПодпискиНаСобытия.КонтрольНеразделенныхНаборовЗаписейПриЗаписи.Обработчик); + КонтрольныеПроцедуры.Добавить(Метаданные.ПодпискиНаСобытия.КонтрольНеразделенныхОбъектовПриЗаписи.Обработчик); + КонтролирующиеПодписки = Новый Массив; - КонтролирующиеПодписки.Добавить(Метаданные.ПодпискиНаСобытия.КонтрольНеразделенныхНаборовЗаписейПриЗаписи); - КонтролирующиеПодписки.Добавить(Метаданные.ПодпискиНаСобытия.КонтрольНеразделенныхОбъектовПриЗаписи); + Для Каждого ПодпискаНаСобытие Из Метаданные.ПодпискиНаСобытия Цикл + Если КонтрольныеПроцедуры.Найти(ПодпискаНаСобытие.Обработчик) <> Неопределено Тогда + КонтролирующиеПодписки.Добавить(ПодпискаНаСобытие); + КонецЕсли; + КонецЦикла; НарушенияКонтроляВключенияНеразделенныхДанныхВКонтролирующиеПодписки = Новый Массив(); НарушенияКонтроляРазделенияОбъектовНесколькимиРазделителями = Новый Массив(); @@ -3589,8 +3795,7 @@ |должны быть включены в состав подписок на события (%2), контролирующих |невозможность записи неразделенных данных в разделенных сеансах. |Следующие объекты метаданных не удовлетворяют этому критерию: %3.'"), - ТекстРазделителей, ТекстПодписок, ТекстИсключения) - ); + ТекстРазделителей, ТекстПодписок, ТекстИсключения)); КонецЕсли; @@ -3611,8 +3816,7 @@ ВызываемыеИсключения.Добавить(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Все объекты метаданных конфигурации должны быть разделены не более чем одним разделителем БСП (%1). |Следующие объекты не удовлетворяют этому критерию: %2'"), - ТекстРазделителей, ТекстИсключения) - ); + ТекстРазделителей, ТекстИсключения)); КонецЕсли; @@ -3670,8 +3874,7 @@ |быть расположен в дереве метаданных конфигурации до общего реквизита |%2 по порядку!'"), РазделительВнутренний.Имя, - РазделительПрикладной.Имя - ); + РазделительПрикладной.Имя); КонецЕсли; diff --git a/SSL/src/CommonModules/РаботаВМоделиСервисаПовтИсп/Module.bsl b/SSL/src/CommonModules/РаботаВМоделиСервисаПовтИсп/Module.bsl index 28ca64a7b..206e62c71 100644 --- a/SSL/src/CommonModules/РаботаВМоделиСервисаПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/РаботаВМоделиСервисаПовтИсп/Module.bsl @@ -105,16 +105,14 @@ РазделительОсновныхДанных = ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных(); ОсновныеДанныеОбласти = ОбщегоНазначенияПовтИсп.РазделенныеОбъектыМетаданных( - РазделительОсновныхДанных - ); + РазделительОсновныхДанных); Для Каждого ЭлементОсновныхДанныхОбласти Из ОсновныеДанныеОбласти Цикл Результат.Вставить(ЭлементОсновныхДанныхОбласти.Ключ, ЭлементОсновныхДанныхОбласти.Значение); КонецЦикла; РазделительВспомогательныхДанных = ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных(); ВспомогательныеДанныеОбласти = ОбщегоНазначенияПовтИсп.РазделенныеОбъектыМетаданных( - РазделительВспомогательныхДанных - ); + РазделительВспомогательныхДанных); Для Каждого ЭлементВспомогательныхДанныхОбласти Из ВспомогательныеДанныеОбласти Цикл Результат.Вставить(ЭлементВспомогательныхДанныхОбласти.Ключ, ЭлементВспомогательныхДанныхОбласти.Значение); КонецЦикла; diff --git a/SSL/src/CommonModules/РаботаСБанками/Module.bsl b/SSL/src/CommonModules/РаботаСБанками/Module.bsl index 44d997e22..869ff735c 100644 --- a/SSL/src/CommonModules/РаботаСБанками/Module.bsl +++ b/SSL/src/CommonModules/РаботаСБанками/Module.bsl @@ -56,12 +56,12 @@ СерверныеОбработчики["СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий\ПриОпределенииИспользованияРегламентныхЗаданий"].Добавить( "РаботаСБанками"); КонецЕсли; - + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда СерверныеОбработчики["СтандартныеПодсистемы.РаботаВМоделиСервиса.ВыгрузкаЗагрузкаДанных\ПриОпределенииСтандартныхТиповОбщихДанных"].Добавить( "РаботаСБанками"); КонецЕсли; - + КонецПроцедуры // Заполняет параметры, которые используется клиентским кодом на запуске конфигурации. @@ -75,9 +75,7 @@ Не ОбщегоНазначенияПовтИсп.РазделениеВключено() // В модели сервиса обновляется автоматически. И Не ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() // В узле РИБ обновляется автоматически. И ПравоДоступа("Изменение", Метаданные.Справочники.КлассификаторБанковРФ) // Пользователь с необходимыми правами. - И ОбщегоНазначения.ИнформационнаяБазаФайловая() // Классификатор не обновляется автоматически. - И Не КлассификаторАктуален() // Классификатор уже обновлен. - ); + И Не КлассификаторАктуален()); // Классификатор уже обновлен. Параметры.Вставить("Банки", Новый ФиксированнаяСтруктура("ВыводитьОповещениеОНеактуальности", ВыводитьОповещениеОНеактуальности)); @@ -111,6 +109,7 @@ КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -139,8 +138,8 @@ ТекстСообщения = ТекстСообщения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru =' |Загружено новых: %1.'"), ПараметрыЗагрузкиКлассификатора["Загружено"]); - - КонецЕсли; + + КонецЕсли; Если ПараметрыЗагрузкиКлассификатора["Обновлено"] > 0 Тогда @@ -290,6 +289,14 @@ УстановитьПривилегированныйРежим(Истина); КонецЕсли; + ИмяСобытия = НСтр("ru ='Загрузка классификатора банков. Сайт РБК'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); + УровеньСобытия = УровеньЖурналаРегистрации.Информация; + + Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда + ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньСобытия, , , НСтр("ru = 'Загрузка в подчиненном узле РИБ не предусмотрена'")); + Возврат; + КонецЕсли; + ПараметрыЗагрузкиКлассификатора = Новый Соответствие; ПараметрыЗагрузкиКлассификатора.Вставить("Загружено", 0); ПараметрыЗагрузкиКлассификатора.Вставить("Обновлено", 0); @@ -298,10 +305,6 @@ ПолучитьДанныеРБК(ПараметрыЗагрузкиКлассификатора); - ИмяСобытия = НСтр("ru ='Загрузка классификатора банков. Сайт РБК'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); - - УровеньСобытия = УровеньЖурналаРегистрации.Информация; - Если ПараметрыЗагрузкиКлассификатора["ЗагрузкаВыполнена"] Тогда Если ПустаяСтрока(ПараметрыЗагрузкиКлассификатора["ТекстСообщения"]) Тогда ДополнитьТекстСообщения(ПараметрыЗагрузкиКлассификатора); @@ -313,7 +316,7 @@ ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньСобытия, , , ПараметрыЗагрузкиКлассификатора["ТекстСообщения"]); КонецПроцедуры - + // Сортирует, записывает данные классификатора БИК РФ с сайта РБК // // Параметры @@ -849,11 +852,11 @@ Если Регион.Модифицированность() Тогда Регион.Записать(); КонецЕсли; - КонецЕсли; + КонецЕсли; ЗаписываемыйЭлементСправочникаКлассификаторБанковРФ = Справочники.КлассификаторБанковРФ.НайтиПоКоду(СтруктураБанк.БИК); - + Если ЗаписываемыйЭлементСправочникаКлассификаторБанковРФ.Пустая() Тогда КлассификаторБанковОбъект = Справочники.КлассификаторБанковРФ.СоздатьЭлемент(); ФлагНовый = Истина; diff --git a/SSL/src/CommonModules/РаботаСБанкамиКлиент/Module.bsl b/SSL/src/CommonModules/РаботаСБанкамиКлиент/Module.bsl index 607bf3dbb..3aafeaec1 100644 --- a/SSL/src/CommonModules/РаботаСБанкамиКлиент/Module.bsl +++ b/SSL/src/CommonModules/РаботаСБанкамиКлиент/Module.bsl @@ -8,7 +8,7 @@ // Вызывается при запуске конфигурации, подключает обработчик ожидания. // -Процедура ПриНачалеРаботыСистемы(ОбработкаПараметровЗапуска) Экспорт +Процедура ПриНачалеРаботыСистемы() Экспорт Параметры = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); Если Параметры.Свойство("Банки") И Параметры.Банки.ВыводитьОповещениеОНеактуальности Тогда ПодключитьОбработчикОжидания("РаботаСБанкамиВывестиОповещениеОНеактуальности", 45, Истина); @@ -29,8 +29,7 @@ НСтр("ru = 'Классификатор банков устарел'"), НавигационнаяСсылкаФормыЗагрузки(), НСтр("ru = 'Обновить классификатор банков'"), - БиблиотекаКартинок.Предупреждение32 - ); + БиблиотекаКартинок.Предупреждение32); КонецПроцедуры @@ -42,8 +41,7 @@ НСтр("ru = 'Классификатор банков успешно обновлен'"), НавигационнаяСсылкаФормыЗагрузки(), НСтр("ru = 'Классификатор банков обновлен'"), - БиблиотекаКартинок.Информация32 - ); + БиблиотекаКартинок.Информация32); КонецПроцедуры @@ -55,8 +53,7 @@ НСтр("ru = 'Классификатор банков уже обновлен'"), НавигационнаяСсылкаФормыЗагрузки(), НСтр("ru = 'Классификатор банков актуален'"), - БиблиотекаКартинок.Информация32 - ); + БиблиотекаКартинок.Информация32); КонецПроцедуры diff --git a/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl b/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl index d488201a0..8cc0ed62d 100644 --- a/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl +++ b/SSL/src/CommonModules/РаботаСКурсамиВалют/Module.bsl @@ -137,8 +137,6 @@ КурсыОбновляютсяОтветственными = Ложь; // В модели сервиса обновляются автоматически. ИначеЕсли НЕ ПравоДоступа("Изменение", Метаданные.РегистрыСведений.КурсыВалют) Тогда КурсыОбновляютсяОтветственными = Ложь; // Пользователь не может обновлять курсы валют. - ИначеЕсли Не ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда - КурсыОбновляютсяОтветственными = Ложь; // Курсы загружаются автоматически. Иначе КурсыОбновляютсяОтветственными = КурсыЗагружаютсяИзИнтернета(); // Есть валюты, для которых можно загружать курсы. КонецЕсли; @@ -199,8 +197,7 @@ УровеньЖурналаРегистрации.Информация, , , - НСтр("ru = 'Начата регламентная загрузка курсов валют'") - ); + НСтр("ru = 'Начата регламентная загрузка курсов валют'")); ТекущаяДата = ТекущаяДатаСеанса(); @@ -219,16 +216,14 @@ УровеньЖурналаРегистрации.Ошибка, , , - НСтр("ru = 'Во время регламентного задания загрузки курсов валют возникли ошибки'") - ); + НСтр("ru = 'Во время регламентного задания загрузки курсов валют возникли ошибки'")); Иначе ЗаписьЖурналаРегистрации( ИмяСобытия, УровеньЖурналаРегистрации.Информация, , , - НСтр("ru = 'Завершена регламентная загрузка курсов валют.'") - ); + НСтр("ru = 'Завершена регламентная загрузка курсов валют.'")); КонецЕсли; КонецПроцедуры @@ -503,10 +498,9 @@ Обработчик.Процедура = "РаботаСКурсамиВалют.ОбновитьФорматХраненияПрописиНаРусскомЯзыке"; Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "2.1.3.41"; + Обработчик.Версия = "2.1.4.4"; Обработчик.Процедура = "РаботаСКурсамиВалют.ОбновитьСведенияОВалюте937"; - Обработчик.Опциональный = Истина; - Обработчик.МонопольныйРежим = Ложь; + Обработчик.РежимВыполнения = "Монопольно"; КонецПроцедуры @@ -531,7 +525,7 @@ + СокрЛП(СтрПолучитьСтроку(СтрокаПараметров, 7)) + ", " + Род2 + ", " + СокрЛП(СтрПолучитьСтроку(СтрокаПараметров, 9)); - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецЦикла; КонецПроцедуры @@ -545,7 +539,7 @@ Валюта = Валюта.ПолучитьОбъект(); Валюта.Наименование = "VEF"; Валюта.НаименованиеПолное = НСтр("ru = 'Боливар'"); - Валюта.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Валюта); КонецЕсли; КонецПроцедуры @@ -640,8 +634,8 @@ Функция ПриОбновленииКурсовВалютВМоделиСервиса(Валюта) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВалютыВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КурсыВалютСлужебныйВМоделиСервиса"); - Модуль.ЗапланироватьКопированиеКурсовВалюты(Валюта); + МодульКурсыВалютСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КурсыВалютСлужебныйВМоделиСервиса"); + МодульКурсыВалютСлужебныйВМоделиСервиса.ЗапланироватьКопированиеКурсовВалюты(Валюта); КонецЕсли; КонецФункции diff --git a/SSL/src/CommonModules/РаботаСКурсамиВалютКлиент/Module.bsl b/SSL/src/CommonModules/РаботаСКурсамиВалютКлиент/Module.bsl index 63b19b0cb..dc4127fe6 100644 --- a/SSL/src/CommonModules/РаботаСКурсамиВалютКлиент/Module.bsl +++ b/SSL/src/CommonModules/РаботаСКурсамиВалютКлиент/Module.bsl @@ -8,7 +8,7 @@ // Вызывается при запуске конфигурации, подключает обработчик ожидания. // -Процедура ПриНачалеРаботыСистемы(ОбработкаПараметровЗапуска) Экспорт +Процедура ПриНачалеРаботыСистемы() Экспорт Параметры = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); Если Параметры.Свойство("Валюты") И Параметры.Валюты.КурсыОбновляютсяОтветственными Тогда ПодключитьОбработчикОжидания("РаботаСКурсамиВалютВывестиОповещениеОНеактуальности", 15, Истина); @@ -29,8 +29,7 @@ НСтр("ru = 'Курсы валют устарели'"), НавигационнаяСсылкаОбработки(), НСтр("ru = 'Обновить курсы валют'"), - БиблиотекаКартинок.Предупреждение32 - ); + БиблиотекаКартинок.Предупреждение32); КонецПроцедуры @@ -42,8 +41,7 @@ НСтр("ru = 'Курсы валют успешно обновлены'"), НавигационнаяСсылкаОбработки(), НСтр("ru = 'Курсы валют обновлены'"), - БиблиотекаКартинок.Информация32 - ); + БиблиотекаКартинок.Информация32); КонецПроцедуры @@ -55,8 +53,7 @@ НСтр("ru = 'Курсы валют уже обновлены'"), НавигационнаяСсылкаОбработки(), НСтр("ru = 'Курсы валют актуальны'"), - БиблиотекаКартинок.Информация32 - ); + БиблиотекаКартинок.Информация32); КонецПроцедуры diff --git a/SSL/src/CommonModules/РаботаСКурсамиВалютКлиентСервер/Module.bsl b/SSL/src/CommonModules/РаботаСКурсамиВалютКлиентСервер/Module.bsl index 2cf1be60a..11996746f 100644 --- a/SSL/src/CommonModules/РаботаСКурсамиВалютКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/РаботаСКурсамиВалютКлиентСервер/Module.bsl @@ -44,9 +44,7 @@ СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'При пересчете в валюту %1 сумма %2 установлена в нулевое значение, т.к. курс валюты не задан.'"), ПараметрыНовогоКурса.Валюта, - Формат(Сумма, "ЧДЦ=2; ЧН=0") - ) - ); + Формат(Сумма, "ЧДЦ=2; ЧН=0"))); Возврат 0; @@ -78,8 +76,7 @@ Возврат ПересчитатьПоКурсу( Сумма, Новый Структура("Валюта, Курс, Кратность", ВалютаНач, ПоКурсуНач, ПоКратностьНач), - Новый Структура("Валюта, Курс, Кратность", ВалютаКон, ПоКурсуКон, ПоКратностьКон) - ); + Новый Структура("Валюта, Курс, Кратность", ВалютаКон, ПоКурсуКон, ПоКратностьКон)); КонецФункции @@ -144,8 +141,7 @@ |Возможно, нет доступа к веб сайту с курсами валют, либо указана несуществующая валюта.'"), Валюта.КодВалюты, Валюта.Валюта, - Результат.СообщениеОбОшибке - ); + Результат.СообщениеОбОшибке); СтатусОперации = Ложь; ПриЗагрузкеВозниклиОшибки = Истина; КонецЕсли; diff --git a/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиКлиент/Module.bsl b/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиКлиент/Module.bsl index 310e25adb..1217d66d3 100644 --- a/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиКлиент/Module.bsl +++ b/SSL/src/CommonModules/РаботаСПочтовымиСообщениямиКлиент/Module.bsl @@ -50,8 +50,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") И СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИспользоватьПочтовыйКлиент Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВзаимодействияКлиент"); - Модуль.ОткрытьФормуОтправкиПочтовогоСообщения(Отправитель, + МодульВзаимодействияКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВзаимодействияКлиент"); + МодульВзаимодействияКлиент.ОткрытьФормуОтправкиПочтовогоСообщения(Отправитель, Получатель, Тема, Текст, СписокФайлов); Иначе ОткрытьПростуюФормуОтправкиПочтовогоСообщения(Отправитель, Получатель, @@ -98,15 +98,22 @@ Состояние(НСтр("ru = 'Проверка учетной записи'"),,НСтр("ru = 'Выполняется проверка учетной записи. Подождите...'")); Если ЭлектроннаяПочтаВызовСервера.ПарольЗадан(УчетнаяЗапись) Тогда - ПарольПараметр = Неопределено; + ПроверитьВозможностьОтправкиИПолученияЭлектроннойПочты(УчетнаяЗапись, Неопределено); Иначе - ПараметрУчетнаяЗапись = Новый Структура("УчетнаяЗапись", УчетнаяЗапись); - ПарольПараметр = ОткрытьФормуМодально("ОбщаяФорма.ПодтверждениеПароляУчетнойЗаписи", ПараметрУчетнаяЗапись); - Если ТипЗнч(ПарольПараметр) <> Тип("Строка") Тогда - Возврат - КонецЕсли; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("УчетнаяЗапись", УчетнаяЗапись); + ПараметрыФормы.Вставить("ПроверитьВозможностьОтправкиИПолучения", Истина); + ОткрытьФорму("ОбщаяФорма.ПодтверждениеПароляУчетнойЗаписи", ПараметрыФормы); КонецЕсли; +КонецПроцедуры + +// Проверка учетной записи электронной почты. +// +// см. описание процедуры ЭлектроннаяПочта.ПроверитьВозможностьОтправкиИПолученияЭлектроннойПочты. +// +Процедура ПроверитьВозможностьОтправкиИПолученияЭлектроннойПочты(УчетнаяЗапись, ПарольПараметр) Экспорт + СообщениеОбОшибке = ""; ДополнительноеСообщение = ""; ЭлектроннаяПочтаВызовСервера.ПроверитьВозможностьОтправкиИПолученияЭлектроннойПочты(УчетнаяЗапись, ПарольПараметр, СообщениеОбОшибке, ДополнительноеСообщение); @@ -124,4 +131,3 @@ КонецЕсли; КонецПроцедуры - diff --git a/SSL/src/CommonModules/РаботаСФайламиКлиент/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиКлиент/Module.bsl index 93ca59f48..8f97b78b8 100644 --- a/SSL/src/CommonModules/РаботаСФайламиКлиент/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайламиКлиент/Module.bsl @@ -10,7 +10,13 @@ // Процедуры и функция для работы со сканером // Открывает форму настройки сканирования. -Процедура ОткрытьФормуНастройкиСканирования(Модально = Ложь) Экспорт +Процедура ОткрытьФормуНастройкиСканирования() Экспорт + + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + ТекстСообщения = НСтр("ru = 'Сканирование не поддерживается в клиенте под управлением ОС Linux.'"); + Предупреждение(ТекстСообщения); + Возврат; + КонецЕсли; КомпонентаУстановлена = РаботаСФайламиСлужебныйКлиент.ПроинициализироватьКомпоненту(); @@ -21,11 +27,7 @@ ПараметрыФормы.Вставить("КомпонентаУстановлена", КомпонентаУстановлена); ПараметрыФормы.Вставить("ИдентификаторКлиента", ИдентификаторКлиента); - Если Модально Тогда - ОткрытьФормуМодально("Справочник.Файлы.Форма.НастройкаСканирования", ПараметрыФормы); - Иначе - ОткрытьФорму("Справочник.Файлы.Форма.НастройкаСканирования", ПараметрыФормы); - КонецЕсли; + ОткрытьФорму("Справочник.Файлы.Форма.НастройкаСканирования", ПараметрыФормы); КонецПроцедуры @@ -436,13 +438,9 @@ // Дополнительные процедуры и функции для работы с файлами // Открывает форму для настройки рабочего каталога. -Процедура ОткрытьФормуНастройкиРабочегоКаталога(Модально = Ложь) Экспорт +Процедура ОткрытьФормуНастройкиРабочегоКаталога() Экспорт - Если Модально Тогда - ОткрытьФормуМодально("ОбщаяФорма.НастройкаОсновногоРабочегоКаталога"); - Иначе - ОткрытьФорму("ОбщаяФорма.НастройкаОсновногоРабочегоКаталога"); - КонецЕсли; + ОткрытьФорму("ОбщаяФорма.НастройкаОсновногоРабочегоКаталога"); КонецПроцедуры @@ -543,8 +541,7 @@ Ложь, // Это не Веб-клиент. Неопределено, // Пользователь. "", // Комментарий. - Истина // ЗаписатьВИсторию. - ); + Истина); // ЗаписатьВИсторию. Состояние(); @@ -1040,8 +1037,7 @@ Размер, АдресВременногоХранилищаФайла, АдресВременногоХранилищаТекста, - Истина // Это Веб-клиент. - ); + Истина); // Это Веб-клиент. ПараметрыОповещения = Новый Структура; ПараметрыОповещения.Вставить("Владелец", ВладелецФайла); @@ -1328,16 +1324,3 @@ Возврат ВозвратМассив; КонецФункции - -//////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС - -// Открывает форму папки со списком файлов. -// -Процедура РассылкаОтчетовПросмотрПапки(СтандартнаяОбработка, Папка) Экспорт - - СтандартнаяОбработка = Ложь; - ПараметрыФормы = Новый Структура("Папка", Папка); - ОткрытьФорму("Справочник.Файлы.Форма.ХранилищеФайлов", ПараметрыФормы, , Папка); - -КонецПроцедуры diff --git a/SSL/src/CommonModules/РаботаСФайламиКлиентСервер/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиКлиентСервер/Module.bsl index 5bd860518..0990f5e84 100644 --- a/SSL/src/CommonModules/РаботаСФайламиКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайламиКлиентСервер/Module.bsl @@ -32,7 +32,7 @@ |""%2"" с %3.'"), Строка(ДанныеФайла.Ссылка), Строка(ДанныеФайла.Редактирует), - Формат(ДанныеФайла.ДатаЗаема, "ДФ='dd.MM.yyyy hh:mm'")); + Формат(ДанныеФайла.ДатаЗаема, "ДЛФ=ДВ")); Возврат Ложь; КонецЕсли; diff --git a/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl index 4cbf792fa..cd2ac358a 100644 --- a/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайламиСлужебный/Module.bsl @@ -144,8 +144,7 @@ НовыйПутьФайла = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( ИмяКаталогаФайлов, - УникальныйИдентификатор - ); + УникальныйИдентификатор); ФайловыеФункцииСлужебный.СкопироватьФайлПриСозданииНачальногоОбраза(ПолныйПуть, НовыйПутьФайла); @@ -174,7 +173,8 @@ Исключение // Возможно, файл не был найден. Отправку данных не прерываем. ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Не удалось отправить файл при обмене данными'"), + НСтр("ru = 'Файлы.Не удалось отправить файл при обмене данными'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -368,8 +368,7 @@ Комментарий = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Рассылка отчетов %1 от %2'"), "'"+ ПараметрыДоставки.Рассылка +"'", - Формат(ПараметрыДоставки.ДатаВыполнения, "ДЛФ=DT") - ); + Формат(ПараметрыДоставки.ДатаВыполнения, "ДЛФ=DT")); ХранитьВерсии = Истина; ЭтоВебКлиент = Ложь; АдресВременногоХранилищаТекста = ""; @@ -398,8 +397,7 @@ АдресВременногоХранилищаФайла, АдресВременногоХранилищаТекста, ЭтоВебКлиент, - Пользователь - ); + Пользователь); Иначе Вложение.ФайлСсылка = РаботаСФайламиСлужебныйВызовСервера.СоздатьФайлСВерсией( ВладелецФайла, @@ -413,8 +411,7 @@ ЭтоВебКлиент, Пользователь, Комментарий, - ЗаписатьВИсторию - ); + ЗаписатьВИсторию); КонецЕсли; // Заполнение ссылки на файл @@ -422,8 +419,7 @@ ПараметрыДоставки.ПредставлениеОтчетовПолучателя = СтрЗаменить( ПараметрыДоставки.ПредставлениеОтчетовПолучателя, Вложение.ПолныйПутьКФайлу, - ПолучитьНавигационнуюСсылкуИнформационнойБазы() +"#"+ ПолучитьНавигационнуюСсылку(Вложение.ФайлСсылка) - ); + ПолучитьНавигационнуюСсылкуИнформационнойБазы() +"#"+ ПолучитьНавигационнуюСсылку(Вложение.ФайлСсылка)); КонецЕсли; // Очистка @@ -906,8 +902,8 @@ Если ТипЗнч(Ссылка) = Тип("СправочникСсылка.ПапкиФайлов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); - Если НЕ Модуль.ЕстьПравоПоЗначениюДоступа("ПометкаУдаленияПапокИФайлов", Ссылка) Тогда + МодульУправлениеДоступом = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); + Если НЕ МодульУправлениеДоступом.ЕстьПравоПоЗначениюДоступа("ПометкаУдаленияПапокИФайлов", Ссылка) Тогда ПометкаНаУдалениеРазрешена = Ложь; КонецЕсли; @@ -931,8 +927,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ФайловыеФункцииВМоделиСервиса") Тогда Если ОбщегоНазначения.ИспользованиеРазделителяСеанса() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебныйВМоделиСервиса"); - Модуль.ОбновитьСостояниеОчередиИзвлеченияТекста(ИсточникТекста, СостояниеИзвлеченияТекста); + МодульФайловыеФункцииСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебныйВМоделиСервиса"); + МодульФайловыеФункцииСлужебныйВМоделиСервиса.ОбновитьСостояниеОчередиИзвлеченияТекста(ИсточникТекста, СостояниеИзвлеченияТекста); КонецЕсли; КонецЕсли; @@ -986,7 +982,8 @@ Исключение // Возможно, файл не был найден. Отправку данных не прерываем. ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Не удалось отправить файл при обмене данными'"), + НСтр("ru = 'Файлы.Не удалось отправить файл при обмене данными'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , diff --git a/SSL/src/CommonModules/РаботаСФайламиСлужебныйВызовСервера/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиСлужебныйВызовСервера/Module.bsl index f5fdae198..782000377 100644 --- a/SSL/src/CommonModules/РаботаСФайламиСлужебныйВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайламиСлужебныйВызовСервера/Module.bsl @@ -289,8 +289,7 @@ Неопределено, // НоваяВерсияДатаСоздания Пользователь, Неопределено, // НоваяВерсияКомментарий - Неопределено // НоваяВерсияНомерВерсии - ); + Неопределено); // НоваяВерсияНомерВерсии ОбновитьВерсиюВФайле(ДокСсылка, ВерсияСсылка, АдресВременногоХранилищаТекста); @@ -1646,7 +1645,8 @@ ИнформацияОбОшибке(), ВерсияСсылка.Владелец); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Открытие файла'"), + НСтр("ru = 'Файлы.Открытие файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.Файлы, ВерсияСсылка.Владелец, @@ -1817,7 +1817,8 @@ ИнформацияОбОшибке(), ФайлСсылка); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Открытие файла'"), + НСтр("ru = 'Файлы.Открытие файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.Файлы, ФайлСсылка, @@ -3188,7 +3189,14 @@ // Процедура ЗаполнитьУсловноеОформлениеСпискаФайлов(Список) Экспорт - Элемент = Список.УсловноеОформление.Элементы.Добавить(); + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + УсловноеОформлениеКД = Список.КомпоновщикНастроек.Настройки.УсловноеОформление; + УсловноеОформлениеКД.ИдентификаторПользовательскойНастройки = "ОсновноеОформление"; + Иначе + УсловноеОформлениеКД = Список.УсловноеОформление; + КонецЕсли; + + Элемент = УсловноеОформлениеКД.Элементы.Добавить(); Элемент.Использование = Истина; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ФайлЗанятыйДругимПользователем); @@ -3198,11 +3206,11 @@ Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Редактирует"); Отбор.ПравоеЗначение = Справочники.Пользователи.ПустаяСсылка(); - Если ЕстьДублирующийсяЭлемент(Список.УсловноеОформление.Элементы, Элемент) Тогда - Список.УсловноеОформление.Элементы.Удалить(Элемент); + Если ЕстьДублирующийсяЭлемент(УсловноеОформлениеКД.Элементы, Элемент) Тогда + УсловноеОформлениеКД.Элементы.Удалить(Элемент); КонецЕсли; - Элемент = Список.УсловноеОформление.Элементы.Добавить(); + Элемент = УсловноеОформлениеКД.Элементы.Добавить(); Элемент.Использование = Истина; Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ФайлЗанятыйТекущимПользователем); @@ -3212,8 +3220,8 @@ Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Редактирует"); Отбор.ПравоеЗначение = Пользователи.ТекущийПользователь(); - Если ЕстьДублирующийсяЭлемент(Список.УсловноеОформление.Элементы, Элемент) Тогда - Список.УсловноеОформление.Элементы.Удалить(Элемент); + Если ЕстьДублирующийсяЭлемент(УсловноеОформлениеКД.Элементы, Элемент) Тогда + УсловноеОформлениеКД.Элементы.Удалить(Элемент); КонецЕсли; КонецПроцедуры @@ -3858,7 +3866,8 @@ ИнформацияОбОшибке(), ВерсияСсылка.Владелец); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Открытие файла'"), + НСтр("ru = 'Файлы.Открытие файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.Файлы, ВерсияСсылка.Владелец, @@ -3964,7 +3973,8 @@ ИнформацияОбОшибке(), ВерсияСсылка.Владелец); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Открытие файла'"), + НСтр("ru = 'Файлы.Открытие файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, Метаданные.Справочники.Файлы, ВерсияСсылка.Владелец, @@ -4541,7 +4551,7 @@ Попытка Объект.НомерВерсии = Число(Объект.Код); - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); Исключение // код например с префиксом базы - не используем. Это не ошибка - т.к. только в старых версиях конфигурации КонецПопытки; @@ -4569,7 +4579,7 @@ Если Объект.ТипХраненияФайла.Пустая() Тогда Объект.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе; - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецЕсли; КонецЦикла; @@ -4593,7 +4603,7 @@ Объект = Выборка.Ссылка.ПолучитьОбъект(); Объект.ОбменДанными.Загрузка = Истина; Объект.ИндексКартинки = ФайловыеФункцииСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Объект.Расширение); - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецЦикла; Запрос = Новый Запрос; @@ -4629,7 +4639,7 @@ Пока Выборка.Следующий() Цикл Объект = Выборка.Ссылка.ПолучитьОбъект(); Объект.ПолныйПутьLinux = Объект.ПолныйПутьWindows; - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецЦикла; КонецПроцедуры @@ -4801,7 +4811,7 @@ Если ТипЗнч(ДанныеВХранилище) = Тип("ДвоичныеДанные") Тогда ЗаписатьФайлВИнформационнуюБазу(Выборка.Ссылка, Объект.ФайлХранилище); Объект.ФайлХранилище = Новый ХранилищеЗначения(""); // очищаем значение - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецЕсли; КонецЦикла; @@ -4828,7 +4838,7 @@ Объект = Выборка.Ссылка.ПолучитьОбъект(); Объект.ДополнительныеСвойства.Вставить("ЗаписьПодписанногоОбъекта", Истина); // чтобы прошла запись ранее подписанного объекта Объект.ДатаЗаема = ДатаЗаема; - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецЕсли; КонецЦикла; diff --git a/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl index 34e8d85df..73fff20be 100644 --- a/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/РаботаСФайламиСлужебныйКлиент/Module.bsl @@ -6,6 +6,15 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС +// Открывает форму папки со списком файлов. +Процедура РассылкаОтчетовПросмотрПапки(СтандартнаяОбработка, Папка) Экспорт + + СтандартнаяОбработка = Ложь; + ПараметрыФормы = Новый Структура("Папка", Папка); + ОткрытьФорму("Справочник.Файлы.Форма.ХранилищеФайлов", ПараметрыФормы, , Папка); + +КонецПроцедуры + // Добавляет предупреждения пользователю при завершении работы программы. Процедура ПриЗавершенииРаботыСистемы(Предупреждения) Экспорт Ответ = ПроверитьЗанятыеФайлыПриЗавершенииРаботы(); @@ -2012,9 +2021,7 @@ МаксимальнаяДлинаПолногоПути, ИмяФайлаСПутем); - Оболочка = Новый COMОбъект("WScript.Shell"); - ПутьКаталогаПользователя = Оболочка.ExpandEnvironmentStrings("%APPDATA%"); - ПутьКаталогаПользователя = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКаталогаПользователя, ОбщегоНазначенияКлиентПовтИсп.ТипПлатформыКлиента()); + ПутьКаталогаПользователя = КаталогДанныхПользователя(); МаксимальнаяДлинаИмениФайла = МаксимальнаяДлинаПолногоПути - СтрДлина(ПутьКаталогаПользователя); // если имя файла плюс 5 превышает 260 - пишем "Измените имя файла на более короткое. ОК" и выходим. @@ -2430,8 +2437,14 @@ ЗаголовокСтрока = ОбщегоНазначенияКлиентСервер.ПолучитьИмяСРасширением( ДанныеФайла.ПолноеНаименованиеВерсии, ДанныеФайла.Расширение); + + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ИмяДокумента", ЗаголовокСтрока); + ПараметрыОткрытия.Вставить("ПутьКФайлу", ИмяОткрываемогоФайла); + ПараметрыОткрытия.Вставить("ТабличныйДокумент", ТабличныйДокумент); + + ОткрытьФорму("ОбщаяФорма.РедактированиеТабличногоДокумента", ПараметрыОткрытия); - ТабличныйДокумент.Показать(ЗаголовокСтрока, ИмяОткрываемогоФайла); Возврат; КонецЕсли; @@ -2503,25 +2516,16 @@ ПутьВыбора = ДанныеФайла.ПапкаДляСохранитьКак; Если ПутьВыбора = Неопределено ИЛИ ПутьВыбора = "" Тогда - ПутьВыбора = ""; - #Если НЕ ВебКлиент Тогда - - Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ЭтоБазоваяВерсияКонфигурации Тогда - ОбщегоНазначенияКлиентСервер.СообщитьПользователю( - НСтр("ru = 'Данная команда не поддерживается в базовой версии.'")); - Возврат ""; - КонецЕсли; + #Если НЕ ВебКлиент Тогда + Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ЭтоБазоваяВерсияКонфигурации Тогда + ОбщегоНазначенияКлиентСервер.СообщитьПользователю( + НСтр("ru = 'Данная команда не поддерживается в базовой версии.'")); + Возврат ""; + КонецЕсли; + #КонецЕсли + + ПутьВыбора = ФайловыеФункцииСлужебныйКлиент.КаталогМоиДокументы(); - Оболочка = Новый COMОбъект("MSScriptControl.ScriptControl"); - Оболочка.Language = "vbscript"; - Оболочка.AddCode(" - |Function SpecialFoldersName(Name) - |set Shell=CreateObject(""WScript.Shell"") - |SpecialFoldersName=Shell.SpecialFolders(Name) - |End Function"); - ПутьВыбора = Оболочка.Run("SpecialFoldersName", "MyDocuments"); - #КонецЕсли - КонецЕсли; Пароль = ""; @@ -3104,24 +3108,15 @@ Если ПутьВыбора = Неопределено ИЛИ ПутьВыбора = "" Тогда #Если НЕ ВебКлиент Тогда - Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ЭтоБазоваяВерсияКонфигурации Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Данная команда не поддерживается в базовой версии.'")); Возврат Ложь; КонецЕсли; - - Оболочка = Новый COMОбъект("MSScriptControl.ScriptControl"); - Оболочка.Language = "vbscript"; - Оболочка.AddCode(" - |Function SpecialFoldersName(Name) - |set Shell=CreateObject(""WScript.Shell"") - |SpecialFoldersName=Shell.SpecialFolders(Name) - |End Function"); - ПутьВыбора = Оболочка.Run("SpecialFoldersName", "MyDocuments"); - #Иначе - ПутьВыбора = ""; #КонецЕсли + + ПутьВыбора = ФайловыеФункцииСлужебныйКлиент.КаталогМоиДокументы(); + КонецЕсли; Диалог.Заголовок = НСтр("ru = 'Выбор файла'"); @@ -3810,6 +3805,10 @@ // Инициализация компоненты сканирования. Функция ПроинициализироватьКомпоненту() Экспорт + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат Ложь; + КонецЕсли; + Если КомпонентаTwain = Неопределено Тогда КодВозврата = ПодключитьВнешнююКомпоненту( @@ -3829,6 +3828,10 @@ // Установка компоненты сканирования. Процедура УстановитьКомпоненту() Экспорт + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; + КонецЕсли; + ТекстСостояния = НСтр("ru = 'Компонента сканирования уже установлена.'"); Если КомпонентаTwain = Неопределено Тогда @@ -3857,7 +3860,6 @@ КонецПроцедуры - // Возвращает версию компоненты сканирования. Функция ВерсияКомпонентыСканирования() Экспорт @@ -3889,7 +3891,6 @@ КонецФункции - // Открывает диалог сканирования и просмотра картинки. Процедура СканироватьИПоказатьДиалогПросмотра( ВладелецФайла, @@ -3897,6 +3898,10 @@ ЭтаФорма, НеОткрыватьКарточкуПослеСозданияИзФайла = Неопределено) Экспорт + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; + КонецЕсли; + СистемнаяИнформация = Новый СистемнаяИнформация(); ИдентификаторКлиента = СистемнаяИнформация.ИдентификаторКлиента; @@ -3907,13 +3912,17 @@ ПараметрыФормы.Вставить( "НеОткрыватьКарточкуПослеСозданияИзФайла", НеОткрыватьКарточкуПослеСозданияИзФайла); - ОткрытьФормуМодально("Справочник.Файлы.Форма.РезультатСканирования", ПараметрыФормы); + ОткрытьФорму("Справочник.Файлы.Форма.РезультатСканирования", ПараметрыФормы); КонецПроцедуры // Проверяет установлена ли компонента сканирования и есть ли хоть один сканер. Функция ДоступнаКомандаСканировать() Экспорт - + + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат Ложь; + КонецЕсли; + Если Не ПроинициализироватьКомпоненту() Тогда Возврат Ложь; КонецЕсли; @@ -3926,7 +3935,6 @@ КонецФункции - // Возвращает настройку сканера по имени. // // Параметры: @@ -3940,6 +3948,10 @@ // Функция ПолучитьНастройку(ИмяУстройства, ИмяНастройки) Экспорт + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат -1; + КонецЕсли; + Попытка Возврат КомпонентаTwain.ПолучитьНастройку(ИмяУстройства, ИмяНастройки); Исключение @@ -4075,13 +4087,13 @@ Если ИмяФайлаСПутем <> "" Тогда // Тут надо еще на наличие на диске проверять ФайлНаДиске = Новый Файл(ИмяФайлаСПутем); - Если ФайлНаДиске.Существует() Тогда + Если ФайлНаДиске.Существует() Тогда Возврат Истина; Иначе ИмяФайлаСПутем = ""; // Тут же удалим из регистра - т.к. в регистре есть, а на диске нет РаботаСФайламиСлужебныйВызовСервера.УдалитьИзРегистра(ТекущаяВерсия); - КонецЕсли; + КонецЕсли; КонецЕсли; Возврат Ложь; @@ -4438,9 +4450,7 @@ МаксимальнаяДлинаПолногоПути, ИмяФайлаСПутем); - Оболочка = Новый COMОбъект("WScript.Shell"); - ПутьКаталогаПользователя = Оболочка.ExpandEnvironmentStrings("%APPDATA%"); - ПутьКаталогаПользователя = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПутьКаталогаПользователя, ОбщегоНазначенияКлиентПовтИсп.ТипПлатформыКлиента()); + ПутьКаталогаПользователя = КаталогДанныхПользователя(); МаксимальнаяДлинаИмениФайла = МаксимальнаяДлинаПолногоПути - СтрДлина(ПутьКаталогаПользователя); // если имя файла плюс 5 превышает 260 - пишем "Измените имя файла на более короткое. ОК" и выходим. @@ -5230,3 +5240,26 @@ Возврат Свойства; КонецФункции +// Возвращает каталог данных пользователя внутри стандартного каталога данных приложения. +// Этот каталог может использоваться для хранения файлов, захваченных текущим пользователем. +// Для работы метода на веб-клиенте под 8.3 необходимо предварительно подключить расширение работы с файлами. +// +Функция КаталогДанныхПользователя() + + #Если ВебКлиент Тогда + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Возврат Вычислить("РабочийКаталогДанныхПользователя()"); + Иначе + Возврат ""; + КонецЕсли; + #Иначе + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат Вычислить("РабочийКаталогДанныхПользователя()"); + Иначе + Оболочка = Новый COMОбъект("WScript.Shell"); + КаталогДанныхПользователя = Оболочка.ExpandEnvironmentStrings("%APPDATA%"); + Возврат ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогДанныхПользователя); + КонецЕсли; + #КонецЕсли + +КонецФункции diff --git a/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl b/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl index 3a2ba4451..5059c5005 100644 --- a/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl +++ b/SSL/src/CommonModules/РассылкаОтчетов/Module.bsl @@ -31,7 +31,7 @@ КонецЕсли; Если НЕ ПараметрыЖурнала.Свойство("ИмяСобытия") Тогда - ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Запуск по требованию'")); + ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Запуск по требованию'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); КонецЕсли; Если НЕ ПараметрыЖурнала.Свойство("Данные") Тогда @@ -60,8 +60,7 @@ КонецЕсли; ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Предупреждение, - НСтр("ru = 'Завершение'"), СокрЛП(Причина) - ); + НСтр("ru = 'Завершение'"), СокрЛП(Причина)); Возврат Ложь; КонецЕсли; @@ -145,8 +144,7 @@ И НЕ ПараметрыДоставки.ИспользоватьЭлектроннуюПочту Тогда ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Предупреждение, - НСтр("ru = 'Не выбран способ доставки.'") - ); + НСтр("ru = 'Не выбран способ доставки.'")); Возврат Ложь; КонецЕсли; @@ -186,9 +184,7 @@ ?( Рассылка.ПисьмоВФорматеHTML, Рассылка.ТекстПисьмаВФорматеHTML, - Рассылка.ТекстПисьма - ) - ); + Рассылка.ТекстПисьма)); // Получатели Если ПредварительныеНастройки <> Неопределено И ПредварительныеНастройки.Свойство("Получатели") Тогда @@ -367,8 +363,7 @@ ЗаписьЖурнала(ПараметрыЖурнала, , НСтр("ru = 'Инициализирована рассылка %1, автор: %2'"), , "'"+ Строка(Рассылка) +"'", - "'"+ Строка(ПараметрыДоставки.Автор) +"'" - ); + "'"+ Строка(ПараметрыДоставки.Автор) +"'"); // Формирование и сохранение отчетов НомерОтчета = 1; @@ -379,8 +374,7 @@ КонецЕсли; ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Примечание, ТекстЖурнала, , - "'"+ Строка(СтрокаОтчет.Отчет) +"'" - ); + "'"+ Строка(СтрокаОтчет.Отчет) +"'"); // Инициализация отчета ПараметрыОтчета = Новый Структура("Отчет, Настройки, Форматы, ОтправлятьЕслиПустой"); @@ -399,8 +393,7 @@ ПараметрыОтчета, ДеревоОтчетов, ПараметрыДоставки, - КлючИЗначение.Ключ // Получатель - ); + КлючИЗначение.Ключ); // Получатель КонецЦикла; Иначе // Без персонализации @@ -409,27 +402,23 @@ ПараметрыОтчета, ДеревоОтчетов, ПараметрыДоставки, - Неопределено // Получатель - ); + Неопределено); // Получатель КонецЕсли; ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Примечание, НСтр("ru = 'Отчет %1 успешно сформирован'"), , - "'"+ Строка(СтрокаОтчет.Отчет) +"'" - ); + "'"+ Строка(СтрокаОтчет.Отчет) +"'"); НомерОтчета = НомерОтчета + 1; Исключение ЗаписьЖурнала(ПараметрыЖурнала, , НСтр("ru = 'Отчет %1 не сформирован:'"), ИнформацияОбОшибке(), - "'"+ Строка(СтрокаОтчет.Отчет) +"'" - ); + "'"+ Строка(СтрокаОтчет.Отчет) +"'"); КонецПопытки; КонецЦикла; // Проверка на количество сохраненных отчетов Если ДеревоОтчетов.Строки.Найти(3, "Уровень", Истина) = Неопределено Тогда ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Предупреждение, - НСтр("ru = 'Не сохранено ни одного отчета'"), , - ); + НСтр("ru = 'Не сохранено ни одного отчета'"), ,); УдалитьВременныеФайлы(ПараметрыЖурнала, ПараметрыДоставки); Возврат Ложь; КонецЕсли; @@ -466,15 +455,13 @@ ОтправитьОтчетыПолучателю( ВложенияПолучателя, ПараметрыДоставки, - СтрокаПолучатель - ); + СтрокаПолучатель); РассылкаВыполнена = Истина; ПараметрыДоставки.ВыполненаПоЭлектроннойПочте = Истина; Исключение ЗаписьЖурнала(ПараметрыЖурнала, , НСтр("ru = 'Ошибка отправки отчетов получателю %1:'"), ИнформацияОбОшибке(), - "'"+ Строка(СтрокаПолучатель.Ключ) +"'" - ); + "'"+ Строка(СтрокаПолучатель.Ключ) +"'"); КонецПопытки; // @@ -665,8 +652,7 @@ СтрокаТаблицы.Выполнена = ПодготовитьПараметрыИВыполнитьРассылку( СтрокаТаблицы.Рассылка, ПараметрыЖурнала, - ПредварительныеНастройки - ); + ПредварительныеНастройки); СтрокаТаблицы.СОшибками = (ПараметрыЖурнала.МассивОшибок.Количество() > 0); Если СтрокаТаблицы.СОшибками Тогда @@ -709,8 +695,7 @@ + ?(Результат.Текст= "", "", Символы.ПС + Символы.ПС) + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ШаблонСообщения, - "'"+ СтрокаТаблицы.Представление +"'" - ); + "'"+ СтрокаТаблицы.Представление +"'"); КонецЦикла; Иначе Результат.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -721,8 +706,7 @@ Формат(Подготовлено, "ЧН=0; ЧГ=0"), Формат(Всего, "ЧН=0; ЧГ=0"), Формат(Выполнено, "ЧН=0; ЧГ=0"), Формат(СОшибками, "ЧН=0; ЧГ=0"), - Формат(НеВыполнено, "ЧН=0; ЧГ=0") - ); + Формат(НеВыполнено, "ЧН=0; ЧГ=0")); КонецЕсли; Результат.Оповестить = Ложь; @@ -809,13 +793,12 @@ Если НЕ Рассылка.ВыполнятьПоРасписанию Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'У рассылки отчетов ""%1"" отключен флажок ""Выполнять по расписанию""'"), - Строка(Рассылка) - ); + Строка(Рассылка)); КонецЕсли; // Параметры записи в журнал регистрации ПараметрыЖурнала = Новый Структура("ИмяСобытия, Метаданные, Данные"); - ПараметрыЖурнала.ИмяСобытия = НСтр("ru = 'Рассылка отчетов. Запуск по расписанию'"); + ПараметрыЖурнала.ИмяСобытия = НСтр("ru = 'Рассылка отчетов. Запуск по расписанию'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); ПараметрыЖурнала.Метаданные = Рассылка.Метаданные(); ПараметрыЖурнала.Данные = Рассылка; @@ -983,8 +966,7 @@ Исключение ЗаписьЖурнала(ПараметрыЖурнала, , ШаблонСообщенияОбОшибке, ИнформацияОбОшибке(), - Строка(ТипПолучателей) - ); + Строка(ТипПолучателей)); Возврат СписокПолучателей; КонецПопытки; @@ -994,8 +976,7 @@ Исключение ЗаписьЖурнала(ПараметрыЖурнала, , ШаблонСообщенияОбОшибке, ИнформацияОбОшибке(), - Строка(ТипПолучателей) - ); + Строка(ТипПолучателей)); Возврат СписокПолучателей; КонецПопытки; @@ -1026,8 +1007,7 @@ ТекстОшибок, "", "'"+ Строка(ТипПолучателей) +"'", "'"+ Строка(ПараметрыЖурнала.Данные) +"'", - "'"+ Строка(ВидКИ) +"'" - ); + "'"+ Строка(ВидКИ) +"'"); КонецЕсли; Возврат СписокПолучателей; @@ -1091,8 +1071,7 @@ МассивРеквизитов = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( "Имя, ЭтоВариант, СКД, Метаданные, Объект, " + // общие параметры "СхемаКД, КомпоновщикНастроекКД, АдресСхемыКД, НастройкиКД, " + // параметры СКД отчетов - "ДоступныеРеквизиты", // параметры произвольных отчетов - ); + "ДоступныеРеквизиты",); // параметры произвольных отчетов Для Каждого ИмяРеквизита Из МассивРеквизитов Цикл ИмяРеквизита = СокрЛП(ИмяРеквизита); Если НЕ ПараметрыОтчета.Свойство(ИмяРеквизита) Тогда @@ -1104,14 +1083,20 @@ ПараметрыОтчета.ЭтоВариант = (ТипЗнч(ПараметрыОтчета.Отчет) = Тип("СправочникСсылка.ВариантыОтчетов")); Если ПараметрыОтчета.ЭтоВариант Тогда + Если ПараметрыОтчета.Отчет.Отчет = Неопределено Тогда + ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, + НСтр("ru = 'Варианта отчета %1 не найден в программе'"), , + "'"+ Строка(ПараметрыОтчета.Отчет) +"'"); + Возврат ПараметрыОтчета.Инициализирован; + КонецЕсли; + ПараметрыОтчета.Имя = ПараметрыОтчета.Отчет.Отчет.Имя; ПараметрыОтчета.Метаданные = Метаданные.Отчеты.Найти(ПараметрыОтчета.Имя); Если ПараметрыОтчета.Метаданные = Неопределено Тогда ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, - НСтр("ru = 'Для варианта %1 отчет %2 не найден в системе'"), , + НСтр("ru = 'Для варианта %1 отчет %2 не найден в программе'"), , "'"+ Строка(ПараметрыОтчета.Отчет) +"'", - "'"+ ПараметрыОтчета.Имя +"'" - ); + "'"+ ПараметрыОтчета.Имя +"'"); Возврат ПараметрыОтчета.Инициализирован; КонецЕсли; @@ -1129,16 +1114,14 @@ Исключение ЗаписьЖурнала(ПараметрыЖурнала, , ЗаголовокСообщенияОбОшибке, ИнформацияОбОшибке(), - "'"+ Строка(ПараметрыОтчета.Отчет) +"'" - ); + "'"+ Строка(ПараметрыОтчета.Отчет) +"'"); КонецПопытки; Если Результат <> Истина Тогда Если Результат = Неопределено Тогда ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, ЗаголовокСообщенияОбОшибке, НСтр("ru = 'Подсистема ''Дополнительные отчеты и обработки'' недоступна.'"), - "'"+ Строка(ПараметрыОтчета.Отчет) +"'" - ); + "'"+ Строка(ПараметрыОтчета.Отчет) +"'"); КонецЕсли; Возврат ПараметрыОтчета.Инициализирован; КонецЕсли; @@ -1147,16 +1130,14 @@ Если ТипЗнч(СведенияОВнешнейОбработке) <> Тип("Структура") Тогда ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, ЗаголовокСообщенияОбОшибке, НСтр("ru = 'Неверно заполнены сведения о внешней обработке.'"), - "'"+ Строка(ПараметрыОтчета.Отчет) +"'" - ); + "'"+ Строка(ПараметрыОтчета.Отчет) +"'"); Возврат ПараметрыОтчета.Инициализирован; КонецЕсли; Если НЕ СведенияОВнешнейОбработке.Свойство("РассылкаОтчетов") ИЛИ СведенияОВнешнейОбработке.РассылкаОтчетов <> Истина Тогда ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, ЗаголовокСообщенияОбОшибке, НСтр("ru = 'Не указаны сведения о внешней обработке, необходимые для рассылки.'"), - "'"+ Строка(ПараметрыОтчета.Отчет) +"'" - ); + "'"+ Строка(ПараметрыОтчета.Отчет) +"'"); Возврат ПараметрыОтчета.Инициализирован; КонецЕсли; @@ -1185,8 +1166,7 @@ Если ОпределенИдентификаторФормы Тогда ПараметрыОтчета.АдресСхемыКД = ПоместитьВоВременноеХранилище( ПараметрыОтчета.Объект.СхемаКомпоновкиДанных, - УникальныйИдентификаторФормы - ); + УникальныйИдентификаторФормы); КонецЕсли; // Описывает связь настроек компоновки данных и схемы компоновки данных. @@ -1198,9 +1178,7 @@ // Выполняет инициализацию компоновщика и его настроек (Настройки) источником доступных настроек. КомпоновщикНастроекКД.Инициализировать( Новый ИсточникДоступныхНастроекКомпоновкиДанных( - ?(ОпределенИдентификаторФормы, ПараметрыОтчета.АдресСхемыКД, ПараметрыОтчета.СхемаКД) - ) - ); + ?(ОпределенИдентификаторФормы, ПараметрыОтчета.АдресСхемыКД, ПараметрыОтчета.СхемаКД))); // Настройка компоновки данных в целом. Если ПараметрыОтчета.ЭтоВариант Тогда @@ -1213,8 +1191,7 @@ ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, НСтр("ru = 'Вариант ""%1"" не найден для отчета ""%2""'"), , Строка(ПараметрыОтчета.Отчет), - ПараметрыОтчета.Имя - ); + ПараметрыОтчета.Имя); Возврат ПараметрыОтчета.Инициализирован; КонецЕсли; ПараметрыОтчета.НастройкиКД = ВариантНастроекКД.Настройки; @@ -1269,8 +1246,7 @@ ПараметрыОтчета.ДоступныеРеквизиты = Новый Структура; Для Каждого Реквизит Из ПараметрыОтчета.Метаданные.Реквизиты Цикл ПараметрыОтчета.ДоступныеРеквизиты.Вставить(Реквизит.Имя, - Новый Структура("Представление, Тип", Реквизит.Представление(), Реквизит.Тип) - ); + Новый Структура("Представление, Тип", Реквизит.Представление(), Реквизит.Тип)); КонецЦикла; Если ЗначениеЗаполнено(ПараметрыОтчета.Настройки) Тогда @@ -1326,8 +1302,7 @@ Если НЕ ПараметрыОтчета.Свойство("Инициализирован") Тогда ЗаписьЖурнала(ПараметрыЖурнала, , НСтр("ru = 'Отчет ''%1'' не инициализирован'"), , - Строка(ПараметрыОтчета.Отчет) - ); + Строка(ПараметрыОтчета.Отчет)); Возврат Результат; КонецЕсли; @@ -1364,8 +1339,7 @@ КонецЦикла; ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, НСтр("ru = 'Отчет ''%1'' не прошел проверку заполнения:'"), СокрЛ(ТекстИсключения), - Строка(ПараметрыОтчета.Отчет) - ); + Строка(ПараметрыОтчета.Отчет)); Результат.ТабДок = Неопределено; Возврат Результат; КонецЕсли; @@ -1504,16 +1478,14 @@ ПараметрыДоставки.ПредставлениеОтчетовПолучателя = СтрЗаменить( ПараметрыДоставки.ПредставлениеОтчетовПолучателя, Вложение.Значение, - ПараметрыДоставки.СетевойКаталогWindows + Вложение.Ключ - ); + ПараметрыДоставки.СетевойКаталогWindows + Вложение.Ключ); КонецЕсли; КонецЦикла; Результат = Истина; ПараметрыДоставки.ВыполненаВСетевойКаталог = Истина; Исключение ЗаписьЖурнала(ПараметрыЖурнала, , - ШаблонСообщенияОбОшибке, ИнформацияОбОшибке() - ); + ШаблонСообщенияОбОшибке, ИнформацияОбОшибке()); КонецПопытки; КонецЕсли; // ПараметрыДоставки.ИспользоватьСетевойКаталог @@ -1532,8 +1504,7 @@ ПараметрыДоставки.Пароль, Прокси, ПараметрыДоставки.ПассивноеСоединение, - 15 - ); + 15); Соединение.УстановитьТекущийКаталог(ПараметрыДоставки.Каталог); Для Каждого Вложение Из Вложения Цикл Соединение.Записать(Вложение.Значение, ПараметрыДоставки.Каталог + Вложение.Ключ); @@ -1541,8 +1512,7 @@ ПараметрыДоставки.ПредставлениеОтчетовПолучателя = СтрЗаменить( ПараметрыДоставки.ПредставлениеОтчетовПолучателя, Вложение.Значение, - Цель + Вложение.Ключ - ); + Цель + Вложение.Ключ); КонецЕсли; КонецЦикла; @@ -1550,8 +1520,7 @@ ПараметрыДоставки.ВыполненаНаFTP = Истина; Исключение ЗаписьЖурнала(ПараметрыЖурнала, , - ШаблонСообщенияОбОшибке, ИнформацияОбОшибке(), - ); + ШаблонСообщенияОбОшибке, ИнформацияОбОшибке(),); КонецПопытки; КонецЕсли; // ПараметрыДоставки.ИспользоватьFTPРесурс @@ -1564,8 +1533,7 @@ ПараметрыДоставки.ВыполненаВПапку = Истина; Исключение ЗаписьЖурнала(ПараметрыЖурнала, , - ШаблонСообщенияОбОшибке, ИнформацияОбОшибке() - ); + ШаблонСообщенияОбОшибке, ИнформацияОбОшибке()); КонецПопытки; КонецЕсли; // ПараметрыДоставки.ИспользоватьПапку @@ -1590,8 +1558,7 @@ КонецЕсли; Исключение ЗаписьЖурнала(ПараметрыЖурнала, , - ШаблонСообщенияОбОшибке, ИнформацияОбОшибке() - ); + ШаблонСообщенияОбОшибке, ИнформацияОбОшибке()); КонецПопытки; КонецЕсли; // ПараметрыДоставки.ИспользоватьЭлектроннуюПочту @@ -1615,8 +1582,7 @@ УстановитьПривилегированныйРежим(Истина); ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору( - ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяИБ") - ); + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяИБ")); Если ПользовательИБ = Неопределено Тогда Возврат Неопределено; КонецЕсли; @@ -1666,14 +1632,12 @@ ЗаписатьВЖурнал = ЗначениеЗаполнено(ПараметрыЖурнала.Данные); СообщитьПользователю = ПараметрыЖурнала.Свойство("МассивОшибок") И ( УровеньЖурнала = УровеньЖурналаРегистрации.Ошибка - ИЛИ УровеньЖурнала = УровеньЖурналаРегистрации.Предупреждение - ); + ИЛИ УровеньЖурнала = УровеньЖурналаРегистрации.Предупреждение); // Комментарий для журнала регистрации и пользователя Если Параметр1 <> Неопределено Тогда КомментарийСПараметрами = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - КомментарийСПараметрами, Параметр1, Параметр2, Параметр3, Параметр4 - ); + КомментарийСПараметрами, Параметр1, Параметр2, Параметр3, Параметр4); КонецЕсли; ТекстДляЖурнала = КомментарийСПараметрами; @@ -1696,8 +1660,7 @@ УровеньЖурнала, ПараметрыЖурнала.Метаданные, ПараметрыЖурнала.Данные, - ТекстДляЖурнала - ); + ТекстДляЖурнала); УстановитьПривилегированныйРежим(Ложь); КонецЕсли; @@ -1784,8 +1747,7 @@ + " (" + ПараметрыФормата.Имя + ")" - + ?(ПараметрыФормата.Расширение = Неопределено, "", ПараметрыФормата.Расширение) - ); + + ?(ПараметрыФормата.Расширение = Неопределено, "", ПараметрыФормата.Расширение)); НайтиСвободноеИмяФайла(ПолноеИмяФайла); @@ -1796,8 +1758,7 @@ СтандартнаяОбработка, СтрокаОтчет.Значение, Формат, - ПолноеИмяФайла - ); + ПолноеИмяФайла); // Сохранение отчета встроенными средствами подсистемы Если СтандартнаяОбработка = Истина Тогда @@ -1807,8 +1768,7 @@ ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, ЗаголовокОшибки, НСтр("ru = 'Формат не поддерживается'"), "'"+ СтрокаОтчет.Ключ +"'", - "'"+ ПараметрыФормата.Имя +"'" - ); + "'"+ ПараметрыФормата.Имя +"'"); Продолжить; КонецЕсли; @@ -1818,8 +1778,7 @@ ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, ЗаголовокОшибки, ИнформацияОбОшибке(), "'"+ СтрокаОтчет.Ключ +"'", - "'"+ ПараметрыФормата.Имя +"'" - ); + "'"+ ПараметрыФормата.Имя +"'"); Продолжить; КонецПопытки; КонецЕсли; // СтандартнаяОбработка @@ -1831,8 +1790,7 @@ ЗаголовокОшибки + Символы.ПС + НСтр("ru = 'Файл %3 не найден.'"), , "'"+ СтрокаОтчет.Ключ +"'", "'"+ ПараметрыФормата.Имя +"'", - "'"+ ВременныйФайл.ПолноеИмя +"'" - ); + "'"+ ВременныйФайл.ПолноеИмя +"'"); Продолжить; КонецЕсли; @@ -1918,7 +1876,7 @@ КонецЕсли; Если НЕ ПараметрыЖурнала.Свойство("ИмяСобытия") Тогда - ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Запуск по требованию'")); + ПараметрыЖурнала.Вставить("ИмяСобытия", НСтр("ru = 'Рассылка отчетов. Запуск по требованию'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); КонецЕсли; Если НЕ ПараметрыЖурнала.Свойство("Данные") Тогда @@ -1948,8 +1906,7 @@ Если НЕ ЗначениеЗаполнено(ПараметрыДоставки.Папка) Тогда ПараметрыДоставки.ИспользоватьПапку = Ложь; ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Предупреждение, - НСтр("ru = 'Папка не заполнена, доставка в папку отключена'"), , - ); + НСтр("ru = 'Папка не заполнена, доставка в папку отключена'"), ,); Иначе ПравоДоступа = Истина; ПриОпределенииПраваИзмененияПапкиИФайлов(ПараметрыДоставки.Папка, ПравоДоступа); @@ -1960,8 +1917,7 @@ УстановитьПривилегированныйРежим(Ложь); ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, НСтр("ru = 'Недостаточно прав на изменение файлов папки %1, доставка в папку отключена'"), , - "'"+ ПредставлениеПапки +"'" - ); + "'"+ ПредставлениеПапки +"'"); КонецЕсли; КонецЕсли; КонецЕсли; @@ -1981,17 +1937,14 @@ ПараметрыДоставки.ИспользоватьСетевойКаталог = Ложь; ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, НСтр("ru = 'Сетевой каталог %1 не выбран, доставка в сетевой каталог отключена'"), , - ЗначениеПодстановки - ); + ЗначениеПодстановки); Иначе ПараметрыДоставки.СетевойКаталогWindows = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( - ПараметрыДоставки.СетевойКаталогWindows - ); + ПараметрыДоставки.СетевойКаталогWindows); ПараметрыДоставки.СетевойКаталогLinux = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( - ПараметрыДоставки.СетевойКаталогLinux - ); + ПараметрыДоставки.СетевойКаталогLinux); КонецЕсли; КонецЕсли; @@ -1999,15 +1952,13 @@ Если ПараметрыДоставки.ИспользоватьFTPРесурс И НЕ ЗначениеЗаполнено(ПараметрыДоставки.Сервер) Тогда ПараметрыДоставки.ИспользоватьFTPРесурс = Ложь; ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, - НСтр("ru = 'FTP сервер не заполнен, доставка в папку на FTP ресурс отключена'") - ); + НСтр("ru = 'FTP сервер не заполнен, доставка в папку на FTP ресурс отключена'")); КонецЕсли; Если ПараметрыДоставки.ИспользоватьЭлектроннуюПочту И НЕ ЗначениеЗаполнено(ПараметрыДоставки.УчетнаяЗапись) Тогда ПараметрыДоставки.ИспользоватьЭлектроннуюПочту = Ложь; ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, - НСтр("ru = 'Учетная запись не выбрана, доставка по электронной почте отключена'") - ); + НСтр("ru = 'Учетная запись не выбрана, доставка по электронной почте отключена'")); КонецЕсли; Если НЕ ПараметрыДоставки.Свойство("Персонализирована") Тогда @@ -2017,8 +1968,7 @@ Если ПараметрыДоставки.Персонализирована Тогда Если НЕ ПараметрыДоставки.ИспользоватьЭлектроннуюПочту Тогда ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, - НСтр("ru = 'Персонализированная рассылка может быть отправлена только по электронной почте'") - ); + НСтр("ru = 'Персонализированная рассылка может быть отправлена только по электронной почте'")); Возврат Ложь; КонецЕсли; ПараметрыДоставки.ИспользоватьПапку = Ложь; @@ -2044,8 +1994,7 @@ ИЛИ ПараметрыДоставки.ИспользоватьFTPРесурс) Тогда ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Предупреждение, - НСтр("ru = 'Использование уведомлений по электронной почте возможно только совместно с другими способами доставки'") - ); + НСтр("ru = 'Использование уведомлений по электронной почте возможно только совместно с другими способами доставки'")); Возврат Ложь; КонецЕсли; @@ -2084,8 +2033,7 @@ ПараметрыДоставки.ШаблонТекста = СтрЗаменить( ПараметрыДоставки.ШаблонТекста, "<img src='"+ КлючИЗначение.Ключ +"' width='", - "<img src='"+ НовыйКлюч +"' width='" - ); + "<img src='"+ НовыйКлюч +"' width='"); КонецЕсли; КонецЕсли; // КонецЦикла; // КлючИЗначение Из ПараметрыПисьма.ПредустановленныеВложения @@ -2129,32 +2077,26 @@ // Шаблон темы ПараметрыДоставки.ШаблонТемы = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон( ПараметрыДоставки.ШаблонТемы, - СтруктураЗаполненияШаблонов - ); + СтруктураЗаполненияШаблонов); // Шаблон сообщения ПараметрыДоставки.ШаблонТекста = РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон( ПараметрыДоставки.ШаблонТекста, - СтруктураЗаполненияШаблонов - ); + СтруктураЗаполненияШаблонов); // Признаки необходимости заполнения шаблонов (кэш проверок) ПараметрыДоставки.Вставить( "ЗаполнитьПолучателяВШаблонеТемы", - Найти(ПараметрыДоставки.ШаблонТемы, "[Получатель]") <> 0 - ); + Найти(ПараметрыДоставки.ШаблонТемы, "[Получатель]") <> 0); ПараметрыДоставки.Вставить( "ЗаполнитьПолучателяВШаблонеСообщения", - Найти(ПараметрыДоставки.ШаблонТекста, "[Получатель]") <> 0 - ); + Найти(ПараметрыДоставки.ШаблонТекста, "[Получатель]") <> 0); ПараметрыДоставки.Вставить( "ЗаполнитьСформированныеОтчетыВШаблонеСообщения", - Найти(ПараметрыДоставки.ШаблонТекста, "[СформированныеОтчеты]") <> 0 - ); + Найти(ПараметрыДоставки.ШаблонТекста, "[СформированныеОтчеты]") <> 0); ПараметрыДоставки.Вставить( "ЗаполнитьСпособДоставкиВШаблонеСообщения", - Найти(ПараметрыДоставки.ШаблонТекста, "[СпособДоставки]") <> 0 - ); + Найти(ПараметрыДоставки.ШаблонТекста, "[СпособДоставки]") <> 0); // ПараметрыДоставки.Вставить("ПредставлениеОтчетовПолучателя", ""); @@ -2163,9 +2105,7 @@ // Каталог временных файлов ПараметрыДоставки.Вставить("КаталогВременныхФайлов", ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути( - ПолучитьИмяВременногоФайла(".RP") // RP = report publishing, RD = report distribution - ) - ); + ПолучитьИмяВременногоФайла(".RP"))); // RP = report publishing, RD = report distribution СоздатьКаталог(ПараметрыДоставки.КаталогВременныхФайлов); // Соответствие каталогов временных файлов получателей @@ -2190,10 +2130,7 @@ РассылкаОтчетовКлиентСервер.ЗаполнитьШаблон(ПараметрыДоставки.ИмяАрхива, Новый Структура("НаименованиеРассылки, ДатаВыполнения", ПараметрыДоставки.Рассылка, - ТекущаяДатаСеанса() - ) - ) - ); + ТекущаяДатаСеанса()))); // Расширение Если НРег(Прав(ПараметрыДоставки.ИмяАрхива, 4)) <> ".zip" Тогда @@ -2268,8 +2205,7 @@ ПараметрыДоставки.ПредставлениеОтчетовПолучателя = СтрЗаменить( ПараметрыДоставки.ПредставлениеОтчетовПолучателя, Символы.ПС, - Символы.ПС + "<br>" - ); + Символы.ПС + "<br>"); КонецЕсли; ШаблонТекста = СтрЗаменить(ШаблонТекста, "[СформированныеОтчеты]", ПараметрыДоставки.ПредставлениеОтчетовПолучателя); КонецЕсли; @@ -2400,20 +2336,17 @@ Если ПараметрыДоставки.ПисьмоВФорматеHTML Тогда ПараметрыДоставки.ПредставлениеОтчетовПолучателя = СокрЛП( ПараметрыДоставки.ПредставлениеОтчетовПолучателя - +"<a href = '"+ ПолноеИмяФайла +"'>"+ ПараметрыДоставки.ИмяАрхива +"</a>" - ); + +"<a href = '"+ ПолноеИмяФайла +"'>"+ ПараметрыДоставки.ИмяАрхива +"</a>"); Иначе ПараметрыДоставки.ПредставлениеОтчетовПолучателя = СокрЛП( ПараметрыДоставки.ПредставлениеОтчетовПолучателя - +""""+ ПараметрыДоставки.ИмяАрхива +""":"+ Символы.ПС +"<"+ ПолноеИмяФайла +">" - ); + +""""+ ПараметрыДоставки.ИмяАрхива +""":"+ Символы.ПС +"<"+ ПолноеИмяФайла +">"); КонецЕсли; ИначеЕсли ПараметрыДоставки.ЗаполнитьСформированныеОтчетыВШаблонеСообщения Тогда // Доставка только по почте ПараметрыДоставки.ПредставлениеОтчетовПолучателя = СокрЛП( ПараметрыДоставки.ПредставлениеОтчетовПолучателя - +""""+ ПараметрыДоставки.ИмяАрхива +"""" - ); + +""""+ ПараметрыДоставки.ИмяАрхива +""""); КонецЕсли; КонецПроцедуры @@ -2490,8 +2423,7 @@ Исключение ЗаписьЖурнала(ПараметрыЖурнала, , НСтр("ru = 'Ошибка очистки каталога временных файлов %1:'"), ИнформацияОбОшибке(), - "'"+ ПараметрыДоставки.КаталогВременныхФайлов +"'" - ); + "'"+ ПараметрыДоставки.КаталогВременныхФайлов +"'"); КонецПопытки; КонецПроцедуры @@ -2572,8 +2504,7 @@ Если НЕ ПравоВывода Тогда ЗаписьЖурнала(ПараметрыЖурнала, УровеньЖурналаРегистрации.Ошибка, НСтр("ru = 'У пользователя %1 недостаточно прав на вывод информации'"), , - "'"+ Строка(Пользователи.ТекущийПользователь()) +"'" - ); + "'"+ Строка(Пользователи.ТекущийПользователь()) +"'"); КонецЕсли; Возврат ПравоВывода; КонецФункции @@ -2853,8 +2784,8 @@ Процедура ПриПодключенииДопОтчета(ДопОтчет, ПараметрыОтчета, Результат) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - Модуль.ПриПодключенииДопОтчета(ДопОтчет, ПараметрыОтчета, Результат); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПриПодключенииДопОтчета(ДопОтчет, ПараметрыОтчета, Результат); КонецЕсли; КонецПроцедуры @@ -2862,8 +2793,8 @@ Процедура ПриВыполненииДоставкиВПапку(ПараметрыДоставки, Вложения) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебный"); - Модуль.ПриВыполненииДоставкиВПапку(ПараметрыДоставки, Вложения); + МодульРаботаСФайламиСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебный"); + МодульРаботаСФайламиСлужебный.ПриВыполненииДоставкиВПапку(ПараметрыДоставки, Вложения); КонецЕсли; КонецПроцедуры @@ -2877,8 +2808,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); - Результат = Модуль.ЕстьПравоПоЗначениюДоступа("ИзменениеПапокИФайлов", Папка); + МодульУправлениеДоступом = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); + Результат = МодульУправлениеДоступом.ЕстьПравоПоЗначениюДоступа("ИзменениеПапокИФайлов", Папка); КонецЕсли; КонецЕсли; @@ -2890,8 +2821,8 @@ Процедура ПриОпределенииНастроекПрокси(Прокси) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПолучениеФайловИзИнтернета"); - Модуль.ПриОпределенииНастроекПрокси(Прокси); + МодульПолучениеФайловИзИнтернета = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПолучениеФайловИзИнтернета"); + МодульПолучениеФайловИзИнтернета.ПриОпределенииНастроекПрокси(Прокси); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/РассылкаОтчетовВызовСервера/Module.bsl b/SSL/src/CommonModules/РассылкаОтчетовВызовСервера/Module.bsl index 0df973e93..7010892b0 100644 --- a/SSL/src/CommonModules/РассылкаОтчетовВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/РассылкаОтчетовВызовСервера/Module.bsl @@ -11,7 +11,7 @@ // Функция СформироватьСписокПолучателейРассылки(Знач Параметры) Экспорт ПараметрыЖурнала = Новый Структура("ИмяСобытия, Метаданные, Данные, МассивОшибок, БылиОшибки"); - ПараметрыЖурнала.ИмяСобытия = НСтр("ru = 'Рассылка отчетов. Формирование списка получателей'"); + ПараметрыЖурнала.ИмяСобытия = НСтр("ru = 'Рассылка отчетов. Формирование списка получателей'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); ПараметрыЖурнала.МассивОшибок = Новый Массив; ПараметрыЖурнала.БылиОшибки = Ложь; ПараметрыЖурнала.Данные = Параметры.Ссылка; @@ -30,9 +30,7 @@ "Использование, Текст, ТекстОшибок", Истина, НСтр("ru = 'Не удалось сформировать список получателей'"), - ТекстОшибок - ) - ); + ТекстОшибок)); КонецЕсли; Возврат РезультатВыполнения; diff --git a/SSL/src/CommonModules/РассылкаОтчетовКлиент/Module.bsl b/SSL/src/CommonModules/РассылкаОтчетовКлиент/Module.bsl index a83d24720..fad1343cf 100644 --- a/SSL/src/CommonModules/РассылкаОтчетовКлиент/Module.bsl +++ b/SSL/src/CommonModules/РассылкаОтчетовКлиент/Module.bsl @@ -122,8 +122,7 @@ ИначеЕсли Результат.Статус = "Исключение" Тогда Предупреждение( НСтр("ru = 'Рассылки не выполнены из-за ошибки, - |Подробности см. в журнале регистрации.'") - ); + |Подробности см. в журнале регистрации.'")); ИначеЕсли Результат.Статус = "Выполняется" Тогда ЭтаФорма.ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеФоновогоЗадания", ПараметрыОбработчика.ТекущийИнтервал, Истина); ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ЭтаФорма.ПараметрыФоновогоЗадания[2].Значение); @@ -220,8 +219,8 @@ Процедура РассылкаОтчетовПодборДопОтчета(ЭлементФормы) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиент"); - Модуль.РассылкаОтчетовПодборДопОтчета(ЭлементФормы); + МодульДополнительныеОтчетыИОбработкиКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиент"); + МодульДополнительныеОтчетыИОбработкиКлиент.РассылкаОтчетовПодборДопОтчета(ЭлементФормы); КонецЕсли; КонецПроцедуры @@ -231,8 +230,8 @@ Процедура РассылкаОтчетовПросмотрПапки(СтандартнаяОбработка, Папка) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиКлиент"); - Модуль.РассылкаОтчетовПросмотрПапки(СтандартнаяОбработка, Папка); + МодульРаботаСФайламиСлужебныйКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебныйКлиент"); + МодульРаботаСФайламиСлужебныйКлиент.РассылкаОтчетовПросмотрПапки(СтандартнаяОбработка, Папка); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/РассылкаОтчетовКлиентСервер/Module.bsl b/SSL/src/CommonModules/РассылкаОтчетовКлиентСервер/Module.bsl index 03fe2d76b..a84fa9e27 100644 --- a/SSL/src/CommonModules/РассылкаОтчетовКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/РассылкаОтчетовКлиентСервер/Module.bsl @@ -81,15 +81,20 @@ // Возвращаемое значение: // Результат (Строка) - Результат заполнения // -Функция ЗаполнитьШаблон(Шаблон, Параметры, Левый = "[", Правый = "]", ФорматЛевый = "(", ФорматПравый = ")", ВырезатьОбрамление = Истина) Экспорт +Функция ЗаполнитьШаблон(Шаблон, Параметры) Экспорт + Левый = "["; + Правый = "]"; + ФорматЛевый = "("; + ФорматПравый = ")"; + ВырезатьОбрамление = Истина; + Результат = Шаблон; Для Каждого КлючИЗначение Из Параметры Цикл // Замена [ключ] на [значение] Результат = СтрЗаменить( Результат, Левый + КлючИЗначение.Ключ + Правый, - ?(ВырезатьОбрамление, "", Левый) + КлючИЗначение.Значение + ?(ВырезатьОбрамление, "", Правый) - ); + ?(ВырезатьОбрамление, "", Левый) + КлючИЗначение.Значение + ?(ВырезатьОбрамление, "", Правый)); ДлинаФорматЛевый = СтрДлина(Левый + КлючИЗначение.Ключ + ФорматЛевый); // Замена [ключ(формат)] на [значение] в формате Поз1 = Найти(Результат, Левый + КлючИЗначение.Ключ + ФорматЛевый); @@ -107,8 +112,7 @@ Результат = СтрЗаменить( Результат, Левый + КлючИЗначение.Ключ + ФорматЛевый + ФорматнаяСтрока + ФорматПравый + Правый, - НаЧтоЗаменить - ); + НаЧтоЗаменить); Поз1 = Найти(Результат, Левый + КлючИЗначение.Ключ + ФорматЛевый); КонецЦикла; КонецЦикла; @@ -132,8 +136,7 @@ |[СпособДоставки] | |[ЗаголовокСистемы] - |[ДатаВыполнения(ДЛФ=''DD'')]'" - ); + |[ДатаВыполнения(ДЛФ=''DD'')]'"); КонецФункции // Возвращает шаблон наименования архива по умолчанию diff --git a/SSL/src/CommonModules/РассылкаОтчетовПовтИсп/Module.bsl b/SSL/src/CommonModules/РассылкаОтчетовПовтИсп/Module.bsl index 18500d883..9a60e3c13 100644 --- a/SSL/src/CommonModules/РассылкаОтчетовПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/РассылкаОтчетовПовтИсп/Module.bsl @@ -79,9 +79,7 @@ РассылкаОтчетов.ДобавитьЭлементВТаблицуТиповПолучателей(ТаблицаТипов, ДоступныеТипы, Новый Структура("ОсновнойТип, ДополнительныйТип", Тип("СправочникСсылка.Пользователи"), - Тип("СправочникСсылка.ГруппыПользователей") - ) - ); + Тип("СправочникСсылка.ГруппыПользователей"))); // Механизм расширения РассылкаОтчетовПереопределяемый.ПереопределитьТаблицуТиповПолучателей(ТаблицаТипов, ДоступныеТипы); @@ -90,8 +88,7 @@ ПустойМассив = Новый Массив; Для Каждого НеиспользованныйТип Из ДоступныеТипы Цикл РассылкаОтчетов.ДобавитьЭлементВТаблицуТиповПолучателей(ТаблицаТипов, ПустойМассив, - Новый Структура("ОсновнойТип", НеиспользованныйТип) - ); + Новый Структура("ОсновнойТип", НеиспользованныйТип)); КонецЦикла; Возврат ТаблицаТипов; diff --git a/SSL/src/CommonModules/РегламентныеЗаданияСлужебный/Module.bsl b/SSL/src/CommonModules/РегламентныеЗаданияСлужебный/Module.bsl index 103b0b261..7b83af0ad 100644 --- a/SSL/src/CommonModules/РегламентныеЗаданияСлужебный/Module.bsl +++ b/SSL/src/CommonModules/РегламентныеЗаданияСлужебный/Module.bsl @@ -51,7 +51,7 @@ // Процедура ДобавитьПараметрыРаботыКлиентаПриЗапуске(Параметры) Экспорт - Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Тогда Параметры.Вставить("ПараметрыЗапускаОтдельногоСеансаВыполненияРегламентныхЗаданий", Новый ФиксированнаяСтруктура(ПараметрыЗапускаОтдельногоСеансаВыполненияРегламентныхЗаданий(Истина))); КонецЕсли; @@ -66,7 +66,7 @@ // Процедура ДобавитьПараметрыРаботыКлиента(Параметры) Экспорт - Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Тогда Параметры.Вставить("ПараметрыЗапускаОтдельногоСеансаВыполненияРегламентныхЗаданий", Новый ФиксированнаяСтруктура(ПараметрыЗапускаОтдельногоСеансаВыполненияРегламентныхЗаданий(Истина))); КонецЕсли; @@ -85,6 +85,13 @@ КонецПроцедуры +Функция ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Экспорт + + Возврат ОбщегоНазначения.ИнформационнаяБазаФайловая() + И НЕ ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости(); + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Обработчики событий подсистем БСП @@ -97,9 +104,9 @@ Процедура ПриЗаполненииТаблицыПараметровИБ(Знач ТаблицаПараметров) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "МаксимальнаяДлительностьВыполненияИсполняющегоФоновогоЗадания"); - Модуль.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "МаксимальноеКоличествоИсполняющихФоновыхЗаданий"); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "МаксимальнаяДлительностьВыполненияИсполняющегоФоновогоЗадания"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "МаксимальноеКоличествоИсполняющихФоновыхЗаданий"); КонецЕсли; КонецПроцедуры @@ -151,7 +158,7 @@ Знач УстановитьТекущийСеансКакСеансВыполняющийРегламентныеЗадания = Ложь, ОписаниеОшибки = "") Экспорт - Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если НЕ ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Тогда ЗаданияВыполняютсяНормально = Истина; ОписаниеОшибки = НСтр("ru = 'Задания выполняются на сервере.'"); Возврат Ложь; @@ -254,27 +261,34 @@ // Булево. // Функция РодительскийСеансЗаданИЗавершен(Знач ПараметрЗапуска) Экспорт - + + УстановитьПривилегированныйРежим(Истина); + РодительскийСеансЗадан = Ложь; Если Найти(ПараметрЗапуска, "DoScheduledJobs") <> 0 Тогда ИндексНомераСеанса = Найти(ПараметрЗапуска, "SessionNumber="); ИндексНачалаСеанса = Найти(ПараметрЗапуска, "SessionStarted="); + Если ИндексНомераСеанса <> 0 И ИндексНачалаСеанса <> 0 И ИндексНомераСеанса < ИндексНачалаСеанса Тогда + РодительскийСеансЗадан = Истина; - Сеансы = ПолучитьСеансыИнформационнойБазы(); + + Сеансы = ПолучитьСеансыИнформационнойБазы(); Для каждого Сеанс Из Сеансы Цикл Если Найти(ПараметрЗапуска, "SessionNumber=" + Сеанс.НомерСеанса) <> 0 И Найти(ПараметрЗапуска, "SessionStarted=" + Сеанс.НачалоСеанса) <> 0 Тогда Возврат Ложь; КонецЕсли; КонецЦикла; + Возврат Истина; КонецЕсли; КонецЕсли; + Возврат Ложь; - + КонецФункции //////////////////////////////////////////////////////////////////////////////// @@ -347,7 +361,7 @@ // Процедура ВыполнитьРегламентныеЗадания(ВремяВыполнения = 0) Экспорт - Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если НЕ ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Тогда Возврат; КонецЕсли; @@ -476,7 +490,7 @@ Задание = РегламентныеЗаданияСервер.ПолучитьРегламентноеЗадание(Задание); Запуск = Ложь; - Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Тогда Запуск = ВыполнитьРегламентноеЗадание(Задание, Истина, МоментЗапуска, МоментОкончания, НомерСеанса, НачалоСеанса); Иначе СвойстваПоследнегоФоновогоЗадания = ПолучитьСвойстваПоследнегоФоновогоЗаданияВыполненияРегламентногоЗадания(Задание); @@ -561,7 +575,7 @@ УведомлятьОНекорректномСостоянии = Ложь; - Если ОбщегоНазначения.ИнформационнаяБазаФайловая() + Если ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() И НЕ СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда Настройки = ПолучитьНастройкиВыполненияРегламентныхЗаданий(); @@ -640,7 +654,7 @@ Возврат Результат; КонецЕсли; - Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если НЕ ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Тогда Если ПоНастройкеАвтоОткрытия Тогда Возврат Результат; @@ -705,7 +719,7 @@ // Процедура ОтменитьФоновоеЗадание(Идентификатор) Экспорт - Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Тогда ВызватьИсключение( НСтр("ru ='Фоновые задания не используются |в файловой информационной базе.'")); КонецЕсли; @@ -759,7 +773,7 @@ РегламентноеЗадание = Неопределено; // Добавление истории фоновых заданий, полученных с сервера. - Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если НЕ ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Тогда Если Отбор <> Неопределено И Отбор.Свойство("ИдентификаторРегламентногоЗадания") Тогда МассивФоновыхЗаданий = Новый Массив; Если Отбор.ИдентификаторРегламентногоЗадания <> "" Тогда @@ -1318,4 +1332,3 @@ ХранилищеОбщихНастроек.Удалить("НастройкиВыполненияРегламентныхЗаданий", Неопределено, ""); КонецПроцедуры - diff --git a/SSL/src/CommonModules/РегламентныеЗаданияСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/РегламентныеЗаданияСлужебныйКлиент/Module.bsl index be210287a..2569c154c 100644 --- a/SSL/src/CommonModules/РегламентныеЗаданияСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/РегламентныеЗаданияСлужебныйКлиент/Module.bsl @@ -15,7 +15,7 @@ ОбработатьПараметрыЗапуска(); - ИначеЕсли ПараметрыРаботыКлиента.ИнформационнаяБазаФайловая Тогда + ИначеЕсли ПараметрыРаботыКлиента.ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий Тогда ПараметрыТолькоЧтение = ПараметрыРаботыКлиента.ПараметрыЗапускаОтдельногоСеансаВыполненияРегламентныхЗаданий; @@ -44,26 +44,33 @@ #КонецЕсли // Для клиент-серверной базы. - Если Не ПараметрыРаботыКлиента.ИнформационнаяБазаФайловая Тогда + Если Не ПараметрыРаботыКлиента.ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий Тогда Если Предупреждать Тогда - Предупреждение(НСтр("ru = 'Регламентные задания выполняются на сервере.'")); + Если ПараметрыРаботыКлиента.ИнформационнаяБазаФайловая Тогда + Предупреждение(НСтр("ru = 'Регламентные задания выполняются платформой в скрытом сеансе.'")); + Иначе + Предупреждение(НСтр("ru = 'Регламентные задания выполняются на сервере.'")); + КонецЕсли; КонецЕсли; Если ОтдельныйСеанс Тогда ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; ЗавершитьРаботуСистемы(Ложь); КонецЕсли; Возврат; - КонецЕсли; + КонецЕсли; // Для файл-серверной базы. ЗаданияВыполняютсяНормально = Неопределено; ОписаниеОшибки = ""; - Если РегламентныеЗаданияСлужебныйВызовСервера.ТекущийСеансВыполняетРегламентныеЗадания( - ЗаданияВыполняютсяНормально, Истина, ОписаниеОшибки) Тогда + Если РегламентныеЗаданияСлужебныйВызовСервера.ТекущийСеансВыполняетРегламентныеЗадания(ЗаданияВыполняютсяНормально, Истина, ОписаниеОшибки) Тогда - УстановитьЗаголовокПриложения(СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Выполнение регламентных заданий: %1'"), - ПолучитьЗаголовокПриложения() )); + Префикс = НСтр("ru = 'Выполнение регламентных заданий'"); + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Выполнить("УстановитьЗаголовокКлиентскогоПриложения(Префикс +"": ""+ + ПолучитьЗаголовокКлиентскогоПриложения());"); + Иначе + Выполнить("УстановитьЗаголовокПриложения(Префикс +"": ""+ ПолучитьЗаголовокПриложения());"); + КонецЕсли; Если ОтдельныйСеанс Тогда // Выполнять в отдельном сеансе. @@ -86,16 +93,7 @@ ОсновноеОкно); КонецЕсли; - Результат = ОткрытьФормуМодально( - "Обработка.РегламентныеИФоновыеЗадания.Форма.ВыполнениеРегламентныхЗаданий"); - - Если Результат = "Перезапустить" Тогда - ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; - ЗавершитьРаботуСистемы(Ложь, Истина, " /C""" + ПараметрЗапуска + """"); - КонецЕсли; - - ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина; - ЗавершитьРаботуСистемы(Ложь); + ОткрытьФормуМодально("Обработка.РегламентныеИФоновыеЗадания.Форма.ВыполнениеРегламентныхЗаданий"); Иначе // Выполнять в этом сеансе. ПодключитьОбработчикОжидания("ВыполнениеРегламентныхЗаданийВОсновномСеансе", 1, Истина); diff --git a/SSL/src/CommonModules/РезервноеКопированиеИБВызовСервера/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеИБВызовСервера/Module.bsl index be3875124..06b78994d 100644 --- a/SSL/src/CommonModules/РезервноеКопированиеИБВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/РезервноеКопированиеИБВызовСервера/Module.bsl @@ -12,23 +12,22 @@ // ИмяЭлемента - Строка - имя параметра. // ЗначениеЭлемента - Произвольный тип - значение параметра. // -Процедура УстановитьЗначениеНастройки(ИмяЭлемента, ЗначениеЭлемента, ПараметрыРезервногоКопированияИБНаКлиенте = Неопределено) Экспорт +Процедура УстановитьЗначениеНастройки(ИмяЭлемента, ЗначениеЭлемента) Экспорт - РезервноеКопированиеИБСервер.УстановитьЗначениеНастройки(ИмяЭлемента, ЗначениеЭлемента, ПараметрыРезервногоКопированияИБНаКлиенте); + РезервноеКопированиеИБСервер.УстановитьЗначениеНастройки(ИмяЭлемента, ЗначениеЭлемента); КонецПроцедуры -// Устанавливает значение ближайшего следующего автоматического резервного копирования в соответствии с расписанием. +// Формирует значение ближайшего следующего автоматического резервного копирования в соответствии с расписанием. // // Параметры: // НачальнаяНастройка - Булево - признак начальной настройки. -// ПараметрыРезервногоКопированияИБНаКлиенте - Структура - параметры резервного копирования. // -Процедура УстановитьДатуСледующегоАвтоматическогоКопирования(ПараметрыРезервногоКопированияИБНаКлиенте, НачальнаяНастройка = Ложь) Экспорт +Функция СформироватьДатыСледующегоАвтоматическогоКопирования(НачальнаяНастройка = Ложь) Экспорт - РезервноеКопированиеИБСервер.УстановитьДатуСледующегоАвтоматическогоКопирования(ПараметрыРезервногоКопированияИБНаКлиенте, НачальнаяНастройка); + Возврат РезервноеКопированиеИБСервер.СформироватьДатыСледующегоАвтоматическогоКопирования(НачальнаяНастройка); -КонецПроцедуры +КонецФункции // Устанавливает дату последнего оповещения пользователя. // @@ -41,9 +40,9 @@ КонецПроцедуры -// Возвращает признак доступности роли "ПолучениеНапоминанийОРезервномКопировании". +// Возвращает признак наличия у пользователя полных прав. // -// Возвращаемое значение - Булево - доступность роли. +// Возвращаемое значение - Булево - Истина, если это полноправный пользователь. // Функция ПолучитьДоступностьРолейОповещения() Экспорт @@ -64,42 +63,6 @@ КонецФункции -// Останавливает механизм автоматического резервного копирования. -// Устанавливает пустое расписание и минимальную дату копирования в будущее время. -// -// Параметры: -// ПроводитьПриЗавершении - Булево - признак проведения резервного копирования при завершении работы. -// ПараметрыРезервногоКопированияИБНаКлиенте - Структура - параметры резервного копирования. -// -Процедура ОстановитьАвтоматическоеРезервноеКопирование(ПараметрыРезервногоКопированияИБНаКлиенте, ПроводитьПриЗавершении = Ложь) Экспорт - - РезервноеКопированиеИБСервер.ОстановитьАвтоматическоеРезервноеКопирование(ПараметрыРезервногоКопированияИБНаКлиенте, ПроводитьПриЗавершении); - -КонецПроцедуры - -// Устанавливает элемент "Код выбора" настроек резервного копирования. -// -// Параметры: -// КодПереключателя - Число - код переключателя. -// ПараметрыРезервногоКопированияИБНаКлиенте - Структура - параметры резервного копирования. -// -Процедура УстановитьКодВыбора(КодПереключателя, ПараметрыРезервногоКопированияИБНаКлиенте) Экспорт - - РезервноеКопированиеИБСервер.УстановитьКодВыбора(КодПереключателя, ПараметрыРезервногоКопированияИБНаКлиенте); - -КонецПроцедуры - -// Останавливает оповещения о резервном копировании. -// -// Параметры: -// ПараметрыРезервногоКопированияИБНаКлиенте - Структура - параметры резервного копирования. -// -Процедура ОстановитьСервисОповещения(ПараметрыРезервногоКопированияИБНаКлиенте) Экспорт - - РезервноеКопированиеИБСервер.ОстановитьСервисОповещения(ПараметрыРезервногоКопированияИБНаКлиенте); - -КонецПроцедуры - // Сохраняет параметры резервного копирования. // // Параметры: diff --git a/SSL/src/CommonModules/РезервноеКопированиеИБКлиент/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеИБКлиент/Module.bsl index 9b693b117..72e4788e1 100644 --- a/SSL/src/CommonModules/РезервноеКопированиеИБКлиент/Module.bsl +++ b/SSL/src/CommonModules/РезервноеКопированиеИБКлиент/Module.bsl @@ -10,61 +10,158 @@ // или показа пользователю необходимого информационного сообщения. Процедура ПриНачалеРаботыСистемы(Знач ОбрабатыватьПараметрыЗапуска = Ложь) Экспорт + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; + КонецЕсли; + ПараметрыРаботы = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); Если ПараметрыРаботы.РазделениеВключено Тогда Возврат; КонецЕсли; - ПараметрыНастроек = ПараметрыРаботы.ПараметрыРезервногоКопированияИБ; - - // настройки не определены только в том случае, если у пользователя нет доступа к подсистеме - Если ПараметрыНастроек = Неопределено Тогда + ФиксированныеПараметрыРезервногоКопированияИБ = Неопределено; + Если НЕ ПараметрыРаботы.Свойство("РезервноеКопированиеИБ", ФиксированныеПараметрыРезервногоКопированияИБ) Тогда + Возврат; + КонецЕсли; + Если ТипЗнч(ФиксированныеПараметрыРезервногоКопированияИБ) <> Тип("ФиксированнаяСтруктура") Тогда Возврат; КонецЕсли; - // Настройки резервного копирования присваиваем глобальной переменной. - ПараметрыРезервногоКопированияИБ = ПараметрыНастроек; - Если ПараметрыРезервногоКопированияИБ.ПроцессВыполняется Тогда - РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ПроцессВыполняется", Ложь, ПараметрыРезервногоКопированияИБ); - КонецЕсли; + // Заполнение глобальных переменных. + ЗаполнитьЗначенияГлобальныхПеременных(ФиксированныеПараметрыРезервногоКопированияИБ); - ОповещатьОРезервномКопированииПриЗавершенииСеанса = Ложь; - ДатаОтложенногоРезервногоКопирования = Дата('00010101'); + // Подключение глобального обработчика ожидания. ПодключитьОбработчикОжидания("ОбработчикДействийРезервногоКопирования", 60); - ВариантОповещения = ПараметрыНастроек.ПараметрОповещения; + // Интерактивные действия, выполняемые при запуске. + ВариантОповещения = ФиксированныеПараметрыРезервногоКопированияИБ.ПараметрОповещения; Если ВариантОповещения = "Просрочено" Или ВариантОповещения = "Напомнить" Или ВариантОповещения = "ЕщеНеНастроено" Тогда ОповеститьПользователяОРезервномКопировании(ВариантОповещения); КонецЕсли; - ПроверитьРезервноеКопированиеИБ(ПараметрыНастроек); + ПроверитьРезервноеКопированиеИБ(ФиксированныеПараметрыРезервногоКопированияИБ); - Если ПараметрыНастроек.ПроведеноВосстановление Тогда + Если ФиксированныеПараметрыРезервногоКопированияИБ.ПроведеноВосстановление Тогда ТекстОповещения = НСтр("ru = 'Восстановление данных проведено успешно.'"); ПоказатьОповещениеПользователя(НСтр("ru = 'Данные восстановлены.'"), , ТекстОповещения); КонецЕсли; КонецПроцедуры -// Подключает обработчик ожидания начала резервного копирования. -Процедура ПодключитьОжиданиеРезервногоКопирования() Экспорт +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Заполнение глобальных переменных. +Процедура ЗаполнитьЗначенияГлобальныхПеременных(ФиксированныеПараметрыРезервногоКопированияИБ) Экспорт - РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ОтложенноеРезервноеКопирование", Истина, ПараметрыРезервногоКопированияИБ); + ПараметрыРезервногоКопированияИБ = Новый Структура("ПроцессВыполняется, МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования, ДатаПоследнегоРезервногоКопирования, ОтложенноеРезервноеКопирование, ПараметрОповещения"); + ЗаполнитьЗначенияСвойств(ПараметрыРезервногоКопированияИБ, ФиксированныеПараметрыРезервногоКопированияИБ); + ПараметрыРезервногоКопированияИБ.Вставить("РасписаниеЗначение", ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(ФиксированныеПараметрыРезервногоКопированияИБ.РасписаниеКопирования)); + + ОповещатьОРезервномКопированииПриЗавершенииСеанса = Ложь; + ДатаОтложенногоРезервногоКопирования = Дата('00010101'); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// Обработчики служебных событий подсистем БСП + +// Доопределяет список предупреждений пользователю перед завершением работы системы. +// +// Параметры: +// Предупреждения - Массив, в который можно добавить элементы типа Структура с полями: +// ТекстФлажка - Строка - текст флажка. +// ПоясняющийТекст - Строка - текст, выводимый в форме сверху +// управляющего элемента (флажок или гиперссылка). +// ТекстГиперссылки - Строка - текст гиперссылки. +// ДействиеПриУстановленномФлажке - Структура с полями: +// Форма - путь к открываемой форме. +// ПараметрыФормы - произвольная структура параметров формы Форма. +// ДействиеПриНажатииГиперссылки - Структура с полями: +// Форма - Строка - путь к форме, которая должна открываться по нажатию на гиперссылку. +// ПараметрыФормы - Структура - произвольная структура параметров для вышеописанной формы. +// ПрикладнаяФормаПредупреждения - Строка - путь к форме, которая должна открываться сразу +// вместо универсальной формы в случае, когда в списке +// предупреждений оказывается только одно данное предупреждение. +// ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура +// параметров для вышеописанной формы. +// +Процедура ПриПолученииСпискаПредупрежденийЗавершенияРаботы(Предупреждения) Экспорт + + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; + КонецЕсли; + + ПриЗавершенииРаботыСистемы(Предупреждения); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Экспортные служебные процедуры и функции + +// Проверяет необходимость запуска автоматического резервного копирования +// в процессе работы пользователя, а также повторного оповещения после игнорировании первоначального. +// +Процедура ОбработчикОжиданияЗапуска() Экспорт + + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; + КонецЕсли; + + Если НеобходимостьАвтоматическогоРезервногоКопирования() Тогда + ПровестиРезервноеКопирование(); + КонецЕсли; + + Если ПараметрыРезервногоКопированияИБ.ОтложенноеРезервноеКопирование Тогда + ОтложенноеИнтерактивноеРезервноеКопирование(); + КонецЕсли; + + ВариантОповещения = ПараметрыРезервногоКопированияИБ.ПараметрОповещения; + Если ВариантОповещения = "Просрочено" Или ВариантОповещения = "Напомнить" Или ВариантОповещения = "ЕщеНеНастроено" Тогда + ОповеститьПользователяОРезервномКопировании(ВариантОповещения); + КонецЕсли; + +КонецПроцедуры + +// Проверяет необходимость проведения автоматического резервного копирования. +// +// Возвращаемое значение - Булево - Истина, если необходима, Ложь - иначе. +// +Функция НеобходимостьАвтоматическогоРезервногоКопирования() Экспорт + Перем РасписаниеЗначение; + + Если ТипЗнч(ПараметрыРезервногоКопированияИБ) <> Тип("Структура") Тогда + Возврат Ложь; + КонецЕсли; + + Если ПараметрыРезервногоКопированияИБ.ПроцессВыполняется + ИЛИ НЕ ПараметрыРезервногоКопированияИБ.Свойство("МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования") + ИЛИ НЕ ПараметрыРезервногоКопированияИБ.Свойство("РасписаниеЗначение", РасписаниеЗначение) + ИЛИ НЕ ПараметрыРезервногоКопированияИБ.Свойство("ДатаПоследнегоРезервногоКопирования") Тогда + Возврат Ложь; + КонецЕсли; + + Если РасписаниеЗначение = Неопределено Тогда + Возврат Ложь; + КонецЕсли; + + ДатаПроверки = ОбщегоНазначенияКлиент.ДатаСеанса(); + Если ПараметрыРезервногоКопированияИБ.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования > ДатаПроверки Тогда + Возврат Ложь; + КонецЕсли; + + Возврат РасписаниеЗначение.ТребуетсяВыполнение(ДатаПроверки, ПараметрыРезервногоКопированияИБ.ДатаПоследнегоРезервногоКопирования); +КонецФункции // Запускает резервное копирование по расписанию. // Состоит из двух этапов: 1 - очистка каталога с копиями, 2 - непосредственно резервное копирование. Процедура ПровестиРезервноеКопирование() Экспорт // Очистка архива с копиями. - НастройкиУдаления = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ПараметрыРезервногоКопированияИБ; - КаталогХранения = НастройкиУдаления.КаталогХраненияРезервныхКопий; + ФиксированныеПараметрыРезервногоКопированияИБ = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().РезервноеКопированиеИБ; + КаталогХранения = ФиксированныеПараметрыРезервногоКопированияИБ.КаталогХраненияРезервныхКопий; - Если НастройкиУдаления.ПроизводитьУдаление И КаталогХранения <> Неопределено Тогда + Если ФиксированныеПараметрыРезервногоКопированияИБ.ПроизводитьУдаление И КаталогХранения <> Неопределено Тогда Попытка Файл = Новый Файл(КаталогХранения); @@ -72,20 +169,20 @@ Возврат; КонецЕсли; - МассивФайлов = НайтиФайлы(КаталогХранения, "*", Истина); + МассивФайлов = НайтиФайлы(КаталогХранения, "backup*.zip", Истина); СписокУдаляемыхФайлов = Новый СписокЗначений; // Удаление резервных копий. - Если НастройкиУдаления.УдалятьПоПериоду Тогда + Если ФиксированныеПараметрыРезервногоКопированияИБ.УдалятьПоПериоду Тогда Для Каждого ЭлементФайл Из МассивФайлов Цикл ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса(); - ПараметрУдаления = ?((ТекущаяДата - НастройкиУдаления.ЗначениеПараметра) > ЭлементФайл.ПолучитьВремяИзменения(), Истина, Ложь); + ПараметрУдаления = ?((ТекущаяДата - ФиксированныеПараметрыРезервногоКопированияИБ.ЗначениеПараметра) > ЭлементФайл.ПолучитьВремяИзменения(), Истина, Ложь); Если ПараметрУдаления Тогда СписокУдаляемыхФайлов.Добавить(ЭлементФайл); КонецЕсли; КонецЦикла; - ИначеЕсли МассивФайлов.Количество() >= НастройкиУдаления.ЗначениеПараметра Тогда + ИначеЕсли МассивФайлов.Количество() >= ФиксированныеПараметрыРезервногоКопированияИБ.ЗначениеПараметра Тогда СписокФайлов = Новый СписокЗначений; СписокФайлов.ЗагрузитьЗначения(МассивФайлов); @@ -94,7 +191,7 @@ КонецЦикла; СписокФайлов.СортироватьПоЗначению(НаправлениеСортировки.Убыв); - Индекс = НастройкиУдаления.ЗначениеПараметра; + Индекс = ФиксированныеПараметрыРезервногоКопированияИБ.ЗначениеПараметра; ДатаПоследнегоАрхива = СписокФайлов[Индекс-1].Значение; Для Каждого ЭлементФайл Из МассивФайлов Цикл @@ -103,7 +200,7 @@ СписокУдаляемыхФайлов.Добавить(ЭлементФайл); КонецЕсли; - КонецЦикла; + КонецЦикла; КонецЕсли; @@ -121,7 +218,9 @@ КонецЕсли; // резервное копирование - РезервноеКопированиеИБВызовСервера.УстановитьДатуСледующегоАвтоматическогоКопирования(ПараметрыРезервногоКопированияИБ); + ДатыСледующегоАвтоматическогоКопирования = РезервноеКопированиеИБВызовСервера.СформироватьДатыСледующегоАвтоматическогоКопирования(); + ЗаполнитьЗначенияСвойств(ПараметрыРезервногоКопированияИБ, ДатыСледующегоАвтоматическогоКопирования); + ПараметрыФормы = Новый Структура("ТипВызова, ТекущаяСтраница", 2, "СтраницаИнформацииИВыполненияРезервногоКопирования"); ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеИнформационнойБазы", ПараметрыФормы); @@ -133,29 +232,28 @@ // Параметры: // ПараметрыРезервногоКопирования - Структура - параметры резервного копирования. // -Процедура ПроверитьРезервноеКопированиеИБ(ПараметрыРезервногоКопирования) Экспорт +Процедура ПроверитьРезервноеКопированиеИБ(ФиксированныеПараметрыРезервногоКопированияИБ) Экспорт - ЗначениеНастройкиРезервногоКопирования = ПараметрыРезервногоКопирования; - - Если ЗначениеНастройкиРезервногоКопирования.ПроведеноКопирование Тогда + Если ФиксированныеПараметрыРезервногоКопированияИБ.ПроведеноКопирование Тогда ПараметрыФормы = Новый Структура("ТипВызова", 2); НазваниеТекущейСтраницы = ""; - Если ЗначениеНастройкиРезервногоКопирования.РезультатКопирования Тогда + Если ФиксированныеПараметрыРезервногоКопированияИБ.РезультатКопирования Тогда НазваниеТекущейСтраницы = "СтраницаУспешногоВыполненияКопирования"; Иначе НазваниеТекущейСтраницы = "СтраницаОшибокПриКопировании"; КонецЕсли; ПараметрыФормы.Вставить("ТекущаяСтраница", НазваниеТекущейСтраницы); - ПараметрыФормы.Вставить("ТекстПути", ЗначениеНастройкиРезервногоКопирования.ИмяФайлаРезервнойКопии); + ПараметрыФормы.Вставить("ТекстПути", ФиксированныеПараметрыРезервногоКопированияИБ.ИмяФайлаРезервнойКопии); ФормаОповещения = ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеИнформационнойБазы", ПараметрыФормы); КонецЕсли; + КонецПроцедуры - // По результатам анализа параметров резервного копирования выдает соответствующее оповещение. +// По результатам анализа параметров резервного копирования выдает соответствующее оповещение. // // Параметры: // ВариантОповещения - Строка - результат проверки на посылку оповещения @@ -207,45 +305,13 @@ КонецЕсли; КонецФункции -// Возвращает позицию последнего передаваемого символа. -// -// Параметры: -// ИсходнаяСтрока - Строка - строка, в которой осуществляется поиск. -// СимволПоиска - Строка - символ поиска. -// -// Возвращаемое значение - Число - позиция символа. -// -Функция ПолучитьНомерПоследнегоСимвола(Знач ИсходнаяСтрока, Знач СимволПоиска) - ПозицияСимвола = СтрДлина(ИсходнаяСтрока); - Пока ПозицияСимвола >= 1 Цикл - - Если Сред(ИсходнаяСтрока, ПозицияСимвола, 1) = СимволПоиска Тогда - Возврат ПозицияСимвола; - КонецЕсли; - - ПозицияСимвола = ПозицияСимвола - 1; - КонецЦикла; - Возврат 0; -КонецФункции - -// Возвращает значение глобальной переменной модуля приложения. -// Используется для обработчиков ожидания из глобального клиентского модуля. -// -// Возвращаемое значение - Дата - дата отложенного резервного копирования. -// -Функция ПолучитьДатуКопирования() Экспорт - - Возврат ДатаОтложенногоРезервногоКопирования; - -КонецФункции - // Возвращает тип события журнала регистрации для данной подсистемы. // // Возвращаемое значение - Строка - тип события журнала регистрации. // Функция СобытиеЖурналаРегистрации() Экспорт - Возврат НСтр("ru = 'Резервное копирование информационной базы'"); + Возврат НСтр("ru = 'Резервное копирование информационной базы'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); КонецФункции @@ -282,96 +348,6 @@ #КонецЕсли КонецФункции -// Возвращает параметры резервного копирования -// из глобальной переменной "ПараметрыРезервногоКопированияИБ". -// -// Возвращаемое значение - Структура - параметры резервного копирования ИБ. -// -Функция ПолучитьПараметрыРезервногоКопированияИБ() Экспорт - - Возврат ПараметрыРезервногоКопированияИБ; - -КонецФункции - -// Проверяет необходимость проведения автоматического резервного копирования. -// -// Возвращаемое значение - Булево - Истина, если необходима, Ложь - иначе. -// -Функция НеобходимостьАвтоматическогоРезервногоКопирования() Экспорт - Параметры = ПолучитьПараметрыРезервногоКопированияИБ(); - Если Параметры = Неопределено Тогда - Возврат Ложь; - КонецЕсли; - Расписание = Параметры.РасписаниеКопирования; - Если Расписание = Неопределено Тогда - Возврат Ложь; - КонецЕсли; - - Если Параметры.Свойство("ПроцессВыполняется") Тогда - Если Параметры.ПроцессВыполняется Тогда - Возврат Ложь; - КонецЕсли; - КонецЕсли; - - ДатаПроверки = ОбщегоНазначенияКлиент.ДатаСеанса(); - Если Параметры.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования > ДатаПроверки Тогда - Возврат Ложь; - КонецЕсли; - - ДатаНачалаПроверки = Параметры.ДатаПоследнегоРезервногоКопирования; - РасписаниеЗначение = ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(Расписание); - Возврат РасписаниеЗначение.ТребуетсяВыполнение(ДатаПроверки, ДатаНачалаПроверки); -КонецФункции - -// Устанавливает передаваемое значение клиентской глобальной переменной "ПараметрыРезервногоКопированияИБ". -// -// Параметры: -// Параметры - Структура - передаваемое значение. -// -Процедура УстановитьПараметрыРезервногоКопирования(Параметры) Экспорт - - ПараметрыРезервногоКопированияИБ = Параметры; - -КонецПроцедуры - -// Функция проверяет настройки резервного копирования. -// -// Возвращаемое значение: -// Неопределено - если нет резервного копирования, -// Дата - если имеется отложенное резервное копирование, -// Булево - если имеется резервное копирование при завершении работы. -// -Функция ПроверитьНаличиеРезервногоКопирования() -#Если ВебКлиент Тогда - Возврат Неопределено; -#КонецЕсли - - Если Не СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().ПараметрыРезервногоКопированияИБ.ДоступностьРолейОповещения Тогда - Возврат Неопределено; - КонецЕсли; - - ОповещатьПостоянно = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().ПараметрыРезервногоКопированияИБ.ПроводитьРезервноеКопированиеПриЗавершенииРаботы; - ОповещатьПостоянно = ?(ОповещатьПостоянно = Неопределено, Ложь, ОповещатьПостоянно); - КоличествоАктивныхАдминистраторов = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().ПараметрыРезервногоКопированияИБ.КоличествоАктивныхПользователей; - // Переменная ОповещатьОРезервномКопированииПриЗавершенииСеанса сравнивается явно с Истина, - // так как может быть не проинициализирована при аварийном завершении. - Если ОповещатьОРезервномКопированииПриЗавершенииСеанса = Истина ИЛИ (ОповещатьПостоянно И КоличествоАктивныхАдминистраторов = 1) Тогда - Возврат Истина; - Иначе // Если нет резервного копирования при завершении работы системы. - // Переменная ДатаОтложенногоРезервногоКопирования может быть не проинициализирована при аварийном завершении. - Если ДатаОтложенногоРезервногоКопирования = Неопределено Тогда - ДатаОтложенногоРезервногоКопирования = Дата('00010101'); - КонецЕсли; - ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса(); - Если ДатаОтложенногоРезервногоКопирования > ТекущаяДата Тогда - Возврат ДатаОтложенногоРезервногоКопирования; - КонецЕсли; - КонецЕсли; - - Возврат Неопределено; - -КонецФункции - // Формирует вопросы при завершении работы системы. // // Параметры: @@ -408,38 +384,94 @@ Если ИмеетсяРезервноеКопирование Тогда ДействиеПриУстановленномФлажке = Новый Структура("Форма, ПараметрыФормы", ФормаОбработки, ПараметрыФормы); - СтруктураПредупреждения = Новый Структура("ТекстФлажка, ДействиеПриУстановленномФлажке, Приоритет", ТекстФлажка, ДействиеПриУстановленномФлажке, 90); + СтруктураПредупреждения = Новый Структура("ТекстФлажка, ДействиеПриУстановленномФлажке, Приоритет", ТекстФлажка, ДействиеПриУстановленномФлажке, 70); Предупреждения.Добавить(СтруктураПредупреждения); КонецЕсли; КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// -// Обработчики служебных событий подсистем БСП +// Локальные служебные процедуры и функции -// Доопределяет список предупреждений пользователю перед завершением работы системы. +// Обработчик ожидания выполнения резервного копирования. // -// Параметры: -// Предупреждения - Массив, в который можно добавить элементы типа Структура с полями: -// ТекстФлажка - Строка - текст флажка. -// ПоясняющийТекст - Строка - текст, выводимый в форме сверху -// управляющего элемента (флажок или гиперссылка). -// ТекстГиперссылки - Строка - текст гиперссылки. -// ДействиеПриУстановленномФлажке - Структура с полями: -// Форма - путь к открываемой форме. -// ПараметрыФормы - произвольная структура параметров формы Форма. -// ДействиеПриНажатииГиперссылки - Структура с полями: -// Форма - Строка - путь к форме, которая должна открываться по нажатию на гиперссылку. -// ПараметрыФормы - Структура - произвольная структура параметров для вышеописанной формы. -// ПрикладнаяФормаПредупреждения - Строка - путь к форме, которая должна открываться сразу -// вместо универсальной формы в случае, когда в списке -// предупреждений оказывается только одно данное предупреждение. -// ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура -// параметров для вышеописанной формы. -// -Процедура ПриПолученииСпискаПредупрежденийЗавершенияРаботы(Предупреждения) Экспорт +Процедура ОтложенноеИнтерактивноеРезервноеКопирование() - ПриЗавершенииРаботыСистемы(Предупреждения); + Если ОбщегоНазначенияКлиент.ДатаСеанса() < ДатаОтложенногоРезервногоКопирования + И РезервноеКопированиеИБВызовСервера.ПолучитьКоличествоАктивныхПользователей() = 1 Тогда + + ТекстВопроса = НСтр("ru = 'В данный момент с базой больше никто не работает. Выполнить резервное копирование?'"); + ЗаголовокВопроса = Нстр("ru = 'Провести резервное копирование прямо сейчас'"); + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 30, КодВозвратаДиалога.Да, ЗаголовокВопроса, КодВозвратаДиалога.Да); + Если Ответ = КодВозвратаДиалога.Нет Или Ответ = Неопределено Тогда + Возврат; + КонецЕсли; + + КонецЕсли; + + ПараметрыРезервногоКопированияИБ.ОтложенноеРезервноеКопирование = Ложь; + РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ОтложенноеРезервноеКопирование", Ложь); + ПараметрыФормы = Новый Структура("ТипВызова, ТекущаяСтраница, ЗаголовокНадписи", 1, "СтраницаИнформацииИВыполненияРезервногоКопирования", ""); + ФормаОбработки = ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеИнформационнойБазы", ПараметрыФормы); КонецПроцедуры +// Функция проверяет настройки резервного копирования. +// +// Возвращаемое значение: +// Неопределено - если нет резервного копирования, +// Дата - если имеется отложенное резервное копирование, +// Булево - если имеется резервное копирование при завершении работы. +// +Функция ПроверитьНаличиеРезервногоКопирования() +#Если ВебКлиент Тогда + Возврат Неопределено; +#КонецЕсли + + Если Не СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().РезервноеКопированиеИБ.ДоступностьРолейОповещения Тогда + Возврат Неопределено; + КонецЕсли; + + ОповещатьПостоянно = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().РезервноеКопированиеИБ.ПроводитьРезервноеКопированиеПриЗавершенииРаботы; + ОповещатьПостоянно = ?(ОповещатьПостоянно = Неопределено, Ложь, ОповещатьПостоянно); + КоличествоАктивныхАдминистраторов = СтандартныеПодсистемыКлиент.ПараметрыРаботыКлиентаПриЗавершении().РезервноеКопированиеИБ.КоличествоАктивныхПользователей; + // Переменная ОповещатьОРезервномКопированииПриЗавершенииСеанса сравнивается явно с Истина, + // так как может быть не проинициализирована при аварийном завершении. + Если ОповещатьОРезервномКопированииПриЗавершенииСеанса = Истина ИЛИ (ОповещатьПостоянно И КоличествоАктивныхАдминистраторов = 1) Тогда + Возврат Истина; + Иначе // Если нет резервного копирования при завершении работы системы. + // Переменная ДатаОтложенногоРезервногоКопирования может быть не проинициализирована при аварийном завершении. + Если ДатаОтложенногоРезервногоКопирования = Неопределено Тогда + ДатаОтложенногоРезервногоКопирования = Дата('00010101'); + КонецЕсли; + ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса(); + Если ДатаОтложенногоРезервногоКопирования > ТекущаяДата Тогда + Возврат ДатаОтложенногоРезервногоКопирования; + КонецЕсли; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Возвращает позицию последнего передаваемого символа. +// +// Параметры: +// ИсходнаяСтрока - Строка - строка, в которой осуществляется поиск. +// СимволПоиска - Строка - символ поиска. +// +// Возвращаемое значение - Число - позиция символа. +// +Функция ПолучитьНомерПоследнегоСимвола(Знач ИсходнаяСтрока, Знач СимволПоиска) + ПозицияСимвола = СтрДлина(ИсходнаяСтрока); + Пока ПозицияСимвола >= 1 Цикл + + Если Сред(ИсходнаяСтрока, ПозицияСимвола, 1) = СимволПоиска Тогда + Возврат ПозицияСимвола; + КонецЕсли; + + ПозицияСимвола = ПозицияСимвола - 1; + КонецЦикла; + Возврат 0; +КонецФункции + diff --git a/SSL/src/CommonModules/РезервноеКопированиеИБКлиентГлобальный/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеИБКлиентГлобальный/Module.bsl index 7a31d90f3..bd8fb7b1c 100644 --- a/SSL/src/CommonModules/РезервноеКопированиеИБКлиентГлобальный/Module.bsl +++ b/SSL/src/CommonModules/РезервноеКопированиеИБКлиентГлобальный/Module.bsl @@ -11,76 +11,6 @@ // Процедура ОбработчикДействийРезервногоКопирования() Экспорт - ПараметрыРезервногоКопированияИБНаКлиенте = РезервноеКопированиеИБКлиент.ПолучитьПараметрыРезервногоКопированияИБ(); - ПроводитьАвтоматическоеРезервноеКопирование = РезервноеКопированиеИБКлиент.НеобходимостьАвтоматическогоРезервногоКопирования(); - - Если ПроводитьАвтоматическоеРезервноеКопирование Тогда - РезервноеКопированиеИБКлиент.ПровестиРезервноеКопирование(); - КонецЕсли; - - Если ПараметрыРезервногоКопированияИБНаКлиенте.ОтложенноеРезервноеКопирование Тогда - ОтложенноеИнтерактивноеРезервноеКопирование(ПараметрыРезервногоКопированияИБНаКлиенте); - КонецЕсли; - - ВариантОповещения = ПараметрыРезервногоКопированияИБНаКлиенте.ПараметрОповещения; - Если ВариантОповещения = "Просрочено" Или ВариантОповещения = "Напомнить" Или ВариантОповещения = "ЕщеНеНастроено" Тогда - РезервноеКопированиеИБКлиент.ОповеститьПользователяОРезервномКопировании(ПараметрыРезервногоКопированияИБНаКлиенте.ПараметрОповещения); - КонецЕсли; + РезервноеКопированиеИБКлиент.ОбработчикОжиданияЗапуска(); КонецПроцедуры - - -//////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ - -// Обработчик ожидания выполнения резервного копирования. -// -// Параметры: -// ПараметрыКопирования - Структура - параметры резервного копирования. -// -Процедура ОтложенноеИнтерактивноеРезервноеКопирование(ПараметрыКопирования) Экспорт - - ДатаКопирования = РезервноеКопированиеИБКлиент.ПолучитьДатуКопирования(); - ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса(); - Если ТекущаяДата > ДатаКопирования Тогда - - ПараметрыРезервногоКопированияИБНаКлиенте = РезервноеКопированиеИБКлиент.ПолучитьПараметрыРезервногоКопированияИБ(); - ПараметрыРезервногоКопированияИБНаКлиенте.ОтложенноеРезервноеКопирование = Ложь; - РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ОтложенноеРезервноеКопирование", Ложь); - РезервноеКопированиеИБКлиент.УстановитьПараметрыРезервногоКопирования(ПараметрыРезервногоКопированияИБНаКлиенте); - - НачатьРезервноеКопирование(); - - Иначе - - Если РезервноеКопированиеИБВызовСервера.ПолучитьКоличествоАктивныхПользователей() = 1 Тогда - - ТекстВопроса = НСтр("ru = 'В данный момент с базой больше никто не работает. Выполнить резервное копирование?'"); - Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 30, КодВозвратаДиалога.Да, - Нстр("ru = 'Провести резервное копирование прямо сейчас'"), КодВозвратаДиалога.Да); - - Если Ответ = КодВозвратаДиалога.Да ИЛИ Ответ = КодВозвратаДиалога.Таймаут Тогда - ПараметрыРезервногоКопированияИБНаКлиенте = РезервноеКопированиеИБКлиент.ПолучитьПараметрыРезервногоКопированияИБ(); - ПараметрыРезервногоКопированияИБНаКлиенте.ОтложенноеРезервноеКопирование = Ложь; - РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ОтложенноеРезервноеКопирование", Ложь); - РезервноеКопированиеИБКлиент.УстановитьПараметрыРезервногоКопирования(ПараметрыРезервногоКопированияИБНаКлиенте); - - НачатьРезервноеКопирование(); - КонецЕсли; - - КонецЕсли; - - КонецЕсли; - -КонецПроцедуры - -// Открывает форму выполнения резервного копирования. -// -Процедура НачатьРезервноеКопирование() - - ПараметрыФормы = Новый Структура("ТипВызова, ТекущаяСтраница, ЗаголовокНадписи", 1, "СтраницаИнформацииИВыполненияРезервногоКопирования", ""); - ФормаОбработки = ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеИнформационнойБазы", ПараметрыФормы); - -КонецПроцедуры - - diff --git a/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl index 2f4b6adee..2b5f4f1a7 100644 --- a/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl +++ b/SSL/src/CommonModules/РезервноеКопированиеИБСервер/Module.bsl @@ -35,34 +35,6 @@ КонецПроцедуры -// Заполняет структуру параметров, необходимых для работы клиентского кода -// конфигурации. -// -// Параметры: -// Параметры - Структура - структура параметров. -// -Процедура ДобавитьПараметрыРаботыКлиента(Параметры) Экспорт - - Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда - Возврат; - КонецЕсли; - - Параметры.Вставить("ПараметрыРезервногоКопированияИБ", ПолучитьНастройкиРезервногоКопирования()); - -КонецПроцедуры - -// Заполняет структуру параметров, необходимых для работы клиентского кода -// конфигурации при завершении работы. -// -// Параметры: -// Параметры - Структура - структура параметров. -// -Процедура ДобавитьПараметрыРаботыКлиентаПриЗавершении(Параметры) Экспорт - - Параметры.Вставить("ПараметрыРезервногоКопированияИБ", ПолучитьПараметрыПриЗавершенииРаботы()); - -КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -102,7 +74,7 @@ Возврат 3600 * 24; ИначеЕсли ТипПериодаСтрока = "Неделя" Тогда Возврат 3600 * 24 * 7; - КонецЕсли; + КонецЕсли; КонецФункции // Возвращает значение периода по заданному интервалу времени. @@ -229,8 +201,8 @@ Если Параметры.Свойство("ПроцессВыполняется") Тогда Если Параметры.ПроцессВыполняется Тогда Возврат Ложь; - КонецЕсли; - КонецЕсли; + КонецЕсли; + КонецЕсли; ДатаПроверки = ТекущаяДатаСеанса(); Если Параметры.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования > ДатаПроверки Тогда @@ -243,21 +215,23 @@ КонецФункции -// Устанавливает значение ближайшего следующего автоматического резервного копирования в соответствии с расписанием. +// Формирует даты ближайшего следующего автоматического резервного копирования в соответствии с расписанием. // // Параметры: // НачальнаяНастройка - Булево - признак начальной настройки. -// ПараметрыРезервногоКопированияИБНаКлиенте - Структура - параметры резервного копирования. // -Процедура УстановитьДатуСледующегоАвтоматическогоКопирования(ПараметрыРезервногоКопированияИБНаКлиенте, НачальнаяНастройка = Ложь) Экспорт +Функция СформироватьДатыСледующегоАвтоматическогоКопирования(НачальнаяНастройка = Ложь) Экспорт + + Результат = Новый Структура; + + НастройкиРезервногоКопирования = ПолучитьНастройкиРезервногоКопирования(); - Параметры = ПолучитьНастройкиРезервногоКопирования(); ТекущаяДата = ТекущаяДатаСеанса(); - Если НачальнаяНастройка Тогда - Параметры.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования = ТекущаяДата; - Параметры.ДатаПоследнегоРезервногоКопирования = ТекущаяДата; + Если НачальнаяНастройка Тогда + Результат.Вставить("МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования", ТекущаяДата); + Результат.Вставить("ДатаПоследнегоРезервногоКопирования", ТекущаяДата); Иначе - РасписаниеКопирования = Параметры.РасписаниеКопирования; + РасписаниеКопирования = НастройкиРезервногоКопирования.РасписаниеКопирования; ПериодПовтораВТечениеДня = РасписаниеКопирования.ПериодПовтораВТечениеДня; ПериодПовтораДней = РасписаниеКопирования.ПериодПовтораДней; @@ -267,24 +241,23 @@ Значение = ТекущаяДата + ПериодПовтораДней * ПолучитьВременнойПараметрПоСтроке("День"); Иначе Значение = НачалоДня(КонецДня(ТекущаяДата) + 1); - КонецЕсли; - Параметры.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования = Значение; + КонецЕсли; + Результат.Вставить("МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования", Значение); КонецЕсли; - ПараметрыРезервногоКопированияИБНаКлиенте = Параметры; - УстановитьПараметрыРезервногоКопирования(Параметры); -КонецПроцедуры + ЗаполнитьЗначенияСвойств(НастройкиРезервногоКопирования, Результат); + УстановитьПараметрыРезервногоКопирования(НастройкиРезервногоКопирования); + + Возврат Результат; + +КонецФункции // Возвращает значение настройки "Статус резервного копирования" в части результата. // Используется при начале работы системы для показа формы с результатами резервного копирования. // -// Параметры: -// ПараметрыРезервногоКопированияИБНаКлиенте - Структура - параметры резервного копирования. -// -Процедура УстановитьРезультатРезервногоКопирования(ПараметрыРезервногоКопированияИБНаКлиенте) Экспорт +Процедура УстановитьРезультатРезервногоКопирования() Экспорт СтруктураПараметров = ПолучитьНастройкиРезервногоКопирования(); СтруктураПараметров.ПроведеноКопирование = Ложь; - ПараметрыРезервногоКопированияИБНаКлиенте = СтруктураПараметров; УстановитьПараметрыРезервногоКопирования(СтруктураПараметров); КонецПроцедуры @@ -351,33 +324,15 @@ УстановитьПараметрыРезервногоКопирования(ПараметрыОповещений); КонецПроцедуры -// Останавливает механизм автоматического резервного копирования. -// Устанавливает пустое расписание и минимальную дату копирования в будущее время. -// -// Параметры: -// ПроводитьПриЗавершении - Булево - признак проведения резервного копирования при завершении работы. -// ПараметрыРезервногоКопированияИБНаКлиенте - Структура - параметры резервного копирования. -// -Процедура ОстановитьАвтоматическоеРезервноеКопирование(ПараметрыРезервногоКопированияИБНаКлиенте, ПроводитьПриЗавершении) Экспорт - - ПараметрыАвтоматическогоКопирования = ПолучитьНастройкиРезервногоКопирования(); - ПараметрыАвтоматическогоКопирования.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования = Дата(2100, 12, 31); - ПараметрыАвтоматическогоКопирования.ПроводитьРезервноеКопированиеПриЗавершенииРаботы = ПроводитьПриЗавершении; - ПараметрыРезервногоКопированияИБНаКлиенте = ПараметрыАвтоматическогоКопирования; - УстановитьПараметрыРезервногоКопирования(ПараметрыАвтоматическогоКопирования); - -КонецПроцедуры - // Устанавливает настройку в параметры резервного копирования. // // Параметры: // ИмяЭлемента - Строка - имя параметра. // ЗначениеЭлемента - Произвольный тип - значение параметра. // -Процедура УстановитьЗначениеНастройки(ИмяЭлемента, ЗначениеЭлемента, ПараметрыРезервногоКопированияИБНаКлиенте) Экспорт +Процедура УстановитьЗначениеНастройки(ИмяЭлемента, ЗначениеЭлемента) Экспорт СтруктураНастроек = ПолучитьПараметрыРезервногоКопирования(); СтруктураНастроек.Вставить(ИмяЭлемента, ЗначениеЭлемента); - ПараметрыРезервногоКопированияИБНаКлиенте = СтруктураНастроек; УстановитьПараметрыРезервногоКопирования(СтруктураНастроек); КонецПроцедуры @@ -388,10 +343,14 @@ // // Возвращаемое значение - Структура - параметры резервного копирования. // -Функция ПолучитьНастройкиРезервногоКопирования(НаКлиент = Ложь) Экспорт +Функция ПолучитьНастройкиРезервногоКопирования(НачалоРаботы = Ложь) Экспорт + + Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат Неопределено; // Не выполнен вход в область данных. + КонецЕсли; Если Не ПолучитьДоступностьРолейОповещения() Тогда - Возврат Неопределено; + Возврат Неопределено; // Текущий пользователь не обладает необходимыми правами. КонецЕсли; СтруктураВозврата = ПолучитьПараметрыРезервногоКопирования(); @@ -400,7 +359,7 @@ КонецЕсли; ВариантОповещения = ПолучитьВариантОповещения(); - Если ВариантОповещения = "Просрочено" Или ВариантОповещения = "Напомнить" Или ВариантОповещения = "ЕщеНеНастроено" Тогда + Если ВариантОповещения = "Просрочено" Или ВариантОповещения = "Напомнить" Или ВариантОповещения = "ЕщеНеНастроено" Тогда УстановитьДатуПоследнегоНапоминания(ТекущаяДатаСеанса()); КонецЕсли; @@ -413,26 +372,12 @@ ОбновитьРезультатВосстановления(); КонецЕсли; - Если НаКлиент Тогда - Возврат СформироватьКлиентскуюСтруктуру(СтруктураВозврата); - Иначе - Возврат СтруктураВозврата; + Если НачалоРаботы И СтруктураВозврата.ПроцессВыполняется Тогда + СтруктураВозврата.ПроцессВыполняется = Ложь; + УстановитьЗначениеНастройки("ПроцессВыполняется", Ложь); КонецЕсли; -КонецФункции - -// Возвращает клиентскую структуру с параметрами для работы приложения. -// -// Параметры: -// ИсходнаяСтруктура - Структура - структура параметров резервного копирования. -// -// Возвращаемое значение - Структура - скопированная структура параметров резервного копирования. -// -Функция СформироватьКлиентскуюСтруктуру(ИсходнаяСтруктура) - - КлиентскаяСтруктура = Новый Структура("ДатаПоследнегоОповещения, ОтложенноеРезервноеКопирование, ПараметрОповещения, ДатаПоследнегоРезервногоКопирования"); - ЗаполнитьЗначенияСвойств(КлиентскаяСтруктура, ИсходнаяСтруктура); - Возврат КлиентскаяСтруктура; + Возврат СтруктураВозврата; КонецФункции @@ -500,7 +445,7 @@ Параметры.Вставить("ДатаПоследнегоРезервногоКопирования", ТекущаяДата); Параметры.Вставить("РасписаниеКопирования", ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(Новый РасписаниеРегламентногоЗадания)); Параметры.Вставить("КаталогХраненияРезервныхКопий", ""); - Параметры.Вставить("МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования", Дата(2100, 12, 31)); + Параметры.Вставить("МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования", '29990101'); Параметры.Вставить("ПроизводитьУдаление", Истина); Параметры.Вставить("УдалятьПоПериоду", Истина); Параметры.Вставить("ЗначениеПараметра", ДобавитьМесяц(ТекущаяДата, 6) - ТекущаяДата); @@ -528,46 +473,14 @@ КонецФункции -// Возвращает признак доступности роли "ПолучениеНапоминанийОРезервномКопировании". +// Возвращает признак наличия у пользователя полных прав. // -// Возвращаемое значение - Булево - доступность роли. +// Возвращаемое значение - Булево - Истина, если это полноправный пользователь. // Функция ПолучитьДоступностьРолейОповещения() Экспорт - Возврат Пользователи.РолиДоступны("ПолучениеНапоминанийОРезервномКопировании"); + Возврат Пользователи.ЭтоПолноправныйПользователь(,Истина); КонецФункции -// Останавливает оповещения о резервном копировании. -// -// Параметры: -// ПараметрыРезервногоКопированияИБНаКлиенте - Структура - параметры резервного копирования. -// -Процедура ОстановитьСервисОповещения(ПараметрыРезервногоКопированияИБНаКлиенте) Экспорт - Настройка = ПолучитьНастройкиРезервногоКопирования(); - Настройка.ПериодОповещения = 0; - Настройка.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования = Дата(2100, 12, 31); - Настройка.НастроеноПользователем = Истина; - ПараметрыРезервногоКопированияИБНаКлиенте = Настройка; - УстановитьПараметрыРезервногоКопирования(Настройка); -КонецПроцедуры - -// Устанавливает элемент "Код выбора" настроек резервного копирования. -// -// Параметры: -// КодПереключателя - Число - код переключателя. -// ПараметрыРезервногоКопированияИБНаКлиенте - Структура - параметры резервного копирования. -// -Процедура УстановитьКодВыбора(КодПереключателя, ПараметрыРезервногоКопированияИБНаКлиенте) Экспорт - Структура = ПолучитьНастройкиРезервногоКопирования(); - Структура.ВыборПунктаНастройки = КодПереключателя; - - Если КодПереключателя = 3 Тогда - Структура.НастроеноПользователем = Ложь; - КонецЕсли; - - ПараметрыРезервногоКопированияИБНаКлиенте = Структура; - УстановитьПараметрыРезервногоКопирования(Структура); -КонецПроцедуры - // Процедура, вызываемая из скрипта через com-соединение. // Записывает результат проведенного копирования в настройки. // @@ -596,6 +509,42 @@ УстановитьПараметрыРезервногоКопирования(СтруктураРезультата); КонецПроцедуры +// Возвращает текущую настройку резервного копирования строкой +// Два варианта использования функции - или с передачей всех параметров или без параметров +// +Функция ТекущаяНастройкаРезервногоКопирования(КодНастройки = Неопределено, + ПриЗавершенииРаботы = Неопределено, Расписание = Неопределено) Экспорт + + Если КодНастройки = Неопределено Тогда + НастройкиРезервногоКопирования = ПолучитьНастройкиРезервногоКопирования(); + КодНастройки = НастройкиРезервногоКопирования.ВыборПунктаНастройки; + ПриЗавершенииРаботы = НастройкиРезервногоКопирования.ПроводитьРезервноеКопированиеПриЗавершенииРаботы; + Расписание = НастройкиРезервногоКопирования.РасписаниеКопирования; + КонецЕсли; + + НадписьПоУмолчанию = НСтр("ru = 'Резервное копирование не настроено, информационная база подвергается риску потери данных.'");; + + Если КодНастройки = 3 Тогда + ТекущаяНастройка = НадписьПоУмолчанию; + ИначеЕсли КодНастройки = 2 Тогда + ТекущаяНастройка = НСтр("ru = 'Резервное копирование не выполняется (организовано средствами СУБД или другими сторонними программами)'"); + Иначе + Если ПриЗавершенииРаботы Тогда + ТекущаяНастройка = НСтр("ru = 'Резервное копирование выполняется регулярно при завершении работы.'"); + Иначе + Расписание = ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(Расписание); + Если Не ПустаяСтрока(Расписание) Тогда + ТекущаяНастройка = НСтр("ru = 'Резервное копирование выполняется регулярно по расписанию:'") + " " + Строка(Расписание); + Иначе + ТекущаяНастройка = НадписьПоУмолчанию; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Возврат ТекущаяНастройка; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Обработчики событий подсистем БСП @@ -609,7 +558,7 @@ // Процедура ПриДобавленииПараметровРаботыКлиентскойЛогикиСтандартныхПодсистемПриЗавершении(Параметры) Экспорт - ДобавитьПараметрыРаботыКлиентаПриЗавершении(Параметры); + Параметры.Вставить("РезервноеКопированиеИБ", ПолучитьПараметрыПриЗавершенииРаботы()); КонецПроцедуры @@ -621,7 +570,7 @@ // Процедура ПриДобавленииПараметровРаботыКлиентскойЛогикиСтандартныхПодсистемПриЗапуске(Параметры) Экспорт - ДобавитьПараметрыРаботыКлиента(Параметры); + Параметры.Вставить("РезервноеКопированиеИБ", ПолучитьНастройкиРезервногоКопирования(Истина)); КонецПроцедуры @@ -633,6 +582,6 @@ // Процедура ПриДобавленииПараметровРаботыКлиентскойЛогикиСтандартныхПодсистем(Параметры) Экспорт - ДобавитьПараметрыРаботыКлиента(Параметры); + Параметры.Вставить("РезервноеКопированиеИБ", ПолучитьНастройкиРезервногоКопирования()); КонецПроцедуры diff --git a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанных/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанных/Module.bsl index 6a6cd4abf..78f991a85 100644 --- a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанных/Module.bsl +++ b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанных/Module.bsl @@ -21,80 +21,6 @@ КонецФункции -// Сообщить об успешной архивации текущей области. -// -Функция ОтправитьСообщениеРезервнаяКопияОбластиСоздана(Знач ПараметрыСообщения) Экспорт - - НачатьТранзакцию(); - Попытка - Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияКонтрольРезервногоКопированияИнтерфейс.СообщениеРезервнаяКопияОбластиСоздана()); - - Сообщение.Body.Zone = ПараметрыСообщения.ОбластьДанных; - Сообщение.Body.BackupId = ПараметрыСообщения.ИДКопии; - Сообщение.Body.FileId = ПараметрыСообщения.ИДФайла; - Сообщение.Body.Date = ТекущаяУниверсальнаяДата(); - - СообщенияВМоделиСервиса.ОтправитьСообщение( - Сообщение, - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); - - ЗафиксироватьТранзакцию(); - Исключение - ОтменитьТранзакцию(); - ВызватьИсключение; - КонецПопытки; - -КонецФункции - -// Планировать архивацию области в прикладной базе. -// -Функция ОтправитьСообщениеОшибкаАрхивацииОбласти(Знач ПараметрыСообщения) Экспорт - - НачатьТранзакцию(); - Попытка - Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияКонтрольРезервногоКопированияИнтерфейс.СообщениеОшибкаАрхивацииОбласти()); - - Сообщение.Body.Zone = ПараметрыСообщения.ОбластьДанных; - Сообщение.Body.BackupId = ПараметрыСообщения.ИДКопии; - - СообщенияВМоделиСервиса.ОтправитьСообщение( - Сообщение, - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); - - ЗафиксироватьТранзакцию(); - Исключение - ОтменитьТранзакцию(); - ВызватьИсключение; - КонецПопытки; - -КонецФункции - -// Планировать архивацию области в прикладной базе. -// -Функция ОтправитьСообщениеАрхивацияОбластиПропущена(Знач ПараметрыСообщения) Экспорт - - НачатьТранзакцию(); - Попытка - Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияКонтрольРезервногоКопированияИнтерфейс.СообщениеАрхивацияОбластиПропущена()); - - Сообщение.Body.Zone = ПараметрыСообщения.ОбластьДанных; - Сообщение.Body.BackupId = ПараметрыСообщения.ИДКопии; - - СообщенияВМоделиСервиса.ОтправитьСообщение( - Сообщение, - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); - - ЗафиксироватьТранзакцию(); - Исключение - ОтменитьТранзакцию(); - ВызватьИсключение; - КонецПопытки; - -КонецФункции - //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -124,6 +50,10 @@ СерверныеОбработчики[ "СтандартныеПодсистемы.РаботаВМоделиСервиса\ПриЗаполненииТаблицыПараметровИБ"].Добавить( "РезервноеКопированиеОбластейДанных"); + + СерверныеОбработчики[ + "СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий\ПриОпределенииОбработчиковОшибок"].Добавить( + "РезервноеКопированиеОбластейДанных"); КонецПроцедуры @@ -142,6 +72,7 @@ Процедура ПриОпределенииПсевдонимовОбработчиков(СоответствиеИменПсевдонимам) Экспорт СоответствиеИменПсевдонимам.Вставить("РезервноеКопированиеОбластейДанных.ВыгрузитьОбластьВХранилищеМС"); + СоответствиеИменПсевдонимам.Вставить("РезервноеКопированиеОбластейДанных.СозданиеКопий"); КонецПроцедуры @@ -196,6 +127,7 @@ Процедура ПриОпределенииОбъектовМетаданныхИсключаемыхИзВыгрузкиЗагрузки(Объекты) Экспорт Объекты.Добавить(Метаданные.Константы.ВыполнитьРезервноеКопированиеОбластиДанных); + Объекты.Добавить(Метаданные.Константы.ДатаПоследнегоСтартаКлиентскогоСеанса); КонецПроцедуры @@ -208,32 +140,71 @@ Процедура ПриЗаполненииТаблицыПараметровИБ(ТаблицаПараметров) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - СтрокаПараметра = Модуль.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "ПоддержкаРезервногоКопирования"); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + СтрокаПараметра = МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "ПоддержкаРезервногоКопирования"); КонецЕсли; КонецПроцедуры +// Заполняет соответствие методов обработчиков ошибок псевдонимам методов, при возникновении +// ошибок в которых они вызываются. +// +// Параметры: +// ОбработчикиОшибок - Соответствие +// Ключ - Псевдоним метода, например ОчиститьОбластьДанных +// Значение - Имя метода - обработчика ошибок, для вызова при возникновении ошибки. +// Обработчик ошибок вызывается в случае завершения выполнения исходного задания +// с ошибкой. Обработчик ошибок вызывается в той же области данных, что и исходное +// задание. +// Метод обработчика ошибок считается разрешенным к вызову механизмами очереди. +// Параметры обработчика ошибок: +// ПараметрыЗадания - Структура - параметры задания очереди +// Параметры +// НомерПопытки +// КоличествоПовторовПриАварийномЗавершении +// ДатаНачалаПоследнегоЗапуска +// ИнформацияОбОшибке - ИнформацияОбОшибке - описание ошибки, произошедшей при +// выполнении задания +// +Процедура ПриОпределенииОбработчиковОшибок(ОбработчикиОшибок) Экспорт + + ОбработчикиОшибок.Вставить( + "РезервноеКопированиеОбластейДанных.СозданиеКопий", + "РезервноеКопированиеОбластейДанных.ОшибкаСозданияКопии"); + +КонецПроцедуры + // Активность пользователей в области данных // Устанавливает признак активности пользователя в текущей области. -// Признаком является значение совместно разделенной константы ВыполнитьРезервноеКопированиеОбластиДанных. +// Признаком является значение совместно разделенной константы ДатаПоследнегоСтартаКлиентскогоСеанса. // Процедура УстановитьФлагАктивностиПользователяВОбласти() Экспорт - Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() - И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() - И ТекущийРежимЗапуска() <> Неопределено - И ПолучитьФункциональнуюОпцию("ПоддержкаРезервногоКопирования") Тогда + Если НЕ ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() + ИЛИ НЕ ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() + ИЛИ ТекущийРежимЗапуска() = Неопределено + ИЛИ НЕ ПолучитьФункциональнуюОпцию("ПоддержкаРезервногоКопирования") Тогда + + Возврат; - УстановитьФлагАктивностиВОбласти(); КонецЕсли; + УстановитьФлагАктивностиВОбласти(); // Для обратной совместимости + + ДатаСтарта = НачалоДня(ТекущаяУниверсальнаяДата()); + + Если Константы.ДатаПоследнегоСтартаКлиентскогоСеанса.Получить() = ДатаСтарта Тогда + Возврат; + КонецЕсли; + + Константы.ДатаПоследнегоСтартаКлиентскогоСеанса.Установить(ДатаСтарта); + КонецПроцедуры // Устанавливает либо снимает признак активности пользователя в текущей области. // Признаком является значение совместно разделенной константы ВыполнитьРезервноеКопированиеОбластиДанных. -// Снятие признака - удаление записи. +// Устарело. // // Параметры: // ОбластьДанных - Число; Неопределено - Значение разделителя. Неопределено означает значение разделителя текущей области данных. @@ -258,6 +229,15 @@ УстановитьПривилегированныйРежим(Истина); + Если Состояние Тогда + МенеджерЗначения = Константы.ВыполнитьРезервноеКопированиеОбластиДанных.СоздатьМенеджерЗначения(); + МенеджерЗначения.ОбластьДанныхВспомогательныеДанные = ОбластьДанных; + МенеджерЗначения.Прочитать(); + Если МенеджерЗначения.Значение Тогда + Возврат; + КонецЕсли; + КонецЕсли; + ФлагАктивности = Константы.ВыполнитьРезервноеКопированиеОбластиДанных.СоздатьМенеджерЗначения(); ФлагАктивности.ОбластьДанныхВспомогательныеДанные = ОбластьДанных; ФлагАктивности.Значение = Состояние; @@ -268,6 +248,264 @@ //////////////////////////////////////////////////////////////////////////////// // Выгрузка областей данных. +// Создает резервную копию области в соответствии с настройками резервного копирования +// области. +// +// Параметры: +// ПараметрыСоздания - ФиксированнаяСтруктура - параметры создания резервной копии, +// соответствуют настройкам резервного копирования +// СостояниеСоздания - ФиксированнаяСтруктура - состояние процесса создания +// резервных копий в области +// +Процедура СозданиеКопий(Знач ПараметрыСоздания, Знач СостояниеСоздания) Экспорт + + НачалоВыполнения = ТекущаяУниверсальнаяДата(); + + УсловияСозданияКопий = Новый Массив; + + Параметры = Новый Структура; + Параметры.Вставить("Тип", "Ежедневная"); + Параметры.Вставить("Включены", "СоздаватьЕжедневные"); + Параметры.Вставить("Периодичность", "День"); + Параметры.Вставить("ДатаСоздания", "ДатаСозданияПоследнейЕжедневной"); + Параметры.Вставить("День", Неопределено); + Параметры.Вставить("Месяц", Неопределено); + УсловияСозданияКопий.Добавить(Параметры); + + Параметры = Новый Структура; + Параметры.Вставить("Тип", "Ежемесячная"); + Параметры.Вставить("Включены", "СоздаватьЕжемесячные"); + Параметры.Вставить("Периодичность", "Месяц"); + Параметры.Вставить("ДатаСоздания", "ДатаСозданияПоследнейЕжемесячной"); + Параметры.Вставить("День", "ДеньСозданияЕжемесячных"); + Параметры.Вставить("Месяц", Неопределено); + УсловияСозданияКопий.Добавить(Параметры); + + Параметры = Новый Структура; + Параметры.Вставить("Тип", "Ежегодная"); + Параметры.Вставить("Включены", "СоздаватьЕжегодные"); + Параметры.Вставить("Периодичность", "Год"); + Параметры.Вставить("ДатаСоздания", "ДатаСозданияПоследнейЕжегодной"); + Параметры.Вставить("День", "ДеньСозданияЕжегодных"); + Параметры.Вставить("Месяц", "МесяцСозданияЕжегодных"); + УсловияСозданияКопий.Добавить(Параметры); + + ТребуетсяСоздание = Ложь; + ТекущаяДата = ТекущаяУниверсальнаяДата(); + + ПоследнийСеанс = Константы.ДатаПоследнегоСтартаКлиентскогоСеанса.Получить(); + + СоздаватьБезусловно = НЕ ПараметрыСоздания.ТолькоПриАктивностиПользователей; + + ФлагиПериодичности = Новый Структура; + Для каждого ПараметрыПериодичности Из УсловияСозданияКопий Цикл + + ФлагиПериодичности.Вставить(ПараметрыПериодичности.Тип, Ложь); + + Если НЕ ПараметрыСоздания[ПараметрыПериодичности.Включены] Тогда + // Создание копий данной периодичности выключено в настройках + Продолжить; + КонецЕсли; + + ДатаСозданияПредыдущей = СостояниеСоздания[ПараметрыПериодичности.ДатаСоздания]; + + Если Год(ТекущаяДата) = Год(ДатаСозданияПредыдущей) Тогда + Если ПараметрыПериодичности.Периодичность = "Год" Тогда + // Год еще не сменился + Продолжить; + КонецЕсли; + КонецЕсли; + + Если Месяц(ТекущаяДата) = Месяц(ДатаСозданияПредыдущей) Тогда + Если ПараметрыПериодичности.Периодичность = "Месяц" Тогда + // Месяц еще не сменился + Продолжить; + КонецЕсли; + КонецЕсли; + + Если День(ТекущаяДата) = День(ДатаСозданияПредыдущей) Тогда + // День еще не сменился + Продолжить; + КонецЕсли; + + Если ПараметрыПериодичности.День <> Неопределено + И День(ТекущаяДата) < ПараметрыСоздания[ПараметрыПериодичности.День] Тогда + + // Нужный день еще не наступил + Продолжить; + КонецЕсли; + + Если ПараметрыПериодичности.Месяц <> Неопределено + И Месяц(ТекущаяДата) < ПараметрыСоздания[ПараметрыПериодичности.Месяц] Тогда + + // Нужный месяц еще не наступил + Продолжить; + КонецЕсли; + + Если НЕ СоздаватьБезусловно + И ЗначениеЗаполнено(ДатаСозданияПредыдущей) + И ПоследнийСеанс < ДатаСозданияПредыдущей Тогда + + // Пользователи не заходили в область после создания резервной копии + Продолжить; + КонецЕсли; + + ТребуетсяСоздание = Истина; + ФлагиПериодичности.Вставить(ПараметрыПериодичности.Тип, Истина); + + КонецЦикла; + + Если НЕ ТребуетсяСоздание Тогда + ЗаписьЖурналаРегистрации( + СобытиеЖурналаРегистрации() + "." + + НСтр("ru = 'Пропуск создания'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Информация); + Возврат; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + + ИмяАрхива = Неопределено; + + ПараметрыБлокировки = СоединенияИБ.НовыеПараметрыБлокировкиСоединений(); + ПараметрыБлокировки.Начало = ТекущаяУниверсальнаяДата(); + ПараметрыБлокировки.Сообщение = НСтр("ru = 'Выполняется создание резервной копии приложения. Настройки резервного копирования могут быть изменены в менеджере сервиса.'"); + ПараметрыБлокировки.Установлена = Истина; + + СоединенияИБ.УстановитьБлокировкуСеансовОбластиДанных(ПараметрыБлокировки, Ложь); + + НачатьТранзакцию(); + Попытка + + РаботаВМоделиСервиса.ЗаблокироватьТекущуюОбластьДанных(, Истина); + ИмяАрхива = ВыгрузкаЗагрузкаДанных.ВыгрузитьТекущуюОбластьВАрхив(); + + ДатаСозданияКопии = ТекущаяУниверсальнаяДата(); + + ОписаниеАрхива = Новый Файл(ИмяАрхива); + РазмерФайла = ОписаниеАрхива.Размер(); + + ИДФайла = РаботаВМоделиСервиса.ПоместитьФайлВХранилищеМенеджераСервиса(ОписаниеАрхива); + + Попытка + УдалитьФайлы(ИмяАрхива); + Исключение + // При невозможности удаления файла выполнение не должно прерываться + КонецПопытки; + + ИдКопии = Новый УникальныйИдентификатор; + + ПараметрыСообщения = Новый Структура; + ПараметрыСообщения.Вставить("ОбластьДанных", ОбщегоНазначения.ЗначениеРазделителяСеанса()); + ПараметрыСообщения.Вставить("ИДКопии", ИдКопии); + ПараметрыСообщения.Вставить("ИДФайла", ИДФайла); + ПараметрыСообщения.Вставить("ДатаСоздания", ДатаСозданияКопии); + Для каждого КлючИЗначение Из ФлагиПериодичности Цикл + ПараметрыСообщения.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + КонецЦикла; + + ОтправитьСообщениеРезервнаяКопияОбластиСоздана(ПараметрыСообщения); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + // Обновление состояния в параметрах + ОтборЗаданий = Новый Структура; + ОтборЗаданий.Вставить("ИмяМетода", "РезервноеКопированиеОбластейДанных.СозданиеКопий"); + ОтборЗаданий.Вставить("Ключ", "1"); + Задания = ОчередьЗаданий.ПолучитьЗадания(ОтборЗаданий); + Если Задания.Количество() > 0 Тогда + Задание = Задания[0].Идентификатор; + + ПараметрыМетода = Новый Массив; + ПараметрыМетода.Добавить(ПараметрыСоздания); + + ОбновленноеСостояние = Новый Структура; + Для каждого ПараметрыПериодичности Из УсловияСозданияКопий Цикл + Если ФлагиПериодичности[ПараметрыПериодичности.Тип] Тогда + ДатаСостояния = ДатаСозданияКопии; + Иначе + ДатаСостояния = СостояниеСоздания[ПараметрыПериодичности.ДатаСоздания]; + КонецЕсли; + + ОбновленноеСостояние.Вставить(ПараметрыПериодичности.ДатаСоздания, ДатаСостояния); + КонецЦикла; + + ПараметрыМетода.Добавить(Новый ФиксированнаяСтруктура(ОбновленноеСостояние)); + + ПараметрыЗадания = Новый Структура; + ПараметрыЗадания.Вставить("Параметры", ПараметрыМетода); + ОчередьЗаданий.ИзменитьЗадание(Задание, ПараметрыЗадания); + КонецЕсли; + + ПараметрыБлокировки = СоединенияИБ.НовыеПараметрыБлокировкиСоединений(); + ПараметрыБлокировки.Установлена = Ложь; + + СоединенияИБ.УстановитьБлокировкуСеансовОбластиДанных(ПараметрыБлокировки, Ложь); + + ПараметрыСобытия = Новый Структура; + Для каждого КлючИЗначение Из ФлагиПериодичности Цикл + ПараметрыСобытия.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + КонецЦикла; + ПараметрыСобытия.Вставить("ИдКопии", ИдКопии); + ПараметрыСобытия.Вставить("ИдФайла", ИдФайла); + ПараметрыСобытия.Вставить("Размер", РазмерФайла); + ПараметрыСобытия.Вставить("Длительность", ТекущаяУниверсальнаяДата() - НачалоВыполнения); + + ЗаписатьСобытиеВЖурнал( + НСтр("ru = 'Создание'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + ПараметрыСобытия); + +КонецПроцедуры + +// При исчерпании количества попыток создания резервной копии, записывает в журнал +// регистрации сообщение о том, что копия не была создана. +// +// Параметры: +// ПараметрыЗадания - Структура - описание см. описание события +// СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий\ПриОпределенииОбработчиковОшибок +// +Процедура ОшибкаСозданияКопии(Знач ПараметрыЗадания, Знач ИнформацияОбОшибке) Экспорт + + Если ПараметрыЗадания.НомерПопытки < ПараметрыЗадания.КоличествоПовторовПриАварийномЗавершении Тогда + ШаблонКомментария = НСтр("ru = 'При создании резервной копии области %1 произошла ошибка. + |Номер попытки: %2 + |По причине: + |%3'"); + Уровень = УровеньЖурналаРегистрации.Предупреждение; + Событие = НСтр("ru = 'Ошибка итерации создания'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); + Иначе + ШаблонКомментария = НСтр("ru = 'При создании резервной копии области %1 произошла невосстановимая ошибка. + |Номер попытки: %2 + |По причине: + |%3'"); + Уровень = УровеньЖурналаРегистрации.Ошибка; + Событие = НСтр("ru = 'Ошибка создания'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); + + ПараметрыБлокировки = СоединенияИБ.НовыеПараметрыБлокировкиСоединений(); + ПараметрыБлокировки.Установлена = Ложь; + + СоединенияИБ.УстановитьБлокировкуСеансовОбластиДанных(ПараметрыБлокировки, Ложь); + КонецЕсли; + + ТекстКомментария = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонКомментария, + Формат(ОбщегоНазначения.ЗначениеРазделителяСеанса(), "ЧН=0; ЧГ="), + ПараметрыЗадания.НомерПопытки, + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + + ЗаписьЖурналаРегистрации( + СобытиеЖурналаРегистрации() + "." + Событие, + Уровень, + , + , + ТекстКомментария); + +КонецПроцедуры + // Планирует создание резервной копии области данных. // // Параметры: @@ -356,6 +594,7 @@ // При невозможности удаления файла выполнение не должно прерываться КонецПопытки; ПараметрыВыгрузки.Вставить("ИДФайла", ИДФайла); + ПараметрыВыгрузки.Вставить("ДатаСоздания", ТекущаяУниверсальнаяДата()); ОтправитьСообщениеРезервнаяКопияОбластиСоздана(ПараметрыВыгрузки); Если ЗначениеЗаполнено(АдресХранилища) Тогда ПоместитьВоВременноеХранилище(ИДФайла, АдресХранилища); @@ -364,7 +603,7 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Создание резервной копии области данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Создание резервной копии области данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Попытка Если ИмяАрхива <> Неопределено Тогда @@ -473,6 +712,101 @@ КонецПроцедуры +// Сообщить об успешной архивации текущей области. +// +Процедура ОтправитьСообщениеРезервнаяКопияОбластиСоздана(Знач ПараметрыСообщения) + + Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( + СообщенияКонтрольРезервногоКопированияИнтерфейс.СообщениеРезервнаяКопияОбластиСоздана()); + + Тело = Сообщение.Body; + + Тело.Zone = ПараметрыСообщения.ОбластьДанных; + Тело.BackupId = ПараметрыСообщения.ИДКопии; + Тело.FileId = ПараметрыСообщения.ИДФайла; + Тело.Date = ПараметрыСообщения.ДатаСоздания; + Если ПараметрыСообщения.Свойство("Ежедневная") Тогда + Тело.Daily = ПараметрыСообщения.Ежедневная; + Тело.Monthly = ПараметрыСообщения.Ежемесячная; + Тело.Yearly = ПараметрыСообщения.Ежегодная; + Иначе + Тело.Daily = Ложь; + Тело.Monthly = Ложь; + Тело.Yearly = Ложь; + КонецЕсли; + Тело.ConfigurationVersion = Метаданные.Версия; + + СообщенияВМоделиСервиса.ОтправитьСообщение( + Сообщение, + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); + +КонецПроцедуры + +// Планировать архивацию области в прикладной базе. +// +Процедура ОтправитьСообщениеОшибкаАрхивацииОбласти(Знач ПараметрыСообщения) + + НачатьТранзакцию(); + Попытка + Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( + СообщенияКонтрольРезервногоКопированияИнтерфейс.СообщениеОшибкаАрхивацииОбласти()); + + Сообщение.Body.Zone = ПараметрыСообщения.ОбластьДанных; + Сообщение.Body.BackupId = ПараметрыСообщения.ИДКопии; + + СообщенияВМоделиСервиса.ОтправитьСообщение( + Сообщение, + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Планировать архивацию области в прикладной базе. +// +Процедура ОтправитьСообщениеАрхивацияОбластиПропущена(Знач ПараметрыСообщения) + + НачатьТранзакцию(); + Попытка + Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( + СообщенияКонтрольРезервногоКопированияИнтерфейс.СообщениеАрхивацияОбластиПропущена()); + + Сообщение.Body.Zone = ПараметрыСообщения.ОбластьДанных; + Сообщение.Body.BackupId = ПараметрыСообщения.ИДКопии; + + СообщенияВМоделиСервиса.ОтправитьСообщение( + Сообщение, + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +Функция СобытиеЖурналаРегистрации() + + Возврат НСтр("ru = 'Резервное копирование приложений'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); + +КонецФункции + +Процедура ЗаписатьСобытиеВЖурнал(Знач Событие, Знач Параметры) + + ЗаписьЖурналаРегистрации( + СобытиеЖурналаРегистрации() + "." + Событие, + УровеньЖурналаРегистрации.Информация, + , + , + ОбщегоНазначения.ЗначениеВСтрокуXML(Параметры)); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Работа с настройками резервного копирования @@ -488,7 +822,8 @@ Функция ПолучитьНастройкиРезервногоКопированияОбласти(Знач ОбластьДанных = Неопределено) Экспорт Если НЕ ОбщегоНазначенияПовтИсп.СеансЗапущенБезРазделителей() - И ОбластьДанных <> ОбщегоНазначения.ЗначениеРазделителяСеанса() Тогда + И ОбластьДанных <> ОбщегоНазначения.ЗначениеРазделителяСеанса() + И ОбластьДанных <> Неопределено Тогда ВызватьИсключение(НСтр("ru = 'Запрещено работать с данными области кроме текущей'")); КонецЕсли; diff --git a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс/Module.bsl new file mode 100644 index 000000000..683f380de --- /dev/null +++ b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс/Module.bsl @@ -0,0 +1,47 @@ +//////////////////////////////////////////////////////////////////////////////// +// Подсистема "Резервное копирование областей данных". +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Функция ПолучитьПараметрыФормыНастроек(Знач ОбластьДанных) Экспорт + + Параметры = Реализация().ПолучитьПараметрыФормыНастроек(ОбластьДанных); + Параметры.Вставить("ОбластьДанных", ОбластьДанных); + + Возврат Параметры; + +КонецФункции + +Функция ПолучитьНастройкиОбласти(Знач ОбластьДанных) Экспорт + + Возврат Реализация().ПолучитьНастройкиОбласти(ОбластьДанных); + +КонецФункции + +Процедура УстановитьНастройкиОбласти(Знач ОбластьДанных, Знач НовыеНастройки, Знач ИсходныеНастройки) Экспорт + + Реализация().УстановитьНастройкиОбласти(ОбластьДанных, НовыеНастройки, ИсходныеНастройки); + +КонецПроцедуры + +Функция ПолучитьСтандартныеНастройки() Экспорт + + Возврат Реализация().ПолучитьСтандартныеНастройки(); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Функция Реализация() + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РезервноеКопированиеОбластейДанныхМС") Тогда + Возврат ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеОбластейДанныхДанныеФормРеализацияИБ"); + Иначе + Возврат ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис"); + КонецЕсли; + +КонецФункции \ No newline at end of file diff --git a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс/РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс.mdo b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс/РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс.mdo new file mode 100644 index 000000000..0cdd4594b --- /dev/null +++ b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс/РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0a23f273-5589-4a48-be3a-eee7565749aa"> + <name>РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс</name> + <synonym> + <key>ru</key> + <value>Резервное копирование областей данных данные форм интерфейс</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис/Module.bsl new file mode 100644 index 000000000..51b6ed74c --- /dev/null +++ b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис/Module.bsl @@ -0,0 +1,86 @@ +//////////////////////////////////////////////////////////////////////////////// +// Подсистема "Резервное копирование областей данных". +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Функция ПолучитьПараметрыФормыНастроек(Знач ОбластьДанных) Экспорт + + ИнформацияОбОшибке = Неопределено; + Параметры = Прокси().GetSettingsFormParameters( + ОбластьДанных, + КлючОбласти(), + ИнформацияОбОшибке); + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); + + Возврат СериализаторXDTO.ПрочитатьXDTO(Параметры); + +КонецФункции + +Функция ПолучитьНастройкиОбласти(Знач ОбластьДанных) Экспорт + + ИнформацияОбОшибке = Неопределено; + Параметры = Прокси().GetZoneSettings( + ОбластьДанных, + КлючОбласти(), + ИнформацияОбОшибке); + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); + + Возврат СериализаторXDTO.ПрочитатьXDTO(Параметры); + +КонецФункции + +Процедура УстановитьНастройкиОбласти(Знач ОбластьДанных, Знач НовыеНастройки, Знач ИсходныеНастройки) Экспорт + + ИнформацияОбОшибке = Неопределено; + Прокси().SetZoneSettings( + ОбластьДанных, + КлючОбласти(), + СериализаторXDTO.ЗаписатьXDTO(НовыеНастройки), + СериализаторXDTO.ЗаписатьXDTO(ИсходныеНастройки), + ИнформацияОбОшибке); + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); + +КонецПроцедуры + +Функция ПолучитьСтандартныеНастройки() Экспорт + + ИнформацияОбОшибке = Неопределено; + Параметры = Прокси().GetDefaultSettings( + ИнформацияОбОшибке); + РаботаВМоделиСервиса.ОбработатьИнформациюОбОшибкеWebСервиса(ИнформацияОбОшибке); + + Возврат СериализаторXDTO.ПрочитатьXDTO(Параметры); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Функция КлючОбласти() + + УстановитьПривилегированныйРежим(Истина); + Возврат Константы.КлючОбластиДанных.Получить(); + +КонецФункции + +Функция Прокси() + + УстановитьПривилегированныйРежим(Истина); + АдресМенеджераСервиса = Константы.ВнутреннийАдресМенеджераСервиса.Получить(); + Если Не ЗначениеЗаполнено(АдресМенеджераСервиса) Тогда + ВызватьИсключение(НСтр("ru = 'Не установлены параметры связи с менеджером сервиса.'")); + КонецЕсли; + + АдресСервиса = АдресМенеджераСервиса + "/ws/ZoneBackupControl_1_0_2_1?wsdl"; + ИмяПользователя = Константы.ИмяСлужебногоПользователяМенеджераСервиса.Получить(); + ПарольПользователя = Константы.ПарольСлужебногоПользователяМенеджераСервиса.Получить(); + + Прокси = ОбщегоНазначения.WSПрокси(АдресСервиса, "http://www.1c.ru/1cFresh/ZoneBackupControl/1.0.2.1", + "ZoneBackupControl_1_0_2_1", , ИмяПользователя, ПарольПользователя, 10); + + Возврат Прокси; + +КонецФункции diff --git a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис/РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис.mdo b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис/РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис.mdo new file mode 100644 index 000000000..2030738aa --- /dev/null +++ b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис/РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="494eb9d9-4a10-4e85-b511-375408f21bbe"> + <name>РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис</name> + <synonym> + <key>ru</key> + <value>Резервное копирование областей данных данные форм реализация web сервис</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхПовтИсп/Module.bsl b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхПовтИсп/Module.bsl index 460667364..4dfb8ed1c 100644 --- a/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/РезервноеКопированиеОбластейДанныхПовтИсп/Module.bsl @@ -98,6 +98,6 @@ // Функция НаименованиеФоновогоРезервногоКопирования() Экспорт - Возврат НСтр("ru = 'Резервное копирование области данных'"); + Возврат НСтр("ru = 'Резервное копирование области данных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); КонецФункции diff --git a/SSL/src/CommonModules/СоединенияИБ/Module.bsl b/SSL/src/CommonModules/СоединенияИБ/Module.bsl index 7b8d548a5..28f3afda6 100644 --- a/SSL/src/CommonModules/СоединенияИБ/Module.bsl +++ b/SSL/src/CommonModules/СоединенияИБ/Module.bsl @@ -66,14 +66,13 @@ // Возвращаемое значение: // Булево - Истина, если установлена, ложь - Иначе. // -Функция УстановленаБлокировкаСоединений() Экспорт +Функция УстановленаБлокировкаСоединений(ПараметрыБлокировки = Неопределено) Экспорт - УстановитьПривилегированныйРежим(Истина); - ТекущийРежимОбластиДанных = ПолучитьБлокировкуСеансовОбластиДанных(); - ТекущийРежимИБ = ПолучитьБлокировкуСеансов(); - ТекущаяДата = ТекущаяДатаСеанса(); - Возврат УстановленаБлокировкаСоединенийНаДату(ТекущийРежимОбластиДанных, ТекущаяДата) - Или УстановленаБлокировкаСоединенийНаДату(ТекущийРежимИБ, ТекущаяДата); + Если ПараметрыБлокировки = Неопределено Тогда + ПараметрыБлокировки = СтруктураПараметровБлокировкиСеансов(); + КонецЕсли; + + Возврат ПараметрыБлокировки.УстановленаБлокировкаСоединений; КонецФункции @@ -93,23 +92,23 @@ // КоличествоСеансов - 0, если параметр ПолучитьКоличествоСеансов = Ложь // ТекущаяДатаСеанса - Дата - текущая дата сеанса. // -Функция ПараметрыБлокировкиСеансов(Знач ПолучитьКоличествоСеансов = Ложь) Экспорт +Функция ПараметрыБлокировкиСеансов(Знач ПолучитьКоличествоСеансов = Ложь, ПараметрыБлокировки = Неопределено) Экспорт - УстановитьПривилегированныйРежим(Истина); - ТекущийРежимОбластиДанных = ПолучитьБлокировкуСеансовОбластиДанных(); - ТекущийРежимИБ = ПолучитьБлокировкуСеансов(); - ТекущаяДата = ТекущаяДатаСеанса(); - ТекущийРежим = НовыеПараметрыБлокировкиСоединений(); - Если УстановленаБлокировкаСоединенийНаДату(ТекущийРежимИБ, ТекущаяДата) Тогда - ТекущийРежим = ТекущийРежимИБ; - ИначеЕсли УстановленаБлокировкаСоединенийНаДату(ТекущийРежимОбластиДанных, ТекущаяДата) Тогда - ТекущийРежим = ТекущийРежимОбластиДанных; - ИначеЕсли ТекущийРежимИБ.Установлена Тогда - ТекущийРежим = ТекущийРежимИБ; - Иначе - ТекущийРежим = ТекущийРежимОбластиДанных; + Если ПараметрыБлокировки = Неопределено Тогда + ПараметрыБлокировки = СтруктураПараметровБлокировкиСеансов(); КонецЕсли; + Если ПараметрыБлокировки.УстановленаБлокировкаСоединенийИБНаДату Тогда + ТекущийРежим = ПараметрыБлокировки.ТекущийРежимИБ; + ИначеЕсли ПараметрыБлокировки.УстановленаБлокировкаСоединенийОбластиДанныхНаДату Тогда + ТекущийРежим = ПараметрыБлокировки.ТекущийРежимОбластиДанных; + ИначеЕсли ПараметрыБлокировки.ТекущийРежимИБ.Установлена Тогда + ТекущийРежим = ПараметрыБлокировки.ТекущийРежимИБ; + Иначе + ТекущийРежим = ПараметрыБлокировки.ТекущийРежимОбластиДанных; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); Возврат Новый Структура( "Установлена,Начало,Конец,Сообщение,ИнтервалОжиданияЗавершенияРаботыПользователей,КоличествоСеансов,ТекущаяДатаСеанса", ТекущийРежим.Установлена, @@ -119,8 +118,7 @@ 15 * 60, // 15 минут; интервал ожидания завершения пользователей до момента установки // блокировки информационной базы (в секундах). ?(ПолучитьКоличествоСеансов, КоличествоСеансовИнформационнойБазы(), 0), - ТекущаяДатаСеанса() - ); + ПараметрыБлокировки.ТекущаяДата); КонецФункции @@ -174,7 +172,7 @@ Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда ВызватьИсключение НСтр("ru ='Недостаточно прав для выполнения операции'"); - КонецЕсли; + КонецЕсли; УстановитьПривилегированныйРежим(Истина); СоединенияИБКлиентСервер.УстановитьБлокировкуРегламентныхЗаданий(Значение); @@ -189,7 +187,7 @@ Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда ВызватьИсключение НСтр("ru ='Недостаточно прав для выполнения операции'"); - КонецЕсли; + КонецЕсли; УстановитьПривилегированныйРежим(Истина); Возврат СоединенияИБКлиентСервер.БлокировкаРегламентныхЗаданийУстановлена(); @@ -316,7 +314,7 @@ // Параметры - Структура - структура параметров. // Процедура ДобавитьПараметрыРаботыКлиента(Параметры) Экспорт - Параметры.Вставить("ПараметрыБлокировкиСеансов", Новый ФиксированнаяСтруктура(СоединенияИБ.ПараметрыБлокировкиСеансов())); + Параметры.Вставить("ПараметрыБлокировкиСеансов", Новый ФиксированнаяСтруктура(ПараметрыБлокировкиСеансов())); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -389,8 +387,8 @@ Процедура ПриЗаполненииТаблицыПараметровИБ(Знач ТаблицаПараметров) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "СообщениеБлокировкиПриОбновленииКонфигурации"); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ДобавитьКонстантуВТаблицуПараметровИБ(ТаблицаПараметров, "СообщениеБлокировкиПриОбновленииКонфигурации"); КонецЕсли; КонецПроцедуры @@ -405,14 +403,17 @@ // Процедура ПриДобавленииПараметровРаботыКлиентскойЛогикиСтандартныхПодсистемПриЗапуске(Параметры) Экспорт - Параметры.Вставить("ПараметрыБлокировкиСеансов", Новый ФиксированнаяСтруктура(СоединенияИБ.ПараметрыБлокировкиСеансов())); - УстановитьПривилегированныйРежим(Истина); - Если Не УстановленаБлокировкаСоединений() Тогда + ПараметрыБлокировки = СтруктураПараметровБлокировкиСеансов(); + Параметры.Вставить("ПараметрыБлокировкиСеансов", Новый ФиксированнаяСтруктура(ПараметрыБлокировкиСеансов(, ПараметрыБлокировки))); + + Если Не ПараметрыБлокировки.УстановленаБлокировкаСоединений + Или Не ОбщегоНазначенияПовтИсп.РазделениеВключено() + Или Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда Возврат; КонецЕсли; - ТекущийРежим = ПолучитьБлокировкуСеансовОбластиДанных(); - УстановитьПривилегированныйРежим(Ложь); + // Дальнейший код актуален только для области данных с установленной блокировкой + ТекущийРежим = ПараметрыБлокировки.ТекущийРежимОбластиДанных; Если ЗначениеЗаполнено(ТекущийРежим.Конец) Тогда ПериодБлокировки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -525,7 +526,7 @@ Набор = РегистрыСведений.БлокировкиСеансовОбластейДанных.СоздатьНаборЗаписей(); Набор.Загрузить(Запрос.Выполнить().Выгрузить()); - Набор.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Набор); ЗафиксироватьТранзакцию(); @@ -554,7 +555,7 @@ Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда ВызватьИсключение НСтр("ru ='Недостаточно прав для выполнения операции'"); - КонецЕсли; + КонецЕсли; СтандартнаяОбработка = Истина; Результат = Истина; @@ -566,7 +567,7 @@ УстановитьПривилегированныйРежим(Истина); Возврат СоединенияИБКлиентСервер.ОтключитьСеанс(НомерСеанса, СообщениеОбОшибке); Иначе // Для Linux - СообщениеОбОшибке = НСтр("ru = 'Невозможно принудительно завершить сеансы при работе через веб-сервер, + СообщениеОбОшибке = НСтр("ru = 'Невозможно принудительно завершить сеансы, | так как на сервере не установлена ОС Microsoft Windows'"); ЗаписатьНазванияСоединенийИБ(СообщениеОбОшибке); Возврат Ложь; @@ -586,7 +587,7 @@ Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда ВызватьИсключение НСтр("ru ='Недостаточно прав для выполнения операции'"); - КонецЕсли; + КонецЕсли; УстановитьПривилегированныйРежим(Истина); Возврат СоединенияИБКлиентСервер.ОтключитьСоединенияИБ(ПараметрыАдминистрированияИБ); @@ -607,7 +608,7 @@ Если Не Пользователи.ЭтоПолноправныйПользователь() Тогда ВызватьИсключение НСтр("ru ='Недостаточно прав для выполнения операции'"); - КонецЕсли; + КонецЕсли; УстановитьПривилегированныйРежим(Истина); СоединенияИБКлиентСервер.ПроверитьПараметрыАдминистрированияИБ(ПараметрыАдминистрированияИБ, ПодробноеСообщениеОбОшибке); @@ -757,17 +758,6 @@ КонецФункции -// Возвращает строковую константу для формирования сообщений журнала регистрации. -// -// Возвращаемое значение: -// Строка -// -Функция СобытиеЖурналаРегистрации() - - Возврат НСтр("ru = 'Завершение работы пользователей'"); - -КонецФункции - // Записать в журнал регистрации список сеансов ИБ. // // Параметры: @@ -775,7 +765,7 @@ // Процедура ЗаписатьНазванияСоединенийИБ(Знач ТекстСообщения) Экспорт Сообщение = ПолучитьНазванияСоединенийИБ(ТекстНеУдалосьЗавершитьРаботуПользователей(ТекстСообщения)); - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), + ЗаписьЖурналаРегистрации(СоединенияИБКлиентСервер.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Предупреждение, , , Сообщение); КонецПроцедуры @@ -816,6 +806,30 @@ КонецФункции +// Возвращает структуру, содержащую параметры блокировки сеансов +// +Функция СтруктураПараметровБлокировкиСеансов() + + УстановитьПривилегированныйРежим(Истина); + + ТекущаяДата = ТекущаяДатаСеанса(); + ТекущийРежимИБ = ПолучитьБлокировкуСеансов(); + ТекущийРежимОбластиДанных = ПолучитьБлокировкуСеансовОбластиДанных(); + УстановленаБлокировкаСоединенийИБНаДату = УстановленаБлокировкаСоединенийНаДату(ТекущийРежимИБ, ТекущаяДата); + УстановленаБлокировкаСоединенийОбластиДанныхНаДату = УстановленаБлокировкаСоединенийНаДату(ТекущийРежимОбластиДанных, ТекущаяДата); + + ПараметрыБлокировкиСеансов = Новый Структура; + ПараметрыБлокировкиСеансов.Вставить("ТекущаяДата", ТекущаяДата); + ПараметрыБлокировкиСеансов.Вставить("ТекущийРежимИБ", ТекущийРежимИБ); + ПараметрыБлокировкиСеансов.Вставить("ТекущийРежимОбластиДанных", ТекущийРежимОбластиДанных); + ПараметрыБлокировкиСеансов.Вставить("УстановленаБлокировкаСоединенийИБНаДату", УстановленаБлокировкаСоединенийНаДату(ТекущийРежимИБ, ТекущаяДата)); + ПараметрыБлокировкиСеансов.Вставить("УстановленаБлокировкаСоединенийОбластиДанныхНаДату", УстановленаБлокировкаСоединенийНаДату(ТекущийРежимОбластиДанных, ТекущаяДата)); + ПараметрыБлокировкиСеансов.Вставить("УстановленаБлокировкаСоединений", УстановленаБлокировкаСоединенийИБНаДату Или УстановленаБлокировкаСоединенийОбластиДанныхНаДату); + + Возврат ПараметрыБлокировкиСеансов; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов в другие подсистемы @@ -844,8 +858,8 @@ УстановитьПривилегированныйРежим(Истина); Параметры = СоединенияИБПовтИсп.ПолучитьПараметрыАдминистрированияИБ(); Попытка - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Результат = Модуль.УдалитьСеансыИРазорватьСоединенияЧерезАгентСервиса(НомерСеанса, Параметры); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + Результат = МодульРаботаВМоделиСервиса.УдалитьСеансыИРазорватьСоединенияЧерезАгентСервиса(НомерСеанса, Параметры); Исключение СообщениеОбОшибке = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); Результат = Ложь; diff --git a/SSL/src/CommonModules/СоединенияИБКлиент/Module.bsl b/SSL/src/CommonModules/СоединенияИБКлиент/Module.bsl index ca59faeac..da9d4ea36 100644 --- a/SSL/src/CommonModules/СоединенияИБКлиент/Module.bsl +++ b/SSL/src/CommonModules/СоединенияИБКлиент/Module.bsl @@ -93,6 +93,8 @@ Возврат Ложь; КонецЕсли; + ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СоединенияИБКлиентСервер.СобытиеЖурналаРегистрации(),, + Нстр("ru = 'Выполнен запуск с параметром ""РазрешитьРаботуПользователей"". Работа программы будет завершена.'"), ,Истина); ЗавершитьРаботуСистемы(Ложь); Возврат Истина; diff --git a/SSL/src/CommonModules/СоединенияИБКлиентСервер/Module.bsl b/SSL/src/CommonModules/СоединенияИБКлиентСервер/Module.bsl index 39da458ad..882dfa6e5 100644 --- a/SSL/src/CommonModules/СоединенияИБКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/СоединенияИБКлиентСервер/Module.bsl @@ -21,32 +21,33 @@ Функция ОтключитьСеанс(НомерСеанса, СообщениеОбОшибке) Экспорт Если СоединенияИБВызовСервера.КоличествоСеансовИнформационнойБазы() <= 1 Тогда - Возврат Истина; // Отключены все пользователи, кроме текущего сеанса + Возврат Истина;// Отключены все пользователи, кроме текущего сеанса КонецЕсли; // Невозможно принудительно отсоединить сеансы в файловом режиме работы Если ИнформационнаяБазаФайловая() Тогда СообщениеОбОшибке = НСтр("ru = 'Невозможно принудительно завершить сеанс в файловом режиме работы'"); СоединенияИБВызовСервера.ЗаписатьНазванияСоединенийИБ(СообщениеОбОшибке); - Возврат Ложь; + Возврат Ложь; КонецЕсли; -#Если НаКлиенте Тогда - Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда +#Если НаКлиенте Тогда + Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() + Или ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда // Передаем управление на Windows-сервер Возврат СоединенияИБВызовСервера.ОтключитьСеанс(НомерСеанса, СообщениеОбОшибке); КонецЕсли; -#КонецЕсли +#КонецЕсли Попытка Возврат ЗавершитьСеанс(НомерСеанса); Исключение СообщениеОбОшибке = НСтр("ru = 'Невозможно принудительно завершить сеанс - |по причине: - |%1 - | - |Возможно не настроены параметры администрирования ИБ. - |Технические подробности об ошибке см. в Журнале регистрации.'"); + |по причине: + |%1 + | + |Возможно не настроены параметры администрирования ИБ. + |Технические подробности об ошибке см. в Журнале регистрации.'"); ИнфоОбОшибке = ИнформацияОбОшибке(); СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СообщениеОбОшибке, КраткоеПредставлениеОшибки(ИнфоОбОшибке)); @@ -67,47 +68,49 @@ Функция ОтключитьСоединенияИБ(Знач ПараметрыАдминистрированияИБ = Неопределено) Экспорт Если СоединенияИБВызовСервера.КоличествоСеансовИнформационнойБазы() <= 1 Тогда - Возврат Истина; // Отключены все пользователи, кроме текущего сеанса + Возврат Истина; // Отключены все пользователи, кроме текущего сеанса КонецЕсли; // Невозможно принудительно отсоединить сеансы в файловом режиме работы Если ИнформационнаяБазаФайловая() Тогда СоединенияИБВызовСервера.ЗаписатьНазванияСоединенийИБ(НСтр("ru = 'Невозможно принудительно завершить сеансы в файловом режиме работы'")); - Возврат Ложь; + Возврат Ложь; КонецЕсли; -#Если НаКлиенте Тогда - Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда +#Если НаКлиенте Тогда + Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() + Или ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда Если СоединенияИБПовтИсп.ПараметрыОтключенияСеансов().WindowsПлатформаНаСервере Тогда // Передаем управление на сервер Возврат СоединенияИБВызовСервера.ОтключитьСоединенияИБ(ПараметрыАдминистрированияИБ); КонецЕсли; - СоединенияИБВызовСервера.ЗаписатьНазванияСоединенийИБ(НСтр("ru = 'Невозможно принудительно завершить сеансы при работе с клиента через веб-сервер, + СоединенияИБВызовСервера.ЗаписатьНазванияСоединенийИБ( + НСтр("ru = 'Невозможно принудительно завершить сеансы, | если на сервере не установлена ОС Microsoft Windows'")); - Возврат Ложь; + Возврат Ложь; КонецЕсли; -#КонецЕсли +#КонецЕсли Попытка Сеансы = ПолучитьАктивныеСеансыИБ(Истина, ПараметрыАдминистрированияИБ); Для каждого Сеанс Из Сеансы.Сеансы Цикл // Разрываем сеансы с ИБ Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Завершается сеанс: %1, компьютер %2, начат %3, режим %4'"), - Сеанс.UserName, - Сеанс.Host, - Сеанс.StartedAt, + НСтр("ru = 'Завершается сеанс: %1, компьютер %2, начат %3, режим %4'"), + Сеанс.UserName, + Сеанс.Host, + Сеанс.StartedAt, Сеанс.AppID); ЗаписатьСобытие(Сообщение, "Информация", Ложь); Сеансы.АгентСервера.TerminateSession(Сеансы.КластерСерверов, Сеанс); КонецЦикла; -#Если НаКлиенте Тогда +#Если НаКлиенте Тогда КлиентскиеСообщения = СообщенияДляЖурналаРегистрации; -#Иначе +#Иначе КлиентскиеСообщения = Неопределено; -#КонецЕсли +#КонецЕсли Возврат СоединенияИБВызовСервера.КоличествоСеансовИнформационнойБазы(КлиентскиеСообщения) <= 1; Исключение ЗаписатьСобытие(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), "Ошибка"); @@ -135,7 +138,7 @@ ВызватьИсключение НСтр("ru = 'Невозможно получить список активных соединений в файловом режиме работы'"); КонецЕсли; -#Если НаКлиенте Тогда +#Если НаКлиенте Тогда Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда Если СоединенияИБПовтИсп.ПараметрыОтключенияСеансов().WindowsПлатформаНаСервере Тогда // Передаем управление на сервер @@ -145,7 +148,7 @@ // если на сервере не установлена ОС Microsoft Windows ВызватьИсключение НСтр("ru = 'Невозможно получить список активных соединений при работе через веб-сервер'"); КонецЕсли; -#КонецЕсли +#КонецЕсли Сеансы = ПолучитьАктивныеСеансыИБ(Истина, ПараметрыАдминистрированияИБ); Исключение @@ -173,7 +176,7 @@ ВызватьИсключение НСтр("ru = 'Невозможно установить блокировку регламентных и фоновых заданий в файловом режиме работы'"); КонецЕсли; -#Если НаКлиенте Тогда +#Если НаКлиенте Тогда Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда Если СоединенияИБПовтИсп.ПараметрыОтключенияСеансов().WindowsПлатформаНаСервере Тогда // Передаем управление на сервер @@ -182,7 +185,7 @@ ВызватьИсключение НСтр("ru = 'Невозможно установить блокировку регламентных и фоновых заданий при работе с клиента через веб-сервер, | если на сервере не установлена ОС Microsoft Windows'"); КонецЕсли; -#КонецЕсли +#КонецЕсли Подключение = ПодключитьсяКТекущейИБ(); Подключение.ТекущаяБаза.ScheduledJobsDenied = Значение; @@ -201,7 +204,7 @@ Возврат Ложь; КонецЕсли; -#Если НаКлиенте Тогда +#Если НаКлиенте Тогда Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда Если СоединенияИБПовтИсп.ПараметрыОтключенияСеансов().WindowsПлатформаНаСервере Тогда // Передаем управление на сервер @@ -209,7 +212,7 @@ КонецЕсли; Возврат Ложь; КонецЕсли; -#КонецЕсли +#КонецЕсли Подключение = ПодключитьсяКТекущейИБ(); Возврат Подключение.ТекущаяБаза.ScheduledJobsDenied; @@ -232,13 +235,13 @@ Результат = СтрокаСоединенияИнформационнойБазы(); Если ИнформационнаяБазаФайловая() Или (ПортКластераСерверов = 0) Тогда Возврат Результат; - КонецЕсли; + КонецЕсли; -#Если НаКлиенте Тогда +#Если НаКлиенте Тогда Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда Возврат Результат; - КонецЕсли; -#КонецЕсли + КонецЕсли; +#КонецЕсли ПодстрокиСтрокиСоединения = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Результат, ";"); ИмяСервера = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(Сред(ПодстрокиСтрокиСоединения[0], 7)); @@ -254,7 +257,7 @@ // // Параметры // ПризнакФайловогоРежима - Булево - выходной параметр. Принимает значение -// Истина, если текущая ИБ - файловая; +// Истина, если текущая ИБ - файловая; // Ложь - если клиент-серверная. // ПортКластераСерверов - Число - входной параметр. Задается в случае, если // кластер серверов использует нестандартный номер порта. @@ -286,7 +289,7 @@ ПозицияТочкиСЗапятой = Найти(СтрокаСоединения, ";"); НачальнаяПозицияКопирования = 6 + 1; - КонечнаяПозицияКопирования = ПозицияТочкиСЗапятой - 2; + КонечнаяПозицияКопирования = ПозицияТочкиСЗапятой - 2; ИмяСервера = Сред(СтрокаСоединения, НачальнаяПозицияКопирования, КонечнаяПозицияКопирования - НачальнаяПозицияКопирования + 1); @@ -378,9 +381,9 @@ // Возвращаемое значение: // Строка - наименование события для журнала регистрации. // -Функция СобытиеЖурналаРегистрации() +Функция СобытиеЖурналаРегистрации() Экспорт - Возврат НСтр("ru = 'Завершение работы пользователей'"); + Возврат НСтр("ru = 'Завершение работы пользователей'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); КонецФункции @@ -400,7 +403,7 @@ Функция ПодключитьсяКАгентуСервера(ПараметрыСоединенияССервером1СПредприятие) ПодстрокиСтрокиСоединения = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок( - СтрокаСоединенияИнформационнойБазы(), ";"); + СтрокаСоединенияИнформационнойБазы(), ";"); СтрокаИмениСервера = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(Сред(ПодстрокиСтрокиСоединения[0], 7)); ИмяИБ = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(Сред(ПодстрокиСтрокиСоединения[1], 6)); @@ -415,7 +418,7 @@ СообщениеОбОшибке = Символы.ПС; ШаблонОшибки = Нстр("ru = 'Не удалось подключиться к серверу ""%1"" по причине: - |%2'"); + |%2'"); Для Каждого ИмяСервера Из СписокСерверовКластера Цикл @@ -453,7 +456,7 @@ ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки, ИмяСервера, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); - СообщениеОбОшибке = СообщениеОбОшибке + ТекстОшибки + Символы.ПС; + СообщениеОбОшибке = СообщениеОбОшибке + ТекстОшибки + Символы.ПС + Символы.ПС; КонецПопытки; @@ -573,7 +576,7 @@ Параметры = СоединенияИБПовтИсп.ПолучитьПараметрыАдминистрированияИБ(); КонецЕсли; Подключение = ПодключитьсяКАгентуСервера(Параметры); - Результат.АгентСервера = Подключение.АгентСервера; + Результат.АгентСервера = Подключение.АгентСервера; // Найдем необходимый нам кластер Для каждого Кластер Из Подключение.АгентСервера.GetClusters() Цикл @@ -582,7 +585,7 @@ Продолжить; КонецЕсли; - Результат.КластерСерверов = Кластер; + Результат.КластерСерверов = Кластер; Подключение.АгентСервера.Authenticate(Кластер, Параметры.ИмяАдминистратораКластера, Параметры.ПарольАдминистратораКластера); @@ -602,7 +605,7 @@ КонецЦикла; Возврат Результат; - + КонецФункции // Возвращает активные сеансы информационной базы. @@ -621,11 +624,11 @@ ВызватьИсключение НСтр("ru = 'Невозможно получить список активных соединений в файловом режиме работы'"); КонецЕсли; -#Если НаКлиенте Тогда +#Если НаКлиенте Тогда Если ОбщегоНазначенияКлиент.КлиентПодключенЧерезВебСервер() Тогда ВызватьИсключение НСтр("ru = 'Невозможно получить список активных соединений при работе через веб-сервер'"); КонецЕсли; -#КонецЕсли +#КонецЕсли // Подключение к агенту сервера ПараметрыАдминистрированияИБ = СоединенияИБПовтИсп.ПолучитьПараметрыАдминистрированияИБ(); @@ -670,11 +673,11 @@ // Булево - Истина, если информационная база файловая. // Функция ИнформационнаяБазаФайловая() -#Если НаКлиенте Тогда +#Если НаКлиенте Тогда Результат = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИнформационнаяБазаФайловая; #Иначе Результат = ОбщегоНазначения.ИнформационнаяБазаФайловая(); -#КонецЕсли +#КонецЕсли Возврат Результат; КонецФункции @@ -686,11 +689,11 @@ // Записать - Булево - Истина, если сразу записать в журнал регистрации. // Процедура ЗаписатьСобытие(Знач ТекстСобытия, ПредставлениеУровня = "Информация", Записать = Истина) -#Если НаКлиенте Тогда +#Если НаКлиенте Тогда ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(СобытиеЖурналаРегистрации(), ПредставлениеУровня, ТекстСобытия,,Записать); #Иначе ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), ПредопределенноеЗначение("УровеньЖурналаРегистрации." + ПредставлениеУровня),,, ТекстСобытия); -#КонецЕсли +#КонецЕсли КонецПроцедуры diff --git a/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс/Module.bsl index a865119d7..8e3586e48 100644 --- a/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс/Module.bsl @@ -189,7 +189,7 @@ // Для внутреннего использования // -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1/Module.bsl b/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1/Module.bsl index defe86bb9..cebbdafd7 100644 --- a/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1/Module.bsl +++ b/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1/Module.bsl @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 1.0.0.1 ИНТЕРФЕЙСА СООБЩЕНИЙ +// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 2.1.2.1 ИНТЕРФЕЙСА СООБЩЕНИЙ // КОНТРОЛЯ АДМИНИСТРИРОВАНИЯ ОБМЕНА ДАННЫМИ // //////////////////////////////////////////////////////////////////////////////// diff --git a/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс/Module.bsl index c9d392aed..66a64e589 100644 --- a/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс/Module.bsl @@ -187,7 +187,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиУправлениеОбработчикСообщения_2_1_2_1/Module.bsl b/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиУправлениеОбработчикСообщения_2_1_2_1/Module.bsl index 44c511c54..08aec49a9 100644 --- a/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиУправлениеОбработчикСообщения_2_1_2_1/Module.bsl +++ b/SSL/src/CommonModules/СообщенияАдминистрированиеОбменаДаннымиУправлениеОбработчикСообщения_2_1_2_1/Module.bsl @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 1.0.0.1 ИНТЕРФЕЙСА СООБЩЕНИЙ +// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 2.1.2.1 ИНТЕРФЕЙСА СООБЩЕНИЙ // УПРАВЛЕНИЯ АДМИНИСТРИРОВАНИЕМ ОБМЕНА ДАННЫМИ // //////////////////////////////////////////////////////////////////////////////// @@ -74,12 +74,10 @@ ПредставлениеОшибки = НСтр("ru = 'Конечная точка не соответствует ожидаемой. Код ожидаемой конечной точки %1. Код текущей конечной точки %2.'"); ПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПредставлениеОшибки, Тело.SenderId, - ОбменСообщениямиВнутренний.КодЭтогоУзла() - ); + ОбменСообщениямиВнутренний.КодЭтогоУзла()); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКорреспондента(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПодключенияКорреспондента()); @@ -111,19 +109,16 @@ Тело.SenderPassword, ПодключенныйКорреспондент, Тело.RecipientName, - Тело.SenderName - ); + Тело.SenderName); Если Отказ Тогда // Отправляем сообщение в менеджер сервиса об ошибке ПредставлениеОшибки = НСтр("ru = 'Ошибка подключения конечной точки корреспондента обмена. Код конечной точки корреспондента обмена %1.'"); ПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПредставлениеОшибки, - Тело.RecipientId - ); + Тело.RecipientId); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКорреспондента(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПодключенияКорреспондента()); @@ -146,16 +141,13 @@ ПредставлениеОшибки = НСтр("ru = 'Ошибка при подключении конечной точки корреспондента обмена. |Настройки подключения веб-сервиса не соответствуют ожидаемым. |Код ожидаемой конечной точки корреспондента обмена %1. - |Код подключенной конечной точки корреспондента обмена %2.'" - ); + |Код подключенной конечной точки корреспондента обмена %2.'"); ПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПредставлениеОшибки, Тело.RecipientId, - ПодключенныйКорреспондентКод - ); + ПодключенныйКорреспондентКод); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКорреспондента(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПодключенияКорреспондента()); @@ -185,23 +177,19 @@ Тело.RecipientPassword, Тело.SenderURL, Тело.SenderUser, - Тело.SenderPassword - ); + Тело.SenderPassword); Если Отказ Тогда // Отправляем сообщение в менеджер сервиса об ошибке ПредставлениеОшибки = НСтр("ru = 'Ошибка обновления параметров подключения этой конечной точки и конечной точки корреспондента обмена. |Код этой конечной токи %1 - |Код конечной точки корреспондента обмена %2'" - ); + |Код конечной точки корреспондента обмена %2'"); ПредставлениеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПредставлениеОшибки, ОбменСообщениямиВнутренний.КодЭтогоУзла(), - Тело.RecipientId - ); + Тело.RecipientId); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрацииПодключениеКорреспондента(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( СообщенияАдминистрированиеОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПодключенияКорреспондента()); @@ -273,14 +261,12 @@ // Поиск узла по формату кода узла "S00000123" Корреспондент = ПланыОбмена[Тело.ExchangePlan].НайтиПоКоду( - ОбменДаннымиВМоделиСервиса.КодУзлаПланаОбменаВСервисе(Тело.CorrespondentZone) - ); + ОбменДаннымиВМоделиСервиса.КодУзлаПланаОбменаВСервисе(Тело.CorrespondentZone)); Если Корреспондент.Пустая() Тогда // Поиск узла по формату кода узла "0000123" (старый формат) Корреспондент = ПланыОбмена[Тело.ExchangePlan].НайтиПоКоду( - Формат(Тело.CorrespondentZone,"ЧЦ=7; ЧВН=; ЧГ=0") - ); + Формат(Тело.CorrespondentZone,"ЧЦ=7; ЧВН=; ЧГ=0")); КонецЕсли; Если Корреспондент.Пустая() Тогда @@ -297,8 +283,7 @@ АбсолютныйКаталогОбменаИнформацией = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( НастройкиТранспорта.FILEОбщийКаталогОбменаИнформацией, - НастройкиТранспорта.FILEОтносительныйКаталогОбменаИнформацией - ); + НастройкиТранспорта.FILEОтносительныйКаталогОбменаИнформацией); АбсолютныйКаталог = Новый Файл(АбсолютныйКаталогОбменаИнформацией); @@ -306,8 +291,7 @@ УдалитьФайлы(АбсолютныйКаталог.ПолноеИмя); Исключение ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецЕсли; diff --git a/SSL/src/CommonModules/СообщенияВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/СообщенияВМоделиСервиса/Module.bsl index 22c16ba56..5f7bb6947 100644 --- a/SSL/src/CommonModules/СообщенияВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/СообщенияВМоделиСервиса/Module.bsl @@ -47,8 +47,7 @@ ТранслироватьСообщениеВВерсиюКорреспондентаПриНеобходимости( Сообщение, ПараметрыПодключения, - Строка(Получатель) - ); + Строка(Получатель)); НетипизированноеТело = ЗаписатьСообщениеВНетипизированноеТело(Сообщение); @@ -308,8 +307,8 @@ Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); - Модуль.ПриОтправкеСообщения(КаналСообщений, ТелоСообщения, ОбъектСообщения); + МодульСообщенияВМоделиСервисаРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); + МодульСообщенияВМоделиСервисаРазделениеДанных.ПриОтправкеСообщения(КаналСообщений, ТелоСообщения, ОбъектСообщения); КонецЕсли; @@ -346,8 +345,8 @@ Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); - Модуль.ПриПолученииСообщения(КаналСообщений, ТелоСообщения, ОбъектСообщения); + МодульСообщенияВМоделиСервисаРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияВМоделиСервисаРазделениеДанных"); + МодульСообщенияВМоделиСервисаРазделениеДанных.ПриПолученииСообщения(КаналСообщений, ТелоСообщения, ОбъектСообщения); КонецЕсли; diff --git a/SSL/src/CommonModules/СообщенияВМоделиСервисаРазделениеДанных/Module.bsl b/SSL/src/CommonModules/СообщенияВМоделиСервисаРазделениеДанных/Module.bsl index 23a31ef18..a1bb78502 100644 --- a/SSL/src/CommonModules/СообщенияВМоделиСервисаРазделениеДанных/Module.bsl +++ b/SSL/src/CommonModules/СообщенияВМоделиСервисаРазделениеДанных/Module.bsl @@ -152,8 +152,7 @@ Если ТипЗнч(ПереопределенныйСправочник.ПустаяСсылка()) <> ТипЗнч(ОбъектСообщения.Ссылка) Тогда ПодменаОбъектаСообщенияСсылка = ПереопределенныйСправочник.ПолучитьСсылку( - ОбъектСообщения.ПолучитьСсылкуНового().УникальныйИдентификатор() - ); + ОбъектСообщения.ПолучитьСсылкуНового().УникальныйИдентификатор()); Если ОбщегоНазначения.СсылкаСуществует(ПодменаОбъектаСообщенияСсылка) Тогда @@ -254,8 +253,7 @@ Для Каждого Обработчик Из МассивОбработчиков Цикл ТипСообщенияОбработчика = СообщенияУдаленногоАдминистрированияИнтерфейс.СообщениеУстановитьПараметрыОбластиДанных( - Обработчик.Пакет() - ); + Обработчик.Пакет()); Если Сообщение.Body.Тип() = ТипСообщенияОбработчика Тогда СообщениеСодержитКлючОбласти = Истина; @@ -295,8 +293,7 @@ Функция ПроверкаКлючаОбластиВСообщенияхВозможна() СтруктураНастроек = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаWS( - РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса() - ); + РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса()); ПараметрыПодключенияКМС = Новый Структура; ПараметрыПодключенияКМС.Вставить("URL", СтруктураНастроек.WSURLВебСервиса); ПараметрыПодключенияКМС.Вставить("UserName", СтруктураНастроек.WSИмяПользователя); @@ -315,8 +312,7 @@ Иначе МаксимальнаяВерсия = ?(ОбщегоНазначенияКлиентСервер.СравнитьВерсии( ВерсияМС, МаксимальнаяВерсия) > 0, ВерсияМС, - МаксимальнаяВерсия - ); + МаксимальнаяВерсия); КонецЕсли; КонецЦикла; @@ -327,4 +323,4 @@ Возврат (ОбщегоНазначенияКлиентСервер.СравнитьВерсии(МаксимальнаяВерсия, "1.0.4.1") >= 0); -КонецФункции \ No newline at end of file +КонецФункции diff --git a/SSL/src/CommonModules/СообщенияИнформационногоЦентраИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияИнформационногоЦентраИнтерфейс/Module.bsl new file mode 100644 index 000000000..0d704214f --- /dev/null +++ b/SSL/src/CommonModules/СообщенияИнформационногоЦентраИнтерфейс/Module.bsl @@ -0,0 +1,68 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИК ИНТЕРФЕЙСА СООБЩЕНИЙ ИНФОРМАЦИОННОГО ЦЕНТРА +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает пространство имен текущей (используемой вызывающим кодом) версии интерфейса сообщений +Функция Пакет() Экспорт + + Возврат "http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter/Messages/" + Версия(); + +КонецФункции + +// Возвращает текущую (используемую вызывающим кодом) версию интерфейса сообщений +Функция Версия() Экспорт + + Возврат "1.0.1.1"; + +КонецФункции + +// Возвращает название программного интерфейса сообщений +Функция ПрограммныйИнтерфейс() Экспорт + + Возврат "MessageInfoCenter"; + +КонецФункции + +// Выполняет регистрацию обработчиков сообщений в качестве обработчиков каналов обмена сообщениями +// +// Параметры: +// МассивОбработчиков - массив. +// +Процедура ОбработчикиКаналовСообщений(Знач МассивОбработчиков) Экспорт + + МассивОбработчиков.Добавить(СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1); + +КонецПроцедуры + +// Возвращает тип сообщения {http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter/Messages/a.b.c.d}notificateSuggestion +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеОповещенияПожелания(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "notificateSuggestion"); + +КонецФункции + + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) + + Если ИспользуемыйПакет = Неопределено Тогда + ИспользуемыйПакет = Пакет(); + КонецЕсли; + + Возврат ФабрикаXDTO.Тип(ИспользуемыйПакет, Тип); + +КонецФункции \ No newline at end of file diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейСобытия/УправлениеКонтактнойИнформациейСобытия.mdo b/SSL/src/CommonModules/СообщенияИнформационногоЦентраИнтерфейс/СообщенияИнформационногоЦентраИнтерфейс.mdo similarity index 54% rename from SSL/src/CommonModules/УправлениеКонтактнойИнформациейСобытия/УправлениеКонтактнойИнформациейСобытия.mdo rename to SSL/src/CommonModules/СообщенияИнформационногоЦентраИнтерфейс/СообщенияИнформационногоЦентраИнтерфейс.mdo index 34e5cab5b..29d1e18ef 100644 --- a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейСобытия/УправлениеКонтактнойИнформациейСобытия.mdo +++ b/SSL/src/CommonModules/СообщенияИнформационногоЦентраИнтерфейс/СообщенияИнформационногоЦентраИнтерфейс.mdo @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8"?> -<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6c58cc27-215e-4169-88ae-004ecc657d53"> - <name>УправлениеКонтактнойИнформациейСобытия</name> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="b98a3511-4a6d-4b95-b7f5-eb3043e2289e"> + <name>СообщенияИнформационногоЦентраИнтерфейс</name> <synonym> <key>ru</key> - <value>Управление контактной информацией события</value> + <value>Сообщения информационного центра интерфейс</value> </synonym> <server>true</server> <externalConnection>true</externalConnection> diff --git a/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения/Module.bsl b/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения/Module.bsl index 1a610f040..449521613 100644 --- a/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения/Module.bsl +++ b/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения/Module.bsl @@ -4,7 +4,7 @@ //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// -// ПРОГРАММНЫЙ ИНТЕРФЕЙС +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС // Получает список обработчиков сообщений, которые обрабатывает данная подсистема. // @@ -13,10 +13,10 @@ // Процедура ПолучитьОбработчикиКаналовСообщений(Знач Обработчики) Экспорт - ДобавитьОбработчикКаналаСообщений("ИнформационныйЦентр\Недоступность\Добавление", СообщенияИнформационногоЦентраОбработчикСообщения, Обработчики); - ДобавитьОбработчикКаналаСообщений("ИнформационныйЦентр\Недоступность\Удаление", СообщенияИнформационногоЦентраОбработчикСообщения, Обработчики); - ДобавитьОбработчикКаналаСообщений("ИнформационныйЦентр\Новость\Добавление", СообщенияИнформационногоЦентраОбработчикСообщения, Обработчики); - ДобавитьОбработчикКаналаСообщений("ИнформационныйЦентр\Новость\Удаление", СообщенияИнформационногоЦентраОбработчикСообщения, Обработчики); + ДобавитьОбработчикКаналаСообщений("ИнформационныйЦентр\Недоступность\Добавление", СообщенияИнформационногоЦентраОбработчикСообщения, Обработчики); + ДобавитьОбработчикКаналаСообщений("ИнформационныйЦентр\Недоступность\Удаление", СообщенияИнформационногоЦентраОбработчикСообщения, Обработчики); + ДобавитьОбработчикКаналаСообщений("ИнформационныйЦентр\Новость\Добавление", СообщенияИнформационногоЦентраОбработчикСообщения, Обработчики); + ДобавитьОбработчикКаналаСообщений("ИнформационныйЦентр\Новость\Удаление", СообщенияИнформационногоЦентраОбработчикСообщения, Обработчики); КонецПроцедуры @@ -31,17 +31,17 @@ Если КаналСообщений = "ИнформационныйЦентр\Недоступность\Добавление" Тогда ОбработатьНедоступность(ТелоСообщения); - ИначеЕсли КаналСообщений = "ИнформационныйЦентр\Недоступность\Удаление" Тогда + ИначеЕсли КаналСообщений = "ИнформационныйЦентр\Недоступность\Удаление" Тогда Если ТелоСообщения.Свойство("Идентификатор") Тогда УдалитьДанныеИнформационногоЦентра(ТелоСообщения.Идентификатор); - КонецЕсли; + КонецЕсли; ИначеЕсли КаналСообщений = "ИнформационныйЦентр\Новость\Добавление" Тогда ОбработатьНовость(ТелоСообщения); ИначеЕсли КаналСообщений = "ИнформационныйЦентр\Новость\Удаление" Тогда Если ТелоСообщения.Свойство("Идентификатор") Тогда УдалитьДанныеИнформационногоЦентра(ТелоСообщения.Идентификатор); - КонецЕсли; - КонецЕсли; + КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -71,9 +71,9 @@ СоздатьНедоступность(ТелоСообщения); Иначе ОбновитьНедоступность(Объект, ТелоСообщения); - КонецЕсли; + КонецЕсли; -КонецПроцедуры +КонецПроцедуры // Создает недоступность в справочнике общих данных информационного центра. // @@ -85,12 +85,12 @@ Недоступность = Справочники.ОбщиеДанныеИнформационногоЦентра.СоздатьЭлемент(); Недоступность.УстановитьНовыйКод(); - Недоступность.Идентификатор = ТелоСообщения.Идентификатор; - Недоступность.Наименование = СформироватьЗаголовокНедоступности(ТелоСообщения.Наименование, ТелоСообщения.ДатаНачалаАктуальности, ТелоСообщения.ДатаОкончанияАктуальности); - Недоступность.Дата = ТелоСообщения.Дата; - Недоступность.ДатаНачалаАктуальности = ТелоСообщения.ДатаНачалаАктуальности - (60 * 60 * 24); - Недоступность.ДатаОкончанияАктуальности = ТелоСообщения.ДатаОкончанияАктуальности; - Недоступность.Критичность = ТелоСообщения.Критичность; + Недоступность.Идентификатор = ТелоСообщения.Идентификатор; + Недоступность.Наименование = СформироватьЗаголовокНедоступности(ТелоСообщения.Наименование, ТелоСообщения.ДатаНачалаАктуальности, ТелоСообщения.ДатаОкончанияАктуальности); + Недоступность.Дата = ТелоСообщения.Дата; + Недоступность.ДатаНачалаАктуальности = ТелоСообщения.ДатаНачалаАктуальности - (60 * 60 * 24); + Недоступность.ДатаОкончанияАктуальности = ТелоСообщения.ДатаОкончанияАктуальности; + Недоступность.Критичность = ТелоСообщения.Критичность; Если ТелоСообщения.Свойство("ТекстHTML") Тогда Недоступность.ТекстHTML = ТелоСообщения.ТекстHTML; КонецЕсли; @@ -118,14 +118,14 @@ // Процедура ОбновитьНедоступность(Недоступность, ТелоСообщения) - Недоступность.ТипИнформации = ИнформационныйЦентрСервер.ОпределитьСсылкуТипаИнформации("Недоступность"); - Недоступность.Идентификатор = ТелоСообщения.Идентификатор; - Недоступность.Наименование = СформироватьЗаголовокНедоступности(ТелоСообщения.Наименование, ТелоСообщения.ДатаНачалаАктуальности, ТелоСообщения.ДатаОкончанияАктуальности); - Недоступность.Дата = ТелоСообщения.Дата; - Недоступность.ДатаНачалаАктуальности = ТелоСообщения.ДатаНачалаАктуальности - (60 * 60 * 24); - Недоступность.ДатаОкончанияАктуальности = ТелоСообщения.ДатаОкончанияАктуальности; - Недоступность.Критичность = ТелоСообщения.Критичность; - Недоступность.ПометкаУдаления = Ложь; + Недоступность.ТипИнформации = ИнформационныйЦентрСервер.ОпределитьСсылкуТипаИнформации("Недоступность"); + Недоступность.Идентификатор = ТелоСообщения.Идентификатор; + Недоступность.Наименование = СформироватьЗаголовокНедоступности(ТелоСообщения.Наименование, ТелоСообщения.ДатаНачалаАктуальности, ТелоСообщения.ДатаОкончанияАктуальности); + Недоступность.Дата = ТелоСообщения.Дата; + Недоступность.ДатаНачалаАктуальности = ТелоСообщения.ДатаНачалаАктуальности - (60 * 60 * 24); + Недоступность.ДатаОкончанияАктуальности = ТелоСообщения.ДатаОкончанияАктуальности; + Недоступность.Критичность = ТелоСообщения.Критичность; + Недоступность.ПометкаУдаления = Ложь; Если ТелоСообщения.Свойство("ТекстHTML") Тогда Недоступность.ТекстHTML = ТелоСообщения.ТекстHTML; КонецЕсли; @@ -133,7 +133,7 @@ Недоступность.Вложения = Новый ХранилищеЗначения(ТелоСообщения.Вложения); КонецЕсли; Если ТелоСообщения.Свойство("ВнешняяСсылка") Тогда - Недоступность.ВнешняяСсылка = ТелоСообщения.ВнешняяСсылка; + Недоступность.ВнешняяСсылка = ТелоСообщения.ВнешняяСсылка; КонецЕсли; Недоступность.Записать(); @@ -151,9 +151,9 @@ СоздатьНовость(ТелоСообщения); Иначе ОбновитьНовость(Объект, ТелоСообщения); - КонецЕсли; + КонецЕсли; -КонецПроцедуры +КонецПроцедуры // Создает новость в справочнике общих данных информационного центра. // @@ -165,12 +165,12 @@ Новость = Справочники.ОбщиеДанныеИнформационногоЦентра.СоздатьЭлемент(); Новость.УстановитьНовыйКод(); - Новость.Идентификатор = ТелоСообщения.Идентификатор; - Новость.Наименование = СокрЛП(ТелоСообщения.Наименование); - Новость.Дата = ТелоСообщения.Дата; - Новость.ДатаНачалаАктуальности = ТелоСообщения.ДатаНачалаАктуальности; - Новость.ДатаОкончанияАктуальности = ТелоСообщения.ДатаОкончанияАктуальности; - Новость.Критичность = ТелоСообщения.Критичность; + Новость.Идентификатор = ТелоСообщения.Идентификатор; + Новость.Наименование = СокрЛП(ТелоСообщения.Наименование); + Новость.Дата = ТелоСообщения.Дата; + Новость.ДатаНачалаАктуальности = ТелоСообщения.ДатаНачалаАктуальности; + Новость.ДатаОкончанияАктуальности = ТелоСообщения.ДатаОкончанияАктуальности; + Новость.Критичность = ТелоСообщения.Критичность; Если ТелоСообщения.Свойство("ТекстHTML") Тогда Новость.ТекстHTML = ТелоСообщения.ТекстHTML; КонецЕсли; @@ -188,7 +188,7 @@ Новость.Записать(); -КонецПроцедуры +КонецПроцедуры // Обновляет новость. // @@ -198,14 +198,14 @@ // Процедура ОбновитьНовость(Новость, ТелоСообщения) - Новость.ТипИнформации = ИнформационныйЦентрСервер.ОпределитьСсылкуТипаИнформации("Новость"); - Новость.Идентификатор = ТелоСообщения.Идентификатор; - Новость.Наименование = СокрЛП(ТелоСообщения.Наименование); - Новость.Дата = ТелоСообщения.Дата; - Новость.ДатаНачалаАктуальности = ТелоСообщения.ДатаНачалаАктуальности; - Новость.ДатаОкончанияАктуальности = ТелоСообщения.ДатаОкончанияАктуальности; - Новость.Критичность = ТелоСообщения.Критичность; - Новость.ПометкаУдаления = Ложь; + Новость.ТипИнформации = ИнформационныйЦентрСервер.ОпределитьСсылкуТипаИнформации("Новость"); + Новость.Идентификатор = ТелоСообщения.Идентификатор; + Новость.Наименование = СокрЛП(ТелоСообщения.Наименование); + Новость.Дата = ТелоСообщения.Дата; + Новость.ДатаНачалаАктуальности = ТелоСообщения.ДатаНачалаАктуальности; + Новость.ДатаОкончанияАктуальности = ТелоСообщения.ДатаОкончанияАктуальности; + Новость.Критичность = ТелоСообщения.Критичность; + Новость.ПометкаУдаления = Ложь; Если ТелоСообщения.Свойство("ТекстHTML") Тогда Новость.ТекстHTML = ТелоСообщения.ТекстHTML; КонецЕсли; @@ -217,7 +217,7 @@ КонецЕсли; Новость.Записать(); -КонецПроцедуры +КонецПроцедуры // Удаляет данное информационного центра по идентификатору. // @@ -234,7 +234,7 @@ Объект.УстановитьПометкуУдаления(Истина); -КонецПроцедуры +КонецПроцедуры // Возвращает объект Справочника ОбщиеДанныеИнформационногоЦентра по идентификатору. // @@ -248,12 +248,13 @@ Запрос = Новый Запрос; Запрос.УстановитьПараметр("Идентификатор", Идентификатор); - Запрос.Текст = "ВЫБРАТЬ - | ОбщиеДанныеИнформационногоЦентра.Ссылка КАК Ссылка - |ИЗ - | Справочник.ОбщиеДанныеИнформационногоЦентра КАК ОбщиеДанныеИнформационногоЦентра - |ГДЕ - | ОбщиеДанныеИнформационногоЦентра.Идентификатор = &Идентификатор"; + Запрос.Текст = + "ВЫБРАТЬ + | ОбщиеДанныеИнформационногоЦентра.Ссылка КАК Ссылка + |ИЗ + | Справочник.ОбщиеДанныеИнформационногоЦентра КАК ОбщиеДанныеИнформационногоЦентра + |ГДЕ + | ОбщиеДанныеИнформационногоЦентра.Идентификатор = &Идентификатор"; РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат Неопределено; @@ -262,9 +263,9 @@ Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл Возврат Выборка.Ссылка.ПолучитьОбъект(); - КонецЦикла; + КонецЦикла; -КонецФункции +КонецФункции // Возвращает заголовок недоступности. // diff --git a/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1/Module.bsl b/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1/Module.bsl new file mode 100644 index 000000000..b57698c67 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1/Module.bsl @@ -0,0 +1,62 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОбработчикСообщенийИнформационногоЦентра. +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает пространство имен версии интерфейса сообщений +Функция Пакет() Экспорт + + Возврат "http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter/Messages/" + Версия(); + +КонецФункции + +// Возвращает версию интерфейса сообщений, обслуживаемую обработчиком +Функция Версия() Экспорт + + Возврат "1.0.1.1"; + +КонецФункции + +// Возвращает базовый тип для сообщений версии +Функция БазовыйТип() Экспорт + + Возврат СообщенияВМоделиСервисаПовтИсп.ТипТело(); + +КонецФункции + +// Выполняет обработку входящих сообщений модели сервиса +// +// Параметры: +// Сообщение - ОбъектXDTO, входящее сообщение, +// Отправитель - ПланОбменаСсылка.ОбменСообщениями, узел плана обмена, соответствующий отправителю сообщения +// СообщениеОбработано - булево, флаг успешной обработки сообщения. Значение данного параметра необходимо +// установить равным Истина в том случае, если сообщение было успешно прочитано в данном обработчике +// +Процедура ОбработатьСообщениеМоделиСервиса(Знач Сообщение, Знач Отправитель, СообщениеОбработано) Экспорт + + СообщениеОбработано = Истина; + + Словарь = СообщенияИнформационногоЦентраИнтерфейс; + ТипСообщения = Сообщение.Body.Тип(); + + Если ТипСообщения = Словарь.СообщениеОповещенияПожелания() Тогда + ДобавитьОповещениеОПожелании(Сообщение); + Иначе + СообщениеОбработано = Ложь; + КонецЕсли; + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Процедура ДобавитьОповещениеОПожелании(Сообщение) + + ТелоСообщения = Сообщение.Body; + СообщенияИнформационногоЦентраРеализация.ДобавитьОповещениеОПожелании(ТелоСообщения); + +КонецПроцедуры diff --git a/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1/СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1.mdo b/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1/СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1.mdo new file mode 100644 index 000000000..de2b93deb --- /dev/null +++ b/SSL/src/CommonModules/СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1/СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="cac7aa71-b5ed-4b0a-87cd-67149b718538"> + <name>СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1</name> + <synonym> + <key>ru</key> + <value>Сообщения информационного центра обработчик сообщения 1 0 1 1</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияИнформационногоЦентраРеализация/Module.bsl b/SSL/src/CommonModules/СообщенияИнформационногоЦентраРеализация/Module.bsl new file mode 100644 index 000000000..a633244cf --- /dev/null +++ b/SSL/src/CommonModules/СообщенияИнформационногоЦентраРеализация/Module.bsl @@ -0,0 +1,51 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБЩАЯ РЕАЛИЗАЦИЯ ОБРАБОТКИ СООБЩЕНИЙ ИНФОРМАЦИОННОГО ЦЕНТРА +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// По сообщению формирует элемент справочника "ОбщиеДанныеИнформационногоЦентра" +// +// Параметры: +// ТелоСообщения - ОбъектXDTO - тело сообщения. +// +Процедура ДобавитьОповещениеОПожелании(ТелоСообщения) Экспорт + + УстановитьПривилегированныйРежим(Истина); + + НачатьТранзакцию(); + Попытка + ДобавитьОповещениеОПожеланииВСправочник(ТелоСообщения); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Добавляет оповещение по пожеланию +// +// Параметры: +// ТелоСообщения - ОбъектXDTO - тело сообщения. +// +Процедура ДобавитьОповещениеОПожеланииВСправочник(ТелоСообщения) + + УведомлениеОПожелании = Справочники.ОбщиеДанныеИнформационногоЦентра.СоздатьЭлемент(); + УведомлениеОПожелании.Идентификатор = ТелоСообщения.id; + УведомлениеОПожелании.Наименование = ТелоСообщения.name; + УведомлениеОПожелании.ДатаНачалаАктуальности = ТелоСообщения.startDate; + УведомлениеОПожелании.ДатаОкончанияАктуальности = ТелоСообщения.endDate; + УведомлениеОПожелании.ТипИнформации = ИнформационныйЦентрСервер.ОпределитьСсылкуТипаИнформации("УведомлениеОПожелании"); + УведомлениеОПожелании.Критичность = ТелоСообщения.criticality; + УведомлениеОПожелании.Записать(); + +КонецПроцедуры + + diff --git a/SSL/src/CommonModules/СообщенияИнформационногоЦентраРеализация/СообщенияИнформационногоЦентраРеализация.mdo b/SSL/src/CommonModules/СообщенияИнформационногоЦентраРеализация/СообщенияИнформационногоЦентраРеализация.mdo new file mode 100644 index 000000000..657d36126 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияИнформационногоЦентраРеализация/СообщенияИнформационногоЦентраРеализация.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9bd0ffb9-5ba6-43d3-83fd-2b165dea85f6"> + <name>СообщенияИнформационногоЦентраРеализация</name> + <synonym> + <key>ru</key> + <value>Сообщения информационного центра реализация</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс/Module.bsl new file mode 100644 index 000000000..f7de23bf9 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс/Module.bsl @@ -0,0 +1,123 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИК ИНТЕРФЕЙСА СООБЩЕНИЙ КОНТРОЛЯ ДОПОЛНИТЕЛЬНЫХ ОТЧЕТОВ И ОБРАБОТОК +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает пространство имен текущей (используемой вызывающим кодом) версии интерфейса сообщений +Функция Пакет() Экспорт + + Возврат "http://www.1c.ru/1cFresh/ApplicationExtensions/Control/" + Версия(); + +КонецФункции + +// Возвращает текущую (используемую вызывающим кодом) версию интерфейса сообщений +Функция Версия() Экспорт + + Возврат "1.0.1.1"; + +КонецФункции + +// Возвращает название программного интерфейса сообщений +Функция ПрограммныйИнтерфейс() Экспорт + + Возврат "ApplicationExtensionsControl"; + +КонецФункции + +// Выполняет регистрацию обработчиков сообщений в качестве обработчиков каналов обмена сообщениями +// +// Параметры: +// МассивОбработчиков - массив. +// +Процедура ОбработчикиКаналовСообщений(Знач МассивОбработчиков) Экспорт + + + +КонецПроцедуры + +// Выполняет регистрацию обработчиков трансляции сообщений. +// +// Параметры: +// МассивОбработчиков - массив. +// +Процедура ОбработчикиТрансляцииСообщений(Знач МассивОбработчиков) Экспорт + + МассивОбработчиков.Добавить(СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1); + +КонецПроцедуры + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Control/a.b.c.d}ExtensionInstalled +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеДополнительныйОтчетИлиОбработкаУстановлена(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionInstalled"); + +КонецФункции + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Control/a.b.c.d}ExtensionDeleted +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеДополнительныйОтчетИлиОбработкаУдалена(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionDeleted"); + +КонецФункции + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Control/a.b.c.d}ExtensionInstallFailed +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеОшибкаУстановкиДополнительногоОтчетаИлиОбработки(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionInstallFailed"); + +КонецФункции + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Control/a.b.c.d}ExtensionDeleteFailed +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеОшибкаУдаленияДополнительногоОтчетаИлиОбработки(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionDeleteFailed"); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) + + Если ИспользуемыйПакет = Неопределено Тогда + ИспользуемыйПакет = Пакет(); + КонецЕсли; + + Возврат ФабрикаXDTO.Тип(ИспользуемыйПакет, Тип); + +КонецФункции diff --git a/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс/СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс.mdo b/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс/СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс.mdo new file mode 100644 index 000000000..01a3c94f2 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс/СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="fa787228-aed5-4a16-b958-d102b78bf776"> + <name>СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс</name> + <synonym> + <key>ru</key> + <value>Сообщения контроль дополнительных отчетов и обработок интерфейс</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1/Module.bsl b/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1/Module.bsl new file mode 100644 index 000000000..2402085d4 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1/Module.bsl @@ -0,0 +1,73 @@ +/////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИК ТРАНСЛЯЦИИ СООБЩЕНИЙ КОНТРОЛЯ ДОПОЛНИТЕЛЬНЫХ ОТЧЕТОВ И ОБРАБОТОК +// ИЗ ВЕРСИИ 1.0.1.1 В ВЕРСИЮ 1.0.2.4 СООБЩЕНИЙ КОНТРОЛЯ УДАЛЕННОГО АДМИНИСТРИРОВАНИЯ +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает номер версии, для трансляции с которой предназначен обработчик +Функция ИсходнаяВерсия() Экспорт + + Возврат "1.0.1.1"; + +КонецФункции + +// Возвращает пространство имен версии, для трансляции с которой предназначен обработчик +Функция ПакетИсходнойВерсии() Экспорт + + Возврат "http://www.1c.ru/1cFresh/ApplicationExtensions/Control/" + ИсходнаяВерсия(); + +КонецФункции + +// Возвращает номер версии, для трансляции в которую предназначен обработчик +Функция РезультирующаяВерсия() Экспорт + + Возврат "1.0.0.1"; + +КонецФункции + +// Возвращает пространство имен версии, для трансляции в которую предназначен обработчик +Функция ПакетРезультирующейВерсии() Экспорт + + Возврат "http://www.1c.ru/1cFresh/RemoteAdministration/Control/1.0.2.4"; + +КонецФункции + +// Обработчик проверки выполнения стандартной обработки трансляции +// +// Параметры: +// ИсходноеСообщение - ОбъектXDTO, транслируемое сообщение, +// СтандартнаяОбработка - Булево, для отмены выполнения стандартной обработки трансляции +// этому параметру внутри данной процедуры необходимо установить значение Ложь. +// При этом вместо выполнения стандартной обработки трансляции будет вызвана функция +// ТрансляцияСообщения() обработчика трансляции. +// +Процедура ПередТрансляцией(Знач ИсходноеСообщение, СтандартнаяОбработка) Экспорт + + + +КонецПроцедуры + +// Обработчик выполнения произвольной трансляции сообщения. Вызывается только в том случае, +// если при выполнении процедуры ПередТрансляцией значению параметра СтандартнаяОбработка +// было установлено значение Ложь. +// +// Параметры: +// ИсходноеСообщение - ОбъектXDTO, транслируемое сообщение. +// +// Возвращаемое значение: +// ОбъектXDTO, результат произвольной трансляции сообщения. +// +Функция ТрансляцияСообщения(Знач ИсходноеСообщение) Экспорт + + + +КонецФункции + + + + + + diff --git a/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1/СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1.mdo b/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1/СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1.mdo new file mode 100644 index 000000000..55511404b --- /dev/null +++ b/SSL/src/CommonModules/СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1/СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d511a261-4f9b-44e8-b3a1-1e6d393ec6e1"> + <name>СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1</name> + <synonym> + <key>ru</key> + <value>Сообщения контроль удаленного администрирования обработчик трансляции 1.0.0.1</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияИнтерфейс/Module.bsl index db57c56f8..6cfec0c29 100644 --- a/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияИнтерфейс/Module.bsl @@ -16,7 +16,7 @@ // Возвращает текущую (используемую вызывающим кодом) версию интерфейса сообщений Функция Версия() Экспорт - Возврат "1.0.2.1"; + Возврат "1.0.3.1"; КонецФункции @@ -45,7 +45,7 @@ // Процедура ОбработчикиТрансляцииСообщений(Знач МассивОбработчиков) Экспорт - + МассивОбработчиков.Добавить(СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1); КонецПроцедуры @@ -90,6 +90,10 @@ // Функция СообщениеАрхивацияОбластиПропущена(Знач ИспользуемыйПакет = Неопределено) Экспорт + Если ИспользуемыйПакет = Неопределено Тогда + ИспользуемыйПакет = "http://www.1c.ru/SaaS/ControlZonesBackup/1.0.2.1"; + КонецЕсли; + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ZoneBackupSkipped"); КонецФункции @@ -97,7 +101,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1/Module.bsl b/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1/Module.bsl new file mode 100644 index 000000000..db2e61dd7 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1/Module.bsl @@ -0,0 +1,128 @@ +/////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИК ТРАНСЛЯЦИИ СООБЩЕНИЙ КОНТРОЛЯ РЕЗЕРВНОГО КОПИРОВАНИЯ ОБЛАСТЕЙ ДАННЫХ +// ИЗ ВЕРСИИ 1.0.3.1 В ВЕРСИЮ 1.0.2.1 +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает номер версии, для трансляции с которой предназначен обработчик +Функция ИсходнаяВерсия() Экспорт + + Возврат "1.0.3.1"; + +КонецФункции + +// Возвращает пространство имен версии, для трансляции с которой предназначен обработчик +Функция ПакетИсходнойВерсии() Экспорт + + Возврат "http://www.1c.ru/SaaS/ControlZonesBackup/1.0.3.1"; + +КонецФункции + +// Возвращает номер версии, для трансляции в которую предназначен обработчик +Функция РезультирующаяВерсия() Экспорт + + Возврат "1.0.2.1"; + +КонецФункции + +// Возвращает пространство имен версии, для трансляции в которую предназначен обработчик +Функция ПакетРезультирующейВерсии() Экспорт + + Возврат "http://www.1c.ru/SaaS/ControlZonesBackup/1.0.2.1"; + +КонецФункции + +// Обработчик проверки выполнения стандартной обработки трансляции +// +// Параметры: +// ИсходноеСообщение - ОбъектXDTO, транслируемое сообщение, +// СтандартнаяОбработка - Булево, для отмены выполнения стандартной обработки трансляции +// этому параметру внутри данной процедуры необходимо установить значение Ложь. +// При этом вместо выполнения стандартной обработки трансляции будет вызвана функция +// ТрансляцияСообщения() обработчика трансляции. +// +Процедура ПередТрансляцией(Знач ИсходноеСообщение, СтандартнаяОбработка) Экспорт + + ТипТела = ИсходноеСообщение.Тип(); + + Если ТипТела = Интерфейс().СообщениеРезервнаяКопияОбластиСоздана(ПакетИсходнойВерсии()) Тогда + СтандартнаяОбработка = Ложь; + ИначеЕсли ТипТела = Интерфейс().СообщениеОшибкаАрхивацииОбласти(ПакетИсходнойВерсии()) Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; + +КонецПроцедуры + +// Обработчик выполнения произвольной трансляции сообщения. Вызывается только в том случае, +// если при выполнении процедуры ПередТрансляцией значению параметра СтандартнаяОбработка +// было установлено значение Ложь. +// +// Параметры: +// ИсходноеСообщение - ОбъектXDTO, транслируемое сообщение. +// +// Возвращаемое значение: +// ОбъектXDTO, результат произвольной трансляции сообщения. +// +Функция ТрансляцияСообщения(Знач ИсходноеСообщение) Экспорт + + ТипТела = ИсходноеСообщение.Тип(); + + Если ТипТела = Интерфейс().СообщениеРезервнаяКопияОбластиСоздана(ПакетИсходнойВерсии()) Тогда + Возврат ТранслироватьРезервнаяКопияОбластиСоздана(ИсходноеСообщение); + ИначеЕсли ТипТела = Интерфейс().СообщениеОшибкаАрхивацииОбласти(ПакетИсходнойВерсии()) Тогда + Возврат ТранслироватьОшибкаАрхивацииОбласти(ИсходноеСообщение); + ИначеЕсли ТипТела = Интерфейс().СообщениеАрхивацияОбластиПропущена(ПакетИсходнойВерсии()) Тогда + Возврат ТранслироватьАрхивацияОбластиПропущена(ИсходноеСообщение); + КонецЕсли; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Функция Интерфейс() + + Возврат СообщенияКонтрольРезервногоКопированияИнтерфейс; + +КонецФункции + +Функция ТранслироватьРезервнаяКопияОбластиСоздана(Знач ИсходноеСообщение) + + Результат = ФабрикаXDTO.Создать( + Интерфейс().СообщениеРезервнаяКопияОбластиСоздана(ПакетРезультирующейВерсии())); + + Результат.Zone = ИсходноеСообщение.Zone; + Результат.BackupId = ИсходноеСообщение.BackupId; + Результат.Date = ИсходноеСообщение.Date; + Результат.FileId = ИсходноеСообщение.FileId; + + Возврат Результат; + +КонецФункции + +Функция ТранслироватьОшибкаАрхивацииОбласти(Знач ИсходноеСообщение) + + Результат = ФабрикаXDTO.Создать( + Интерфейс().СообщениеОшибкаАрхивацииОбласти(ПакетРезультирующейВерсии())); + + Результат.Zone = ИсходноеСообщение.Zone; + Результат.BackupId = ИсходноеСообщение.BackupId; + + Возврат Результат; + +КонецФункции + +Функция ТранслироватьАрхивацияОбластиПропущена(Знач ИсходноеСообщение) + + Результат = ФабрикаXDTO.Создать( + Интерфейс().СообщениеАрхивацияОбластиПропущена(ПакетРезультирующейВерсии())); + + Результат.Zone = ИсходноеСообщение.Zone; + Результат.BackupId = ИсходноеСообщение.BackupId; + + Возврат Результат; + +КонецФункции \ No newline at end of file diff --git a/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1/СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1.mdo b/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1/СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1.mdo new file mode 100644 index 000000000..2f73b92a0 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1/СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="5b93975e-b2a4-4102-a060-2667f5813c94"> + <name>СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1</name> + <synonym> + <key>ru</key> + <value>Сообщения контроль резервного копирования обработчик трансляции 1.0.2.1</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс/Module.bsl index 339ef43b2..98e094004 100644 --- a/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс/Module.bsl @@ -16,7 +16,7 @@ // Возвращает текущую (используемую вызывающим кодом) версию интерфейса сообщений Функция Версия() Экспорт - Возврат "1.0.2.4"; + Возврат "1.0.2.5"; КонецФункции @@ -46,6 +46,7 @@ Процедура ОбработчикиТрансляцииСообщений(Знач МассивОбработчиков) Экспорт МассивОбработчиков.Добавить(СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_3); + МассивОбработчиков.Добавить(СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4); КонецПроцедуры @@ -139,70 +140,10 @@ КонецФункции -// Возвращает тип сообщения {http://www.1c.ru/SaaS/RemoteAdministration/Control/a.b.c.d}ExtensionInstalled -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция СообщениеДополнительныйОтчетИлиОбработкаУстановлена(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionInstalled"); - -КонецФункции - -// Возвращает тип сообщения {http://www.1c.ru/SaaS/RemoteAdministration/Control/a.b.c.d}ExtensionDeleted -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция СообщениеДополнительныйОтчетИлиОбработкаУдалена(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionDeleted"); - -КонецФункции - -// Возвращает тип сообщения {http://www.1c.ru/SaaS/RemoteAdministration/Control/a.b.c.d}ExtensionInstallFailed -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция СообщениеОшибкаУстановкиДополнительногоОтчетаИлиОбработки(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionInstallFailed"); - -КонецФункции - -// Возвращает тип сообщения {http://www.1c.ru/SaaS/RemoteAdministration/Control/a.b.c.d}ExtensionDeleteFailed -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция СообщениеОшибкаУдаленияДополнительногоОтчетаИлиОбработки(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionDeleteFailed"); - -КонецФункции - //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/Module.bsl b/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/Module.bsl new file mode 100644 index 000000000..41622883f --- /dev/null +++ b/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/Module.bsl @@ -0,0 +1,69 @@ +/////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИК ТРАНСЛЯЦИИ СООБЩЕНИЙ КОНТРОЛЯ УДАЛЕННОГО АДМИНИСТРИРОВАНИЯ +// ИЗ ВЕРСИИ 1.0.2.5 В ВЕРСИЮ 1.0.2.4 +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает номер версии, для трансляции с которой предназначен обработчик +Функция ИсходнаяВерсия() Экспорт + + Возврат "1.0.2.5"; + +КонецФункции + +// Возвращает пространство имен версии, для трансляции с которой предназначен обработчик +Функция ПакетИсходнойВерсии() Экспорт + + Возврат "http://www.1c.ru/1cFresh/RemoteAdministration/Control/" + ИсходнаяВерсия(); + +КонецФункции + +// Возвращает номер версии, для трансляции в которую предназначен обработчик +Функция РезультирующаяВерсия() Экспорт + + Возврат "1.0.2.4"; + +КонецФункции + +// Возвращает пространство имен версии, для трансляции в которую предназначен обработчик +Функция ПакетРезультирующейВерсии() Экспорт + + Возврат "http://www.1c.ru/1cFresh/RemoteAdministration/Control/" + РезультирующаяВерсия(); + +КонецФункции + +// Обработчик проверки выполнения стандартной обработки трансляции +// +// Параметры: +// ИсходноеСообщение - ОбъектXDTO, транслируемое сообщение, +// СтандартнаяОбработка - Булево, для отмены выполнения стандартной обработки трансляции +// этому параметру внутри данной процедуры необходимо установить значение Ложь. +// При этом вместо выполнения стандартной обработки трансляции будет вызвана функция +// ТрансляцияСообщения() обработчика трансляции. +// +Процедура ПередТрансляцией(Знач ИсходноеСообщение, СтандартнаяОбработка) Экспорт + +КонецПроцедуры + +// Обработчик выполнения произвольной трансляции сообщения. Вызывается только в том случае, +// если при выполнении процедуры ПередТрансляцией значению параметра СтандартнаяОбработка +// было установлено значение Ложь. +// +// Параметры: +// ИсходноеСообщение - ОбъектXDTO, транслируемое сообщение. +// +// Возвращаемое значение: +// ОбъектXDTO, результат произвольной трансляции сообщения. +// +Функция ТрансляцияСообщения(Знач ИсходноеСообщение) Экспорт + +КонецФункции + + + + + + diff --git a/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4.mdo b/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4.mdo new file mode 100644 index 000000000..a561682e0 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4/СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ac8c40d6-be1e-4733-be2e-ae83bde4ec15"> + <name>СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4</name> + <synonym> + <key>ru</key> + <value>Сообщения контроль удаленного администрирования обработчик трансляции 1.0.2.3</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияОбменаДаннымиКонтрольИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияОбменаДаннымиКонтрольИнтерфейс/Module.bsl index e50e81aa9..76e5597e0 100644 --- a/SSL/src/CommonModules/СообщенияОбменаДаннымиКонтрольИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/СообщенияОбменаДаннымиКонтрольИнтерфейс/Module.bsl @@ -232,7 +232,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/СообщенияОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1/Module.bsl b/SSL/src/CommonModules/СообщенияОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1/Module.bsl index 3778db119..015600e0d 100644 --- a/SSL/src/CommonModules/СообщенияОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1/Module.bsl +++ b/SSL/src/CommonModules/СообщенияОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1/Module.bsl @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 1.0.0.1 ИНТЕРФЕЙСА СООБЩЕНИЙ +// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 2.1.2.1 ИНТЕРФЕЙСА СООБЩЕНИЙ // КОНТРОЛЯ ОБМЕНА ДАННЫМИ // //////////////////////////////////////////////////////////////////////////////// diff --git a/SSL/src/CommonModules/СообщенияОбменаДаннымиОбработчикСообщения/Module.bsl b/SSL/src/CommonModules/СообщенияОбменаДаннымиОбработчикСообщения/Module.bsl index 63d416e8a..a82f5e62c 100644 --- a/SSL/src/CommonModules/СообщенияОбменаДаннымиОбработчикСообщения/Module.bsl +++ b/SSL/src/CommonModules/СообщенияОбменаДаннымиОбработчикСообщения/Module.bsl @@ -39,8 +39,7 @@ ТелоСообщения.НастройкаОтборовНаУзле, ТелоСообщения.ЗначенияПоУмолчаниюНаУзле, ТелоСообщения.КодЭтогоУзла, - ТелоСообщения.КодНовогоУзла - ); + ТелоСообщения.КодНовогоУзла); ИначеЕсли КаналСообщений = "ОбменДанными\ПрикладноеПриложение\УдалениеОбмена" Тогда @@ -102,8 +101,7 @@ Если КонечнаяТочкаКорреспондента.Пустая() Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не найдена конечная точка корреспондента с кодом ""%1"".'"), - Настройки.КонечнаяТочкаКорреспондента - ); + Настройки.КонечнаяТочкаКорреспондента); КонецЕсли; Корреспондент = Неопределено; @@ -117,8 +115,7 @@ НастройкаОтборовНаУзле, Корреспондент, , - Истина - ); + Истина); // Сохраняем настройки транспорта сообщений обмена для текущей области данных СтруктураЗаписи = Новый Структура; @@ -237,8 +234,7 @@ АбсолютныйКаталогОбменаИнформацией = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( НастройкиТранспорта.FILEОбщийКаталогОбменаИнформацией, - НастройкиТранспорта.FILEОтносительныйКаталогОбменаИнформацией - ); + НастройкиТранспорта.FILEОтносительныйКаталогОбменаИнформацией); АбсолютныйКаталог = Новый Файл(АбсолютныйКаталогОбменаИнформацией); @@ -246,8 +242,7 @@ УдалитьФайлы(АбсолютныйКаталог.ПолноеИмя); Исключение ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецЕсли; @@ -371,4 +366,4 @@ Возврат НСтр("ru = 'Отправка сообщений'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); -КонецФункции \ No newline at end of file +КонецФункции diff --git a/SSL/src/CommonModules/СообщенияОбменаДаннымиУправлениеИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияОбменаДаннымиУправлениеИнтерфейс/Module.bsl index 27945839b..bd67abcc8 100644 --- a/SSL/src/CommonModules/СообщенияОбменаДаннымиУправлениеИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/СообщенияОбменаДаннымиУправлениеИнтерфейс/Module.bsl @@ -143,7 +143,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/СообщенияОбменаДаннымиУправлениеОбработчикСообщения_2_1_2_1/Module.bsl b/SSL/src/CommonModules/СообщенияОбменаДаннымиУправлениеОбработчикСообщения_2_1_2_1/Module.bsl index c526ab343..265d9a30e 100644 --- a/SSL/src/CommonModules/СообщенияОбменаДаннымиУправлениеОбработчикСообщения_2_1_2_1/Module.bsl +++ b/SSL/src/CommonModules/СообщенияОбменаДаннымиУправлениеОбработчикСообщения_2_1_2_1/Module.bsl @@ -1,5 +1,5 @@ //////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 1.0.0.1 ИНТЕРФЕЙСА СООБЩЕНИЙ +// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 2.1.2.1 ИНТЕРФЕЙСА СООБЩЕНИЙ // УПРАВЛЕНИЯ ОБМЕНА ДАННЫМИ // //////////////////////////////////////////////////////////////////////////////// @@ -83,6 +83,8 @@ Тело = Сообщение.Body; + Корреспондент = Неопределено; + НачатьТранзакцию(); Попытка @@ -100,12 +102,9 @@ Если КонечнаяТочкаКорреспондента.Пустая() Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не найдена конечная точка корреспондента с кодом ""%1"".'"), - Тело.EndPoint - ); + Тело.EndPoint); КонецЕсли; - Корреспондент = Неопределено; - Префикс = ""; Если Сообщение.Установлено("AdditionalInfo") Тогда Префикс = СериализаторXDTO.ПрочитатьXDTO(Сообщение.AdditionalInfo).Префикс; @@ -121,46 +120,48 @@ Корреспондент, Истина, , - Префикс - ); + Префикс); // Регистрируем справочники к выгрузке ОбменДаннымиСервер.ЗарегистрироватьТолькоСправочникиДляНачальнойВыгрузки(Корреспондент); + ЗафиксироватьТранзакцию(); + // Выполняем выгрузку данных Отказ = Ложь; ОбменДаннымиВМоделиСервиса.ВыполнитьВыгрузкуДанных(Отказ, Корреспондент); Если Отказ Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Возникли ошибки в процессе выгрузки справочников для корреспондента %1.'"), - Строка(Корреспондент) - ); + Строка(Корреспондент)); КонецЕсли; // Отправляем ответное сообщение об успешной операции ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеНастройкаОбменаШаг1УспешноЗавершена() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеНастройкаОбменаШаг1УспешноЗавершена()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; + НачатьТранзакцию(); СообщенияВМоделиСервиса.ОтправитьСообщение(ОтветноеСообщение, Отправитель, Истина); - ЗафиксироватьТранзакцию(); Исключение - ОтменитьТранзакцию(); + + Пока ТранзакцияАктивна() Цикл + ОтменитьТранзакцию(); + КонецЦикла; + + УдалитьНастройкуСинхронизации(Корреспондент); ПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); // Отправляем ответное сообщение об ошибке ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаНастройкиОбменаШаг1() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаНастройкиОбменаШаг1()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -187,16 +188,14 @@ // Обновляем настройку обмена ОбменДаннымиВМоделиСервиса.ОбновитьНастройкуОбмена(Корреспондент, - ОбменДаннымиСервер.ПолучитьЗначенияНастройкиОтборов(СериализаторXDTO.ПрочитатьXDTO(Тело.AdditionalSettings)) - ); + ОбменДаннымиСервер.ПолучитьЗначенияНастройкиОтборов(СериализаторXDTO.ПрочитатьXDTO(Тело.AdditionalSettings))); // Регистрируем все данные к выгрузке, кроме справочников ОбменДаннымиСервер.ЗарегистрироватьВсеДанныеКромеСправочниковДляНачальнойВыгрузки(Корреспондент); // Отправляем ответное сообщение об успешной операции ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеНастройкаОбменаШаг2УспешноЗавершена() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеНастройкаОбменаШаг2УспешноЗавершена()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -210,13 +209,11 @@ ПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); // Отправляем ответное сообщение об ошибке ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаНастройкиОбменаШаг2() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаНастройкиОбменаШаг2()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -236,7 +233,6 @@ Тело = Сообщение.Body; - НачатьТранзакцию(); Попытка Корреспондент = КорреспондентОбмена(Тело.ExchangePlan, Тело.CorrespondentCode); @@ -247,34 +243,29 @@ Если Отказ Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Возникли ошибки в процессе загрузки справочников от корреспондента %1.'"), - Строка(Корреспондент) - ); + Строка(Корреспондент)); КонецЕсли; // Отправляем ответное сообщение об успешной операции ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеЗагрузкаСообщенияОбменаУспешноЗавершена() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеЗагрузкаСообщенияОбменаУспешноЗавершена()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; + НачатьТранзакцию(); СообщенияВМоделиСервиса.ОтправитьСообщение(ОтветноеСообщение, Отправитель, Истина); - ЗафиксироватьТранзакцию(); Исключение - ОтменитьТранзакцию(); ПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); // Отправляем ответное сообщение об ошибке ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаЗагрузкиСообщенияОбмена() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаЗагрузкиСообщенияОбмена()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -298,13 +289,11 @@ Попытка ДанныеКорреспондента = ОбменДаннымиСервер.ДанныеТаблицКорреспондента( - СериализаторXDTO.ПрочитатьXDTO(Тело.Tables), Тело.ExchangePlan - ); + СериализаторXDTO.ПрочитатьXDTO(Тело.Tables), Тело.ExchangePlan); // Отправляем ответное сообщение об успешной операции ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеПолучениеДанныхКорреспондентаУспешноЗавершено() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеПолучениеДанныхКорреспондентаУспешноЗавершено()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -319,13 +308,11 @@ ПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); // Отправляем ответное сообщение об ошибке ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПолученияДанныхКорреспондента() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПолученияДанныхКорреспондента()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -352,8 +339,7 @@ // Отправляем ответное сообщение об успешной операции ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеПолучениеОбщихДанныхУзловКорреспондентаУспешноЗавершено() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеПолучениеОбщихДанныхУзловКорреспондентаУспешноЗавершено()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -368,13 +354,11 @@ ПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); // Отправляем ответное сообщение об ошибке ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПолученияОбщихДанныхУзловКорреспондента() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПолученияОбщихДанныхУзловКорреспондента()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -408,8 +392,7 @@ // Отправляем ответное сообщение об успешной операции ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеПолучениеПараметровУчетаКорреспондентаУспешноЗавершено() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеПолучениеПараметровУчетаКорреспондентаУспешноЗавершено()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -424,13 +407,11 @@ ПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(), - УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки - ); + УровеньЖурналаРегистрации.Ошибка,,, ПредставлениеОшибки); // Отправляем ответное сообщение об ошибке ОтветноеСообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПолученияПараметровУчетаКорреспондента() - ); + СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаПолученияПараметровУчетаКорреспондента()); ОтветноеСообщение.Body.Zone = ОбщегоНазначения.ЗначениеРазделителяСеанса(); ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone; ОтветноеСообщение.Body.SessionId = Тело.SessionId; @@ -460,3 +441,27 @@ Возврат Результат; КонецФункции + +Процедура УдалитьНастройкуСинхронизации(Знач Корреспондент) + + УстановитьПривилегированныйРежим(Истина); + + Попытка + Если Корреспондент <> Неопределено Тогда + + КорреспондентОбъект = Корреспондент.ПолучитьОбъект(); + + Если КорреспондентОбъект <> Неопределено Тогда + + КорреспондентОбъект.Удалить(); + + КонецЕсли; + + КонецЕсли; + Исключение + ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + КонецПопытки; + +КонецПроцедуры diff --git a/SSL/src/CommonModules/СообщенияПоставляемыхДанныхОбработчикСообщения/Module.bsl b/SSL/src/CommonModules/СообщенияПоставляемыхДанныхОбработчикСообщения/Module.bsl index 588777356..acc0992e4 100644 --- a/SSL/src/CommonModules/СообщенияПоставляемыхДанныхОбработчикСообщения/Module.bsl +++ b/SSL/src/CommonModules/СообщенияПоставляемыхДанныхОбработчикСообщения/Module.bsl @@ -36,7 +36,8 @@ КонецЕсли; Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка обработки сообщения'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка обработки сообщения'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор) + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; @@ -78,7 +79,8 @@ ЗапланироватьЗагрузкуДанных(Дескриптор); КонецЕсли; - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Доступны новые данные'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Доступны новые данные'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , ?(Загружать, НСтр("ru = 'В очередь добавлено задание на загрузку.'"), НСтр("ru = 'Загрузка данных не требуется.'")) + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор)); @@ -126,14 +128,16 @@ Попытка Дескриптор = ДесериализоватьXDTO(ДескрипторXML); Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка работы с XML'"), - УровеньЖурналаРегистрации.Ошибка, , - , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - + ДескрипторXML); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка работы с XML'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, , + , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + + ДескрипторXML); Возврат; КонецПопытки; - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Загрузка данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Загрузка данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , НСтр("ru = 'Загрузка начата'") + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор)); @@ -141,15 +145,17 @@ ИмяФайлаВыгрузки = ПолучитьФайлИзХранилища(Дескриптор); Если ИмяФайлаВыгрузки = Неопределено Тогда - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Загрузка данных'"), - УровеньЖурналаРегистрации.Информация, , - , НСтр("ru = 'Файл не может быть загружен'") + Символы.ПС - + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор)); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Загрузка данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Информация, , + , НСтр("ru = 'Файл не может быть загружен'") + Символы.ПС + + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор)); Возврат; КонецЕсли; КонецЕсли; - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Загрузка данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Загрузка данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Примечание, , , НСтр("ru = 'Загрузка успешно выполнена'") + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор)); @@ -180,7 +186,8 @@ НаборНеобработанныхДанных.Удалить(ЗаписьНеобработанныхДанных); НаборНеобработанныхДанных.Записать(); Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка обработки'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка обработки'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор) @@ -208,16 +215,17 @@ //Откладываем загрузку на 5 минут Дескриптор.RecommendedUpdateDate = ТекущаяУниверсальнаяДата() + 5 * 60; ЗапланироватьЗагрузкуДанных(Дескриптор); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка обработки'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка обработки'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , НСтр("ru = 'Обработка данных будет запущена повторно из-за ошибки обработчика.'") - + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор) - ); + + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор)); Иначе НаборНеобработанныхДанных.Очистить(); НаборНеобработанныхДанных.Записать(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Загрузка данных'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Загрузка данных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , НСтр("ru = 'Новые данные обработаны'") + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор)); @@ -257,14 +265,16 @@ Попытка Обработчик.Обработчик.ОбработкаДанныхОтменена(Дескриптор); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Отмена обработки'"), - УровеньЖурналаРегистрации.Информация, , - , ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор) - + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Код обработчика: %1'"), Обработчик.КодОбработчика)); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Отмена обработки'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Информация, , + , ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор) + + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Код обработчика: %1'"), Обработчик.КодОбработчика)); Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Отмена обработки'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Отмена обработки'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор) @@ -279,10 +289,11 @@ Попытка ИмяФайлаВыгрузки = РаботаВМоделиСервиса.ПолучитьФайлИзХранилищаМенеджераСервиса(Дескриптор.FileGUID); Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка хранилища'"), - УровеньЖурналаРегистрации.Ошибка, , - , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор)); + ЗаписьЖурналаРегистрации(НСтр("ru = 'Поставляемые данные.Ошибка хранилища'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), + УровеньЖурналаРегистрации.Ошибка, , + , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + + Символы.ПС + ПоставляемыеДанные.ПолучитьОписаниеДанных(Дескриптор)); //Откладываем загрузку на час Дескриптор.RecommendedUpdateDate = Дескриптор.RecommendedUpdateDate + 60 * 60; diff --git a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияИнтерфейс/Module.bsl index 01102b33a..4f0b9880c 100644 --- a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияИнтерфейс/Module.bsl @@ -38,6 +38,7 @@ МассивОбработчиков.Добавить(СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_2); МассивОбработчиков.Добавить(СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_3); МассивОбработчиков.Добавить(СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4); + МассивОбработчиков.Добавить(СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5); КонецПроцедуры @@ -262,100 +263,10 @@ КонецФункции -// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}InstallExtension -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция СообщениеУстановитьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "InstallExtension"); - -КонецФункции - -// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}ExtensionCommandSettings -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция ТипНастройкиКомандыДополнительногоОтчетаИлиОбработки(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionCommandSettings"); - -КонецФункции - -// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}DeleteExtension -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция СообщениеУдалитьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "DeleteExtension"); - -КонецФункции - -// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}DisableExtension -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция СообщениеОтключитьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "DisableExtension"); - -КонецФункции - -// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}EnableExtension -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция СообщениеВключитьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "EnableExtension"); - -КонецФункции - -// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}DropExtension -// -// Параметры: -// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой -// получается тип сообщения. -// -// Возвращаемое значение: -// ТипXDTO -// -Функция СообщениеОтозватьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт - - Возврат СоздатьТипСообщения(ИспользуемыйПакет, "DropExtension"); - -КонецФункции - //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4/Module.bsl b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4/Module.bsl index f9a4f779d..1c4287b81 100644 --- a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4/Module.bsl +++ b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4/Module.bsl @@ -41,6 +41,12 @@ СообщениеОбработано = Истина; Словарь = СообщенияУдаленногоАдминистрированияИнтерфейс; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + СловарьДОиО = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс"); + Иначе + СловарьДОиО = Неопределено; + КонецЕсли; ТипСообщения = Сообщение.Body.Тип(); Если ТипСообщения = Словарь.СообщениеОбновитьПользователя(Пакет()) Тогда @@ -67,15 +73,15 @@ УстановитьРейтингОбластейДанных(Сообщение, Отправитель); ИначеЕсли ТипСообщения = Словарь.СообщениеПрикрепитьОбластьДанных(Пакет()) Тогда ПрикрепитьОбластьДанных(Сообщение, Отправитель); - ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеУстановитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда УстановитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); - ИначеЕсли ТипСообщения = Словарь.СообщениеУдалитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеУдалитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда УдалитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); - ИначеЕсли ТипСообщения = Словарь.СообщениеОтключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеОтключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда ОтключитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); - ИначеЕсли ТипСообщения = Словарь.СообщениеВключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеВключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда ВключитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); - ИначеЕсли ТипСообщения = Словарь.СообщениеОтозватьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + ИначеЕсли СловарьДОиО <> Неопределено И ТипСообщения = СловарьДОиО.СообщениеОтозватьДополнительныйОтчетИлиОбработку(Пакет()) Тогда ОтозватьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); Иначе СообщениеОбработано = Ложь; @@ -195,163 +201,194 @@ Процедура УстановитьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) - ТелоСообщения = Сообщение.Body; - - НастройкиКоманд = Новый ТаблицаЗначений(); - НастройкиКоманд.Колонки.Добавить("Идентификатор"); - НастройкиКоманд.Колонки.Добавить("БыстрыйДоступ"); - НастройкиКоманд.Колонки.Добавить("Расписание"); - - Если ЗначениеЗаполнено(ТелоСообщения.CommandSettings) Тогда + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Для Каждого CommandSettings Из ТелоСообщения.CommandSettings Цикл - - НастройкиКоманды = НастройкиКоманд.Добавить(); - НастройкиКоманды.Идентификатор = CommandSettings.Id; - - Если CommandSettings.Settings <> Неопределено Тогда - - МассивИдентификаторов = Новый Массив; - Для Каждого UserGUID Из CommandSettings.Settings.UsersFastAccess Цикл - МассивИдентификаторов.Добавить(UserGUID); - КонецЦикла; - - НастройкиКоманды.БыстрыйДоступ = МассивИдентификаторов; - - Если CommandSettings.Settings.Schedule <> Неопределено Тогда - - НастройкиКоманды.Расписание = СериализаторXDTO.ПрочитатьXDTO(CommandSettings.Settings.Schedule); - - КонецЕсли; - - КонецЕсли; - - КонецЦикла; + МодульДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс"); + МодульДополнительныеОтчетыИОбработкиКлиентСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиентСервер"); - КонецЕсли; - - НастройкиРазделов = Новый ТаблицаЗначений(); - НастройкиРазделов.Колонки.Добавить("Раздел"); - - НастройкиНазначения = Новый ТаблицаЗначений(); - НастройкиНазначения.Колонки.Добавить("ОбъектНазначения"); - - НастройкиРасположенияКоманд = Новый Структура(); - - Если ЗначениеЗаполнено(ТелоСообщения.Assignments) Тогда + ТелоСообщения = Сообщение.Body; - Для Каждого Assignment Из ТелоСообщения.Assignments Цикл + НастройкиКоманд = Новый ТаблицаЗначений(); + НастройкиКоманд.Колонки.Добавить("Идентификатор"); + НастройкиКоманд.Колонки.Добавить("БыстрыйДоступ"); + НастройкиКоманд.Колонки.Добавить("Расписание"); + + Если ЗначениеЗаполнено(ТелоСообщения.CommandSettings) Тогда - Если Assignment.Тип() = ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНазначениеРазделам() Тогда + Для Каждого CommandSettings Из ТелоСообщения.CommandSettings Цикл - Для Каждого AssignmentObject Из Assignment.Objects Цикл + НастройкиКоманды = НастройкиКоманд.Добавить(); + НастройкиКоманды.Идентификатор = CommandSettings.Id; + + Если CommandSettings.Settings <> Неопределено Тогда - СтрокаРаздела = НастройкиРазделов.Добавить(); - Если AssignmentObject.ObjectName = ДополнительныеОтчетыИОбработкиКлиентСервер.ИдентификаторРабочегоСтола() Тогда - СтрокаРаздела.Раздел = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); - Иначе - СтрокаРаздела.Раздел = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(AssignmentObject.ObjectName); + МассивИдентификаторов = Новый Массив; + Для Каждого UserGUID Из CommandSettings.Settings.UsersFastAccess Цикл + МассивИдентификаторов.Добавить(UserGUID); + КонецЦикла; + + НастройкиКоманды.БыстрыйДоступ = МассивИдентификаторов; + + Если CommandSettings.Settings.Schedule <> Неопределено Тогда + + НастройкиКоманды.Расписание = СериализаторXDTO.ПрочитатьXDTO(CommandSettings.Settings.Schedule); + КонецЕсли; - КонецЦикла; - - ИначеЕсли Assignment.Тип() = ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНазначениеСправочникамИДокументам() Тогда - - Для Каждого AssignmentObject Из Assignment.Objects Цикл - - СтрокаНазначения = НастройкиНазначения.Добавить(); - СтрокаНазначения.ОбъектНазначения = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( - AssignmentObject.ObjectName); - - КонецЦикла; - - НастройкиРасположенияКоманд.Вставить("ИспользоватьДляФормыСписка", - Assignment.UseInListsForms); - НастройкиРасположенияКоманд.Вставить("ИспользоватьДляФормыОбъекта", - Assignment.UseInObjectsForms); - - КонецЕсли; - - КонецЦикла; - - КонецЕсли; - - НастройкиВариантов = Новый ТаблицаЗначений(); - НастройкиВариантов.Колонки.Добавить("Ключ", Новый ОписаниеТипов("Строка")); - НастройкиВариантов.Колонки.Добавить("Размещение", Новый ОписаниеТипов("Массив")); - НастройкиВариантов.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); - Если ТелоСообщения.ReportVariants <> Неопределено Тогда - - Для Каждого ReportVariant Из ТелоСообщения.ReportVariants Цикл - - НастройкаВарианта = НастройкиВариантов.Добавить(); - НастройкаВарианта.Ключ = ReportVariant.VariantKey; - НастройкаВарианта.Представление = ReportVariant.Representation; - - Размещение = Новый Массив; - Для Каждого ReportVariantAssignment Из ReportVariant.Assignments Цикл - - Раздел = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( - ReportVariantAssignment.ObjectName); - Важный = Ложь; - СмТакже = Ложь; - Если ReportVariantAssignment.Importance = "High" Тогда - Важный = Истина; - ИначеЕсли ReportVariantAssignment.Importance = "Low" Тогда - СмТакже = Истина; КонецЕсли; - ЭлементРазмещения = Новый Структура("Раздел,Важный,СмТакже", Раздел, Важный, СмТакже); - Размещение.Добавить(ЭлементРазмещения); КонецЦикла; - НастройкаВарианта.Размещение = Размещение; + КонецЕсли; + + НастройкиРазделов = Новый ТаблицаЗначений(); + НастройкиРазделов.Колонки.Добавить("Раздел"); + + НастройкиНазначения = Новый ТаблицаЗначений(); + НастройкиНазначения.Колонки.Добавить("ОбъектНазначения"); + + НастройкиРасположенияКоманд = Новый Структура(); + + Если ЗначениеЗаполнено(ТелоСообщения.Assignments) Тогда - КонецЦикла; + Для Каждого Assignment Из ТелоСообщения.Assignments Цикл + + Если Assignment.Тип() = МодульДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНазначениеРазделам() Тогда + + Для Каждого AssignmentObject Из Assignment.Objects Цикл + + СтрокаРаздела = НастройкиРазделов.Добавить(); + Если AssignmentObject.ObjectName = МодульДополнительныеОтчетыИОбработкиКлиентСервер.ИдентификаторРабочегоСтола() Тогда + СтрокаРаздела.Раздел = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); + Иначе + СтрокаРаздела.Раздел = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(AssignmentObject.ObjectName); + КонецЕсли; + + КонецЦикла; + + ИначеЕсли Assignment.Тип() = МодульДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНазначениеСправочникамИДокументам() Тогда + + Для Каждого AssignmentObject Из Assignment.Objects Цикл + + СтрокаНазначения = НастройкиНазначения.Добавить(); + СтрокаНазначения.ОбъектНазначения = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( + AssignmentObject.ObjectName); + + КонецЦикла; + + НастройкиРасположенияКоманд.Вставить("ИспользоватьДляФормыСписка", + Assignment.UseInListsForms); + НастройкиРасположенияКоманд.Вставить("ИспользоватьДляФормыОбъекта", + Assignment.UseInObjectsForms); + + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + НастройкиВариантов = Новый ТаблицаЗначений(); + НастройкиВариантов.Колонки.Добавить("Ключ", Новый ОписаниеТипов("Строка")); + НастройкиВариантов.Колонки.Добавить("Размещение", Новый ОписаниеТипов("Массив")); + НастройкиВариантов.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); + Если ТелоСообщения.ReportVariants <> Неопределено Тогда + + Для Каждого ReportVariant Из ТелоСообщения.ReportVariants Цикл + + НастройкаВарианта = НастройкиВариантов.Добавить(); + НастройкаВарианта.Ключ = ReportVariant.VariantKey; + НастройкаВарианта.Представление = ReportVariant.Representation; + + Размещение = Новый Массив; + Для Каждого ReportVariantAssignment Из ReportVariant.Assignments Цикл + + Раздел = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( + ReportVariantAssignment.ObjectName); + Важный = Ложь; + СмТакже = Ложь; + Если ReportVariantAssignment.Importance = "High" Тогда + Важный = Истина; + ИначеЕсли ReportVariantAssignment.Importance = "Low" Тогда + СмТакже = Истина; + КонецЕсли; + ЭлементРазмещения = Новый Структура("Раздел,Важный,СмТакже", Раздел, Важный, СмТакже); + Размещение.Добавить(ЭлементРазмещения); + + КонецЦикла; + + НастройкаВарианта.Размещение = Размещение; + + КонецЦикла; + + КонецЕсли; + + ОписаниеИнсталляции = Новый Структура( + "Идентификатор,Представление,Инсталляция", + ТелоСообщения.Extension, + ТелоСообщения.Representation, + ТелоСообщения.Installation); + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация"); + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.УстановитьДополнительныйОтчетИлиОбработку( + ОписаниеИнсталляции, НастройкиКоманд, НастройкиРасположенияКоманд, НастройкиРазделов, + НастройкиНазначения, НастройкиВариантов, ТелоСообщения.InitiatorServiceID); КонецЕсли; - ОписаниеИнсталляции = Новый Структура( - "Идентификатор,Представление,Инсталляция", - ТелоСообщения.Extension, - ТелоСообщения.Representation, - ТелоСообщения.Installation - ); - - СообщенияУдаленногоАдминистрированияРеализация.УстановитьДополнительныйОтчетИлиОбработку( - ОписаниеИнсталляции, НастройкиКоманд, НастройкиРасположенияКоманд, НастройкиРазделов, - НастройкиНазначения, НастройкиВариантов, ТелоСообщения.InitiatorServiceID); - КонецПроцедуры Процедура УдалитьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) - ТелоСообщения = Сообщение.Body; - СообщенияУдаленногоАдминистрированияРеализация.УдалитьДополнительныйОтчетИлиОбработку( - ТелоСообщения.Extension, ТелоСообщения.Installation); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + + ТелоСообщения = Сообщение.Body; + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация"); + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.УдалитьДополнительныйОтчетИлиОбработку( + ТелоСообщения.Extension, ТелоСообщения.Installation); + + КонецЕсли; КонецПроцедуры Процедура ОтключитьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) - СообщенияУдаленногоАдминистрированияРеализация.ОтключитьДополнительныйОтчетИлиОбработку( - Сообщение.Body.Extension); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация"); + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.ОтключитьДополнительныйОтчетИлиОбработку( + Сообщение.Body.Extension); + + КонецЕсли; КонецПроцедуры Процедура ВключитьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) - СообщенияУдаленногоАдминистрированияРеализация.ВключитьДополнительныйОтчетИлиОбработку( - Сообщение.Body.Extension - ); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация"); + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.ВключитьДополнительныйОтчетИлиОбработку( + Сообщение.Body.Extension); + + КонецЕсли; КонецПроцедуры Процедура ОтозватьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) - СообщенияУдаленногоАдминистрированияРеализация.ОтозватьДополнительныйОтчетИлиОбработку( - Сообщение.Body.Extension - ); + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация"); + + МодульСообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.ОтозватьДополнительныйОтчетИлиОбработку( + Сообщение.Body.Extension); + + КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5/Module.bsl b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5/Module.bsl new file mode 100644 index 000000000..bfffc8d96 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5/Module.bsl @@ -0,0 +1,184 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 1.0.3.5 ИНТЕРФЕЙСА СООБЩЕНИЙ +// УДАЛЕННОГО АДМИНИСТРИРОВАНИЯ +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает пространство имен версии интерфейса сообщений +Функция Пакет() Экспорт + + Возврат "http://www.1c.ru/1cFresh/RemoteAdministration/App/" + Версия(); + +КонецФункции + +// Возвращает версию интерфейса сообщений, обслуживаемую обработчиком +Функция Версия() Экспорт + + Возврат "1.0.3.5"; + +КонецФункции + +// Возвращает базовый тип для сообщений версии +Функция БазовыйТип() Экспорт + + Возврат СообщенияВМоделиСервисаПовтИсп.ТипТело(); + +КонецФункции + +// Выполняет обработку входящих сообщений модели сервиса +// +// Параметры: +// Сообщение - ОбъектXDTO, входящее сообщение, +// Отправитель - ПланОбменаСсылка.ОбменСообщениями, узел плана обмена, соответствующий отправителю сообщения +// СообщениеОбработано - булево, флаг успешной обработки сообщения. Значение данного параметра необходимо +// установить равным Истина в том случае, если сообщение было успешно прочитано в данном обработчике +// +Процедура ОбработатьСообщениеМоделиСервиса(Знач Сообщение, Знач Отправитель, СообщениеОбработано) Экспорт + + СообщениеОбработано = Истина; + + Словарь = СообщенияУдаленногоАдминистрированияИнтерфейс; + ТипСообщения = Сообщение.Body.Тип(); + + Если ТипСообщения = Словарь.СообщениеОбновитьПользователя(Пакет()) Тогда + ОбновитьПользователя(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеПодготовитьОбластьДанных(Пакет()) Тогда + ПодготовитьОбластьДанных(Сообщение, Отправитель, Ложь); + ИначеЕсли ТипСообщения = Словарь.СообщениеПодготовитьОбластьДанныхИзВыгрузки(Пакет()) Тогда + ПодготовитьОбластьДанных(Сообщение, Отправитель, Истина); + ИначеЕсли ТипСообщения = Словарь.СообщениеУдалитьОбластьДанных(Пакет()) Тогда + УдалитьОбластьДанных(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьДоступКОбластиДанных(Пакет()) Тогда + УстановитьДоступКОбластиДанных(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьКонечнуюТочкуМенеджераСервиса(Пакет()) Тогда + УстановитьКонечнуюТочкуМенеджераСервиса(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьПараметрыИБ(Пакет()) Тогда + УстановитьПараметрыИБ(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьПараметрыОбластиДанных(Пакет()) Тогда + УстановитьПараметрыОбластиДанных(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьПолныеПраваОбластиДанных(Пакет()) Тогда + УстановитьПолныеПраваОбластиДанных(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьПраваПользователяПоУмолчанию(Пакет()) Тогда + УстановитьПраваПользователяПоУмолчанию(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеУстановитьРейтингОбластейДанных(Пакет()) Тогда + УстановитьРейтингОбластейДанных(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеПрикрепитьОбластьДанных(Пакет()) Тогда + ПрикрепитьОбластьДанных(Сообщение, Отправитель); + Иначе + СообщениеОбработано = Ложь; + КонецЕсли; + +КонецПроцедуры + +/////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Процедура ОбновитьПользователя(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + СообщенияУдаленногоАдминистрированияРеализация.ОбновитьПользователя( + ТелоСообщения.Name, + ТелоСообщения.FullName, + ТелоСообщения.StoredPasswordValue, + ТелоСообщения.UserApplicationID, + ТелоСообщения.UserServiceID, + ТелоСообщения.Phone, + ТелоСообщения.EMail, + ТелоСообщения.Language); + +КонецПроцедуры + +Процедура ПодготовитьОбластьДанных(Знач Сообщение, Знач Отправитель, Знач ИзВыгрузки) + + ТелоСообщения = Сообщение.Body; + СообщенияУдаленногоАдминистрированияРеализация.ПодготовитьОбластьДанных( + ТелоСообщения.Zone, + ИзВыгрузки, + ?(ИзВыгрузки, Неопределено, ТелоСообщения.Kind), + ТелоСообщения.DataFileId); + +КонецПроцедуры + +Процедура УдалитьОбластьДанных(Сообщение, Отправитель) + + СообщенияУдаленногоАдминистрированияРеализация.УдалитьОбластьДанных(Сообщение.Body.Zone); + +КонецПроцедуры + +Процедура УстановитьДоступКОбластиДанных(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + СообщенияУдаленногоАдминистрированияРеализация.УстановитьДоступКОбластиДанных( + ТелоСообщения.Name, + ТелоСообщения.StoredPasswordValue, + ТелоСообщения.UserServiceID, + ТелоСообщения.Value, + ТелоСообщения.Language); + +КонецПроцедуры + +Процедура УстановитьКонечнуюТочкуМенеджераСервиса(Знач Сообщение, Знач Отправитель) + + СообщенияУдаленногоАдминистрированияРеализация.УстановитьКонечнуюТочкуМенеджераСервиса(Отправитель); + +КонецПроцедуры + +Процедура УстановитьПараметрыИБ(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + Параметры = СериализаторXDTO.ПрочитатьXDTO(ТелоСообщения.Params); + СообщенияУдаленногоАдминистрированияРеализация.УстановитьПараметрыИБ(Параметры); + +КонецПроцедуры + +Процедура УстановитьПараметрыОбластиДанных(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + СообщенияУдаленногоАдминистрированияРеализация.УстановитьПараметрыОбластиДанных( + ТелоСообщения.Zone, + ТелоСообщения.Presentation, + ТелоСообщения.TimeZone); + +КонецПроцедуры + +Процедура УстановитьПолныеПраваОбластиДанных(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + СообщенияУдаленногоАдминистрированияРеализация.УстановитьПолныеПраваОбластиДанных( + ТелоСообщения.UserServiceID, + ТелоСообщения.Value); + +КонецПроцедуры + +Процедура УстановитьПраваПользователяПоУмолчанию(Знач Сообщение, Знач Отправитель) + + СообщенияУдаленногоАдминистрированияРеализация.УстановитьПраваПользователяПоУмолчанию( + Сообщение.Body.UserServiceID); + +КонецПроцедуры + +Процедура УстановитьРейтингОбластейДанных(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + ТаблицаРейтинга = Новый ТаблицаЗначений(); + ТаблицаРейтинга.Колонки.Добавить("ОбластьДанных", Новый ОписаниеТипов("Число", , Новый КвалификаторыЧисла(7,0))); + ТаблицаРейтинга.Колонки.Добавить("Рейтинг", Новый ОписаниеТипов("Число", , Новый КвалификаторыЧисла(7,0))); + Для Каждого СтрокаСообщения Из ТелоСообщения.Item Цикл + СтрокаРейтинга = ТаблицаРейтинга.Добавить(); + СтрокаРейтинга.ОбластьДанных = СтрокаСообщения.Zone; + СтрокаРейтинга.Рейтинг = СтрокаСообщения.Rating; + КонецЦикла; + СообщенияУдаленногоАдминистрированияРеализация.УстановитьРейтингОбластейДанных( + ТаблицаРейтинга, ТелоСообщения.SetAllZones); + +КонецПроцедуры + +Процедура ПрикрепитьОбластьДанных(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + СообщенияУдаленногоАдминистрированияРеализация.ПрикрепитьОбластьДанных(ТелоСообщения); + +КонецПроцедуры diff --git a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5.mdo b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5.mdo new file mode 100644 index 000000000..edcbe7877 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5/СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="eccded1c-f3ca-40d3-a8cd-71947bfed7b8"> + <name>СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5</name> + <synonym> + <key>ru</key> + <value>Сообщения удаленного администрирования обработчик сообщения 1.0.3.5</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияРеализация/Module.bsl b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияРеализация/Module.bsl index 41e2133a4..3b6e62d8b 100644 --- a/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияРеализация/Module.bsl +++ b/SSL/src/CommonModules/СообщенияУдаленногоАдминистрированияРеализация/Module.bsl @@ -158,6 +158,10 @@ МенеджерЗаписи.Повтор = 0; МенеджерЗаписи.Вариант = ?(ИзВыгрузки, "", Вариант); + КопияМенеджера = РегистрыСведений.ОбластиДанных.СоздатьМенеджерЗаписи(); + ЗаполнитьЗначенияСвойств(КопияМенеджера, МенеджерЗаписи); + МенеджерЗаписи = КопияМенеджера; + МенеджерЗаписи.Записать(); ПараметрыМетода = Новый Массив; @@ -212,6 +216,10 @@ МенеджерЗаписи.Статус = Перечисления.СтатусыОбластейДанных.КУдалению; МенеджерЗаписи.Повтор = 0; + КопияМенеджера = РегистрыСведений.ОбластиДанных.СоздатьМенеджерЗаписи(); + ЗаполнитьЗначенияСвойств(КопияМенеджера, МенеджерЗаписи); + МенеджерЗаписи = КопияМенеджера; + МенеджерЗаписи.Записать(); ПараметрыМетода = Новый Массив; @@ -329,7 +337,8 @@ Если СтрокаПараметра = Неопределено Тогда ШаблонСообщения = НСтр("ru = 'Не известное имя параметра %1'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, КлючИЗначение.Ключ); - ЗаписьЖурналаРегистрации("УдаленноеАдминистрирование.УстановитьПараметрыИБ", + ЗаписьЖурналаРегистрации(НСтр("ru ='УдаленноеАдминистрирование.УстановитьПараметрыИБ'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Предупреждение, , , ТекстСообщения); Продолжить; ИначеЕсли СтрокаПараметра.ЗапретЗаписи Тогда @@ -360,7 +369,8 @@ ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); - ЗаписьЖурналаРегистрации(НСтр("ru = 'Установка параметров ИБ'"), + ЗаписьЖурналаРегистрации(НСтр("ru = 'Установка параметров ИБ'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; КонецПопытки; @@ -425,8 +435,8 @@ Если ПользователиСлужебный.ЗапретРедактированияРолей() И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебныйВМоделиСервиса"); - Модуль.УстановитьПринадлежностьПользователяКГруппеАдминистраторы(ПользовательОбластиДанных, ДоступРазрешен); + МодульУправлениеДоступомСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебныйВМоделиСервиса"); + МодульУправлениеДоступомСлужебныйВМоделиСервиса.УстановитьПринадлежностьПользователяКГруппеАдминистраторы(ПользовательОбластиДанных, ДоступРазрешен); Иначе @@ -564,6 +574,10 @@ УстановитьЧасовойПоясИнформационнойБазы(); КонецЕсли; + КопияМенеджера = РегистрыСведений.ОбластиДанных.СоздатьМенеджерЗаписи(); + ЗаполнитьЗначенияСвойств(КопияМенеджера, МенеджерЗаписи); + МенеджерЗаписи = КопияМенеджера; + МенеджерЗаписи.Записать(); Константы.ПредставлениеОбластиДанных.Установить(Параметры.Presentation); @@ -648,8 +662,8 @@ Если ПользователиСлужебный.ЗапретРедактированияРолей() И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебныйВМоделиСервиса"); - Модуль.УстановитьПринадлежностьПользователяКГруппеАдминистраторы(ПользовательОбластиДанных, Истина); + МодульУправлениеДоступомСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебныйВМоделиСервиса"); + МодульУправлениеДоступомСлужебныйВМоделиСервиса.УстановитьПринадлежностьПользователяКГруппеАдминистраторы(ПользовательОбластиДанных, Истина); КонецЕсли; КонецЦикла; @@ -672,206 +686,6 @@ КонецПроцедуры -// Обработка входящих сообщений с типом http://www.1c.ru/SaaS/RemoteAdministration/App/a.b.c.d}InstallExtension -// -// Параметры: -// ОписаниеИнсталляции - Структура, ключи: -// Идентификатор - УникальныйИдентификатор, уникальный идентификатор ссылки -// элемента справочника ПоставляемыеДополнительныеОтчетыИОбработки, -// Представление - строка, представление инсталляции поставляемой дополнительной -// обработки (будет использоваться в качестве наименования элемента справочника -// ДополнительныеОтчетыИОбработки), -// Инсталляция - УникальныйИдентификатор, уникальный идентификатор инсталляции -// поставляемой дополнительной обработки (будет использоваться в качестве -// уникального идентификатора ссылки справочника ДополнительныеОтчетыИОбработки), -// НастройкиКоманд - ТаблицаЗначений, содержащая настройки команд для инсталляции -// поставляемой дополнительной обработки, колонки: -// Идентификатор - строка, идентификатор команды, -// БыстрыйДоступ - Массив(УникальныйИдентификатор), массив уникальный идентификаторов, -// определяющих пользователей сервиса, которым команда должна быть включена в -// быстрый доступ, -// Расписание - РасписаниеРегламентногоЗадания, расписание для задания команды -// дополнительной обработки (если для команды включено выполнение в качестве -// регламентного задания), -// Разделы - ТаблицаЗначений, содержащая настройки включения команд для инсталляции -// поставляемой дополнительной обработки в разделы командного интерфейса, колонки: -// Раздел - СправочникСсылка.ИдентификаторыОбъектовМетаданных, -// СправочникиИДокументы - ТаблицаЗначений, содержащая настройки включения команд для инсталляции -// поставляемой дополнительной обработки в интерфейс форм список и элементов, колонки: -// ОбъектНазначения - СправочникСсылка.ИдентификаторыОбъектовМетаданных, -// ВариантыДополнительногоОтчета - Массив(Строка), массив, содержащий ключи вариантов отчетов -// дополнительного отчета, -// ИдентификаторПользователяСервиса - УникальныйИдентификатор, определяющий пользователя -// сервиса, который инициировал инсталляцию поставляемой дополнительной обработки. -// -Процедура УстановитьДополнительныйОтчетИлиОбработку(Знач ОписаниеИнсталляции, - Знач НастройкиКоманд, Знач НастройкиРасположенияКоманд, Знач Разделы, Знач СправочникиИДокументы, Знач ВариантыДополнительногоОтчета, - Знач ИдентификаторПользователяСервиса) Экспорт - - // Настройки заполняются по данным из сообщения - БыстрыйДоступ = Новый ТаблицаЗначений(); - БыстрыйДоступ.Колонки.Добавить("ИдентификаторКоманды", Новый ОписаниеТипов("Строка")); - БыстрыйДоступ.Колонки.Добавить("Пользователь", Новый ОписаниеТипов("СправочникСсылка.Пользователи")); - - Задания = Новый ТаблицаЗначений(); - Задания.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); - Задания.Колонки.Добавить("РегламентноеЗаданиеРасписание", Новый ОписаниеТипов("СписокЗначений")); - Задания.Колонки.Добавить("РегламентноеЗаданиеИспользование", Новый ОписаниеТипов("Булево")); - - Для Каждого НастройкаКоманды из НастройкиКоманд Цикл - - Если ЗначениеЗаполнено(НастройкаКоманды.БыстрыйДоступ) Тогда - - Для Каждого ИдентификаторПользователя Из НастройкаКоманды.БыстрыйДоступ Цикл - - ТекстЗапроса = "ВЫБРАТЬ - | Пользователи.Ссылка - |ИЗ - | Справочник.Пользователи КАК Пользователи - |ГДЕ - | Пользователи.ИдентификаторПользователяСервиса = &ИдентификаторПользователяСервиса"; - Запрос = Новый Запрос(ТекстЗапроса); - Запрос.УстановитьПараметр("ИдентификаторПользователяСервиса", ИдентификаторПользователя); - Результат = Запрос.Выполнить(); - Если Результат.Пустой() Тогда - - Продолжить; - - Иначе - - Выборка = Результат.Выбрать(); - Выборка.Следующий(); - ЭлементБыстрогоДоступа = БыстрыйДоступ.Добавить(); - ЭлементБыстрогоДоступа.ИдентификаторКоманды = НастройкаКоманды.Идентификатор; - ЭлементБыстрогоДоступа.Пользователь = Выборка.Ссылка; - - КонецЕсли; - - КонецЦикла; - - КонецЕсли; - - Если НастройкаКоманды.Расписание <> Неопределено Тогда - - Задание = Задания.Добавить(); - Задание.Идентификатор = НастройкаКоманды.Идентификатор; - РегламентноеЗаданиеРасписание = Новый СписокЗначений(); - РегламентноеЗаданиеРасписание.Добавить(НастройкаКоманды.Расписание); - Задание.РегламентноеЗаданиеРасписание= РегламентноеЗаданиеРасписание; - Задание.РегламентноеЗаданиеИспользование = Истина; - - КонецЕсли; - - КонецЦикла; - - ДополнительныеОтчетыИОбработкиВМоделиСервиса.УстановитьПоставляемуюОбработкуВОбластьДанных( - ОписаниеИнсталляции, - БыстрыйДоступ, - Задания, - Разделы, - СправочникиИДокументы, - НастройкиРасположенияКоманд, - ВариантыДополнительногоОтчета, - ПолучитьПользователяОбластиПоИдентификаторуПользователяСервиса( - ИдентификаторПользователяСервиса - ) - ); - -КонецПроцедуры - -// Обработка входящих сообщений с типом http://www.1c.ru/SaaS/RemoteAdministration/App/a.b.c.d}DeleteExtension -// -// Параметры: -// ИдентификаторПоставляемойОбработки - УникальныйИдентификатор, ссылка на элемент -// справочника ПоставляемыеДополнительныеОтчетыИОбработки; -// ИдентификаторИспользуемойОбработки - УникальныйИдентификатор, ссылка на элемент -// справочника ДополнительныеОтчетыИОбработки. -// -Процедура УдалитьДополнительныйОтчетИлиОбработку(Знач ИдентификаторПоставляемойОбработки, Знач ИдентификаторИспользуемойОбработки) Экспорт - - ПоставляемаяОбработка = Справочники.ПоставляемыеДополнительныеОтчетыИОбработки.ПолучитьСсылку( - ИдентификаторПоставляемойОбработки); - - ДополнительныеОтчетыИОбработкиВМоделиСервиса.УдалитьПоставляемуюОбработкуИзОбластиДанных( - ПоставляемаяОбработка, - ИдентификаторИспользуемойОбработки - ); - -КонецПроцедуры - -// Обработка входящих сообщений с типом http://www.1c.ru/SaaS/RemoteAdministration/App/a.b.c.d}DisableExtension -// -// Параметры: -// ИдентификаторРасширения - УникальныйИдентификатор, ссылка на элемент -// справочника ПоставляемыеДополнительныеОтчетыИОбработки -// -Процедура ОтключитьДополнительныйОтчетИлиОбработку(Знач ИдентификаторРасширения) Экспорт - - УстановитьПривилегированныйРежим(Истина); - ПоставляемаяОбработка = Справочники.ПоставляемыеДополнительныеОтчетыИОбработки.ПолучитьСсылку( - ИдентификаторРасширения - ); - - Если ОбщегоНазначения.СсылкаСуществует(ПоставляемаяОбработка) Тогда - - Объект = ПоставляемаяОбработка.ПолучитьОбъект(); - - Объект.Публикация = - Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена; - Объект.ПричинаОтключения = - Перечисления.ПричиныОтключенияДополнительныхОтчетовИОбработокВМоделиСервиса.БлокировкаАдминистраторомСервиса; - - Объект.Записать(); - КонецЕсли; - -КонецПроцедуры - -// Обработка входящих сообщений с типом http://www.1c.ru/SaaS/RemoteAdministration/App/a.b.c.d}EnableExtension -// -// Параметры: -// ИдентификаторРасширения - УникальныйИдентификатор, ссылка на элемент -// справочника ПоставляемыеДополнительныеОтчетыИОбработки -// -Процедура ВключитьДополнительныйОтчетИлиОбработку(Знач ИдентификаторРасширения) Экспорт - - УстановитьПривилегированныйРежим(Истина); - ПоставляемаяОбработка = Справочники.ПоставляемыеДополнительныеОтчетыИОбработки.ПолучитьСсылку( - ИдентификаторРасширения - ); - - Если ОбщегоНазначения.СсылкаСуществует(ПоставляемаяОбработка) Тогда - - Объект = ПоставляемаяОбработка.ПолучитьОбъект(); - - Объект.Публикация = - Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется; - - Объект.Записать(); - КонецЕсли; - -КонецПроцедуры - -// Обработка входящих сообщений с типом http://www.1c.ru/SaaS/RemoteAdministration/App/a.b.c.d}DropExtension -// -// Параметры: -// ИдентификаторРасширения - УникальныйИдентификатор, ссылка на элемент -// справочника ПоставляемыеДополнительныеОтчетыИОбработки -// -Процедура ОтозватьДополнительныйОтчетИлиОбработку(Знач ИдентификаторПоставляемойОбработки) Экспорт - - УстановитьПривилегированныйРежим(Истина); - ПоставляемаяОбработка = Справочники.ПоставляемыеДополнительныеОтчетыИОбработки.ПолучитьСсылку( - ИдентификаторПоставляемойОбработки - ); - - Если ОбщегоНазначения.СсылкаСуществует(ПоставляемаяОбработка) Тогда - ДополнительныеОтчетыИОбработкиВМоделиСервиса.ОтозватьПоставляемуюДополнительнуюОбработку( - ПоставляемаяОбработка - ); - КонецЕсли; - -КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ diff --git a/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемИнтерфейс/Module.bsl index d41eb06bf..fb9266f5e 100644 --- a/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемИнтерфейс/Module.bsl @@ -16,7 +16,7 @@ // Возвращает текущую (используемую вызывающим кодом) версию интерфейса сообщений Функция Версия() Экспорт - Возврат "1.0.2.1"; + Возврат "1.0.3.1"; КонецФункции @@ -35,6 +35,7 @@ Процедура ОбработчикиКаналовСообщений(Знач МассивОбработчиков) Экспорт МассивОбработчиков.Добавить(СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_2_1); + МассивОбработчиков.Добавить(СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1); КонецПроцедуры @@ -75,14 +76,48 @@ // Функция СообщениеОтменитьАрхивациюОбласти(Знач ИспользуемыйПакет = Неопределено) Экспорт + Если ИспользуемыйПакет = Неопределено Тогда + ИспользуемыйПакет = "http://www.1c.ru/SaaS/ManageZonesBackup/1.0.2.1"; + КонецЕсли; + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "CancelZoneBackup"); КонецФункции +// Возвращает тип сообщения {http://www.1c.ru/SaaS/ManageZonesBackup/a.b.c.d}UpdateScheduledZoneBackupSettings +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеОбновитьНастройкиПериодическогоРезервногоКопирования(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "UpdateScheduledZoneBackupSettings"); + +КонецФункции + +// Возвращает тип сообщения {http://www.1c.ru/SaaS/ManageZonesBackup/a.b.c.d}CancelScheduledZoneBackup +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеОтменитьПериодическоеРезервноеКопирование(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "CancelScheduledZoneBackup"); + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1/Module.bsl b/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1/Module.bsl new file mode 100644 index 000000000..68ca8c414 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1/Module.bsl @@ -0,0 +1,103 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 1.0.3.1 ИНТЕРФЕЙСА СООБЩЕНИЙ +// УПРАВЛЕНИЯ РЕЗЕРВНЫМ КОПИРОВАНИЕМ ОБЛАСТЕЙ ДАННЫХ +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает пространство имен версии интерфейса сообщений +Функция Пакет() Экспорт + + Возврат "http://www.1c.ru/SaaS/ManageZonesBackup/" + Версия(); + +КонецФункции + +// Возвращает версию интерфейса сообщений, обслуживаемую обработчиком +Функция Версия() Экспорт + + Возврат "1.0.3.1"; + +КонецФункции + +// Возвращает базовый тип для сообщений версии +Функция БазовыйТип() Экспорт + + Возврат СообщенияВМоделиСервисаПовтИсп.ТипТело(); + +КонецФункции + +// Выполняет обработку входящих сообщений модели сервиса +// +// Параметры: +// Сообщение - ОбъектXDTO, входящее сообщение, +// Отправитель - ПланОбменаСсылка.ОбменСообщениями, узел плана обмена, соответствующий отправителю сообщения +// СообщениеОбработано - булево, флаг успешной обработки сообщения. Значение данного параметра необходимо +// установить равным Истина в том случае, если сообщение было успешно прочитано в данном обработчике +// +Процедура ОбработатьСообщениеМоделиСервиса(Знач Сообщение, Знач Отправитель, СообщениеОбработано) Экспорт + + СообщениеОбработано = Истина; + + Словарь = СообщенияУправлениеРезервнымКопированиемИнтерфейс; + ТипСообщения = Сообщение.Body.Тип(); + + Если ТипСообщения = Словарь.СообщениеПланироватьАрхивациюОбласти(Пакет()) Тогда + ПланироватьАрхивациюОбласти(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеОбновитьНастройкиПериодическогоРезервногоКопирования(Пакет()) Тогда + ОбновитьНастройкиПериодическогоРезервногоКопирования(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеОтменитьПериодическоеРезервноеКопирование(Пакет()) Тогда + ОтменитьПериодическоеРезервноеКопирование(Сообщение, Отправитель); + Иначе + СообщениеОбработано = Ложь; + КонецЕсли; + +КонецПроцедуры + +/////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Процедура ПланироватьАрхивациюОбласти(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + СообщенияУправлениеРезервнымКопированиемРеализация.ПланироватьСозданиеРезервнойКопииОбласти( + ТелоСообщения.Zone, + ТелоСообщения.BackupId, + ТелоСообщения.Date, + Истина); + +КонецПроцедуры + +Процедура ОбновитьНастройкиПериодическогоРезервногоКопирования(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + + Настройки = Новый Структура; + Настройки.Вставить("СоздаватьЕжедневные", ТелоСообщения.CreateDailyBackup); + Настройки.Вставить("СоздаватьЕжемесячные", ТелоСообщения.CreateMonthlyBackup); + Настройки.Вставить("СоздаватьЕжегодные", ТелоСообщения.CreateYearlyBackup); + Настройки.Вставить("ТолькоПриАктивностиПользователей", ТелоСообщения.CreateBackupOnlyAfterUsersActivity); + Настройки.Вставить("НачалоИнтервалаФормированияКопий", ТелоСообщения.BackupCreationBeginTime); + Настройки.Вставить("ОкончаниеИнтервалаФормированияКопий", ТелоСообщения.BackupCreationEndTime); + Настройки.Вставить("ДеньСозданияЕжемесячных", ТелоСообщения.MonthlyBackupCreationDay); + Настройки.Вставить("МесяцСозданияЕжегодных", ТелоСообщения.YearlyBackupCreationMonth); + Настройки.Вставить("ДеньСозданияЕжегодных", ТелоСообщения.YearlyBackupCreationDay); + Настройки.Вставить("ДатаСозданияПоследнейЕжедневной", ТелоСообщения.LastDailyBackupDate); + Настройки.Вставить("ДатаСозданияПоследнейЕжемесячной", ТелоСообщения.LastMonthlyBackupDate); + Настройки.Вставить("ДатаСозданияПоследнейЕжегодной", ТелоСообщения.LastYearlyBackupDate); + + СообщенияУправлениеРезервнымКопированиемРеализация.ОбновитьНастройкиПериодическогоРезервногоКопирования( + ТелоСообщения.Zone, + Настройки); + +КонецПроцедуры + +Процедура ОтменитьПериодическоеРезервноеКопирование(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + + СообщенияУправлениеРезервнымКопированиемРеализация.ОтменитьПериодическоеРезервноеКопирование( + ТелоСообщения.Zone); + +КонецПроцедуры diff --git a/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1/СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1.mdo b/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1/СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1.mdo new file mode 100644 index 000000000..80097f904 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1/СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="09256328-6205-4b04-b908-3287ae8ded75"> + <name>СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1</name> + <synonym> + <key>ru</key> + <value>Сообщения управление резервным копированием обработчик сообщения 1.0.3.1</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемРеализация/Module.bsl b/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемРеализация/Module.bsl index 1cd9ecaef..c1c3782d7 100644 --- a/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемРеализация/Module.bsl +++ b/SSL/src/CommonModules/СообщенияУправлениеРезервнымКопированиемРеализация/Module.bsl @@ -41,4 +41,93 @@ ПараметрыОтмены = Новый Структура("ОбластьДанных, ИДКопии", КодОбластиДанных, ИдентификаторРезервнойКопии); РезервноеКопированиеОбластейДанных.ОтменитьСозданиеРезервнойКопииОбласти(ПараметрыОтмены); -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +// Обработка входящих сообщений с типом {http://www.1c.ru/SaaS/ManageZonesBackup/a.b.c.d}UpdateScheduledZoneBackupSettings +// +// Параметры: +// ОбластьДанных - Число - значение разделителя области данных +// Настройки - Структура - новые настройки резервного копирования +Процедура ОбновитьНастройкиПериодическогоРезервногоКопирования(Знач ОбластьДанных, Знач Настройки) Экспорт + + ПараметрыСоздания = Новый Структура; + ПараметрыСоздания.Вставить("СоздаватьЕжедневные"); + ПараметрыСоздания.Вставить("СоздаватьЕжемесячные"); + ПараметрыСоздания.Вставить("СоздаватьЕжегодные"); + ПараметрыСоздания.Вставить("ТолькоПриАктивностиПользователей"); + ПараметрыСоздания.Вставить("ДеньСозданияЕжемесячных"); + ПараметрыСоздания.Вставить("МесяцСозданияЕжегодных"); + ПараметрыСоздания.Вставить("ДеньСозданияЕжегодных"); + ЗаполнитьЗначенияСвойств(ПараметрыСоздания, Настройки); + + СостояниеСоздания = Новый Структура; + СостояниеСоздания.Вставить("ДатаСозданияПоследнейЕжедневной"); + СостояниеСоздания.Вставить("ДатаСозданияПоследнейЕжемесячной"); + СостояниеСоздания.Вставить("ДатаСозданияПоследнейЕжегодной"); + ЗаполнитьЗначенияСвойств(СостояниеСоздания, Настройки); + + ПараметрыМетода = Новый Массив; + ПараметрыМетода.Добавить(Новый ФиксированнаяСтруктура(ПараметрыСоздания)); + ПараметрыМетода.Добавить(Новый ФиксированнаяСтруктура(СостояниеСоздания)); + + Расписание = Новый РасписаниеРегламентногоЗадания; + Расписание.ВремяНачала = Настройки.НачалоИнтервалаФормированияКопий; + Расписание.ВремяКонца = Настройки.ОкончаниеИнтервалаФормированияКопий; + Расписание.ПериодПовтораДней = 1; + + ПараметрыЗадания = Новый Структура; + ПараметрыЗадания.Вставить("Параметры", ПараметрыМетода); + ПараметрыЗадания.Вставить("Расписание", Расписание); + + ОтборЗадания = Новый Структура; + ОтборЗадания.Вставить("ОбластьДанных", ОбластьДанных); + ОтборЗадания.Вставить("ИмяМетода", "РезервноеКопированиеОбластейДанных.СозданиеКопий"); + ОтборЗадания.Вставить("Ключ", "1"); + + НачатьТранзакцию(); + Попытка + Задания = ОчередьЗаданий.ПолучитьЗадания(ОтборЗадания); + Если Задания.Количество() > 0 Тогда + ОчередьЗаданий.ИзменитьЗадание(Задания[0].Идентификатор, ПараметрыЗадания); + Иначе + ПараметрыЗадания.Вставить("ОбластьДанных", ОбластьДанных); + ПараметрыЗадания.Вставить("ИмяМетода", "РезервноеКопированиеОбластейДанных.СозданиеКопий"); + ПараметрыЗадания.Вставить("Ключ", "1"); + ПараметрыЗадания.Вставить("КоличествоПовторовПриАварийномЗавершении", 3); + ПараметрыЗадания.Вставить("ИнтервалПовтораПриАварийномЗавершении", 600); // 10 минут + ОчередьЗаданий.ДобавитьЗадание(ПараметрыЗадания); + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +// Обработка входящих сообщений с типом {http://www.1c.ru/SaaS/ManageZonesBackup/a.b.c.d}CancelScheduledZoneBackup +// +// Параметры: +// ОбластьДанных - Число - значение разделителя области данных +Процедура ОтменитьПериодическоеРезервноеКопирование(Знач ОбластьДанных) Экспорт + + ОтборЗадания = Новый Структура; + ОтборЗадания.Вставить("ОбластьДанных", ОбластьДанных); + ОтборЗадания.Вставить("ИмяМетода", "РезервноеКопированиеОбластейДанных.СозданиеКопий"); + ОтборЗадания.Вставить("Ключ", "1"); + + НачатьТранзакцию(); + Попытка + Задания = ОчередьЗаданий.ПолучитьЗадания(ОтборЗадания); + Если Задания.Количество() > 0 Тогда + ОчередьЗаданий.УдалитьЗадание(Задания[0].Идентификатор); + КонецЕсли; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры diff --git a/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс/Module.bsl new file mode 100644 index 000000000..fff9227fd --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс/Module.bsl @@ -0,0 +1,153 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИК ИНТЕРФЕЙСА СООБЩЕНИЙ УПРАВЛЕНИЯ ДОПОЛНИТЕЛЬНЫМИ ОТЧЕТАМИ И ОБРАБОТКАМИ +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает пространство имен текущей (используемой вызывающим кодом) версии интерфейса сообщений +Функция Пакет() Экспорт + + Возврат "http://www.1c.ru/1cFresh/ApplicationExtensions/Management/" + Версия(); + +КонецФункции + +// Возвращает текущую (используемую вызывающим кодом) версию интерфейса сообщений +Функция Версия() Экспорт + + Возврат "1.0.1.1"; + +КонецФункции + +// Возвращает название программного интерфейса сообщений +Функция ПрограммныйИнтерфейс() Экспорт + + Возврат "ApplicationExtensionsManagement"; + +КонецФункции + +// Выполняет регистрацию обработчиков сообщений в качестве обработчиков каналов обмена сообщениями +// +// Параметры: +// МассивОбработчиков - массив. +// +Процедура ОбработчикиКаналовСообщений(Знач МассивОбработчиков) Экспорт + + МассивОбработчиков.Добавить(СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1); + +КонецПроцедуры + +// Выполняет регистрацию обработчиков трансляции сообщений. +// +// Параметры: +// МассивОбработчиков - массив. +// +Процедура ОбработчикиТрансляцииСообщений(Знач МассивОбработчиков) Экспорт + + + +КонецПроцедуры + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}InstallExtension +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеУстановитьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "InstallExtension"); + +КонецФункции + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}ExtensionCommandSettings +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция ТипНастройкиКомандыДополнительногоОтчетаИлиОбработки(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "ExtensionCommandSettings"); + +КонецФункции + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}DeleteExtension +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеУдалитьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "DeleteExtension"); + +КонецФункции + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}DisableExtension +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеОтключитьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "DisableExtension"); + +КонецФункции + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}EnableExtension +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеВключитьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "EnableExtension"); + +КонецФункции + +// Возвращает тип сообщения {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}DropExtension +// +// Параметры: +// ИспользуемыйПакет - строка, пространство имен версии интерфейса сообщений, для которой +// получается тип сообщения. +// +// Возвращаемое значение: +// ТипXDTO +// +Функция СообщениеОтозватьДополнительныйОтчетИлиОбработку(Знач ИспользуемыйПакет = Неопределено) Экспорт + + Возврат СоздатьТипСообщения(ИспользуемыйПакет, "DropExtension"); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) + + Если ИспользуемыйПакет = Неопределено Тогда + ИспользуемыйПакет = Пакет(); + КонецЕсли; + + Возврат ФабрикаXDTO.Тип(ИспользуемыйПакет, Тип); + +КонецФункции \ No newline at end of file diff --git a/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс.mdo b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс.mdo new file mode 100644 index 000000000..374873365 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="966ecce5-ec91-4f8e-82b2-364b38eb7ff4"> + <name>СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс</name> + <synonym> + <key>ru</key> + <value>Сообщения управления дополнительными отчетами и обработками интерфейс</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1/Module.bsl b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1/Module.bsl new file mode 100644 index 000000000..5cbc8b99d --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1/Module.bsl @@ -0,0 +1,223 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИК КАНАЛОВ СООБЩЕНИЙ ДЛЯ ВЕРСИИ 1.0.1.1 ИНТЕРФЕЙСА СООБЩЕНИЙ +// УПРАВЛЕНИЯ ДОПОЛНИТЕЛЬНЫМИ ОТЧЕТАМИ И ОБРАБОТКАМИ +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Возвращает пространство имен версии интерфейса сообщений +Функция Пакет() Экспорт + + Возврат "http://www.1c.ru/1cFresh/ApplicationExtensions/Management/" + Версия(); + +КонецФункции + +// Возвращает версию интерфейса сообщений, обслуживаемую обработчиком +Функция Версия() Экспорт + + Возврат "1.0.1.1"; + +КонецФункции + +// Возвращает базовый тип для сообщений версии +Функция БазовыйТип() Экспорт + + Возврат СообщенияВМоделиСервисаПовтИсп.ТипТело(); + +КонецФункции + +// Выполняет обработку входящих сообщений модели сервиса +// +// Параметры: +// Сообщение - ОбъектXDTO, входящее сообщение, +// Отправитель - ПланОбменаСсылка.ОбменСообщениями, узел плана обмена, соответствующий отправителю сообщения +// СообщениеОбработано - булево, флаг успешной обработки сообщения. Значение данного параметра необходимо +// установить равным Истина в том случае, если сообщение было успешно прочитано в данном обработчике +// +Процедура ОбработатьСообщениеМоделиСервиса(Знач Сообщение, Знач Отправитель, СообщениеОбработано) Экспорт + + СообщениеОбработано = Истина; + + Словарь = СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс; + ТипСообщения = Сообщение.Body.Тип(); + + Если ТипСообщения = Словарь.СообщениеУстановитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + УстановитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеУдалитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + УдалитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеОтключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + ОтключитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеВключитьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + ВключитьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); + ИначеЕсли ТипСообщения = Словарь.СообщениеОтозватьДополнительныйОтчетИлиОбработку(Пакет()) Тогда + ОтозватьДополнительныйОтчетИлиОбработку(Сообщение, Отправитель); + Иначе + СообщениеОбработано = Ложь; + КонецЕсли; + +КонецПроцедуры + +/////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Процедура УстановитьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + + НастройкиКоманд = Новый ТаблицаЗначений(); + НастройкиКоманд.Колонки.Добавить("Идентификатор"); + НастройкиКоманд.Колонки.Добавить("БыстрыйДоступ"); + НастройкиКоманд.Колонки.Добавить("Расписание"); + + Если ЗначениеЗаполнено(ТелоСообщения.CommandSettings) Тогда + + Для Каждого CommandSettings Из ТелоСообщения.CommandSettings Цикл + + НастройкиКоманды = НастройкиКоманд.Добавить(); + НастройкиКоманды.Идентификатор = CommandSettings.Id; + + Если CommandSettings.Settings <> Неопределено Тогда + + МассивИдентификаторов = Новый Массив; + Для Каждого UserGUID Из CommandSettings.Settings.UsersFastAccess Цикл + МассивИдентификаторов.Добавить(UserGUID); + КонецЦикла; + + НастройкиКоманды.БыстрыйДоступ = МассивИдентификаторов; + + Если CommandSettings.Settings.Schedule <> Неопределено Тогда + + НастройкиКоманды.Расписание = СериализаторXDTO.ПрочитатьXDTO(CommandSettings.Settings.Schedule); + + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + НастройкиРазделов = Новый ТаблицаЗначений(); + НастройкиРазделов.Колонки.Добавить("Раздел"); + + НастройкиНазначения = Новый ТаблицаЗначений(); + НастройкиНазначения.Колонки.Добавить("ОбъектНазначения"); + + НастройкиРасположенияКоманд = Новый Структура(); + + Если ЗначениеЗаполнено(ТелоСообщения.Assignments) Тогда + + Для Каждого Assignment Из ТелоСообщения.Assignments Цикл + + Если Assignment.Тип() = ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНазначениеРазделам() Тогда + + Для Каждого AssignmentObject Из Assignment.Objects Цикл + + СтрокаРаздела = НастройкиРазделов.Добавить(); + Если AssignmentObject.ObjectName = ДополнительныеОтчетыИОбработкиКлиентСервер.ИдентификаторРабочегоСтола() Тогда + СтрокаРаздела.Раздел = Справочники.ИдентификаторыОбъектовМетаданных.ПустаяСсылка(); + Иначе + СтрокаРаздела.Раздел = ОбщегоНазначения.ИдентификаторОбъектаМетаданных(AssignmentObject.ObjectName); + КонецЕсли; + + КонецЦикла; + + ИначеЕсли Assignment.Тип() = ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс.ТипНазначениеСправочникамИДокументам() Тогда + + Для Каждого AssignmentObject Из Assignment.Objects Цикл + + СтрокаНазначения = НастройкиНазначения.Добавить(); + СтрокаНазначения.ОбъектНазначения = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( + AssignmentObject.ObjectName); + + КонецЦикла; + + НастройкиРасположенияКоманд.Вставить("ИспользоватьДляФормыСписка", + Assignment.UseInListsForms); + НастройкиРасположенияКоманд.Вставить("ИспользоватьДляФормыОбъекта", + Assignment.UseInObjectsForms); + + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + НастройкиВариантов = Новый ТаблицаЗначений(); + НастройкиВариантов.Колонки.Добавить("Ключ", Новый ОписаниеТипов("Строка")); + НастройкиВариантов.Колонки.Добавить("Размещение", Новый ОписаниеТипов("Массив")); + НастройкиВариантов.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); + Если ТелоСообщения.ReportVariants <> Неопределено Тогда + + Для Каждого ReportVariant Из ТелоСообщения.ReportVariants Цикл + + НастройкаВарианта = НастройкиВариантов.Добавить(); + НастройкаВарианта.Ключ = ReportVariant.VariantKey; + НастройкаВарианта.Представление = ReportVariant.Representation; + + Размещение = Новый Массив; + Для Каждого ReportVariantAssignment Из ReportVariant.Assignments Цикл + + Раздел = ОбщегоНазначения.ИдентификаторОбъектаМетаданных( + ReportVariantAssignment.ObjectName); + Важный = Ложь; + СмТакже = Ложь; + Если ReportVariantAssignment.Importance = "High" Тогда + Важный = Истина; + ИначеЕсли ReportVariantAssignment.Importance = "Low" Тогда + СмТакже = Истина; + КонецЕсли; + ЭлементРазмещения = Новый Структура("Раздел,Важный,СмТакже", Раздел, Важный, СмТакже); + Размещение.Добавить(ЭлементРазмещения); + + КонецЦикла; + + НастройкаВарианта.Размещение = Размещение; + + КонецЦикла; + + КонецЕсли; + + ОписаниеИнсталляции = Новый Структура( + "Идентификатор,Представление,Инсталляция", + ТелоСообщения.Extension, + ТелоСообщения.Representation, + ТелоСообщения.Installation); + + СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.УстановитьДополнительныйОтчетИлиОбработку( + ОписаниеИнсталляции, НастройкиКоманд, НастройкиРасположенияКоманд, НастройкиРазделов, + НастройкиНазначения, НастройкиВариантов, ТелоСообщения.InitiatorServiceID); + +КонецПроцедуры + +Процедура УдалитьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) + + ТелоСообщения = Сообщение.Body; + СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.УдалитьДополнительныйОтчетИлиОбработку( + ТелоСообщения.Extension, ТелоСообщения.Installation); + +КонецПроцедуры + +Процедура ОтключитьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) + + СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.ОтключитьДополнительныйОтчетИлиОбработку( + Сообщение.Body.Extension); + +КонецПроцедуры + +Процедура ВключитьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) + + СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.ВключитьДополнительныйОтчетИлиОбработку( + Сообщение.Body.Extension); + +КонецПроцедуры + +Процедура ОтозватьДополнительныйОтчетИлиОбработку(Знач Сообщение, Знач Отправитель) + + СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.ОтозватьДополнительныйОтчетИлиОбработку( + Сообщение.Body.Extension); + +КонецПроцедуры + diff --git a/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1.mdo b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1.mdo new file mode 100644 index 000000000..79bba172e --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="66a2df23-3a08-40d2-8e6c-2db10a3bca7a"> + <name>СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1</name> + <synonym> + <key>ru</key> + <value>Сообщения управления дополнительными отчетами и обработками обработчик сообщения 1. 0 .1 .1</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация/Module.bsl b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация/Module.bsl new file mode 100644 index 000000000..e0e53b646 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация/Module.bsl @@ -0,0 +1,238 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБЩАЯ РЕАЛИЗАЦИЯ ОБРАБОТКИ СООБЩЕНИЙ УПРАВЛЕНИЯ ДОПОЛНИТЕЛЬНЫМИ ОТЧЕТАМИ И ОБРАБОТКАМИ +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Обработка входящих сообщений с типом {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}InstallExtension +// +// Параметры: +// ОписаниеИнсталляции - Структура, ключи: +// Идентификатор - УникальныйИдентификатор, уникальный идентификатор ссылки +// элемента справочника ПоставляемыеДополнительныеОтчетыИОбработки, +// Представление - строка, представление инсталляции поставляемой дополнительной +// обработки (будет использоваться в качестве наименования элемента справочника +// ДополнительныеОтчетыИОбработки), +// Инсталляция - УникальныйИдентификатор, уникальный идентификатор инсталляции +// поставляемой дополнительной обработки (будет использоваться в качестве +// уникального идентификатора ссылки справочника ДополнительныеОтчетыИОбработки), +// НастройкиКоманд - ТаблицаЗначений, содержащая настройки команд для инсталляции +// поставляемой дополнительной обработки, колонки: +// Идентификатор - строка, идентификатор команды, +// БыстрыйДоступ - Массив(УникальныйИдентификатор), массив уникальный идентификаторов, +// определяющих пользователей сервиса, которым команда должна быть включена в +// быстрый доступ, +// Расписание - РасписаниеРегламентногоЗадания, расписание для задания команды +// дополнительной обработки (если для команды включено выполнение в качестве +// регламентного задания), +// Разделы - ТаблицаЗначений, содержащая настройки включения команд для инсталляции +// поставляемой дополнительной обработки в разделы командного интерфейса, колонки: +// Раздел - СправочникСсылка.ИдентификаторыОбъектовМетаданных, +// СправочникиИДокументы - ТаблицаЗначений, содержащая настройки включения команд для инсталляции +// поставляемой дополнительной обработки в интерфейс форм список и элементов, колонки: +// ОбъектНазначения - СправочникСсылка.ИдентификаторыОбъектовМетаданных, +// ВариантыДополнительногоОтчета - Массив(Строка), массив, содержащий ключи вариантов отчетов +// дополнительного отчета, +// ИдентификаторПользователяСервиса - УникальныйИдентификатор, определяющий пользователя +// сервиса, который инициировал инсталляцию поставляемой дополнительной обработки. +// +Процедура УстановитьДополнительныйОтчетИлиОбработку(Знач ОписаниеИнсталляции, + Знач НастройкиКоманд, Знач НастройкиРасположенияКоманд, Знач Разделы, Знач СправочникиИДокументы, Знач ВариантыДополнительногоОтчета, + Знач ИдентификаторПользователяСервиса) Экспорт + + // Настройки заполняются по данным из сообщения + БыстрыйДоступ = Новый ТаблицаЗначений(); + БыстрыйДоступ.Колонки.Добавить("ИдентификаторКоманды", Новый ОписаниеТипов("Строка")); + БыстрыйДоступ.Колонки.Добавить("Пользователь", Новый ОписаниеТипов("СправочникСсылка.Пользователи")); + + Задания = Новый ТаблицаЗначений(); + Задания.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); + Задания.Колонки.Добавить("РегламентноеЗаданиеРасписание", Новый ОписаниеТипов("СписокЗначений")); + Задания.Колонки.Добавить("РегламентноеЗаданиеИспользование", Новый ОписаниеТипов("Булево")); + + Для Каждого НастройкаКоманды Из НастройкиКоманд Цикл + + Если ЗначениеЗаполнено(НастройкаКоманды.БыстрыйДоступ) Тогда + + Для Каждого ИдентификаторПользователя Из НастройкаКоманды.БыстрыйДоступ Цикл + + ТекстЗапроса = "ВЫБРАТЬ + | Пользователи.Ссылка + |ИЗ + | Справочник.Пользователи КАК Пользователи + |ГДЕ + | Пользователи.ИдентификаторПользователяСервиса = &ИдентификаторПользователяСервиса"; + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("ИдентификаторПользователяСервиса", ИдентификаторПользователя); + Результат = Запрос.Выполнить(); + Если Результат.Пустой() Тогда + + Продолжить; + + Иначе + + Выборка = Результат.Выбрать(); + Выборка.Следующий(); + ЭлементБыстрогоДоступа = БыстрыйДоступ.Добавить(); + ЭлементБыстрогоДоступа.ИдентификаторКоманды = НастройкаКоманды.Идентификатор; + ЭлементБыстрогоДоступа.Пользователь = Выборка.Ссылка; + + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + Если НастройкаКоманды.Расписание <> Неопределено Тогда + + Задание = Задания.Добавить(); + Задание.Идентификатор = НастройкаКоманды.Идентификатор; + РегламентноеЗаданиеРасписание = Новый СписокЗначений(); + РегламентноеЗаданиеРасписание.Добавить(НастройкаКоманды.Расписание); + Задание.РегламентноеЗаданиеРасписание= РегламентноеЗаданиеРасписание; + Задание.РегламентноеЗаданиеИспользование = Истина; + + КонецЕсли; + + КонецЦикла; + + ДополнительныеОтчетыИОбработкиВМоделиСервиса.УстановитьПоставляемуюОбработкуВОбластьДанных( + ОписаниеИнсталляции, + БыстрыйДоступ, + Задания, + Разделы, + СправочникиИДокументы, + НастройкиРасположенияКоманд, + ВариантыДополнительногоОтчета, + ПолучитьПользователяОбластиПоИдентификаторуПользователяСервиса( + ИдентификаторПользователяСервиса)); + +КонецПроцедуры + +// Обработка входящих сообщений с типом {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}DeleteExtension +// +// Параметры: +// ИдентификаторПоставляемойОбработки - УникальныйИдентификатор, ссылка на элемент +// справочника ПоставляемыеДополнительныеОтчетыИОбработки; +// ИдентификаторИспользуемойОбработки - УникальныйИдентификатор, ссылка на элемент +// справочника ДополнительныеОтчетыИОбработки. +// +Процедура УдалитьДополнительныйОтчетИлиОбработку(Знач ИдентификаторПоставляемойОбработки, Знач ИдентификаторИспользуемойОбработки) Экспорт + + ПоставляемаяОбработка = Справочники.ПоставляемыеДополнительныеОтчетыИОбработки.ПолучитьСсылку( + ИдентификаторПоставляемойОбработки); + + ДополнительныеОтчетыИОбработкиВМоделиСервиса.УдалитьПоставляемуюОбработкуИзОбластиДанных( + ПоставляемаяОбработка, + ИдентификаторИспользуемойОбработки); + +КонецПроцедуры + +// Обработка входящих сообщений с типом {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}DisableExtension +// +// Параметры: +// ИдентификаторРасширения - УникальныйИдентификатор, ссылка на элемент +// справочника ПоставляемыеДополнительныеОтчетыИОбработки +// +Процедура ОтключитьДополнительныйОтчетИлиОбработку(Знач ИдентификаторРасширения) Экспорт + + УстановитьПривилегированныйРежим(Истина); + ПоставляемаяОбработка = Справочники.ПоставляемыеДополнительныеОтчетыИОбработки.ПолучитьСсылку( + ИдентификаторРасширения); + + Если ОбщегоНазначения.СсылкаСуществует(ПоставляемаяОбработка) Тогда + + Объект = ПоставляемаяОбработка.ПолучитьОбъект(); + + Объект.Публикация = + Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Отключена; + Объект.ПричинаОтключения = + Перечисления.ПричиныОтключенияДополнительныхОтчетовИОбработокВМоделиСервиса.БлокировкаАдминистраторомСервиса; + + Объект.Записать(); + КонецЕсли; + +КонецПроцедуры + +// Обработка входящих сообщений с типом {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}EnableExtension +// +// Параметры: +// ИдентификаторРасширения - УникальныйИдентификатор, ссылка на элемент +// справочника ПоставляемыеДополнительныеОтчетыИОбработки +// +Процедура ВключитьДополнительныйОтчетИлиОбработку(Знач ИдентификаторРасширения) Экспорт + + УстановитьПривилегированныйРежим(Истина); + ПоставляемаяОбработка = Справочники.ПоставляемыеДополнительныеОтчетыИОбработки.ПолучитьСсылку( + ИдентификаторРасширения); + + Если ОбщегоНазначения.СсылкаСуществует(ПоставляемаяОбработка) Тогда + + Объект = ПоставляемаяОбработка.ПолучитьОбъект(); + + Объект.Публикация = + Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.Используется; + + Объект.Записать(); + КонецЕсли; + +КонецПроцедуры + +// Обработка входящих сообщений с типом {http://www.1c.ru/1cFresh/ApplicationExtensions/Management/a.b.c.d}DropExtension +// +// Параметры: +// ИдентификаторРасширения - УникальныйИдентификатор, ссылка на элемент +// справочника ПоставляемыеДополнительныеОтчетыИОбработки +// +Процедура ОтозватьДополнительныйОтчетИлиОбработку(Знач ИдентификаторПоставляемойОбработки) Экспорт + + УстановитьПривилегированныйРежим(Истина); + ПоставляемаяОбработка = Справочники.ПоставляемыеДополнительныеОтчетыИОбработки.ПолучитьСсылку( + ИдентификаторПоставляемойОбработки); + + Если ОбщегоНазначения.СсылкаСуществует(ПоставляемаяОбработка) Тогда + ДополнительныеОтчетыИОбработкиВМоделиСервиса.ОтозватьПоставляемуюДополнительнуюОбработку( + ПоставляемаяОбработка); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +Функция ПолучитьПользователяОбластиПоИдентификаторуПользователяСервиса(Знач ИдентификаторПользователяСервиса) + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | Пользователи.Ссылка КАК Ссылка + |ИЗ + | Справочник.Пользователи КАК Пользователи + |ГДЕ + | Пользователи.ИдентификаторПользователяСервиса = &ИдентификаторПользователяСервиса"; + Запрос.УстановитьПараметр("ИдентификаторПользователяСервиса", ИдентификаторПользователяСервиса); + + Блокировка = Новый БлокировкаДанных; + ЭлементБлокировки = Блокировка.Добавить("Справочник.Пользователи"); + + НачатьТранзакцию(); + Попытка + Блокировка.Заблокировать(); + Результат = Запрос.Выполнить(); + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + Если Результат.Пустой() Тогда + ШаблонСообщения = НСтр("ru = 'Не найден пользователь с идентификатором пользователя сервиса %1'"); + ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, ИдентификаторПользователяСервиса); + ВызватьИсключение(ТекстСообщения); + КонецЕсли; + + Возврат Результат.Выгрузить()[0].Ссылка; + +КонецФункции diff --git a/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.mdo b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.mdo new file mode 100644 index 000000000..5eecad9d0 --- /dev/null +++ b/SSL/src/CommonModules/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация/СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="5ee4b3ee-b795-48c1-9bad-f4010b559b0e"> + <name>СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация</name> + <synonym> + <key>ru</key> + <value>Сообщения управления дополнительными отчетами и обработками реализация</value> + </synonym> + <server>true</server> + <externalConnection>true</externalConnection> + <clientOrdinaryApplication>true</clientOrdinaryApplication> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/СообщенияУправленияПриложениямиИнтерфейс/Module.bsl b/SSL/src/CommonModules/СообщенияУправленияПриложениямиИнтерфейс/Module.bsl index 2a36122b6..b3dccfc60 100644 --- a/SSL/src/CommonModules/СообщенияУправленияПриложениямиИнтерфейс/Module.bsl +++ b/SSL/src/CommonModules/СообщенияУправленияПриложениямиИнтерфейс/Module.bsl @@ -67,7 +67,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Функция СоздатьТипСообщения(Знач ИспользуемыйПакет = Неопределено, Знач Тип) +Функция СоздатьТипСообщения(Знач ИспользуемыйПакет, Знач Тип) Если ИспользуемыйПакет = Неопределено Тогда ИспользуемыйПакет = Пакет(); diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl index 9022aa329..f97dcb25e 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыВызовСервера/Module.bsl @@ -37,6 +37,8 @@ ПараметрыКлиента.Вставить("ПараметрЗапуска", Параметры.ПараметрЗапуска); ПараметрыКлиента.Вставить("СтрокаСоединенияИнформационнойБазы", Параметры.СтрокаСоединенияИнформационнойБазы); ПараметрыКлиента.Вставить("ПривилегированныйРежимУстановленПриЗапуске", ПривилегированныйРежимУстановленПриЗапуске); + ПараметрыКлиента.Вставить("ЭтоВебКлиент", Параметры.ЭтоВебКлиент); + ПараметрыКлиента.Вставить("ЭтоLinuxКлиент", Параметры.ЭтоLinuxКлиент); ПараметрыСеанса.ПараметрыКлиентаНаСервере = Новый ФиксированноеСоответствие(ПараметрыКлиента); КонецЕсли; УстановитьПривилегированныйРежим(Ложь); @@ -215,3 +217,14 @@ КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// Работа с предопределенными данными + +// Получает ссылку предопределенного элемента по его полному имени. +// Подробнее - см. ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент(); +// +Функция ПредопределенныйЭлемент(Знач ПолноеИмяПредопределенного) Экспорт + + Возврат СтандартныеПодсистемыПовтИсп.ПредопределенныйЭлемент(ПолноеИмяПредопределенного); + +КонецФункции diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl index a61496e97..265396da4 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыКлиент/Module.bsl @@ -38,16 +38,30 @@ ЗаголовокПриложения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, СокрЛП(ПредставлениеЗаголовка), ПредставлениеПользователя, ПредставлениеКонфигурации); КонецЕсли; - - УстановитьЗаголовокПриложения(ЗаголовокПриложения); Иначе ШаблонЗаголовка = "%1 / %2"; ЗаголовокПриложения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, НСтр("ru = 'Не установлены разделители'"), ПараметрыКлиента.ПодробнаяИнформация); - - УстановитьЗаголовокПриложения(ЗаголовокПриложения); КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + +#Если ВебКлиент Тогда + Результат = Вычислить("УстановитьЗаголовокКлиентскогоПриложения(ЗаголовокПриложения)"); +#Иначе + Выполнить("УстановитьЗаголовокКлиентскогоПриложения(ЗаголовокПриложения)"); +#КонецЕсли + + Иначе + +#Если ВебКлиент Тогда + Результат = Вычислить("УстановитьЗаголовокПриложения(ЗаголовокПриложения)"); +#Иначе + Выполнить("УстановитьЗаголовокПриложения(ЗаголовокПриложения)"); +#КонецЕсли + + КонецЕсли; + КонецПроцедуры // Отключает выдачу предупреждения пользователю при завершении работы программы. @@ -173,7 +187,7 @@ // |- Текст (Строка) // |- ТекстОшибок (Строка) Необязательный. Тексты ошибок, которые при желании может просмотреть пользователь. // |- ПутьКРеквизитуФормы (Строка) Необязательный. Путь к реквизиту формы, значение которого вызывало ошибку. -// |- ОповещениеФорм (Структура) см. справку к методу глобального контекста Оповестить(). +// |- ОповещениеФорм (Структура, Массив из Структура) см. справку к методу глобального контекста Оповестить(). // |- Использование (Булево) Оповещать открытые формы. // |- ИмяСобытия (Строка) Имя события, которое используется для первичной идентификации сообщений принимающими формами. // |- Параметр (*) Набор данных, которые используются принимающей формой для обновления состава. @@ -251,8 +265,19 @@ КонецЕсли; КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") И Результат.ОповещениеФорм.Использование Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); + Если Результат.Свойство("ОповещениеФорм") Тогда + Если ТипЗнч(Результат.ОповещениеФорм) = Тип("Структура") Или ТипЗнч(Результат.ОповещениеФорм) = Тип("ФиксированнаяСтруктура") Тогда + ОповещениеФорм = Результат.ОповещениеФорм; + Если ОповещениеФорм.Использование Тогда + Оповестить(ОповещениеФорм.ИмяСобытия, ОповещениеФорм.Параметр, ОповещениеФорм.Источник); + КонецЕсли; + Иначе + Для Каждого ОповещениеФорм Из Результат.ОповещениеФорм Цикл + Если ОповещениеФорм.Использование Тогда + Оповестить(ОповещениеФорм.ИмяСобытия, ОповещениеФорм.Параметр, ОповещениеФорм.Источник); + КонецЕсли; + КонецЦикла; + КонецЕсли; КонецЕсли; Если Результат.Свойство("ОповещениеДинамическихСписков") И Результат.ОповещениеДинамическихСписков.Использование Тогда @@ -276,11 +301,11 @@ // ПарольПользователяСервиса - Строка - пароль пользователя сервиса // Отказ - Булево - флаг отказа от выполнения действия // -Процедура ПриЗапросеПароляДляАутентификацииВСервисе(ПарольПользователяСервиса, Отказ) Экспорт +Процедура ПриЗапросеПароляДляАутентификацииВСервисе(ВладелецФормы, ПарольПользователяСервиса = Неопределено, ПарольЕщёНеВведен = Ложь) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервисаКлиент"); - Модуль.ЗапроситьПарольДляАутентификацииВСервисе(ПарольПользователяСервиса, Отказ); + МодульПользователиСлужебныйВМоделиСервисаКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервисаКлиент"); + МодульПользователиСлужебныйВМоделиСервисаКлиент.ЗапроситьПарольДляАутентификацииВСервисе(ВладелецФормы, ПарольПользователяСервиса, ПарольЕщёНеВведен); КонецЕсли; КонецПроцедуры @@ -301,6 +326,7 @@ Если Отказ Тогда Возврат; КонецЕсли; + // Конец СтандартныеПодсистемы.БазоваяФункциональность ОтметитьПервыйЗапросПараметровРаботыКлиентаПриЗапуске(); ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); @@ -318,13 +344,32 @@ Возврат; КонецЕсли; + ОбновитьПараметрыКлиента = Ложь; + + // СтандартныеПодсистемы.ОбменДанными + Если ПараметрыКлиента.ИменаПодсистем.Получить("СтандартныеПодсистемы.ОбменДанными") <> Неопределено Тогда + МодульОбменДаннымиКлиент = Вычислить("ОбменДаннымиКлиент"); + МодульОбменДаннымиКлиент.ПередНачаломРаботыСистемы(Отказ, ПараметрыКлиента, ОбновитьПараметрыКлиента); + Если Отказ Тогда + Возврат; + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.ОбменДанными + + // СтандартныеПодсистемы.БазоваяФункциональность Если ПараметрыКлиента.НеобходимоОбновлениеПараметровРаботыПрограммы Тогда + ОбновитьПараметрыКлиента = Истина; // Параметры работы программы должны быть обновлены до продолжения работы. ЗагрузитьОбновитьПараметрыРаботыПрограммы(Отказ, ПараметрыКлиента); Если Отказ Тогда Возврат; КонецЕсли; КонецЕсли; + + Если ОбновитьПараметрыКлиента Тогда + ОбновитьПовторноИспользуемыеЗначения(); + ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); + КонецЕсли; // Конец СтандартныеПодсистемы.БазоваяФункциональность // СтандартныеПодсистемы.Пользователи @@ -350,18 +395,6 @@ // СтандартныеПодсистемы.БазоваяФункциональность УстановитьРасширенныйЗаголовокПриложения(Истина); // Для вспомогательных окон. - - // Для толстого клиента в режиме обычного приложения логика выполняется - // в обработчике "ПриНачалеРаботыСистемы". - // - // В остальных случаях - в обработчике "ПередНачаломРаботыСистемы". -#Если НЕ ТолстыйКлиентОбычноеПриложение Тогда - ВерсияАктуальна = ПроверитьВерсиюПлатформыПриЗапуске(); - Если Не ВерсияАктуальна Тогда - Отказ = Истина; - Возврат; - КонецЕсли; -#КонецЕсли // Конец СтандартныеПодсистемы.БазоваяФункциональность // СтандартныеПодсистемы.ЗавершениеРаботыПользователей @@ -376,30 +409,6 @@ КонецЕсли; // Конец СтандартныеПодсистемы.ЗавершениеРаботыПользователей -#Если НЕ ТолстыйКлиентОбычноеПриложение Тогда - // СтандартныеПодсистемы.ОбновлениеВерсииИБ - ОбновлениеИБДоступно = Истина; - // Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ - - // СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует( - "СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления") Тогда - - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПроверкаЛегальностиПолученияОбновленияКлиент"); - ОбновлениеИБДоступно = Модуль.ПроверитьЛегальностьПолученияОбновленияПриЗапуске(); - КонецЕсли; - // Конец СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления - - // СтандартныеПодсистемы.ОбновлениеВерсииИБ - Если ОбновлениеИБДоступно Тогда - ОбновлениеИнформационнойБазыКлиент.ОбновитьИнформационнуюБазу(Отказ, Истина); - Если Отказ Тогда - Возврат; - КонецЕсли; - КонецЕсли; - // Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ -#КонецЕсли - // СтандартныеПодсистемы.БазоваяФункциональность ОбработчикиСобытия = ОбщегоНазначенияКлиент.ОбработчикиСлужебногоСобытия( "СтандартныеПодсистемы.БазоваяФункциональность\ПередНачаломРаботыСистемы"); @@ -419,58 +428,43 @@ // либо в локальном режиме работы. // Соответствует обработчику ПриНачалеРаботыСистемы. // -// Параметры: -// ОбработкаПараметровЗапуска - Булево. -// Истина - обработчик вызван при обычном входе пользователя -// в систему и обработка параметров запуска будет выполнена. -// Ложь - обработчик вызван при входе неразделенного пользователя -// в область данных и обработка параметров запуска будет пропущена. -// -Процедура ДействияПриНачалеРаботыСистемы(ОбработкаПараметровЗапуска = Истина) Экспорт +Процедура ДействияПриНачалеРаботыСистемы() Экспорт // СтандартныеПодсистемы.БазоваяФункциональность УстановитьРасширенныйЗаголовокПриложения(Истина); // Для главного окна. - - // Для толстого клиента в режиме обычного приложения логика выполняется - // в обработчике "ПриНачалеРаботыСистемы". - // - // В остальных случаях - в обработчике "ПередНачаломРаботыСистемы". -#Если ТолстыйКлиентОбычноеПриложение Тогда - ВерсияАктуальна = ПроверитьВерсиюПлатформыПриЗапуске(); - Если Не ВерсияАктуальна Тогда - Отказ = Истина; - Возврат; - КонецЕсли; // Конец СтандартныеПодсистемы.БазоваяФункциональность - // СтандартныеПодсистемы.ОбновлениеВерсииИБ - ОбновлениеИБДоступно = Истина; - // Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ - // СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует( "СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПроверкаЛегальностиПолученияОбновленияКлиент"); - ОбновлениеИБДоступно = Модуль.ПроверитьЛегальностьПолученияОбновленияПриЗапуске(); + МодульПроверкаЛегальностиПолученияОбновленияКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПроверкаЛегальностиПолученияОбновленияКлиент"); + МодульПроверкаЛегальностиПолученияОбновленияКлиент.ПроверитьЛегальностьПолученияОбновленияПриЗапуске(); КонецЕсли; // Конец СтандартныеПодсистемы.ПроверкаЛегальностиПолученияОбновления - // СтандартныеПодсистемы.ОбновлениеВерсииИБ - Если ОбновлениеИБДоступно Тогда - Отказ = Ложь; - ОбновлениеИнформационнойБазыКлиент.ОбновитьИнформационнуюБазу(Отказ, Истина); - Если Отказ Тогда - Возврат; - КонецЕсли; + ВерсияАктуальна = ПроверитьВерсиюПлатформыПриЗапуске(); + Если ВерсияАктуальна Тогда + // СтандартныеПодсистемы.ОбновлениеВерсииИБ + ОбновлениеИнформационнойБазыКлиент.ОбновитьИнформационнуюБазу(, Истина); + // Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ + Иначе + // В противном случае, если версия не актуальна, то обновление информационной базы + // будет выполнено только после подтверждения пользователем. + // См. процедуру ПродолжитьРаботу модуля формы Обработка.НерекомендуемаяВерсияПлатформы.Форма.НерекомендуемаяВерсияПлатформы КонецЕсли; - // Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ -#КонецЕсли +КонецПроцедуры + +// Только для внутреннего использования. +// +Процедура ЗавершающиеДействияПриНачалеРаботыСистемы() Экспорт + + ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); // СтандартныеПодсистемы.БазоваяФункциональность // Обработка параметров запуска системы. - Если ОбработкаПараметровЗапуска И НЕ ОбработатьПараметрыЗапуска() Тогда + Если НЕ ОбработатьПараметрыЗапуска() Тогда Возврат; КонецЕсли; // Конец СтандартныеПодсистемы.БазоваяФункциональность @@ -501,12 +495,18 @@ "СтандартныеПодсистемы.БазоваяФункциональность\ПриНачалеРаботыСистемы"); Для каждого Обработчик Из ОбработчикиСобытия Цикл - Обработчик.Модуль.ПриНачалеРаботыСистемы(ОбработкаПараметровЗапуска); + Обработчик.Модуль.ПриНачалеРаботыСистемы(); КонецЦикла; - ОбщегоНазначенияКлиентПереопределяемый.ПриНачалеРаботыСистемы(ОбработкаПараметровЗапуска); + ОбщегоНазначенияКлиентПереопределяемый.ПриНачалеРаботыСистемы(); // Конец СтандартныеПодсистемы.БазоваяФункциональность + // СтандартныеПодсистемы.ОбновлениеВерсииИБ + Если Не ПараметрыКлиента.РазделениеВключено И ПараметрыКлиента.ПроверитьЛегальностьПолученияОбновления = Ложь Тогда + ОбновлениеИнформационнойБазыКлиент.ПодключитьОбработчикПроверкиСтатусаОтложенногоОбновления(); + КонецЕсли; + // Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ + КонецПроцедуры // Обработать параметры запуска программы. @@ -562,6 +562,12 @@ Возврат; КонецЕсли; + // Если перед завершение работы есть незаписанные сообщения для журнала регистрации, + // накопленные в переменной, то их необходимо записать + Если ТипЗнч(СообщенияДляЖурналаРегистрации) = Тип("СписокЗначений") И СообщенияДляЖурналаРегистрации.Количество() <> 0 Тогда + ОбщегоНазначенияВызовСервера.ЗаписатьСобытияВЖурналРегистрации(СообщенияДляЖурналаРегистрации); + КонецЕсли; + Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ДоступноИспользованиеРазделенныхДанных Тогда ОткрытьФормуПредупрежденийПриЗавершенииРаботы(Отказ); КонецЕсли; @@ -592,8 +598,7 @@ КодВозвратаДиалога.Да, НСтр("ru = 'Завершение работы'"), КодВозвратаДиалога.Нет, - БольшеНеЗадаватьЭтотВопрос - ); + БольшеНеЗадаватьЭтотВопрос); Если БольшеНеЗадаватьЭтотВопрос Тогда СтандартныеПодсистемыВызовСервера.СохранитьНастройкуПодтвержденияПриЗавершенииПрограммы(НЕ БольшеНеЗадаватьЭтотВопрос); @@ -613,19 +618,18 @@ // Функция ПроверитьВерсиюПлатформыПриЗапуске() Экспорт - Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске().РазделениеВключено Тогда + ПараметрыРаботы = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); + Если ПараметрыРаботы.РазделениеВключено Тогда Возврат Истина; КонецЕсли; // Определяем минимальную версию платформы для запуска и логику входа в программу - ПараметрыРаботы = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); - Если ТипЗнч(ПараметрыРаботы.АвторизованныйПользователь) = Тип("СправочникСсылка.ВнешниеПользователи") Тогда Возврат Истина; - Иначе - Возврат ПроверитьВерсиюПлатформы(ПараметрыРаботы.МинимальноНеобходимаяВерсияПлатформы, ПараметрыРаботы.РаботаВПрограммеЗапрещена); КонецЕсли; + Возврат ПроверитьВерсиюПлатформы(ПараметрыРаботы.МинимальноНеобходимаяВерсияПлатформы, ПараметрыРаботы.РаботаВПрограммеЗапрещена); + КонецФункции // Проверяет минимально допустимую версию платформы для запуска. @@ -671,16 +675,20 @@ Параметры.Вставить("ТекстСообщения", ТекстСообщения); Параметры.Вставить("ЗавершитьРаботу", РаботаВПрограммеЗапрещена); Параметры.Вставить("РекомендуемаяВерсияПлатформы", РекомендуемаяВерсияПлатформы); - Результат = ОткрытьФормуМодально("Обработка.НерекомендуемаяВерсияПлатформы.Форма.НерекомендуемаяВерсияПлатформы", Параметры); - Если РаботаВПрограммеЗапрещена Тогда - ПрекратитьРаботуСистемы(); - Возврат Ложь; - ИначеЕсли Результат = КодВозвратаДиалога.OK Тогда - ПрекратитьРаботуСистемы(); - Возврат Ложь; + Параметры.Вставить("ОткрытаПоСценарию", Истина); + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Результат = ОткрытьФорму("Обработка.НерекомендуемаяВерсияПлатформы.Форма.НерекомендуемаяВерсияПлатформы", Параметры); + Иначе + Результат = ОткрытьФормуМодально("Обработка.НерекомендуемаяВерсияПлатформы.Форма.НерекомендуемаяВерсияПлатформы", Параметры); КонецЕсли; - Возврат Истина; + // Если форма сегодня уже была показана - пропускаем проверку. + Если Результат = Неопределено Тогда + Возврат Истина; + КонецЕсли; + + Возврат Ложь; КонецФункции @@ -692,6 +700,11 @@ // Процедура ОткрытьФормуПредупрежденийПриЗавершенииРаботы(Отказ) Экспорт + // В веб-клиенте не выводится список предупреждений. +#Если ВебКлиент Тогда + Возврат; +#КонецЕсли + Если ПропуститьПредупреждениеПередЗавершениемРаботыСистемы = Истина Тогда Возврат; КонецЕсли; @@ -917,16 +930,21 @@ Процедура ЗагрузитьОбновитьПараметрыРаботыПрограммы(Отказ, ПараметрыКлиента) - Если ПараметрыКлиента.Свойство("ПодтвердитьНастройкиЗагрузкиСообщенияВПодчиненномУзлеРИБ") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиКлиент"); - Модуль.ПодтвердитьНастройкиЗагрузкиСообщенияВПодчиненномУзлеРИБ(ПараметрыКлиента.ГлавныйУзел); - КонецЕсли; - - Модуль = Неопределено; - Если ПараметрыКлиента.ИнформационнаяБазаФайловая - И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда + МодульСоединенияИБКлиент = Неопределено; + Если ПараметрыКлиента.ИнформационнаяБазаФайловая Тогда + // ВАЖНО: + // В этой процедуре нельзя использовать функции ПодсистемаСуществует и ОбщийМодуль, + // т.к. из них будет вызвана функция СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске() + // которая будет выполнятся не в режиме ПервыйЗапросПараметров, что потенциально ведет к ошибке. - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СоединенияИБКлиент"); + // Проверка существования подсистемы. + ПодсистемаСуществует = ПараметрыКлиента.ИменаПодсистем.Получить( + "СтандартныеПодсистемы.ЗавершениеРаботыПользователей") <> Неопределено; + + Если ПодсистемаСуществует Тогда + // Получение общего модуля по имени. + МодульСоединенияИБКлиент = Вычислить("СоединенияИБКлиент"); + КонецЕсли; КонецЕсли; СнятьБлокировкуФайловойБазы = Ложь; @@ -942,13 +960,13 @@ Прервать; КонецЕсли; - Если Модуль = Неопределено Тогда + Если МодульСоединенияИБКлиент = Неопределено Тогда Предупреждение(ОшибкаУстановкиМонопольногоРежима); Отказ = Истина; Возврат; КонецЕсли; - Модуль.ПриОткрытииФормыОшибкиУстановкиМонопольногоРежима(Отказ); + МодульСоединенияИБКлиент.ПриОткрытииФормыОшибкиУстановкиМонопольногоРежима(Отказ); Если Отказ Тогда Если СнятьБлокировкуФайловойБазы Тогда ОбновлениеИнформационнойБазыВызовСервера.СнятьБлокировкуФайловойБазы(); @@ -968,11 +986,6 @@ ОбновлениеИнформационнойБазыВызовСервера.СнятьБлокировкуФайловойБазы(); КонецЕсли; - Состояние(НСтр("ru = 'Подготовка к обновлению информационной базы выполнена успешно.'")); - - ОбновитьПовторноИспользуемыеЗначения(); - ПараметрыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиентаПриЗапуске(); - КонецПроцедуры Процедура ОтметитьПервыйЗапросПараметровРаботыКлиентаПриЗапуске() diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыКлиентПовтИсп/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыКлиентПовтИсп/Module.bsl index 337c142bc..07997dbc7 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыКлиентПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыКлиентПовтИсп/Module.bsl @@ -29,10 +29,22 @@ ПараметрыРаботыКлиентаПриОбновлении.Удалить("ПервыйЗапросПараметров"); КонецЕсли; +#Если ВебКлиент Тогда + ЭтоВебКлиент = Истина; +#Иначе + ЭтоВебКлиент = Ложь; +#КонецЕсли + + СистемнаяИнформация = Новый СистемнаяИнформация; + ЭтоLinuxКлиент = СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 + ИЛИ СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64; + Параметры = Новый Структура; Параметры.Вставить("ПервыйЗапросПараметров", ПервыйЗапросПараметров); Параметры.Вставить("ПараметрЗапуска", ПараметрЗапуска); Параметры.Вставить("СтрокаСоединенияИнформационнойБазы", СтрокаСоединенияИнформационнойБазы()); + Параметры.Вставить("ЭтоВебКлиент", ЭтоВебКлиент); + Параметры.Вставить("ЭтоLinuxКлиент", ЭтоLinuxКлиент); Возврат СтандартныеПодсистемыВызовСервера.ПараметрыРаботыКлиентаПриЗапуске(Параметры); @@ -101,6 +113,18 @@ КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Работа с предопределенными данными + +// Получает ссылку предопределенного элемента по его полному имени. +// Подробнее - см. ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент(); +// +Функция ПредопределенныйЭлемент(Знач ПолноеИмяПредопределенного) Экспорт + + Возврат СтандартныеПодсистемыВызовСервера.ПредопределенныйЭлемент(ПолноеИмяПредопределенного); + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыКлиентСервер/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыКлиентСервер/Module.bsl index 2c9af7106..0b057a2cd 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыКлиентСервер/Module.bsl @@ -66,3 +66,23 @@ КонецЦикла; КонецЕсли; КонецПроцедуры + +// Добавляет в оповещение для динамических списков типы из массива измененных объектов. +// +// Параметры: +// Результат (Структура) См. СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(). +// ИмяСобытия (Строка) Имя события, которое используется для первичной идентификации сообщений принимающими формами. +// Параметр (*) Набор данных, которые используются принимающей формой для обновления состава. +// Источник (*) Источник оповещения, например форма-источником. +// +Процедура РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, ИмяСобытия, Параметр = Неопределено, Источник = Неопределено) Экспорт + Если Не Результат.Свойство("ОповещениеФорм") Тогда + Результат.Вставить("ОповещениеФорм", Новый Массив); + ИначеЕсли ТипЗнч(Результат.ОповещениеФорм) = Тип("Структура") Тогда // Структуру в массив структур. + ОповещениеФорм = Результат.ОповещениеФорм; + Результат.ОповещениеФорм = Новый Массив; + Результат.ОповещениеФорм.Добавить(ОповещениеФорм); + КонецЕсли; + ОповещениеФорм = Новый Структура("Использование, ИмяСобытия, Параметр, Источник", Истина, ИмяСобытия, Параметр, Источник); + Результат.ОповещениеФорм.Добавить(ОповещениеФорм); +КонецПроцедуры diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl index 4c232e26d..a0dcfaf2d 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыПовтИсп/Module.bsl @@ -23,7 +23,8 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка обновления информационной базы. |Не заполнен параметр базовой функциональности: - |""%1"".'"), + |""%1"".'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), ПредставлениеПараметра); КонецЕсли; @@ -48,7 +49,8 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка обновления информационной базы. |Не заполнен параметр служебных событий: - |""%1"".'"), + |""%1"".'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), ПредставлениеПараметра); КонецЕсли; @@ -240,8 +242,7 @@ // Получаем объекты начального образа ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовНачальногоОбразаПланаОбмена" - ); + "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовНачальногоОбразаПланаОбмена"); Для Каждого Обработчик Из ОбработчикиСобытия Цикл Обработчик.Модуль.ПриПолученииОбъектовНачальногоОбразаПланаОбмена(Объекты); @@ -323,8 +324,8 @@ // // Параметры: // ПолноеИмяОбъектаМетаданных - Строка, например, "Справочник.ВидыНоменклатуры", -// Поддерживаются таблицы для которых доступен -// метод ПолучитьИмяПредопределенного: +// Поддерживаются только таблицы +// с предопределенными элементами: // - Справочники, // - Планы видов характеристик, // - Планы счетов, @@ -340,20 +341,31 @@ Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ - | ТекущаяТаблица.Ссылка КАК Ссылка + | ТекущаяТаблица.Ссылка КАК Ссылка, + | НЕОПРЕДЕЛЕНО КАК ИмяПредопределенныхДанных |ИЗ | &ТекущаяТаблица КАК ТекущаяТаблица |ГДЕ - | ТекущаяТаблица.Предопределенный"; + | ТекущаяТаблица.Предопределенный = ИСТИНА"; + Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекущаяТаблица", ПолноеИмяОбъектаМетаданных); + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕОПРЕДЕЛЕНО", "ТекущаяТаблица.ИмяПредопределенныхДанных"); + Иначе + Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъектаМетаданных); + КонецЕсли; + Выборка = Запрос.Выполнить().Выбрать(); - Менеджер = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъектаМетаданных); ПредопределенныеЗначения = Новый Соответствие; Пока Выборка.Следующий() Цикл - ИмяПредопределенного = Менеджер.ПолучитьИмяПредопределенного(Выборка.Ссылка); + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяПредопределенного = Выборка.ИмяПредопределенныхДанных; + Иначе + ИмяПредопределенного = Менеджер.ПолучитьИмяПредопределенного(Выборка.Ссылка); + КонецЕсли; ПредопределенныеЗначения.Вставить(ИмяПредопределенного, Выборка.Ссылка); КонецЦикла; @@ -376,6 +388,50 @@ КонецФункции +// Возвращает Истина, если конфигурация запущена под управлением платформы 1С:Предприятие 8.3 без использования режима совместимости +// с версией 8.3.2 или более ранней. +// +Функция ЭтоПлатформа83БезРежимаСовместимости() Экспорт + + Информация = Новый СистемнаяИнформация; + Возврат Лев(Информация.ВерсияПриложения, 3) = "8.3" + И (Метаданные.РежимСовместимости = Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать + Или (Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_1 + И Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_2_13 + И Вычислить("Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_2_16") + И Вычислить("Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_3_1") + И Вычислить("Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_3_2"))); + +КонецФункции + +// Только для внутреннего использования. +Функция ОтключитьСправочникИдентификаторыОбъектовМетаданных() Экспорт + + Использовать = НЕ ОбщегоНазначения.ОбщиеПараметрыБазовойФункциональности( + ).ОтключитьСправочникИдентификаторыОбъектовМетаданных; + + Если Использовать Тогда + Возврат Ложь; + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") + ИЛИ ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") + ИЛИ ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РассылкаОтчетов") + ИЛИ ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + + ВызватьИсключение + НСтр("ru = 'Невозможно отключить справочник Идентификаторы объектов метаданных, + |если используется любая из следующих подсистем: + |- ВариантыОтчетов, + |- ДополнительныеОтчетыИОбработки, + |- РассылкаОтчетов, + |- УправлениеДоступом.'"); + КонецЕсли; + + Возврат Истина; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Для обновления справочника ИдентификаторыОбъектовМетаданных @@ -389,6 +445,39 @@ КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Работа с предопределенными данными + +// Получает ссылку предопределенного элемента по его полному имени. +// Подробнее - см. ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент(); +// +Функция ПредопределенныйЭлемент(Знач ПолноеИмяПредопределенного) Экспорт + + ИмяПредопределенного = ВРег(ПолноеИмяПредопределенного); + + Точка = Найти(ИмяПредопределенного, "."); + ИмяКоллекции = Лев(ИмяПредопределенного, Точка - 1); + ИмяПредопределенного = Сред(ИмяПредопределенного, Точка + 1); + + Точка = Найти(ИмяПредопределенного, "."); + ИмяТаблицы = Лев(ИмяПредопределенного, Точка - 1); + ИмяПредопределенного = Сред(ИмяПредопределенного, Точка + 1); + + ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 Ссылка ИЗ &ПолноеИмяТаблицы ГДЕ ИмяПредопределенныхДанных = &ИмяПредопределенного"; + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&ПолноеИмяТаблицы", ИмяКоллекции + "." + ИмяТаблицы); + + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.УстановитьПараметр("ИмяПредопределенного", ИмяПредопределенного); + + Результат = Запрос.Выполнить(); + Если Результат.Пустой() Тогда + Возврат Неопределено; + Иначе + Возврат Результат.Выгрузить()[0].Ссылка; + КонецЕсли; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ diff --git a/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl b/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl index 7e0a71c98..618055e9c 100644 --- a/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl +++ b/SSL/src/CommonModules/СтандартныеПодсистемыСервер/Module.bsl @@ -63,29 +63,29 @@ // СтандартныеПодсистемы.БизнесПроцессыИЗадачи Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.БизнесПроцессыИЗадачи") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БизнесПроцессыИЗадачиСервер"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульБизнесПроцессыИЗадачиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БизнесПроцессыИЗадачиСервер"); + МодульБизнесПроцессыИЗадачиСервер.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.БизнесПроцессыИЗадачи // СтандартныеПодсистемы.КалендарныеГрафики Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.КалендарныеГрафики") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КалендарныеГрафики"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульКалендарныеГрафики = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КалендарныеГрафики"); + МодульКалендарныеГрафики.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.КалендарныеГрафики // СтандартныеПодсистемы.НапоминанияПользователя Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.НапоминанияПользователя") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("НапоминанияПользователяСлужебный"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульНапоминанияПользователяСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("НапоминанияПользователяСлужебный"); + МодульНапоминанияПользователяСлужебный.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.НапоминанияПользователя // СтандартныеПодсистемы.ОбменДанными Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + МодульОбменДаннымиСервер.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.ОбменДанными @@ -99,64 +99,57 @@ // СтандартныеПодсистемы.ПрисоединенныеФайлы Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПрисоединенныеФайлы") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлыСлужебный"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульПрисоединенныеФайлыСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлыСлужебный"); + МодульПрисоединенныеФайлыСлужебный.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.ПрисоединенныеФайлы // СтандартныеПодсистемы.РаботаВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.ВыгрузкаЗагрузкаДанных Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВыгрузкаЗагрузкаДанных") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВыгрузкаЗагрузкаДанных"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульВыгрузкаЗагрузкаДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВыгрузкаЗагрузкаДанных"); + МодульВыгрузкаЗагрузкаДанных.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ВыгрузкаЗагрузкаДанных // СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменСообщениями Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменСообщениями") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменСообщениями"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульОбменСообщениями = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменСообщениями"); + МодульОбменСообщениями.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменСообщениями // СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебный"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульОчередьЗаданийСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебный"); + МодульОчередьЗаданийСлужебный.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий // СтандартныеПодсистемы.РаботаВМоделиСервиса.ПоставляемыеДанные Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПоставляемыеДанные") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПоставляемыеДанные"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульПоставляемыеДанные = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПоставляемыеДанные"); + МодульПоставляемыеДанные.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ПоставляемыеДанные - // СтандартныеПодсистемы.СтруктураПодчиненности - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.СтруктураПодчиненности") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СтруктураПодчиненности"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); - КонецЕсли; - // Конец СтандартныеПодсистемы.СтруктураПодчиненности - // СтандартныеПодсистемы.УправлениеДоступом Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом // СтандартныеПодсистемы.ФайловыеФункции Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ФайловыеФункции") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебный"); - Модуль.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); + МодульФайловыеФункцииСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебный"); + МодульФайловыеФункцииСлужебный.ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия); КонецЕсли; // Конец СтандартныеПодсистемы.ФайловыеФункции @@ -193,276 +186,276 @@ // СтандартныеПодсистемы.АдресныйКлассификатор Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + МодульАдресныйКлассификатор.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.АдресныйКлассификатор // СтандартныеПодсистемы.АнализЖурналаРегистрации Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АнализЖурналаРегистрации") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АнализЖурналаРегистрацииСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульАнализЖурналаРегистрацииСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АнализЖурналаРегистрацииСлужебный"); + МодульАнализЖурналаРегистрацииСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.АнализЖурналаРегистрации // СтандартныеПодсистемы.Анкетирование Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Анкетирование") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("Анкетирование"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульАнкетирование = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("Анкетирование"); + МодульАнкетирование.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.Анкетирование // СтандартныеПодсистемы.Банки Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Банки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСБанками"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульРаботаСБанками = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСБанками"); + МодульРаботаСБанками.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.Банки // СтандартныеПодсистемы.БизнесПроцессыИЗадачи Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.БизнесПроцессыИЗадачи") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БизнесПроцессыИЗадачиСервер"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульБизнесПроцессыИЗадачиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БизнесПроцессыИЗадачиСервер"); + МодульБизнесПроцессыИЗадачиСервер.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.БизнесПроцессыИЗадачи // СтандартныеПодсистемы.Валюты Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Валюты") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСКурсамиВалют"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульРаботаСКурсамиВалют = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСКурсамиВалют"); + МодульРаботаСКурсамиВалют.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.Валюты // СтандартныеПодсистемы.ВариантыОтчетов Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульВариантыОтчетов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВариантыОтчетов"); + МодульВариантыОтчетов.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ВариантыОтчетов // СтандартныеПодсистемы.Взаимодействия Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Взаимодействия") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("Взаимодействия"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеЭлектроннойПочтой"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульВзаимодействия = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("Взаимодействия"); + МодульВзаимодействия.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульУправлениеЭлектроннойПочтой = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеЭлектроннойПочтой"); + МодульУправлениеЭлектроннойПочтой.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.Взаимодействия // СтандартныеПодсистемы.ВерсионированиеОбъектов Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ВерсионированиеОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульВерсионированиеОбъектов = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ВерсионированиеОбъектов"); + МодульВерсионированиеОбъектов.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов // СтандартныеПодсистемы.ДатыЗапретаИзменения Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДатыЗапретаИзменения") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульДатыЗапретаИзмененияСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДатыЗапретаИзмененияСлужебный"); + МодульДатыЗапретаИзмененияСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ДатыЗапретаИзменения // СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки // СтандартныеПодсистемы.ЗавершениеРаботыПользователей Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СоединенияИБ"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульСоединенияИБ = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СоединенияИБ"); + МодульСоединенияИБ.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ЗавершениеРаботыПользователей // СтандартныеПодсистемы.ЗаметкиПользователя Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЗаметкиПользователя") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ЗаметкиПользователяСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульЗаметкиПользователяСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ЗаметкиПользователяСлужебный"); + МодульЗаметкиПользователяСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ЗаметкиПользователя // СтандартныеПодсистемы.ИнформацияПриЗапуске Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ИнформацияПриЗапуске") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнформацияПриЗапуске"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульИнформацияПриЗапуске = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнформацияПриЗапуске"); + МодульИнформацияПриЗапуске.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ИнформацияПриЗапуске // СтандартныеПодсистемы.КалендарныеГрафики Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.КалендарныеГрафики") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КалендарныеГрафики"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульКалендарныеГрафики = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КалендарныеГрафики"); + МодульКалендарныеГрафики.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.КалендарныеГрафики // СтандартныеПодсистемы.ИнформационныйЦентр Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ИнформационныйЦентр") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнформационныйЦентрСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульИнформационныйЦентрСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнформационныйЦентрСлужебный"); + МодульИнформационныйЦентрСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ИнформационныйЦентр // СтандартныеПодсистемы.КонтактнаяИнформация Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.КонтактнаяИнформация") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеКонтактнойИнформацией"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульУправлениеКонтактнойИнформацией = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеКонтактнойИнформацией"); + МодульУправлениеКонтактнойИнформацией.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.КонтактнаяИнформация // СтандартныеПодсистемы.НапоминанияПользователя Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.НапоминанияПользователя") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("НапоминанияПользователяСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульНапоминанияПользователяСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("НапоминанияПользователяСлужебный"); + МодульНапоминанияПользователяСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.НапоминанияПользователя // СтандартныеПодсистемы.ОбновлениеВерсииИБ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеВерсииИБ") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазы"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОбновлениеИнформационнойБазы = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазы"); + МодульОбновлениеИнформационнойБазы.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ // СтандартныеПодсистемы.ОбменДанными Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + МодульОбменДаннымиСервер.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ОбменДанными // СтандартныеПодсистемы.ОбновлениеКонфигурации Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбновлениеКонфигурации") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеКонфигурации"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОбновлениеКонфигурации = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеКонфигурации"); + МодульОбновлениеКонфигурации.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ОбновлениеКонфигурации // СтандартныеПодсистемы.Организации Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Организации") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОрганизацииСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОрганизацииСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОрганизацииСлужебный"); + МодульОрганизацииСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.Организации // СтандартныеПодсистемы.ОценкаПроизводительности Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОценкаПроизводительности") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОценкаПроизводительностиСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОценкаПроизводительностиСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОценкаПроизводительностиСлужебный"); + МодульОценкаПроизводительностиСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ОценкаПроизводительности // СтандартныеПодсистемы.Печать Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Печать") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеПечатью"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульУправлениеПечатью = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеПечатью"); + МодульУправлениеПечатью.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.Печать // СтандартныеПодсистемы.ПолнотекстовыйПоиск Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПолнотекстовыйПоиск") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПолнотекстовыйПоискСервер"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульПолнотекстовыйПоискСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПолнотекстовыйПоискСервер"); + МодульПолнотекстовыйПоискСервер.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ПолнотекстовыйПоиск // СтандартныеПодсистемы.ПолучениеФайловИзИнтернета Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПолучениеФайловИзИнтернета") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПолучениеФайловИзИнтернетаСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульПолучениеФайловИзИнтернетаСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПолучениеФайловИзИнтернетаСлужебный"); + МодульПолучениеФайловИзИнтернетаСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ПолучениеФайловИзИнтернета // СтандартныеПодсистемы.Пользователи Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Пользователи") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульПользователиСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебный"); + МодульПользователиСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.Пользователи // СтандартныеПодсистемы.ПрисоединенныеФайлы Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПрисоединенныеФайлы") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлыСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульПрисоединенныеФайлыСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлыСлужебный"); + МодульПрисоединенныеФайлыСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ПрисоединенныеФайлы // СтандартныеПодсистемы.РаботаВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.АдресныйКлассификаторВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.АдресныйКлассификаторВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификаторСлужебныйВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульАдресныйКлассификаторСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификаторСлужебныйВМоделиСервиса"); + МодульАдресныйКлассификаторСлужебныйВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.АдресныйКлассификаторВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.БанкиВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БанкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БанкиСлужебныйВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульБанкиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БанкиСлужебныйВМоделиСервиса"); + МодульБанкиСлужебныйВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.БанкиВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.ВалютыВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ВалютыВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КурсыВалютСлужебныйВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульКурсыВалютСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КурсыВалютСлужебныйВМоделиСервиса"); + МодульКурсыВалютСлужебныйВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ВалютыВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиВМоделиСервиса"); + МодульДополнительныеОтчетыИОбработкиВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ДополнительныеОтчетыИОбработкиВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.КалендарныеГрафикиВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.КалендарныеГрафикиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КалендарныеГрафикиСлужебныйВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульКалендарныеГрафикиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("КалендарныеГрафикиСлужебныйВМоделиСервиса"); + МодульКалендарныеГрафикиСлужебныйВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.КалендарныеГрафикиВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); + МодульОбменДаннымиВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменСообщениями Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменСообщениями") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменСообщениями"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнтерфейсыСообщенийВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОбменСообщениями = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменСообщениями"); + МодульОбменСообщениями.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульИнтерфейсыСообщенийВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ИнтерфейсыСообщенийВМоделиСервиса"); + МодульИнтерфейсыСообщенийВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменСообщениями // СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса"); + МодульОбновлениеИнформационнойБазыСлужебныйВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбновлениеВерсииИБВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОчередьЗаданий") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОчередьЗаданийСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебный"); + МодульОчередьЗаданийСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); Если ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация() Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульОчередьЗаданийСлужебныйРазделениеДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОчередьЗаданийСлужебныйРазделениеДанных"); + МодульОчередьЗаданийСлужебныйРазделениеДанных.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; КонецЕсли; @@ -470,106 +463,106 @@ // СтандартныеПодсистемы.РаботаВМоделиСервиса.ПоставляемыеДанные Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПоставляемыеДанные") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПоставляемыеДанные"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульПоставляемыеДанные = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПоставляемыеДанные"); + МодульПоставляемыеДанные.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ПоставляемыеДанные // СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеОбластейДанных"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульРезервноеКопированиеОбластейДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеОбластейДанных"); + МодульРезервноеКопированиеОбластейДанных.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных // СтандартныеПодсистемы.РаботаВМоделиСервиса.УдаленноеАдминистрирование Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.УдаленноеАдминистрирование") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УдаленноеАдминистрированиеСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульУдаленноеАдминистрированиеСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УдаленноеАдминистрированиеСлужебный"); + МодульУдаленноеАдминистрированиеСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.УдаленноеАдминистрирование // СтандартныеПодсистемы.РаботаВМоделиСервиса.УправлениеДоступомВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.УправлениеДоступомВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебныйВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульУправлениеДоступомСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебныйВМоделиСервиса"); + МодульУправлениеДоступомСлужебныйВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.УправлениеДоступомВМоделиСервиса // СтандартныеПодсистемы.РаботаВМоделиСервиса.ФайловыеФункцииВМоделиСервиса Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ФайловыеФункцииВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебныйВМоделиСервиса"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульФайловыеФункцииСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебныйВМоделиСервиса"); + МодульФайловыеФункцииСлужебныйВМоделиСервиса.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.ФайловыеФункцииВМоделиСервиса // СтандартныеПодсистемы.РаботаСПочтовымиСообщениями Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСПочтовымиСообщениями"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульРаботаСПочтовымиСообщениями = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСПочтовымиСообщениями"); + МодульРаботаСПочтовымиСообщениями.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаСПочтовымиСообщениями // СтандартныеПодсистемы.РаботаСФайлами Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульРаботаСФайламиСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебный"); + МодульРаботаСФайламиСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РаботаСФайлами // СтандартныеПодсистемы.РегламентныеЗадания Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РегламентныеЗадания") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РегламентныеЗаданияСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульРегламентныеЗаданияСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РегламентныеЗаданияСлужебный"); + МодульРегламентныеЗаданияСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РегламентныеЗадания // СтандартныеПодсистемы.РезервноеКопированиеИБ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РезервноеКопированиеИБ") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеИБСервер"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульРезервноеКопированиеИБСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеИБСервер"); + МодульРезервноеКопированиеИБСервер.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.РезервноеКопированиеИБ // СтандартныеПодсистемы.Свойства Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.Свойства") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеСвойствамиСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульУправлениеСвойствамиСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеСвойствамиСлужебный"); + МодульУправлениеСвойствамиСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.Свойства // СтандартныеПодсистемы.УправлениеДоступом Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + МодульУправлениеДоступомСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеДоступом // СтандартныеПодсистемы.УправлениеИтогамиИАгрегатами Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеИтогамиИАгрегатами") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеИтогамиИАгрегатамиСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульУправлениеИтогамиИАгрегатамиСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеИтогамиИАгрегатамиСлужебный"); + МодульУправлениеИтогамиИАгрегатамиСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.УправлениеИтогамиИАгрегатами // СтандартныеПодсистемы.ФайловыеФункции Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ФайловыеФункции") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебный"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульФайловыеФункцииСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФайловыеФункцииСлужебный"); + МодульФайловыеФункцииСлужебный.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ФайловыеФункции // СтандартныеПодсистемы.ФизическиеЛица Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ФизическиеЛица") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФизическиеЛица"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульФизическиеЛица = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ФизическиеЛица"); + МодульФизическиеЛица.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ФизическиеЛица // СтандартныеПодсистемы.ЭлектроннаяЦифроваяПодпись Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяЦифроваяПодпись") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ЭлектроннаяЦифроваяПодпись"); - Модуль.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); + МодульЭлектроннаяЦифроваяПодпись = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ЭлектроннаяЦифроваяПодпись"); + МодульЭлектроннаяЦифроваяПодпись.ПриДобавленииОбработчиковСлужебныхСобытий(КлиентскиеОбработчики, СерверныеОбработчики); КонецЕсли; // Конец СтандартныеПодсистемы.ЭлектроннаяЦифроваяПодпись @@ -630,35 +623,9 @@ КонецПопытки; КонецЕсли; + БезИзменений = Новый Структура; Попытка - // СтандартныеПодсистемы.БазоваяФункциональность - Константы.ПараметрыСлужебныхСобытий.СоздатьМенеджерЗначения().Обновить(ЕстьИзменения, ТолькоПроверка); - Если ТолькоПроверка И НЕ ЕстьИзменения Тогда - // Проверка только критичных изменений: добавление, удаление или переименование объектов метаданных. - Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(, ЕстьИзменения, ТолькоПроверка, ЕстьИзменения, ЕстьИзменения); - ИначеЕсли НЕ ТолькоПроверка Тогда - Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(ЕстьИзменения); - КонецЕсли; - // Конец СтандартныеПодсистемы.БазоваяФункциональность - - // СтандартныеПодсистемы.Пользователи - Если НЕ (ТолькоПроверка И ЕстьИзменения) Тогда - ПользователиСлужебный.ОбновитьПараметрыРаботыПользователей(ЕстьИзменения, ТолькоПроверка); - КонецЕсли; - // Конец СтандартныеПодсистемы.Пользователи - - // СтандартныеПодсистемы.УправлениеДоступом - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); - Если НЕ (ТолькоПроверка И ЕстьИзменения) Тогда - Модуль.ОбновитьПараметрыОграниченияДоступа(ЕстьИзменения, ТолькоПроверка); - КонецЕсли; - КонецЕсли; - // Конец СтандартныеПодсистемы.УправлениеДоступом - - Если СнятьМонопольныйРежим Тогда - УстановитьМонопольныйРежим(Ложь); - КонецЕсли; + ПроверитьОбновитьПараметрыРаботыПрограммы(ЕстьИзменения, ТолькоПроверка, БезИзменений); Исключение Если СнятьМонопольныйРежим Тогда УстановитьМонопольныйРежим(Ложь); @@ -666,28 +633,38 @@ ВызватьИсключение; КонецПопытки; - Если НЕ НайтиИзменения И ТолькоПроверка И ЕстьИзменения Тогда - Попытка - УстановитьМонопольныйРежим(Истина); - Исключение - ТекстОшибки = - НСтр("ru = 'Невозможно выполнить обновление информационной базы: - |- Невозможно установить монопольный режим - |- Версия конфигурации не предусматривает обновление без установки монопольного режима.'"); - - Если ОшибкаУстановкиМонопольногоРежима = Неопределено Тогда - ВызватьИсключение ТекстОшибки; - Иначе - ОшибкаУстановкиМонопольногоРежима = ТекстОшибки; - Возврат; - КонецЕсли; - КонецПопытки; - Попытка - ОбновитьПараметрыРаботыПрограммы(); - Исключение + Если СнятьМонопольныйРежим Тогда + УстановитьМонопольныйРежим(Ложь); + КонецЕсли; + + Если НЕ НайтиИзменения И ТолькоПроверка Тогда + Если ЕстьИзменения Тогда + Попытка + УстановитьМонопольныйРежим(Истина); + Исключение + ТекстОшибки = + НСтр("ru = 'Невозможно выполнить обновление информационной базы: + |- Невозможно установить монопольный режим + |- Версия конфигурации не предусматривает обновление без установки монопольного режима.'"); + + Если ОшибкаУстановкиМонопольногоРежима = Неопределено Тогда + ВызватьИсключение ТекстОшибки; + Иначе + ОшибкаУстановкиМонопольногоРежима = ТекстОшибки; + Возврат; + КонецЕсли; + КонецПопытки; + Попытка + ОбновитьПараметрыРаботыПрограммы(ЕстьИзменения, Ложь); + Исключение + УстановитьМонопольныйРежим(Ложь); + ВызватьИсключение; + КонецПопытки; УстановитьМонопольныйРежим(Ложь); - ВызватьИсключение; - КонецПопытки; + Иначе + // Монопольный режим не требуется. + ПроверитьОбновитьПараметрыРаботыПрограммы(ЕстьИзменения, Ложь, БезИзменений); + КонецЕсли; КонецЕсли; КонецПроцедуры @@ -718,11 +695,11 @@ // Получаем список обязательных объектов и объектов-исключений ОбязательныеОбъекты = Новый Массив; ОбъектыИсключения = Новый Массив; + ОбъектыНачальногоОбраза = Новый Массив; // Получаем обязательные объекты ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбязательныхОбъектовПланаОбмена" - ); + "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбязательныхОбъектовПланаОбмена"); Для Каждого Обработчик Из ОбработчикиСобытия Цикл ПризнакРаспределеннаяИнформационнаяБаза = РаспределеннаяИнформационнаяБаза; @@ -732,8 +709,7 @@ // Получаем объекты-исключения ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовИсключенийПланаОбмена" - ); + "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовИсключенийПланаОбмена"); Для Каждого Обработчик Из ОбработчикиСобытия Цикл ПризнакРаспределеннаяИнформационнаяБаза = РаспределеннаяИнформационнаяБаза; @@ -745,11 +721,16 @@ // Получаем объекты начального образа ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовНачальногоОбразаПланаОбмена" - ); + "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииОбъектовНачальногоОбразаПланаОбмена"); Для Каждого Обработчик Из ОбработчикиСобытия Цикл - Обработчик.Модуль.ПриПолученииОбъектовНачальногоОбразаПланаОбмена(ОбязательныеОбъекты); + Обработчик.Модуль.ПриПолученииОбъектовНачальногоОбразаПланаОбмена(ОбъектыНачальногоОбраза); + + КонецЦикла; + + Для Каждого Объект Из ОбъектыНачальногоОбраза Цикл + + ОбязательныеОбъекты.Добавить(Объект); КонецЦикла; @@ -778,10 +759,11 @@ КонецЦикла; // Проверяем признак авторегистрации - // Авторегистрация должна быть отключена у всех элементов состава + // Авторегистрация должна быть отключена у всех объектов начального образа Для Каждого ЭлементСостава Из СоставПланаОбмена Цикл - Если ЭлементСостава.АвтоРегистрация <> АвтоРегистрацияИзменений.Запретить Тогда + Если ОбъектыНачальногоОбраза.Найти(ЭлементСостава.Метаданные) <> Неопределено + И ЭлементСостава.АвтоРегистрация <> АвтоРегистрацияИзменений.Запретить Тогда ОтключитьАвторегистрацию.Добавить(ЭлементСостава.Метаданные); @@ -799,8 +781,7 @@ ОписаниеИсключения1 = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'В состав плана обмена %1 должны входить следующие объекты метаданных: %2'"), ИмяПланаОбмена, - СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(ПредставлениеОбъектовМетаданных(ВключитьВСостав), ", ") - ); + СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(ПредставлениеОбъектовМетаданных(ВключитьВСостав), ", ")); КонецЕсли; @@ -809,8 +790,7 @@ ОписаниеИсключения2 = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'В состав плана обмена %1 НЕ должны входить следующие объекты метаданных: %2'"), ИмяПланаОбмена, - СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(ПредставлениеОбъектовМетаданных(ИсключитьИзСостава), ", ") - ); + СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(ПредставлениеОбъектовМетаданных(ИсключитьИзСостава), ", ")); КонецЕсли; @@ -820,8 +800,7 @@ НСтр("ru = 'В составе плана обмена %1 не должно быть объектов с установленным признаком авторегистрации. |Требуется запретить авторегистрацию для следующих объектов метаданных: %2'"), ИмяПланаОбмена, - СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(ПредставлениеОбъектовМетаданных(ОтключитьАвторегистрацию), ", ") - ); + СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок(ПредставлениеОбъектовМетаданных(ОтключитьАвторегистрацию), ", ")); КонецЕсли; @@ -971,8 +950,8 @@ // Вставка кода от подсистемы обмена данными должна быть первой. Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСобытия"); - Модуль.ПриОтправкеДанныхКорреспонденту(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза, Получатель); + МодульОбменДаннымиСобытия = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСобытия"); + МодульОбменДаннымиСобытия.ПриОтправкеДанныхКорреспонденту(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза, Получатель); Если ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать Тогда Возврат; @@ -980,13 +959,11 @@ КонецЕсли; ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.БазоваяФункциональность\ПриОтправкеДанныхПодчиненному" - ); + "СтандартныеПодсистемы.БазоваяФункциональность\ПриОтправкеДанныхПодчиненному"); Для каждого Обработчик Из ОбработчикиСобытия Цикл Обработчик.Модуль.ПриОтправкеДанныхПодчиненному( - ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза, Получатель - ); + ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза, Получатель); Если ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать Тогда Возврат; КонецЕсли; @@ -994,8 +971,8 @@ // Вставка кода от подсистемы обмена данными в модели сервиса должна быть последней. Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ОбменДаннымиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); - Модуль.ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза, Получатель); + МодульОбменДаннымиВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВМоделиСервиса"); + МодульОбменДаннымиВМоделиСервиса.ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента, СозданиеНачальногоОбраза, Получатель); Если ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать Тогда Возврат; @@ -1029,8 +1006,7 @@ // т.к. ограничение миграции "снизу-вверх" в РИБ по умолчанию не предусмотрено. ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.БазоваяФункциональность\ПриОтправкеДанныхГлавному" - ); + "СтандартныеПодсистемы.БазоваяФункциональность\ПриОтправкеДанныхГлавному"); Для каждого Обработчик Из ОбработчикиСобытия Цикл Обработчик.Модуль.ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента, Получатель); @@ -1059,13 +1035,18 @@ Для каждого Обработчик Из ОбработчикиСобытия Цикл Обработчик.Модуль.ПриПолученииДанныхОтПодчиненного( - ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель - ); + ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель); Если ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать Тогда Возврат; КонецЕсли; КонецЦикла; + // Вставка кода от подсистемы обмена данными должна быть последней. + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда + МодульОбменДаннымиСобытия = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСобытия"); + МодульОбменДаннымиСобытия.ПриПолученииДанныхОтПодчиненногоВКонце(ЭлементДанных, ПолучениеЭлемента, Отправитель); + КонецЕсли; + КонецПроцедуры // Процедура является обработчиком одноименного события, возникающего при обмене данными в распределенной информационной базе. @@ -1083,27 +1064,35 @@ // Вставка кода от подсистемы обмена данными должна быть первой. Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСобытия"); - Модуль.ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель); + МодульОбменДаннымиСобытия = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСобытия"); + МодульОбменДаннымиСобытия.ПриПолученииДанныхОтГлавногоВНачале(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель); Если ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать Тогда Возврат; КонецЕсли; + КонецЕсли; ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( - "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииДанныхОтГлавного" - ); + "СтандартныеПодсистемы.БазоваяФункциональность\ПриПолученииДанныхОтГлавного"); Для каждого Обработчик Из ОбработчикиСобытия Цикл Обработчик.Модуль.ПриПолученииДанныхОтГлавного( - ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель - ); + ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад, Отправитель); Если ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать Тогда Возврат; КонецЕсли; КонецЦикла; + // Вставка кода от подсистемы обмена данными должна быть последней. + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") + И Не СозданиеНачальногоОбраза(ЭлементДанных) Тогда + + МодульОбменДаннымиСобытия = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСобытия"); + МодульОбменДаннымиСобытия.ПриПолученииДанныхОтГлавногоВКонце(ЭлементДанных, ПолучениеЭлемента, Отправитель); + + КонецЕсли; + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -1287,6 +1276,24 @@ КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Прочие процедуры и функции. + +// Возвращает уточнения при возникновении проблем с параметрами работы программы. +Функция УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика() Экспорт + + Возврат Символы.ПС + Символы.ПС + + НСтр("ru = 'Для разработчика: возможно требуется обновить вспомогательные данные, + |которые влияют на работу программы. Для выполнения обновления можно: + |- воспользоваться внешней обработкой + | ""Инструменты разработчика: Обновление вспомогательных данных"", + |- либо запустить программу с параметром командной строки 1С:Предприятия 8 + | ""/С ЗапуститьОбновлениеИнформационнойБазы"", + |- либо увеличить номер версии конфигурации, чтобы при очередном запуске + | выполнились процедуры обновления данных информационной базы.'"); + +КонецФункции + /////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -1332,8 +1339,8 @@ ПользователиСлужебный.ПроверитьВозможностьЗапускаСПустымСпискомПользователейИБ(Истина)); Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиПовтИсп"); - Если Модуль.ЭтоАвтономноеРабочееМесто() Тогда + МодульОбменДаннымиПовтИсп = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиПовтИсп"); + Если МодульОбменДаннымиПовтИсп.ЭтоАвтономноеРабочееМесто() Тогда // Для автономного рабочего места проверка выполняется после загрузки данных. Параметры.ОшибкаЗапускаСПустымСпискомПользователей = ""; КонецЕсли; @@ -1344,25 +1351,28 @@ Возврат Ложь; КонецЕсли; + Если Параметры.ПервыйЗапросПараметров + И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() + И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда + + МодульОбменДаннымиВызовСервера = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиВызовСервера"); + Если МодульОбменДаннымиВызовСервера.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском() Тогда + Параметры.Вставить("ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском"); + КонецЕсли; + КонецЕсли; + // Проверка необходимости предварительного обновления параметров работы программы. Параметры.Вставить("НеобходимоОбновлениеПараметровРаботыПрограммы", НеобходимоОбновлениеПараметровРаботыПрограммы()); - Если Параметры.НеобходимоОбновлениеПараметровРаботыПрограммы - И Параметры.ПервыйЗапросПараметров Тогда - // Будет выполнено предварительное обновление. - Параметры.Вставить("ИнформационнаяБазаФайловая", ОбщегоНазначения.ИнформационнаяБазаФайловая()); + Если Параметры.ПервыйЗапросПараметров Тогда + Если Параметры.НеобходимоОбновлениеПараметровРаботыПрограммы + ИЛИ Параметры.Свойство("ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском") Тогда - Если ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() - И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); - Если Модуль.НеобходимоПодтвердитьНастройкиЗагрузкиСообщенияВПодчиненномУзлеРИБ() Тогда - Параметры.Вставить("ПодтвердитьНастройкиЗагрузкиСообщенияВПодчиненномУзлеРИБ"); - Параметры.Вставить("ГлавныйУзел", ПланыОбмена.ГлавныйУзел()); - КонецЕсли; + // Будет выполнено предварительная загрузка или обновление. + Параметры.Вставить("ИнформационнаяБазаФайловая", ОбщегоНазначения.ИнформационнаяБазаФайловая()); + Возврат Ложь; КонецЕсли; - Возврат Ложь; КонецЕсли; // Обязательные параметры для всех режимов работы. @@ -1381,6 +1391,8 @@ Параметры.Вставить("НеобходимоОбновлениеНеразделенныхДанныхИнформационнойБазы", ОбновлениеИнформационнойБазы.НеобходимоОбновлениеНеразделенныхДанныхИнформационнойБазы()); + Параметры.Вставить("ЗагрузитьСообщениеОбменаДанными", Ложь); + // При входе неразделенным пользователем в неразделенный сеанс ошибки авторизации нет. Параметры.Вставить("ОшибкаАвторизации", ""); @@ -1393,6 +1405,13 @@ Параметры.Вставить("НеобходимоОбновлениеИнформационнойБазы", ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы()); + Если Не Параметры.РазделениеВключено + И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда + + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + Параметры.Вставить("ЗагрузитьСообщениеОбменаДанными", МодульОбменДаннымиСервер.ЗагрузитьСообщениеОбменаДанными()); + КонецЕсли; + Параметры.Вставить("ЭтоРазделеннаяКонфигурация", ОбщегоНазначенияПовтИсп.ЭтоРазделеннаяКонфигурация()); Параметры.Вставить("ЕстьДоступДляОбновленияВерсииПлатформы", ПравоДоступа("Администрирование", Метаданные)); @@ -1436,7 +1455,7 @@ Параметры.Вставить("ПодробнаяИнформация", Метаданные.ПодробнаяИнформация); Параметры.Вставить("КодОсновногоЯзыка", Метаданные.ОсновнойЯзык.КодЯзыка); - Параметры.Вставить("Платформа83БезИспользованияРежимаСовместимости", Платформа83БезИспользованияРежимаСовместимости()); + Параметры.Вставить("ЭтоПлатформа83БезРежимаСовместимости", СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости()); Параметры.Вставить("ЗапрашиватьПодтверждениеПриЗавершенииПрограммы", ЗапрашиватьПодтверждениеПриЗавершенииПрограммы()); @@ -1470,8 +1489,13 @@ Параметры.Вставить("ЭтоГлавныйУзел", НЕ ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ()); Параметры.Вставить("ИнформационнаяБазаФайловая", ОбщегоНазначения.ИнформационнаяБазаФайловая()); + + Параметры.Вставить("ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий", + ОбщегоНазначения.ИнформационнаяБазаФайловая() + И НЕ ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости()); + Параметры.Вставить("ТребуетсяОбновлениеКонфигурацииУзлаРИБ", - ОбновлениеИнформационнойБазы.ТребуетсяОбновлениеКонфигурацииУзлаРИБ()); + ОбщегоНазначения.ТребуетсяОбновлениеКонфигурацииПодчиненногоУзлаРИБ()); Параметры.Вставить("ЭтоБазоваяВерсияКонфигурации", ЭтоБазоваяВерсияКонфигурации()); @@ -1683,7 +1707,7 @@ КонецФункции // Только для внутреннего использования. -Функция НеобходимоОбновлениеПараметровРаботыПрограммы(БезЗагрузки = Ложь) Экспорт +Функция НеобходимоОбновлениеПараметровРаботыПрограммы(ВыполнитьЗагрузку = Истина) Экспорт Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда // Обновление в модели сервиса. @@ -1700,10 +1724,10 @@ КонецЕсли; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); - Если Модуль.НастройкаПодчиненногоУзлаРИБ() Тогда - БезЗагрузки = Истина; + Если МодульОбменДаннымиСервер.НастройкаПодчиненногоУзлаРИБ() Тогда + ВыполнитьЗагрузку = Ложь; Возврат Истина; КонецЕсли; КонецЕсли; @@ -1711,7 +1735,7 @@ Попытка ПользователиСлужебныйПовтИсп.Параметры(); Исключение - БезЗагрузки = Истина; + ВыполнитьЗагрузку = Ложь; Возврат Истина; КонецПопытки; @@ -1722,9 +1746,9 @@ // Только для внутреннего использования. Процедура ЗагрузитьОбновитьПараметрыРаботыПрограммы(ОшибкаУстановкиМонопольногоРежима = Неопределено) Экспорт - БезЗагрузки = Ложь; + ВыполнитьЗагрузку = Истина; - Если НЕ НеобходимоОбновлениеПараметровРаботыПрограммы(БезЗагрузки) Тогда + Если НЕ НеобходимоОбновлениеПараметровРаботыПрограммы(ВыполнитьЗагрузку) Тогда Возврат; КонецЕсли; @@ -1735,10 +1759,14 @@ |быть выполнено в разделенном режиме модели сервиса.'"); КонецЕсли; + Если СтандартныеПодсистемыПовтИсп.ОтключитьСправочникИдентификаторыОбъектовМетаданных() Тогда + ВыполнитьЗагрузку = Ложь; + КонецЕсли; + УстановитьПривилегированныйРежим(Истина); СнятьМонопольныйРежим = Ложь; Попытка - Если НЕ БезЗагрузки + Если ВыполнитьЗагрузку И ОбщегоНазначения.ЭтоПодчиненныйУзелРИБ() Тогда // Есть РИБ-обмен данными и обновление в подчиненном узле ИБ. @@ -1761,8 +1789,6 @@ Если СтандартнаяОбработка = Истина И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); - Если НЕ МонопольныйРежим() Тогда Попытка УстановитьМонопольныйРежим(Истина); @@ -1778,52 +1804,9 @@ КонецПопытки; КонецЕсли; - Отказ = Ложь; - ИнформацияОбОшибке = Неопределено; - Попытка - // Загрузка идентификаторов объектов метаданных из главного узла. - Модуль.ПриОбновленииИдентификаторовОбъектовМетаданных(Отказ); - Исключение - ИнформацияОбОшибке = ИнформацияОбОшибке(); - КонецПопытки; - - Если КонфигурацияИзменена() Тогда - ВызватьИсключение - НСтр("ru = 'Найдены изменения программы, полученные из главного узла. - |Завершите работу программы. Откройте программу в конфигураторе и - |выполните команду ""Обновить конфигурацию базы данных (F7)"". - | - |После этого запустите программу.'"); - КонецЕсли; - - Если ИнформацияОбОшибке <> Неопределено - ИЛИ Отказ = Истина Тогда - - // Сброс кэша сообщения обмена. - Модуль.ПриОшибкеПолученияИдентификаторовОбъектовМетаданных(); - - Если ИнформацияОбОшибке <> Неопределено Тогда - - ЗаписьЖурналаРегистрации( - НСтр("ru = 'Обмен данными.Загрузка справочника Идентификаторы объектов метаданных'", - ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка, , , - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); - - ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Из главного узла не загружены изменения справочника ""Идентификаторы объектов метаданных"". - |Произошла ошибка: - |""%1"". - | - |См. подробности в журнале регистрации.'"), - КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); - КонецЕсли; - - ВызватьИсключение - НСтр("ru = 'Из главного узла не загружены изменения справочника ""Идентификаторы объектов метаданных"". - | - |Ошибка загрузки данных. См. подробности в журнале регистрации.'"); - КонецЕсли; + // Загрузка идентификаторов объектов метаданных из главного узла. + МодульОбменДаннымиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ОбменДаннымиСервер"); + МодульОбменДаннымиСервер.ПередПроверкойИдентификаторовОбъектовМетаданныхВПодчиненномУзлеРИБ(); КонецЕсли; // Проверка загрузки идентификаторов объектов метаданных из главного узла. @@ -1831,36 +1814,23 @@ Попытка Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(, , Истина, ЕстьКритичныеИзменения); Исключение - // Сброс кэша сообщения обмена. Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль.ПриОшибкеПолученияИдентификаторовОбъектовМетаданных(); + // Сброс кэша сообщения обмена. + МодульОбменДаннымиСервер.ПриОшибкеПроверкиИдентификаторовОбъектовМетаданныхВПодчиненномУзлеРИБ(); КонецЕсли; ВызватьИсключение; КонецПопытки; Если ЕстьКритичныеИзменения Тогда - // Сброс кэша сообщения обмена. Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - Модуль.ПриОшибкеПолученияИдентификаторовОбъектовМетаданных(); + // Сброс кэша сообщения обмена, вызов исключения с пояснением дальнейших действий. + МодульОбменДаннымиСервер.ПриОшибкеПроверкиИдентификаторовОбъектовМетаданныхВПодчиненномУзлеРИБ(Истина); КонецЕсли; ТекстОшибки = НСтр("ru = 'Из главного узла не загружены изменения справочника ""Идентификаторы объектов метаданных"".'"); - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ОбменДанными") Тогда - ТекстОшибки = ТекстОшибки + Символы.ПС + Символы.ПС + - НСтр("ru = 'Если было недоступно сообщение обмена данными перезапустите программу, - |чтобы открылось окно изменения настроек транспорта обмена данными. - |Иначе в главном узле выполните обновление информационной базы, - |повторите синхронизацию и после этого перезапустите программу. - | - |Чтобы выполнить обновление информационной базы в главном узле, - |включите константу ""Запустить обновление информационной базы"" - |через меню ""Все функции"" и перезапустите программу. - |Выключение константы произойдет автоматически.'"); - КонецЕсли; - ЗаписьЖурналаРегистрации( НСтр("ru = 'Обмен данными.Загрузка справочника Идентификаторы объектов метаданных'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), @@ -2094,8 +2064,8 @@ Для каждого Запись Из НаборЗаписей Цикл Запись.ДатаОбновления = Неопределено; КонецЦикла; - НаборЗаписей.Записать(); - + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей); + ЗафиксироватьТранзакцию(); КонецПроцедуры @@ -2180,15 +2150,6 @@ Возврат Результат; КонецФункции -// Возвращает Истина если конфигурация запущена под управлением платформы 8.3 без использования режима совместимости. -Функция Платформа83БезИспользованияРежимаСовместимости() Экспорт - Информация = Новый СистемнаяИнформация; - Возврат ( - Лев(Информация.ВерсияПриложения, 3) = "8.3" - И Метаданные.РежимСовместимости = Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать - ); -КонецФункции - //////////////////////////////////////////////////////////////////////////////// // Обработка подписок на события планов обмена РИБ @@ -2322,8 +2283,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); - Модуль.ПриПроверкеВключенияБезопасногоРежимаРазделенияДанных(); + МодульРаботаВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервиса"); + МодульРаботаВМоделиСервиса.ПриПроверкеВключенияБезопасногоРежимаРазделенияДанных(); КонецЕсли; @@ -2349,15 +2310,23 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных") Тогда // Установка флага активности пользователей в области - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеОбластейДанных"); - Модуль.УстановитьФлагАктивностиПользователяВОбласти(); + МодульРезервноеКопированиеОбластейДанных = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеОбластейДанных"); + МодульРезервноеКопированиеОбластейДанных.УстановитьФлагАктивностиПользователяВОбласти(); КонецЕсли; КонецПроцедуры Функция ПолучитьИнформациюОПользователе() - ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); + // Вычисляем актуальное имя пользователя, даже если оно было ранее изменено в текущем сеансе; + // Например, для подключения к текущей ИБ через внешнее соединение из этого сеанса; + // Во всех остальных случаях достаточно получить ПользователиИнформационнойБазы.ТекущийПользователь() + ТекущийПользователь = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору( + ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор); + + Если ТекущийПользователь = Неопределено Тогда + ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); + КонецЕсли; Информация = Новый Структура; Информация.Вставить("Имя", ТекущийПользователь.Имя); @@ -2406,7 +2375,7 @@ КонецПроцедуры -Процедура ИгнорироватьПолучениеОбъектовНачальногоОбраза(ЭлементДанных, ПолучениеЭлемента) +Функция ИгнорироватьПолучениеОбъектовНачальногоОбраза(ЭлементДанных, ПолучениеЭлемента) Если Не СозданиеНачальногоОбраза(ЭлементДанных) И ЭтоОбъектНачальногоОбразаУзлаРИБ(ОбъектМетаданных(ЭлементДанных)) Тогда @@ -2415,7 +2384,7 @@ КонецЕсли; -КонецПроцедуры +КонецФункции Функция ОбъектМетаданных(Знач ЭлементДанных) @@ -2482,15 +2451,8 @@ // Вызывается при интерактивном начале работы пользователя с областью данных. // Соответствует событию ПриНачалеРаботыСистемы модулей приложения. // - // Параметры: - // ОбработкаПараметровЗапуска - Булево. - // Истина - обработчик вызван при обычном входе пользователя - // в систему и обработка параметров запуска будет выполнена. - // Ложь - обработчик вызван при входе неразделенного пользователя - // в область данных и обработка параметров запуска будет пропущена. - // // Синтаксис: - // Процедура ПриНачалеРаботыСистемы(ОбработкаПараметровЗапуска) Экспорт + // Процедура ПриНачалеРаботыСистемы() Экспорт // // (То же, что ОбщегоНазначенияКлиентПереопределяемый.ПриНачалеРаботыСистемы). КлиентскиеСобытия.Добавить( @@ -2546,9 +2508,6 @@ // предупреждений оказывается только одно данное предупреждение. // ПараметрыПрикладнойФормыПредупреждения - Структура - произвольная структура // параметров для вышеописанной формы. - // Приоритет - Число - приоритет обработчика, определяет порядок вывода предупреждений пользователю. - // ОчищатьПредупрежденияДругихОбработчиков - Булево - если Истина, предупреждения, - // добавляемые другими обработчиками, будут очищаться. // Синтаксис: // Процедура ПриПолученииСпискаПредупрежденийЗавершенияРаботы(Предупреждения) Экспорт // @@ -2589,27 +2548,33 @@ СерверныеСобытия.Добавить( "СтандартныеПодсистемы.БазоваяФункциональность\ПриДобавленииОбработчиковУстановкиПараметровСеанса"); - // Доопределяет список имен объектов метаданных, данные которых могут содержать ссылки - // на различные объекты метаданных, но при этом эти ссылки не должны учитываться - // в бизнес-логике приложения. + // Доопределяет список объектов метаданных, содержимое которых не должно учитывается в бизнес-логике приложения. // - // Пример: - // Для документ "Реализация товаров и услуг" настроена подсистема версионирования объектов, - // и подсистема свойств. При этом на экземпляр документа может быть множество ссылок - // в информационной базе (из других документов, регистров). Часть ссылок имеют значение для - // бизнес-логики (например движения по регистрам). Другая часть ссылок - "техногенные" ссылки - // на объект из объектов ИБ, которые относятся к подсистеме версионирования объектов и подсистеме - // свойств. Такие "техногенные" ссылки должны быть отфильтрованы, например, в обработке удаления - // помеченных и при поиске ссылок на объект в подсистеме запрета редактирования ключевых реквизитов. - // Список таких "техногенных" объектов нужно перечислить в этой функции. + // Описание: + // Для документа "Реализация товаров и услуг" настроены подсистемы "Версионирование объектов" и "Свойства". + // При этом документ может быть указан в других объектах метаданных - документах или регистрах. + // Часть ссылок имеют значение для бизнес-логики (например движения по регистрам) и должны выводиться пользователю. + // Другая часть ссылок - "техногенные" ссылки на документ из данных подсистем "Версионирование объектов" и "Свойства", + // должны скрываться от пользователя при поиске ссылок на объект. + // Например, в обработке удаления помеченных или в подсистеме запрета редактирования ключевых реквизитов. + // Список таких "техногенных" объектов нужно перечислить в этой функции. // - // При этом необходимо позаботиться об удалении "техногенных" данных или очистке ссылок на - // удаленные объекты. Это может быть реализовано с помощью подписки на событие ПередУдалением, - // или с помощью установки признака Ведущее для измерений регистров сведений. + // Важно: + // Для избежания появления пустых "битых" ссылок рекомендуется предусмотреть процедуру очистки указанных объектов метаданных. + // Для измерений регистров сведений - с помощью установки флажка "Ведущее", + // тогда запись регистра сведений будет удалена вместе с удалением ссылки, указанной в измерении. + // Для других реквизитов указанных объектов - с помощью подписки на событие ПередУдалением всех типов объектов метаданных, + // которые могут быть записаны в реквизиты указанных объектов метаданных. + // В обработчике необходимо найти "техногенные" объекты, в реквизитах которых указана ссылка удаляемого объекта, + // и выбрать как именно очищать ссылку: очищать значение реквизита, удалять строку таблицы или удалять весь объект. // // Параметры: - // Исключения - Массив в который можно добавить исключения, например: - // Исключения.Добавить("РегистрСведений.ВерсииОбъектов"). + // Исключения (Массив) из + // |- (ОбъектМетаданных) Объект метаданных или его реквизит, например: + // Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов); + // Массив.Добавить(Метаданные.РегистрыСведений.ВерсииОбъектов.Реквизиты.АвторВерсии); + // |- (Строка) Полное имя объекта метаданных, например: + // Массив.Добавить("РегистрСведений.ВерсииОбъектов"); // // Синтаксис: // Процедура ПриДобавленииИсключенийПоискаСсылок(Исключения) Экспорт @@ -3108,3 +3073,67 @@ Возврат Новый ФиксированноеСоответствие(ОбработчикиСобытий); КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Для функции ОбновитьПараметрыРаботыПрограммы + +Процедура ПроверитьОбновитьПараметрыРаботыПрограммы(ЕстьИзменения, ТолькоПроверка, БезИзменений = Неопределено) + + Если ТипЗнч(БезИзменений) <> Тип("Структура") Тогда + БезИзменений = Новый Структура; + КонецЕсли; + + // СтандартныеПодсистемы.БазоваяФункциональность + Если НЕ БезИзменений.Свойство("БазоваяФункциональностьСлужебныеСобытия") Тогда + ЕстьТекущиеИзменения = Ложь; + Константы.ПараметрыСлужебныхСобытий.СоздатьМенеджерЗначения().Обновить(ЕстьТекущиеИзменения, ТолькоПроверка); + Если ЕстьТекущиеИзменения Тогда + ЕстьИзменения = Истина; + Иначе + БезИзменений.Вставить("БазоваяФункциональностьСлужебныеСобытия"); + КонецЕсли; + КонецЕсли; + + Если НЕ СтандартныеПодсистемыПовтИсп.ОтключитьСправочникИдентификаторыОбъектовМетаданных() Тогда + Если ТолькоПроверка И НЕ ЕстьИзменения Тогда + // Проверка только критичных изменений: добавление, удаление или переименование объектов метаданных. + Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(, ЕстьИзменения, ТолькоПроверка, ЕстьИзменения, ЕстьИзменения); + ИначеЕсли НЕ ТолькоПроверка Тогда + Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеДанных(ЕстьИзменения); + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.БазоваяФункциональность + + // СтандартныеПодсистемы.Пользователи + Если НЕ БезИзменений.Свойство("ПользователиПараметрыРаботы") + И НЕ (ТолькоПроверка И ЕстьИзменения) Тогда + + ЕстьТекущиеИзменения = Ложь; + ПользователиСлужебный.ОбновитьПараметрыРаботыПользователей(ЕстьТекущиеИзменения, ТолькоПроверка); + Если ЕстьТекущиеИзменения Тогда + ЕстьИзменения = Истина; + Иначе + БезИзменений.Вставить("ПользователиПараметрыРаботы"); + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.Пользователи + + // СтандартныеПодсистемы.УправлениеДоступом + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + МодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + + Если НЕ БезИзменений.Свойство("УправлениеДоступомПараметрыОграниченияДоступа") + И НЕ (ТолькоПроверка И ЕстьИзменения) Тогда + + ЕстьТекущиеИзменения = Ложь; + МодульУправлениеДоступомСлужебный.ОбновитьПараметрыОграниченияДоступа(ЕстьТекущиеИзменения, ТолькоПроверка); + Если ЕстьТекущиеИзменения Тогда + ЕстьИзменения = Истина; + Иначе + БезИзменений.Вставить("УправлениеДоступомПараметрыОграниченияДоступа"); + КонецЕсли; + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + +КонецПроцедуры diff --git a/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl b/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl index ac4e2229b..54fec70fc 100644 --- a/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/СтроковыеФункцииКлиентСервер/Module.bsl @@ -769,9 +769,8 @@ // Строка - текстовое представление количества единиц, число записывается цифрами. // // Примеры: -// ЧислоЦифрамиПредметИсчисленияПрописью(23, НСтр("ru = 'минуту,минуты,минут'")); // Вернет "23 минуты". -// ЧислоЦифрамиПредметИсчисленияПрописью(15, НСтр("ru = 'минуту,минуты,минут'")); // Вернет "15 минут". -// +// ЧислоЦифрамиПредметИсчисленияПрописью(23, "минуту,минуты,минут") = "23 минуты"; +// ЧислоЦифрамиПредметИсчисленияПрописью(15, "минуту,минуты,минут") = "15 минут". Функция ЧислоЦифрамиПредметИсчисленияПрописью(Знач Число, Знач ПараметрыПредметаИсчисления) Экспорт Результат = Формат(Число,"ЧН=0"); @@ -1251,4 +1250,4 @@ Возврат Результат; КонецФункции -// Конец ВычислитьХешСтрокиПоАлгоритмуMD5 \ No newline at end of file +// Конец ВычислитьХешСтрокиПоАлгоритмуMD5 diff --git a/SSL/src/CommonModules/СтруктураПодчиненности/Module.bsl b/SSL/src/CommonModules/СтруктураПодчиненности/Module.bsl deleted file mode 100644 index 4624ee187..000000000 --- a/SSL/src/CommonModules/СтруктураПодчиненности/Module.bsl +++ /dev/null @@ -1,54 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Подсистема "Структура подчиненности". -// -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС - -//////////////////////////////////////////////////////////////////////////////// -// Объявление событий, к которым можно добавлять обработчики. - -// Объявляет служебные события подсистемы СтруктураПодчиненности: -// -// Серверные события: -// ПриФормированииМассиваДополнительныхРеквизитовДокумента, -// ПриПолученииПредставленияДокументаДляПечати. -// -// См. описание этой же процедуры в модуле СтандартныеПодсистемыСервер. -Процедура ПриДобавленииСлужебныхСобытий(КлиентскиеСобытия, СерверныеСобытия) Экспорт - - // СЕРВЕРНЫЕ СОБЫТИЯ. - - // Формирует массив реквизитов документа. - // - // Параметры: - // ИмяДокумента - Строка - имя документа. - // МассивДопРеквизитов - Массив наименований реквизитов документа. - // - // Синтаксис: - // Процедура ПриФормированииМассиваДополнительныхРеквизитовДокумента(ИмяДокумента, МассивДопРеквизитов) Экспорт - // - // (То же, что СтруктураПодчиненностиПереопределяемый.МассивДополнительныхРеквизитовДокумента). - // - СерверныеСобытия.Добавить("СтандартныеПодсистемы.СтруктураПодчиненности\ПриФормированииМассиваДополнительныхРеквизитовДокумента"); - - // Получает представление документа для печати - // - // Параметры - // Выборка - КоллекцияДанных - структура или выборка из результатов запроса - // в которой содержатся дополнительные реквизиты, на основании - // которых можно сформировать переопределенное представление до- - // кумента для вывода в отчет "Структура подчиненности" - // ПредставлениеДокумента - Строка, Неопределено. Переопределенное представление документа, или Неопределено, - // если для данного типа документов такое не задано. - // - // Синтаксис: - // Процедура ПриПолученииПредставленияДокументаДляПечати(Выборка, ПредставлениеДокумента) Экспорт - // - // (То же, что СтруктураПодчиненностиПереопределяемый.ПолучитьПредставлениеДокументаДляПечати). - // - СерверныеСобытия.Добавить("СтандартныеПодсистемы.СтруктураПодчиненности\ПриПолученииПредставленияДокументаДляПечати"); - -КонецПроцедуры - diff --git a/SSL/src/CommonModules/СтруктураПодчиненностиПереопределяемый/Module.bsl b/SSL/src/CommonModules/СтруктураПодчиненностиПереопределяемый/Module.bsl index 3b10f6043..d80268be5 100644 --- a/SSL/src/CommonModules/СтруктураПодчиненностиПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/СтруктураПодчиненностиПереопределяемый/Module.bsl @@ -38,9 +38,9 @@ // если для данного типа документов такое не задано. // Функция ПолучитьПредставлениеДокументаДляПечати(Выборка) Экспорт - + Возврат Неопределено; - + КонецФункции diff --git a/SSL/src/CommonModules/ТрансляцияXDTO/Module.bsl b/SSL/src/CommonModules/ТрансляцияXDTO/Module.bsl index f070e1d6e..95eda9859 100644 --- a/SSL/src/CommonModules/ТрансляцияXDTO/Module.bsl +++ b/SSL/src/CommonModules/ТрансляцияXDTO/Module.bsl @@ -25,17 +25,14 @@ ОписаниеИсходнойВерсии = ТрансляцияXDTOСлужебный.СформироватьОписаниеВерсии( , - ПакетИсходнойВерсии - ); + ПакетИсходнойВерсии); ОписаниеРезультирующейВерсии = ТрансляцияXDTOСлужебный.СформироватьОписаниеВерсии( - РезультирующаяВерсия - ); + РезультирующаяВерсия); Возврат ТрансляцияXDTOСлужебный.ВыполнитьТрансляцию( ИсходныйОбъект, ОписаниеИсходнойВерсии, - ОписаниеРезультирующейВерсии - ); + ОписаниеРезультирующейВерсии); КонецФункции @@ -62,17 +59,14 @@ ОписаниеИсходнойВерсии = ТрансляцияXDTOСлужебный.СформироватьОписаниеВерсии( , - ПакетИсходнойВерсии - ); + ПакетИсходнойВерсии); ОписаниеРезультирующейВерсии = ТрансляцияXDTOСлужебный.СформироватьОписаниеВерсии( , - ПакетРезультирующейВерсии - ); + ПакетРезультирующейВерсии); Возврат ТрансляцияXDTOСлужебный.ВыполнитьТрансляцию( ИсходныйОбъект, ОписаниеИсходнойВерсии, - ОписаниеРезультирующейВерсии - ); + ОписаниеРезультирующейВерсии); -КонецФункции \ No newline at end of file +КонецФункции diff --git a/SSL/src/CommonModules/ТрансляцияXDTOСлужебный/Module.bsl b/SSL/src/CommonModules/ТрансляцияXDTOСлужебный/Module.bsl index 3e468aefd..056c2d7b4 100644 --- a/SSL/src/CommonModules/ТрансляцияXDTOСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ТрансляцияXDTOСлужебный/Module.bsl @@ -118,8 +118,7 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'В конфигурации не зарегистрирован обработчик трансляции из версии %1 в версию %2!'"), СформироватьПредставлениеВерсии(ОписаниеИсходнойВерсии), - СформироватьПредставлениеВерсии(ОписаниеРезультирующейВерсии) - ); + СформироватьПредставлениеВерсии(ОписаниеРезультирующейВерсии)); Иначе ТаблицаТрансляцииИнтерфейса = Новый ТаблицаЗначений(); diff --git a/SSL/src/CommonModules/УправлениеДоступом/Module.bsl b/SSL/src/CommonModules/УправлениеДоступом/Module.bsl index d45abbbc2..379cef813 100644 --- a/SSL/src/CommonModules/УправлениеДоступом/Module.bsl +++ b/SSL/src/CommonModules/УправлениеДоступом/Module.bsl @@ -9,19 +9,28 @@ //////////////////////////////////////////////////////////////////////////////// // Процедуры и функции, используемые для проверки прав -// Проверяет, что у текущего пользователя есть роль в одном из профилей +// Проверяет, что у пользователя есть роль в одном из профилей // тех групп доступа в которых он участвует, например, // роль ПросмотрЖурналаРегистрации, роль ПечатьНепроведенныхДокументов. // +// Если указан объект, тогда дополнительно проверяет, что группа доступа +// в профиле которой есть указанная роль также предоставляет право Чтение +// указанного объекта. +// // Параметры: -// Роль - Строка - имя роли. +// Роль - Строка - имя роли. // -// НаборыЗначенийДоступа - ТаблицаЗначений(НомерНабора, ВидДоступа, ЗначениеДоступа). -// Пустую подготовленную таблицу можно получить с помощью функции -// УправлениеДоступом.ТаблицаНаборыЗначенийДоступа(). +// СсылкаНаОбъект - Ссылка на объект для которого заполняются наборы значений доступа +// для проверки права Чтение. +// - ТаблицаЗначений(НомерНабора, ВидДоступа, ЗначениеДоступа) - произвольная +// таблица наборов значений доступа. +// Пустую подготовленную таблицу можно получить с помощью функции +// УправлениеДоступом.ТаблицаНаборыЗначенийДоступа() - колонки +// Чтение, Изменение, Добавление, Удаление не заполнять. +// +// Пользователь - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи, Неопределено. +// Если не заполнено, тогда право проверяется для текущего пользователя. // -// Пользователь - СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи, Неопределено. -// Если не заполнено, тогда право проверяется для текущего пользователя. // Возвращаемое значение: // Булево. // @@ -56,6 +65,26 @@ | И (НЕ ПрофилиГруппДоступаРоли.Ссылка.ПометкаУдаления)"; Иначе + Если ТипЗнч(НаборыЗначенийДоступа) <> Тип("ТаблицаЗначений") Тогда + СсылкаНаОбъект = НаборыЗначенийДоступа; + НаборыЗначенийДоступа = ТаблицаНаборыЗначенийДоступа(); + СсылкаНаОбъект.ПолучитьОбъект().ЗаполнитьНаборыЗначенийДоступа(НаборыЗначенийДоступа); + // Выбор только наборов значений доступа предназначенных для проверки права Чтение. + СтрокиНаборовЧтения = НаборыЗначенийДоступа.НайтиСтроки(Новый Структура("Чтение", Истина)); + НомераНаборов = Новый Соответствие; + Для каждого Строка Из СтрокиНаборовЧтения Цикл + НомераНаборов.Вставить(Строка.НомерНабора, Истина); + КонецЦикла; + Индекс = НаборыЗначенийДоступа.Количество()-1; + Пока Индекс > 0 Цикл + Если НомераНаборов[НаборыЗначенийДоступа[Индекс].НомерНабора] = Неопределено Тогда + НаборыЗначенийДоступа.Удалить(Индекс); + КонецЕсли; + Индекс = Индекс - 1; + КонецЦикла; + НаборыЗначенийДоступа.ЗаполнитьЗначения(Ложь, "Чтение, Изменение, Добавление, Удаление") ; + КонецЕсли; + // Проверка, что роль назначается пользователю через группу доступа по профилю с разрешенными наборами значений доступа. Запрос.УстановитьПараметр("НаборыЗначенийДоступа", НаборыЗначенийДоступа); @@ -1858,7 +1887,9 @@ Функция НовоеОписаниеПрофиляГруппДоступа() Экспорт НовоеОписание = Новый Структура; - НовоеОписание.Вставить("Идентификатор", ""); + НовоеОписание.Вставить("Имя", ""); // ИмяПредопределенныхДанных используется для привязки + // поставляемых данных к предопределенному элементу. + НовоеОписание.Вставить("Идентификатор", ""); // ИдентификаторПоставляемыхДанных НовоеОписание.Вставить("Наименование", ""); НовоеОписание.Вставить("Описание", ""); НовоеОписание.Вставить("Роли", Новый Массив); @@ -1869,6 +1900,20 @@ КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Процедуры и функции, используемые при обновлении информационной базы + +// Возвращает ссылку на поставляемый профиль по идентификатору. +// +// Параметры: +// Идентификатор - Строка - имя или уникальный идентификатор поставляемого профиля. +// +Функция ПоставляемыйПрофильПоИдентификатору(Идентификатор) Экспорт + + Возврат Справочники.ПрофилиГруппДоступа.ПоставляемыйПрофильПоИдентификатору(Идентификатор); + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Процедуры и функции, используемые для обновления вспомогательных данных diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl index 645a6119e..38991ee00 100644 --- a/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl +++ b/SSL/src/CommonModules/УправлениеДоступомСлужебный/Module.bsl @@ -262,6 +262,78 @@ //////////////////////////////////////////////////////////////////////////////// // Основные процедуры и функции. +// Добавляет пользователя в группу доступа, соответствующую поставляемому профилю. +// Группа доступа определяется по идентификатору ссылки поставляемого профиля. +// Если группа доступа не будет найдена, она будет создана. +// +// Параметры: +// Пользователь - СправочникСсылка.Пользователи, +// СправочникСсылка.ВнешниеПользователи, +// СправочникСсылка.ГруппыПользователей, +// СправочникСсылка.ГруппыВнешнихПользователей +// - участник, которого нужно включить в группу доступа. +// +// ПоставляемыйПрофиль - Строка - строка идентификатора поставляемого профиля или +// - СправочникСсылка.ПрофилиГруппДоступа - ссылка на профиль, который +// создан по описанию в модуле УправлениеДоступомПереопределяемый +// в процедуре ЗаполнитьПоставляемыеПрофилиГруппДоступа. +// Профили с непустым списком видов доступа не поддерживаются. +// Профиль групп доступа Администратор не поддерживается. +// +Процедура ВключитьПользователяВГруппуДоступа(Пользователь, ПоставляемыйПрофиль) Экспорт + + ОбработатьСвязьПользователяСГруппойДоступа(Пользователь, ПоставляемыйПрофиль, Истина); + +КонецПроцедуры + +// Удаляет пользователя из группы доступа, соответствующей поставляемому профилю. +// Группа доступа определяется по идентификатору ссылки поставляемого профиля. +// Если группа доступа не будет найдена, никаких действий не будет выполнено. +// +// Параметры: +// Пользователь - СправочникСсылка.Пользователи, +// СправочникСсылка.ВнешниеПользователи, +// СправочникСсылка.ГруппыПользователей, +// СправочникСсылка.ГруппыВнешнихПользователей +// - участник, которого нужно исключить из группы доступа. +// +// ПоставляемыйПрофиль - Строка - строка идентификатора поставляемого профиля или +// - СправочникСсылка.ПрофилиГруппДоступа - ссылка на профиль, который +// создан по описанию в модуле УправлениеДоступомПереопределяемый +// в процедуре ЗаполнитьПоставляемыеПрофилиГруппДоступа. +// Профили с непустым списком видов доступа не поддерживаются. +// Профиль групп доступа Администратор не поддерживается. +// +Процедура ИсключитьПользователяИзГруппыДоступа(Пользователь, ПоставляемыйПрофиль) Экспорт + + ОбработатьСвязьПользователяСГруппойДоступа(Пользователь, ПоставляемыйПрофиль, Ложь); + +КонецПроцедуры + +// Найти пользователя в группе доступа, соответствующей поставляемому профилю. +// Группа доступа определяется по идентификатору ссылки поставляемого профиля. +// Если группа доступа не будет найдена, никаких действий не будет выполнено. +// +// Параметры: +// Пользователь - СправочникСсылка.Пользователи, +// СправочникСсылка.ВнешниеПользователи, +// СправочникСсылка.ГруппыПользователей, +// СправочникСсылка.ГруппыВнешнихПользователей +// - участник, которого нужно найти в группе доступа. +// +// ПоставляемыйПрофиль - Строка - строка идентификатора поставляемого профиля или +// - СправочникСсылка.ПрофилиГруппДоступа - ссылка на профиль, который +// создан по описанию в модуле УправлениеДоступомПереопределяемый +// в процедуре ЗаполнитьПоставляемыеПрофилиГруппДоступа. +// Профили с непустым списком видов доступа не поддерживаются. +// Профиль групп доступа Администратор не поддерживается. +// +Функция НайтиПользователяВГруппеДоступа(Пользователь, ПоставляемыйПрофиль) Экспорт + + Возврат ОбработатьСвязьПользователяСГруппойДоступа(Пользователь, ПоставляемыйПрофиль); + +КонецФункции + // Устанавливает параметры сеанса по текущим настройкам констант и // настройкам групп доступа пользователей. // Вызывается ПриНачалеРаботыСистемы. @@ -312,11 +384,15 @@ Запрос = Новый Запрос( "ВЫБРАТЬ - | ВидыДоступа.Ссылка КАК ВидДоступа + | ВидыДоступа.Ссылка КАК ВидДоступа, + | НЕОПРЕДЕЛЕНО КАК ИмяПредопределенныхДанных |ИЗ | ПланВидовХарактеристик.ВидыДоступа КАК ВидыДоступа |ГДЕ - | ВидыДоступа.Предопределенный"); + | ВидыДоступа.Предопределенный = ИСТИНА"); + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕОПРЕДЕЛЕНО", "ВидыДоступа.ИмяПредопределенныхДанных"); + КонецЕсли; Выборка = Запрос.Выполнить().Выбрать(); КаждыйВидЕдинственный = Истина; @@ -366,7 +442,11 @@ КонецЕсли; ОписаниеВидаДоступа = ОписаниеВидаДоступа + ОписаниеГрупп; КонецЕсли; - ИмяВидаДоступа = ПланыВидовХарактеристик.ВидыДоступа.ПолучитьИмяПредопределенного(Выборка.ВидДоступа); + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяВидаДоступа = Выборка.ИмяПредопределенныхДанных; + Иначе + ИмяВидаДоступа = ПланыВидовХарактеристик.ВидыДоступа.ПолучитьИмяПредопределенного(Выборка.ВидДоступа); + КонецЕсли; ПараметрыСеанса["ОграничиватьДоступПоВиду" + ИмяВидаДоступа] = ОписаниеВидаДоступа; УстановленныеПараметры.Добавить("ОграничиватьДоступПоВиду" + ИмяВидаДоступа); КонецЦикла; @@ -443,6 +523,19 @@ Обработчик.Версия = "2.1.3.5"; Обработчик.Процедура = "РегистрыСведений.ГруппыЗначенийДоступа.ОбновитьГруппировкиПользователей"; + Обработчик = Обработчики.Добавить(); + Обработчик.Версия = "2.1.4.15"; + Обработчик.Процедура = "Справочники.ПрофилиГруппДоступа.ЗаполнитьИдентификаторыПоставляемыхДанных"; + Обработчик.ВыполнятьВГруппеОбязательных = Истина; + Обработчик.Приоритет = 1; + + Обработчик = Обработчики.Добавить(); + Обработчик.НачальноеЗаполнение = Истина; + Обработчик.Процедура = "Справочники.ГруппыДоступа.ЗаполнитьПрофильГруппыДоступаАдминистраторы"; + Обработчик.РежимВыполнения = "Монопольно"; + Обработчик.ВыполнятьВГруппеОбязательных = Истина; + Обработчик.Приоритет = 1; + КонецПроцедуры // Переопределяет поведение после получения данных в распределенной ИБ. @@ -541,6 +634,103 @@ КонецПроцедуры +// Содержит настройки размещения вариантов отчетов в панели отчетов. +// +// Параметры: +// Настройки (Коллекция) Используется для описания настроек отчетов и вариантов +// см. описание к ВариантыОтчетов.ДеревоНастроекВариантовОтчетовКонфигурации() +// +// Описание: +// В данной процедуре необходимо указать каким именно образом предопределенные варианты отчетов +// будут регистрироваться в программе и показываться в панели отчетов. +// +// Вспомогательные функции: +// НастройкиОтчета = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.<ИмяОтчета>); +// НастройкиВарианта = ВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "<ИмяВарианта>"); +// +// Данные функции получают соответственно настройки отчета и настройки варианта отчета следующей структуры: +// |- Включен (Булево) +// Если Ложь, то вариант отчета не регистрируется в подсистеме. +// Используется для удаления технических и контекстных вариантов отчетов из всех интерфейсов. +// Эти варианты отчета по прежнему можно открывать в форме отчета программно при помощи +// параметров открытия (см. справку по "Расширение управляемой формы для отчета.КлючВарианта"). +// |- ВидимостьПоУмолчанию (Булево) +// Если Ложь, то вариант отчета по умолчанию скрыт в панели отчетов. +// Пользователь может "включить" его в режиме настройки панели отчетов +// или открыть через форму "Все отчеты". +// |- Описание (Строка) +// Дополнительная информация по варианту отчета. +// В панели отчетов выводится в качестве подсказки. +// Должно расшифровывать для пользователя содержимое варианта отчета +// и не должно дублировать наименование варианта отчета. +// |- Размещение (Соответствие) Настройки размещения варианта отчета в разделах +// |- Ключ (ОбъектМетаданных) Подсистема, в которой размещается отчет или вариант отчета +// |- Значение (Строка) Необязательный. Настройки размещения в подсистеме. +// |- "" - Выводить отчет в своей группе обычным шрифтом. +// |- "Важный" - Выводить отчет в своей группе жирным шрифтом. +// |- "СмТакже" - Выводить отчет в группе "См. также". +// |- ФункциональныеОпции (Массив) из (Строка) +// Имена функциональных опций варианта отчета. +// +// Например: +// +// (1) Добавить в подсистему вариант отчета. +// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1"); +// Вариант.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы); +// +// (2) Отключить вариант отчета. +// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Метаданные.Отчеты.ИмяОтчета, "ИмяВарианта1"); +// Вариант.Включен = Ложь; +// +// (3) Отключить все варианты отчета, кроме требуемого. +// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета); +// Отчет.Включен = Ложь; +// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта"); +// Вариант.Включен = Истина; +// +// (4) Результат исполнения 4.1 и 4.2 будет одинаковым: +// (4.1) +// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета); +// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1"); +// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы); +// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2"); +// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы); +// Вариант = ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3"); +// Вариант.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы); +// +// (4.2) +// Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ИмяОтчета); +// Отчет.Размещение.Удалить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы); +// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта1"); +// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта2"); +// ВариантыОтчетов.ОписаниеВарианта(Настройки, Отчет, "ИмяВарианта3"); +// Отчет.Размещение.Вставить(Метаданные.Подсистемы.ИмяРаздела.Подсистемы.ИмяПодсистемы); +// +// Важно: +// Отчет выступает в качестве контейнера вариантов. +// Изменяя настройки отчета можно сразу изменять настройки всех его вариантов. +// Однако, если явно получить настройки варианта отчета, то они станут самостоятельными, +// т.е. более не будут наследовать изменения настроек от отчета. См. примеры 3 и 4. +// +// Начальная настройка размещения отчетов по подсистемам зачитывается из метаданных, +// ее дублирование в коде не требуется. +// +// Функциональные опции вариантов объединяются с функциональными опциями отчетов по следующим правилам: +// (ФункциональнаяОпция1Отчета ИЛИ ФункциональнаяОпция2Отчета) И (ФункциональнаяОпция3Варианта ИЛИ ФункциональнаяОпция4Варианта). +// Функциональные опции отчетов не зачитываются из метаданных, +// они применяются на этапе использования подсистемы пользователем. +// Через ОписаниеОтчета можно добавлять функциональные опции, которые будут соединяться по указанным выше правилам, +// но надо помнить, что эти функциональные опции будут действовать только для предопределенных вариантов этого отчета. +// Для пользовательских вариантов отчета действуют только функциональные опции отчета +// - они отключаются только с отключением всего отчета. +// +Процедура ПриНастройкеВариантовОтчетов(Настройки) Экспорт + + Отчет = ВариантыОтчетов.ОписаниеОтчета(Настройки, Метаданные.Отчеты.ПраваДоступа); + Отчет.Включен = Ложь; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -697,7 +887,8 @@ Профили = ПрофилиПользователяСРолью(ТекущийПользователь, Строка.Роль); Для каждого Профиль Из Профили Цикл ЗаписьЖурналаРегистрации( - НСтр("ru = 'Управление доступом.Роль не найдена в метаданных'"), + НСтр("ru = 'Управление доступом.Роль не найдена в метаданных'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -746,6 +937,35 @@ КонецПроцедуры +// Проверка группы доступа Администраторы перед записью. +Процедура ПроверитьНаличиеПользователяИБВГруппеДоступаАдминистраторы(ПользователиГруппы, ОписаниеОшибки) Экспорт + + Пользователи.НайтиНеоднозначныхПользователейИБ(); + + // Проверка пустого списка пользователей ИБ в группе доступа Администраторы. + УстановитьПривилегированныйРежим(Истина); + НайденПользовательИБ = Ложь; + + Для каждого ОписаниеПользователя ИЗ ПользователиГруппы Цикл + + Если ЗначениеЗаполнено(ОписаниеПользователя.Пользователь) + И ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору( + ОписаниеПользователя.Пользователь.ИдентификаторПользователяИБ) <> Неопределено Тогда + + НайденПользовательИБ = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Если НЕ НайденПользовательИБ Тогда + ОписаниеОшибки = + НСтр("ru = 'В группе доступа Администраторы + |должен быть хотя бы один пользователь, + |которому разрешен доступ к информационной базе.'"); + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики событий подсистем БСП @@ -1352,7 +1572,8 @@ Если КоличествоДанных < 1000 Тогда ЗаписьЖурналаРегистрации( - НСтр("ru = 'Управление доступом.Заполнение данных для ограничения доступа'"), + НСтр("ru = 'Управление доступом.Заполнение данных для ограничения доступа'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , @@ -1370,7 +1591,8 @@ КонецЕсли; Иначе ЗаписьЖурналаРегистрации( - НСтр("ru = 'Управление доступом.Заполнение данных для ограничения доступа'"), + НСтр("ru = 'Управление доступом.Заполнение данных для ограничения доступа'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , @@ -1882,7 +2104,8 @@ Если ОграничениеДоступаНаУровнеЗаписейВключено Тогда ЗаписьЖурналаРегистрации( - НСтр("ru = 'Управление доступом.Заполнение данных для ограничения доступа'"), + НСтр("ru = 'Управление доступом.Заполнение данных для ограничения доступа'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , @@ -2011,24 +2234,6 @@ КонецФункции -// Заполняет шаблон заголовка подчиненной формы свойствами ссылки-владельца, -// например, НСтр("ru = 'Права доступа: %1 (%2)'" -> "Права доступа: Иванов (Пользователь)". -// -// Параметры: -// СсылкаНаВладельца - ссылка на объект-владелец. -// -Функция ЗаголовокПодчиненнойФормы(СтрокаЗаголовкаСПараметрами, СсылкаНаВладельца) Экспорт - - МетаданныеВладельца = СсылкаНаВладельца.Метаданные(); - НаименованиеВладельца = Строка(СсылкаНаВладельца); - - Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - СтрокаЗаголовкаСПараметрами, - НаименованиеВладельца, - НазваниеОбъектаИзМетаданных(МетаданныеВладельца) ); - -КонецФункции - // Возвращает название объекта метаданных с учетом заданных свойств в порядке: // - РасширенноеПредставлениеОбъекта, // - ПредставлениеОбъекта, @@ -2898,8 +3103,8 @@ Процедура ПриОпределенииГруппИсполнителей(МенеджерВременныхТаблиц, СодержаниеПараметра, ЗначениеПараметра, НетГруппИсполнителей) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.БизнесПроцессыИЗадачи") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БизнесПроцессыИЗадачиСервер"); - Модуль.ПриОпределенииГруппИсполнителей(МенеджерВременныхТаблиц, СодержаниеПараметра, ЗначениеПараметра); + МодульБизнесПроцессыИЗадачиСервер = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("БизнесПроцессыИЗадачиСервер"); + МодульБизнесПроцессыИЗадачиСервер.ПриОпределенииГруппИсполнителей(МенеджерВременныхТаблиц, СодержаниеПараметра, ЗначениеПараметра); НетГруппИсполнителей = Ложь; Иначе НетГруппИсполнителей = Истина; @@ -2915,8 +3120,8 @@ Процедура ПриВключенииЗаполненияДанныхДляОграниченияДоступа(Знач Использование) Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.УправлениеДоступомВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебныйВМоделиСервиса"); - Модуль.ВключитьЗаполнениеДанныхДляОграниченияДоступа(Использование); + МодульУправлениеДоступомСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебныйВМоделиСервиса"); + МодульУправлениеДоступомСлужебныйВМоделиСервиса.ВключитьЗаполнениеДанныхДляОграниченияДоступа(Использование); КонецЕсли; КонецПроцедуры @@ -2933,8 +3138,8 @@ Процедура ПриЗаписиПользователяСервиса(Знач Пользователь, Знач СоздатьПользователяСервиса, Знач ПарольПользователяСервиса) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - Модуль.ЗаписатьПользователяСервиса(Пользователь, СоздатьПользователяСервиса, ПарольПользователяСервиса); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + МодульПользователиСлужебныйВМоделиСервиса.ЗаписатьПользователяСервиса(Пользователь, СоздатьПользователяСервиса, ПарольПользователяСервиса); КонецЕсли; КонецПроцедуры @@ -2951,8 +3156,8 @@ Процедура ПриПолученииДействийСПользователемСервиса(ДоступныеДействия, Знач Пользователь = Неопределено) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.ПользователиВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); - ДоступныеДействия = Модуль.ПолучитьДействияСПользователемСервиса(Пользователь); + МодульПользователиСлужебныйВМоделиСервиса = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПользователиСлужебныйВМоделиСервиса"); + ДоступныеДействия = МодульПользователиСлужебныйВМоделиСервиса.ПолучитьДействияСПользователемСервиса(Пользователь); КонецЕсли; КонецПроцедуры @@ -3093,6 +3298,177 @@ КонецФункции +// Для процедур ВключитьПользователяВГруппуДоступа, ИсключитьПользователяИзГруппыДоступа +// и функции НайтиПользователяВГруппеДоступа. + +Функция ОбработатьСвязьПользователяСГруппойДоступа(Пользователь, ПоставляемыйПрофиль, Включить = Неопределено) + + Если ТипЗнч(Пользователь) <> Тип("СправочникСсылка.Пользователи") + И ТипЗнч(Пользователь) <> Тип("СправочникСсылка.ГруппыПользователей") + И ТипЗнч(Пользователь) <> Тип("СправочникСсылка.ВнешниеПользователи") + И ТипЗнч(Пользователь) <> Тип("СправочникСсылка.ГруппыВнешнихПользователей") Тогда + + Возврат Ложь; + КонецЕсли; + + ИдентификаторПоставляемогоПрофиля = Неопределено; + + Если ТипЗнч(ПоставляемыйПрофиль) = Тип("Строка") Тогда + Если СтроковыеФункцииКлиентСервер.ЭтоУникальныйИдентификатор(ПоставляемыйПрофиль) Тогда + + ИдентификаторПоставляемогоПрофиля = ПоставляемыйПрофиль; + + ПоставляемыйПрофиль = Справочники.ПрофилиГруппДоступа.ПоставляемыйПрофильПоИдентификатору( + ИдентификаторПоставляемогоПрофиля); + Иначе + Возврат Ложь; + КонецЕсли; + КонецЕсли; + + Если ТипЗнч(ПоставляемыйПрофиль) <> Тип("СправочникСсылка.ПрофилиГруппДоступа") Тогда + Возврат Ложь; + КонецЕсли; + + Если ИдентификаторПоставляемогоПрофиля = Неопределено Тогда + ИдентификаторПоставляемогоПрофиля = + Справочники.ПрофилиГруппДоступа.ИдентификаторПоставляемогоПрофиля(ПоставляемыйПрофиль); + КонецЕсли; + + Если ИдентификаторПоставляемогоПрофиля = Справочники.ПрофилиГруппДоступа.ИдентификаторПрофиляАдминистратор() Тогда + Возврат Ложь; + КонецЕсли; + + СвойстваПрофиля = УправлениеДоступомСлужебныйПовтИсп.Параметры( + ).ПоставляемыеПрофилиГруппДоступа.ОписанияПрофилей.Получить(ИдентификаторПоставляемогоПрофиля); + + Если СвойстваПрофиля = Неопределено + ИЛИ СвойстваПрофиля.ВидыДоступа.Количество() <> 0 Тогда + + Возврат Ложь; + КонецЕсли; + + ГруппаДоступа = Неопределено; + + Если УправлениеДоступомПереопределяемый.УпрощенныйИнтерфейсНастройкиПравДоступа() Тогда + + Если ТипЗнч(Пользователь) <> Тип("СправочникСсылка.Пользователи") + И ТипЗнч(Пользователь) <> Тип("СправочникСсылка.ВнешниеПользователи") Тогда + + Возврат Ложь; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Профиль", ПоставляемыйПрофиль); + Запрос.УстановитьПараметр("Пользователь", Пользователь); + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | ГруппыДоступа.Профиль = &Профиль + | И ГруппыДоступа.Пользователь = &Пользователь"; + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + ГруппаДоступа = Выборка.Ссылка; + КонецЕсли; + + Если ГруппаДоступа = Неопределено Тогда + Если Включить <> Истина Тогда + Возврат Ложь; + Иначе + ГруппаДоступа = Справочники.ГруппыДоступа.СоздатьЭлемент(); + ГруппаДоступа.Наименование = СвойстваПрофиля.Наименование; + ГруппаДоступа.Профиль = ПоставляемыйПрофиль; + ГруппаДоступа.Пользователь = Пользователь; + ГруппаДоступа.Пользователи.Добавить().Пользователь = Пользователь; + ГруппаДоступа.Записать(); + Возврат Истина; + КонецЕсли; + КонецЕсли; + Иначе + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("ПоставляемыйПрофиль", ПоставляемыйПрофиль); + Запрос.Текст = + "ВЫБРАТЬ + | ГруппыДоступа.Ссылка КАК Ссылка, + | ГруппыДоступа.ОсновнаяГруппаДоступаПоставляемогоПрофиля + |ИЗ + | Справочник.ГруппыДоступа КАК ГруппыДоступа + |ГДЕ + | ГруппыДоступа.Профиль = &ПоставляемыйПрофиль + | + |УПОРЯДОЧИТЬ ПО + | ГруппыДоступа.ОсновнаяГруппаДоступаПоставляемогоПрофиля УБЫВ"; + Выборка = Запрос.Выполнить().Выбрать(); + Если Выборка.Следующий() Тогда + ГруппаДоступа = Выборка.Ссылка; + КонецЕсли; + + Если ГруппаДоступа = Неопределено Тогда + Если Включить <> Истина Тогда + Возврат Ложь; + Иначе + ГруппаДоступа = Справочники.ГруппыДоступа.СоздатьЭлемент(); + ГруппаДоступа.ОсновнаяГруппаДоступаПоставляемогоПрофиля = Истина; + ГруппаДоступа.Наименование = СвойстваПрофиля.Наименование; + ГруппаДоступа.Профиль = ПоставляемыйПрофиль; + ГруппаДоступа.Пользователи.Добавить().Пользователь = Пользователь; + ГруппаДоступа.Записать(); + Возврат Истина; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", ГруппаДоступа); + Запрос.УстановитьПараметр("Пользователь", Пользователь); + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ИСТИНА КАК ЗначениеИстина + |ИЗ + | Справочник.ГруппыДоступа.Пользователи КАК УчастникиГруппы + |ГДЕ + | УчастникиГруппы.Ссылка = &Ссылка + | И УчастникиГруппы.Пользователь = &Пользователь"; + ПользовательНайден = НЕ Запрос.Выполнить().Пустой(); + + Если Включить = Неопределено Тогда + Возврат ПользовательНайден; + КонецЕсли; + + Если Включить И ПользовательНайден Тогда + Возврат Истина; + КонецЕсли; + + Если НЕ Включить И НЕ ПользовательНайден Тогда + Возврат Истина; + КонецЕсли; + + ГруппаДоступа = ГруппаДоступа.ПолучитьОбъект(); + + Если НЕ УправлениеДоступомПереопределяемый.УпрощенныйИнтерфейсНастройкиПравДоступа() + И НЕ ГруппаДоступа.ОсновнаяГруппаДоступаПоставляемогоПрофиля Тогда + + ГруппаДоступа.ОсновнаяГруппаДоступаПоставляемогоПрофиля = Истина; + КонецЕсли; + + Если Включить Тогда + ГруппаДоступа.Пользователи.Добавить().Пользователь = Пользователь; + Иначе + Отбор = Новый Структура("Пользователь", Пользователь); + Строки = ГруппаДоступа.Пользователи.НайтиСтроки(Отбор); + Для каждого Строка Из Строки Цикл + ГруппаДоступа.Пользователи.Удалить(Строка); + КонецЦикла; + КонецЕсли; + + ГруппаДоступа.Записать(); + + Возврат Истина; + +КонецФункции + // Для процедуры ОбновитьРолиПользователей. Функция ТекущиеСвойстваПользователей(МассивПользователей) @@ -4074,8 +4450,7 @@ КонецЕсли; Индекс = Индекс-1; КонецЦикла; - Объект.ОбменДанными.Загрузка = Истина; - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецЦикла; КонецПроцедуры diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебныйВМоделиСервиса/Module.bsl index 2c76cdfa4..a47d247d9 100644 --- a/SSL/src/CommonModules/УправлениеДоступомСлужебныйВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/УправлениеДоступомСлужебныйВМоделиСервиса/Module.bsl @@ -115,10 +115,6 @@ НачатьТранзакцию(); Попытка - Блокировка = Новый БлокировкаДанных; - Блокировка.Добавить("Справочник.ПрофилиГруппДоступа"); - Блокировка.Добавить("Справочник.ГруппыДоступа"); - Блокировка.Заблокировать(); РезультатыЗапроса = Запрос.ВыполнитьПакет(); @@ -133,14 +129,14 @@ ГруппаАдминистраторы.Пользователи.Добавить().Пользователь = Строка.Пользователь; КонецЕсли; КонецЦикла; - ГруппаАдминистраторы.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(ГруппаАдминистраторы); КонецЕсли; - ГруппаАдминистраторыДанных.Удалить(); + ОбновлениеИнформационнойБазы.УдалитьДанные(ГруппаАдминистраторыДанных); КонецЕсли; Если НЕ РезультатыЗапроса[1].Пустой() Тогда ПрофильАдминистраторДанных = ПрофильАдминистраторДанныхСсылка.ПолучитьОбъект(); - ПрофильАдминистраторДанных.Удалить(); + ОбновлениеИнформационнойБазы.УдалитьДанные(ПрофильАдминистраторДанных); КонецЕсли; ЗафиксироватьТранзакцию(); diff --git a/SSL/src/CommonModules/УправлениеДоступомСлужебныйПовтИсп/Module.bsl b/SSL/src/CommonModules/УправлениеДоступомСлужебныйПовтИсп/Module.bsl index ac6a50192..99289c1a1 100644 --- a/SSL/src/CommonModules/УправлениеДоступомСлужебныйПовтИсп/Module.bsl +++ b/SSL/src/CommonModules/УправлениеДоступомСлужебныйПовтИсп/Module.bsl @@ -35,7 +35,8 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Ошибка обновления информационной базы. |Не заполнен параметр ограничения доступа: - |""%1"".'"), + |""%1"".'") + + СтандартныеПодсистемыСервер.УточнениеОшибкиПараметровРаботыПрограммыДляРазработчика(), ПредставлениеПараметра); КонецЕсли; @@ -76,14 +77,24 @@ Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ - | ВидыДоступа.Ссылка + | ВидыДоступа.Ссылка КАК Ссылка, + | НЕОПРЕДЕЛЕНО КАК ИмяПредопределенныхДанных |ИЗ | ПланВидовХарактеристик.ВидыДоступа КАК ВидыДоступа |ГДЕ - | ВидыДоступа.Предопределенный"; + | ВидыДоступа.Предопределенный = ИСТИНА"; + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Запрос.Текст = СтрЗаменить(Запрос.Текст, "НЕОПРЕДЕЛЕНО", "ВидыДоступа.ИмяПредопределенныхДанных"); + КонецЕсли; + Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл - ПредопределенныеВидыДоступа.Вставить(ПланыВидовХарактеристик.ВидыДоступа.ПолучитьИмяПредопределенного(Выборка.Ссылка), Выборка.Ссылка); + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяВидаДоступа = Выборка.ИмяПредопределенныхДанных; + Иначе + ИмяВидаДоступа = ПланыВидовХарактеристик.ВидыДоступа.ПолучитьИмяПредопределенного(Выборка.Ссылка); + КонецЕсли; + ПредопределенныеВидыДоступа.Вставить(ИмяВидаДоступа, Выборка.Ссылка); КонецЦикла; ОграниченияПрав = ""; diff --git a/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиКлиент/Module.bsl index b4cbc4ea4..171f57fe7 100644 --- a/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиКлиент/Module.bsl +++ b/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиКлиент/Module.bsl @@ -39,7 +39,7 @@ |(обязательная ежемесячная процедура, может занять некоторое время)'"); ДействиеПриУстановленномФлажке = Новый Структура; ДействиеПриУстановленномФлажке.Вставить("Форма", "Обработка.СдвигГраницыИтоговПриЗавершенииРаботы.Форма"); - ДействиеПриУстановленномФлажке.Вставить("ПараметрыФормы", Новый Структура); + ДействиеПриУстановленномФлажке.Вставить("ПараметрыФормы", Новый Структура("ОткрытаПоСценарию", Истина)); ПараметрыПредупреждения = Новый Структура; ПараметрыПредупреждения.Вставить("ТекстФлажка", ТекстФлажка); diff --git a/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиСлужебный/Module.bsl b/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиСлужебный/Module.bsl index e783f1245..9155cae73 100644 --- a/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/УправлениеИтогамиИАгрегатамиСлужебный/Module.bsl @@ -154,8 +154,8 @@ Для Каждого РегистрМетаданные Из Метаданные.РегистрыНакопления Цикл Если РегистрМетаданные.ВидРегистра = ВидОстатки Тогда РегистрНакопленияМенеджер = РегистрыНакопления[РегистрМетаданные.Имя]; - Если РегистрНакопленияМенеджер.ПолучитьПериодРассчитанныхИтогов() < РегистрНакопленияПериод Тогда - РегистрНакопленияМенеджер.УстановитьПериодРассчитанныхИтогов(РегистрНакопленияПериод); + Если ПолучитьПериодРассчитанныхИтогов(РегистрНакопленияМенеджер) < РегистрНакопленияПериод Тогда + УстановитьПериодРассчитанныхИтогов(РегистрНакопленияМенеджер, РегистрНакопленияПериод); Если РегистрНакопленияМенеджер.ПолучитьИспользованиеТекущихИтогов() Тогда РегистрНакопленияМенеджер.ПересчитатьТекущиеИтоги(); КонецЕсли; @@ -166,8 +166,8 @@ // Расчет итогов для регистров бухгалтерии. Для Каждого РегистрМетаданные Из Метаданные.РегистрыБухгалтерии Цикл РегистрБухгалтерииМенеджер = РегистрыБухгалтерии[РегистрМетаданные.Имя]; - Если РегистрБухгалтерииМенеджер.ПолучитьПериодРассчитанныхИтогов() < РегистрБухгалтерииПериод Тогда - РегистрБухгалтерииМенеджер.УстановитьПериодРассчитанныхИтогов(РегистрБухгалтерииПериод); + Если ПолучитьПериодРассчитанныхИтогов(РегистрБухгалтерииМенеджер) < РегистрБухгалтерииПериод Тогда + УстановитьПериодРассчитанныхИтогов(РегистрБухгалтерииМенеджер, РегистрБухгалтерииПериод); Если РегистрБухгалтерииМенеджер.ПолучитьИспользованиеТекущихИтогов() Тогда РегистрБухгалтерииМенеджер.ПересчитатьТекущиеИтоги(); КонецЕсли; @@ -231,7 +231,8 @@ // Определяет актуальность итогов и агрегатов. Если нет регистров, то возвращает Истина. Функция НадоСдвинутьГраницуИтогов() Экспорт Параметры = ПараметрыИтоговИАгрегатов(); - Возврат Параметры.ЕстьРегистрыИтогов И ДобавитьМесяц(Параметры.ДатаРасчетаИтогов, 1) < ТекущаяДатаСеанса(); + Возврат Пользователи.ЭтоПолноправныйПользователь() + И Параметры.ЕстьРегистрыИтогов И ДобавитьМесяц(Параметры.ДатаРасчетаИтогов, 1) < ТекущаяДатаСеанса(); КонецФункции // Получает значение константы "ПараметрыИтоговИАгрегатов". @@ -254,7 +255,7 @@ Для Каждого РегистрМетаданные Из Метаданные.РегистрыНакопления Цикл Если РегистрМетаданные.ВидРегистра = ВидОстатки Тогда Параметры.ЕстьРегистрыИтогов = Истина; - Параметры.ДатаРасчетаИтогов = Мин(Параметры.ДатаРасчетаИтогов, РегистрыНакопления[РегистрМетаданные.Имя].ПолучитьПериодРассчитанныхИтогов()); + Параметры.ДатаРасчетаИтогов = Мин(Параметры.ДатаРасчетаИтогов, ПолучитьПериодРассчитанныхИтогов(РегистрыНакопления[РегистрМетаданные.Имя])); КонецЕсли; КонецЦикла; @@ -272,6 +273,28 @@ Константы.ПараметрыИтоговИАгрегатов.Установить(Новый ХранилищеЗначения(Параметры)); КонецПроцедуры +// Возвращает период рассчитанных итогов для регистров. +Функция ПолучитьПериодРассчитанныхИтогов(МенеджерРегистра) Экспорт + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Возврат МенеджерРегистра.ПолучитьМаксимальныйПериодРассчитанныхИтогов(); + Иначе + Возврат МенеджерРегистра.ПолучитьПериодРассчитанныхИтогов(); + КонецЕсли; + +КонецФункции + +// Устанавливает период, на который рассчитаны итоги в регистре. +Процедура УстановитьПериодРассчитанныхИтогов(МенеджерРегистра, Период) Экспорт + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + МенеджерРегистра.УстановитьМаксимальныйПериодРассчитанныхИтогов(Период); + Иначе + МенеджерРегистра.УстановитьПериодРассчитанныхИтогов(Период); + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обновление информационной базы diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl index 3d61127f2..69d16ad14 100644 --- a/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl +++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформацией/Module.bsl @@ -12,7 +12,8 @@ // Обработчик для события формы ПриСозданииНаСервере // // Параметры: -// Форма - УправляемаяФорма - Форма объекта-владельца, предназначенная для вывода контактной информации +// Форма - УправляемаяФорма - Форма объекта-владельца, предназначенная для вывода контактной +// информации // Объект - Объект-владелец контактной информации // ПоложениеЗаголовкаКИ - Может принимать значения ПоложениеЗаголовкаЭлементаФормы.Лево // или ПоложениеЗаголовкаЭлементаФормы.Верх (по умолчанию) @@ -56,60 +57,105 @@ ГруппаВидовКИ = Справочники.ВидыКонтактнойИнформации[ИмяГруппыВидовКИ]; ИмяОбъекта = МетаданныеОбъекта.Имя; - ТекстЗапроса =" - |ВЫБРАТЬ - | КонтактнаяИнформация.Представление КАК Представление, - | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, - | КонтактнаяИнформация.НомерСтроки КАК НомерСтроки, - | КонтактнаяИнформация.Вид КАК Вид, - | КонтактнаяИнформация.ИдентификаторСтрокиТабличнойЧасти КАК ИдентификаторСтроки - |ПОМЕСТИТЬ - | КонтактнаяИнформация - |ИЗ - | [ИмяОбъекта].КонтактнаяИнформация КАК КонтактнаяИнформация - |ГДЕ - | КонтактнаяИнформация.Ссылка = &Владелец - |;//////////////////////////////////////////////////////////////////////////////// - |ВЫБРАТЬ - | ВидыКонтактнойИнформации.Ссылка КАК Вид, - | ВидыКонтактнойИнформации.Тип КАК Тип, - | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение, - | ВидыКонтактнойИнформации.Подсказка КАК Подсказка, - | ВидыКонтактнойИнформации.Наименование КАК Наименование, - | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти, - | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, - | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление, - | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей, - | КонтактнаяИнформация.НомерСтроки КАК НомерСтроки, - | КонтактнаяИнформация.ИдентификаторСтроки КАК ИдентификаторСтроки, - | ВЫРАЗИТЬ("""""""" КАК СТРОКА(200)) КАК ИмяРеквизита, - | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий - |ИЗ - | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации - |ЛЕВОЕ СОЕДИНЕНИЕ - | КонтактнаяИнформация КАК КонтактнаяИнформация - |ПО - | ВидыКонтактнойИнформации.Ссылка = КонтактнаяИнформация.Вид - |ГДЕ - | (ВидыКонтактнойИнформации.Родитель = &ГруппаВидовКИ ИЛИ ВидыКонтактнойИнформации.Родитель.Родитель = &ГруппаВидовКИ) - | И ВидыКонтактнойИнформации.ПометкаУдаления = ЛОЖЬ - | - |УПОРЯДОЧИТЬ ПО - | ВидыКонтактнойИнформации.Ссылка ИЕРАРХИЯ - |"; + Если МетаданныеОбъекта.ТабличныеЧасти.КонтактнаяИнформация.Реквизиты.Найти("ИдентификаторСтрокиТабличнойЧасти")=Неопределено Тогда + ДанныеИдентификатораСтрокиТабличнойЧасти = "0"; + Иначе + ДанныеИдентификатораСтрокиТабличнойЧасти = "ЕСТЬNULL(КонтактнаяИнформация.ИдентификаторСтрокиТабличнойЧасти, 0)"; + КонецЕсли; - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ИмяОбъекта]", ПолноеИмяОбъектаМетаданных); - - Если МетаданныеОбъекта.ТабличныеЧасти.КонтактнаяИнформация.Реквизиты.Найти("ИдентификаторСтрокиТабличнойЧасти") = Неопределено Тогда - - ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КонтактнаяИнформация.ИдентификаторСтрокиТабличнойЧасти", "0"); - + Если СтандартныеПодсистемыПовтИсп.ЭтоПлатформа83БезРежимаСовместимости() Тогда + РеквизитИмениПредопределенного = "ВидыКонтактнойИнформации.ИмяПредопределенныхДанных"; + Иначе + РеквизитИмениПредопределенного = "НЕОПРЕДЕЛЕНО"; КонецЕсли; Запрос = Новый Запрос; - Запрос.Текст = ТекстЗапроса; + Если ЗначениеЗаполнено(СсылкаНаОбъект) Тогда + Запрос.Текст =" + |ВЫБРАТЬ + | ВидыКонтактнойИнформации.Ссылка КАК Вид, + | " + РеквизитИмениПредопределенного + " КАК ИмяПредопределенныхДанных, + | ВидыКонтактнойИнформации.Тип КАК Тип, + | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение, + | ВидыКонтактнойИнформации.Подсказка КАК Подсказка, + | ВидыКонтактнойИнформации.Наименование КАК Наименование, + | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти, + | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление, + | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей, + | ЕСТЬNULL(КонтактнаяИнформация.НомерСтроки, 0) КАК НомерСтроки, + | " + ДанныеИдентификатораСтрокиТабличнойЧасти + " КАК ИдентификаторСтроки, + | ВЫРАЗИТЬ("""""""" КАК СТРОКА(200)) КАК ИмяРеквизита, + | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ЛЕВОЕ СОЕДИНЕНИЕ + | " + ПолноеИмяОбъектаМетаданных + ".КонтактнаяИнформация КАК КонтактнаяИнформация + |ПО + | КонтактнаяИнформация.Ссылка = &Владелец + | И ВидыКонтактнойИнформации.Ссылка = КонтактнаяИнформация.Вид + |ГДЕ + | НЕ ВидыКонтактнойИнформации.ПометкаУдаления + | И ( + | ВидыКонтактнойИнформации.Родитель=&ГруппаВидовКИ + | ИЛИ ВидыКонтактнойИнформации.Родитель.Родитель=&ГруппаВидовКИ + | ) + |УПОРЯДОЧИТЬ ПО + | ВидыКонтактнойИнформации.Ссылка ИЕРАРХИЯ + |"; + Иначе + Запрос.Текст =" + |ВЫБРАТЬ + | КонтактнаяИнформация.Представление КАК Представление, + | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, + | КонтактнаяИнформация.НомерСтроки КАК НомерСтроки, + | КонтактнаяИнформация.Вид КАК Вид, + | " + ДанныеИдентификатораСтрокиТабличнойЧасти + " КАК ИдентификаторСтрокиТабличнойЧасти + |ПОМЕСТИТЬ + | КонтактнаяИнформация + |ИЗ + | &ТаблицаКонтактнойИнформации КАК КонтактнаяИнформация + |ИНДЕКСИРОВАТЬ ПО + | Вид + |;//////////////////////////////////////////////////////////////////////////////// + | + |ВЫБРАТЬ + | ВидыКонтактнойИнформации.Ссылка КАК Вид, + | " + РеквизитИмениПредопределенного + " КАК ИмяПредопределенныхДанных, + | ВидыКонтактнойИнформации.Тип КАК Тип, + | ВидыКонтактнойИнформации.ОбязательноеЗаполнение КАК ОбязательноеЗаполнение, + | ВидыКонтактнойИнформации.Подсказка КАК Подсказка, + | ВидыКонтактнойИнформации.Наименование КАК Наименование, + | ВидыКонтактнойИнформации.ЭтоГруппа КАК ЭтоРеквизитТабличнойЧасти, + | ВидыКонтактнойИнформации.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания, + | ЕСТЬNULL(КонтактнаяИнформация.Представление, """") КАК Представление, + | ЕСТЬNULL(КонтактнаяИнформация.ЗначенияПолей, """") КАК ЗначенияПолей, + | ЕСТЬNULL(КонтактнаяИнформация.НомерСтроки, 0) КАК НомерСтроки, + | " + ДанныеИдентификатораСтрокиТабличнойЧасти + " КАК ИдентификаторСтроки, + | ВЫРАЗИТЬ("""""""" КАК СТРОКА(200)) КАК ИмяРеквизита, + | ВЫРАЗИТЬ("""" КАК СТРОКА) КАК Комментарий + |ИЗ + | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации + |ЛЕВОЕ СОЕДИНЕНИЕ + | КонтактнаяИнформация КАК КонтактнаяИнформация + |ПО + | ВидыКонтактнойИнформации.Ссылка = КонтактнаяИнформация.Вид + |ГДЕ + | НЕ ВидыКонтактнойИнформации.ПометкаУдаления + | И ( + | ВидыКонтактнойИнформации.Родитель=&ГруппаВидовКИ + | ИЛИ ВидыКонтактнойИнформации.Родитель.Родитель=&ГруппаВидовКИ + | ) + |УПОРЯДОЧИТЬ ПО + | ВидыКонтактнойИнформации.Ссылка ИЕРАРХИЯ + |"; + + Запрос.УстановитьПараметр("ТаблицаКонтактнойИнформации", Объект.КонтактнаяИнформация.Выгрузить()); + КонецЕсли; + Запрос.УстановитьПараметр("ГруппаВидовКИ", ГруппаВидовКИ); Запрос.УстановитьПараметр("Владелец", СсылкаНаОбъект); + УстановитьПривилегированныйРежим(Истина); КонтактнаяИнформация = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией).Строки; УстановитьПривилегированныйРежим(Ложь); @@ -120,7 +166,12 @@ Если ОбъектКонтактнойИнформации.ЭтоРеквизитТабличнойЧасти Тогда - ИмяВидаКИ = Справочники.ВидыКонтактнойИнформации.ПолучитьИмяПредопределенного(ОбъектКонтактнойИнформации.Вид); + ИмяВидаКИ = ОбъектКонтактнойИнформации.ИмяПредопределенныхДанных; + Если ИмяВидаКИ=Неопределено Тогда + // 8.2 или совместимость + ИмяВидаКИ = Справочники.ВидыКонтактнойИнформации.ПолучитьИмяПредопределенного(ОбъектКонтактнойИнформации.Вид); + КонецЕсли; + Поз = Найти(ИмяВидаКИ, ИмяОбъекта); ИмяТабличнойЧасти = Сред(ИмяВидаКИ, Поз + СтрДлина(ИмяОбъекта)); @@ -152,11 +203,21 @@ КонецЦикла; Иначе - ОбъектКонтактнойИнформации.ИмяРеквизита = "КонтактнаяИнформацияПоле" + КонтактнаяИнформация.Индекс(ОбъектКонтактнойИнформации); - ОбъектКонтактнойИнформации.Комментарий = КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(ОбъектКонтактнойИнформации.ЗначенияПолей); + МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(ОбъектКонтактнойИнформации.ИмяРеквизита, Строка500, , ОбъектКонтактнойИнформации.Наименование, Истина)); + // При обнаружении ошибок распознавания не прерываем генерацию + Попытка + ОбъектКонтактнойИнформации.Комментарий = КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(ОбъектКонтактнойИнформации.ЗначенияПолей); + Исключение + ЗаписьЖурналаРегистрации(КонтактнаяИнформацияСлужебныйПовтИсп.СобытиеЖурналаРегистрации(), + УровеньЖурналаРегистрации.Ошибка, , ОбъектКонтактнойИнформации.ЗначенияПолей, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + ОбщегоНазначенияКлиентСервер.СообщитьПользователю( + НСтр("ru='Ошибка анализа контактной информации, возможно неверный формат значений полей.'"), , + ОбъектКонтактнойИнформации.ИмяРеквизита); + КонецПопытки; КонецЕсли; КонецЦикла; @@ -191,7 +252,7 @@ Если СтрокаКИ.ЭтоРеквизитТабличнойЧасти Тогда - ИмяВидаКИ = Справочники.ВидыКонтактнойИнформации.ПолучитьИмяПредопределенного(СтрокаКИ.Вид); + ИмяВидаКИ = ОбщегоНазначения.ИмяПредопределенного(СтрокаКИ.Вид); Поз = Найти(ИмяВидаКИ, ИмяОбъекта); ИмяТабличнойЧасти = Сред(ИмяВидаКИ, Поз + СтрДлина(ИмяОбъекта)); @@ -293,7 +354,7 @@ ГруппаКоманды = Группа("ГруппаКонтактнаяИнформацияДобавитьПолеВвода", Форма, Родитель, ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная, 5); - ГруппаКоманды.Отображение = ОтображениеОбычнойГруппы.Отступ; + ГруппаКоманды.Отображение = ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыОтступ(); ИмяКоманды = "КонтактнаяИнформацияДобавитьПолеВвода"; Команда = Форма.Команды.Добавить(ИмяКоманды); @@ -301,6 +362,8 @@ Команда.Отображение = ОтображениеКнопки.КартинкаИТекст; Команда.Картинка = БиблиотекаКартинок.ДобавитьЭлементСписка; Команда.Действие = "Подключаемый_КонтактнаяИнформацияВыполнитьКоманду"; + Команда.ИзменяетСохраняемыеДанные = Истина; + ДобавитьОписаниеЭлемента(Форма, ИмяКоманды, 9, Истина); Кнопка = Форма.Элементы.Добавить(ИмяКоманды,Тип("КнопкаФормы"), ГруппаКоманды); @@ -321,6 +384,7 @@ Для Каждого Реквизит Из СписокРеквизитовФормы Цикл Если Реквизит.Имя = "КонтактнаяИнформацияОписаниеДополнительныхРеквизитов" Тогда ПовторныйЗапуск = Истина; + Прервать; КонецЕсли; КонецЦикла; @@ -537,12 +601,16 @@ КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Чтение контактной информации другими подсистемами + // Проверяет адрес на соответствие российского адреса требованиям к адресной информации // // Параметры: // СтруктураПолейАдреса - Структура, СписокЗначений, Строка, содержащая поля адресной информации // Структура и СписокЗначений, содержит имена полей адреса и их значения, -// Строка - содержит строки с именами полей и их значениями +// Строка - строка XML контактной информации или содержит строки с именами +// полей и их значениями. // // ВидКонтактнойИнформации - необязательная ссылка на справочник "Виды контактной информации" // соответствующая проверяемому адресу @@ -565,8 +633,387 @@ Возврат КонтактнаяИнформацияСлужебный.ОшибкиЗаполненияАдреса(СтруктураПолейАдреса, ВидКонтактнойИнформации, Истина); КонецФункции -//////////////////////////////////////////////////////////////////////////////// -// Чтение контактной информации другими подсистемами +// Преобразует все входящие форматы контактной информации в XML +// +// Параметры: +// ЗначенияПолей - строка (XML или старый формат ключ-значение), структура, соответствие или список значений, +// описывающие поля контактной информации. +// Представление - строка представления. Используется, если невозможно определить представление из параметра +// ЗначенияПолей (отсутствие поля "Представление") +// ОжидаемыйВид - ссылка на справочник ВидыКонтактнойИнформации или перечисление ТипыКонтактнойИнформации. +// Используется для определения типа, если его невозможно вычислить по полю ЗначенияПолей +// +// Возвращаемое значение - строка XML данных контактной информации +// +Функция КонтактнаяИнформацияВXML(Знач ЗначенияПолей, Знач Представление="", Знач ОжидаемыйВид=Неопределено) Экспорт + + Результат = КонтактнаяИнформацияXML.ПривестиКонтактнуюИнформациюXML(Новый Структура( + "ЗначенияПолей, Представление, ВидКонтактнойИнформации", + ЗначенияПолей, Представление, ОжидаемыйВид)); + + Возврат Результат.ДанныеXML; +КонецФункции + +// Возвращает соответствующее значение перечисления "ТипыКонтактнойИнформации" по строке XML +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию +// +Функция ТипКонтактнойИнформации(Знач XMLСтрока) Экспорт + Возврат КонтактнаяИнформацияXML.ТипКонтактнойИнформации(XMLСтрока); +КонецФункции + +// Читает или устанавливает представление контактной информации. +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию. Может быть изменена если указан второй параметр. +// НовоеЗначение - если этот параметр указан, то представление в XMLСтрока устанавливается на новое значение +// +Функция ПредставлениеКонтактнойИнформации(XMLСтрока, Знач НовоеЗначение=Неопределено) Экспорт + Возврат КонтактнаяИнформацияСлужебный.ПредставлениеКонтактнойИнформации(XMLСтрока, НовоеЗначение); +КонецФункции + +// Вычисляет представление контактной информации по внутренним значениям полей +// +// Параметры: +// XMLСтрока - Строка - XML контактной информации +// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - набор флагов, описывающих +// параметры генерации представления +// +Функция ПредставлениеКонтактнойИнформацииПоЗначениюПолей(Знач XMLСтрока, Знач ВидКонтактнойИнформации=Неопределено) Экспорт + + Если ВидКонтактнойИнформации=Неопределено Тогда + Вид = СтруктураВидаКонтактнойИнформации(); + Вид.Тип = КонтактнаяИнформацияXML.ТипКонтактнойИнформации(XMLСтрока); + Иначе + Вид = ВидКонтактнойИнформации; + КонецЕсли; + + Возврат КонтактнаяИнформацияСлужебный.СформироватьПредставлениеКонтактнойИнформации(XMLСтрока, Вид); +КонецФункции + +// Читает или устанавливает комментарий к контактной информации +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию. Может быть изменена если указан второй параметр. +// НовоеЗначение - если этот параметр указан, то комментарий в XMLСтрока устанавливается на новое значение +// +Функция КомментарийКонтактнойИнформации(XMLСтрока, Знач НовоеЗначение=Неопределено) Экспорт + Возврат КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(XMLСтрока, НовоеЗначение); +КонецФункции + +// Читает или устанавливает адрес по документу у адреса РФ +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию. Может быть изменена если указан второй параметр. +// НовоеЗначение - если этот параметр указан, то комментарий в XMLСтрока устанавливается на новое значение +// +// Если переданная строка не содержит информации об адресе РФ, то будет вызвано исключение +// +Функция АдресПоДокументуКонтактнойИнформации(XMLСтрока, Знач НовоеЗначение=Неопределено) Экспорт + Если ПустаяСтрока(XMLСтрока) Тогда + Возврат ""; + КонецЕсли; + + ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(); + Чтение = Новый ЧтениеXML; + Чтение.УстановитьСтроку(XMLСтрока); + XDTOАдрес = ФабрикаXDTO.ПрочитатьXML(Чтение, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); + АдресРФ = КонтактнаяИнформацияСлужебный.РоссийскийАдрес(XDTOАдрес.Состав); + Если АдресРФ=Неопределено Тогда + ВызватьИсключение НСтр("ru='Невозможно определить адрес по документу, ожидается адрес РФ'"); + КонецЕсли; + + Если НовоеЗначение<>Неопределено Тогда + АдресРФ.Адрес_по_документу = НовоеЗначение; + XMLСтрока = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(XDTOАдрес); + КонецЕсли; + + Возврат Строка(АдресРФ.Адрес_по_документу); +КонецФункции + +// Возвращает информацию о стране адреса +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию. +// +// Возвращаемое значение: +// Структура с полями "Ссылка", "Наименование", "Ссылка", "Код", "НаименованиеПолное", "КодАльфа2", "КодАльфа3", +// которая описывает страну адреса. +// +// Если передана пустая строка, то возвращается пустая структура. +// Если страна не найдена в справочнике, то но найдена в классфикаторе, то поле "Ссылка" не заполнено +// Если страна не найдена ни в адресе, ни в классификаторе, то будет заполнено только поле "Наименование" +// +// Если переданная строка не содержит информации об адресе, то будет вызвано исключение +// +Функция СтранаАдресаКонтактнойИнформации(Знач XMLСтрока) Экспорт + + Результат = Новый Структура("Ссылка, Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3"); + Если ПустаяСтрока(XMLСтрока) Тогда + Возврат Результат; + КонецЕсли; + + // Читаем наименование страны + ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(); + Чтение = Новый ЧтениеXML; + Чтение.УстановитьСтроку(XMLСтрока); + XDTOАдрес = ФабрикаXDTO.ПрочитатьXML(Чтение, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); + Адрес = XDTOАдрес.Состав; + Если Адрес=Неопределено Или Адрес.Тип()<>ФабрикаXDTO.Тип(ПространствоИмен, "Адрес") Тогда + ВызватьИсключение НСтр("ru='Невозможно определить страну, ожидается адрес.'"); + КонецЕсли; + + Результат.Наименование = СокрЛП(Адрес.Страна); + ДанныеСтраны = Справочники.СтраныМира.ДанныеСтраныМира(, Результат.Наименование); + Возврат ?(ДанныеСтраны=Неопределено, Результат, ДанныеСтраны); +КонецФункции + +// Возвращает наименование субъекта РФ для адреса или пустую строку, если субъект не определен +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию. +// +// Если переданная строка не содержит информации об адресе, то будет вызвано исключение +// +Функция РегионАдресаКонтактнойИнформации(Знач XMLСтрока) Экспорт + Если ПустаяСтрока(XMLСтрока) Тогда + Возврат ""; + КонецЕсли; + + ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(); + Чтение = Новый ЧтениеXML; + Чтение.УстановитьСтроку(XMLСтрока); + XDTOАдрес = ФабрикаXDTO.ПрочитатьXML(Чтение, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); + Адрес = XDTOАдрес.Состав; + Если Адрес=Неопределено Или Адрес.Тип()<>ФабрикаXDTO.Тип(ПространствоИмен, "Адрес") Тогда + ВызватьИсключение НСтр("ru='Невозможно определить субъекта РФ, ожидается адрес.'"); + КонецЕсли; + + АдресРФ = КонтактнаяИнформацияСлужебный.РоссийскийАдрес(Адрес); + Возврат ?(АдресРФ=Неопределено, "", СокрЛП(АдресРФ.СубъектРФ)); +КонецФункции + +// Возвращает наименование города для адреса РФ или пустую строку для иностранного адреса +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию. +// +// Если переданная строка не содержит информации об адресе, то будет вызвано исключение +// +Функция ГородАдресаКонтактнойИнформации(Знач XMLСтрока) Экспорт + Если ПустаяСтрока(XMLСтрока) Тогда + Возврат ""; + КонецЕсли; + + ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(); + Чтение = Новый ЧтениеXML; + Чтение.УстановитьСтроку(XMLСтрока); + XDTOАдрес = ФабрикаXDTO.ПрочитатьXML(Чтение, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); + Адрес = XDTOАдрес.Состав; + Если Адрес=Неопределено Или Адрес.Тип()<>ФабрикаXDTO.Тип(ПространствоИмен, "Адрес") Тогда + ВызватьИсключение НСтр("ru='Невозможно определить город, ожидается адрес.'"); + КонецЕсли; + + АдресРФ = КонтактнаяИнформацияСлужебный.РоссийскийАдрес(Адрес); + Возврат ?(АдресРФ=Неопределено, "", СокрЛП(АдресРФ.Город)); +КонецФункции + +// Возвращает домен сетевого адреса для веб-ссылки или адреса электронной почты +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию. +// +Функция ДоменАдресаКонтактнойИнформации(Знач XMLСтрока) Экспорт + Если ПустаяСтрока(XMLСтрока) Тогда + Возврат ""; + КонецЕсли; + + ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(); + Чтение = Новый ЧтениеXML; + Чтение.УстановитьСтроку(XMLСтрока); + XDTOАдрес = ФабрикаXDTO.ПрочитатьXML(Чтение, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); + Состав = XDTOАдрес.Состав; + Если Состав<>Неопределено Тогда + Тип = Состав.Тип(); + Если Тип=ФабрикаXDTO.Тип(ПространствоИмен, "ВебСайт") Тогда + ДоменАдреса = СокрЛП(Состав.Значение); + Позиция = Найти(ДоменАдреса, "://"); + Если Позиция>0 Тогда + ДоменАдреса = Сред(ДоменАдреса, Позиция + 3); + КонецЕсли; + Позиция = Найти(ДоменАдреса, "/"); + Возврат ?(Позиция=0, ДоменАдреса, Лев(ДоменАдреса, Позиция - 1)); + + ИначеЕсли Тип=ФабрикаXDTO.Тип(ПространствоИмен, "ЭлектроннаяПочта") Тогда + ДоменАдреса = СокрЛП(Состав.Значение); + Позиция = Найти(ДоменАдреса, "@"); + Возврат ?(Позиция=0, ДоменАдреса, Сред(ДоменАдреса, Позиция + 1)); + + КонецЕсли; + КонецЕсли; + + ВызватьИсключение НСтр("ru='Невозможно определить домен, ожидается электронная почта или веб-ссылка.'"); +КонецФункции + +// Возвращает строку с номером телефона без кода и дополнительного номера +// +// Параметры: +// XMLСтрока - строка, описывающая контактную информацию. +// +Функция НомерТелефонаКонтактнойИнформации(Знач XMLСтрока) Экспорт + Если ПустаяСтрока(XMLСтрока) Тогда + Возврат ""; + КонецЕсли; + + ПространствоИмен = КонтактнаяИнформацияКлиентСерверПовтИсп.ПространствоИмен(); + Чтение = Новый ЧтениеXML; + Чтение.УстановитьСтроку(XMLСтрока); + XDTOАдрес = ФабрикаXDTO.ПрочитатьXML(Чтение, ФабрикаXDTO.Тип(ПространствоИмен, "КонтактнаяИнформация")); + Состав = XDTOАдрес.Состав; + Если Состав<>Неопределено Тогда + Тип = Состав.Тип(); + Если Тип=ФабрикаXDTO.Тип(ПространствоИмен, "НомерТелефона") Тогда + Возврат СокрЛП(Состав.Номер); + + ИначеЕсли Тип=ФабрикаXDTO.Тип(ПространствоИмен, "НомерФакса") Тогда + Возврат СокрЛП(Состав.Номер); + + КонецЕсли; + КонецЕсли; + + ВызватьИсключение НСтр("ru='Невозможно определить номер, ожидается телефона или факс.'"); +КонецФункции + +// Сравнивает два экземпляра контактной инфромации. +// +// Параметры: +// Данные1, Данные2 - данные экземпляров контактной информации. Каждый параметр независимо может принимать +// значения следующих типов: +// - ОбъектXTDO. Рассматривается как объект с контактной информацией +// - Строка. Рассматривается как контактная информация в формате XML +// - Структура, описывающие контактную информацию. Ожидаются поля: +// ЗначенияПолей - строка (XML или старый формат ключ-значение), структура, список значений, +// соответствие. Если в этом поле передана строка XML, то остальные поля +// структуры игнорируются. +// Представление - строка представления. Используется в случае, если не удалось вычислить +// представление из ЗначенияПолей (отсутствие в них поля Представление) +// ВидКонтактнойИнформации - ссылка на справочник ВидыКонтактнойИнформации или значение перечисления +// ТипыКонтактнойИнформации. Используется в случае, если не удалось вычислить +// тип из ЗначенияПолей +// Комментарий - строка комментария. Используется в случае, если не удалось вычислить +// комментарий из ЗначенияПолей +// +// Возвращает таблицу отличающихся полей со следующими колонками: +// Путь - строка XPath, идентифицирующая различающееся значение. Значение "ТипКонтактнойИнформации" означает, +// что переданные экземпляры контактной информации различаются типом. +// Описание - строка описания отличающегося реквизита в терминах предметной области +// Значение1 - строка значения, соответствующая объекту, переданному в параметре Данные1 +// Значение2 - строка значения, соответствующая объекту, переданному в параметре Данные2 +// +Функция РазличияКонтактнойИнформации(Знач Данные1, Знач Данные2) Экспорт + Возврат КонтактнаяИнформацияXML.РазличияКонтактнойИнформации(Данные1, Данные2); +КонецФункции + +// Преобразует данные нового формата XML контактной информации в старый формат +// +// Параметры: +// Данные - строка значений полей в новом формате (xml) +// СтарыйСоставПолей - булево - необязательный флаг того, что из состава полей будут исключены +// поля, отсутствующие в версиях БСП младше 2.1.3 +// +// Возвращаемое значение: +// Строка с набором пар ключ-значение, разделенных переносом строки +// +Функция ПредыдущийФорматКонтактнойИнформацииXML(Знач Данные, Знач СтарыйСоставПолей=Ложь) Экспорт + + Если КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(Данные) Тогда + СтарыйФормат = КонтактнаяИнформацияСлужебный.КонтактнаяИнформацияВСтаруюСтруктуру(Данные, СтарыйСоставПолей); + Возврат УправлениеКонтактнойИнформациейКлиентСервер.ПреобразоватьСписокПолейВСтроку( + СтарыйФормат.ЗначенияПолей, Ложь); + КонецЕсли; + + Возврат Данные; +КонецФункции + +// Преобразует данные нового формата XML контактной информации в структуру старого формата +// +// Параметры: +// Данные - строка значений полей, в новом формате (xml) или в старом (ключ=значение) +// ВидКонтактнойИнформации - необязательная ссылка на справочник вида, используется, если "Данные" - пустая строка +// +// Возвращаемое значение: +// Структура с набором пар ключ-значение +// +Функция ПредыдущаяСтруктураКонтактнойИнформацииXML(Знач Данные, Знач ВидКонтактнойИнформации=Неопределено) Экспорт + + Если КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(Данные) Тогда + // Новый формат КИ + Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураЗначенийПолей( + ПредыдущийФорматКонтактнойИнформацииXML(Данные)); + + ИначеЕсли ПустаяСтрока(Данные) И ВидКонтактнойИнформации<>Неопределено Тогда + // Генерируем по виду + Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураКонтактнойИнформацииПоТипу( + ВидКонтактнойИнформации.Тип); + + КонецЕсли; + + // Возвращаем полную структуру для данного вида с заполненными полями + Возврат УправлениеКонтактнойИнформациейКлиентСервер.СтруктураЗначенийПолей(Данные, ВидКонтактнойИнформации); +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +// Определяет данные страны по справочнику стран или классификатору ОКСМ +// +// Параметры: +// КодСтраны - строка или число с кодом ОКСМ страны. Если не указано, то поиск по коду не производится +// Наименование - наименование страны. Если не указано, то поиск по наименованию не производится +// +// Возвращаемое значение: +// Структура с полями "Ссылка", "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3", +// Если страна не найдена в справочнике, но найдена в классфикаторе, то поле "Ссылка" не заполнено +// +// Если страна не найдена ни в адресе, ни в классификаторе, то возвращается значение Неопределено +// +Функция ДанныеСтраныМира(Знач КодСтраны=Неопределено, Знач Наименование=Неопределено) Экспорт + Возврат Справочники.СтраныМира.ДанныеСтраныМира(КодСтраны, Наименование); +КонецФункции + +// Определяет данные страны по классификатору ОКСМ +// +// Параметры: +// КодСтраны - строка кода страны или числовой код +// +// Возвращаемое значение: +// - в случае успеха - структура с полями "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3" +// - в случае отсутствия страны в классификаторе - Неопределено +// +Функция ДанныеКлассификатораСтранМираПоКоду(Знач КодСтраны) Экспорт + Возврат Справочники.СтраныМира.ДанныеКлассификатораСтранМираПоКоду(КодСтраны); +КонецФункции + +// Определяет данные страны по классификатору ОКСМ +// +// Параметры: +// Наименование - строка наименования страны +// +// Возвращаемое значение: +// - в случае успеха - структура с полями "Код", "Наименование", "НаименованиеПолное", "КодАльфа2", "КодАльфа3" +// - в случае отсутствия страны в классификаторе - Неопределено +// +Функция ДанныеКлассификатораСтранМираПоНаименованию(Знач Наименование) Экспорт + Возврат Справочники.СтраныМира.ДанныеКлассификатораСтранМираПоНаименованию(Наименование); +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +// Устарело. В будущем необходимо использовать "КонтактнаяИнформацияОбъекта" +// +Функция ПолучитьКонтактнуюИнформацияОбъекта(Ссылка, ВидКонтактнойИнформации) Экспорт + Возврат КонтактнаяИнформацияОбъекта(Ссылка, ВидКонтактнойИнформации); +КонецФункции // Получить значение определенного вида контактной информации у объекта. // @@ -577,7 +1024,7 @@ // Возвращаемое значение: // Строка - строковое представление значения. // -Функция ПолучитьКонтактнуюИнформацияОбъекта(Ссылка, ВидКонтактнойИнформации) Экспорт +Функция КонтактнаяИнформацияОбъекта(Ссылка, ВидКонтактнойИнформации) Экспорт МассивОбъектов = Новый Массив; МассивОбъектов.Добавить(Ссылка); @@ -618,8 +1065,7 @@ | И Данные.Вид = &Вид |УПОРЯДОЧИТЬ ПО | Данные.ИдентификаторСтрокиТабличнойЧасти - |", Ссылка.Метаданные().ПолноеИмя() - )); + |", Ссылка.Метаданные().ПолноеИмя())); Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("Вид", ВидКонтактнойИнформации); @@ -634,8 +1080,7 @@ СтрокаДанных = Результат.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаДанных, Выборка, "НомерСтроки, Представление"); СтрокаДанных.СтруктураПолей = КонтактнаяИнформацияСлужебный.ПредыдущаяСтруктураКонтактнойИнформацииXML( - Выборка.ЗначенияПолей, ВидКонтактнойИнформации - ); + Выборка.ЗначенияПолей, ВидКонтактнойИнформации); КонецЦикла; Возврат Результат; @@ -658,38 +1103,37 @@ // ЗначенияПолей // Представление // -Процедура СоздатьВТКонтактнаяИнформация(МенеджерВременныхТаблиц, МассивОбъектов, ТипыКИ = Неопределено, ВидыКИ = Неопределено) Экспорт +Процедура СоздатьВТКонтактнаяИнформация(МенеджерВременныхТаблиц, МассивОбъектов, ТипыКИ=Неопределено, ВидыКИ=Неопределено) Экспорт + + Если ТипЗнч(МассивОбъектов) = Тип("Массив") И МассивОбъектов.Количество() > 0 Тогда + Ссылка = МассивОбъектов.Получить(0); + Иначе + ВызватьИсключение НСтр("ru='Неверное значение для массива владельцев контактной информации.'"); + КонецЕсли; + + Запрос = Новый Запрос(" + |ВЫБРАТЬ РАЗРЕШЕННЫЕ + | КонтактнаяИнформация.Ссылка КАК Объект, + | КонтактнаяИнформация.Вид КАК Вид, + | КонтактнаяИнформация.Тип КАК Тип, + | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, + | КонтактнаяИнформация.Представление КАК Представление + |ПОМЕСТИТЬ ВТКонтактнаяИнформация + |ИЗ + | " + Ссылка.Метаданные().ПолноеИмя() + ".КонтактнаяИнформация КАК КонтактнаяИнформация + |ГДЕ + | КонтактнаяИнформация.Ссылка В (&МассивОбъектов) + | " + ?(ТипыКИ=Неопределено, "", "И КонтактнаяИнформация.Тип В (&ТипыКИ)") + " + | " + ?(ВидыКИ=Неопределено, "", "И КонтактнаяИнформация.Вид В (&ВидыКИ)") + " + |"); - Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов); Запрос.УстановитьПараметр("ТипыКИ", ТипыКИ); Запрос.УстановитьПараметр("ВидыКИ", ВидыКИ); - Если ТипЗнч(МассивОбъектов) = Тип("Массив") И МассивОбъектов.Количество() > 0 Тогда - Ссылка = МассивОбъектов.Получить(0); - КонецЕсли; - - Запрос.Текст = - "ВЫБРАТЬ РАЗРЕШЕННЫЕ - | КонтактнаяИнформация.Ссылка КАК Объект, - | КонтактнаяИнформация.Вид КАК Вид, - | КонтактнаяИнформация.Тип КАК Тип, - | КонтактнаяИнформация.ЗначенияПолей КАК ЗначенияПолей, - | КонтактнаяИнформация.Представление КАК Представление - |ПОМЕСТИТЬ ВТКонтактнаяИнформация - |ИЗ - | " + Ссылка.Метаданные().ПолноеИмя() + ".КонтактнаяИнформация КАК КонтактнаяИнформация - |ГДЕ - | КонтактнаяИнформация.Ссылка В(&МассивОбъектов) - | И (КонтактнаяИнформация.Тип В (&ТипыКИ) - | ИЛИ &ТипыКИ = НЕОПРЕДЕЛЕНО) - | И (КонтактнаяИнформация.Вид В (&ВидыКИ) - | ИЛИ &ВидыКИ = НЕОПРЕДЕЛЕНО)"; - Запрос.Выполнить(); - КонецПроцедуры // Предназначена для получения контактной информации для нескольких объектов @@ -833,17 +1277,63 @@ "СтандартныеПодсистемы.ОбновлениеВерсииИБ\ПриДобавленииОбработчиковОбновления" ].Добавить("УправлениеКонтактнойИнформацией"); - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса") Тогда - СерверныеОбработчики[ - "СтандартныеПодсистемы.РаботаВМоделиСервиса.ВыгрузкаЗагрузкаДанных\ПриОпределенииСтандартныхТиповОбщихДанных" - ].Добавить("УправлениеКонтактнойИнформацией"); +КонецПроцедуры + +// Возвращает значение перечисления тип вида контактной информации +// +// Параметры: +// ВидИнформации - перечисление типа, ссылка на справочник ВидыКонтактнойИнформации или объект +// с полем "Тип" +// +Функция ТипВидаКонтактнойИнформации(Знач ВидИнформации) Экспорт + Результат = Неопределено; + + Тип = ТипЗнч(ВидИнформации); + Если Тип=Тип("ПеречислениеСсылка.ТипыКонтактнойИнформации") Тогда + Результат = ВидИнформации; + ИначеЕсли Тип=Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда + Результат = ВидИнформации.Тип; + ИначеЕсли ВидИнформации<>Неопределено Тогда + Данные = Новый Структура("Тип"); + ЗаполнитьЗначенияСвойств(Данные, ВидИнформации); + Результат = Данные.Тип; КонецЕсли; -КонецПроцедуры + Возврат Результат; +КонецФункции //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +Процедура ОбработкаЗаполненияКонтактнойИнформации(Источник, ДанныеЗаполнения, СтандартнаяОбработка) Экспорт + + Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + // Заполним наименование + Наименование = ""; + Если ДанныеЗаполнения.Свойство("Наименование", Наименование) Тогда + Источник.Наименование = Наименование; + КонецЕсли; + + // Заполним контактную информацию + КонтактнаяИнформация = Неопределено; + Если ДанныеЗаполнения.Свойство("КонтактнаяИнформация", КонтактнаяИнформация) Тогда + Для Каждого СтрокаКИ Из КонтактнаяИнформация Цикл + + НоваяСтрокаКИ = Источник.КонтактнаяИнформация.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрокаКИ, СтрокаКИ); + + Если ТипЗнч(СтрокаКИ.ЗначенияПолей) = Тип("СписокЗначений") Тогда + НоваяСтрокаКИ.ЗначенияПолей = Новый ХранилищеЗначения(СтрокаКИ.ЗначенияПолей); + КонецЕсли; + + КонецЦикла; + КонецЕсли; + +КонецПроцедуры + // Обновляет поля контактной информации из ТаблицыЗначений (например объекта другого вида справочника) // // Параметры: @@ -865,7 +1355,7 @@ КонецПроцедуры -// Будет удалено в следующем релизе БСП. Необходимо использовать вызов процедуры "ЗаполнитьКонтактнуюИнформацию" +// Устарело. Будет удалено в следующем релизе БСП. Необходимо использовать "ЗаполнитьКонтактнуюИнформацию" Процедура ЗаполнитьКонтактнуюИнофрмацию(Источник, Приемник) Экспорт ЗаполнитьКонтактнуюИнформацию(Источник, Приемник); КонецПроцедуры @@ -1155,9 +1645,10 @@ Команда.Действие = "Подключаемый_КонтактнаяИнформацияВыполнитьКоманду"; Кнопка.Заголовок = НСтр("ru='Ввести комментарий'"); Кнопка.ИмяКоманды = ИмяКоманды; + Команда.ИзменяетСохраняемыеДанные = Истина; + ДобавитьОписаниеЭлемента(Форма, ИмяКоманды, 1); ДобавитьОписаниеЭлемента(Форма, ИмяКоманды, 9, Истина); - КонецЕсли; Если ОбязательноеЗаполнение И ЭтоНовыйВидКИ Тогда @@ -1194,6 +1685,7 @@ ДобавитьОписаниеЭлемента(Форма, ИмяКоманды, 9, Истина); Команда.Отображение = ОтображениеКнопки.Картинка; Команда.Действие = "Подключаемый_КонтактнаяИнформацияВыполнитьКоманду"; + Элемент = Форма.Элементы.Добавить(ИмяКоманды,Тип("КнопкаФормы"), ГруппаДействий); ДобавитьОписаниеЭлемента(Форма, ИмяКоманды, 2); Элемент.ИмяКоманды = ИмяКоманды; @@ -1203,6 +1695,7 @@ Элемент.Заголовок = НСтр("ru='Заполнить'"); Команда.Подсказка = НСтр("ru='Заполнить адрес'"); Команда.Картинка = БиблиотекаКартинок.ПереместитьВлево; + Команда.ИзменяетСохраняемыеДанные = Истина; ИначеЕсли Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда @@ -1277,18 +1770,6 @@ //////////////////////////////////////////////////////////////////////////////// // Обработчики событий подсистем БСП -// Заполняет массив типов неразделенных данных. Он используется при обновлении ссылок -// при загрузке-выгрузке конфигурации -// -// Параметры: -// МассивТипов - массив -// -Процедура ПриОпределенииСтандартныхТиповОбщихДанных(Знач МассивТипов) Экспорт - - МассивТипов.Добавить(Тип("СправочникСсылка.СтраныМира")); - -КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // Заполнение дополнительных реквизитов табличной части "Контактная информация" @@ -1655,31 +2136,35 @@ // Заполняет дополнительные реквизиты строки табличной части "Контактная информация" // // Параметры: -// СтрокаКИ - строка табличной части "Контактная информация" -// Представление - Строка, представление значения -// ЗначенияПолей - список значений, значения полей +// СтрокаКИ - строка табличной части "Контактная информация" +// Представление - Строка - представление значения +// ЗначенияПолей - СписокЗначений, ОбъектXTDO - значения полей // Процедура ЗаполнитьДополнительныеРеквизитыКонтактнойИнформации(СтрокаКИ, Представление, ЗначенияПолей) - // Заполним значения дополнительных реквизитов таб. части - Если СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда - // Email - СообщениеОбОшибке = ""; - ЗаполнитьРеквизитыТабличнойЧастиДляАдресаЭлектроннойПочты(СтрокаКИ, СообщениеОбОшибке); - Если НЕ ПустаяСтрока(СообщениеОбОшибке) Тогда - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеОбОшибке, , Представление); - Отказ = Истина; - КонецЕсли; - ИначеЕсли СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда - // Адрес - ЗаполнитьРеквизитыТабличнойЧастиДляАдреса(СтрокаКИ, ЗначенияПолей); - ИначеЕсли СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон - Или СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.Факс Тогда - // Телефон/факс - ЗаполнитьРеквизитыТабличнойЧастиДляТелефона(СтрокаКИ, ЗначенияПолей); - ИначеЕсли СтрокаКИ.Тип = Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда - // WWW - ЗаполнитьРеквизитыТабличнойЧастиДляВебСтраницы(СтрокаКИ, ЗначенияПолей); + Если ТипЗнч(ЗначенияПолей)=Тип("ОбъектXDTO") Тогда + ОбъектКИ = ЗначенияПолей; + Иначе + ОбъектКИ = КонтактнаяИнформацияСлужебный.ДесериализацияКонтактнойИнформации(ЗначенияПолей, СтрокаКИ.Вид); + КонецЕсли; + + ТипИнформации = СтрокаКИ.Тип; + + Если ТипИнформации=Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда + ЗаполнитьРеквизитыТабличнойЧастиДляАдресаЭлектроннойПочты(СтрокаКИ, ОбъектКИ); + + ИначеЕсли ТипИнформации=Перечисления.ТипыКонтактнойИнформации.Адрес Тогда + ЗаполнитьРеквизитыТабличнойЧастиДляАдреса(СтрокаКИ, ОбъектКИ); + + ИначеЕсли ТипИнформации=Перечисления.ТипыКонтактнойИнформации.Телефон Тогда + ЗаполнитьРеквизитыТабличнойЧастиДляТелефона(СтрокаКИ, ОбъектКИ); + + ИначеЕсли ТипИнформации=Перечисления.ТипыКонтактнойИнформации.Факс Тогда + ЗаполнитьРеквизитыТабличнойЧастиДляТелефона(СтрокаКИ, ОбъектКИ); + + ИначеЕсли ТипИнформации=Перечисления.ТипыКонтактнойИнформации.ВебСтраница Тогда + ЗаполнитьРеквизитыТабличнойЧастиДляВебСтраницы(СтрокаКИ, ОбъектКИ); + КонецЕсли; КонецПроцедуры @@ -1728,7 +2213,7 @@ Функция ИмяТабличнойЧастиПоВидуКИ(ВидКИ, ИмяОбъекта) Экспорт ГруппаВидаКИ = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидКИ, "Родитель"); - ИмяВидаКИ = Справочники.ВидыКонтактнойИнформации.ПолучитьИмяПредопределенного(ГруппаВидаКИ); + ИмяВидаКИ = ОбщегоНазначения.ИмяПредопределенного(ГруппаВидаКИ); Поз = Найти(ИмяВидаКИ, ИмяОбъекта); Возврат Сред(ИмяВидаКИ, Поз + СтрДлина(ИмяОбъекта)); @@ -1812,12 +2297,158 @@ // Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт - Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "2.1.3.50"; - Обработчик.Процедура = "УправлениеКонтактнойИнформацией.ЗагрузитьСтраныМира"; - Обработчик.ОбщиеДанные = Истина; + // Разделение стран мира + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + Обработчик = Обработчики.Добавить(); + Обработчик.Версия = "2.1.4.8"; + Обработчик.Процедура = "УправлениеКонтактнойИнформацией.ПодготовкаЭталонаРазделенныхСтранМира"; + Обработчик.МонопольныйРежим = Истина; + Обработчик.ОбщиеДанные = Истина; + + Обработчик = Обработчики.Добавить(); + Обработчик.Версия = "2.1.4.8"; + Обработчик.Процедура = "УправлениеКонтактнойИнформацией.ОбновлениеПоЭталонуРазделенныхСтранМира"; + Обработчик.МонопольныйРежим = Истина; + Обработчик.ОбщиеДанные = Ложь; + КонецЕсли; -КонецПроцедуры + // Штатное обновление классификатора без добавления новых стран + Обработчик = Обработчики.Добавить(); + Обработчик.Версия = "2.1.4.9"; + Обработчик.Процедура = "УправлениеКонтактнойИнформацией.ОбработчикОбновленияСуществующихСтранМира"; + Обработчик.РежимВыполнения = "Монопольно"; + Обработчик.ОбщиеДанные = Ложь; + +КонецПроцедуры + +// Неразделенный монопольный обработчик для копирования стран мира из нулевой области +// Сохраняет эталон и список областей данных - адресатов +Процедура ПодготовкаЭталонаРазделенныхСтранМира() Экспорт + УстановитьПривилегированныйРежим(Истина); + + // Контроль версии базы + ИмяРегистраЭталона = "УдалитьСтраныМира"; + Если Метаданные.РегистрыСведений.Найти(ИмяРегистраЭталона)=Неопределено Тогда + Возврат; + КонецЕсли; + + // Запрашиваем данные из нулевой области, создаем эталон с точностью до ссылки + ОбщегоНазначения.УстановитьРазделениеСеанса(Истина, 0); + Запрос = Новый Запрос(" + |ВЫБРАТЬ + | Справочник.Ссылка КАК Ссылка, + | Справочник.Код КАК Код, + | Справочник.Наименование КАК Наименование, + | Справочник.КодАльфа2 КАК КодАльфа2, + | Справочник.КодАльфа3 КАК КодАльфа3, + | Справочник.НаименованиеПолное КАК НаименованиеПолное + |ИЗ + | Справочник.СтраныМира КАК Справочник + |"); + Эталон = Запрос.Выполнить().Выгрузить(); + + ОбщегоНазначения.УстановитьРазделениеСеанса(Ложь); + + // Пишем сам эталон + Набор = РегистрыСведений[ИмяРегистраЭталона].СоздатьНаборЗаписей(); + Набор.Добавить().Значение = Новый ХранилищеЗначения(Эталон, Новый СжатиеДанных(9)); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Набор); + + // Адресаты обновления + Менеджер = РегистрыСведений[ИмяРегистраЭталона].СоздатьМенеджерЗаписи(); + Запрос.Текст = " + |ВЫБРАТЬ + | ОбластьДанныхВспомогательныеДанные КАК ОбластьДанных + |ИЗ + | РегистрСведений.ОбластиДанных + |ГДЕ + | Статус=ЗНАЧЕНИЕ(Перечисление.СтатусыОбластейДанных.Используется) + | И ОбластьДанныхВспомогательныеДанные<>0 + |"; + Отбор = Набор.Отбор.ОбластьДанных; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Отбор.Установить(Выборка.ОбластьДанных); + Набор.Очистить(); + Набор.Добавить().ОбластьДанных = Выборка.ОбластьДанных; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Набор); + КонецЦикла; + +КонецПроцедуры + +// Разделенный обработчик для копирования стран мира из нулевой области +// Используется эталон, подготовленный на предыдущем шаге +Процедура ОбновлениеПоЭталонуРазделенныхСтранМира() Экспорт + + // Контроль версии базы + ИмяРегистраЭталона = "УдалитьСтраныМира"; + Если Метаданные.РегистрыСведений.Найти(ИмяРегистраЭталона)=Неопределено Тогда + Возврат; + КонецЕсли; + + // Ищем эталон для текущей области + Запрос = Новый Запрос(" + |ВЫБРАТЬ + | Эталон.Значение + |ИЗ + | РегистрСведений.УдалитьСтраныМира КАК Адресаты + |ЛЕВОЕ СОЕДИНЕНИЕ + | РегистрСведений.УдалитьСтраныМира КАК Эталон + |ПО + | Эталон.ОбластьДанных = 0 + |ГДЕ + | Адресаты.ОбластьДанных = &ОбластьДанных + |"); + Запрос.УстановитьПараметр("ОбластьДанных", ПараметрыСеанса["ОбластьДанныхЗначение"]); + Результат = Запрос.Выполнить(); + Если Результат.Пустой() Тогда + // Текущую область не надо обновлять + Возврат; + КонецЕсли; + + Эталон = Результат.Выгрузить()[0].Значение.Получить(); + Запрос = Новый Запрос(" + |ВЫБРАТЬ + | Данные.Ссылка КАК Ссылка, + | Данные.Код КАК Код, + | Данные.Наименование КАК Наименование, + | Данные.КодАльфа2 КАК КодАльфа2, + | Данные.КодАльфа3 КАК КодАльфа3, + | Данные.НаименованиеПолное КАК НаименованиеПолное + |ПОМЕСТИТЬ + | Эталон + |ИЗ + | &Данные КАК Данные + |ИНДЕКСИРОВАТЬ ПО + | Ссылка + |;/////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | Эталон.Ссылка КАК Ссылка, + | Эталон.Код КАК Код, + | Эталон.Наименование КАК Наименование, + | Эталон.КодАльфа2 КАК КодАльфа2, + | Эталон.КодАльфа3 КАК КодАльфа3, + | Эталон.НаименованиеПолное КАК НаименованиеПолное + |ИЗ + | Эталон КАК Эталон + |ЛЕВОЕ СОЕДИНЕНИЕ + | Справочник.СтраныМира КАК СтраныМира + |ПО + | СтраныМира.Ссылка = Эталон.Ссылка + |ГДЕ + | СтраныМира.Ссылка ЕСТЬ NULL + |"); + Запрос.УстановитьПараметр("Данные", Эталон); + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + Страна = Справочники.СтраныМира.СоздатьЭлемент(); + Страна.УстановитьСсылкуНового(Выборка.Ссылка); + ЗаполнитьЗначенияСвойств(Страна, Выборка, , "Ссылка"); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Страна); + КонецЦикла; + +КонецПроцедуры // Обновляет один вид контактной информации. // @@ -1833,7 +2464,6 @@ Порядок = Неопределено) Экспорт Объект = ВидКИ.ПолучитьОбъект(); - ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка); Объект.Тип = Тип; Объект.МожноИзменятьСпособРедактирования = МожноИзменятьСпособРедактирования; Объект.РедактированиеТолькоВДиалоге = РедактированиеТолькоВДиалоге; @@ -1841,8 +2471,7 @@ Если Порядок <> Неопределено Тогда Объект.РеквизитДопУпорядочивания = Порядок; КонецЕсли; - - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецПроцедуры @@ -1855,7 +2484,10 @@ // МожноИзменятьСпособРедактирования - Булево - Истина, если есть возможность изменять настройки вида, Ложь - иначе. // РедактированиеТолькоВДиалоге - Булево - Истина, если редактировать только в диалоге, Ложь - иначе. // ОбязательноеЗаполнение - Булево - Истина, если требуется обязательное заполнение поля, Ложь - иначе. -// Порядок - Неопределено или Число - порядок вида контактной информации. +// Порядок - Неопределено или Число - порядок вида контактной информации, положение в списке относительно других элементов: +// Неопределено - не переназначать; +// 0 - назначить автоматически; +// Число > 0 - назначить указанный порядок. // РазрешитьВводНесколькихЗначений - Булево - Признак возможности использования дополнительных полей ввода для данного вида. // НастройкиПроверки // Для типа Адрес - Структура @@ -1873,12 +2505,18 @@ // Установка параметра ПроверятьКорректность в значение Истина требует так же установить параметр // ЗапрещатьВводНекорректного в значение Истина. // +// При использовании параметра Порядок следует внимательно следить за уникальностью назначаемого значения. Если после выполнения обновления значения +// порядка окажутся неуникальными в пределах группы, то настройка порядка пользователем будет невозможна. +// В общем случае рекомендуется не использовать этот параметр (порядок не изменится), либо заполнять его значением 0 (порядок будет назначен автоматически в подсистеме +// "Настройка порядка элементов" при выполнении процедуры). +// Для размещения видов КИ в определённой последовательности относительно друг друга без явного размещения в начале списка достаточно вызывать данную процедуру +// в нужной последовательности для каждого вида КИ с указанием порядка 0. +// Если добавляется предопределённый вид КИ к уже существующим в ИБ, не рекомендуется назначать порядок в явном виде. +// Процедура ОбновитьВидКонтактнойИнформации(Вид, Тип, Подсказка, МожноИзменятьСпособРедактирования, РедактированиеТолькоВДиалоге, ОбязательноеЗаполнение, Порядок = Неопределено, РазрешитьВводНесколькихЗначений = Ложь, НастройкиПроверки = Неопределено) Экспорт Объект = Вид.ПолучитьОбъект(); - ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка); - Объект.Тип = Тип; Объект.Подсказка = Подсказка; Объект.МожноИзменятьСпособРедактирования = МожноИзменятьСпособРедактирования; @@ -1943,62 +2581,35 @@ УстановитьЗначенияРеквизитовПроверки(Объект, НастройкиПроверки); Иначе - УстановитьЗначенияРеквизитовПроверки(Объект); - КонецЕсли; Если Порядок <> Неопределено Тогда Объект.РеквизитДопУпорядочивания = Порядок; КонецЕсли; - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); КонецПроцедуры -// Обновить справочник стран мира согласно данным из макета Справочники.СтраныМира.Макеты.Классификатор. -// Идентификация существующих элементов в справочнике выполняется по полю Код. +// Загружаем все страны мира из классификатора принудительно // Процедура ЗагрузитьСтраныМира() Экспорт - - Запрос = Новый Запрос(" - |ВЫБРАТЬ - | СтраныМира.Ссылка КАК Ссылка, - | СтраныМира.Код КАК Код, - | СтраныМира.Наименование КАК Наименование, - | СтраныМира.КодАльфа2 КАК КодАльфа2, - | СтраныМира.КодАльфа3 КАК КодАльфа3, - | СтраныМира.НаименованиеПолное КАК НаименованиеПолное - |ИЗ - | Справочник.СтраныМира КАК СтраныМира - |"); - СтраныМира = Запрос.Выполнить().Выгрузить(); - СтраныМира.Индексы.Добавить("Код"); - - Макет = Справочники.СтраныМира.ПолучитьМакет("Классификатор"); - - ДанныеКлассификатора = ОбщегоНазначения.ТаблицаЗначенийИзXML(Макет.ПолучитьТекст()); - - // Сравнивать в запросе нельзя из-за возможной регистронезависимости базы данных - Для Каждого СтрокаКлассификатора Из ДанныеКлассификатора.Данные Цикл - СтрокаСправочника = СтраныМира.Найти(СтрокаКлассификатора.Код, "Код"); - Если СтрокаСправочника=Неопределено Тогда - // Добавление страны - Страна = Справочники.СтраныМира.СоздатьЭлемент(); - ИначеЕсли СтрокаСправочника.Наименование<>СтрокаКлассификатора.Наименование - Или СтрокаСправочника.КодАльфа2<>СтрокаКлассификатора.КодАльфа2 - Или СтрокаСправочника.КодАльфа3<>СтрокаКлассификатора.КодАльфа3 - Или СтрокаСправочника.НаименованиеПолное<>СтрокаКлассификатора.НаименованиеПолное - Тогда - // Изменение страны - Страна = СтрокаСправочника.Ссылка.ПолучитьОбъект(); - Иначе - Продолжить; - КонецЕсли; - ЗаполнитьЗначенияСвойств(Страна, СтрокаКлассификатора, "Код, Наименование, КодАльфа2, КодАльфа3, НаименованиеПолное"); - Страна.Записать(); - КонецЦикла; - + Справочники.СтраныМира.ОбновитьСтраныМираПоКлассификатору(Истина); +КонецПроцедуры + +// Обновляем только существующие элементы стран мира по классификатору +Процедура ОбновитьСуществующиеСтраныМира() Экспорт + Справочники.СтраныМира.ОбновитьСтраныМираПоКлассификатору(); +КонецПроцедуры + +// Обновляем только существующие элементы стран мира по классификатору, исключения не выбрасываем +Процедура ОбработчикОбновленияСуществующихСтранМира() Экспорт + Попытка + Справочники.СтраныМира.ОбновитьСтраныМираПоКлассификатору(); + Исключение + // Действие не требуется, информация записана в журнал + КонецПопытки; КонецПроцедуры // Получить значения определенного типа контактной информации у объекта. @@ -2026,20 +2637,20 @@ Запрос.Текст = "ВЫБРАТЬ | КонтактнаяИнформацияОбъекта.Представление, - | КонтактнаяИнформацияОбъекта.Вид.Представление КАК Вид + | КонтактнаяИнформацияОбъекта.Вид |ПОМЕСТИТЬ ВТКонтактнаяИнформацияОбъекта |ИЗ - | КонтактнаяИнформацияОбъекта КАК КонтактнаяИнформацияОбъекта + | &КонтактнаяИнформацияОбъекта КАК КонтактнаяИнформацияОбъекта |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | КонтактнаяИнформацияОбъекта.Представление КАК Значение, - | КонтактнаяИнформацияОбъекта.Вид КАК Вид + | ПРЕДСТАВЛЕНИЕ(КонтактнаяИнформацияОбъекта.Вид) КАК Вид |ИЗ | ВТКонтактнаяИнформацияОбъекта КАК КонтактнаяИнформацияОбъекта"; - Возврат КонтактнаяИнформацияОбъекта; + Возврат Запрос.Выполнить().Выгрузить(); КонецФункции @@ -2087,6 +2698,21 @@ КонецФункции + +// Конструктор структуры, совместимой по полям сл справочникам видов КИ +// +Функция СтруктураВидаКонтактнойИнформации() Экспорт + + Результат = Новый Структура; + Для Каждого Мета Из Метаданные.Справочники.ВидыКонтактнойИнформации.Реквизиты Цикл + Результат.Вставить(Мета.Имя, Мета.Тип.ПривестиЗначение()); + КонецЦикла; + + Возврат Результат; +КонецФункции + + + //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов в другие подсистемы @@ -2117,8 +2743,8 @@ Процедура ПриОпределенииЗаписейПоИндексу(Индекс, АдресныеОбъекты) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - АдресныеОбъекты = Модуль.НайтиЗаписиПоИндексу(Индекс); + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + АдресныеОбъекты = МодульАдресныйКлассификатор.НайтиЗаписиПоИндексу(Индекс); КонецЕсли; КонецПроцедуры @@ -2138,8 +2764,8 @@ Процедура ПоКодуАдресногоЭлементаВСтруктуруПолучитьЕгоКомпоненты(КодАдресногоЭлемента, Результат) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - Модуль.ПоКодуАдресногоЭлементаВСтруктуруПолучитьЕгоКомпоненты(КодАдресногоЭлемента, Результат); + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + МодульАдресныйКлассификатор.ПоКодуАдресногоЭлементаВСтруктуруПолучитьЕгоКомпоненты(КодАдресногоЭлемента, Результат); КонецЕсли; КонецПроцедуры @@ -2165,8 +2791,8 @@ Процедура ПриОпределенииСтруктурыАдреса(СтруктураАдреса, КодАдресногоЭлемента, Дом = "", Корпус = "", Квартира = "") Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - Модуль.ПолучитьСтруктуруАдреса(КодАдресногоЭлемента, Дом, Корпус, Квартира); + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + МодульАдресныйКлассификатор.ПолучитьСтруктуруАдреса(КодАдресногоЭлемента, Дом, Корпус, Квартира); КонецЕсли; КонецПроцедуры @@ -2189,8 +2815,8 @@ НазваниеУлицы, НомерДома, НомерКорпуса, РодительИндекса = Неопределено) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - Индекс = Модуль.ПолучитьИндекс(НазваниеРегиона, НазваниеРайона, НазваниеГорода, + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + Индекс = МодульАдресныйКлассификатор.ПолучитьИндекс(НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы, НомерДома, НомерКорпуса, РодительИндекса); КонецЕсли; @@ -2216,8 +2842,8 @@ НаселенныйПункт, УровеньЭлемента, ПризнакАктуальности = 0) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - СписокАвтоПодбора = Модуль.АвтоПодборТекстВАдресномЭлементе(Текст, Регион, Район, Город, + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + СписокАвтоПодбора = МодульАдресныйКлассификатор.АвтоПодборТекстВАдресномЭлементе(Текст, Регион, Район, Город, НаселенныйПункт, УровеньЭлемента, ПризнакАктуальности); КонецЕсли; @@ -2250,8 +2876,8 @@ НазваниеГорода = "", НазваниеНаселенногоПункта = "", НазваниеУлицы = "", НомерДома = "", НомерКорпуса = "") Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - СтруктураПроверки = Модуль.ПроверитьСоответствиеАдресаКЛАДРу(УказанныйИндекс, НазваниеРегиона,НазваниеРайона, + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + СтруктураПроверки = МодульАдресныйКлассификатор.ПроверитьСоответствиеАдресаКЛАДРу(УказанныйИндекс, НазваниеРегиона,НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы, НомерДома , НомерКорпуса); КонецЕсли; @@ -2275,8 +2901,8 @@ НазваниеНаселенногоПункта = "", НазваниеУлицы = "", Уровень = 1) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - АдресныйЭлементЗагружен = Модуль.АдресныйЭлементЗагружен(НазваниеРегиона, НазваниеРайона, НазваниеГорода, + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + АдресныйЭлементЗагружен = МодульАдресныйКлассификатор.АдресныйЭлементЗагружен(НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы, Уровень); КонецЕсли; @@ -2292,8 +2918,8 @@ Процедура ПриОпределенииИмениИАдресногоСокращение(ИмяИАдресноеСокращение, СтрокаЭлемента, АдресноеСокращение) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - ИмяИАдресноеСокращение = Модуль.ПолучитьИмяИАдресноеСокращение(СтрокаЭлемента, АдресноеСокращение); + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + ИмяИАдресноеСокращение = МодульАдресныйКлассификатор.ПолучитьИмяИАдресноеСокращение(СтрокаЭлемента, АдресноеСокращение); КонецЕсли; КонецПроцедуры @@ -2318,8 +2944,8 @@ НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - СтруктураЗагруженныхЭлементовАдреса = Модуль.СтруктураЗагруженныхЭлементовАдреса(НазваниеРегиона, + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + СтруктураЗагруженныхЭлементовАдреса = МодульАдресныйКлассификатор.СтруктураЗагруженныхЭлементовАдреса(НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы); КонецЕсли; @@ -2334,8 +2960,8 @@ Процедура ПриОпределенииНаименованияРегионаПоКоду(НаименованиеРегиона, КодРегиона) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - НаименованиеРегиона = Модуль.ПолучитьНаименованиеРегионаПоКоду(КодРегиона); + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + НаименованиеРегиона = МодульАдресныйКлассификатор.ПолучитьНаименованиеРегионаПоКоду(КодРегиона); КонецЕсли; КонецПроцедуры @@ -2349,8 +2975,8 @@ Процедура ПриОпределенииКодаРегионаПоНаименованию(КодРегиона, Регион) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - КодРегиона = Модуль.ПолучитьКодРегионаПоНаименованию(Регион); + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + КодРегиона = МодульАдресныйКлассификатор.ПолучитьКодРегионаПоНаименованию(Регион); КонецЕсли; КонецПроцедуры @@ -2368,8 +2994,8 @@ Процедура ПриОпределенииСтрокиАдресногоКлассификатораПоАдреснымЭлементам(СтруктураАдресногоКлассификатора, НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - СтруктураАдресногоКлассификатора = Модуль.ВернутьСтруктуруАдресногоКлассификатораПоАдреснымЭлементам( + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + СтруктураАдресногоКлассификатора = МодульАдресныйКлассификатор.ВернутьСтруктуруАдресногоКлассификатораПоАдреснымЭлементам( НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, НазваниеУлицы); КонецЕсли; @@ -2391,9 +3017,9 @@ Процедура ПриОчисткеПотомковПоУровнюАдресногоЭлемента(Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус, Квартира, Уровень) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - Модуль.ОчиститьПотомковПоУровнюАдресногоЭлемента(Регион, Район, Город, - НаселенныйПункт, Улица, Дом, Корпус, Квартира, Уровень); + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + МодульАдресныйКлассификатор.ОчиститьПотомковПоУровнюАдресногоЭлемента(Регион, Район, Город, + НаселенныйПункт, Улица, Дом, Корпус, Квартира, Уровень); КонецЕсли; КонецПроцедуры @@ -2416,8 +3042,8 @@ Процедура ПриБлокировкеРеквизитовОбъекта(Форма) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда - Модуль = Вычислить("ЗапретРедактированияРеквизитовОбъектов"); - Модуль.ЗаблокироватьРеквизиты(Форма); + МодульЗапретРедактированияРеквизитовОбъектов = Вычислить("ЗапретРедактированияРеквизитовОбъектов"); + МодульЗапретРедактированияРеквизитовОбъектов.ЗаблокироватьРеквизиты(Форма); КонецЕсли; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлассификаторы/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлассификаторы/Module.bsl index 6ca158c0e..d95ba8af1 100644 --- a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлассификаторы/Module.bsl +++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлассификаторы/Module.bsl @@ -34,17 +34,16 @@ // Функция ПроверитьСоответствиеАдресаКЛАДРу(УказанныйИндекс = "", НазваниеРегиона = "", НазваниеРайона = "", НазваниеГорода = "", НазваниеНаселенногоПункта = "", НазваниеУлицы = "", НомерДома = "", НомерКорпуса = "") Экспорт - + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); - Возврат Модуль.ПроверитьСоответствиеАдресаКЛАДРу(УказанныйИндекс, - НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, - НазваниеУлицы, НомерДома - ); - КонецЕсли; - - Возврат Неопределено; - + МодульАдресныйКлассификатор = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификатор"); + Возврат МодульАдресныйКлассификатор.ПроверитьСоответствиеАдресаКЛАДРу(УказанныйИндекс, + НазваниеРегиона, НазваниеРайона, НазваниеГорода, НазваниеНаселенногоПункта, + НазваниеУлицы, НомерДома); + КонецЕсли; + + Возврат Неопределено; + КонецФункции // Устарела. Определяет Используются ли в конфигурации классификаторы diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиент/Module.bsl index fe77ed832..d0a3f528b 100644 --- a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиент/Module.bsl +++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиент/Module.bsl @@ -37,7 +37,7 @@ Возврат; КонецЕсли; - ДанныеСтроки.ЗначенияПолей = КонтактнаяИнформацияВызовСервера.ПарсингКонтактнойИнформацииXML(Текст, ДанныеСтроки.Вид); + ДанныеСтроки.ЗначенияПолей = КонтактнаяИнформацияСлужебныйВызовСервера.ПарсингКонтактнойИнформацииXML(Текст, ДанныеСтроки.Вид); ДанныеСтроки.Представление = Текст; Если ЭтоТабличнаяЧасть Тогда @@ -69,7 +69,8 @@ // Если представление было изменено в поле и не соответствует реквизиту, то приводим в соответствие Если ДанныеЗаполнения[Элемент.Имя]<>Элемент.ТекстРедактирования Тогда ДанныеЗаполнения[Элемент.Имя] = Элемент.ТекстРедактирования; - ДанныеСтроки.ЗначенияПолей = Неопределено + ПредставлениеПриИзменении(Форма, Элемент, ЭтоТабличнаяЧасть); + Форма.Модифицированность = Истина; КонецЕсли; ПараметрыОткрытия = Новый Структура; @@ -81,39 +82,40 @@ ПараметрыОткрытия.Вставить("Комментарий", ДанныеСтроки.Комментарий); КонецЕсли; - РезультатОткрытияФормы = КонтактнаяИнформацияКлиент.ОткрытьФормуКонтактнойИнформацииМодально(ПараметрыОткрытия); + РезультатОткрытияФормы = ОткрытьФормуКонтактнойИнформацииМодально(ПараметрыОткрытия); Если ТипЗнч(РезультатОткрытияФормы)<>Тип("Структура") Тогда Возврат Результат; КонецЕсли; + ТекстПредставления = СтрЗаменить(РезультатОткрытияФормы.Представление, Символы.ПС, " "); + Если ЭтоТабличнаяЧасть Тогда - ДанныеЗаполнения[Элемент.Имя + "ЗначенияПолей"] = РезультатОткрытияФормы.КонтактнаяИнформация; Иначе - Если ПустаяСтрока(ДанныеСтроки.Комментарий) И Не ПустаяСтрока(РезультатОткрытияФормы.Комментарий) Тогда Результат.Вставить("ЭтоДобавлениеКомментария", Истина); + ИначеЕсли Не ПустаяСтрока(ДанныеСтроки.Комментарий) И ПустаяСтрока(РезультатОткрытияФормы.Комментарий) Тогда Результат.Вставить("ЭтоДобавлениеКомментария", Ложь); + Иначе Если Не ПустаяСтрока(ДанныеСтроки.Комментарий) Тогда Форма.Элементы["Комментарий" + Элемент.Имя].Заголовок = РезультатОткрытияФормы.Комментарий; КонецЕсли; + КонецЕсли; - ДанныеСтроки.Представление = РезультатОткрытияФормы.Представление; + ДанныеСтроки.Представление = ТекстПредставления; ДанныеСтроки.ЗначенияПолей = РезультатОткрытияФормы.КонтактнаяИнформация; ДанныеСтроки.Комментарий = РезультатОткрытияФормы.Комментарий; - КонецЕсли; - ДанныеЗаполнения[Элемент.Имя] = РезультатОткрытияФормы.Представление; + ДанныеЗаполнения[Элемент.Имя] = ТекстПредставления; Форма.Модифицированность = Истина; Возврат Результат; - КонецФункции // Событие Очистка в колонке Представление таблицы контактной информации @@ -136,6 +138,36 @@ КонецФункции +// Событие ОбработкаВыбора в поле ввода страны мира +Процедура СтранаМираОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Экспорт + Если Не СтандартнаяОбработка Тогда + Возврат; + КонецЕсли; + + ТипВыбранного = ТипЗнч(ВыбранноеЗначение); + Если ТипВыбранного=Тип("Массив") Тогда + СписокПреобразования = Новый Соответствие; + Для Индекс=0 По ВыбранноеЗначение.ВГраница() Цикл + Данные = ВыбранноеЗначение[Индекс]; + Если ТипЗнч(Данные)=Тип("Структура") И Данные.Свойство("Код") Тогда + СписокПреобразования.Вставить(Индекс, Данные.Код); + КонецЕсли; + КонецЦикла; + + Если СписокПреобразования.Количество()>0 Тогда + КонтактнаяИнформацияСлужебныйВызовСервера.КоллекцияСтранМираПоДаннымКлассификатора(СписокПреобразования); + Для Каждого КлючЗначение Из СписокПреобразования Цикл + ВыбранноеЗначение[КлючЗначение.Ключ] = КлючЗначение.Значение; + КонецЦикла; + КонецЕсли; + + ИначеЕсли ТипВыбранного=Тип("Структура") И ВыбранноеЗначение.Свойство("Код") Тогда + ВыбранноеЗначение = КонтактнаяИнформацияСлужебныйВызовСервера.СтранаМираПоДаннымКлассификатора(ВыбранноеЗначение.Код); + + КонецЕсли; + +КонецПроцедуры + // Обработчик дополнительной команды (копирование, активация и.т.п) контактной информации Функция ПодключаемаяКоманда(Форма, Знач ИмяКоманды) Экспорт @@ -199,6 +231,77 @@ КонецПроцедуры +// Конструктор для структуры параметров открытия формы контактной информации +// +// Параметры: +// ВидКонтактнойИнформации - вид редактируемой информации, СправочникСсылка.ВидыКонтактнойИнформации +// Значение - строка с сериализованным значением полей контактной информации +// Представление - необязательное представление +// +Функция ПараметрыФормыКонтактнойИнформации(ВидКонтактнойИнформации, Значение, Представление=Неопределено, Комментарий=Неопределено) Экспорт + Возврат Новый Структура("ВидКонтактнойИнформации, ЗначенияПолей, Представление, Комментарий", + ВидКонтактнойИнформации, Значение, Представление, Комментарий); +КонецФункции + +// Открывает подходящую форму контактной информации для редактирования или просмотра +// +// Параметры: +// Параметры - результат функции ПараметрыФормыКонтактнойИнформации +// Владелец - параметр для открываемой формы +// Уникальность - параметр для открываемой формы +// Окно - параметр для открываемой формы +// +// Возвращаемое значение: необходимая форма +// +Функция ОткрытьФормуКонтактнойИнформации(Параметры, Владелец=Неопределено, Уникальность=Неопределено, Окно=Неопределено) Экспорт + Возврат ОткрытьФормуКонтактнойИнформацииВнутр(Параметры, Владелец, Уникальность, Окно); +КонецФункции + +// Модально открывает подходящую форму контактной информации для редактирования или просмотра +// +// Параметры: +// Параметры - результат функции ПараметрыФормыКонтактнойИнформации +// Владелец - параметр для открываемой формы +// Уникальность - параметр для открываемой формы +// Окно - параметр для открываемой формы +// +// Возвращаемое значение: необходимая форма +// +Функция ОткрытьФормуКонтактнойИнформацииМодально(Параметры, Владелец=Неопределено, Уникальность=Неопределено, Окно=Неопределено) Экспорт + Возврат ОткрытьФормуКонтактнойИнформацииВнутр(Параметры, Владелец, Уникальность, Окно, Истина); +КонецФункции + +// Производит действие для экземпляра контактной информации по его типу +// +// Параметры: +// ЗначенияПолей - строка (XML или старый формат ключ-значение), структура, соответствие или список значений, +// описывающие контактную информацию. +// Представление - строка представления. Используется, если невозможно определить представление из параметра +// ЗначенияПолей (отсутствие поля "Представление") +// ОжидаемыйВид - ссылка на справочник ВидыКонтактнойИнформации или перечисление ТипыКонтактнойИнформации, +// объект с полем "Тип". Используется для определения типа, если его невозможно вычислить +// по полю ЗначенияПолей +// +Процедура АктивироватьКонтактнуюИнформацию(Знач ЗначенияПолей, Знач Представление="", ОжидаемыйВид=Неопределено) Экспорт + + КонтактнаяИнформация = КонтактнаяИнформацияСлужебныйВызовСервера.ПривестиКонтактнуюИнформациюXML( + Новый Структура("ЗначенияПолей, Представление, ВидКонтактнойИнформации", ЗначенияПолей, Представление, ОжидаемыйВид)); + ТипИнформации = КонтактнаяИнформация.ТипКонтактнойИнформации; + + ВсеВиды = "Перечисление.ТипыКонтактнойИнформации."; + Если ТипИнформации=ПредопределенноеЗначение(ВсеВиды + "АдресЭлектроннойПочты") Тогда + СоздатьПисьмоПоКонтактнойИнформации(КонтактнаяИнформация.ДанныеXML); + + ИначеЕсли ТипИнформации=ПредопределенноеЗначение(ВсеВиды + "ВебСтраница") Тогда + ОткрытьСсылкуПоКонтактнойИнформации(КонтактнаяИнформация.ДанныеXML); + + Иначе + ВызватьИсключение СтрЗаменить(НСтр("ru='Нельзя активировать контактную информацию с типом ""%1""'"), + "%1", ТипИнформации); + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -399,23 +502,8 @@ Процедура ПриЗагрузкеАдресногоКлассификатора() Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификаторКлиент"); - Модуль.ЗагрузитьАдресныйКлассификатор(); - КонецЕсли; - -КонецПроцедуры - -// Подбирает адресный объект через форму. -// -// Параметры: -// СтруктураАдреса - Структура - структура адреса. -// СтруктураРезультата - Неопределено или Структура - структура возврат выбранного адресного объекта. -// -Процедура ПриПодбореАдресногоОбъекта(Знач СтруктураАдреса, СтруктураРезультата) Экспорт - - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификаторКлиент"); - Модуль.ПриПодбореАдресногоОбъекта(СтруктураАдреса, СтруктураРезультата); + МодульАдресныйКлассификаторКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("АдресныйКлассификаторКлиент"); + МодульАдресныйКлассификаторКлиент.ЗагрузитьАдресныйКлассификатор(); КонецЕсли; КонецПроцедуры @@ -425,8 +513,8 @@ Процедура ПриРазрешенииРедактированияРеквизитовОбъекта(Форма, РедактированиеРазрешено) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектовКлиент"); - РедактированиеРазрешено = Модуль.РазрешитьРедактированиеРеквизитовОбъекта(Форма); + МодульЗапретРедактированияРеквизитовОбъектовКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектовКлиент"); + РедактированиеРазрешено = МодульЗапретРедактированияРеквизитовОбъектовКлиент.РазрешитьРедактированиеРеквизитовОбъекта(Форма); КонецЕсли; КонецПроцедуры @@ -436,8 +524,8 @@ Процедура ПриУстановкеДоступностиЭлементовФормы(Форма) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЗапретРедактированияРеквизитовОбъектов") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектовКлиент"); - Модуль.УстановитьДоступностьЭлементовФормы(Форма); + МодульЗапретРедактированияРеквизитовОбъектовКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ЗапретРедактированияРеквизитовОбъектовКлиент"); + МодульЗапретРедактированияРеквизитовОбъектовКлиент.УстановитьДоступностьЭлементовФормы(Форма); КонецЕсли; КонецПроцедуры @@ -450,3 +538,243 @@ КонецЕсли; Возврат Неопределено; КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Обработчик события НачалоВыбора для улицы +// +// Параметры: +// Элемент - вызывающий элемент формы +// КодКлассификатораНаселенногоПункта - ограничение по населенному пункту +// ТекущееЗначение - текущее значение - или код классификатора, или текст +// ПараметрыФормы - необязательная дополнительная структура параметров для формы подбора +// +Процедура НачалоВыбораУлицы(Элемент, КодКлассификатораНаселенногоПункта, ТекущееЗначение, ПараметрыФормы=Неопределено) Экспорт + Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); + ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; + + Если Вариант=Неопределено Тогда + // Нет подсистемы классификатора + Возврат; + ИначеЕсли Вариант=ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда + НачалоВыбораУлицыКЛАДР(Элемент, КодКлассификатораНаселенногоПункта, ТекущееЗначение, ПараметрыФормы); + КонецЕсли; + +КонецПроцедуры + +// Обработчик события НачалоВыбора для элемента адреса (субъект РФ, район, город и т.п.) +// +// Параметры: +// Элемент - вызывающий элемент формы +// КодЧастиАдреса - идентификатор обрабатываемой части адреса, зависит от классификатора +// ЧастиАдреса - значения для других частей адреса, зависит от классификатора +// ПараметрыФормы - необязательная дополнительная структура параметров для формы подбора +// +Процедура НачалоВыбораЭлементаАдреса(Элемент, КодЧастиАдреса, ЧастиАдреса, ПараметрыФормы=Неопределено) Экспорт + Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); + ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; + + Если Вариант=Неопределено Тогда + // Нет подсистемы классификатора + Возврат; + ИначеЕсли Вариант=ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда + НачалоВыбораЭлементаАдресаКЛАДР(Элемент, КодЧастиАдреса, ЧастиАдреса, ПараметрыФормы); + КонецЕсли; + +КонецПроцедуры + +// Возвращает полное наименование для населенного пункта. Под населенным пунктом понимается синтетическое +// поле, характеризующее все, что больше улицы +// +// Параметры: +// ЧастиАдреса - значения для частей адреса, зависит от классификатора +// +Функция НаименованиеНаселенногоПунктаПоЧастямАдреса(ЧастиАдреса) Экспорт + Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); + ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; + + Если Вариант=Неопределено Тогда + // Нет подсистемы классификатора + Возврат ""; + ИначеЕсли Вариант=ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда + Возврат НаименованиеНаселенногоПунктаПоЧастямАдресаКЛАДР(ЧастиАдреса) + КонецЕсли; + + Возврат ""; +КонецФункции + +// Предлагает загрузить адресный классификатор +// +// Параметры: +// Текст - строка с дополнительным текстов предложения +// +Процедура ПредложениеЗагрузкиКлассификатора(Текст="") Экспорт + +#Если ВебКлиент Тогда + Возврат; +#КонецЕсли + + Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); + ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; + + Если Вариант=Неопределено Тогда + // Нет подсистемы классификатора + Возврат; + ИначеЕсли Вариант<>ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда + Возврат; + КонецЕсли; + + ТекстЗаголовка = НСтр("ru='Подтверждение'"); + ТекстВопроса = Текст + Символы.ПС + НСтр("ru='Загрузить классификатор сейчас?'"); + + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); + Если Ответ=КодВозвратаДиалога.Да Тогда + ЗагрузитьАдресныйКлассификатор(); + КонецЕсли; + +КонецПроцедуры + +// Загружает адресный классификатор +// +Процедура ЗагрузитьАдресныйКлассификатор() Экспорт +#Если ВебКлиент Тогда + Возврат; +#КонецЕсли + + Вариант = КонтактнаяИнформацияКлиентСервер.ИспользуемыйАдресныйКлассификатор(); + ИмяПеречисленияКЛАДР = "Перечисление.ВариантыАдресногоКлассификатора.КЛАДР"; + + Если Вариант=Неопределено Тогда + // Нет подсистемы классификатора + Возврат; + ИначеЕсли Вариант=ПредопределенноеЗначение(ИмяПеречисленияКЛАДР) Тогда + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.АдресныйКлассификатор") Тогда + МодульКЛАДР = Вычислить("АдресныйКлассификаторКлиент"); + МодульКЛАДР.ЗагрузитьАдресныйКлассификатор(); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +Функция ОткрытьФормуКонтактнойИнформацииВнутр(Параметры, Владелец, Уникальность, Окно, Модально=Ложь) + + ВидИнформации = Параметры.ВидКонтактнойИнформации; + + ИмяОткрываемойФормы = КонтактнаяИнформацияКлиентСерверПовтИсп.ИмяФормыВводаКонтактнойИнформации(ВидИнформации); + Если ИмяОткрываемойФормы=Неопределено Тогда + ВызватьИсключение НСтр("ru='Не обрабатываемый тип адреса: """ + ВидИнформации + """'"); + КонецЕсли; + + Если Не Параметры.Свойство("Заголовок") Тогда + Параметры.Вставить("Заголовок", Строка(КонтактнаяИнформацияСлужебныйВызовСервера.ТипВидаКонтактнойИнформации(ВидИнформации))); + КонецЕсли; + + Параметры.Вставить("ОткрытаПоСценарию", Истина); + + Если Модально Тогда + Возврат ОткрытьФормуМодально(ИмяОткрываемойФормы, Параметры, Владелец); + КонецЕсли; + + Возврат ОткрытьФорму(ИмяОткрываемойФормы, Параметры, Владелец, Уникальность, Окно); +КонецФункции + +Процедура СоздатьПисьмоПоКонтактнойИнформации(Знач XMLДанные) + АдресПочты = КонтактнаяИнформацияСлужебныйВызовСервера.СтрокаСоставаКонтактнойИнформации(XMLДанные); + Если ТипЗнч(АдресПочты)<>Тип("Строка") Тогда + ВызватьИсключение НСтр("ru='Ошибка получения адреса электронной почты, неверный тип контактной информации'"); + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСообщениями") Тогда + // Используем встроенную почту + МодульПочты = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСПочтовымиСообщениямиКлиент"); + МодульПочты.ОткрытьФормуОтправкиПочтовогоСообщения(, АдресПочты); + Возврат; + КонецЕсли; + + // Нет подсистемы почты, запускаем системное +#Если ВебКлиент Тогда + ТекстПредложения = НСтр("ru='Для отправки почты из веб-клиента необходимо установить расширение для работы с файлами.'"); + Если Не ОбщегоНазначенияКлиент.РасширениеРаботыСФайламиПодключено(ТекстПредложения) Тогда + Возврат; + КонецЕсли; +#КонецЕсли + + ЗапуститьПриложение("mailto:" + АдресПочты); +КонецПроцедуры + +Процедура ОткрытьСсылкуПоКонтактнойИнформации(Знач XMLДанные) + АдресСсылки = КонтактнаяИнформацияСлужебныйВызовСервера.СтрокаСоставаКонтактнойИнформации(XMLДанные); + Если ТипЗнч(АдресСсылки)<>Тип("Строка") Тогда + ВызватьИсключение НСтр("ru='Ошибка получения ссылки, неверный тип контактной информации'"); + КонецЕсли; + + Если Найти(АдресСсылки, "://")>0 Тогда + ПерейтиПоНавигационнойСсылке(АдресСсылки); + Иначе + ПерейтиПоНавигационнойСсылке("http://" + АдресСсылки); + КонецЕсли; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// Реализация КЛАДР +// + +Процедура НачалоВыбораУлицыКЛАДР(Элемент, КодКлассификатораНаселенногоПункта, ТекущееЗначение, Параметры=Неопределено) + ПараметрыФормы = ?(Параметры=Неопределено, Новый Структура, Параметры); + + ПараметрыФормы.Вставить("Уровень", 5); + ПараметрыФормы.Вставить("Улица", Строка(ТекущееЗначение)); + + ИмяФормыКЛАДР = "РегистрСведений.АдресныйКлассификатор.Форма.ФормаВыбора"; + ОткрытьФорму(ИмяФормыКЛАДР, ПараметрыФормы, Элемент); +КонецПроцедуры + +Процедура НачалоВыбораЭлементаАдресаКЛАДР(Элемент, КодЧастиАдреса, ЧастиАдреса, Параметры=Неопределено) + + ПараметрыФормы = ?(Параметры=Неопределено, Новый Структура, Параметры); + + ПараметрыФормы.Вставить("Регион", ЧастиАдреса.Регион.Значение); + ПараметрыФормы.Вставить("Район", ЧастиАдреса.Район.Значение); + ПараметрыФормы.Вставить("Город", ЧастиАдреса.Город.Значение); + ПараметрыФормы.Вставить("НаселенныйПункт", ЧастиАдреса.НаселенныйПункт.Значение); + + КодРеквизита = ВРег(КодЧастиАдреса); + Если КодРеквизита="РЕГИОН" Тогда + Уровень = 1; + ИначеЕсли КодРеквизита="РАЙОН" Тогда + Уровень = 2; + ИначеЕсли КодРеквизита="ГОРОД" Тогда + Уровень = 3; + ИначеЕсли КодРеквизита="НАСЕЛЕННЫЙПУНКТ" Тогда + Уровень = 4; + ИначеЕсли КодРеквизита="УЛИЦА" Тогда + Уровень = 5; + Иначе + Возврат; + КонецЕсли; + ПараметрыФормы.Вставить("Уровень", Уровень); + + ИмяФормыКЛАДР = "РегистрСведений.АдресныйКлассификатор.Форма.ФормаВыбора"; + ОткрытьФорму(ИмяФормыКЛАДР, ПараметрыФормы, Элемент); +КонецПроцедуры + +Функция НаименованиеНаселенногоПунктаПоЧастямАдресаКЛАДР(ЧастиАдреса) + Возврат КонтактнаяИнформацияКлиентСервер.ПолноеНаименование( + ЗначениеИлиНаименование(ЧастиАдреса.НаселенныйПункт), "", + ЗначениеИлиНаименование(ЧастиАдреса.Город), "", + ЗначениеИлиНаименование(ЧастиАдреса.Район), "", + ЗначениеИлиНаименование(ЧастиАдреса.Регион), "", ); +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////// + +Функция ЗначениеИлиНаименование(ЧастьАдреса) + Если ПустаяСтрока(ЧастьАдреса.Значение) Тогда + Возврат СокрЛП("" + ЧастьАдреса.Наименование + " " + ЧастьАдреса.Сокращение); + КонецЕсли; + Возврат ЧастьАдреса.Значение; +КонецФункции + diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиентСервер/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиентСервер/Module.bsl index 3c443920e..0c4d54442 100644 --- a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейКлиентСервер/Module.bsl @@ -261,9 +261,9 @@ Функция ПреобразоватьСтрокуВСписокПолей(СтрокаПолей) Экспорт // XML сериализацию преобразовывать не надо - Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(СтрокаПолей) Тогда + Если КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(СтрокаПолей) Тогда Возврат СтрокаПолей; - КонецЕсли; + КонецЕсли; Результат = Новый СписокЗначений; diff --git a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейСобытия/Module.bsl b/SSL/src/CommonModules/УправлениеКонтактнойИнформациейСобытия/Module.bsl deleted file mode 100644 index 5242550f9..000000000 --- a/SSL/src/CommonModules/УправлениеКонтактнойИнформациейСобытия/Module.bsl +++ /dev/null @@ -1,36 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Подсистема "Контактная информация". -// -//////////////////////////////////////////////////////////////////////////////// - -//////////////////////////////////////////////////////////////////////////////// -// ПРОГРАММНЫЙ ИНТЕРФЕЙС - -Процедура ОбработкаЗаполненияКИ(Источник, ДанныеЗаполнения, СтандартнаяОбработка) Экспорт - - Если ТипЗнч(ДанныеЗаполнения) <> Тип("Структура") Тогда - Возврат; - КонецЕсли; - - // Заполним наименование - Наименование = ""; - Если ДанныеЗаполнения.Свойство("Наименование", Наименование) Тогда - Источник.Наименование = Наименование; - КонецЕсли; - - // Заполним контактную информацию - КонтактнаяИнформация = Неопределено; - Если ДанныеЗаполнения.Свойство("КонтактнаяИнформация", КонтактнаяИнформация) Тогда - Для Каждого СтрокаКИ Из КонтактнаяИнформация Цикл - - НоваяСтрокаКИ = Источник.КонтактнаяИнформация.Добавить(); - ЗаполнитьЗначенияСвойств(НоваяСтрокаКИ, СтрокаКИ); - - Если ТипЗнч(СтрокаКИ.ЗначенияПолей) = Тип("СписокЗначений") Тогда - НоваяСтрокаКИ.ЗначенияПолей = Новый ХранилищеЗначения(СтрокаКИ.ЗначенияПолей); - КонецЕсли; - - КонецЦикла; - КонецЕсли; - -КонецПроцедуры diff --git a/SSL/src/CommonModules/УправлениеПечатью/Module.bsl b/SSL/src/CommonModules/УправлениеПечатью/Module.bsl index 32fa8f52d..58ef7eb8a 100644 --- a/SSL/src/CommonModules/УправлениеПечатью/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатью/Module.bsl @@ -28,7 +28,11 @@ // СинонимМакета - Строка - представление макета; // ТабличныйДокумент - ТабличныйДокумент - печатная форма документа; // Картинка - Картинка; -// ПолныйПутьКМакету - Строка - путь к макету в дереве метаданных. +// ПолныйПутьКМакету - Строка - путь к макету в дереве метаданных, например: +// "Документ._ДемоСчетНаОплатуПокупателю.ПФ_MXL_СчетЗаказ". +// Если не указывать этот параметр, то редактирование макета пользователем будет +// недоступно в форме ПечатьДокументов. +// Процедура ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, ИмяМакета, СинонимМакета, ТабличныйДокумент, Картинка = Неопределено, ПолныйПутьКМакету = "") Экспорт Стр = КоллекцияПечатныхФорм.Найти(ВРег(ИмяМакета), "ИмяВРЕГ"); @@ -79,12 +83,258 @@ Функция СписокПечатныхФормИзВнешнихИсточников(ПолноеИмяОбъектаМетаданных) Экспорт ВнешниеПечатныеФормы = Новый СписокЗначений; - ПриПолученииСпискаВнешнихПечатныхФорм(ВнешниеПечатныеФормы, ПолноеИмяОбъектаМетаданных); + Если Не ПустаяСтрока(ПолноеИмяОбъектаМетаданных) Тогда + ПриПолученииСпискаВнешнихПечатныхФорм(ВнешниеПечатныеФормы, ПолноеИмяОбъектаМетаданных); + КонецЕсли; Возврат ВнешниеПечатныеФормы; КонецФункции +// Размещает команды печати на форме. +// +// Параметры: +// Форма - УправляемаяФорма - форма, в которой необходимо разместить подменю Печать. +// МестоРазмещенияКомандПоУмолчанию - ЭлементФормы - группа, в которую необходимо разместить подменю Печать, +// по умолчанию размещается в командную панель формы. +Процедура ПриСозданииНаСервере(Форма, МестоРазмещенияКомандПоУмолчанию = Неопределено) Экспорт + КомандыПечати = КомандыПечатиФормы(Форма); + + ТаблицаКоманд = КомандыПечати.Скопировать(,"МестоРазмещения"); + ТаблицаКоманд.Свернуть("МестоРазмещения"); + МестаРазмещения = ТаблицаКоманд.ВыгрузитьКолонку("МестоРазмещения"); + + Для Каждого МестоРазмещения Из МестаРазмещения Цикл + НайденныеКоманды = КомандыПечати.НайтиСтроки(Новый Структура("МестоРазмещения,СкрытаФункциональнымиОпциями", МестоРазмещения, Ложь)); + //РазмещаемыеКоманды = КомандыПечати.Скопировать(НайденныеКоманды); + + ЭлементФормыДляРазмещения = Форма.Элементы.Найти(МестоРазмещения); + Если ЭлементФормыДляРазмещения = Неопределено Тогда + ЭлементФормыДляРазмещения = МестоРазмещенияКомандПоУмолчанию; + КонецЕсли; + + Если НайденныеКоманды.Количество() > 0 Тогда + ДобавитьКомандыПечати(Форма, НайденныеКоманды, ЭлементФормыДляРазмещения); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Возвращает список команд печати для указанной формы. +// +// Параметры: +// Форма - УправляемаяФорма или Строка - форма или полное имя формы, для которой необходимо получить список команд печати. +// +// Возвращаемое значение: +// ТаблицаЗначений - описание см. в СоздатьКоллекциюКомандПечати(). +Функция КомандыПечатиФормы(Форма) Экспорт + + Если ТипЗнч(Форма) = Тип("УправляемаяФорма") Тогда + ИмяФормы = Форма.ИмяФормы; + Иначе + ИмяФормы = Форма; + КонецЕсли; + + КомандыПечати = СоздатьКоллекциюКомандПечати(); + КомандыПечати.Колонки.Добавить("СкрытаФункциональнымиОпциями", Новый ОписаниеТипов("Булево")); + + СтандартнаяОбработка = Истина; + УправлениеПечатьюПереопределяемый.ПередДобавлениемКомандПечати(ИмяФормы, КомандыПечати, СтандартнаяОбработка); + + Если СтандартнаяОбработка Тогда + ПолноеИмяОбъекта = Метаданные.НайтиПоПолномуИмени(ИмяФормы).Родитель().ПолноеИмя(); + МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ПолноеИмяОбъекта); + МенеджерПечати.ДобавитьКомандыПечати(КомандыПечати); + + Для Каждого КомандаПечати Из КомандыПечати Цикл + Если ПустаяСтрока(КомандаПечати.МенеджерПечати) Тогда + КомандаПечати.МенеджерПечати = ПолноеИмяОбъекта; + КонецЕсли; + КонецЦикла; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПриПолученииКомандПечати(КомандыПечати, ИмяФормы); + КонецЕсли; + КонецЕсли; + + Для Каждого КомандаПечати Из КомандыПечати Цикл + Если КомандаПечати.Порядок = 0 Тогда + КомандаПечати.Порядок = 50; + КонецЕсли; + КонецЦикла; + + КомандыПечати.Сортировать("Порядок Возр, Представление Возр"); + + ЧастиИмени = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяФормы, ".", Истина); + КраткоеИмяФормы = ЧастиИмени[ЧастиИмени.Количество()-1]; + + Для НомерСтроки = -КомандыПечати.Количество() + 1 По 0 Цикл + КомандаПечати = КомандыПечати[-НомерСтроки]; + СписокФорм = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(КомандаПечати.СписокФорм, ",", Истина); + Если СписокФорм.Количество() > 0 И СписокФорм.Найти(КраткоеИмяФормы) = Неопределено Тогда + КомандыПечати.Удалить(КомандаПечати); + КонецЕсли; + КонецЦикла; + + ОпределитьВидимостьКомандПечатиПоФункциональнымОпциям(КомандыПечати, Форма); + + Возврат КомандыПечати; + +КонецФункции + +// Создает пустую таблицу для размещения в нее команд печати. +// +// Возвращаемое значение: +// ТаблицаЗначений - описание команд печати. +// +// Идентификатор - Строка или Массив - Идентификатор команды печати, по которому менеджер печати определяет печатную +// форму, которую необходимо сформировать. +// Пример: "СчетЗаказ". +// +// Для печати нескольких печатных форм можно указывать одновременно несколько их +// идентификаторов (строкой, через запятую, либо массивом строк), например: +// "СчетЗаказ,ГарантийноеПисьмо". +// +// Если необходимо задать количество копий печати для печатной формы, то её +// идентификатор нужно продублировать столько раз, сколько копий необходимо +// сформировать. При этом следует учитывать, что порядок следования печатных +// форм в комплекте будет соответствовать порядку идентификаторов печатных форм, +// указанных в этом параметре. Пример (2 счёта на оплату + 1 гарантийное письмо): +// "СчетЗаказ,СчетЗаказ,ГарантийноеПисьмо". +// +// Идентификатор печатной формы может содержать в себе и альтернативный менеджер +// печати, если он отличается от указанного в параметре МенеджерПечати, +// например: "СчетЗаказ,Обработка.ПечатнаяФорма.ГарантийноеПисьмо". +// +// В этом примере ГарантийноеПисьмо формируется в менеджере печати +// Обработка._ДемоПечатнаяФорма, а СчетЗаказ – в менеджере печати, указанном в +// параметре МенеджерПечати. +// +// Представление - Строка - Представление команды в меню Печать. +// Пример: "Счет на оплату". +// +// МенеджерПечати - Строка - (необязательный) Имя объекта, в модуле менеджера которого располагается +// процедура Печать, формирующая табличные документы для этой команды. +// Значение по умолчанию: имя модуля менеджера объекта. +// Пример: "Документ.СчетНаОплатуПокупателю". +// +// Обработчик - Строка - (необязательный) Клиентский обработчик команды, в который необходимо передать +// управление вместо стандартного обработчика команды печать. Используется, +// например, когда печатная форма формируется на клиенте. +// Пример: "ОбработчикиПечатиКлиент.ПечатьСчетовНаОплатуПокупателю". +// +// Порядок - Число - (необязательный) Значение от 1 до 100, указывающее порядок размещения команды +// по отношению к другим командам. Сортировка команд меню Печать осуществляется +// сначала по полю Порядок, затем по представлению. +// Значение по умолчанию: 50. +// +// Картинка - Картинка - (необязательный) Картинка, которая отображается возле команды в меню Печать. +// Пример: БиблиотекаКартинок.ФорматPDF. +// +// СписокФорм - Строка - (необязательный) Имена форм через запятую, в которых должна отображаться +// команда. Если параметр не указан, то команда печати будет отображаться во +// всех формах объекта, где встроена подсистема Печать. +// Пример: "ФормаДокумента". +// +// МестоРазмещения - Строка - (необязательный) Имя командной панели формы, в которую необходимо разместить +// команду печати. Параметр необходимо использовать только в случае, когда на +// форме размещается более одного подменю "Печать". В остальных случаях место +// размещения необходимо задавать в модуле формы при вызове метода +// УправлениеПечатью.ПриСозданииНаСервере. +// +// ЗаголовокФормы - Строка - (необязательный) Произвольная строка, переопределяющая стандартных заголовок +// формы «Печать документов». +// Пример: "Настраиваемый комплект". +// +// ФункциональныеОпции - Строка (необязательный) Имена функциональных опций через запятую, от которых зависит +// доступность команды печати. +// +// ПроверкаПроведенияПередПечатью - Булево - (необязательный) Признак необходимости проверки проведенности +// документов перед печатью. Если параметр не указан, то проверка проведенности +// не выполняется. +// +// СразуНаПринтер - Булево - (необязательный) Признак необходимости печати документов без предварительного +// просмотра, сразу на принтер. Если параметр не указан, то при выборе команды +// печати открывается форма предварительного просмотра «Печать документов». +// +// ФорматСохранения - ТипФайлаТабличногоДокумента - (необязательный) Применяется для быстрого сохранения печатной +// формы (без дополнительных действий) в различные форматы, отличные от mxl. +// Если параметр не указан, то формируется обычный mxl. +// Пример: ТипФайлаТабличногоДокумента.PDF. +// +// При выборе команды печати сразу открывается сформированный в формате pdf +// документ. +// +// ПереопределитьПользовательскиеНастройкиКоличества - Булево - (необязательный) Признак необходимости отключения в +// форме ПечатьДокументов механизма сохранения/восстановления выбранного +// пользователем количества экземпляров на печать. Если параметр не указан, то +// механизм сохранения/восстановления настроек будет работать при открытии формы +// ПечатьДокументов. +// +// ДополнитьКомплектВнешнимиПечатнымиФормами - Булево - (необязательный) Признак необходимости дополнить комплект +// документов всеми подключенными к объекту внешними печатными формами +// (подсистема ДополнительныеОтчетыИОбработки). Если параметр не указан, внешние +// печатные формы не добавляются в комплект. +// +// ФиксированныйКомплект - Булево - (необязательный) Признак необходимости блокировки от изменения пользователем +// состава комплекта документов. Если параметр не указан, то пользователь сможет +// исключать отдельные печатные формы из комплекта в форме ПечатьДокументов, а +// также изменять их количество. +// +// НеВыполнятьЗаписьВФорме - Булево - (необязательный) Признак необходимости отключения механизма записи объекта +// перед выполнением команды печати. Используется в исключительных случаях. Если +// параметр не указан, производится запись объекта в случае, если в форме +// объекта установлен признак модифицированности. +// +Функция СоздатьКоллекциюКомандПечати() Экспорт + + Результат = Новый ТаблицаЗначений; + + // описание + Результат.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); + Результат.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); + + ////////// + // опции (необязательные параметры) + + // менеджер печати + Результат.Колонки.Добавить("МенеджерПечати", Новый ОписаниеТипов("Строка")); + + // альтернативный обработчик команды + Результат.Колонки.Добавить("Обработчик", Новый ОписаниеТипов("Строка")); + + // представление + Результат.Колонки.Добавить("Порядок", Новый ОписаниеТипов("Число")); + Результат.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка")); + Результат.Колонки.Добавить("СписокФорм", Новый ОписаниеТипов("Строка")); // имена форм для размещения команд, разделитель - запятая. + Результат.Колонки.Добавить("МестоРазмещения", Новый ОписаниеТипов("Строка")); + Результат.Колонки.Добавить("ЗаголовокФормы", Новый ОписаниеТипов("Строка")); + Результат.Колонки.Добавить("ФункциональныеОпции", Новый ОписаниеТипов("Строка")); // имена функциональных опций, влияющих на видимость команды, разделитель - запятая. + + // проверка проведения + Результат.Колонки.Добавить("ПроверкаПроведенияПередПечатью", Новый ОписаниеТипов("Булево")); + + // вывод + Результат.Колонки.Добавить("СразуНаПринтер", Новый ОписаниеТипов("Булево")); + Результат.Колонки.Добавить("ФорматСохранения"); // ТипФайлаТабличногоДокумента + + // настройки комплектов + Результат.Колонки.Добавить("ПереопределитьПользовательскиеНастройкиКоличества", Новый ОписаниеТипов("Булево")); // запрет сохранения настроек пользователя + Результат.Колонки.Добавить("ДополнитьКомплектВнешнимиПечатнымиФормами", Новый ОписаниеТипов("Булево")); + Результат.Колонки.Добавить("ФиксированныйКомплект", Новый ОписаниеТипов("Булево")); // запрет изменения комплекта + + // дополнительные параметры + Результат.Колонки.Добавить("ДополнительныеПараметры", Новый ОписаниеТипов("Структура")); + + // специальный режим выполнения команды + // по умолчанию выполняется запись модифицированного объекта перед выполнением команды. + Результат.Колонки.Добавить("НеВыполнятьЗаписьВФорме", Новый ОписаниеТипов("Булево")); + + Возврат Результат; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Работа с шаблонами офисных документов @@ -390,7 +640,8 @@ Если ВнешняяПечатнаяФорма <> Неопределено Тогда // печать внешней печатной формы - УправлениеПечатьюПереопределяемый.ПечатьПоВнешнемуИсточнику( + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПечатьПоВнешнемуИсточнику( ВнешняяПечатнаяФорма(ВнешняяПечатнаяФорма.Значение, ИмяМенеджераПечати), Новый Структура("ИдентификаторКоманды, ОбъектыНазначения", ВнешняяПечатнаяФорма.Значение, МассивОбъектов), ВременнаяКоллекцияДляОднойПечатнойФормы, @@ -402,10 +653,13 @@ Если ПустаяСтрока(ИспользуемыйМенеджерПечати) Тогда ИспользуемыйМенеджерПечати = ИмяМенеджераПечати; КонецЕсли; - МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИспользуемыйМенеджерПечати); + + Если Не ПустаяСтрока(ИспользуемыйМенеджерПечати) Тогда + МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИспользуемыйМенеджерПечати); - // печать внутренней печатной формы - МенеджерПечати.Печать(МассивОбъектов, ПараметрыПечати, ВременнаяКоллекцияДляОднойПечатнойФормы, ОбъектыПечати, ПараметрыВывода); + // печать внутренней печатной формы + МенеджерПечати.Печать(МассивОбъектов, ПараметрыПечати, ВременнаяКоллекцияДляОднойПечатнойФормы, ОбъектыПечати, ПараметрыВывода); + КонецЕсли; КонецЕсли; // обновление коллекции @@ -660,6 +914,112 @@ КонецФункции +// Создает подменю "Печать" на форме и добавляет в него команды печати. +// Если команда печати одна, то вместо подменю добавляется кнопка с названием печатной формы. +Процедура ДобавитьКомандыПечати(Форма, КомандыПечати, Знач МестоРазмещенияКоманд = Неопределено) + + Если МестоРазмещенияКоманд = Неопределено Тогда + МестоРазмещенияКоманд = Форма.КоманднаяПанель; + КонецЕсли; + + ОднаКомандаПечати = КомандыПечати.Количество() = 1; + Если Не ОднаКомандаПечати Тогда + ПодменюПечать = Форма.Элементы.Добавить(МестоРазмещенияКоманд.Имя + "ПодменюПечать", Тип("ГруппаФормы"), МестоРазмещенияКоманд); + ПодменюПечать.Вид = ВидГруппыФормы.Подменю; + ПодменюПечать.Заголовок = НСтр("ru = 'Печать'"); + ПодменюПечать.Картинка = БиблиотекаКартинок.Печать; + + МестоРазмещенияКоманд = ПодменюПечать; + КонецЕсли; + + Для Каждого ОписаниеКомандыПечати Из КомандыПечати Цикл + НомерКоманды = ОписаниеКомандыПечати.Владелец().Индекс(ОписаниеКомандыПечати); + ИмяКоманды = МестоРазмещенияКоманд.Имя + "КомандаПечати" + НомерКоманды; + + КомандаФормы = Форма.Команды.Добавить(ИмяКоманды); + КомандаФормы.Действие = "Подключаемый_ВыполнитьКомандуПечати"; + КомандаФормы.Заголовок = ОписаниеКомандыПечати.Представление; + КомандаФормы.ИзменяетСохраняемыеДанные = Ложь; + КомандаФормы.Отображение = ОтображениеКнопки.КартинкаИТекст; + + Если ЗначениеЗаполнено(ОписаниеКомандыПечати.Картинка) Тогда + КомандаФормы.Картинка = ОписаниеКомандыПечати.Картинка; + ИначеЕсли ОднаКомандаПечати Тогда + КомандаФормы.Картинка = БиблиотекаКартинок.Печать; + КонецЕсли; + + НовыйЭлемент = Форма.Элементы.Добавить(МестоРазмещенияКоманд.Имя + ИмяКоманды, Тип("КнопкаФормы"), МестоРазмещенияКоманд); + НовыйЭлемент.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели; + НовыйЭлемент.ИмяКоманды = ИмяКоманды; + КонецЦикла; + +КонецПроцедуры + +// Возвращает описание команды по имени элемента формы. +// +// Возвращаемое значение +// Структура - строка таблицы из функции КомандыПечатиФормы, преобразованная в структуру. +Функция ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы) Экспорт + + КомандыПечати = КомандыПечатиФормы(ИмяФормы); + + Позиция = СтрДлина(ИмяКоманды); + Пока КодСимвола(ИмяКоманды, Позиция) >= 48 И КодСимвола(ИмяКоманды, Позиция) <= 57 Цикл // 0..9 + Позиция = Позиция - 1; + КонецЦикла; + + КомандаПечати = КомандыПечати[Число(Сред(ИмяКоманды, Позиция + 1))]; // "КомандаПечати№" + + Результат = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(КомандаПечати); + + Возврат Результат; + +КонецФункции + +// Фильтрует список команд печати в соответствии с установленными функциональными опциями. +Процедура ОпределитьВидимостьКомандПечатиПоФункциональнымОпциям(КомандыПечати, Форма) + Для НомерКоманды = -КомандыПечати.Количество() + 1 По 0 Цикл + ОписаниеКомандыПечати = КомандыПечати[-НомерКоманды]; + ФункциональныеОпцииКомандыПечати = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ОписаниеКомандыПечати.ФункциональныеОпции, ",", Истина); + ВидимостьКоманды = ФункциональныеОпцииКомандыПечати.Количество() = 0; + Для Каждого ФункциональнаяОпция Из ФункциональныеОпцииКомандыПечати Цикл + Если ТипЗнч(Форма) = Тип("УправляемаяФорма") Тогда + ВидимостьКоманды = ВидимостьКоманды Или Форма.ПолучитьФункциональнуюОпциюФормы(ФункциональнаяОпция); + Иначе + ВидимостьКоманды = ВидимостьКоманды Или ПолучитьФункциональнуюОпцию(ФункциональнаяОпция); + КонецЕслИ; + + Если ВидимостьКоманды Тогда + Прервать; + КонецЕсли; + КонецЦикла; + ОписаниеКомандыПечати.СкрытаФункциональнымиОпциями = Не ВидимостьКоманды; + КонецЦикла; +КонецПроцедуры + +// Сохраняет пользовательский макет печати в информационной базе. +Процедура ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище) Экспорт + Макет = ПолучитьИзВременногоХранилища(АдресМакетаВоВременномХранилище); + + ЧастиИмени = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИмяОбъектаМетаданныхМакета, "."); + ИмяМакета = ЧастиИмени[ЧастиИмени.ВГраница()]; + + ИмяВладельца = ""; + Для НомерЧасти = 0 По ЧастиИмени.ВГраница()-1 Цикл + Если Не ПустаяСтрока(ИмяВладельца) Тогда + ИмяВладельца = ИмяВладельца + "."; + КонецЕсли; + ИмяВладельца = ИмяВладельца + ЧастиИмени[НомерЧасти]; + КонецЦикла; + + Запись = РегистрыСведений.ПользовательскиеМакетыПечати.СоздатьМенеджерЗаписи(); + Запись.Объект = ИмяВладельца; + Запись.ИмяМакета = ИмяМакета; + Запись.Использование = Истина; + Запись.Макет = Новый ХранилищеЗначения(Макет, Новый СжатиеДанных(9)); + Запись.Записать(); +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Обработчики условных вызовов в другие подсистемы @@ -674,8 +1034,8 @@ Процедура ПриПрисоединенииПечатнойФормыКОбъекту(СсылкаНаОбъект, ИмяФайла, АдресВоВременномХранилище) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПрисоединенныеФайлы") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлы"); - Модуль.ДобавитьФайл(СсылкаНаОбъект, ИмяФайла, , , , АдресВоВременномХранилище, , НСтр("ru = 'Печатная форма'")); + МодульПрисоединенныеФайлы = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлы"); + МодульПрисоединенныеФайлы.ДобавитьФайл(СсылкаНаОбъект, ИмяФайла, , , , АдресВоВременномХранилище, , НСтр("ru = 'Печатная форма'")); КонецЕсли; КонецПроцедуры @@ -690,8 +1050,8 @@ Процедура ПриПроверкеВозможностиПрисоединенияФайловКОбъекту(СсылкаНаОбъект, МожноПрисоединять) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ПрисоединенныеФайлы") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлы"); - МожноПрисоединять = Модуль.КОбъектуМожноПрисоединятьФайлы(СсылкаНаОбъект); + МодульПрисоединенныеФайлы = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ПрисоединенныеФайлы"); + МожноПрисоединять = МодульПрисоединенныеФайлы.КОбъектуМожноПрисоединятьФайлы(СсылкаНаОбъект); КонецЕсли; КонецПроцедуры @@ -707,8 +1067,8 @@ Процедура ПриПолученииСпискаВнешнихПечатныхФорм(ВнешниеПечатныеФормы, ПолноеИмяОбъектаМетаданных) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - Модуль.ПриПолученииСпискаВнешнихПечатныхФорм(ВнешниеПечатныеФормы, ПолноеИмяОбъектаМетаданных); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПриПолученииСпискаВнешнихПечатныхФорм(ВнешниеПечатныеФормы, ПолноеИмяОбъектаМетаданных); КонецЕсли; КонецПроцедуры @@ -718,8 +1078,8 @@ Процедура ПриПолученииВнешнейПечатнойФормы(Идентификатор, ПолноеИмяОбъектаМетаданных, ВнешняяПечатнаяФормаСсылка) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); - Модуль.ПриПолученииВнешнейПечатнойФормы(Идентификатор, ПолноеИмяОбъектаМетаданных, ВнешняяПечатнаяФормаСсылка); + МодульДополнительныеОтчетыИОбработки = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработки"); + МодульДополнительныеОтчетыИОбработки.ПриПолученииВнешнейПечатнойФормы(Идентификатор, ПолноеИмяОбъектаМетаданных, ВнешняяПечатнаяФормаСсылка); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/УправлениеПечатьюMSWordКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюMSWordКлиент/Module.bsl index 8f8014347..32be9741e 100644 --- a/SSL/src/CommonModules/УправлениеПечатьюMSWordКлиент/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатьюMSWordКлиент/Module.bsl @@ -610,7 +610,11 @@ FindObject = Selection.Find; FindObject.ClearFormatting(); Пока FindObject.Execute(СтрокаПоиска) Цикл - Selection.TypeText(СтрокаЗамены); + Если ПустаяСтрока(СтрокаЗамены) Тогда + Selection.Delete(); + Иначе + Selection.TypeText(СтрокаЗамены); + КонецЕсли; КонецЦикла; Selection.Collapse(); diff --git a/SSL/src/CommonModules/УправлениеПечатьюВызовСервера/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюВызовСервера/Module.bsl index a07b5a85e..1bb091059 100644 --- a/SSL/src/CommonModules/УправлениеПечатьюВызовСервера/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатьюВызовСервера/Module.bsl @@ -37,8 +37,7 @@ ТабличныеДокументы, ОбъектыПечати, ПараметрыВывода, - Отказ - ); + Отказ); КонецПроцедуры @@ -57,8 +56,7 @@ Адрес, ОбъектыПечати, ПараметрыВывода, - Отказ - ); + Отказ); КонецПроцедуры @@ -71,3 +69,13 @@ УправлениеПечатью.СохранитьЛокальныйКаталогФайловПечати(Каталог); КонецПроцедуры + +// Возвращает описание команды по имени элемента формы. +// +// См. УправлениеПечатью.ОписаниеКомандыПечати +// +Функция ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы) Экспорт + + Возврат УправлениеПечатью.ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы); + +КонецФункции diff --git a/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl index 70cf44987..139128d8f 100644 --- a/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатьюКлиент/Module.bsl @@ -205,6 +205,88 @@ КонецФункции +// Обработчик динамически подключаемой команды печати. +// +// Команда - КомандаФормы - подключаемая команда формы, выполняющая обработчик Подключаемый_ВыполнитьКомандуПечати. +// (альтернативный вызов*) Структура - строка таблицы КомандыПечати, преобразованная в структуру. +// Источник - ТаблицаФормы Или ДанныеФормыСтруктура - источник объектов печати (Форма.Объект, Форма.Элементы.Список). +// (альтернативный вызов*) Массив - список объектов печати. +// +// *Альтернативный вызов - указанные типы используются в случае, если вызов выполняется не из штатного +// обработчика Подключаемый_ВыполнитьКомандуПечати. +// +Процедура ВыполнитьПодключаемуюКомандуПечати(Знач Команда, Знач Форма, Знач Источник) Экспорт + + ОписаниеКоманды = Команда; + Если ТипЗнч(Команда) = Тип("КомандаФормы") Тогда + ОписаниеКоманды = ОписаниеКомандыПечати(Команда.Имя, Форма.ИмяФормы); + КонецЕсли; + + Если Не ОписаниеКоманды.НеВыполнятьЗаписьВФорме И ТипЗнч(Источник) = Тип("ДанныеФормыСтруктура") + И (Источник.Ссылка.Пустая() Или Форма.Модифицированность) Тогда + + Если Источник.Ссылка.Пустая() Тогда + ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Данные еще не записаны. + |Выполнение действия ""%1"" возможно только после записи данных. + |Данные будут записаны.'"), + ОписаниеКоманды.Представление); + Если Вопрос(ТекстВопроса, РежимДиалогаВопрос.ОКОтмена) = КодВозвратаДиалога.Отмена Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + Форма.Записать(); + КонецЕсли; + + ОбъектыПечати = Источник; + Если ТипЗнч(Источник) <> Тип("Массив") Тогда + ОбъектыПечати = ОбъектыПечати(Источник); + КонецЕсли; + + Если ОписаниеКоманды.ПроверкаПроведенияПередПечатью + И Не ПроверитьДокументыПроведены(ОбъектыПечати, Форма) Тогда + Возврат; + КонецЕсли; + + ОписаниеКоманды = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ОписаниеКоманды); + ОписаниеКоманды.Вставить("ОбъектыПечати", ОбъектыПечати); + + Если ОписаниеКоманды.МенеджерПечати = "СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки" + И ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки") Тогда + МодульДополнительныеОтчетыИОбработкиКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("ДополнительныеОтчетыИОбработкиКлиент"); + МодульДополнительныеОтчетыИОбработкиКлиент.ВыполнитьНазначаемуюКомандуПечати(ОписаниеКоманды, Форма); + Возврат; + КонецЕсли; + + Если Не ПустаяСтрока(ОписаниеКоманды.Обработчик) Тогда + ОписаниеКоманды.Вставить("Форма", Форма); + ИмяОбработчика = ОписаниеКоманды.Обработчик; + Обработчик = ИмяОбработчика + "(ОписаниеКоманды)"; + Результат = Вычислить(Обработчик); + Возврат; + КонецЕсли; + + Если ОписаниеКоманды.СразуНаПринтер Тогда + ВыполнитьКомандуПечатиНаПринтер(ОписаниеКоманды.МенеджерПечати, ОписаниеКоманды.Идентификатор, + ОбъектыПечати, ОписаниеКоманды.ДополнительныеПараметры); + Иначе + ВыполнитьКомандуПечати(ОписаниеКоманды.МенеджерПечати, ОписаниеКоманды.Идентификатор, + ОбъектыПечати, Форма, ОписаниеКоманды); + КонецЕсли; + +КонецПроцедуры + +// Возвращает описание команды по имени элемента формы. +// +// См. УправлениеПечатью.ОписаниеКомандыПечати +// +Функция ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы) Экспорт + + Возврат УправлениеПечатьюКлиентПовтИсп.ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы); + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Работа с макетами офисных документов // @@ -704,3 +786,28 @@ КонецФункции #КонецЕсли + +// Возвращает ссылки на объекты, выбранные в данный момент на форме. +Функция ОбъектыПечати(Источник) + + Результат = Новый Массив; + + Если ТипЗнч(Источник) = Тип("ТаблицаФормы") Тогда + ВыделенныеСтроки = Источник.ВыделенныеСтроки; + Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл + Если ТипЗнч(ВыделеннаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда + Продолжить; + КонецЕсли; + ТекущаяСтрока = Источник.ДанныеСтроки(ВыделеннаяСтрока); + Если ТекущаяСтрока <> Неопределено Тогда + Результат.Добавить(ТекущаяСтрока.Ссылка); + КонецЕсли; + КонецЦикла; + Иначе + Результат.Добавить(Источник.Ссылка); + КонецЕсли; + + Возврат Результат; + +КонецФункции + diff --git a/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/Module.bsl new file mode 100644 index 000000000..43dd3b385 --- /dev/null +++ b/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/Module.bsl @@ -0,0 +1,17 @@ +//////////////////////////////////////////////////////////////////////////////// +// Подсистема "Печать". +// +//////////////////////////////////////////////////////////////////////////////// + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +// Возвращает описание команды по имени элемента формы. +// +// См. УправлениеПечатью.ОписаниеКомандыПечати +// +Функция ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы) Экспорт + + Возврат УправлениеПечатьюВызовСервера.ОписаниеКомандыПечати(ИмяКоманды, ИмяФормы); + +КонецФункции diff --git a/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/УправлениеПечатьюКлиентПовтИсп.mdo b/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/УправлениеПечатьюКлиентПовтИсп.mdo new file mode 100644 index 000000000..7ab3c1629 --- /dev/null +++ b/SSL/src/CommonModules/УправлениеПечатьюКлиентПовтИсп/УправлениеПечатьюКлиентПовтИсп.mdo @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c7f817ee-9f6a-454c-95a0-b279fd08055e"> + <name>УправлениеПечатьюКлиентПовтИсп</name> + <synonym> + <key>ru</key> + <value>Управление печатью клиент повт исп</value> + </synonym> + <clientManagedApplication>true</clientManagedApplication> + <clientOrdinaryApplication>true</clientOrdinaryApplication> + <returnValuesReuse>DuringSession</returnValuesReuse> +</mdclass:CommonModule> diff --git a/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl b/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl index 4988f08c4..005a7ceb7 100644 --- a/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/УправлениеПечатьюПереопределяемый/Module.bsl @@ -6,31 +6,6 @@ //////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС -// Выполняет внешнюю обработку печати. -// -// Параметры: -// ИсточникДанных - Произвольный - источник данных; -// ПараметрыИсточника - Произвольный - параметры источника печати; -// КоллекцияПечатныхФорм - ТаблицаЗначений - (выходной) см. УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм; -// ОбъектыПечати - СписокЗначений - (выходной) список объектов печати, где значение - Ссылка, а представление - имя области печати; -// ПараметрыВывода - Структура - (выходной) см. УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода. -// -// Возвращаемое значение: -// Булево - Ложь, если печать не была выполнена. -Функция ПечатьПоВнешнемуИсточнику(ИсточникДанных, ПараметрыИсточника, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт - - // СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки - Если ТипЗнч(ИсточникДанных) = Тип("СправочникСсылка.ДополнительныеОтчетыИОбработки") Тогда - ДополнительныеОтчетыИОбработки.ПечатьПоВнешнемуИсточнику( - ИсточникДанных, ПараметрыИсточника, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода); - Возврат Истина; - КонецЕсли; - // Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки - - Возврат Ложь; - -КонецФункции - // Переопределяет таблицу возможных форматов для сохранения табличного документа. // Вызывается из ОбщегоНазначения.НастройкиФорматовСохраненияТабличногоДокумента() // @@ -46,4 +21,9 @@ КонецПроцедуры +// Переопределяет список команд печати, получаемый функцией +Процедура ПередДобавлениемКомандПечати(ИмяФормы, КомандыПечати, СтандартнаяОбработка) Экспорт + +КонецПроцедуры + diff --git a/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl b/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl index be9300086..819b4912a 100644 --- a/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl +++ b/SSL/src/CommonModules/УправлениеСвойствамиСлужебный/Module.bsl @@ -351,7 +351,7 @@ СсылкаПредопределенного = Ссылка.Родитель; КонецЕсли; - ИмяПредопределенного = Справочники.НаборыДополнительныхРеквизитовИСведений.ПолучитьИмяПредопределенного(СсылкаПредопределенного); + ИмяПредопределенного = ОбщегоНазначения.ИмяПредопределенного(СсылкаПредопределенного); Если НЕ ЗначениеЗаполнено(ИмяПредопределенного) Тогда Возврат ВидыСвойствНабора; @@ -599,7 +599,7 @@ НаборСвойствОбъект.ДополнительныеРеквизиты.Индекс(ДопСведение)); КонецЦикла; - НаборСвойствОбъект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборСвойствОбъект); КонецЕсли; КонецЦикла; diff --git a/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl b/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl index 17c9c69d9..5c0af4ffa 100644 --- a/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl +++ b/SSL/src/CommonModules/УправлениеЭлектроннойПочтой/Module.bsl @@ -44,7 +44,7 @@ ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, , , - НСтр("ru = 'Начато регламентное получение и отправка электронной почты'")); + НСтр("ru = 'Начато регламентное получение и отправка электронной почты'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); МассивПисем = Новый Массив; @@ -104,7 +104,7 @@ ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время подключения к учетной записи %1 произошла ошибка - |%2'"), ВыборкаУчетныеЗаписи.УчетнаяЗапись, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ВыборкаУчетныеЗаписи.УчетнаяЗапись, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , @@ -123,7 +123,7 @@ Исключение ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время отправки электронного письма %1 произошла ошибка - |%2'"), ВыборкаПисьма.ПредставлениеПисьма, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ВыборкаПисьма.ПредставлениеПисьма, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , @@ -194,7 +194,7 @@ ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время подключения к учетной записи %1 произошла ошибка - |%2'"), ВыборкаУчетныеЗаписи.УчетнаяЗапись,ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ВыборкаУчетныеЗаписи.УчетнаяЗапись,ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , @@ -217,7 +217,7 @@ ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация, , , - НСтр("ru = 'Закончено регламентное получение и отправка электронной почты'")); + НСтр("ru = 'Закончено регламентное получение и отправка электронной почты'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка())); КонецПроцедуры @@ -315,7 +315,7 @@ ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время подключения к учетной записи %1 произошла ошибка - |%2'"), ВыборкаУчетныеЗаписи.УчетнаяЗапись,КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ВыборкаУчетныеЗаписи.УчетнаяЗапись,КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщенияОбОшибке, ВыборкаУчетныеЗаписи.УчетнаяЗапись); @@ -332,7 +332,7 @@ Исключение ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время отправки электронного письма %1 произошла ошибка - |%2'"), ВыборкаПисьма.ПредставлениеПисьма,КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ВыборкаПисьма.ПредставлениеПисьма,КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщенияОбОшибке, ВыборкаПисьма.Ссылка); Продолжить; КонецПопытки; @@ -402,7 +402,7 @@ ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время подключения к учетной записи %1 произошла ошибка - |%2'"), ВыборкаУчетныеЗаписи.УчетнаяЗапись,КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), ВыборкаУчетныеЗаписи.УчетнаяЗапись,КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщенияОбОшибке,ВыборкаУчетныеЗаписи.УчетнаяЗапись); @@ -442,7 +442,7 @@ ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время подключения к учетной записи %1 произошла ошибка - |%2'"), УчетнаяЗапись,ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УчетнаяЗапись,ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , @@ -488,7 +488,7 @@ ЕстьОшибки = Истина; ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'При получении письма %1 от %2, отправленное c адреса %3 произошла ошибка - |%4'"), + |%4'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), Сообщение.Тема, Сообщение.ДатаОтправления, Сообщение.Отправитель.Адрес, @@ -1559,7 +1559,7 @@ ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Во время регламентной отправки уведомления о прочтении электронного письма %1 произошла ошибка - |%2'"), Выборка.ПредставлениеПисьма,ОписаниеОшибки()); + |%2'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), Выборка.ПредставлениеПисьма,ОписаниеОшибки()); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, , , ТекстСообщенияОбОшибке); diff --git a/SSL/src/CommonModules/УправлениеЭлектроннойПочтойКлиент/Module.bsl b/SSL/src/CommonModules/УправлениеЭлектроннойПочтойКлиент/Module.bsl index 26e5cba6a..aa8f1aaa1 100644 --- a/SSL/src/CommonModules/УправлениеЭлектроннойПочтойКлиент/Module.bsl +++ b/SSL/src/CommonModules/УправлениеЭлектроннойПочтойКлиент/Module.bsl @@ -33,8 +33,7 @@ Для Каждого СтрокаТаблицы Из ТаблицаКонтактов Цикл Контакт = ?(ТипЗнч(СтрокаТаблицы.Контакт) = Тип("Строка"), Неопределено, СтрокаТаблицы.Контакт); Запись = Новый Структура( - "Адрес, Представление, Контакт", СтрокаТаблицы.Адрес, СтрокаТаблицы.Представление, Контакт - ); + "Адрес, Представление, Контакт", СтрокаТаблицы.Адрес, СтрокаТаблицы.Представление, Контакт); Результат.Добавить(Запись); КонецЦикла; diff --git a/SSL/src/CommonModules/ФайловыеФункцииСлужебный/Module.bsl b/SSL/src/CommonModules/ФайловыеФункцииСлужебный/Module.bsl index d37e67c79..46cc6bc6c 100644 --- a/SSL/src/CommonModules/ФайловыеФункцииСлужебный/Module.bsl +++ b/SSL/src/CommonModules/ФайловыеФункцииСлужебный/Module.bsl @@ -167,7 +167,8 @@ УдалитьФайлы(ПрежнийПутьНаТоме); Исключение ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Удаление файлов в томе при обмене'"), + НСтр("ru = 'Файлы.Удаление файлов в томе при обмене'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -184,7 +185,8 @@ КонецЕсли; Исключение ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Удаление файлов в томе при обмене'"), + НСтр("ru = 'Файлы.Удаление файлов в томе при обмене'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -352,7 +354,10 @@ Дата = ДатаДляРазмещенияВТоме; КонецЕсли; + // Использование абсолютного формата даты "ДФ" в следующей строке + // является правильным, так как дата используется не для просмотра пользователем. ПутьДня = Формат(Дата, "ДФ=ггггММдд") + ОбщегоНазначенияКлиентСервер.РазделительПути(); + ПутьКТому = ПутьКТому + ПутьДня; ИмяФайлаСПутем = ФайловыеФункцииСлужебныйКлиентСервер.ПолучитьУникальноеИмяСПутем(ПутьКТому, ИмяФайла, ОбщегоНазначенияПовтИсп.ТипПлатформыСервера()); @@ -421,7 +426,8 @@ |%1'"); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Добавление файла'"), + НСтр("ru = 'Файлы.Добавление файла'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -1110,7 +1116,8 @@ ИмяСРасширениемФайла = ""; ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Извлечение текста'"), + НСтр("ru = 'Файлы.Извлечение текста'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , @@ -1199,7 +1206,8 @@ КонецЦикла; Исключение ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Извлечение текста'"), + НСтр("ru = 'Файлы.Извлечение текста'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -1215,7 +1223,8 @@ КонецЦикла; ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Извлечение текста'"), + НСтр("ru = 'Файлы.Извлечение текста'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , , @@ -1287,8 +1296,8 @@ Процедура ПриДобавленииНастроекРаботыСФайлами(ОбщиеНастройки, ПерсональныеНастройки) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебныйВызовСервера"); - Модуль.ДобавитьНастройкиРаботыСФайлами(ОбщиеНастройки, ПерсональныеНастройки); + МодульРаботаСФайламиСлужебныйВызовСервера = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебныйВызовСервера"); + МодульРаботаСФайламиСлужебныйВызовСервера.ДобавитьНастройкиРаботыСФайлами(ОбщиеНастройки, ПерсональныеНастройки); КонецЕсли; КонецПроцедуры @@ -1299,8 +1308,8 @@ РазмерФайлов = 0; Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебныйВызовСервера"); - РазмерФайлов = РазмерФайлов + Модуль.ПодсчитатьРазмерФайловНаТоме(СсылкаТома); + МодульРаботаСФайламиСлужебныйВызовСервера = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебныйВызовСервера"); + РазмерФайлов = РазмерФайлов + МодульРаботаСФайламиСлужебныйВызовСервера.ПодсчитатьРазмерФайловНаТоме(СсылкаТома); КонецЕсли; КонецПроцедуры @@ -1315,8 +1324,8 @@ Процедура ПриОпределенииКодировкиВерсииФайла(ВерсияСсылка, Кодировка) Экспорт Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСФайлами") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебныйВызовСервера"); - Кодировка = Модуль.ПолучитьКодировкуВерсииФайла(ВерсияСсылка); + МодульРаботаСФайламиСлужебныйВызовСервера = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаСФайламиСлужебныйВызовСервера"); + Кодировка = МодульРаботаСФайламиСлужебныйВызовСервера.ПолучитьКодировкуВерсииФайла(ВерсияСсылка); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/CommonModules/ФайловыеФункцииСлужебныйВМоделиСервиса/Module.bsl b/SSL/src/CommonModules/ФайловыеФункцииСлужебныйВМоделиСервиса/Module.bsl index 2b5d111bf..ced14f54d 100644 --- a/SSL/src/CommonModules/ФайловыеФункцииСлужебныйВМоделиСервиса/Module.bsl +++ b/SSL/src/CommonModules/ФайловыеФункцииСлужебныйВМоделиСервиса/Module.bsl @@ -76,7 +76,6 @@ Обработчик = Обработчики.Добавить(); Обработчик.Версия = "2.1.2.4"; Обработчик.Процедура = "ФайловыеФункцииСлужебныйВМоделиСервиса.ЗаполнитьОчередьИзвлеченияТекста"; - Обработчик.Опциональный = Истина; Обработчик = Обработчики.Добавить(); Обработчик.Версия = "2.1.3.19"; @@ -237,7 +236,7 @@ Набор = РегистрыСведений.ОчередьИзвлеченияТекста.СоздатьНаборЗаписей(); Набор.Загрузить(Запрос.Выполнить().Выгрузить()); - Набор.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Набор); ЗафиксироватьТранзакцию(); diff --git a/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиент/Module.bsl b/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиент/Module.bsl index 461f673a9..043a6da76 100644 --- a/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиент/Module.bsl +++ b/SSL/src/CommonModules/ФайловыеФункцииСлужебныйКлиент/Module.bsl @@ -111,17 +111,7 @@ Если Путь = Неопределено Тогда Если НЕ ПараметрыКлиента.ЭтоБазоваяВерсияКонфигурации Тогда - - Оболочка = Новый COMОбъект("MSScriptControl.ScriptControl"); - Оболочка.Language = "vbscript"; - Оболочка.AddCode(" - |Function SpecialFoldersName(Name) - |set Shell=CreateObject(""WScript.Shell"") - |SpecialFoldersName=Shell.SpecialFolders(Name) - |End Function"); - - Путь = НормализоватьКаталог(Оболочка.Run("SpecialFoldersName", "MyDocuments")); - + Путь = КаталогМоиДокументы(); ОбщегоНазначенияВызовСервера.ХранилищеОбщихНастроекСохранить( "ИмяПапкиВыгрузки", "ИмяПапкиВыгрузки", Путь); КонецЕсли; @@ -133,6 +123,31 @@ КонецФункции +// Возвращает каталог "Мои Документы". +// +Функция КаталогМоиДокументы() Экспорт + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Возврат Вычислить("КаталогДокументов()"); + КонецЕсли; + + #Если ВебКлиент Тогда + Возврат ""; + #Иначе + Оболочка = Новый COMОбъект("MSScriptControl.ScriptControl"); + Оболочка.Language = "vbscript"; + Оболочка.AddCode(" + |Function SpecialFoldersName(Name) + |set Shell=CreateObject(""WScript.Shell"") + |SpecialFoldersName=Shell.SpecialFolders(Name) + |End Function"); + + КаталогМоиДокументы = Оболочка.Run("SpecialFoldersName", "MyDocuments"); + Возврат ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогМоиДокументы); + #КонецЕсли + +КонецФункции + // Показывает пользователю диалог выбора файлов и возвращает // массив - выбранные файлы для импорта. // @@ -279,26 +294,32 @@ #Если Не ВебКлиент Тогда - ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента(); - - Если НЕ ПараметрыРаботыКлиента.ЭтоБазоваяВерсияКонфигурации Тогда + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + ИмяКаталога = Вычислить("РабочийКаталогДанныхПользователя()"); + Иначе - Оболочка = Новый COMОбъект("WScript.Shell"); - Путь = Оболочка.ExpandEnvironmentStrings("%APPDATA%"); - Путь = Путь + "\1C\Файлы\"; + ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента(); - Путь = Путь - + ПараметрыРаботыКлиента.ИмяКонфигурации - + ОбщегоНазначенияКлиентСервер.РазделительПути(); + Если НЕ ПараметрыРаботыКлиента.ЭтоБазоваяВерсияКонфигурации Тогда + + Оболочка = Новый COMОбъект("WScript.Shell"); + Путь = Оболочка.ExpandEnvironmentStrings("%APPDATA%"); + Путь = Путь + "\1C\Файлы\"; + + Путь = Путь + + ПараметрыРаботыКлиента.ИмяКонфигурации + + ОбщегоНазначенияКлиентСервер.РазделительПути(); + + ИмяПользователя = ПользователиКлиентСервер.ТекущийПользователь(); + + ИмяКаталога = Путь + ИмяПользователя; + ИмяКаталога = СтрЗаменить(ИмяКаталога, "<", " "); + ИмяКаталога = СтрЗаменить(ИмяКаталога, ">", " "); + ИмяКаталога = СокрЛП(ИмяКаталога); + + ИмяКаталога = ИмяКаталога + ОбщегоНазначенияКлиентСервер.РазделительПути(); + КонецЕсли; - ИмяПользователя = ПользователиКлиентСервер.ТекущийПользователь(); - - ИмяКаталога = Путь + ИмяПользователя; - ИмяКаталога = СтрЗаменить(ИмяКаталога, "<", " "); - ИмяКаталога = СтрЗаменить(ИмяКаталога, ">", " "); - ИмяКаталога = СокрЛП(ИмяКаталога); - - ИмяКаталога = ИмяКаталога + ОбщегоНазначенияКлиентСервер.РазделительПути(); КонецЕсли; #Иначе // ВебКлиент @@ -307,18 +328,24 @@ Если РасширениеПодключено Тогда - Режим = РежимДиалогаВыбораФайла.ВыборКаталога; - ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); - ДиалогОткрытияФайла.ПолноеИмяФайла = ""; - ДиалогОткрытияФайла.Каталог = ""; - ДиалогОткрытияФайла.МножественныйВыбор = Ложь; - ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите путь к рабочему каталогу'"); - - Если ДиалогОткрытияФайла.Выбрать() Тогда + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда - ИмяКаталога = ДиалогОткрытияФайла.Каталог; + ИмяКаталога = Вычислить("РабочийКаталогДанныхПользователя()"); + + Иначе + + Режим = РежимДиалогаВыбораФайла.ВыборКаталога; + ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); + ДиалогОткрытияФайла.ПолноеИмяФайла = ""; + ДиалогОткрытияФайла.Каталог = ""; + ДиалогОткрытияФайла.МножественныйВыбор = Ложь; + ДиалогОткрытияФайла.Заголовок = НСтр("ru = 'Выберите путь к рабочему каталогу'"); + + Если ДиалогОткрытияФайла.Выбрать() Тогда + ИмяКаталога = ДиалогОткрытияФайла.Каталог; + ИмяКаталога = ИмяКаталога + ОбщегоНазначенияКлиентСервер.РазделительПути(); + КонецЕсли; - ИмяКаталога = ИмяКаталога + ОбщегоНазначенияКлиентСервер.РазделительПути(); КонецЕсли; КонецЕсли; @@ -415,11 +442,11 @@ | |Взять файл из хранилища файлов и заменить им существующий или |открыть существующий без обновления?'")); + Иначе + // Все совпадает - и дата, и размер. + Возврат "ОткрытьСуществующий"; КонецЕсли; - // Все совпадает - и дата, и размер. - Возврат "ОткрытьСуществующий"; - ИначеЕсли Параметры.ДатаИзмененияУниверсальнаяВРабочемКаталоге < Параметры.ДатаИзмененияУниверсальнаяВХранилищеФайлов Тогда // В хранилище файлов более новый файл. diff --git a/SSL/src/CommonModules/ФизическиеЛица/Module.bsl b/SSL/src/CommonModules/ФизическиеЛица/Module.bsl index da0261c1a..4df866c1a 100644 --- a/SSL/src/CommonModules/ФизическиеЛица/Module.bsl +++ b/SSL/src/CommonModules/ФизическиеЛица/Module.bsl @@ -49,6 +49,80 @@ КонецФункции +// Функция склоняет переданную фразу +// Параметры: +// ФИО (обязательный), тип строка +// Параметр должен содержать фамилию имя отчества в именительном падеже, которые необходимо просклонять. +// +// Падеж (обязательный), тип число +// Падеж, в который необходимо поставить ФИО. +// 1 - Именительный +// 2 - Родительный +// 3 - Дательный +// 4 - Винительный +// 5 - Творительный +// 6 - Предложный +// +// Результат (обязательный), тип строка +// Переменная, в которую будет возвращен результат склонения. +// +// Пол (необязательный), тип Перечисление.ПолФизическогоЛица +// Пол физического лица +// +Функция Просклонять(Знач ФИО, Падеж, Результат, Пол = Неопределено) Экспорт + + ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаСклоненияФИО", "Decl"); + Компонента = Новый("AddIn.Decl.CNameDecl"); + + Результат = ""; + + МассивСтрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ФИО, " "); + + // Выделим первые 3 слова, так как компонента не умеет склонять фразу большую 3х символов + НомерНесклоняемогоСимвола = 4; + Для Номер = 1 По Мин(МассивСтрок.Количество(), 3) Цикл + Если Не ФизическиеЛицаКлиентСервер.ФИОНаписаноВерно(МассивСтрок[Номер-1], Истина) Тогда + НомерНесклоняемогоСимвола = Номер; + Прервать; + КонецЕсли; + + Результат = Результат + ?(Номер > 1, " ", "") + МассивСтрок[Номер-1]; + КонецЦикла; + + Если ПустаяСтрока(Результат) Тогда + Результат = ФИО; + Возврат Ложь; + КонецЕсли; + + Попытка + Если Пол = Перечисления.ПолФизическогоЛица.Мужской Тогда + Результат = Компонента.Просклонять(Результат, Падеж, 1) + " "; + + ИначеЕсли Пол = Перечисления.ПолФизическогоЛица.Женский Тогда + Результат = Компонента.Просклонять(Результат, Падеж, 2) + " "; + + Иначе + Результат = Компонента.Просклонять(Результат, Падеж) + " "; + + КонецЕсли; + + Исключение + Результат = ФИО; + Возврат Ложь; + + КонецПопытки; + + // Остальные символы добавим без склонения + Для Номер = НомерНесклоняемогоСимвола По МассивСтрок.Количество() Цикл + Результат = Результат + " " + МассивСтрок[Номер-1]; + КонецЦикла; + + Результат = СокрЛП(Результат); + + Возврат Истина; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС @@ -186,7 +260,7 @@ КонецЕсли; КонецЦикла; - НаборЗаписей.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей); НаборЗаписей.Очистить(); КонецЦикла; @@ -272,7 +346,7 @@ ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), Выборка); КонецЦикла; - НаборЗаписей.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей); НаборЗаписей.Очистить(); КонецЦикла; @@ -297,7 +371,7 @@ Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл - Выборка.Ссылка.ПолучитьОбъект().Удалить(); + ОбновлениеИнформационнойБазы.УдалитьДанные(Выборка.Ссылка.ПолучитьОбъект()); КонецЦикла; КонецПроцедуры @@ -341,7 +415,7 @@ Объект = Выборка.Ссылка.ПолучитьОбъект(); ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка); Объект.РеквизитДопУпорядочивания = Порядок; - Объект.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект); Порядок = Порядок + 1; diff --git a/SSL/src/CommonModules/ФормаОтчетаПереопределяемый/Module.bsl b/SSL/src/CommonModules/ФормаОтчетаПереопределяемый/Module.bsl index a87b2c4c6..fbe20dfad 100644 --- a/SSL/src/CommonModules/ФормаОтчетаПереопределяемый/Module.bsl +++ b/SSL/src/CommonModules/ФормаОтчетаПереопределяемый/Module.bsl @@ -17,6 +17,8 @@ // Процедура ДополнитьСвязиОбъектовМетаданных(СвязиОбъектовМетаданных) Экспорт + + КонецПроцедуры // Вызывается в одноименном обработчике формы отчета после выполнения кода формы. diff --git a/SSL/src/CommonModules/ФункцииОтчетовКлиентСервер/Module.bsl b/SSL/src/CommonModules/ФункцииОтчетовКлиентСервер/Module.bsl index 6caba324a..53b187b29 100644 --- a/SSL/src/CommonModules/ФункцииОтчетовКлиентСервер/Module.bsl +++ b/SSL/src/CommonModules/ФункцииОтчетовКлиентСервер/Module.bsl @@ -73,6 +73,8 @@ ЭтоОтбор = Истина; ИначеЕсли ТипОбщейНастройки = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда ЭтоОтбор = Ложь; + ИначеЕсли ТипОбщейНастройки = Тип("НастройкиВложенногоОбъектаКомпоновкиДанных") Тогда + Возврат НастройкиКД.ДоступныеОбъекты.Элементы.Найти(ОбщаяНастройка.ИдентификаторОбъекта); Иначе Возврат Неопределено; КонецЕсли; @@ -81,8 +83,7 @@ ДоступнаяНастройка = ?( ЭтоОтбор, НастройкиКД.ДоступныеПоляОтбора.НайтиПоле(ОбщаяНастройка.ЛевоеЗначение), - НастройкиКД.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(ОбщаяНастройка.Параметр) - ); + НастройкиКД.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(ОбщаяНастройка.Параметр)); Если ДоступнаяНастройка <> Неопределено Тогда Возврат ДоступнаяНастройка; @@ -99,8 +100,7 @@ ДоступнаяНастройка = ?( ЭтоОтбор, ЭлементСтруктурыКД.Настройки.ДоступныеПоляОтбора.НайтиПоле(ОбщаяНастройка.ЛевоеЗначение), - ЭлементСтруктурыКД.Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(ОбщаяНастройка.Параметр) - ); + ЭлементСтруктурыКД.Настройки.ПараметрыДанных.ДоступныеПараметры.НайтиПараметр(ОбщаяНастройка.Параметр)); Если ДоступнаяНастройка <> Неопределено Тогда Возврат ДоступнаяНастройка; @@ -558,7 +558,7 @@ // Функция ПривестиЗначениеКТипуГруппыИЭлементы(ИсходноеЗначение) Экспорт Если ИсходноеЗначение = ИспользованиеГруппИЭлементов.Элементы Тогда - Возврат ГруппыИЭлементы.Элементы + Возврат ГруппыИЭлементы.Элементы; ИначеЕсли ИсходноеЗначение = ИспользованиеГруппИЭлементов.ГруппыИЭлементы Тогда Возврат ГруппыИЭлементы.ГруппыИЭлементы; ИначеЕсли ИсходноеЗначение = ИспользованиеГруппИЭлементов.Группы Тогда @@ -570,6 +570,23 @@ КонецЕсли; КонецФункции +// Приводит значение типа ГруппыИЭлементы к типу ИспользованиеГруппИЭлементов. +// Для значения Авто и других типов возвращает значение Неопределено. +// +Функция ПривестиЗначениеКТипуИспользованиеГруппИЭлементов(ИсходноеЗначение) Экспорт + Если ИсходноеЗначение = ГруппыИЭлементы.Элементы Тогда + Возврат ИспользованиеГруппИЭлементов.Элементы; + ИначеЕсли ИсходноеЗначение = ГруппыИЭлементы.ГруппыИЭлементы Тогда + Возврат ИспользованиеГруппИЭлементов.ГруппыИЭлементы; + ИначеЕсли ИсходноеЗначение = ГруппыИЭлементы.Группы Тогда + Возврат ИспользованиеГруппИЭлементов.Группы; + ИначеЕсли ТипЗнч(ИсходноеЗначение) = Тип("ИспользованиеГруппИЭлементов") Тогда + Возврат ИсходноеЗначение; + Иначе + Возврат Неопределено; + КонецЕсли; +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Локальные служебные процедуры и функции @@ -842,8 +859,7 @@ ШаблонПериода, Формат(НачНедели, "ДФ=dd.MM"), Формат(КонНедели, "ДФ=dd.MM"), - НеделяГода(КонНедели) - ); + НеделяГода(КонНедели)); СписокПериодов.Добавить(НачНедели, ПредставлениеПериода); КонецЦикла; diff --git a/SSL/src/CommonModules/ЭлектроннаяПочта/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяПочта/Module.bsl index d99e8732e..df2cdc869 100644 --- a/SSL/src/CommonModules/ЭлектроннаяПочта/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяПочта/Module.bsl @@ -858,7 +858,6 @@ //////////////////////////////////////////////////////////////////////////////// // Первоначальное заполнение и обновление ИБ -// // Добавляет процедуры-обработчики обновления, необходимые данной подсистеме. // @@ -869,7 +868,7 @@ Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт Обработчик = Обработчики.Добавить(); - Обработчик.Версия = "1.0.0.0"; + Обработчик.НачальноеЗаполнение = Истина; Обработчик.Процедура = "ЭлектроннаяПочта.ЗаполнитьСистемнуюУчетнуюЗапись"; КонецПроцедуры @@ -879,9 +878,8 @@ Процедура ЗаполнитьСистемнуюУчетнуюЗапись() Экспорт УчетнаяЗапись = ПолучитьСистемнуюУчетнуюЗапись().ПолучитьОбъект(); - УчетнаяЗапись.Заблокировать(); УчетнаяЗапись.ЗаполнитьОбъектЗначениямиПоУмолчанию(); - УчетнаяЗапись.Записать(); + ОбновлениеИнформационнойБазы.ЗаписатьДанные(УчетнаяЗапись); КонецПроцедуры diff --git a/SSL/src/CommonModules/ЭлектроннаяЦифроваяПодпись/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяЦифроваяПодпись/Module.bsl index 1dc1dfc4a..0ebe47610 100644 --- a/SSL/src/CommonModules/ЭлектроннаяЦифроваяПодпись/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяЦифроваяПодпись/Module.bsl @@ -474,7 +474,7 @@ КонецЕсли; - КонецЦикла; + КонецЦикла; Для Каждого Запись Из ТабЗначений Цикл @@ -483,10 +483,10 @@ Элемент = Справочники.НазначенияСертификатовЭЦП.СоздатьЭлемент(); Элемент.Код = Запись.Code; Элемент.Наименование = Запись.Name; - Элемент.Записать(); - КонецЕсли; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Элемент); + КонецЕсли; - КонецЦикла; + КонецЦикла; ЗафиксироватьТранзакцию(); Исключение @@ -494,7 +494,7 @@ ВызватьИсключение; КонецПопытки; -КонецПроцедуры +КонецПроцедуры // Заполняет справочник НазначенияСертификатовЭЦП значениями из макета Процедура ЗаполнитьНазначенияСертификатовЭЦП() Экспорт @@ -513,10 +513,10 @@ Элемент = Справочники.НазначенияСертификатовЭЦП.СоздатьЭлемент(); Элемент.Код = Запись.Code; Элемент.Наименование = Запись.Name; - Элемент.Записать(); - КонецЕсли; + ОбновлениеИнформационнойБазы.ЗаписатьДанные(Элемент); + КонецЕсли; - КонецЦикла; + КонецЦикла; ЗафиксироватьТранзакцию(); Исключение diff --git a/SSL/src/CommonModules/ЭлектроннаяЦифроваяПодписьКлиент/Module.bsl b/SSL/src/CommonModules/ЭлектроннаяЦифроваяПодписьКлиент/Module.bsl index 1cde14672..9aeed115e 100644 --- a/SSL/src/CommonModules/ЭлектроннаяЦифроваяПодписьКлиент/Module.bsl +++ b/SSL/src/CommonModules/ЭлектроннаяЦифроваяПодписьКлиент/Module.bsl @@ -69,23 +69,11 @@ // Параметры: // Модально - Булево - Открывать форму поверх всех остальных. // -Процедура ОткрытьФормуНастройкиЭЦП(Модально = Ложь) Экспорт +Процедура ОткрытьФормуНастройкиЭЦП() Экспорт - СистемнаяИнформация = Новый СистемнаяИнформация(); + ПараметрыФормы = Новый Структура("ПоказыватьНастройкиШифрования", Истина); - ВебКлиентВLinux = Ложь; - - Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86 ИЛИ СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64 Тогда - ВебКлиентВLinux = Истина; - КонецЕсли; - - ПараметрыФормы = Новый Структура("ВебКлиентВLinux, ПоказыватьНастройкиШифрования", ВебКлиентВLinux, Истина); - - Если Модально Тогда - ОткрытьФормуМодально("ОбщаяФорма.ПерсональныеНастройкиЭЦП", ПараметрыФормы); - Иначе - ОткрытьФорму("ОбщаяФорма.ПерсональныеНастройкиЭЦП", ПараметрыФормы); - КонецЕсли; + ОткрытьФорму("ОбщаяФорма.ПерсональныеНастройкиЭЦП", ПараметрыФормы); КонецПроцедуры @@ -184,7 +172,7 @@ Возврат МассивСтруктурСертификатов; КонецЕсли; - ТекущаяДата = ТекущаяДата(); // Используется для выявления истекших сертификатов, которые хранятся на клиентском компьютере. + ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса(); // Используется для выявления истекших сертификатов, которые хранятся на клиентском компьютере. Хранилище = МенеджерКриптографии.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты); СертификатыХранилища = Хранилище.ПолучитьВсе(); @@ -241,8 +229,6 @@ // МенеджерКриптографии - менеджер криптографии Функция ПолучитьМенеджерКриптографии(Отказ = Ложь) Экспорт - Отказ = Ложь; - Если НЕ ПодключитьРасширениеРаботыСКриптографией() Тогда Отказ = Истина; Возврат Неопределено; @@ -273,18 +259,18 @@ // Открывает форму просмотра сертификата ЭЦП // // Параметры -// Отпечаток - Строка - отпечаток сертификата ЭЦП +// Отпечаток - Строка - отпечаток сертификата ЭЦП // Процедура ОткрытьСертификат(Отпечаток) Экспорт Если ОбщегоНазначенияКлиентПовтИсп.ЭтоВебКлиентПодMacOS() Тогда Возврат; - КонецЕсли; - + КонецЕсли; + СтруктураСертификата = ЗаполнитьСтруктуруСертификатаПоОтпечатку(Отпечаток); Если СтруктураСертификата <> Неопределено Тогда ПараметрыФормы = Новый Структура("СтруктураСертификата, Отпечаток", СтруктураСертификата, Отпечаток); - СтруктураВозврата = ОткрытьФормуМодально("ОбщаяФорма.СертификатЭЦП", ПараметрыФормы); + ОткрытьФорму("ОбщаяФорма.СертификатЭЦП", ПараметрыФормы); КонецЕсли; КонецПроцедуры @@ -305,7 +291,7 @@ Если СтруктураСертификата <> Неопределено Тогда ПараметрыФормы = Новый Структура("СтруктураСертификата, Отпечаток, АдресСертификата", СтруктураСертификата, Отпечаток, АдресСертификата); - ОткрытьФормуМодально("ОбщаяФорма.СертификатЭЦП", ПараметрыФормы); + ОткрытьФорму("ОбщаяФорма.СертификатЭЦП", ПараметрыФормы); КонецЕсли; КонецПроцедуры @@ -346,23 +332,23 @@ Если ТекущиеДанные = Неопределено Тогда Возврат; - КонецЕсли; + КонецЕсли; Если ОбщегоНазначенияКлиентПовтИсп.ЭтоВебКлиентПодMacOS() Тогда Возврат; - КонецЕсли; + КонецЕсли; РасширениеПодключеноФайл = ПодключитьРасширениеРаботыСФайлами(); ОбъектУказан = Ложь; - Если ТипЗнч(ТекущиеДанные.Объект) = Тип("Строка") Тогда + Если ТипЗнч(ТекущиеДанные.Объект) = Тип("Строка") Тогда Если НЕ ПустаяСтрока(ТекущиеДанные.Объект) Тогда ОбъектУказан = Истина; - КонецЕсли; + КонецЕсли; ИначеЕсли ТекущиеДанные.Объект <> Неопределено И (НЕ ТекущиеДанные.Объект.Пустая()) Тогда ОбъектУказан = Истина; - КонецЕсли; + КонецЕсли; Если ОбъектУказан Тогда @@ -382,10 +368,10 @@ СтруктураСертификата, Отпечаток, ТекущиеДанные.АдресСертификата, ТекущиеДанные.УстановившийПодпись, ТекущиеДанные.Комментарий, ТекущиеДанные.АдресПодписи, ТекущиеДанные.ДатаПодписи); - ОткрытьФормуМодально("ОбщаяФорма.ПодписьЭЦП", ПараметрыФормы); + ОткрытьФорму("ОбщаяФорма.ПодписьЭЦП", ПараметрыФормы); КонецЕсли; - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -546,8 +532,7 @@ Фильтр = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Файлы цифровых подписей (*.%1)|*.%1|Все файлы (*.*)|*.*'"), - РасширениеДляФайловПодписи - ); + РасширениеДляФайловПодписи); ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; @@ -571,8 +556,7 @@ Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Подпись сохранена в файл |""%1"".'"), - ДиалогОткрытияФайла.ПолноеИмяФайла - ); + ДиалогОткрытияФайла.ПолноеИмяФайла); Состояние(Текст); diff --git a/SSL/src/CommonPictures/Взаимодействия/Picture.png b/SSL/src/CommonPictures/Взаимодействия/Picture.png index 800b127e2..e33c95117 100644 Binary files a/SSL/src/CommonPictures/Взаимодействия/Picture.png and b/SSL/src/CommonPictures/Взаимодействия/Picture.png differ diff --git a/SSL/src/CommonPictures/ВидыНавигацииПоВзаимодействиямОтПредметовВзаимодействий/Picture.png b/SSL/src/CommonPictures/ВидыНавигацииПоВзаимодействиямОтПредметовВзаимодействий/Picture.png index a128db99e..58319f904 100644 Binary files a/SSL/src/CommonPictures/ВидыНавигацииПоВзаимодействиямОтПредметовВзаимодействий/Picture.png and b/SSL/src/CommonPictures/ВидыНавигацииПоВзаимодействиямОтПредметовВзаимодействий/Picture.png differ diff --git a/SSL/src/CommonPictures/ВидыНавигацииПоВзаимодействиямОтРеквизитаПредмета/Picture.png b/SSL/src/CommonPictures/ВидыНавигацииПоВзаимодействиямОтРеквизитаПредмета/Picture.png index 67c145b66..d70240b56 100644 Binary files a/SSL/src/CommonPictures/ВидыНавигацииПоВзаимодействиямОтРеквизитаПредмета/Picture.png and b/SSL/src/CommonPictures/ВидыНавигацииПоВзаимодействиямОтРеквизитаПредмета/Picture.png differ diff --git a/SSL/src/CommonPictures/ВходящееСообщение/Picture.png b/SSL/src/CommonPictures/ВходящееСообщение/Picture.png new file mode 100644 index 000000000..83740169d Binary files /dev/null and b/SSL/src/CommonPictures/ВходящееСообщение/Picture.png differ diff --git a/SSL/src/CommonPictures/ВходящееСообщение/ВходящееСообщение.mdo b/SSL/src/CommonPictures/ВходящееСообщение/ВходящееСообщение.mdo new file mode 100644 index 000000000..236fa4338 --- /dev/null +++ b/SSL/src/CommonPictures/ВходящееСообщение/ВходящееСообщение.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="eb226ca1-6478-4d38-b1ee-b7ec38525249"> + <name>ВходящееСообщение</name> + <synonym> + <key>ru</key> + <value>Входящее сообщение</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/Picture.png b/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/Picture.png new file mode 100644 index 000000000..3e728964a Binary files /dev/null and b/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/Picture.png differ diff --git a/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/ВыравниваниеПоЛевомуКраю.mdo b/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/ВыравниваниеПоЛевомуКраю.mdo new file mode 100644 index 000000000..f384f409a --- /dev/null +++ b/SSL/src/CommonPictures/ВыравниваниеПоЛевомуКраю/ВыравниваниеПоЛевомуКраю.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="dd9d3586-775b-4d5b-ab2d-78db0870ecdd"> + <name>ВыравниваниеПоЛевомуКраю</name> + <synonym> + <key>ru</key> + <value>Выравнивание по левому краю</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/Picture.png b/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/Picture.png new file mode 100644 index 000000000..8c7efd5b0 Binary files /dev/null and b/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/Picture.png differ diff --git a/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/ВыравниваниеПоПравомуКраю.mdo b/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/ВыравниваниеПоПравомуКраю.mdo new file mode 100644 index 000000000..7d2ba8ad3 --- /dev/null +++ b/SSL/src/CommonPictures/ВыравниваниеПоПравомуКраю/ВыравниваниеПоПравомуКраю.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="44c610c3-9c0b-4bf0-95d6-f17100d3e98d"> + <name>ВыравниваниеПоПравомуКраю</name> + <synonym> + <key>ru</key> + <value>Выравнивание по правому краю</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ВыравниваниеПоЦентру/Picture.png b/SSL/src/CommonPictures/ВыравниваниеПоЦентру/Picture.png new file mode 100644 index 000000000..a811db437 Binary files /dev/null and b/SSL/src/CommonPictures/ВыравниваниеПоЦентру/Picture.png differ diff --git a/SSL/src/CommonPictures/ВыравниваниеПоЦентру/ВыравниваниеПоЦентру.mdo b/SSL/src/CommonPictures/ВыравниваниеПоЦентру/ВыравниваниеПоЦентру.mdo new file mode 100644 index 000000000..956901a2d --- /dev/null +++ b/SSL/src/CommonPictures/ВыравниваниеПоЦентру/ВыравниваниеПоЦентру.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a54f2d41-a05e-4878-80c6-81ca2899fa4c"> + <name>ВыравниваниеПоЦентру</name> + <synonym> + <key>ru</key> + <value>Выравнивание по центру</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ВыравниваниеПоШирине/Picture.png b/SSL/src/CommonPictures/ВыравниваниеПоШирине/Picture.png new file mode 100644 index 000000000..4df108b9e Binary files /dev/null and b/SSL/src/CommonPictures/ВыравниваниеПоШирине/Picture.png differ diff --git a/SSL/src/CommonPictures/ВыравниваниеПоШирине/ВыравниваниеПоШирине.mdo b/SSL/src/CommonPictures/ВыравниваниеПоШирине/ВыравниваниеПоШирине.mdo new file mode 100644 index 000000000..da9faeca6 --- /dev/null +++ b/SSL/src/CommonPictures/ВыравниваниеПоШирине/ВыравниваниеПоШирине.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="23a898d9-5bcb-4744-ab6c-97b17dc98f20"> + <name>ВыравниваниеПоШирине</name> + <synonym> + <key>ru</key> + <value>Выравнивание по ширине</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ГраницаВезде/Picture.png b/SSL/src/CommonPictures/ГраницаВезде/Picture.png new file mode 100644 index 000000000..3c301ee3f Binary files /dev/null and b/SSL/src/CommonPictures/ГраницаВезде/Picture.png differ diff --git a/SSL/src/CommonPictures/ГраницаВезде/ГраницаВезде.mdo b/SSL/src/CommonPictures/ГраницаВезде/ГраницаВезде.mdo new file mode 100644 index 000000000..26ecf9094 --- /dev/null +++ b/SSL/src/CommonPictures/ГраницаВезде/ГраницаВезде.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="50a04251-ac9c-4a21-a37f-ebc9ac3ef233"> + <name>ГраницаВезде</name> + <synonym> + <key>ru</key> + <value>Граница везде</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ГраницаВнутри/Picture.png b/SSL/src/CommonPictures/ГраницаВнутри/Picture.png new file mode 100644 index 000000000..3ef50c2b6 Binary files /dev/null and b/SSL/src/CommonPictures/ГраницаВнутри/Picture.png differ diff --git a/SSL/src/CommonPictures/ГраницаВнутри/ГраницаВнутри.mdo b/SSL/src/CommonPictures/ГраницаВнутри/ГраницаВнутри.mdo new file mode 100644 index 000000000..85766216d --- /dev/null +++ b/SSL/src/CommonPictures/ГраницаВнутри/ГраницаВнутри.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="f8f56806-ed7e-4059-a0c8-940538c14c98"> + <name>ГраницаВнутри</name> + <synonym> + <key>ru</key> + <value>Граница внутри</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ГраницаВокруг/Picture.png b/SSL/src/CommonPictures/ГраницаВокруг/Picture.png new file mode 100644 index 000000000..04d16e71b Binary files /dev/null and b/SSL/src/CommonPictures/ГраницаВокруг/Picture.png differ diff --git a/SSL/src/CommonPictures/ГраницаВокруг/ГраницаВокруг.mdo b/SSL/src/CommonPictures/ГраницаВокруг/ГраницаВокруг.mdo new file mode 100644 index 000000000..df03b6b5a --- /dev/null +++ b/SSL/src/CommonPictures/ГраницаВокруг/ГраницаВокруг.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="9ff9f92b-c509-48da-82ce-15b524a895d6"> + <name>ГраницаВокруг</name> + <synonym> + <key>ru</key> + <value>Граница вокруг</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ГраницаСверху/Picture.png b/SSL/src/CommonPictures/ГраницаСверху/Picture.png new file mode 100644 index 000000000..dbed8a345 Binary files /dev/null and b/SSL/src/CommonPictures/ГраницаСверху/Picture.png differ diff --git a/SSL/src/CommonPictures/ГраницаСверху/ГраницаСверху.mdo b/SSL/src/CommonPictures/ГраницаСверху/ГраницаСверху.mdo new file mode 100644 index 000000000..bdaf84845 --- /dev/null +++ b/SSL/src/CommonPictures/ГраницаСверху/ГраницаСверху.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c8bf96c8-f359-4940-8e87-3d190371d6d3"> + <name>ГраницаСверху</name> + <synonym> + <key>ru</key> + <value>Граница сверху</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ГраницаСлева/Picture.png b/SSL/src/CommonPictures/ГраницаСлева/Picture.png new file mode 100644 index 000000000..320006f22 Binary files /dev/null and b/SSL/src/CommonPictures/ГраницаСлева/Picture.png differ diff --git a/SSL/src/CommonPictures/ГраницаСлева/ГраницаСлева.mdo b/SSL/src/CommonPictures/ГраницаСлева/ГраницаСлева.mdo new file mode 100644 index 000000000..bb106e96d --- /dev/null +++ b/SSL/src/CommonPictures/ГраницаСлева/ГраницаСлева.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="477f0b81-0eb1-4de1-8cb5-38f1e0823947"> + <name>ГраницаСлева</name> + <synonym> + <key>ru</key> + <value>Граница слева</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ГраницаСнизу/Picture.png b/SSL/src/CommonPictures/ГраницаСнизу/Picture.png new file mode 100644 index 000000000..dd8e18111 Binary files /dev/null and b/SSL/src/CommonPictures/ГраницаСнизу/Picture.png differ diff --git a/SSL/src/CommonPictures/ГраницаСнизу/ГраницаСнизу.mdo b/SSL/src/CommonPictures/ГраницаСнизу/ГраницаСнизу.mdo new file mode 100644 index 000000000..e0931dc08 --- /dev/null +++ b/SSL/src/CommonPictures/ГраницаСнизу/ГраницаСнизу.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d914eaa9-ce85-4df7-a545-2d411ef915b0"> + <name>ГраницаСнизу</name> + <synonym> + <key>ru</key> + <value>Граница снизу</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ГраницаСправа/Picture.png b/SSL/src/CommonPictures/ГраницаСправа/Picture.png new file mode 100644 index 000000000..e04b138be Binary files /dev/null and b/SSL/src/CommonPictures/ГраницаСправа/Picture.png differ diff --git a/SSL/src/CommonPictures/ГраницаСправа/ГраницаСправа.mdo b/SSL/src/CommonPictures/ГраницаСправа/ГраницаСправа.mdo new file mode 100644 index 000000000..86642d796 --- /dev/null +++ b/SSL/src/CommonPictures/ГраницаСправа/ГраницаСправа.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="41881344-82b7-4904-9ab8-0207d9bcd0a9"> + <name>ГраницаСправа</name> + <synonym> + <key>ru</key> + <value>Граница справа</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ИзменитьШрифт/Picture.png b/SSL/src/CommonPictures/ИзменитьШрифт/Picture.png new file mode 100644 index 000000000..2813781da Binary files /dev/null and b/SSL/src/CommonPictures/ИзменитьШрифт/Picture.png differ diff --git a/SSL/src/CommonPictures/ИзменитьШрифт/ИзменитьШрифт.mdo b/SSL/src/CommonPictures/ИзменитьШрифт/ИзменитьШрифт.mdo new file mode 100644 index 000000000..9e9290d3c --- /dev/null +++ b/SSL/src/CommonPictures/ИзменитьШрифт/ИзменитьШрифт.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="3f05dcf9-be52-42e1-b5ff-dea14d97a26f"> + <name>ИзменитьШрифт</name> + <synonym> + <key>ru</key> + <value>Изменить шрифт</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ИсходящееСообщение/Picture.png b/SSL/src/CommonPictures/ИсходящееСообщение/Picture.png new file mode 100644 index 000000000..d3974fd1c Binary files /dev/null and b/SSL/src/CommonPictures/ИсходящееСообщение/Picture.png differ diff --git a/SSL/src/CommonPictures/ИсходящееСообщение/ИсходящееСообщение.mdo b/SSL/src/CommonPictures/ИсходящееСообщение/ИсходящееСообщение.mdo new file mode 100644 index 000000000..12b50e2eb --- /dev/null +++ b/SSL/src/CommonPictures/ИсходящееСообщение/ИсходящееСообщение.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="3befd4a6-8f77-4159-9a99-09202d5c83c2"> + <name>ИсходящееСообщение</name> + <synonym> + <key>ru</key> + <value>Исходящее сообщение</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/КурсивноеНачертание/Picture.png b/SSL/src/CommonPictures/КурсивноеНачертание/Picture.png new file mode 100644 index 000000000..755adf614 Binary files /dev/null and b/SSL/src/CommonPictures/КурсивноеНачертание/Picture.png differ diff --git a/SSL/src/CommonPictures/КурсивноеНачертание/КурсивноеНачертание.mdo b/SSL/src/CommonPictures/КурсивноеНачертание/КурсивноеНачертание.mdo new file mode 100644 index 000000000..ee7e609ea --- /dev/null +++ b/SSL/src/CommonPictures/КурсивноеНачертание/КурсивноеНачертание.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ed4edc6f-048a-40d5-8f61-989895c95cf3"> + <name>КурсивноеНачертание</name> + <synonym> + <key>ru</key> + <value>Курсивное начертание</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/НаписатьSMS/Picture.png b/SSL/src/CommonPictures/НаписатьSMS/Picture.png new file mode 100644 index 000000000..e4f168d37 Binary files /dev/null and b/SSL/src/CommonPictures/НаписатьSMS/Picture.png differ diff --git a/SSL/src/CommonPictures/НаписатьSMS/НаписатьSMS.mdo b/SSL/src/CommonPictures/НаписатьSMS/НаписатьSMS.mdo new file mode 100644 index 000000000..5affd2834 --- /dev/null +++ b/SSL/src/CommonPictures/НаписатьSMS/НаписатьSMS.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="dc17d8b6-d277-43eb-8823-71d440ae1e90"> + <name>НаписатьSMS</name> + <synonym> + <key>ru</key> + <value>Написать SMS</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/НетГраницы/Picture.png b/SSL/src/CommonPictures/НетГраницы/Picture.png new file mode 100644 index 000000000..24979b95b Binary files /dev/null and b/SSL/src/CommonPictures/НетГраницы/Picture.png differ diff --git a/SSL/src/CommonPictures/НетГраницы/НетГраницы.mdo b/SSL/src/CommonPictures/НетГраницы/НетГраницы.mdo new file mode 100644 index 000000000..c9cf1c145 --- /dev/null +++ b/SSL/src/CommonPictures/НетГраницы/НетГраницы.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="d9a6706e-3dcd-4aec-b9d1-542330ba6e2e"> + <name>НетГраницы</name> + <synonym> + <key>ru</key> + <value>Нет границы</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ОбъединитьЯчейки/Picture.png b/SSL/src/CommonPictures/ОбъединитьЯчейки/Picture.png new file mode 100644 index 000000000..753665f65 Binary files /dev/null and b/SSL/src/CommonPictures/ОбъединитьЯчейки/Picture.png differ diff --git a/SSL/src/CommonPictures/ОбъединитьЯчейки/ОбъединитьЯчейки.mdo b/SSL/src/CommonPictures/ОбъединитьЯчейки/ОбъединитьЯчейки.mdo new file mode 100644 index 000000000..daf7a21d3 --- /dev/null +++ b/SSL/src/CommonPictures/ОбъединитьЯчейки/ОбъединитьЯчейки.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="cc770616-f6f6-4054-876c-f319b1f8c6cf"> + <name>ОбъединитьЯчейки</name> + <synonym> + <key>ru</key> + <value>Объединить ячейки</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ПиктограммыЭлементов/Picture.png b/SSL/src/CommonPictures/ПиктограммыЭлементов/Picture.png index 3e07ec8a3..713ebb05b 100644 Binary files a/SSL/src/CommonPictures/ПиктограммыЭлементов/Picture.png and b/SSL/src/CommonPictures/ПиктограммыЭлементов/Picture.png differ diff --git a/SSL/src/CommonPictures/Подчеркивание/Picture.png b/SSL/src/CommonPictures/Подчеркивание/Picture.png new file mode 100644 index 000000000..35d9996f2 Binary files /dev/null and b/SSL/src/CommonPictures/Подчеркивание/Picture.png differ diff --git a/SSL/src/CommonPictures/Подчеркивание/Подчеркивание.mdo b/SSL/src/CommonPictures/Подчеркивание/Подчеркивание.mdo new file mode 100644 index 000000000..e6f4957b7 --- /dev/null +++ b/SSL/src/CommonPictures/Подчеркивание/Подчеркивание.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ba59393c-c499-4999-91d4-b9e34d94db0e"> + <name>Подчеркивание</name> + <synonym> + <key>ru</key> + <value>Подчеркивание</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ПолужирноеНачертание/Picture.png b/SSL/src/CommonPictures/ПолужирноеНачертание/Picture.png new file mode 100644 index 000000000..db8b28be6 Binary files /dev/null and b/SSL/src/CommonPictures/ПолужирноеНачертание/Picture.png differ diff --git a/SSL/src/CommonPictures/ПолужирноеНачертание/ПолужирноеНачертание.mdo b/SSL/src/CommonPictures/ПолужирноеНачертание/ПолужирноеНачертание.mdo new file mode 100644 index 000000000..d7542e3e4 --- /dev/null +++ b/SSL/src/CommonPictures/ПолужирноеНачертание/ПолужирноеНачертание.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a3a9a48b-f241-45b2-b93b-d34bba0a8a66"> + <name>ПолужирноеНачертание</name> + <synonym> + <key>ru</key> + <value>Полужирное начертание</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ТолстаяГраницаВокруг/Picture.png b/SSL/src/CommonPictures/ТолстаяГраницаВокруг/Picture.png new file mode 100644 index 000000000..9fa3c2e05 Binary files /dev/null and b/SSL/src/CommonPictures/ТолстаяГраницаВокруг/Picture.png differ diff --git a/SSL/src/CommonPictures/ТолстаяГраницаВокруг/ТолстаяГраницаВокруг.mdo b/SSL/src/CommonPictures/ТолстаяГраницаВокруг/ТолстаяГраницаВокруг.mdo new file mode 100644 index 000000000..62845656b --- /dev/null +++ b/SSL/src/CommonPictures/ТолстаяГраницаВокруг/ТолстаяГраницаВокруг.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6c07ddfb-8823-4953-9905-9550b847dc3f"> + <name>ТолстаяГраницаВокруг</name> + <synonym> + <key>ru</key> + <value>Толстая граница вокруг</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ТолстаяГраницаСверху/Picture.png b/SSL/src/CommonPictures/ТолстаяГраницаСверху/Picture.png new file mode 100644 index 000000000..0cd546c28 Binary files /dev/null and b/SSL/src/CommonPictures/ТолстаяГраницаСверху/Picture.png differ diff --git a/SSL/src/CommonPictures/ТолстаяГраницаСверху/ТолстаяГраницаСверху.mdo b/SSL/src/CommonPictures/ТолстаяГраницаСверху/ТолстаяГраницаСверху.mdo new file mode 100644 index 000000000..be2fc0b07 --- /dev/null +++ b/SSL/src/CommonPictures/ТолстаяГраницаСверху/ТолстаяГраницаСверху.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="2362a8d5-dca2-4527-acc0-63782377f28a"> + <name>ТолстаяГраницаСверху</name> + <synonym> + <key>ru</key> + <value>Толстая граница сверху</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ТолстаяГраницаСнизу/Picture.png b/SSL/src/CommonPictures/ТолстаяГраницаСнизу/Picture.png new file mode 100644 index 000000000..ec7a4b3b8 Binary files /dev/null and b/SSL/src/CommonPictures/ТолстаяГраницаСнизу/Picture.png differ diff --git a/SSL/src/CommonPictures/ТолстаяГраницаСнизу/ТолстаяГраницаСнизу.mdo b/SSL/src/CommonPictures/ТолстаяГраницаСнизу/ТолстаяГраницаСнизу.mdo new file mode 100644 index 000000000..2acdb8b13 --- /dev/null +++ b/SSL/src/CommonPictures/ТолстаяГраницаСнизу/ТолстаяГраницаСнизу.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="dfd6d85c-a734-4458-83b0-87b5949f9c68"> + <name>ТолстаяГраницаСнизу</name> + <synonym> + <key>ru</key> + <value>Толстая граница снизу</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/УвеличитьШрифт/Picture.png b/SSL/src/CommonPictures/УвеличитьШрифт/Picture.png new file mode 100644 index 000000000..6806cdf12 Binary files /dev/null and b/SSL/src/CommonPictures/УвеличитьШрифт/Picture.png differ diff --git a/SSL/src/CommonPictures/УвеличитьШрифт/УвеличитьШрифт.mdo b/SSL/src/CommonPictures/УвеличитьШрифт/УвеличитьШрифт.mdo new file mode 100644 index 000000000..869509a91 --- /dev/null +++ b/SSL/src/CommonPictures/УвеличитьШрифт/УвеличитьШрифт.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4e3b0b9f-45b7-48a8-86c6-cc14a921aa78"> + <name>УвеличитьШрифт</name> + <synonym> + <key>ru</key> + <value>Увеличить шрифт</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/УменьшитьШрифт/Picture.png b/SSL/src/CommonPictures/УменьшитьШрифт/Picture.png new file mode 100644 index 000000000..69ff1af66 Binary files /dev/null and b/SSL/src/CommonPictures/УменьшитьШрифт/Picture.png differ diff --git a/SSL/src/CommonPictures/УменьшитьШрифт/УменьшитьШрифт.mdo b/SSL/src/CommonPictures/УменьшитьШрифт/УменьшитьШрифт.mdo new file mode 100644 index 000000000..361606439 --- /dev/null +++ b/SSL/src/CommonPictures/УменьшитьШрифт/УменьшитьШрифт.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="79b6ecf5-8a6b-44a4-9587-5f8764463228"> + <name>УменьшитьШрифт</name> + <synonym> + <key>ru</key> + <value>Уменьшить шрифт</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/Успешно/Picture.png b/SSL/src/CommonPictures/Успешно/Picture.png new file mode 100644 index 000000000..b60d373a7 Binary files /dev/null and b/SSL/src/CommonPictures/Успешно/Picture.png differ diff --git a/SSL/src/CommonPictures/Успешно/Успешно.mdo b/SSL/src/CommonPictures/Успешно/Успешно.mdo new file mode 100644 index 000000000..ae1086354 --- /dev/null +++ b/SSL/src/CommonPictures/Успешно/Успешно.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="cd49148c-e385-4b75-a758-a93196e73dba"> + <name>Успешно</name> + <synonym> + <key>ru</key> + <value>Успешно</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ЦветТекста/Picture.png b/SSL/src/CommonPictures/ЦветТекста/Picture.png new file mode 100644 index 000000000..4d8e82932 Binary files /dev/null and b/SSL/src/CommonPictures/ЦветТекста/Picture.png differ diff --git a/SSL/src/CommonPictures/ЦветТекста/ЦветТекста.mdo b/SSL/src/CommonPictures/ЦветТекста/ЦветТекста.mdo new file mode 100644 index 000000000..e2a702085 --- /dev/null +++ b/SSL/src/CommonPictures/ЦветТекста/ЦветТекста.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="8ccd9be8-ef26-49b9-8cee-03ae4e500386"> + <name>ЦветТекста</name> + <synonym> + <key>ru</key> + <value>Цвет текста</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonPictures/ЦветФона/Picture.png b/SSL/src/CommonPictures/ЦветФона/Picture.png new file mode 100644 index 000000000..e868b9348 Binary files /dev/null and b/SSL/src/CommonPictures/ЦветФона/Picture.png differ diff --git a/SSL/src/CommonPictures/ЦветФона/ЦветФона.mdo b/SSL/src/CommonPictures/ЦветФона/ЦветФона.mdo new file mode 100644 index 000000000..cbb98821f --- /dev/null +++ b/SSL/src/CommonPictures/ЦветФона/ЦветФона.mdo @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonPicture xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ddca925c-fdcd-40ce-a504-4fca1758de3f"> + <name>ЦветФона</name> + <synonym> + <key>ru</key> + <value>Цвет фона</value> + </synonym> +</mdclass:CommonPicture> diff --git a/SSL/src/CommonTemplates/ИнструкцияКакВыполнитьУстановкуОбновленияВручную/ru.html b/SSL/src/CommonTemplates/ИнструкцияКакВыполнитьУстановкуОбновленияВручную/ru.html index 633eb21a5..0745cfe88 100644 --- a/SSL/src/CommonTemplates/ИнструкцияКакВыполнитьУстановкуОбновленияВручную/ru.html +++ b/SSL/src/CommonTemplates/ИнструкцияКакВыполнитьУстановкуОбновленияВручную/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <h1><font color="#00008b">Установка обновления конфигурации <hr></hr></font></h1> <p>Для установки обновления конфигурации необходимо выполнить следующие действия:</p> diff --git a/SSL/src/CommonTemplates/КомпонентаTWAIN/Template.bin b/SSL/src/CommonTemplates/КомпонентаTWAIN/Template.bin index 7553122ed..afca8f8d4 100644 Binary files a/SSL/src/CommonTemplates/КомпонентаTWAIN/Template.bin and b/SSL/src/CommonTemplates/КомпонентаTWAIN/Template.bin differ diff --git a/SSL/src/CommonTemplates/КомпонентаСклоненияФИО/Template.bin b/SSL/src/CommonTemplates/КомпонентаСклоненияФИО/Template.bin new file mode 100644 index 000000000..df6a6102d Binary files /dev/null and b/SSL/src/CommonTemplates/КомпонентаСклоненияФИО/Template.bin differ diff --git a/SSL/src/CommonTemplates/КомпонентаСклоненияФИО/КомпонентаСклоненияФИО.mdo b/SSL/src/CommonTemplates/КомпонентаСклоненияФИО/КомпонентаСклоненияФИО.mdo new file mode 100644 index 000000000..0be755de5 --- /dev/null +++ b/SSL/src/CommonTemplates/КомпонентаСклоненияФИО/КомпонентаСклоненияФИО.mdo @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:CommonTemplate xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="b107a4a8-0db8-44f4-93f7-9f231e850398"> + <name>КомпонентаСклоненияФИО</name> + <synonym> + <key>ru</key> + <value>Компонента склонения ФИО</value> + </synonym> + <templateType>BinaryData</templateType> +</mdclass:CommonTemplate> diff --git a/SSL/src/CommonTemplates/ПолучениеДереваОбработчиковОбновления/Template.dcs b/SSL/src/CommonTemplates/ПолучениеДереваОбработчиковОбновления/Template.dcs index 9fbd99ccf..62597b9e3 100644 --- a/SSL/src/CommonTemplates/ПолучениеДереваОбработчиковОбновления/Template.dcs +++ b/SSL/src/CommonTemplates/ПолучениеДереваОбработчиковОбновления/Template.dcs @@ -40,19 +40,6 @@ </v8:StringQualifiers> </valueType> </field> - <field xsi:type="DataSetFieldField"> - <dataPath>Опциональный</dataPath> - <field>Опциональный</field> - <title xsi:type="v8:LocalStringType"> - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Опциональный</v8:content> - </v8:item> - - - xs:boolean - - Приоритет Приоритет @@ -138,6 +125,62 @@ + + НачальноеЗаполнение + НачальноеЗаполнение + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Начальное заполнение</v8:content> + </v8:item> + + + xs:boolean + + + + РежимВыполнения + РежимВыполнения + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Режим выполнения</v8:content> + </v8:item> + + + xs:string + + 50 + Variable + + + + Монопольно + + + Оперативно + + + Отложенно + + + + Комментарий + Комментарий + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Комментарий</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + ИсточникДанных1 Обработчики @@ -318,6 +361,21 @@ true Always + + ОтложенноеОбновление + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Отложенное обновление</v8:content> + </v8:item> + + + xs:boolean + + false + true + Always + Ложь @@ -346,9 +404,6 @@ <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>ОбщиеДанные</dcsset:field> </dcsset:item> - <dcsset:item xsi:type="dcsset:SelectedItemField"> - <dcsset:field>Опциональный</dcsset:field> - </dcsset:item> <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>ВыполнятьВГруппеОбязательных</dcsset:field> </dcsset:item> @@ -364,6 +419,15 @@ <dcsset:item xsi:type="dcsset:SelectedItemField"> <dcsset:field>МонопольныйРежим</dcsset:field> </dcsset:item> + <dcsset:item xsi:type="dcsset:SelectedItemField"> + <dcsset:field>НачальноеЗаполнение</dcsset:field> + </dcsset:item> + <dcsset:item xsi:type="dcsset:SelectedItemField"> + <dcsset:field>Комментарий</dcsset:field> + </dcsset:item> + <dcsset:item xsi:type="dcsset:SelectedItemField"> + <dcsset:field>РежимВыполнения</dcsset:field> + </dcsset:item> </dcsset:selection> <dcsset:filter> <dcsset:item xsi:type="dcsset:FilterItemGroup"> @@ -430,6 +494,30 @@ </dcsset:item> <dcsset:item xsi:type="dcsset:FilterItemGroup"> <dcsset:groupType>AndGroup</dcsset:groupType> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">ПараметрыДанных.ВерсияОт</dcsset:left> + <dcsset:comparisonType>Equal</dcsset:comparisonType> + <dcsset:right xsi:type="xs:string">0.0.0.0</dcsset:right> + </dcsset:item> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">НачальноеЗаполнение</dcsset:left> + <dcsset:comparisonType>Equal</dcsset:comparisonType> + <dcsset:right xsi:type="xs:boolean">true</dcsset:right> + </dcsset:item> + <dcsset:presentation xsi:type="v8:LocalStringType"> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>// Начальное заполнение</v8:content> + </v8:item> + </dcsset:presentation> + </dcsset:item> + <dcsset:item xsi:type="dcsset:FilterItemGroup"> + <dcsset:groupType>AndGroup</dcsset:groupType> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">ПараметрыДанных.ВерсияОт</dcsset:left> + <dcsset:comparisonType>NotEqual</dcsset:comparisonType> + <dcsset:right xsi:type="xs:string">0.0.0.0</dcsset:right> + </dcsset:item> <dcsset:item xsi:type="dcsset:FilterItemComparison"> <dcsset:left xsi:type="dcscor:Field">ВесВерсии</dcsset:left> <dcsset:comparisonType>Greater</dcsset:comparisonType> @@ -443,7 +531,7 @@ <dcsset:presentation xsi:type="v8:LocalStringType"> <v8:item> <v8:lang>ru</v8:lang> - <v8:content>// Версии в интервале</v8:content> + <v8:content>// Обновление (версии в интервале)</v8:content> </v8:item> </dcsset:presentation> </dcsset:item> @@ -454,46 +542,112 @@ </v8:item> </dcsset:presentation> </dcsset:item> - <dcsset:item xsi:type="dcsset:FilterItemGroup"> - <dcsset:groupType>NotGroup</dcsset:groupType> - <dcsset:item xsi:type="dcsset:FilterItemComparison"> - <dcsset:left xsi:type="dcscor:Field">ПараметрыДанных.ВерсияОт</dcsset:left> - <dcsset:comparisonType>Equal</dcsset:comparisonType> - <dcsset:right xsi:type="xs:string">0.0.0.0</dcsset:right> - </dcsset:item> - <dcsset:item xsi:type="dcsset:FilterItemComparison"> - <dcsset:left xsi:type="dcscor:Field">Опциональный</dcsset:left> - <dcsset:comparisonType>Equal</dcsset:comparisonType> - <dcsset:right xsi:type="xs:boolean">true</dcsset:right> - </dcsset:item> - <dcsset:presentation xsi:type="v8:LocalStringType"> - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>// Опциональные</v8:content> - </v8:item> - </dcsset:presentation> - </dcsset:item> <dcsset:item xsi:type="dcsset:FilterItemGroup"> <dcsset:groupType>OrGroup</dcsset:groupType> - <dcsset:item xsi:type="dcsset:FilterItemComparison"> - <dcsset:left xsi:type="dcscor:Field">ПараметрыДанных.ОперативноеОбновление</dcsset:left> - <dcsset:comparisonType>Equal</dcsset:comparisonType> - <dcsset:right xsi:type="xs:boolean">false</dcsset:right> - <dcsset:presentation xsi:type="v8:LocalStringType"> - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>// Не оперативное обновление - выбираем все</v8:content> - </v8:item> - </dcsset:presentation> + <dcsset:item xsi:type="dcsset:FilterItemGroup"> + <dcsset:groupType>AndGroup</dcsset:groupType> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">ПараметрыДанных.ОперативноеОбновление</dcsset:left> + <dcsset:comparisonType>Equal</dcsset:comparisonType> + <dcsset:right xsi:type="xs:boolean">false</dcsset:right> + <dcsset:presentation xsi:type="v8:LocalStringType"> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>// Не оперативное обновление - выбираем все</v8:content> + </v8:item> + </dcsset:presentation> + </dcsset:item> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">ПараметрыДанных.ОтложенноеОбновление</dcsset:left> + <dcsset:comparisonType>Equal</dcsset:comparisonType> + <dcsset:right xsi:type="xs:boolean">false</dcsset:right> + <dcsset:presentation xsi:type="v8:LocalStringType"> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>// Не оперативное обновление - выбираем все</v8:content> + </v8:item> + </dcsset:presentation> + </dcsset:item> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">РежимВыполнения</dcsset:left> + <dcsset:comparisonType>NotEqual</dcsset:comparisonType> + <dcsset:right xsi:type="xs:string">Отложенно</dcsset:right> + </dcsset:item> </dcsset:item> - <dcsset:item xsi:type="dcsset:FilterItemComparison"> - <dcsset:left xsi:type="dcscor:Field">МонопольныйРежим</dcsset:left> - <dcsset:comparisonType>NotEqual</dcsset:comparisonType> - <dcsset:right xsi:type="dcscor:Field">ПараметрыДанных.Ложь</dcsset:right> + <dcsset:item xsi:type="dcsset:FilterItemGroup"> + <dcsset:groupType>AndGroup</dcsset:groupType> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">ПараметрыДанных.ОперативноеОбновление</dcsset:left> + <dcsset:comparisonType>Equal</dcsset:comparisonType> + <dcsset:right xsi:type="xs:boolean">true</dcsset:right> + <dcsset:presentation xsi:type="v8:LocalStringType"> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>// Не оперативное обновление - выбираем все</v8:content> + </v8:item> + </dcsset:presentation> + </dcsset:item> + <dcsset:item xsi:type="dcsset:FilterItemGroup"> + <dcsset:groupType>OrGroup</dcsset:groupType> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">РежимВыполнения</dcsset:left> + <dcsset:comparisonType>Equal</dcsset:comparisonType> + <dcsset:right xsi:type="xs:string">Монопольно</dcsset:right> + <dcsset:presentation xsi:type="v8:LocalStringType"> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>// При проверке оперативного - только требующие монопольного режима</v8:content> + </v8:item> + </dcsset:presentation> + </dcsset:item> + <dcsset:item xsi:type="dcsset:FilterItemGroup"> + <dcsset:groupType>AndGroup</dcsset:groupType> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">МонопольныйРежим</dcsset:left> + <dcsset:comparisonType>NotEqual</dcsset:comparisonType> + <dcsset:right xsi:type="dcscor:Field">ПараметрыДанных.Ложь</dcsset:right> + <dcsset:presentation xsi:type="v8:LocalStringType"> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>// При проверке оперативного - только требующие монопольного режима</v8:content> + </v8:item> + </dcsset:presentation> + </dcsset:item> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">РежимВыполнения</dcsset:left> + <dcsset:comparisonType>NotFilled</dcsset:comparisonType> + <dcsset:presentation xsi:type="v8:LocalStringType"> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>// При проверке оперативного - только требующие монопольного режима</v8:content> + </v8:item> + </dcsset:presentation> + </dcsset:item> + <dcsset:presentation xsi:type="v8:LocalStringType"> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>// Для обратной совместимости</v8:content> + </v8:item> + </dcsset:presentation> + </dcsset:item> + </dcsset:item> + </dcsset:item> + <dcsset:item xsi:type="dcsset:FilterItemGroup"> + <dcsset:groupType>AndGroup</dcsset:groupType> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">ПараметрыДанных.ОтложенноеОбновление</dcsset:left> + <dcsset:comparisonType>Equal</dcsset:comparisonType> + <dcsset:right xsi:type="xs:boolean">true</dcsset:right> + </dcsset:item> + <dcsset:item xsi:type="dcsset:FilterItemComparison"> + <dcsset:left xsi:type="dcscor:Field">РежимВыполнения</dcsset:left> + <dcsset:comparisonType>Equal</dcsset:comparisonType> + <dcsset:right xsi:type="xs:string">Отложенно</dcsset:right> + </dcsset:item> <dcsset:presentation xsi:type="v8:LocalStringType"> <v8:item> <v8:lang>ru</v8:lang> - <v8:content>// При проверке оперативного - только требующие монопольного режима</v8:content> + <v8:content>// Выбор только отложенных обработчиков</v8:content> </v8:item> </dcsset:presentation> </dcsset:item> diff --git a/SSL/src/CommonTemplates/СтруктураПодчиненности/Template.mxlx b/SSL/src/CommonTemplates/СтруктураПодчиненности/Template.mxlx index 47d05d908..da69d584a 100644 --- a/SSL/src/CommonTemplates/СтруктураПодчиненности/Template.mxlx +++ b/SSL/src/CommonTemplates/СтруктураПодчиненности/Template.mxlx @@ -2109,7 +2109,7 @@ </area> </namedItem> <namedItem xsi:type="NamedItemCells"> - <name>ДокументПомеченНаУделениеКоннекторНиз</name> + <name>ДокументПомеченНаУдалениеКоннекторНиз</name> <area> <type>Rectangle</type> <beginRow>11</beginRow> diff --git a/SSL/src/Configuration/Configuration.mdo b/SSL/src/Configuration/Configuration.mdo index b1e7da20c..765dfcc81 100644 --- a/SSL/src/Configuration/Configuration.mdo +++ b/SSL/src/Configuration/Configuration.mdo @@ -1,23 +1,23 @@ <?xml version="1.0" encoding="UTF-8"?> -<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="5dc86726-1271-42a5-ae5d-3e8c63f02501"> +<mdclass:Configuration xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a815e3f3-74a6-420e-aaea-9ade6d7f0d00"> <name>БиблиотекаСтандартныхПодсистем</name> <synonym> <key>ru</key> <value>Библиотека стандартных подсистем, редакция 2.1</value> </synonym> - <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="16de39c8-44b3-4765-a596-7f0f71b8a5c0"/> - <containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="3644dd65-effc-422d-a2b2-3f67f7d11e2c"/> - <containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="20d9d1fa-6a21-4bbe-9a16-882c8566bef3"/> - <containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="43bc9ee1-19de-467d-bf7e-e0a5a30be15c"/> - <containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="9c76cd79-56de-415f-b2fa-4af55656ed27"/> - <containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="3e6e4ce6-bae0-4265-bdb2-4f1d38954d36"/> - <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="bdce9b96-ca72-42c0-8aab-06b878ae1ee7"/> + <containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="30d5b422-8f88-4bf1-b3dc-c9b8ec33fd35"/> + <containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="50816e26-a56c-4d89-aeba-6719e5cd7c6c"/> + <containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="e3c2a4a2-50f3-4338-9015-21a031438ec9"/> + <containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="389857cb-26ad-49e2-aaec-64315e89a5c4"/> + <containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="6c4145d6-0747-4e88-a8aa-f8dc9832016d"/> + <containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="ab46021f-1beb-4234-864f-b544239063d0"/> + <containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="8e878fa5-77b1-44af-bf61-1ef153d28435"/> <defaultRunMode>ManagedApplication</defaultRunMode> <usePurposes>PersonalComputer</usePurposes> <scriptVariant>Russian</scriptVariant> <defaultRoles>Role.ПолныеПрава</defaultRoles> <vendor>Фирма "1С"</vendor> - <version>2.1.3.51</version> + <version>2.1.4.34</version> <updateCatalogAddress>http://downloads.v8.1c.ru/tmplts/</updateCatalogAddress> <includeHelpInContents>true</includeHelpInContents> <usedMobileApplicationFunctionalities> @@ -63,12 +63,12 @@ </languages> <subsystems>Subsystem.НастройкаИАдминистрирование</subsystems> <subsystems>Subsystem.СтандартныеПодсистемы</subsystems> - <styleItems>StyleItem.ВидДняВоскресеньеЦвет</styleItems> - <styleItems>StyleItem.ВидДняНеУказанЦвет</styleItems> - <styleItems>StyleItem.ВидДняПраздникЦвет</styleItems> - <styleItems>StyleItem.ВидДняПредпраздничныйЦвет</styleItems> - <styleItems>StyleItem.ВидДняРабочийЦвет</styleItems> - <styleItems>StyleItem.ВидДняСубботаЦвет</styleItems> + <styleItems>StyleItem.ВидДняПроизводственногоКалендаряВоскресеньеЦвет</styleItems> + <styleItems>StyleItem.ВидДняПроизводственногоКалендаряНеУказанЦвет</styleItems> + <styleItems>StyleItem.ВидДняПроизводственногоКалендаряПраздникЦвет</styleItems> + <styleItems>StyleItem.ВидДняПроизводственногоКалендаряПредпраздничныйЦвет</styleItems> + <styleItems>StyleItem.ВидДняПроизводственногоКалендаряРабочийЦвет</styleItems> + <styleItems>StyleItem.ВидДняПроизводственногоКалендаряСубботаЦвет</styleItems> <styleItems>StyleItem.ВидимыйВариантОтчетаЦвет</styleItems> <styleItems>StyleItem.ВыполненнаяЗадача</styleItems> <styleItems>StyleItem.ГруппаВариантовОтчетовЦвет</styleItems> @@ -117,7 +117,19 @@ <commonPictures>CommonPicture.Вопрос32</commonPictures> <commonPictures>CommonPicture.ВосклицательныйЗнакСерый</commonPictures> <commonPictures>CommonPicture.Встреча</commonPictures> + <commonPictures>CommonPicture.ВходящееСообщение</commonPictures> <commonPictures>CommonPicture.ВыполнитьРегламентноеЗаданиеВручную</commonPictures> + <commonPictures>CommonPicture.ВыравниваниеПоЛевомуКраю</commonPictures> + <commonPictures>CommonPicture.ВыравниваниеПоПравомуКраю</commonPictures> + <commonPictures>CommonPicture.ВыравниваниеПоЦентру</commonPictures> + <commonPictures>CommonPicture.ВыравниваниеПоШирине</commonPictures> + <commonPictures>CommonPicture.ГраницаВезде</commonPictures> + <commonPictures>CommonPicture.ГраницаВнутри</commonPictures> + <commonPictures>CommonPicture.ГраницаВокруг</commonPictures> + <commonPictures>CommonPicture.ГраницаСверху</commonPictures> + <commonPictures>CommonPicture.ГраницаСлева</commonPictures> + <commonPictures>CommonPicture.ГраницаСнизу</commonPictures> + <commonPictures>CommonPicture.ГраницаСправа</commonPictures> <commonPictures>CommonPicture.ДлительнаяОперация48</commonPictures> <commonPictures>CommonPicture.ДобавитьДопСвойствоВНабор</commonPictures> <commonPictures>CommonPicture.ДобавитьПростойВопрос</commonPictures> @@ -157,6 +169,7 @@ <commonPictures>CommonPicture.ЗнакСтопЧБ</commonPictures> <commonPictures>CommonPicture.ЗначокЗаставкиВнешнейОперации</commonPictures> <commonPictures>CommonPicture.ИерархическийСписок</commonPictures> + <commonPictures>CommonPicture.ИзменитьШрифт</commonPictures> <commonPictures>CommonPicture.Информация</commonPictures> <commonPictures>CommonPicture.Информация32</commonPictures> <commonPictures>CommonPicture.ИнформацияПоНедоступнымПолям</commonPictures> @@ -164,6 +177,7 @@ <commonPictures>CommonPicture.ИспользоватьПользовательскийМакет</commonPictures> <commonPictures>CommonPicture.ИспользоватьПоставляемыйМакет</commonPictures> <commonPictures>CommonPicture.ИсторияВерсий</commonPictures> + <commonPictures>CommonPicture.ИсходящееСообщение</commonPictures> <commonPictures>CommonPicture.КоллекцияВариантыВажности</commonPictures> <commonPictures>CommonPicture.КоллекцияВидыАктивныхПользователей</commonPictures> <commonPictures>CommonPicture.КоллекцияВидыСобытийЖурналаРегистрации</commonPictures> @@ -189,10 +203,14 @@ <commonPictures>CommonPicture.КонтактнаяИнформация</commonPictures> <commonPictures>CommonPicture.КонтактнаяИнформацияНеактуально</commonPictures> <commonPictures>CommonPicture.КонтактнаяИнформацияПерейтиПоСсылке</commonPictures> + <commonPictures>CommonPicture.КурсивноеНачертание</commonPictures> + <commonPictures>CommonPicture.НаписатьSMS</commonPictures> <commonPictures>CommonPicture.Напоминание</commonPictures> <commonPictures>CommonPicture.НастройкаВыполненияРегламентныхЗаданий</commonPictures> <commonPictures>CommonPicture.НастройкаИАдминистрирование48</commonPictures> + <commonPictures>CommonPicture.НетГраницы</commonPictures> <commonPictures>CommonPicture.ОбновитьФайлИзФайлаНаДиске</commonPictures> + <commonPictures>CommonPicture.ОбъединитьЯчейки</commonPictures> <commonPictures>CommonPicture.ОпубликоватьФайл</commonPictures> <commonPictures>CommonPicture.Органайзер</commonPictures> <commonPictures>CommonPicture.ОсвободитьФайл</commonPictures> @@ -219,10 +237,12 @@ <commonPictures>CommonPicture.Подменю</commonPictures> <commonPictures>CommonPicture.ПодписанЭЦП</commonPictures> <commonPictures>CommonPicture.Подсистема</commonPictures> + <commonPictures>CommonPicture.Подчеркивание</commonPictures> <commonPictures>CommonPicture.ПоказатьОтличия</commonPictures> <commonPictures>CommonPicture.ПоказатьТолькоВыбранныеРоли</commonPictures> <commonPictures>CommonPicture.ПолнотекстовыйПоискДалее</commonPictures> <commonPictures>CommonPicture.ПолнотекстовыйПоискНазад</commonPictures> + <commonPictures>CommonPicture.ПолужирноеНачертание</commonPictures> <commonPictures>CommonPicture.ПревьюТабличногоВопросаОтветыВКолонках</commonPictures> <commonPictures>CommonPicture.ПревьюТабличногоВопросаОтветыВСтроках</commonPictures> <commonPictures>CommonPicture.ПревьюТабличногоВопросаОтветыСтрокиИКолонки</commonPictures> @@ -284,8 +304,14 @@ <commonPictures>CommonPicture.СтрелкаВнизСправка</commonPictures> <commonPictures>CommonPicture.ТелефонныйЗвонок</commonPictures> <commonPictures>CommonPicture.ТипыМакетов</commonPictures> + <commonPictures>CommonPicture.ТолстаяГраницаВокруг</commonPictures> + <commonPictures>CommonPicture.ТолстаяГраницаСверху</commonPictures> + <commonPictures>CommonPicture.ТолстаяГраницаСнизу</commonPictures> <commonPictures>CommonPicture.УведомлениеСервиса</commonPictures> + <commonPictures>CommonPicture.УвеличитьШрифт</commonPictures> <commonPictures>CommonPicture.УдалитьПользовательскийМакет</commonPictures> + <commonPictures>CommonPicture.УменьшитьШрифт</commonPictures> + <commonPictures>CommonPicture.Успешно</commonPictures> <commonPictures>CommonPicture.УстановитьОтветственногоЗаВзаимодействие</commonPictures> <commonPictures>CommonPicture.УстановитьПредметВзаимодействия</commonPictures> <commonPictures>CommonPicture.УстановитьПризнакРассмотреноДляВзамодействия</commonPictures> @@ -301,6 +327,8 @@ <commonPictures>CommonPicture.ФорматWord2007</commonPictures> <commonPictures>CommonPicture.ФорматПустой</commonPictures> <commonPictures>CommonPicture.ФорумСервиса</commonPictures> + <commonPictures>CommonPicture.ЦветТекста</commonPictures> + <commonPictures>CommonPicture.ЦветФона</commonPictures> <commonPictures>CommonPicture.ЭлектронноеПисьмо</commonPictures> <commonPictures>CommonPicture.ЭлектронноеПисьмоВходящее</commonPictures> <commonPictures>CommonPicture.ЭлектронноеПисьмоИсходящее</commonPictures> @@ -308,6 +336,7 @@ <sessionParameters>SessionParameter.ВидыДоступаБезОграничения</sessionParameters> <sessionParameters>SessionParameter.ВидыДоступаЕдинственныеДляТипаЗначенияДоступа</sessionParameters> <sessionParameters>SessionParameter.ВидыДоступаЧерезПраваПоЗначениямДоступа</sessionParameters> + <sessionParameters>SessionParameter.ВыполняетсяОбновлениеИБ</sessionParameters> <sessionParameters>SessionParameter.ДатаОбновленияПовторноИспользуемыхЗначенийМРО</sessionParameters> <sessionParameters>SessionParameter.ЗагрузкаПараметровРаботыПрограммы</sessionParameters> <sessionParameters>SessionParameter.ИспользуемыеПланыОбмена</sessionParameters> @@ -326,8 +355,10 @@ <sessionParameters>SessionParameter.ОграничиватьДоступПоВидуУсловие</sessionParameters> <sessionParameters>SessionParameter.ОграничиватьДоступПоВидуУчетныеЗаписиЭлектроннойПочты</sessionParameters> <sessionParameters>SessionParameter.ПараметрыКлиентаНаСервере</sessionParameters> + <sessionParameters>SessionParameter.ПаролиСинхронизацииДанных</sessionParameters> <sessionParameters>SessionParameter.ПравилаВыборочнойРегистрацииОбъектов</sessionParameters> <sessionParameters>SessionParameter.ПравилаРегистрацииОбъектов</sessionParameters> + <sessionParameters>SessionParameter.ПриоритетныеДанныеОбмена</sessionParameters> <sessionParameters>SessionParameter.ТекущийВнешнийПользователь</sessionParameters> <sessionParameters>SessionParameter.ТекущийПользователь</sessionParameters> <roles>Role.АдминистраторСистемы</roles> @@ -348,6 +379,7 @@ <roles>Role.ДобавлениеИзменениеПользователей</roles> <roles>Role.ДобавлениеИзменениеРассылокОтчетов</roles> <roles>Role.ДобавлениеИзменениеРолейИсполнителей</roles> + <roles>Role.ДобавлениеИзменениеСтранМира</roles> <roles>Role.ДобавлениеИзменениеФизическихЛиц</roles> <roles>Role.ДобавлениеИзменениеШаблоновАнкет</roles> <roles>Role.ЗапускAutomation</roles> @@ -399,6 +431,7 @@ <commonTemplates>CommonTemplate.ИнструкцияКакВыполнитьУстановкуОбновленияВручную</commonTemplates> <commonTemplates>CommonTemplate.ИнформационныеСсылки</commonTemplates> <commonTemplates>CommonTemplate.КомпонентаTWAIN</commonTemplates> + <commonTemplates>CommonTemplate.КомпонентаСклоненияФИО</commonTemplates> <commonTemplates>CommonTemplate.ПолучениеДереваОбработчиковОбновления</commonTemplates> <commonTemplates>CommonTemplate.СоответствиеТэговОбщимФормам</commonTemplates> <commonTemplates>CommonTemplate.СтруктураПодчиненности</commonTemplates> @@ -495,11 +528,12 @@ <commonModules>CommonModule.КалендарныеГрафикиСлужебныйВМоделиСервиса</commonModules> <commonModules>CommonModule.КомандыРаботыСБизнесПроцессамиКлиент</commonModules> <commonModules>CommonModule.КомандыРаботыСФайламиКлиент</commonModules> - <commonModules>CommonModule.КонтактнаяИнформацияВызовСервера</commonModules> - <commonModules>CommonModule.КонтактнаяИнформацияКлиент</commonModules> + <commonModules>CommonModule.КонтактнаяИнформацияXML</commonModules> <commonModules>CommonModule.КонтактнаяИнформацияКлиентСервер</commonModules> <commonModules>CommonModule.КонтактнаяИнформацияКлиентСерверПовтИсп</commonModules> <commonModules>CommonModule.КонтактнаяИнформацияСлужебный</commonModules> + <commonModules>CommonModule.КонтактнаяИнформацияСлужебныйВызовСервера</commonModules> + <commonModules>CommonModule.КонтактнаяИнформацияСлужебныйПовтИсп</commonModules> <commonModules>CommonModule.КонтрольДинамическогоОбновленияКонфигурации</commonModules> <commonModules>CommonModule.КонтрольДинамическогоОбновленияКонфигурацииГлобальный</commonModules> <commonModules>CommonModule.КонтрольДинамическогоОбновленияКонфигурацииКлиент</commonModules> @@ -538,6 +572,7 @@ <commonModules>CommonModule.ОбновлениеИнформационнойБазы</commonModules> <commonModules>CommonModule.ОбновлениеИнформационнойБазыБСП</commonModules> <commonModules>CommonModule.ОбновлениеИнформационнойБазыВызовСервера</commonModules> + <commonModules>CommonModule.ОбновлениеИнформационнойБазыГлобальный</commonModules> <commonModules>CommonModule.ОбновлениеИнформационнойБазыКлиент</commonModules> <commonModules>CommonModule.ОбновлениеИнформационнойБазыКлиентПереопределяемый</commonModules> <commonModules>CommonModule.ОбновлениеИнформационнойБазыПереопределяемый</commonModules> @@ -608,6 +643,7 @@ <commonModules>CommonModule.ПрисоединенныеФайлыСлужебный</commonModules> <commonModules>CommonModule.ПрисоединенныеФайлыСлужебныйВызовСервера</commonModules> <commonModules>CommonModule.ПрисоединенныеФайлыСлужебныйКлиент</commonModules> + <commonModules>CommonModule.ПроверкаЛегальностиПолученияОбновленияГлобальный</commonModules> <commonModules>CommonModule.ПроверкаЛегальностиПолученияОбновленияКлиент</commonModules> <commonModules>CommonModule.РаботаВМоделиСервиса</commonModules> <commonModules>CommonModule.РаботаВМоделиСервисаПереопределяемый</commonModules> @@ -652,6 +688,8 @@ <commonModules>CommonModule.РезервноеКопированиеИБКлиентГлобальный</commonModules> <commonModules>CommonModule.РезервноеКопированиеИБСервер</commonModules> <commonModules>CommonModule.РезервноеКопированиеОбластейДанных</commonModules> + <commonModules>CommonModule.РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс</commonModules> + <commonModules>CommonModule.РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис</commonModules> <commonModules>CommonModule.РезервноеКопированиеОбластейДанныхПовтИсп</commonModules> <commonModules>CommonModule.СоединенияИБ</commonModules> <commonModules>CommonModule.СоединенияИБВызовСервера</commonModules> @@ -668,10 +706,17 @@ <commonModules>CommonModule.СообщенияВМоделиСервисаПереопределяемый</commonModules> <commonModules>CommonModule.СообщенияВМоделиСервисаПовтИсп</commonModules> <commonModules>CommonModule.СообщенияВМоделиСервисаРазделениеДанных</commonModules> + <commonModules>CommonModule.СообщенияИнформационногоЦентраИнтерфейс</commonModules> <commonModules>CommonModule.СообщенияИнформационногоЦентраОбработчикСообщения</commonModules> + <commonModules>CommonModule.СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1</commonModules> + <commonModules>CommonModule.СообщенияИнформационногоЦентраРеализация</commonModules> + <commonModules>CommonModule.СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс</commonModules> + <commonModules>CommonModule.СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1</commonModules> <commonModules>CommonModule.СообщенияКонтрольРезервногоКопированияИнтерфейс</commonModules> + <commonModules>CommonModule.СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1</commonModules> <commonModules>CommonModule.СообщенияКонтрольУдаленногоАдминистрированияИнтерфейс</commonModules> <commonModules>CommonModule.СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_3</commonModules> + <commonModules>CommonModule.СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4</commonModules> <commonModules>CommonModule.СообщенияОбменаДаннымиКонтрольИнтерфейс</commonModules> <commonModules>CommonModule.СообщенияОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1</commonModules> <commonModules>CommonModule.СообщенияОбменаДаннымиОбработчикСообщения</commonModules> @@ -683,10 +728,15 @@ <commonModules>CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_2</commonModules> <commonModules>CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_3</commonModules> <commonModules>CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4</commonModules> + <commonModules>CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5</commonModules> <commonModules>CommonModule.СообщенияУдаленногоАдминистрированияРеализация</commonModules> <commonModules>CommonModule.СообщенияУправлениеРезервнымКопированиемИнтерфейс</commonModules> <commonModules>CommonModule.СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_2_1</commonModules> + <commonModules>CommonModule.СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1</commonModules> <commonModules>CommonModule.СообщенияУправлениеРезервнымКопированиемРеализация</commonModules> + <commonModules>CommonModule.СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс</commonModules> + <commonModules>CommonModule.СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1</commonModules> + <commonModules>CommonModule.СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация</commonModules> <commonModules>CommonModule.СообщенияУправленияПриложениямиИнтерфейс</commonModules> <commonModules>CommonModule.СтандартныеПодсистемыВызовСервера</commonModules> <commonModules>CommonModule.СтандартныеПодсистемыКлиент</commonModules> @@ -695,7 +745,6 @@ <commonModules>CommonModule.СтандартныеПодсистемыПовтИсп</commonModules> <commonModules>CommonModule.СтандартныеПодсистемыСервер</commonModules> <commonModules>CommonModule.СтроковыеФункцииКлиентСервер</commonModules> - <commonModules>CommonModule.СтруктураПодчиненности</commonModules> <commonModules>CommonModule.СтруктураПодчиненностиПереопределяемый</commonModules> <commonModules>CommonModule.ТрансляцияXDTO</commonModules> <commonModules>CommonModule.ТрансляцияXDTOПереопределяемый</commonModules> @@ -713,12 +762,12 @@ <commonModules>CommonModule.УправлениеКонтактнойИнформациейКлассификаторы</commonModules> <commonModules>CommonModule.УправлениеКонтактнойИнформациейКлиент</commonModules> <commonModules>CommonModule.УправлениеКонтактнойИнформациейКлиентСервер</commonModules> - <commonModules>CommonModule.УправлениеКонтактнойИнформациейСобытия</commonModules> <commonModules>CommonModule.УправлениеПечатью</commonModules> <commonModules>CommonModule.УправлениеПечатьюMSWordКлиент</commonModules> <commonModules>CommonModule.УправлениеПечатьюOOWriterКлиент</commonModules> <commonModules>CommonModule.УправлениеПечатьюВызовСервера</commonModules> <commonModules>CommonModule.УправлениеПечатьюКлиент</commonModules> + <commonModules>CommonModule.УправлениеПечатьюКлиентПовтИсп</commonModules> <commonModules>CommonModule.УправлениеПечатьюПереопределяемый</commonModules> <commonModules>CommonModule.УправлениеСвойствами</commonModules> <commonModules>CommonModule.УправлениеСвойствамиКлиент</commonModules> @@ -752,17 +801,22 @@ <xDTOPackages>XDTOPackage.AgentScripts</xDTOPackages> <xDTOPackages>XDTOPackage.ApdexExport</xDTOPackages> <xDTOPackages>XDTOPackage.ApplicationExtensionsCompatibility_1_0_0_1</xDTOPackages> + <xDTOPackages>XDTOPackage.ApplicationExtensionsControl_1_0_1_1</xDTOPackages> + <xDTOPackages>XDTOPackage.ApplicationExtensionsManagement_1_0_1_1</xDTOPackages> <xDTOPackages>XDTOPackage.ApplicationExtensionsManifest_1_0_0_1</xDTOPackages> <xDTOPackages>XDTOPackage.ApplicationExtensionsPermissions_1_0_0_1</xDTOPackages> <xDTOPackages>XDTOPackage.CurrencyRates</xDTOPackages> <xDTOPackages>XDTOPackage.DataDump_1_0_1_1</xDTOPackages> + <xDTOPackages>XDTOPackage.MessageInfoCenter_1_0_1_1</xDTOPackages> <xDTOPackages>XDTOPackage.SuppliedData</xDTOPackages> <xDTOPackages>XDTOPackage.АдминистрированиеОбменаДаннымиКонтроль</xDTOPackages> <xDTOPackages>XDTOPackage.АдминистрированиеОбменаДаннымиУправление</xDTOPackages> <xDTOPackages>XDTOPackage.КонтактнаяИнформация</xDTOPackages> <xDTOPackages>XDTOPackage.КонтрольРезервногоКопированияОбластейДанных_1_0_2_1</xDTOPackages> + <xDTOPackages>XDTOPackage.КонтрольРезервногоКопированияОбластейДанных_1_0_3_1</xDTOPackages> <xDTOPackages>XDTOPackage.КонтрольУдаленногоАдминистрирования_1_0_2_3</xDTOPackages> <xDTOPackages>XDTOPackage.КонтрольУдаленногоАдминистрирования_1_0_2_4</xDTOPackages> + <xDTOPackages>XDTOPackage.КонтрольУдаленногоАдминистрирования_1_0_2_5</xDTOPackages> <xDTOPackages>XDTOPackage.ОбменДаннымиКонтроль</xDTOPackages> <xDTOPackages>XDTOPackage.ОбменДаннымиУправление</xDTOPackages> <xDTOPackages>XDTOPackage.Сообщения</xDTOPackages> @@ -771,8 +825,10 @@ <xDTOPackages>XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_2</xDTOPackages> <xDTOPackages>XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_3</xDTOPackages> <xDTOPackages>XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_4</xDTOPackages> + <xDTOPackages>XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5</xDTOPackages> <xDTOPackages>XDTOPackage.УправлениеПриложениями</xDTOPackages> <xDTOPackages>XDTOPackage.УправлениеРезервнымКопированиемОбластейДанных_1_0_2_1</xDTOPackages> + <xDTOPackages>XDTOPackage.УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1</xDTOPackages> <webServices>WebService.Exchange</webServices> <webServices>WebService.Exchange_2_0_1_6</webServices> <webServices>WebService.InterfaceVersion</webServices> @@ -800,6 +856,7 @@ <eventSubscriptions>EventSubscription.ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия</eventSubscriptions> <eventSubscriptions>EventSubscription.ДополнительныеОтчетыИОбработкиКонтрольПравомерностиИзмененияРеквизитов</eventSubscriptions> <eventSubscriptions>EventSubscription.ДополнительныеОтчетыИОбработкиКонтрольУдаления</eventSubscriptions> + <eventSubscriptions>EventSubscription.ЗаписатьВерсиюОбъектаПриОбменеДанными</eventSubscriptions> <eventSubscriptions>EventSubscription.ЗаписатьВСписокБизнесПроцессов</eventSubscriptions> <eventSubscriptions>EventSubscription.ЗаписатьЗависимыеНаборыЗначенийДоступа</eventSubscriptions> <eventSubscriptions>EventSubscription.ЗаписатьНаборыЗначенийДоступа</eventSubscriptions> @@ -841,7 +898,10 @@ <scheduledJobs>ScheduledJob.ОбновлениеАгрегатов</scheduledJobs> <scheduledJobs>ScheduledJob.ОбновлениеИндексаППД</scheduledJobs> <scheduledJobs>ScheduledJob.ОбновлениеОбластейДанных</scheduledJobs> + <scheduledJobs>ScheduledJob.ОбновлениеСтатусовДоставкиSMS</scheduledJobs> <scheduledJobs>ScheduledJob.ОбслуживаниеОбластейДанных</scheduledJobs> + <scheduledJobs>ScheduledJob.ОтложенноеОбновлениеИБ</scheduledJobs> + <scheduledJobs>ScheduledJob.ОтправкаSMS</scheduledJobs> <scheduledJobs>ScheduledJob.ОтправкаИПолучениеСообщенийСистемы</scheduledJobs> <scheduledJobs>ScheduledJob.ПерестроениеАгрегатов</scheduledJobs> <scheduledJobs>ScheduledJob.ПересчетТекущихЗначенийОтносительныхДатЗапретаИзменения</scheduledJobs> @@ -957,7 +1017,9 @@ <commonCommands>CommonCommand.СозданиеНачальногоОбразаСФайлами</commonCommands> <commonCommands>CommonCommand.СоздатьЗаметкуПоПредмету</commonCommands> <commonCommands>CommonCommand.СоздатьРезервнуюКопию</commonCommands> + <commonCommands>CommonCommand.СоставОтправляемыхДанных</commonCommands> <commonCommands>CommonCommand.СтруктураПодчиненности</commonCommands> + <commonCommands>CommonCommand.УдалитьНастройкуСинхронизации</commonCommands> <commonCommands>CommonCommand.УстановитьНапоминаниеПоПредмету</commonCommands> <commonCommands>CommonCommand.УстановитьРасширениеРаботыСФайлами</commonCommands> <commonCommands>CommonCommand.ФайлыВТоме</commonCommands> @@ -968,28 +1030,30 @@ <commandGroups>CommandGroup.ПараметрыОбменаДанными</commandGroups> <commandGroups>CommandGroup.Печать</commandGroups> <constants>Constant.АдресАгентаСервиса</constants> - <constants>Constant.АдресВебСервисаОбменаДанными</constants> + <constants>Constant.АдресПубликацииИнформационнойБазыВИнтернете</constants> + <constants>Constant.АдресУправленияКонференцией</constants> <constants>Constant.АлгоритмПодписи</constants> <constants>Constant.АлгоритмХеширования</constants> <constants>Constant.АлгоритмШифрования</constants> <constants>Constant.БлокировкаОтправкиБыстрыхСообщений</constants> <constants>Constant.ВерсияКлассификатораБанковРФ</constants> <constants>Constant.ВнутреннийАдресМенеджераСервиса</constants> - <constants>Constant.ВыполнитьЗагрузкуПараметровРаботыПрограммы</constants> <constants>Constant.ВыполнитьРезервноеКопированиеОбластиДанных</constants> <constants>Constant.ВыполнятьЗамерыПроизводительности</constants> <constants>Constant.ВыполнятьПроверкуЭЦПНаСервере</constants> <constants>Constant.ДатаОбновленияПовторноИспользуемыхЗначенийМРО</constants> + <constants>Constant.ДатаПоследнегоСтартаКлиентскогоСеанса</constants> <constants>Constant.ДатаПоследнейВыгрузкиЗамеровПроизводительностиUTC</constants> <constants>Constant.ДатаУведомленияОНовыхЗадачах</constants> <constants>Constant.ДетализироватьОбновлениеИБВЖурналеРегистрации</constants> <constants>Constant.ЗаголовокСистемы</constants> + <constants>Constant.ЗагрузитьСообщениеОбменаДанными</constants> <constants>Constant.ЗапрещатьЗагрузкуФайловПоРасширению</constants> - <constants>Constant.ЗапуститьОбновлениеИнформационнойБазы</constants> <constants>Constant.ЗарегистрированыИзмененияДанных</constants> <constants>Constant.ИзвлекатьТекстыФайловНаСервере</constants> <constants>Constant.ИзменятьЗаданияЗаднимЧислом</constants> <constants>Constant.ИмяПользователяАгентаСервиса</constants> + <constants>Constant.ИмяПользователяКонференцииИнформационногоЦентра</constants> <constants>Constant.ИмяСлужебногоПользователяМенеджераСервиса</constants> <constants>Constant.ИспользованиеКаталогаДополнительныхОтчетовИОбработокВМоделиСервиса</constants> <constants>Constant.ИспользоватьАвтономнуюРаботуВМоделиСервиса</constants> @@ -1049,7 +1113,9 @@ <constants>Constant.ПараметрыСлужебныхСобытий</constants> <constants>Constant.ПарольДляОтправкиSMS</constants> <constants>Constant.ПарольПользователяАгентаСервиса</constants> + <constants>Constant.ПарольПользователяКонференцииИнформационногоЦентра</constants> <constants>Constant.ПарольСлужебногоПользователяМенеджераСервиса</constants> + <constants>Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском</constants> <constants>Constant.ПоддержкаРезервногоКопирования</constants> <constants>Constant.ПредставлениеОбластиДанных</constants> <constants>Constant.ПрефиксОбластиДанных</constants> @@ -1061,6 +1127,7 @@ <constants>Constant.РазмерБлокаПередачиФайла</constants> <constants>Constant.РазрешитьВыполнениеДополнительныхОтчетовИОбработокРегламентнымиЗаданиямиВМоделиСервиса</constants> <constants>Constant.РежимИспользованияИнформационнойБазы</constants> + <constants>Constant.СведенияОбОбновленииИБ</constants> <constants>Constant.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы</constants> <constants>Constant.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммы</constants> <constants>Constant.СообщениеБлокировкиПриОбновленииКонфигурации</constants> @@ -1072,6 +1139,7 @@ <constants>Constant.СписокРасширенийФайловOpenDocumentОбластиДанных</constants> <constants>Constant.СтатусОбновленияКонфигурации</constants> <constants>Constant.ТипПровайдераЭЦП</constants> + <constants>Constant.УдалитьПоказыватьКомандуДополнительныеПечатныеФормы</constants> <constants>Constant.ХранитьФайлыВТомахНаДиске</constants> <constants>Constant.ЧасовойПоясОбластиДанных</constants> <constants>Constant.ЭтоАвтономноеРабочееМесто</constants> @@ -1079,9 +1147,7 @@ <commonForms>CommonForm.АвтономнаяРаботаВМоделиСервиса</commonForms> <commonForms>CommonForm.АдреснаяКнига</commonForms> <commonForms>CommonForm.АутентификацияВСервисе</commonForms> - <commonForms>CommonForm.ВводАдреса</commonForms> <commonForms>CommonForm.ВводПароляСОписаниями</commonForms> - <commonForms>CommonForm.ВводТелефона</commonForms> <commonForms>CommonForm.ВключениеЖурналаРегистрации</commonForms> <commonForms>CommonForm.Вопрос</commonForms> <commonForms>CommonForm.ВопросОбУстановкеРасширенияРаботыСФайлами</commonForms> @@ -1122,21 +1188,16 @@ <commonForms>CommonForm.НастройкаОтправкиSMS</commonForms> <commonForms>CommonForm.НастройкиАгентаСервиса</commonForms> <commonForms>CommonForm.НастройкиРегистрацииСобытийДоступаКПерсональнымДанным</commonForms> - <commonForms>CommonForm.НастройкиРезервногоКопированияПриложений</commonForms> <commonForms>CommonForm.НастройкиЭЦП</commonForms> - <commonForms>CommonForm.НерекомендуемаяВерсияПлатформы</commonForms> <commonForms>CommonForm.ОбменыДанными</commonForms> <commonForms>CommonForm.ОписаниеИзмененийСистемы</commonForms> <commonForms>CommonForm.ОтключениеАвтономногоРабочегоМеста</commonForms> - <commonForms>CommonForm.ОтображениеНовостей</commonForms> <commonForms>CommonForm.ОтправкаСообщения</commonForms> - <commonForms>CommonForm.ОтправкаСообщенияВТехподдержку</commonForms> <commonForms>CommonForm.ОтправкаТабличныхДокументовПоПочте</commonForms> <commonForms>CommonForm.ОтчетОСохраненииФайлов</commonForms> <commonForms>CommonForm.ПанельОтчетов</commonForms> <commonForms>CommonForm.ПараметрыАдминистрированияСервернойИБ</commonForms> <commonForms>CommonForm.ПараметрыПроксиСервера</commonForms> - <commonForms>CommonForm.ПарольДляСинхронизацииДанных</commonForms> <commonForms>CommonForm.ПерсональныеНастройкиЭЦП</commonForms> <commonForms>CommonForm.ПечатьДокументов</commonForms> <commonForms>CommonForm.ПодготовкаНовогоПисьма</commonForms> @@ -1152,11 +1213,11 @@ <commonForms>CommonForm.ПрисоединенныеФайлы</commonForms> <commonForms>CommonForm.ПрисоединенныйФайл</commonForms> <commonForms>CommonForm.РедактированиеДополнительныхСведений</commonForms> + <commonForms>CommonForm.РедактированиеТабличногоДокумента</commonForms> <commonForms>CommonForm.СертификатЭЦП</commonForms> <commonForms>CommonForm.СинхронизацияДанныхВМоделиСервиса</commonForms> <commonForms>CommonForm.СозданиеНачальногоОбразаСФайлами</commonForms> <commonForms>CommonForm.СозданиеРезервнойКопии</commonForms> - <commonForms>CommonForm.СообщениеОНеудачномОбновлении</commonForms> <commonForms>CommonForm.СохранениеПечатнойФормы</commonForms> <commonForms>CommonForm.СтруктураПодчиненности</commonForms> <commonForms>CommonForm.УстановкаВедущейКонечнойТочки</commonForms> @@ -1208,6 +1269,7 @@ <catalogs>Catalog.ПрофилиГруппДоступа</catalogs> <catalogs>Catalog.РассылкиОтчетов</catalogs> <catalogs>Catalog.РолиИсполнителей</catalogs> + <catalogs>Catalog.СообщениеSMSПрисоединенныеФайлы</catalogs> <catalogs>Catalog.СообщенияОбластейДанных</catalogs> <catalogs>Catalog.СообщенияСистемы</catalogs> <catalogs>Catalog.СтраныМира</catalogs> @@ -1215,7 +1277,6 @@ <catalogs>Catalog.ТелефонныйЗвонокПрисоединенныеФайлы</catalogs> <catalogs>Catalog.ТипыИнформацииИнформационногоЦентра</catalogs> <catalogs>Catalog.ТомаХраненияФайлов</catalogs> - <catalogs>Catalog.УдалитьКлассификаторВалют</catalogs> <catalogs>Catalog.УчетныеЗаписиЭлектроннойПочты</catalogs> <catalogs>Catalog.Файлы</catalogs> <catalogs>Catalog.ФизическиеЛица</catalogs> @@ -1227,6 +1288,7 @@ <documents>Document.Встреча</documents> <documents>Document.ЗапланированноеВзаимодействие</documents> <documents>Document.НазначениеОпросов</documents> + <documents>Document.СообщениеSMS</documents> <documents>Document.ТелефонныйЗвонок</documents> <documents>Document.ЭлектронноеПисьмоВходящее</documents> <documents>Document.ЭлектронноеПисьмоИсходящее</documents> @@ -1260,7 +1322,9 @@ <enums>Enum.РежимыИспользованияИнформационнойБазы</enums> <enums>Enum.РезультатыВыполненияОбмена</enums> <enums>Enum.СостоянияБизнесПроцессов</enums> + <enums>Enum.СостоянияДокументаСообщениеSMS</enums> <enums>Enum.СостоянияЗаданий</enums> + <enums>Enum.СостоянияСообщенияSMS</enums> <enums>Enum.СпособыPOP3Аутентификации</enums> <enums>Enum.СпособыSMTPАутентификации</enums> <enums>Enum.СпособыВызоваДополнительныхОбработок</enums> @@ -1286,7 +1350,6 @@ <enums>Enum.ТипыФайловДляВстроенногоРедактора</enums> <enums>Enum.ТипыХраненияФайлов</enums> <enums>Enum.УдалитьВидыКалендарей</enums> - <enums>Enum.УдалитьВидыПоставляемыхДанных</enums> <enums>Enum.УдалитьКлючевыеОперации</enums> <enums>Enum.УровниПроизводительности</enums> <enums>Enum.ФорматыСканированногоИзображения</enums> @@ -1326,8 +1389,10 @@ <dataProcessors>DataProcessor.КонвертацияОбъектовРаспределенныхИнформационныхБаз</dataProcessors> <dataProcessors>DataProcessor.ЛегальностьПолученияОбновлений</dataProcessors> <dataProcessors>DataProcessor.НастройкаРезервногоКопированияИБ</dataProcessors> + <dataProcessors>DataProcessor.НастройкаРезервногоКопированияПриложения</dataProcessors> <dataProcessors>DataProcessor.НастройкиПользователей</dataProcessors> <dataProcessors>DataProcessor.НерекомендуемаяВерсияПлатформы</dataProcessors> + <dataProcessors>DataProcessor.ОбновлениеИнформационнойБазы</dataProcessors> <dataProcessors>DataProcessor.ОбновлениеКонфигурации</dataProcessors> <dataProcessors>DataProcessor.ОценкаПроизводительности</dataProcessors> <dataProcessors>DataProcessor.ПанельАдминистрированияБСП</dataProcessors> @@ -1338,6 +1403,7 @@ <dataProcessors>DataProcessor.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете</dataProcessors> <dataProcessors>DataProcessor.ПомощникСозданияАвтономногоРабочегоМеста</dataProcessors> <dataProcessors>DataProcessor.ПомощникСозданияОбменаДанными</dataProcessors> + <dataProcessors>DataProcessor.РегистрацияИзмененийДляОбменаДанными</dataProcessors> <dataProcessors>DataProcessor.РегламентныеИФоновыеЗадания</dataProcessors> <dataProcessors>DataProcessor.РезервноеКопированиеИБ</dataProcessors> <dataProcessors>DataProcessor.СдвигГраницыИтоговПриЗавершенииРаботы</dataProcessors> @@ -1405,6 +1471,7 @@ <informationRegisters>InformationRegister.ПравилаДляОбменаДанными</informationRegisters> <informationRegisters>InformationRegister.ПредметыПапкиВзаимодействий</informationRegisters> <informationRegisters>InformationRegister.ПрисоединенныеФайлы</informationRegisters> + <informationRegisters>InformationRegister.ПросмотренныеДанныеИнформационногоЦентра</informationRegisters> <informationRegisters>InformationRegister.ПутиМодулейКриптографииСерверовLinux</informationRegisters> <informationRegisters>InformationRegister.РабочиеКаталогиФайлов</informationRegisters> <informationRegisters>InformationRegister.РезультатыОбменаДанными</informationRegisters> @@ -1425,13 +1492,12 @@ <informationRegisters>InformationRegister.УдалитьБлокировкиСеансовОбластиДанных</informationRegisters> <informationRegisters>InformationRegister.УдалитьВерсииПодсистем</informationRegisters> <informationRegisters>InformationRegister.УдалитьЗамерыВремени</informationRegisters> - <informationRegisters>InformationRegister.УдалитьКурсыВалютПоКлассификатору</informationRegisters> <informationRegisters>InformationRegister.УдалитьОбластиДанных</informationRegisters> <informationRegisters>InformationRegister.УдалитьОбластиКРезервномуКопированию</informationRegisters> <informationRegisters>InformationRegister.УдалитьОчередьЗаданий</informationRegisters> <informationRegisters>InformationRegister.УдалитьОчередьИзвлеченияТекста</informationRegisters> <informationRegisters>InformationRegister.УдалитьПраваПоЗначениямДоступа</informationRegisters> - <informationRegisters>InformationRegister.УдалитьСвязиПоставляемыхДанных</informationRegisters> + <informationRegisters>InformationRegister.УдалитьСтраныМира</informationRegisters> <informationRegisters>InformationRegister.ФайлыВРабочемКаталоге</informationRegisters> <informationRegisters>InformationRegister.ХранимыеФайлыВерсий</informationRegisters> <chartsOfCharacteristicTypes>ChartOfCharacteristicTypes.ВидыДоступа</chartsOfCharacteristicTypes> diff --git a/SSL/src/Configuration/ManagedApplicationModule.bsl b/SSL/src/Configuration/ManagedApplicationModule.bsl index 3a6033098..b40a81585 100644 --- a/SSL/src/Configuration/ManagedApplicationModule.bsl +++ b/SSL/src/Configuration/ManagedApplicationModule.bsl @@ -12,8 +12,6 @@ Перем ПропуститьПредупреждениеПередЗавершениемРаботыСистемы Экспорт; // Структура параметров для клиентской логики по завершению работы в программе. Перем ПараметрыРаботыКлиентаПриЗавершении Экспорт; -// Признак того, что при запуске в сеансе администратора нужно вывести форму описаний изменений. -Перем ВывестиОписаниеИзмененийДляАдминистратора Экспорт; // Структура, содержащая в себе время начала и окончания обновления программы. Перем ПараметрыРаботыКлиентаПриОбновлении Экспорт; @@ -75,7 +73,7 @@ Процедура ПриНачалеРаботыСистемы() // СтандартныеПодсистемы - СтандартныеПодсистемыКлиент.ДействияПриНачалеРаботыСистемы(Истина); + СтандартныеПодсистемыКлиент.ДействияПриНачалеРаботыСистемы(); // Конец СтандартныеПодсистемы КонецПроцедуры diff --git a/SSL/src/Configuration/OrdinaryApplicationModule.bsl b/SSL/src/Configuration/OrdinaryApplicationModule.bsl index 3a6033098..b40a81585 100644 --- a/SSL/src/Configuration/OrdinaryApplicationModule.bsl +++ b/SSL/src/Configuration/OrdinaryApplicationModule.bsl @@ -12,8 +12,6 @@ Перем ПропуститьПредупреждениеПередЗавершениемРаботыСистемы Экспорт; // Структура параметров для клиентской логики по завершению работы в программе. Перем ПараметрыРаботыКлиентаПриЗавершении Экспорт; -// Признак того, что при запуске в сеансе администратора нужно вывести форму описаний изменений. -Перем ВывестиОписаниеИзмененийДляАдминистратора Экспорт; // Структура, содержащая в себе время начала и окончания обновления программы. Перем ПараметрыРаботыКлиентаПриОбновлении Экспорт; @@ -75,7 +73,7 @@ Процедура ПриНачалеРаботыСистемы() // СтандартныеПодсистемы - СтандартныеПодсистемыКлиент.ДействияПриНачалеРаботыСистемы(Истина); + СтандартныеПодсистемыКлиент.ДействияПриНачалеРаботыСистемы(); // Конец СтандартныеПодсистемы КонецПроцедуры diff --git a/SSL/src/Configuration/ParentConfigurations.bin b/SSL/src/Configuration/ParentConfigurations.bin index 7c093088d..40b8b9baf 100644 --- a/SSL/src/Configuration/ParentConfigurations.bin +++ b/SSL/src/Configuration/ParentConfigurations.bin @@ -1 +1 @@ -{6,1,1,0bbd6e08-6311-468a-9951-08cd8d1da53d,1,5cc1351f-403a-4ba6-959e-074837bde850,"2.1.3.51","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",4309,1,0,5dc86726-1271-42a5-ae5d-3e8c63f02501,5dc86726-1271-42a5-ae5d-3e8c63f02501,0,1,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,0,1,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,0,1,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,0,1,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,0,1,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,0,1,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,0,1,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,0,1,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,0,1,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,0,1,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,0,1,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,0,1,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,0,1,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,0,1,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,0,1,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,0,1,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,0,1,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,0,1,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,0,1,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,0,1,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,0,1,e3faac40-253a-47c3-bb4b-e0014b56daa9,e3faac40-253a-47c3-bb4b-e0014b56daa9,0,1,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,0,1,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,0,1,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,0,1,9e36087a-baa8-4812-956a-6e1ac73aa7e0,9e36087a-baa8-4812-956a-6e1ac73aa7e0,0,1,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,0,1,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,0,1,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,0,1,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,0,1,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,0,1,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,0,1,cb8da2f3-f8bb-4736-8381-7c153670e3e2,cb8da2f3-f8bb-4736-8381-7c153670e3e2,0,1,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,0,1,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,0,1,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,0,1,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,0,1,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,0,1,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,0,1,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,0,1,c53df2d1-4564-47a7-b66e-6a23ba28270e,c53df2d1-4564-47a7-b66e-6a23ba28270e,0,1,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,0,1,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,0,1,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,0,1,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,0,1,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,0,1,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,0,1,ac4742ed-1bc2-4a97-8c1a-bcdfbc20db82,ac4742ed-1bc2-4a97-8c1a-bcdfbc20db82,0,1,cbfef589-e7fb-4cbc-9103-e234861879ac,cbfef589-e7fb-4cbc-9103-e234861879ac,0,1,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,0,1,52176b25-0232-4326-9548-495db32b2660,52176b25-0232-4326-9548-495db32b2660,0,1,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,0,1,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,0,1,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,0,1,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0,1,060b6f18-538c-4ea1-9748-00efe0b1ab57,060b6f18-538c-4ea1-9748-00efe0b1ab57,0,1,307b6821-fd82-4a1c-9fdb-a26293d4f713,307b6821-fd82-4a1c-9fdb-a26293d4f713,0,1,a952960b-be1b-4ec4-bd76-80915065a60b,a952960b-be1b-4ec4-bd76-80915065a60b,0,1,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,0,1,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,0,1,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,0,1,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5-45fc-8da2-a36c435085a6,0,1,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,0,1,5d16e042-3889-4851-86f1-bc43bf06ee88,5d16e042-3889-4851-86f1-bc43bf06ee88,0,1,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,0,1,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,0,1,e39ecc8a-ce81-483d-85de-b0488c8b7749,e39ecc8a-ce81-483d-85de-b0488c8b7749,0,1,1514eaff-faea-4d82-9465-d0d5292bb31d,1514eaff-faea-4d82-9465-d0d5292bb31d,0,1,6d39c6df-8cd4-47ad-9125-252b37d94575,6d39c6df-8cd4-47ad-9125-252b37d94575,0,1,739bd762-01fc-41a8-87df-844eb201962f,739bd762-01fc-41a8-87df-844eb201962f,0,1,7ef99dd3-d799-4f53-ab56-5528b4c9d782,7ef99dd3-d799-4f53-ab56-5528b4c9d782,0,1,ad7c6165-2e44-4808-a77a-526882cf5dea,ad7c6165-2e44-4808-a77a-526882cf5dea,0,1,b7e435a9-6107-4d02-a949-cff793462e31,b7e435a9-6107-4d02-a949-cff793462e31,0,1,f0cda8f5-56f5-423b-8c1c-7113433ebf25,f0cda8f5-56f5-423b-8c1c-7113433ebf25,0,1,1a220e88-428b-4d85-926d-e572bf19997c,1a220e88-428b-4d85-926d-e572bf19997c,0,1,ca0d938b-244e-421f-9fa4-320784b9f416,ca0d938b-244e-421f-9fa4-320784b9f416,0,1,a108b11d-a489-4684-84ea-d5377c7394de,a108b11d-a489-4684-84ea-d5377c7394de,0,1,289a2d84-2477-4177-a6ef-507e2cadeea2,289a2d84-2477-4177-a6ef-507e2cadeea2,0,1,757b547b-b79c-459a-a64a-eef19a09a38f,757b547b-b79c-459a-a64a-eef19a09a38f,0,1,61cd6eab-6bab-4382-986e-4c7fc44f369b,61cd6eab-6bab-4382-986e-4c7fc44f369b,0,1,cbbe7903-842c-470e-a2d6-7928df8f13e9,cbbe7903-842c-470e-a2d6-7928df8f13e9,0,1,e02597c4-bf45-4bb6-931d-62d2244f6c58,e02597c4-bf45-4bb6-931d-62d2244f6c58,0,1,42544966-445d-41b8-b6a0-a52c64758232,42544966-445d-41b8-b6a0-a52c64758232,0,1,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,0,1,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,0,1,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,0,1,0c44fdea-7b81-45be-87f5-d64456a9d379,0c44fdea-7b81-45be-87f5-d64456a9d379,0,1,d09d6f21-cdd0-485e-bd2c-92092a1aefef,d09d6f21-cdd0-485e-bd2c-92092a1aefef,0,1,2fc92784-d7b0-4209-ba06-e54bed2f160f,2fc92784-d7b0-4209-ba06-e54bed2f160f,0,1,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,0,1,a4e4c91c-fd95-4369-98e3-51ffba79937b,a4e4c91c-fd95-4369-98e3-51ffba79937b,0,1,0d0ada8a-09bb-4634-bf50-199f3779dad5,0d0ada8a-09bb-4634-bf50-199f3779dad5,0,1,d343d4e4-d07f-48c3-9db1-774b0d6c1134,d343d4e4-d07f-48c3-9db1-774b0d6c1134,0,1,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,0,1,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,0,1,968588bb-ee60-4399-955a-3ec4228d3c40,968588bb-ee60-4399-955a-3ec4228d3c40,0,1,23dbb528-7ea8-44ae-a1f2-b7608118666e,23dbb528-7ea8-44ae-a1f2-b7608118666e,0,1,b9627855-6773-4a59-b7d3-f9e2e565cd9e,b9627855-6773-4a59-b7d3-f9e2e565cd9e,0,1,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,0,1,283ce432-3553-4de9-94a2-ca9a590437f5,283ce432-3553-4de9-94a2-ca9a590437f5,0,1,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,0,1,34b0e268-497d-44d4-b822-84909d0685aa,34b0e268-497d-44d4-b822-84909d0685aa,0,1,8961a859-2203-4678-ae1f-63e2474a787a,8961a859-2203-4678-ae1f-63e2474a787a,0,1,fe63db47-3ece-4518-b6a2-0b6499f60a61,fe63db47-3ece-4518-b6a2-0b6499f60a61,0,1,654523be-93d9-4faa-9a35-ce2fede13820,654523be-93d9-4faa-9a35-ce2fede13820,0,1,671afc3e-7589-49d8-95a5-1cf195c3b2f8,671afc3e-7589-49d8-95a5-1cf195c3b2f8,0,1,2c8e45b8-7d80-4137-85db-66cd1db94526,2c8e45b8-7d80-4137-85db-66cd1db94526,0,1,47accdc7-8fa0-4996-9305-c42b6ca12df9,47accdc7-8fa0-4996-9305-c42b6ca12df9,0,1,5abc496c-5745-4220-9fdc-bac092717871,5abc496c-5745-4220-9fdc-bac092717871,0,1,7df36398-7752-4f51-9978-1bcb4bcdd062,7df36398-7752-4f51-9978-1bcb4bcdd062,0,1,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,0,1,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,0,1,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,0,1,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,0,1,f4885af5-6ed6-40e8-81a5-0e9537f943d7,f4885af5-6ed6-40e8-81a5-0e9537f943d7,0,1,87472d14-0d8c-4813-8a3e-2721bbb26811,87472d14-0d8c-4813-8a3e-2721bbb26811,0,1,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,0,1,e8faa1a9-807a-4916-b3c5-76ba2199754c,e8faa1a9-807a-4916-b3c5-76ba2199754c,0,1,99b5c632-61fe-41f5-ac00-ea530633bf28,99b5c632-61fe-41f5-ac00-ea530633bf28,0,1,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,0,1,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,0,1,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,0,1,485911f7-a964-450d-82da-cab020836eb2,485911f7-a964-450d-82da-cab020836eb2,0,1,cedd0b47-07cb-4dae-86b5-31d396b693c7,cedd0b47-07cb-4dae-86b5-31d396b693c7,0,1,c08391e1-c4e3-42aa-8738-061031d0cb75,c08391e1-c4e3-42aa-8738-061031d0cb75,0,1,bf4c6723-e586-4643-9f03-9e672afea26f,bf4c6723-e586-4643-9f03-9e672afea26f,0,1,23204b0b-bf77-4f7c-9945-e73ad924ebb4,23204b0b-bf77-4f7c-9945-e73ad924ebb4,0,1,21032fa5-9426-40bd-91e4-ace1e4ceb013,21032fa5-9426-40bd-91e4-ace1e4ceb013,0,1,17d23818-d865-4df6-a5d3-aa21b0287d0c,17d23818-d865-4df6-a5d3-aa21b0287d0c,0,1,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,0,1,27a80757-c0fd-40c7-ad24-4c819c1ba72b,27a80757-c0fd-40c7-ad24-4c819c1ba72b,0,1,7fce9e49-e558-4760-9d95-dde6ac6c1e78,7fce9e49-e558-4760-9d95-dde6ac6c1e78,0,1,e5aba4a3-6056-4ef3-827c-d74283175393,e5aba4a3-6056-4ef3-827c-d74283175393,0,1,63039e62-7314-42ff-bdc6-c251f38b3827,63039e62-7314-42ff-bdc6-c251f38b3827,0,1,8a4b7aab-b602-4581-8fa4-fab66791f701,8a4b7aab-b602-4581-8fa4-fab66791f701,0,1,7c92c579-4651-4fe3-90dc-6c9b594b76f0,7c92c579-4651-4fe3-90dc-6c9b594b76f0,0,1,a2be2d7a-cca0-460f-a915-dadfb9cd588b,a2be2d7a-cca0-460f-a915-dadfb9cd588b,0,1,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,0,1,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,0,1,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,0,1,1f4408f5-460e-431b-9842-bc6875ccf0ae,1f4408f5-460e-431b-9842-bc6875ccf0ae,0,1,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,0,1,7bfc6163-a62f-45e8-9112-40a5d675ba4a,7bfc6163-a62f-45e8-9112-40a5d675ba4a,0,1,542ff510-0245-4a08-80ac-a9941c66ae93,542ff510-0245-4a08-80ac-a9941c66ae93,0,1,03297623-eaa2-4db0-bf1b-ce2076faf20a,03297623-eaa2-4db0-bf1b-ce2076faf20a,0,1,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,0,1,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,0,1,82a3802c-b6d6-4511-bd8b-eeec003afa33,82a3802c-b6d6-4511-bd8b-eeec003afa33,0,1,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,0,1,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,0,1,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,0,1,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,0,1,a755cb43-492d-4069-9b6a-29b92ebb5b0e,a755cb43-492d-4069-9b6a-29b92ebb5b0e,0,1,86d09107-f511-4148-b5d9-d97e92addfde,86d09107-f511-4148-b5d9-d97e92addfde,0,1,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,0,1,55b78834-3d90-4858-a6f7-e0368b1d8c41,55b78834-3d90-4858-a6f7-e0368b1d8c41,0,1,059b9a75-f53a-4518-a48a-afc72ab9ee36,059b9a75-f53a-4518-a48a-afc72ab9ee36,0,1,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,0,1,31e95872-97c7-49e3-bd1b-8df4de07014d,31e95872-97c7-49e3-bd1b-8df4de07014d,0,1,9c7f2728-10a9-463b-b04c-01ee26f3d4c5,9c7f2728-10a9-463b-b04c-01ee26f3d4c5,0,1,8b9be02b-cd1f-4231-a895-6c9be26348c2,8b9be02b-cd1f-4231-a895-6c9be26348c2,0,1,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,0,1,fa4f0b33-5253-4a5f-8121-feae3e1968a6,fa4f0b33-5253-4a5f-8121-feae3e1968a6,0,1,e0d21be2-91dc-4a04-9078-49420ddddcd5,e0d21be2-91dc-4a04-9078-49420ddddcd5,0,1,56c97764-7dba-42e0-8ba0-82712aca20e9,56c97764-7dba-42e0-8ba0-82712aca20e9,0,1,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,0,1,ea868745-71fc-483c-aa6e-f242c06c673f,ea868745-71fc-483c-aa6e-f242c06c673f,0,1,7f3c6269-ea41-492f-87b7-7eaaf712762e,7f3c6269-ea41-492f-87b7-7eaaf712762e,0,1,a5d037b0-c666-4179-9d6a-5f48c4a126a8,a5d037b0-c666-4179-9d6a-5f48c4a126a8,0,1,f0850411-4dee-4f1d-baec-7d6c96b10637,f0850411-4dee-4f1d-baec-7d6c96b10637,0,1,12f95031-b81f-4802-b2f3-6f70def90db0,12f95031-b81f-4802-b2f3-6f70def90db0,0,1,5732112a-f31d-41cd-9a7f-312a27395502,5732112a-f31d-41cd-9a7f-312a27395502,0,1,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,0,1,f646835e-61eb-4ebd-811e-dac5e70bd1b4,f646835e-61eb-4ebd-811e-dac5e70bd1b4,0,1,61b49c4c-3021-4868-834a-9137476ae169,61b49c4c-3021-4868-834a-9137476ae169,0,1,58911911-5192-45fe-87cf-c4a222a521a1,58911911-5192-45fe-87cf-c4a222a521a1,0,1,70067937-9f27-4442-b87b-6c4576ce1b78,70067937-9f27-4442-b87b-6c4576ce1b78,0,1,115d5d06-a2fc-453e-aab5-c869b6d5850b,115d5d06-a2fc-453e-aab5-c869b6d5850b,0,1,d33ca006-d81d-4ef8-8503-7878e81c599f,d33ca006-d81d-4ef8-8503-7878e81c599f,0,1,123bb339-b95e-44c3-b1e9-482dcaa6f297,123bb339-b95e-44c3-b1e9-482dcaa6f297,0,1,f4119605-beb3-46b6-b372-ecdb74f10a33,f4119605-beb3-46b6-b372-ecdb74f10a33,0,1,d2a2e332-a52c-4277-bd19-5ea8ef198469,d2a2e332-a52c-4277-bd19-5ea8ef198469,0,1,e440c594-14bb-4a6e-af53-a4519c7d5548,e440c594-14bb-4a6e-af53-a4519c7d5548,0,1,4165bdaa-8e27-40de-bcdc-0379c34e8868,4165bdaa-8e27-40de-bcdc-0379c34e8868,0,1,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,0,1,e606f8eb-952a-4abb-b1ae-4211204bed84,e606f8eb-952a-4abb-b1ae-4211204bed84,0,1,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,0,1,1c2ad932-150a-4b15-b958-62eaa8a1eebc,1c2ad932-150a-4b15-b958-62eaa8a1eebc,0,1,b4deaebf-2c21-47d7-9436-10c94c94667c,b4deaebf-2c21-47d7-9436-10c94c94667c,0,1,f8295f29-2533-4013-981b-240f017d9f7c,f8295f29-2533-4013-981b-240f017d9f7c,0,1,538b316b-3876-4da6-8b97-ad8ef59de17d,538b316b-3876-4da6-8b97-ad8ef59de17d,0,1,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,0,1,ebc5f182-482b-4dec-9961-ce3a448abd0e,ebc5f182-482b-4dec-9961-ce3a448abd0e,0,1,83e618f5-1bf4-474a-9d65-389f1e4b16c3,83e618f5-1bf4-474a-9d65-389f1e4b16c3,0,1,1357512e-3ed3-455d-bc91-81db3b92f9fe,1357512e-3ed3-455d-bc91-81db3b92f9fe,0,1,82223d0f-41d9-45a6-9612-ae4d8408fa1b,82223d0f-41d9-45a6-9612-ae4d8408fa1b,0,1,3ee058a9-aff5-46f0-8928-8a417e7800d4,3ee058a9-aff5-46f0-8928-8a417e7800d4,0,1,c9a03f19-42bb-4e07-8ce8-1b954e431ada,c9a03f19-42bb-4e07-8ce8-1b954e431ada,0,1,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,0,1,c2768e31-9e61-4d8d-838d-90b2e2683148,c2768e31-9e61-4d8d-838d-90b2e2683148,0,1,93c347d8-66cb-406c-9ee6-b1962482893f,93c347d8-66cb-406c-9ee6-b1962482893f,0,1,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,0,1,8486e623-1a54-4ad9-ab44-591b6a559bc3,8486e623-1a54-4ad9-ab44-591b6a559bc3,0,1,dce82d28-9a7b-4d4c-af13-90f459cf4af2,dce82d28-9a7b-4d4c-af13-90f459cf4af2,0,1,cb9f2231-49bb-4b14-a124-8996628afead,cb9f2231-49bb-4b14-a124-8996628afead,0,1,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,0,1,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,0,1,896de79f-3c34-4436-a4e2-4dd4f45c3e20,896de79f-3c34-4436-a4e2-4dd4f45c3e20,0,1,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,0,1,e6c42b5d-57fd-42ce-a968-653620e797f6,e6c42b5d-57fd-42ce-a968-653620e797f6,0,1,724fb328-fec6-4afe-bc99-0ff0951b184b,724fb328-fec6-4afe-bc99-0ff0951b184b,0,1,f6259a3b-98f5-4649-8fd0-da0a0285f375,f6259a3b-98f5-4649-8fd0-da0a0285f375,0,1,c565bf25-c55e-4324-851a-cec497f5114a,c565bf25-c55e-4324-851a-cec497f5114a,0,1,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,0,1,8943233f-5c9a-4e6b-b1c2-3bbb94b6c4a7,8943233f-5c9a-4e6b-b1c2-3bbb94b6c4a7,0,1,5b0e250c-4d2d-4e37-ade1-593854610d3f,5b0e250c-4d2d-4e37-ade1-593854610d3f,0,1,148f63d5-23ad-4824-a24c-14d5a54c62d3,148f63d5-23ad-4824-a24c-14d5a54c62d3,0,1,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,0,1,041daf91-e5b3-471d-934d-55229f8a81d6,041daf91-e5b3-471d-934d-55229f8a81d6,0,1,eabfa8b7-fb65-43dd-9308-787f7cce88c9,eabfa8b7-fb65-43dd-9308-787f7cce88c9,0,1,30213cef-b2bc-4e6c-8094-74a61f28b2ed,30213cef-b2bc-4e6c-8094-74a61f28b2ed,0,1,8c72f824-b667-4d74-84aa-30eccfbbd2f0,8c72f824-b667-4d74-84aa-30eccfbbd2f0,0,1,ec7b492d-5d38-4f31-90e0-577ad181514e,ec7b492d-5d38-4f31-90e0-577ad181514e,0,1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,0,1,2889ef9d-5091-4de3-bbcc-62e307ab7cad,2889ef9d-5091-4de3-bbcc-62e307ab7cad,0,1,4807629d-8421-4bd9-beb4-5b2940197958,4807629d-8421-4bd9-beb4-5b2940197958,0,1,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,0,1,766c7fb5-727e-4975-9ea1-3b0df4739620,766c7fb5-727e-4975-9ea1-3b0df4739620,0,1,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,0,1,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,0,1,e70a6eab-791f-4c70-bb92-f069c7486d1b,e70a6eab-791f-4c70-bb92-f069c7486d1b,0,1,f74f97b7-4cbf-4124-b441-d8bb5d9b1634,f74f97b7-4cbf-4124-b441-d8bb5d9b1634,0,1,f58bffe7-4a02-4c4e-bfed-7895177a400c,f58bffe7-4a02-4c4e-bfed-7895177a400c,0,1,fe285122-2257-4fb2-ab7e-1683c31db1c6,fe285122-2257-4fb2-ab7e-1683c31db1c6,0,1,0facc6eb-a178-45ee-a6bc-4bf085d80453,0facc6eb-a178-45ee-a6bc-4bf085d80453,0,1,f74eef36-9441-4b6f-b21c-de9643832f9f,f74eef36-9441-4b6f-b21c-de9643832f9f,0,1,ac2e5217-aaeb-4b6f-b063-538c84f2da06,ac2e5217-aaeb-4b6f-b063-538c84f2da06,0,1,b5e73fbe-499c-4666-a482-0ef399c97c1e,b5e73fbe-499c-4666-a482-0ef399c97c1e,0,1,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,0,1,4ac77dea-3c2b-4566-8857-ba99f7b025c9,4ac77dea-3c2b-4566-8857-ba99f7b025c9,0,1,09fec67d-6e45-428c-b858-9ae20979676c,09fec67d-6e45-428c-b858-9ae20979676c,0,1,58ffc4d9-d711-4b68-905c-d2ac4f78b547,58ffc4d9-d711-4b68-905c-d2ac4f78b547,0,1,94ab750f-46b4-427c-a7f2-4e94fb9b0678,94ab750f-46b4-427c-a7f2-4e94fb9b0678,0,1,397d9926-31a3-4c03-acb7-74478f9863e1,397d9926-31a3-4c03-acb7-74478f9863e1,0,1,9ad979d3-74ad-4d90-b279-c3a2bea36ea7,9ad979d3-74ad-4d90-b279-c3a2bea36ea7,0,1,264dd12a-b4c5-44bf-b3c0-ef9225505f76,264dd12a-b4c5-44bf-b3c0-ef9225505f76,0,1,90b8fdf3-3e42-442f-a002-6a28ad0edc99,90b8fdf3-3e42-442f-a002-6a28ad0edc99,0,1,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,0,1,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,0,1,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,0,1,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0,1,89574884-bce2-406d-9961-d1656b306eb8,89574884-bce2-406d-9961-d1656b306eb8,0,1,3de28e34-3c1e-4e7f-a720-3418c8c9c496,3de28e34-3c1e-4e7f-a720-3418c8c9c496,0,1,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,0,1,dacb236e-42a5-47e5-b239-ff18ae48e21e,dacb236e-42a5-47e5-b239-ff18ae48e21e,0,1,5cdb6e71-fd20-461a-83db-d59ccdb5b366,5cdb6e71-fd20-461a-83db-d59ccdb5b366,0,1,388b8576-9ba4-460f-b71b-3d644663656a,388b8576-9ba4-460f-b71b-3d644663656a,0,1,d4d38827-fce6-4c39-a4b4-51c7d7edc475,d4d38827-fce6-4c39-a4b4-51c7d7edc475,0,1,2d40609d-b56f-4082-9a6f-8216817ebd24,2d40609d-b56f-4082-9a6f-8216817ebd24,0,1,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,0,1,732b19c8-4f22-4748-a796-71538e46fc2f,732b19c8-4f22-4748-a796-71538e46fc2f,0,1,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,0,1,3fe0ef25-ce56-435d-b343-eadfec91a636,3fe0ef25-ce56-435d-b343-eadfec91a636,0,1,6cb35d15-936f-4ca8-a196-8a9a75ce54dd,6cb35d15-936f-4ca8-a196-8a9a75ce54dd,0,1,74f02619-7fa8-4c6d-81d6-230156ee45f4,74f02619-7fa8-4c6d-81d6-230156ee45f4,0,1,a103cca0-8243-40e9-bcdd-97a1cc8a3943,a103cca0-8243-40e9-bcdd-97a1cc8a3943,0,1,80fd89d7-160d-4528-9aa0-05b8dac64b4c,80fd89d7-160d-4528-9aa0-05b8dac64b4c,0,1,dd773b86-30fa-4e4a-9391-b4e12488a44e,dd773b86-30fa-4e4a-9391-b4e12488a44e,0,1,d92afab1-81df-4be8-8759-6964da6768bf,d92afab1-81df-4be8-8759-6964da6768bf,0,1,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,0,1,da551cf6-4f86-4e37-8967-a84c80e1fb13,da551cf6-4f86-4e37-8967-a84c80e1fb13,0,1,5fb2c120-fd14-4e78-a35f-c8e9478b3235,5fb2c120-fd14-4e78-a35f-c8e9478b3235,0,1,9d514ce1-f9bd-4018-8107-545cdd372fbd,9d514ce1-f9bd-4018-8107-545cdd372fbd,0,1,fe6b732f-3a33-460f-9686-cffdd5f7d99b,fe6b732f-3a33-460f-9686-cffdd5f7d99b,0,1,06250212-aeb1-4cb8-8785-ea71b1dad848,06250212-aeb1-4cb8-8785-ea71b1dad848,0,1,0c068a61-e5e6-4475-96fa-b7c1d825da42,0c068a61-e5e6-4475-96fa-b7c1d825da42,0,1,1047e34d-397a-42cc-80e6-1be755bd6462,1047e34d-397a-42cc-80e6-1be755bd6462,0,1,1cd473c3-4e36-47a9-b466-73d86ec244b0,1cd473c3-4e36-47a9-b466-73d86ec244b0,0,1,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,0,1,b406b5f9-eeaf-43a0-8930-067554d783c9,b406b5f9-eeaf-43a0-8930-067554d783c9,0,1,47718840-2939-4e30-a72c-a20c88ac4c17,47718840-2939-4e30-a72c-a20c88ac4c17,0,1,58a38994-9fe4-4783-967d-79d1141b90f3,58a38994-9fe4-4783-967d-79d1141b90f3,0,1,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,0,1,7c2e35a8-d05d-4e52-baee-a1e13585c502,7c2e35a8-d05d-4e52-baee-a1e13585c502,0,1,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,0,1,f551f78a-2f05-4932-ac33-cfa1b077f46f,f551f78a-2f05-4932-ac33-cfa1b077f46f,0,1,a96091a7-d3a5-4893-8440-f360231bf468,a96091a7-d3a5-4893-8440-f360231bf468,0,1,9ce6eef0-5280-4374-9714-474ac571e4e2,9ce6eef0-5280-4374-9714-474ac571e4e2,0,1,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,0,1,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,0,1,eca79a64-3d00-4178-b4eb-cf5468622c96,eca79a64-3d00-4178-b4eb-cf5468622c96,0,1,6dc4c216-e49f-4833-b45f-6060b67995ef,6dc4c216-e49f-4833-b45f-6060b67995ef,0,1,4655fa12-9169-4d08-bdab-9b3174d0b223,4655fa12-9169-4d08-bdab-9b3174d0b223,0,1,f3d3d91b-67a6-4f8c-a6d9-c8b80d1dd43f,f3d3d91b-67a6-4f8c-a6d9-c8b80d1dd43f,0,1,ba5574bd-53ca-413f-a245-272f468a80fb,ba5574bd-53ca-413f-a245-272f468a80fb,0,1,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,0,1,300ecdd6-144f-48c8-9fd4-6166f1de1047,300ecdd6-144f-48c8-9fd4-6166f1de1047,0,1,b6bbfb59-8249-47af-9394-be262f118811,b6bbfb59-8249-47af-9394-be262f118811,0,1,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,0,1,fb63d488-fb91-4d08-8f8c-f4836538216f,fb63d488-fb91-4d08-8f8c-f4836538216f,0,1,b8be6c09-6880-45d3-a2d1-06ad72d069c9,b8be6c09-6880-45d3-a2d1-06ad72d069c9,0,1,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,0,1,148dd521-8754-451b-803b-cbee7c3d3965,148dd521-8754-451b-803b-cbee7c3d3965,0,1,38bc48c7-3938-47be-be3f-844f19561301,38bc48c7-3938-47be-be3f-844f19561301,0,1,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,0,1,147038fb-6154-41f3-aad6-547db27d1e43,147038fb-6154-41f3-aad6-547db27d1e43,0,1,832fa9d3-deab-4c57-b6e2-dee5d24d6100,832fa9d3-deab-4c57-b6e2-dee5d24d6100,0,1,dd4270ef-6b4c-491e-8871-959dbec14c53,dd4270ef-6b4c-491e-8871-959dbec14c53,0,1,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,0,1,c1ea0b1b-da19-4ca5-8e93-b05a194c2829,c1ea0b1b-da19-4ca5-8e93-b05a194c2829,0,1,f64de21f-5a7c-4a1a-a929-07fc53049f6c,f64de21f-5a7c-4a1a-a929-07fc53049f6c,0,1,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,0,1,ea653eca-f96a-447d-8b09-7a7cb6929ed6,ea653eca-f96a-447d-8b09-7a7cb6929ed6,0,1,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,0,1,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,0,1,3b380a63-9232-42c2-bfa2-e8fc89448bbd,3b380a63-9232-42c2-bfa2-e8fc89448bbd,0,1,10556a26-ea4b-46b4-84d1-175eb13b333f,10556a26-ea4b-46b4-84d1-175eb13b333f,0,1,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,0,1,fd317d96-380e-4ee7-a25b-401e8521cc7a,fd317d96-380e-4ee7-a25b-401e8521cc7a,0,1,ecfc7ede-fffb-4bea-9598-3e18845f603d,ecfc7ede-fffb-4bea-9598-3e18845f603d,0,1,fa44433b-1c44-45a0-9487-47aa092442cf,fa44433b-1c44-45a0-9487-47aa092442cf,0,1,041cecfd-cef2-45d9-90e8-afe0d97d2d95,041cecfd-cef2-45d9-90e8-afe0d97d2d95,0,1,eaae534f-b506-4c86-b649-5b103cf5791d,eaae534f-b506-4c86-b649-5b103cf5791d,0,1,18b4773a-5380-4e71-8b51-ef10e19df17e,18b4773a-5380-4e71-8b51-ef10e19df17e,0,1,42f454f7-cfc4-459b-898f-86cace30410c,42f454f7-cfc4-459b-898f-86cace30410c,0,1,2b72fe1c-afe1-4905-8db2-2bb1baca6295,2b72fe1c-afe1-4905-8db2-2bb1baca6295,0,1,e700ab8e-ff33-4968-9bd0-8918a7d2b83f,e700ab8e-ff33-4968-9bd0-8918a7d2b83f,0,1,330933ca-c4d5-4014-8a6d-910124dfdc7e,330933ca-c4d5-4014-8a6d-910124dfdc7e,0,1,910b3640-790c-4185-88b5-a7c7466374c0,910b3640-790c-4185-88b5-a7c7466374c0,0,1,b5eceb60-76ba-47e3-90bd-52078d4bae4e,b5eceb60-76ba-47e3-90bd-52078d4bae4e,0,1,b8869f44-b87f-4e3e-a0d5-2aec5ccda4e2,b8869f44-b87f-4e3e-a0d5-2aec5ccda4e2,0,1,f7c23753-ff8c-4c26-bdc5-58e3b038668d,f7c23753-ff8c-4c26-bdc5-58e3b038668d,0,1,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,0,1,10197638-2cde-4424-8390-3bc9abe9852e,10197638-2cde-4424-8390-3bc9abe9852e,0,1,d9d14a24-c023-4b69-ad57-30d1474e1232,d9d14a24-c023-4b69-ad57-30d1474e1232,0,1,4fb8564e-2338-4c23-84a4-31f768047ced,4fb8564e-2338-4c23-84a4-31f768047ced,0,1,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,0,1,e18b4527-8727-4a10-9e99-a80012debe6c,e18b4527-8727-4a10-9e99-a80012debe6c,0,1,1ed910db-e434-4efd-9b12-c25353a31d5a,1ed910db-e434-4efd-9b12-c25353a31d5a,1,0,76702e9e-fa7a-4b98-befa-f9b37db2dae0,76702e9e-fa7a-4b98-befa-f9b37db2dae0,1,0,101a4eb3-cdda-47af-8c69-615a6920347a,101a4eb3-cdda-47af-8c69-615a6920347a,1,0,cf19f220-f6d4-4c9e-b5d5-9d94234f0a2c,cf19f220-f6d4-4c9e-b5d5-9d94234f0a2c,1,0,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,1,0,f79bada2-838f-4e4f-a017-935cf671a70c,f79bada2-838f-4e4f-a017-935cf671a70c,1,0,ed394820-a216-4c4b-81ae-5dea33ced43b,ed394820-a216-4c4b-81ae-5dea33ced43b,1,0,3f3a0b1b-04ce-47c1-928d-5e3483e9fd73,3f3a0b1b-04ce-47c1-928d-5e3483e9fd73,1,0,8a310493-c06f-46db-b2b5-14d6ed203312,8a310493-c06f-46db-b2b5-14d6ed203312,1,0,b68ec95b-64f3-4a2b-9683-231d50f01eeb,b68ec95b-64f3-4a2b-9683-231d50f01eeb,1,0,4a008342-f72f-4ca1-bad1-64b59b509911,4a008342-f72f-4ca1-bad1-64b59b509911,1,0,cefa1723-a4d4-44c4-bd57-ffa713f9306c,cefa1723-a4d4-44c4-bd57-ffa713f9306c,1,0,8d8b91c0-c0ab-4b9d-b854-b867063ddb5b,8d8b91c0-c0ab-4b9d-b854-b867063ddb5b,1,0,4920aabf-6f53-4f91-932a-8ace24631a74,4920aabf-6f53-4f91-932a-8ace24631a74,1,0,ce7a7f72-9d7d-4240-b852-e83b4b8d944b,ce7a7f72-9d7d-4240-b852-e83b4b8d944b,1,0,dacd15cd-ffdc-444d-a45f-9b0c7776a7c5,dacd15cd-ffdc-444d-a45f-9b0c7776a7c5,1,0,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,1,0,bbec9c3d-31dd-484e-ab32-41ef845f1370,bbec9c3d-31dd-484e-ab32-41ef845f1370,1,0,8692ba41-d91d-4af0-8aba-69dd5409d593,8692ba41-d91d-4af0-8aba-69dd5409d593,1,0,852bd696-9a9e-4952-b676-4108f757ad9b,852bd696-9a9e-4952-b676-4108f757ad9b,1,0,a95b564a-c895-40f2-b947-ea08462bb2a0,a95b564a-c895-40f2-b947-ea08462bb2a0,1,0,ca63ca2f-703d-4317-8c5d-0650ea638f3f,ca63ca2f-703d-4317-8c5d-0650ea638f3f,1,0,aa2256c7-9847-40a5-9e49-11c508e0d45b,aa2256c7-9847-40a5-9e49-11c508e0d45b,1,0,a04493f4-508c-4047-b0e3-b7d4bde6427b,a04493f4-508c-4047-b0e3-b7d4bde6427b,1,0,418982cd-d403-47cf-a7ef-993a36104947,418982cd-d403-47cf-a7ef-993a36104947,1,0,485ebc6a-0e3e-4278-8ef1-c6194d6d5015,485ebc6a-0e3e-4278-8ef1-c6194d6d5015,1,0,816c8143-8b02-4f4a-8eb1-44c7fb36afcc,816c8143-8b02-4f4a-8eb1-44c7fb36afcc,1,0,35eea3b8-d017-442a-b5a0-a1571165b9a9,35eea3b8-d017-442a-b5a0-a1571165b9a9,1,0,7e84901c-cb7f-437c-a135-0902cd47acb6,7e84901c-cb7f-437c-a135-0902cd47acb6,1,0,c4d67026-2c97-4126-b8be-49aa6f567e2d,c4d67026-2c97-4126-b8be-49aa6f567e2d,1,0,fda2906d-f499-4016-b13a-99f7f713b898,fda2906d-f499-4016-b13a-99f7f713b898,1,0,da2b47f5-4109-4f72-a4a5-70be24a6881f,da2b47f5-4109-4f72-a4a5-70be24a6881f,1,0,849f034e-85dc-4515-aae6-240c1e0d46d9,849f034e-85dc-4515-aae6-240c1e0d46d9,1,0,de4d37c9-b278-4c0c-bc10-1b63ecd72947,de4d37c9-b278-4c0c-bc10-1b63ecd72947,1,0,1c7e9baa-7728-4afd-829a-806cee13ecdb,1c7e9baa-7728-4afd-829a-806cee13ecdb,1,0,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,1,0,3091c6d3-6cb2-4990-a0d2-ee766db5c1df,3091c6d3-6cb2-4990-a0d2-ee766db5c1df,1,0,5a741cf6-8160-4409-9396-2e6d1e67e6fa,5a741cf6-8160-4409-9396-2e6d1e67e6fa,1,0,8242daae-181a-47df-b28e-c1de3fce0359,8242daae-181a-47df-b28e-c1de3fce0359,1,0,5cc3a29d-aa98-42bf-9800-f584229c8e46,5cc3a29d-aa98-42bf-9800-f584229c8e46,1,0,db82191f-77bd-44da-8b33-86f01018e25a,db82191f-77bd-44da-8b33-86f01018e25a,1,0,acfa1919-07ce-4464-8552-6b104e284dca,acfa1919-07ce-4464-8552-6b104e284dca,1,0,497ce8f3-f6f0-4da8-aeb0-0fa01bb26dc6,497ce8f3-f6f0-4da8-aeb0-0fa01bb26dc6,1,0,f4cff4ff-68e9-4072-971e-1b359d3aa980,f4cff4ff-68e9-4072-971e-1b359d3aa980,1,0,6f9fba85-7c04-4e07-bc93-8ad79cbdca85,6f9fba85-7c04-4e07-bc93-8ad79cbdca85,1,0,fdb012c9-583a-42af-95da-070e75a58078,fdb012c9-583a-42af-95da-070e75a58078,1,0,40a52f83-f0e2-470d-9c17-7fdc8cc646b7,40a52f83-f0e2-470d-9c17-7fdc8cc646b7,1,0,7d069b11-cddd-463d-97be-3cbeaaf0954c,7d069b11-cddd-463d-97be-3cbeaaf0954c,1,0,8c5fae4c-b5b6-4e05-9453-4ac5de07c54c,8c5fae4c-b5b6-4e05-9453-4ac5de07c54c,1,0,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,1,0,d1b950b0-dd66-49f9-998e-3ae5e820ae7f,d1b950b0-dd66-49f9-998e-3ae5e820ae7f,1,0,57e39881-cbf9-4cac-9ed0-bf4a6ea667ee,57e39881-cbf9-4cac-9ed0-bf4a6ea667ee,1,0,b9004626-915c-44c8-9cb7-25e5b627ee83,b9004626-915c-44c8-9cb7-25e5b627ee83,1,0,63c6cfad-124d-491a-829d-b298463c95e6,63c6cfad-124d-491a-829d-b298463c95e6,1,0,3da31d2f-24dd-469b-bd3b-073fa3b3d585,3da31d2f-24dd-469b-bd3b-073fa3b3d585,1,0,737404de-5b9d-4445-81c5-2c5b50b36846,737404de-5b9d-4445-81c5-2c5b50b36846,1,0,1ae364d3-0bec-4089-af23-c60d2a274c85,1ae364d3-0bec-4089-af23-c60d2a274c85,1,0,1c1a5bf8-bbe6-4a69-973e-11445175dac2,1c1a5bf8-bbe6-4a69-973e-11445175dac2,1,0,f11ffcfd-3588-4785-b222-cebe80455303,f11ffcfd-3588-4785-b222-cebe80455303,1,0,5d216c28-0724-4e7d-86cf-b6f75e7e28b7,5d216c28-0724-4e7d-86cf-b6f75e7e28b7,1,0,bfdc6346-db5b-427f-acca-9b48db8fefd0,bfdc6346-db5b-427f-acca-9b48db8fefd0,1,0,1c3f258c-345e-47f6-9e29-98b1222fb348,1c3f258c-345e-47f6-9e29-98b1222fb348,1,0,dfafcdf3-cdeb-4822-9f41-a730d9d3fb24,dfafcdf3-cdeb-4822-9f41-a730d9d3fb24,1,0,35c938f4-065f-47f5-a75b-637ed0080725,35c938f4-065f-47f5-a75b-637ed0080725,1,0,b3847d64-46b8-4bd1-9362-d88d82b34254,b3847d64-46b8-4bd1-9362-d88d82b34254,1,0,14b58f6d-9243-47cd-a430-8408fcddd8d8,14b58f6d-9243-47cd-a430-8408fcddd8d8,0,1,57b9edd2-16d2-40f2-ae9c-33462eda5fb4,57b9edd2-16d2-40f2-ae9c-33462eda5fb4,0,1,e14c0841-226c-4c79-bec9-cfc8d2c3a160,e14c0841-226c-4c79-bec9-cfc8d2c3a160,0,1,098d9444-e178-45b5-a8c3-97bd94371684,098d9444-e178-45b5-a8c3-97bd94371684,0,1,6f3c5b90-b030-4267-a973-33d12c2c7680,6f3c5b90-b030-4267-a973-33d12c2c7680,0,1,88b879b7-1bb3-4478-b569-35bdb5c56939,88b879b7-1bb3-4478-b569-35bdb5c56939,0,1,c8d797cf-e72c-4d99-bd6f-f4a8b0ca7c8d,c8d797cf-e72c-4d99-bd6f-f4a8b0ca7c8d,0,1,7a62d031-c340-4b1e-90af-fff697a2e979,7a62d031-c340-4b1e-90af-fff697a2e979,0,1,18bf6916-83cc-41e5-a35b-1489450ae632,18bf6916-83cc-41e5-a35b-1489450ae632,0,1,ebab97cf-5335-4648-9845-8ca41f79fb49,ebab97cf-5335-4648-9845-8ca41f79fb49,0,1,bb29fa44-6772-4426-a0b8-422115e14288,bb29fa44-6772-4426-a0b8-422115e14288,0,1,a5cc5ae2-be80-4957-8aca-9e477433dfcc,a5cc5ae2-be80-4957-8aca-9e477433dfcc,0,1,62fa393c-687c-49bf-8a25-81adc04430fb,62fa393c-687c-49bf-8a25-81adc04430fb,0,1,36d7d739-b198-487d-8644-76589356c2ec,36d7d739-b198-487d-8644-76589356c2ec,0,1,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,0,1,e51ae56c-d311-46b7-8d4c-19a432f4cd16,e51ae56c-d311-46b7-8d4c-19a432f4cd16,0,1,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,0,1,40d3ed07-3b56-4c9f-8b96-d94455202ef0,40d3ed07-3b56-4c9f-8b96-d94455202ef0,0,1,b5365cb6-a4e7-479b-82f4-f4ad80fcd7c9,b5365cb6-a4e7-479b-82f4-f4ad80fcd7c9,0,1,84282afa-21f5-40db-9386-e6f741c9a06c,84282afa-21f5-40db-9386-e6f741c9a06c,0,1,5b3b3da9-8619-4fbd-b140-3528875cd179,5b3b3da9-8619-4fbd-b140-3528875cd179,0,1,99e5e866-7ac6-4916-ab66-3e2909822c56,99e5e866-7ac6-4916-ab66-3e2909822c56,0,1,03363877-2752-4a03-95f2-d73b732e0bfd,03363877-2752-4a03-95f2-d73b732e0bfd,0,1,8d9d2284-e592-44c5-93bb-247037ab6b95,8d9d2284-e592-44c5-93bb-247037ab6b95,0,1,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0,1,78051e10-74ab-44be-adca-e4c93824a386,78051e10-74ab-44be-adca-e4c93824a386,0,1,73629419-83d8-4727-88a9-76c851d104c9,73629419-83d8-4727-88a9-76c851d104c9,0,1,a9c3065b-db68-4f59-9235-33f9fbfdaafd,a9c3065b-db68-4f59-9235-33f9fbfdaafd,0,1,3715cf3d-0abc-4711-8ac9-d41f0be7878f,3715cf3d-0abc-4711-8ac9-d41f0be7878f,0,1,8e8d8078-8b32-4c24-b26e-89a92bf60160,8e8d8078-8b32-4c24-b26e-89a92bf60160,0,1,f96cbb27-7619-41e0-8577-e623ef02dc58,f96cbb27-7619-41e0-8577-e623ef02dc58,0,1,d74dfd31-2016-435b-8652-15fdbca59490,d74dfd31-2016-435b-8652-15fdbca59490,0,1,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,0,1,27651e0e-d560-434b-a49c-f473a5b20c4d,27651e0e-d560-434b-a49c-f473a5b20c4d,0,1,dab1491b-0685-442d-b945-2bfde3f37933,dab1491b-0685-442d-b945-2bfde3f37933,0,1,ce85554b-81ba-4149-a951-d09bdc14fa16,ce85554b-81ba-4149-a951-d09bdc14fa16,0,1,23a1ef35-1469-44ea-8535-fa9c7f535cae,23a1ef35-1469-44ea-8535-fa9c7f535cae,0,1,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,0,1,2558d812-ac0a-49ba-87db-3f661209a3c4,2558d812-ac0a-49ba-87db-3f661209a3c4,0,1,20d712ef-77c1-4374-92e1-f20a3ebc7eab,20d712ef-77c1-4374-92e1-f20a3ebc7eab,0,1,65d23ce8-e326-45ee-86b0-6dcf35797201,65d23ce8-e326-45ee-86b0-6dcf35797201,0,1,a2683c3f-1b21-47d8-951d-7d30cde51efc,a2683c3f-1b21-47d8-951d-7d30cde51efc,0,1,54c77053-1728-4914-a354-73fe8853a0e1,54c77053-1728-4914-a354-73fe8853a0e1,0,1,21136691-078f-4bf7-bddd-f41416a76d86,21136691-078f-4bf7-bddd-f41416a76d86,0,1,30a121c7-c4f5-45c4-9504-9778ed85d9e3,30a121c7-c4f5-45c4-9504-9778ed85d9e3,0,1,c68e2157-2541-4f80-966a-d68ce603f131,c68e2157-2541-4f80-966a-d68ce603f131,0,1,e5dfee58-f748-48ee-81a3-7c6133f06365,e5dfee58-f748-48ee-81a3-7c6133f06365,0,1,27bfc94e-e438-4854-9a9d-39a3b984c9b4,27bfc94e-e438-4854-9a9d-39a3b984c9b4,0,1,a7f1af69-f0f1-4c24-bf4f-b8dc15f4dec2,a7f1af69-f0f1-4c24-bf4f-b8dc15f4dec2,0,1,5c4c9931-3fb0-47a8-9e4f-d552de12b355,5c4c9931-3fb0-47a8-9e4f-d552de12b355,0,1,2a498baf-ec2e-4dda-b568-801bb60db225,2a498baf-ec2e-4dda-b568-801bb60db225,0,1,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,0,1,35989876-16b1-4b02-9381-444a06a7a21d,35989876-16b1-4b02-9381-444a06a7a21d,0,1,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,0,1,f7608000-1e8a-4ca4-afb7-e04ef547b70a,f7608000-1e8a-4ca4-afb7-e04ef547b70a,0,1,26cea519-19d0-4707-be0a-1a43fde6e563,26cea519-19d0-4707-be0a-1a43fde6e563,0,1,a3d599b9-89d1-4386-8c5b-1c2a9905e6e2,a3d599b9-89d1-4386-8c5b-1c2a9905e6e2,0,1,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,0,1,60c04f0a-78a8-4c55-8844-b86906350fd1,60c04f0a-78a8-4c55-8844-b86906350fd1,0,1,851306a7-8847-4b43-8214-898bfc24b0ab,851306a7-8847-4b43-8214-898bfc24b0ab,0,1,af8d4bc9-2f0f-44d3-89ce-2593877055c8,af8d4bc9-2f0f-44d3-89ce-2593877055c8,0,1,344fb829-a1cc-4b17-8f98-2d4f93bfcd6a,344fb829-a1cc-4b17-8f98-2d4f93bfcd6a,0,1,eb35bff2-8467-48fe-bf93-ece2aa40f506,eb35bff2-8467-48fe-bf93-ece2aa40f506,0,1,f7f99dab-9f1e-4814-84e6-e05eb425f67e,f7f99dab-9f1e-4814-84e6-e05eb425f67e,0,1,f26bdf61-8dc9-47e3-bc13-e6b7d8252ebd,f26bdf61-8dc9-47e3-bc13-e6b7d8252ebd,0,1,10302ca9-850c-4561-a774-d099c20b1919,10302ca9-850c-4561-a774-d099c20b1919,0,1,c62c30d6-ffac-43e0-bb20-25fa8eeb62fd,c62c30d6-ffac-43e0-bb20-25fa8eeb62fd,0,1,d693bfcf-e117-445b-b0e1-d895bc5227c4,d693bfcf-e117-445b-b0e1-d895bc5227c4,0,1,cc9be940-db0c-4fad-9655-f5ce2b3ac57e,cc9be940-db0c-4fad-9655-f5ce2b3ac57e,0,1,211ca200-977e-4d48-a0c2-6b4e47bc1838,211ca200-977e-4d48-a0c2-6b4e47bc1838,0,1,68cf55da-b29e-4a65-815b-c9cdc8e5888e,68cf55da-b29e-4a65-815b-c9cdc8e5888e,0,1,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,0,1,1041ed81-c1f7-43b2-9087-914865a3076e,1041ed81-c1f7-43b2-9087-914865a3076e,0,1,5d7174d2-42b3-4e12-b705-4209dd73b53b,5d7174d2-42b3-4e12-b705-4209dd73b53b,0,1,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,0,1,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,0,1,5a4c6511-f8ed-40e4-a251-e28f62629cf2,5a4c6511-f8ed-40e4-a251-e28f62629cf2,0,1,0508e7ab-3dd9-42b4-9542-089ce0656bbb,0508e7ab-3dd9-42b4-9542-089ce0656bbb,0,1,cfe59dfd-a509-4f83-b926-b3ff94234a43,cfe59dfd-a509-4f83-b926-b3ff94234a43,0,1,9020fa9d-e7de-4574-ab65-db6651b5b610,9020fa9d-e7de-4574-ab65-db6651b5b610,0,1,f9aa933e-6684-48de-b802-96c8e61b1fe6,f9aa933e-6684-48de-b802-96c8e61b1fe6,0,1,9de4d430-95ec-4435-b3e8-4fc85778d517,9de4d430-95ec-4435-b3e8-4fc85778d517,0,1,205b8908-fa21-42bd-bff0-fb95e6787f15,205b8908-fa21-42bd-bff0-fb95e6787f15,0,1,5320abf1-b09b-4de0-9adf-4cb1da31df6f,5320abf1-b09b-4de0-9adf-4cb1da31df6f,0,1,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,0,1,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,0,1,96d66cdd-d40c-43a3-92ce-40aef2101b64,96d66cdd-d40c-43a3-92ce-40aef2101b64,0,1,9daa8270-4782-4d83-af03-c8d2b11057ff,9daa8270-4782-4d83-af03-c8d2b11057ff,0,1,d12e7d62-9910-43e2-a3a8-39a723f6ff6e,d12e7d62-9910-43e2-a3a8-39a723f6ff6e,0,1,65bef8ef-f088-4bb6-abb4-c2a59f82f900,65bef8ef-f088-4bb6-abb4-c2a59f82f900,0,1,27a9d7f3-7f44-4268-931f-1308047ce462,27a9d7f3-7f44-4268-931f-1308047ce462,0,1,1504d923-a49f-4340-854f-6b79847bc8a1,1504d923-a49f-4340-854f-6b79847bc8a1,0,1,6e45158b-bace-44c9-81b2-cd96c605e575,6e45158b-bace-44c9-81b2-cd96c605e575,0,1,1be7114c-686a-422b-b759-2cc2dbf25c78,1be7114c-686a-422b-b759-2cc2dbf25c78,0,1,4b8927df-e124-4bf6-9d70-6e91b4796d90,4b8927df-e124-4bf6-9d70-6e91b4796d90,0,1,871b63a2-c7a6-4343-8d8b-7dda1b0def87,871b63a2-c7a6-4343-8d8b-7dda1b0def87,0,1,fc78d8df-ab27-4544-a65c-73908b9c5425,fc78d8df-ab27-4544-a65c-73908b9c5425,0,1,70b79e56-bb71-4f38-93cf-94dda79d9b4c,70b79e56-bb71-4f38-93cf-94dda79d9b4c,0,1,f8a090d2-b2d1-4ead-a8bf-6325a7552743,f8a090d2-b2d1-4ead-a8bf-6325a7552743,0,1,84f935da-9fe5-44ea-845b-b447b8b0a6f5,84f935da-9fe5-44ea-845b-b447b8b0a6f5,0,1,bd97e481-cfc4-4a40-8438-985020f06abd,bd97e481-cfc4-4a40-8438-985020f06abd,0,1,120c5162-b03c-46ce-8a2a-8ef501971715,120c5162-b03c-46ce-8a2a-8ef501971715,0,1,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,0,1,58351093-c827-48a1-b1a1-887d3f13b6df,58351093-c827-48a1-b1a1-887d3f13b6df,0,1,a9a0db31-6808-4790-be72-f345197b0c6e,a9a0db31-6808-4790-be72-f345197b0c6e,0,1,36554213-9af4-4fec-8944-35f50b306eda,36554213-9af4-4fec-8944-35f50b306eda,0,1,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,0,1,33343620-673e-4aa3-9e58-c6a25f738001,33343620-673e-4aa3-9e58-c6a25f738001,0,1,8aaf780f-ed74-4f44-9598-c14180053ff9,8aaf780f-ed74-4f44-9598-c14180053ff9,0,1,dbd4d09d-f410-4453-9143-bd72da5464cc,dbd4d09d-f410-4453-9143-bd72da5464cc,0,1,c4fe10b6-d025-4736-be23-3113bd7fe7b4,c4fe10b6-d025-4736-be23-3113bd7fe7b4,0,1,65530aca-7cf2-4a52-b5be-5dcbc15a049e,65530aca-7cf2-4a52-b5be-5dcbc15a049e,0,1,15eb2c2d-305d-42c0-9aec-936b82114bdb,15eb2c2d-305d-42c0-9aec-936b82114bdb,0,1,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,0,1,cbca7272-2aae-4e21-b3f5-12786f085648,cbca7272-2aae-4e21-b3f5-12786f085648,0,1,7718bd0b-7b8a-4ffc-b228-f05683b5531a,7718bd0b-7b8a-4ffc-b228-f05683b5531a,0,1,38aeb32b-9e3b-4b4a-9a61-97da63cdea48,38aeb32b-9e3b-4b4a-9a61-97da63cdea48,0,1,881f53bc-a52e-4312-b09d-3d3f53ddf84b,881f53bc-a52e-4312-b09d-3d3f53ddf84b,0,1,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,0,1,e3476d0e-0ab4-4734-9261-04aef6281086,e3476d0e-0ab4-4734-9261-04aef6281086,0,1,945ae8d2-b74a-41e9-b740-c82acdd40d04,945ae8d2-b74a-41e9-b740-c82acdd40d04,0,1,29c37223-de1c-49fb-8488-77e44dd79edd,29c37223-de1c-49fb-8488-77e44dd79edd,0,1,f561be64-9420-46ec-a4f7-9df0bea2e28b,f561be64-9420-46ec-a4f7-9df0bea2e28b,0,1,e9e242b7-0077-4c47-8f45-df50e7cc90cf,e9e242b7-0077-4c47-8f45-df50e7cc90cf,0,1,820383e1-9b95-4c0f-8464-722f1fe64ad5,820383e1-9b95-4c0f-8464-722f1fe64ad5,0,1,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,0,1,292bfe6b-703e-40cb-856d-abb470e6709f,292bfe6b-703e-40cb-856d-abb470e6709f,0,1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,0,1,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,0,1,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,0,1,8811ea1a-1221-47b7-9574-3f36ff15a3cf,8811ea1a-1221-47b7-9574-3f36ff15a3cf,0,1,a84891cc-e996-489a-abde-5b5af166a057,a84891cc-e996-489a-abde-5b5af166a057,0,1,1d715463-691b-4c01-ae39-57c261f2a6ad,1d715463-691b-4c01-ae39-57c261f2a6ad,0,1,4c3d007f-a62c-4fd9-beda-58dbf08ad188,4c3d007f-a62c-4fd9-beda-58dbf08ad188,0,1,c35373a9-f0b0-4ddb-a985-409ac9c64609,c35373a9-f0b0-4ddb-a985-409ac9c64609,0,1,c1c40916-fee5-46e3-90fc-10e7595866c9,c1c40916-fee5-46e3-90fc-10e7595866c9,0,1,19a307b1-9ef0-4fc6-bf4f-7636e9118399,19a307b1-9ef0-4fc6-bf4f-7636e9118399,0,1,666244a4-5636-4405-89dd-bbd8f4278071,666244a4-5636-4405-89dd-bbd8f4278071,0,1,8b79f0e3-9024-4073-aa6b-a42beed9b0c6,8b79f0e3-9024-4073-aa6b-a42beed9b0c6,0,1,29a627a9-debc-4074-88d0-ec3561e1ef9c,29a627a9-debc-4074-88d0-ec3561e1ef9c,0,1,5a01a002-8833-4c89-b8d6-9b63fc49d3b6,5a01a002-8833-4c89-b8d6-9b63fc49d3b6,0,1,39f5e272-9a10-40b0-8a10-92037828b206,39f5e272-9a10-40b0-8a10-92037828b206,0,1,87dad256-122b-4d7e-b249-a2c313a9cf33,87dad256-122b-4d7e-b249-a2c313a9cf33,0,1,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,0,1,958033a6-2a8e-473a-903b-34eee6507f5a,958033a6-2a8e-473a-903b-34eee6507f5a,0,1,ac5f945e-2d03-44fb-a8cf-5d786194cefd,ac5f945e-2d03-44fb-a8cf-5d786194cefd,0,1,698ec00f-bf75-420e-81ab-a98808daf3f7,698ec00f-bf75-420e-81ab-a98808daf3f7,0,1,f441907c-d02e-431e-baf4-1854e48a1f50,f441907c-d02e-431e-baf4-1854e48a1f50,0,1,783dd4ba-a597-45ba-8989-2ed5224d62bc,783dd4ba-a597-45ba-8989-2ed5224d62bc,0,1,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,0,1,d9e08c12-1999-41d8-b530-90187303be0a,d9e08c12-1999-41d8-b530-90187303be0a,0,1,dad9710a-73ca-4e0d-b98b-75f955d0822d,dad9710a-73ca-4e0d-b98b-75f955d0822d,0,1,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,0,1,2191939f-6f71-47c9-a3d2-57acbf7f411e,2191939f-6f71-47c9-a3d2-57acbf7f411e,0,1,19b9cbbb-1fcc-4492-9385-687742cb3d0b,19b9cbbb-1fcc-4492-9385-687742cb3d0b,0,1,247c41dd-c8dc-43dd-b348-1ba31ee92065,247c41dd-c8dc-43dd-b348-1ba31ee92065,0,1,dbad3cee-0d5c-41f6-819f-1a2b5251b62c,dbad3cee-0d5c-41f6-819f-1a2b5251b62c,0,1,da673406-078d-44c8-9d27-80ef172c4b5e,da673406-078d-44c8-9d27-80ef172c4b5e,0,1,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,0,1,a2c36563-126d-4c3a-9714-5b7a4903073b,a2c36563-126d-4c3a-9714-5b7a4903073b,0,1,3a46c243-bdf5-4429-895a-edeae1c0396e,3a46c243-bdf5-4429-895a-edeae1c0396e,0,1,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,0,1,2976c29f-f482-463d-8f6e-6a632fb50893,2976c29f-f482-463d-8f6e-6a632fb50893,0,1,701964a1-7762-45ee-a9a4-41dd9ce94783,701964a1-7762-45ee-a9a4-41dd9ce94783,0,1,55d1909e-f552-441f-8e14-47d2e604cf6a,55d1909e-f552-441f-8e14-47d2e604cf6a,0,1,eae627db-c52b-4e41-94d1-58db28cd0063,eae627db-c52b-4e41-94d1-58db28cd0063,0,1,cafc86e1-d7f1-4cd2-ac20-04fa0917556a,cafc86e1-d7f1-4cd2-ac20-04fa0917556a,0,1,0a646724-b49d-42cd-82e6-e800466ed127,0a646724-b49d-42cd-82e6-e800466ed127,0,1,47058e36-a281-43a5-a41d-691b3ef32b5b,47058e36-a281-43a5-a41d-691b3ef32b5b,0,1,e620e93c-4382-478f-a700-ad2faa67362b,e620e93c-4382-478f-a700-ad2faa67362b,0,1,a4a8693b-dc91-4762-92e6-35360c8768db,a4a8693b-dc91-4762-92e6-35360c8768db,0,1,2ae236ec-28a7-44e0-a0ba-be62fe52d817,2ae236ec-28a7-44e0-a0ba-be62fe52d817,0,1,12cf9412-baf5-4d32-a563-a11ac3d5e0ed,12cf9412-baf5-4d32-a563-a11ac3d5e0ed,0,1,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,0,1,ed137e05-1996-411d-9927-45a3d7e3ee3b,ed137e05-1996-411d-9927-45a3d7e3ee3b,0,1,fbebf341-9842-41e1-8e4d-490fa02065ce,fbebf341-9842-41e1-8e4d-490fa02065ce,0,1,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,0,1,067f88f6-ccd2-491e-a466-94345a1f220f,067f88f6-ccd2-491e-a466-94345a1f220f,0,1,642154b8-97da-4c4f-bf34-c1124215077d,642154b8-97da-4c4f-bf34-c1124215077d,0,1,abc10867-39ae-46bf-8bd7-90f645919235,abc10867-39ae-46bf-8bd7-90f645919235,0,1,b3396504-8ccb-43d6-9a0f-ab259ba0a542,b3396504-8ccb-43d6-9a0f-ab259ba0a542,0,1,f59f91c5-026a-4dc5-996e-0d59814a9604,f59f91c5-026a-4dc5-996e-0d59814a9604,0,1,aac9966f-e9ea-4106-97bb-6b9822939bc7,aac9966f-e9ea-4106-97bb-6b9822939bc7,0,1,a752fba8-5084-4fa2-9d0b-7074a42b1312,a752fba8-5084-4fa2-9d0b-7074a42b1312,0,1,640d7486-8abd-40aa-a244-2ed899b7225a,640d7486-8abd-40aa-a244-2ed899b7225a,0,1,832fe1ae-ba81-44b2-9474-a29f36c3b863,832fe1ae-ba81-44b2-9474-a29f36c3b863,0,1,c05f87b4-ec5f-4d14-981f-02ca8ba89863,c05f87b4-ec5f-4d14-981f-02ca8ba89863,0,1,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,0,1,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,0,1,875d1fc1-8172-4e48-8192-035882e1665d,875d1fc1-8172-4e48-8192-035882e1665d,0,1,26132b28-98cc-4690-92ad-139f91839ba2,26132b28-98cc-4690-92ad-139f91839ba2,0,1,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0,1,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,0,1,ca81e0ea-c428-47f9-aedb-078214104a2f,ca81e0ea-c428-47f9-aedb-078214104a2f,0,1,9518d09c-6996-4439-9278-3c71d5ae8fce,9518d09c-6996-4439-9278-3c71d5ae8fce,0,1,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,0,1,5fbd9a13-012d-4c36-b72c-da3bc4157cff,5fbd9a13-012d-4c36-b72c-da3bc4157cff,0,1,6ae6e515-5cd4-4eca-8602-c6abe6d66276,6ae6e515-5cd4-4eca-8602-c6abe6d66276,0,1,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,0,1,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,0,1,35a28677-0653-47f9-82e1-02c4b9266fee,35a28677-0653-47f9-82e1-02c4b9266fee,0,1,2e17464f-9cef-4812-865f-4eb77ff16b6a,2e17464f-9cef-4812-865f-4eb77ff16b6a,0,1,e5ecbb1f-981d-4928-9335-22216879f7e2,e5ecbb1f-981d-4928-9335-22216879f7e2,0,1,259564b8-172e-4eed-9360-d561ec6dad69,259564b8-172e-4eed-9360-d561ec6dad69,0,1,461be12a-9f16-4826-978a-436608ca8733,461be12a-9f16-4826-978a-436608ca8733,0,1,9b143299-d300-4b6c-b667-5552fb3bdcde,9b143299-d300-4b6c-b667-5552fb3bdcde,0,1,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0,1,74973d06-f57d-403e-945c-5cd2f4fc4869,74973d06-f57d-403e-945c-5cd2f4fc4869,0,1,91c799d7-2b3d-4d1a-87ff-221057a428c6,91c799d7-2b3d-4d1a-87ff-221057a428c6,0,1,a50fcacc-6d2d-496c-bea0-9c73cd153437,a50fcacc-6d2d-496c-bea0-9c73cd153437,0,1,a6846c5a-7cf6-4df2-a159-2fd33d18d18f,a6846c5a-7cf6-4df2-a159-2fd33d18d18f,0,1,a5633248-8611-4e9b-b223-2f59e7b84a65,a5633248-8611-4e9b-b223-2f59e7b84a65,0,1,6ec3463a-1e94-4de7-a8c0-b0e42f38573e,6ec3463a-1e94-4de7-a8c0-b0e42f38573e,0,1,e40b8882-737a-40c0-83b4-c35dc042f4a5,e40b8882-737a-40c0-83b4-c35dc042f4a5,0,1,d60c1e9d-1395-4293-8462-6ea2c93a0c86,d60c1e9d-1395-4293-8462-6ea2c93a0c86,0,1,5a2d5d8a-afd9-4954-9868-7c82bad00426,5a2d5d8a-afd9-4954-9868-7c82bad00426,0,1,14fcf5e5-5856-4b5f-8c3f-75eaba0f7268,14fcf5e5-5856-4b5f-8c3f-75eaba0f7268,0,1,6ac7db0c-18ed-4d3b-956a-5985214db474,6ac7db0c-18ed-4d3b-956a-5985214db474,0,1,267103e0-6703-4a74-bb4f-af610d7ef332,267103e0-6703-4a74-bb4f-af610d7ef332,0,1,b98ca634-25a5-4366-af04-815ba34c8bb2,b98ca634-25a5-4366-af04-815ba34c8bb2,0,1,14d69108-4d26-401a-b7ae-2c86dadf831c,14d69108-4d26-401a-b7ae-2c86dadf831c,0,1,d6251f65-d366-4bc9-a5db-42063fe03594,d6251f65-d366-4bc9-a5db-42063fe03594,0,1,31dd320b-06aa-4314-9914-2c2420f572a1,31dd320b-06aa-4314-9914-2c2420f572a1,0,1,56730848-3bef-4b8c-b449-fe9d09c9c374,56730848-3bef-4b8c-b449-fe9d09c9c374,0,1,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,0,1,91d8c5e4-eaec-4951-9224-16882fda08f6,91d8c5e4-eaec-4951-9224-16882fda08f6,0,1,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,0,1,d4655391-144c-4ba6-aee5-1edafebe862c,d4655391-144c-4ba6-aee5-1edafebe862c,0,1,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,0,1,8ceea1e8-42ce-469f-823a-ceffdbd6b112,8ceea1e8-42ce-469f-823a-ceffdbd6b112,0,1,6995ee71-5901-46d9-a5c1-b35d795bda20,6995ee71-5901-46d9-a5c1-b35d795bda20,0,1,68caf9e5-9a79-4b77-b0f4-ca9c0fe4fa16,68caf9e5-9a79-4b77-b0f4-ca9c0fe4fa16,0,1,75c4e24f-b8d4-4b29-a9ce-e1d141c60fae,75c4e24f-b8d4-4b29-a9ce-e1d141c60fae,0,1,e93a4293-0497-4f11-b8b9-40300104fb96,e93a4293-0497-4f11-b8b9-40300104fb96,0,1,93531e5d-5dfc-42e8-be52-2e83f37262b0,93531e5d-5dfc-42e8-be52-2e83f37262b0,0,1,61bf78c0-7004-4a74-b362-e979c7316e05,61bf78c0-7004-4a74-b362-e979c7316e05,0,1,c4351896-eff1-4e4d-8823-028d63a9d6bf,c4351896-eff1-4e4d-8823-028d63a9d6bf,0,1,475f83a2-ba5a-4072-94f8-1324b1f198a4,475f83a2-ba5a-4072-94f8-1324b1f198a4,0,1,cd7c15c1-c573-46c9-b109-339b8b54c3ee,cd7c15c1-c573-46c9-b109-339b8b54c3ee,0,1,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,0,1,deee8bde-381f-4094-8794-7a06248860dd,deee8bde-381f-4094-8794-7a06248860dd,0,1,2757ee75-4b36-4901-bff1-044708754edb,2757ee75-4b36-4901-bff1-044708754edb,0,1,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0,1,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,0,1,71144539-6472-4727-8887-0139f6221370,71144539-6472-4727-8887-0139f6221370,0,1,bff07da4-ae19-48a9-806b-14b285d42485,bff07da4-ae19-48a9-806b-14b285d42485,0,1,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,0,1,b0ccc05d-8d39-4f57-8e87-6846014f92ea,b0ccc05d-8d39-4f57-8e87-6846014f92ea,0,1,aa368dd9-86e1-46f9-a296-591c3639734d,aa368dd9-86e1-46f9-a296-591c3639734d,0,1,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,0,1,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,0,1,066f9ab6-ff76-4426-bddd-702e9b16aa5b,066f9ab6-ff76-4426-bddd-702e9b16aa5b,0,1,0e2c2490-50ee-4fed-9119-5dec8385f925,0e2c2490-50ee-4fed-9119-5dec8385f925,0,1,8d60a95c-4035-473f-b1b1-2d52afa2e2d6,8d60a95c-4035-473f-b1b1-2d52afa2e2d6,0,1,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,0,1,8986c155-54be-4b1b-b31a-5c00b88bc40d,8986c155-54be-4b1b-b31a-5c00b88bc40d,0,1,d91441cf-d793-4dfa-9225-f0c16818edde,d91441cf-d793-4dfa-9225-f0c16818edde,0,1,42a39785-144c-4d2d-92c6-fd8b345f687b,42a39785-144c-4d2d-92c6-fd8b345f687b,0,1,f3bd841b-fb36-4462-9627-b51801e563cd,f3bd841b-fb36-4462-9627-b51801e563cd,0,1,a161dd07-4a6e-4d0f-b72c-702d0d3a83a3,a161dd07-4a6e-4d0f-b72c-702d0d3a83a3,0,1,a275802f-937a-49f4-92da-fcdd185a036d,a275802f-937a-49f4-92da-fcdd185a036d,0,1,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,0,1,f2dc9319-ba60-421a-8340-be3e3a291393,f2dc9319-ba60-421a-8340-be3e3a291393,0,1,bf4eb62a-bc74-4845-bad2-58a2a8302a65,bf4eb62a-bc74-4845-bad2-58a2a8302a65,0,1,b66eb190-1c16-4f20-a94f-954bcdf313b8,b66eb190-1c16-4f20-a94f-954bcdf313b8,0,1,c05f15b0-a659-4473-b6d0-acebc4a2da57,c05f15b0-a659-4473-b6d0-acebc4a2da57,0,1,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,0,1,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,0,1,b953eafc-20be-4463-8c3e-903184e18402,b953eafc-20be-4463-8c3e-903184e18402,0,1,dcefdde9-645e-43c7-9244-384dadc75439,dcefdde9-645e-43c7-9244-384dadc75439,0,1,bbdfeebd-cda0-4911-8f31-553d751340a7,bbdfeebd-cda0-4911-8f31-553d751340a7,0,1,dc7adfb7-41e7-4019-a18d-5d9f5d227b71,dc7adfb7-41e7-4019-a18d-5d9f5d227b71,0,1,20aad006-5b1e-4cc2-94ef-668dd002667b,20aad006-5b1e-4cc2-94ef-668dd002667b,0,1,af6af7ae-d68a-4e12-ba2c-a360ce2920a7,af6af7ae-d68a-4e12-ba2c-a360ce2920a7,0,1,b0f5bce4-2ad3-416e-9b1e-3fb23deaa040,b0f5bce4-2ad3-416e-9b1e-3fb23deaa040,0,1,ac2d4f02-e893-4366-9702-369a11c5f9b8,ac2d4f02-e893-4366-9702-369a11c5f9b8,0,1,2befb2e3-7354-4a01-83d6-b24262704a5e,2befb2e3-7354-4a01-83d6-b24262704a5e,0,1,ca75d086-cd01-4f54-b57d-1b35bcb1272a,ca75d086-cd01-4f54-b57d-1b35bcb1272a,0,1,b4a27991-2e18-4ead-80e8-f2956a7539e3,b4a27991-2e18-4ead-80e8-f2956a7539e3,0,1,be900d20-c02d-476d-9ede-2bc5303ef6cb,be900d20-c02d-476d-9ede-2bc5303ef6cb,0,1,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,0,1,07b53437-cc8d-4834-a1e0-7007538b6eab,07b53437-cc8d-4834-a1e0-7007538b6eab,0,1,0dbec644-cb98-4368-ab76-5997259cbce7,0dbec644-cb98-4368-ab76-5997259cbce7,0,1,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,0,1,dcdc9c65-c2d5-4531-a325-f64b3861cbab,dcdc9c65-c2d5-4531-a325-f64b3861cbab,0,1,ca542a9e-3040-419f-9a98-2a8de230b734,ca542a9e-3040-419f-9a98-2a8de230b734,0,1,c9fc5155-1df3-4872-a83d-72872baf43c4,c9fc5155-1df3-4872-a83d-72872baf43c4,0,1,9f9adb67-66bd-4c28-8319-44ae097ae1fe,9f9adb67-66bd-4c28-8319-44ae097ae1fe,0,1,0bae3704-b370-48be-b094-f18a2e62ad1b,0bae3704-b370-48be-b094-f18a2e62ad1b,0,1,e097bf94-9235-4a27-b0eb-d6387d22cd62,e097bf94-9235-4a27-b0eb-d6387d22cd62,0,1,4d243f2b-14d9-4e96-9707-4ead5d12e0a2,4d243f2b-14d9-4e96-9707-4ead5d12e0a2,0,1,8d2bfd40-f185-4eab-b374-872d49310eb2,8d2bfd40-f185-4eab-b374-872d49310eb2,0,1,523de426-e5a6-49e0-8144-c637f80d8ddd,523de426-e5a6-49e0-8144-c637f80d8ddd,0,1,05a6e161-9791-4c5b-8753-bd6370cc4cc9,05a6e161-9791-4c5b-8753-bd6370cc4cc9,0,1,6362facc-bf95-4adf-8ee7-c65f90972a1c,6362facc-bf95-4adf-8ee7-c65f90972a1c,0,1,08dbba81-68fb-49ef-8aac-9631fcfa87c6,08dbba81-68fb-49ef-8aac-9631fcfa87c6,0,1,8170a27d-45e9-48b1-860b-c2d9cc5961cd,8170a27d-45e9-48b1-860b-c2d9cc5961cd,0,1,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,0,1,e8c3b796-bfd8-4108-ab5f-d0f21b7bd9a6,e8c3b796-bfd8-4108-ab5f-d0f21b7bd9a6,0,1,f41d01ec-983a-4b39-9c11-a6d25d08df4f,f41d01ec-983a-4b39-9c11-a6d25d08df4f,0,1,3247e64e-b57e-4c33-8086-7ab93c5b6371,3247e64e-b57e-4c33-8086-7ab93c5b6371,0,1,e5dca369-dc9a-4332-a509-f734b8787e13,e5dca369-dc9a-4332-a509-f734b8787e13,0,1,ac78ccb4-6560-4daf-80e2-07df4d71a13e,ac78ccb4-6560-4daf-80e2-07df4d71a13e,0,1,722af623-156c-4e63-8b2a-93da760f1559,722af623-156c-4e63-8b2a-93da760f1559,0,1,1abeb10b-0558-4478-8f51-d0964ba3c274,1abeb10b-0558-4478-8f51-d0964ba3c274,0,1,38325a66-588a-4db0-8e0c-21d239408369,38325a66-588a-4db0-8e0c-21d239408369,0,1,7c27e885-33fd-4da2-a60d-50336c0189b0,7c27e885-33fd-4da2-a60d-50336c0189b0,0,1,4b849c66-6a36-4efd-815e-af4467c6f064,4b849c66-6a36-4efd-815e-af4467c6f064,0,1,f6939587-ff87-4eca-ae52-10e1bd2abfce,f6939587-ff87-4eca-ae52-10e1bd2abfce,0,1,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,0,1,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,0,1,3cb575a9-dc82-45e0-81f0-d651e12246da,3cb575a9-dc82-45e0-81f0-d651e12246da,0,1,b0d9086f-cef7-47a8-ad62-d85fea28ebda,b0d9086f-cef7-47a8-ad62-d85fea28ebda,0,1,68f6d1b2-9c08-4b37-ba23-1e15539a9c35,68f6d1b2-9c08-4b37-ba23-1e15539a9c35,0,1,cb6df70e-c7cd-4343-bfa9-5bdb907b4580,cb6df70e-c7cd-4343-bfa9-5bdb907b4580,0,1,49c010fc-f5cc-45f4-ba46-132e7661c3dd,49c010fc-f5cc-45f4-ba46-132e7661c3dd,0,1,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,0,1,2b3cab9a-fd05-42a8-811a-f443aee5e192,2b3cab9a-fd05-42a8-811a-f443aee5e192,0,1,2c02a558-8d12-44cf-be6b-9c399b9032e5,2c02a558-8d12-44cf-be6b-9c399b9032e5,0,1,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,0,1,6c58cc27-215e-4169-88ae-004ecc657d53,6c58cc27-215e-4169-88ae-004ecc657d53,0,1,9c267aa6-5f23-49f6-868a-3324ef2845ff,9c267aa6-5f23-49f6-868a-3324ef2845ff,0,1,495eeeee-d7bf-4063-99e2-86daa066451a,495eeeee-d7bf-4063-99e2-86daa066451a,0,1,b6184698-79e4-4c19-9440-092ccd9dabf8,b6184698-79e4-4c19-9440-092ccd9dabf8,0,1,7d01fc0c-378e-421d-ab70-6a418eed5941,7d01fc0c-378e-421d-ab70-6a418eed5941,0,1,6eeb4867-bf9d-48dc-b96b-934a0c293010,6eeb4867-bf9d-48dc-b96b-934a0c293010,0,1,e1803e54-ec5e-4a82-8097-5e2331820991,e1803e54-ec5e-4a82-8097-5e2331820991,0,1,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,0,1,8506dbe9-7066-444b-83b6-fb2d71a336e7,8506dbe9-7066-444b-83b6-fb2d71a336e7,0,1,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,0,1,6686d828-3129-4d44-a8a2-a64657d424cb,6686d828-3129-4d44-a8a2-a64657d424cb,0,1,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,0,1,ce235ab9-1dec-459a-9fec-498c262ece56,ce235ab9-1dec-459a-9fec-498c262ece56,0,1,9ec53d1a-ed7a-41e8-b5d0-6c2181fd63a5,9ec53d1a-ed7a-41e8-b5d0-6c2181fd63a5,0,1,39355e82-30a6-431e-9697-e2c42e82de83,39355e82-30a6-431e-9697-e2c42e82de83,0,1,a9ae364f-b668-4fb4-b976-f227951ffb6b,a9ae364f-b668-4fb4-b976-f227951ffb6b,0,1,edc01b03-8b01-4551-939a-f7e257892040,edc01b03-8b01-4551-939a-f7e257892040,0,1,15d09274-9508-4f64-9ea3-678c5aa50f0f,15d09274-9508-4f64-9ea3-678c5aa50f0f,0,1,4debe032-12e4-4777-b2fc-70b150f2aad1,4debe032-12e4-4777-b2fc-70b150f2aad1,0,1,37558fa2-0833-46d6-9e4f-63d4a3136870,37558fa2-0833-46d6-9e4f-63d4a3136870,0,1,d92cb614-ed09-47db-b70b-d3e533c44c6a,d92cb614-ed09-47db-b70b-d3e533c44c6a,0,1,361271fa-2faa-497d-adfe-dea8b825405e,361271fa-2faa-497d-adfe-dea8b825405e,0,1,5dceae8b-1ff3-4760-a1c4-975a92be1023,5dceae8b-1ff3-4760-a1c4-975a92be1023,0,1,e660c8bf-af5f-4525-a56e-68925d2b96fa,e660c8bf-af5f-4525-a56e-68925d2b96fa,0,1,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,0,1,528d96cc-8838-49ea-8d76-ea56747882e0,528d96cc-8838-49ea-8d76-ea56747882e0,0,1,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,0,1,086d69d6-e2fa-45cb-84b6-f8f3e2919160,086d69d6-e2fa-45cb-84b6-f8f3e2919160,0,1,4678c704-933a-45ef-9d41-89b8f39016bb,4678c704-933a-45ef-9d41-89b8f39016bb,0,1,1681dd7a-de80-4b8d-9657-c9702a19d653,1681dd7a-de80-4b8d-9657-c9702a19d653,0,1,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,0,1,9f593f27-8009-40c0-94d6-53f177ce55f4,9f593f27-8009-40c0-94d6-53f177ce55f4,0,1,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,0,1,530a3164-4ef1-4b3b-8269-13764ef4bf15,530a3164-4ef1-4b3b-8269-13764ef4bf15,0,1,6df2bb92-558c-4453-9de4-e4176e8f93dc,6df2bb92-558c-4453-9de4-e4176e8f93dc,0,1,0ce4c8a4-b20b-4550-bee3-f677e9ec64e9,0ce4c8a4-b20b-4550-bee3-f677e9ec64e9,0,1,30d5c2a6-b3cf-4ed5-ba75-850bcae932d1,30d5c2a6-b3cf-4ed5-ba75-850bcae932d1,0,1,0bf5e9c1-905a-4202-8b96-ed831b41be4b,0bf5e9c1-905a-4202-8b96-ed831b41be4b,0,1,e92ae368-0d7c-4fb7-b6d0-5ab63dc95a6a,e92ae368-0d7c-4fb7-b6d0-5ab63dc95a6a,0,1,f30c9c4b-aa6c-4b15-9ac7-888c0c0cabd9,f30c9c4b-aa6c-4b15-9ac7-888c0c0cabd9,0,1,be15e947-f671-4848-ada1-51239af73615,be15e947-f671-4848-ada1-51239af73615,0,1,d3e0dd8f-886a-4441-8f05-fd629da80f07,d3e0dd8f-886a-4441-8f05-fd629da80f07,0,1,6417d7c8-6436-4907-98eb-44cd7638f3f1,6417d7c8-6436-4907-98eb-44cd7638f3f1,0,1,2c04d747-c363-4218-92c9-5c83393e928b,2c04d747-c363-4218-92c9-5c83393e928b,0,1,ba49877b-6e30-4177-a67c-00e65aa498fb,ba49877b-6e30-4177-a67c-00e65aa498fb,0,1,25b39aeb-94c3-4199-9d56-5bd87e325bf2,25b39aeb-94c3-4199-9d56-5bd87e325bf2,0,1,2bd80198-4739-4e8f-9af1-40addc91a05b,2bd80198-4739-4e8f-9af1-40addc91a05b,0,1,e2c0bc7a-7197-4972-b703-a2356d2a36ad,e2c0bc7a-7197-4972-b703-a2356d2a36ad,0,1,33c66a15-e48e-406a-a77c-02af72ae96d5,33c66a15-e48e-406a-a77c-02af72ae96d5,0,1,593be64c-6792-46d9-8618-84c50c9ad9e4,593be64c-6792-46d9-8618-84c50c9ad9e4,0,1,208d29cb-040f-4282-b8e8-dda8417b8e92,208d29cb-040f-4282-b8e8-dda8417b8e92,0,1,9935d602-668e-4df9-a338-0f542def878b,9935d602-668e-4df9-a338-0f542def878b,0,1,459ed297-0c0d-4bdb-90a3-da387868f040,459ed297-0c0d-4bdb-90a3-da387868f040,0,1,ebce49ef-755a-4ace-aeb1-b99db2a8bf6c,ebce49ef-755a-4ace-aeb1-b99db2a8bf6c,0,1,0cd18f4c-aeb9-456b-9dcd-9649d1dd486b,0cd18f4c-aeb9-456b-9dcd-9649d1dd486b,0,1,3913f78f-ce34-4ae3-840a-ccdf06319cbb,3913f78f-ce34-4ae3-840a-ccdf06319cbb,0,1,104cf3e3-2104-4ac2-bdc6-792750a63ea0,104cf3e3-2104-4ac2-bdc6-792750a63ea0,0,1,c86aa97a-5898-4cb2-ae62-598bddf8e99f,c86aa97a-5898-4cb2-ae62-598bddf8e99f,0,1,d3c9b925-6b74-42db-8b21-ab21d24797d1,d3c9b925-6b74-42db-8b21-ab21d24797d1,0,1,4d348ec3-9de8-4f5b-960c-4b507d0fd7ce,4d348ec3-9de8-4f5b-960c-4b507d0fd7ce,0,1,39261a2d-7c46-40b1-9f8f-02d970aa04bc,39261a2d-7c46-40b1-9f8f-02d970aa04bc,0,1,3a07e5a5-2ab1-43ef-b97f-d45cd7775d67,3a07e5a5-2ab1-43ef-b97f-d45cd7775d67,0,1,124a516f-cdab-49ce-95d1-359921140342,124a516f-cdab-49ce-95d1-359921140342,0,1,c5033dd2-0911-4124-8688-dc9dabf3155f,c5033dd2-0911-4124-8688-dc9dabf3155f,0,1,274357df-cb5c-407d-ae72-58046c310db2,274357df-cb5c-407d-ae72-58046c310db2,0,1,a4e56049-4de9-40a3-8197-a5c84a11f516,a4e56049-4de9-40a3-8197-a5c84a11f516,0,1,339c9220-fd5b-45d3-b300-cdcc8788f87e,339c9220-fd5b-45d3-b300-cdcc8788f87e,0,1,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,0,1,9042a6de-5048-432d-a448-7e21f2d1d24a,9042a6de-5048-432d-a448-7e21f2d1d24a,0,1,350d46bf-114e-48e7-90c6-6708d949f20d,350d46bf-114e-48e7-90c6-6708d949f20d,0,1,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,0,1,aac20ff3-5873-432e-b763-14411e623d41,aac20ff3-5873-432e-b763-14411e623d41,0,1,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,0,1,6df44466-8750-481a-9baf-c924f0d45353,6df44466-8750-481a-9baf-c924f0d45353,0,1,110121eb-a0eb-4662-8911-3dcc3d341a73,110121eb-a0eb-4662-8911-3dcc3d341a73,0,1,f8980c18-6b9c-4e45-919a-22e976d2a846,f8980c18-6b9c-4e45-919a-22e976d2a846,0,1,c946efb7-c67e-49c1-bf56-d3c2d7220acd,c946efb7-c67e-49c1-bf56-d3c2d7220acd,0,1,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,0,1,6b7c9f74-f2b6-463e-acb9-9f82901986cf,6b7c9f74-f2b6-463e-acb9-9f82901986cf,0,1,fc4c1d64-132b-4687-a37d-05000fdb4ba5,fc4c1d64-132b-4687-a37d-05000fdb4ba5,0,1,528777cd-090b-4b70-82f5-56def98c5893,528777cd-090b-4b70-82f5-56def98c5893,0,1,49dbe467-8832-4ede-9a05-494248619aeb,49dbe467-8832-4ede-9a05-494248619aeb,0,1,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,0,1,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,0,1,09c73108-8528-4970-9b7f-fff9eda7816a,09c73108-8528-4970-9b7f-fff9eda7816a,0,1,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,0,1,f568245a-d158-45dc-af92-2d411f12db7b,f568245a-d158-45dc-af92-2d411f12db7b,0,1,0f17cdac-aa17-45e6-b3d0-220b13345390,0f17cdac-aa17-45e6-b3d0-220b13345390,0,1,c675db75-d0c3-4026-b97c-6b23ecbb336a,c675db75-d0c3-4026-b97c-6b23ecbb336a,0,1,469f67fa-98b0-44b0-abd4-cae136c02834,469f67fa-98b0-44b0-abd4-cae136c02834,0,1,16a18458-999c-420e-80df-8fc10855746c,16a18458-999c-420e-80df-8fc10855746c,0,1,b794f222-0fde-439f-97a3-0da74075b415,b794f222-0fde-439f-97a3-0da74075b415,0,1,3a716aad-9b2c-48a7-b802-80732066391b,3a716aad-9b2c-48a7-b802-80732066391b,0,1,480d959f-aac8-4241-875f-78e1c1f32621,480d959f-aac8-4241-875f-78e1c1f32621,0,1,496e5de8-d75c-4536-9993-75374f070b40,496e5de8-d75c-4536-9993-75374f070b40,0,1,b4e610ba-c9c8-4b25-903b-e567dcbc2556,b4e610ba-c9c8-4b25-903b-e567dcbc2556,0,1,48febdbd-a085-4113-8511-ed7ff6be7d3c,48febdbd-a085-4113-8511-ed7ff6be7d3c,0,1,49413232-c0c3-4983-9d10-291a0399281b,49413232-c0c3-4983-9d10-291a0399281b,0,1,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,0,1,b9b076bb-38ab-4a94-8226-41a4d4d7432c,b9b076bb-38ab-4a94-8226-41a4d4d7432c,0,1,e12da8db-4037-473e-ba2b-d0ceb4534dcb,e12da8db-4037-473e-ba2b-d0ceb4534dcb,0,1,789514e5-8ea3-4a5e-88c5-ed89c4135866,789514e5-8ea3-4a5e-88c5-ed89c4135866,0,1,a16768ff-6137-43d8-8784-4805ed83632a,a16768ff-6137-43d8-8784-4805ed83632a,0,1,61971286-9f94-4a27-aa34-e10848adb70a,61971286-9f94-4a27-aa34-e10848adb70a,0,1,1e75d143-3452-496e-a137-6d7f4c4ed019,1e75d143-3452-496e-a137-6d7f4c4ed019,0,1,e0619d14-c658-4eb5-841a-3a029de28be4,e0619d14-c658-4eb5-841a-3a029de28be4,0,1,99a3b660-7875-47f7-9c6c-c552e5673deb,99a3b660-7875-47f7-9c6c-c552e5673deb,0,1,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,0,1,41cbf934-ea54-41df-abf0-09f319d2e67a,41cbf934-ea54-41df-abf0-09f319d2e67a,0,1,47246084-a5f8-4d0f-b4e2-204c1b97483a,47246084-a5f8-4d0f-b4e2-204c1b97483a,0,1,e58233ec-6cfc-4a8b-9929-689fa69cdb07,e58233ec-6cfc-4a8b-9929-689fa69cdb07,0,1,3291a891-a47c-43ca-b088-aecd3867d38c,3291a891-a47c-43ca-b088-aecd3867d38c,0,1,56cde2b4-00f2-49ba-b407-16e241c17fd2,56cde2b4-00f2-49ba-b407-16e241c17fd2,0,1,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,0,1,219ed110-f2a0-41c1-ac5a-02301b248c54,219ed110-f2a0-41c1-ac5a-02301b248c54,0,1,1c722dfd-2b07-4985-9188-17353de24771,1c722dfd-2b07-4985-9188-17353de24771,0,1,1a630496-2cdd-4c89-a1aa-ed20545ad133,1a630496-2cdd-4c89-a1aa-ed20545ad133,0,1,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,0,1,b19cea0e-e57a-4969-8daf-f48d3d16705f,b19cea0e-e57a-4969-8daf-f48d3d16705f,0,1,d4059340-3361-4baa-ae48-ecbfb9800a2e,d4059340-3361-4baa-ae48-ecbfb9800a2e,0,1,f78f6c43-dd90-4117-acf7-ed5b951cb964,f78f6c43-dd90-4117-acf7-ed5b951cb964,0,1,8eebd519-4989-4784-82b8-39d77eebfb17,8eebd519-4989-4784-82b8-39d77eebfb17,0,1,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0,1,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,0,1,4527877b-5723-4aa5-8705-98174ac9c337,4527877b-5723-4aa5-8705-98174ac9c337,0,1,d6b21e7b-df57-4280-8c95-c269b5316018,d6b21e7b-df57-4280-8c95-c269b5316018,0,1,808c468b-6322-428d-ac6a-ccf2228b05b6,808c468b-6322-428d-ac6a-ccf2228b05b6,0,1,13664bb2-738f-4d18-b382-a7bcf8105a5a,13664bb2-738f-4d18-b382-a7bcf8105a5a,0,1,f3f56abe-9248-4555-bf99-29560eb4f9ee,f3f56abe-9248-4555-bf99-29560eb4f9ee,0,1,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0,1,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,0,1,3eb43a06-b32d-4904-8489-6264d0207623,3eb43a06-b32d-4904-8489-6264d0207623,0,1,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,0,1,18615fe1-cfee-4888-9c09-88d1c5db39eb,18615fe1-cfee-4888-9c09-88d1c5db39eb,0,1,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,0,1,087c83c0-75e7-476b-b7c6-5be55498a190,087c83c0-75e7-476b-b7c6-5be55498a190,0,1,ec5e5413-9e77-4929-83b8-6fee70688b28,ec5e5413-9e77-4929-83b8-6fee70688b28,0,1,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,0,1,8390c864-2b84-4c45-8583-cb4a4ab49168,8390c864-2b84-4c45-8583-cb4a4ab49168,0,1,1b2fefca-fef5-4319-90cc-325444cb63a6,1b2fefca-fef5-4319-90cc-325444cb63a6,0,1,34a128be-8fbb-4dd8-ac23-9f35041feb63,34a128be-8fbb-4dd8-ac23-9f35041feb63,0,1,baa31006-e0d6-496e-a60e-27b3dfd19397,baa31006-e0d6-496e-a60e-27b3dfd19397,0,1,3007d8ff-3942-45ed-bac5-8a6c40ca060c,3007d8ff-3942-45ed-bac5-8a6c40ca060c,0,1,8bfe1474-fd12-4744-a9ab-3383bfe766b3,8bfe1474-fd12-4744-a9ab-3383bfe766b3,0,1,3af97375-f776-4129-9521-b8d65d795db6,3af97375-f776-4129-9521-b8d65d795db6,0,1,0e98801b-a45b-44cb-a341-7e43d723f6ed,0e98801b-a45b-44cb-a341-7e43d723f6ed,0,1,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,0,1,103ac72d-c386-40ea-89d4-35798d064f1a,103ac72d-c386-40ea-89d4-35798d064f1a,0,1,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,0,1,d1fe15e9-8e5c-4819-85cd-24ab31409437,d1fe15e9-8e5c-4819-85cd-24ab31409437,0,1,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,0,1,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,0,1,74f68bda-17b1-4b3c-aa64-b1014300f9b5,74f68bda-17b1-4b3c-aa64-b1014300f9b5,0,1,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,0,1,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,0,1,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,0,1,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,0,1,47ee7d38-9fa9-458d-abee-e11270f79494,47ee7d38-9fa9-458d-abee-e11270f79494,0,1,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,0,1,076daecf-8fcb-496b-9f13-c4faa3a8a722,076daecf-8fcb-496b-9f13-c4faa3a8a722,0,1,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,0,1,296d7725-bdd3-4210-9db9-31de5711ea9b,296d7725-bdd3-4210-9db9-31de5711ea9b,0,1,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,0,1,1d05f89a-23dd-4d30-8786-abe8a9a39a40,1d05f89a-23dd-4d30-8786-abe8a9a39a40,0,1,245c2c6c-7b7f-4381-9304-1d7287a215fa,245c2c6c-7b7f-4381-9304-1d7287a215fa,0,1,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,0,1,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,0,1,8bb5be12-98df-4a38-bffe-432fb13d8101,8bb5be12-98df-4a38-bffe-432fb13d8101,0,1,94209023-ce88-401c-9aff-526fb7e43709,94209023-ce88-401c-9aff-526fb7e43709,0,1,22b99094-b52a-4244-ae91-53848d82560b,22b99094-b52a-4244-ae91-53848d82560b,0,1,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,0,1,b0002134-d5c9-4508-9f0e-97f92461b590,b0002134-d5c9-4508-9f0e-97f92461b590,0,1,1506ec71-cb38-4831-a29d-dac2c4deddda,1506ec71-cb38-4831-a29d-dac2c4deddda,0,1,e05fd82b-b77b-4b7f-b300-43653017f341,e05fd82b-b77b-4b7f-b300-43653017f341,0,1,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,0,1,f15a0526-c207-42fe-aed9-438ae0c4a4b8,f15a0526-c207-42fe-aed9-438ae0c4a4b8,0,1,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,0,1,8583cab0-0620-4346-96e0-bcac40981b8a,8583cab0-0620-4346-96e0-bcac40981b8a,0,1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,0,1,095990b1-187b-400c-941a-275f272239ca,095990b1-187b-400c-941a-275f272239ca,0,1,ba108470-350d-40c3-bb44-9852c2aa8c97,ba108470-350d-40c3-bb44-9852c2aa8c97,0,1,a37c33fa-64b0-4a1b-846a-0a236bad44f8,a37c33fa-64b0-4a1b-846a-0a236bad44f8,0,1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,0,1,a50f4324-da44-449b-b500-74228b2aa7e0,a50f4324-da44-449b-b500-74228b2aa7e0,0,1,04236716-9c36-4a1d-b4fb-4b8c65644ab4,04236716-9c36-4a1d-b4fb-4b8c65644ab4,0,1,97276702-6686-4ac4-8360-d85369a08b20,97276702-6686-4ac4-8360-d85369a08b20,0,1,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,0,1,068883fe-d7ae-40e7-ad82-864867916daa,068883fe-d7ae-40e7-ad82-864867916daa,0,1,c1b02568-2095-4f83-8543-2402f67dbe3d,c1b02568-2095-4f83-8543-2402f67dbe3d,0,1,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,0,1,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,0,1,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,0,1,aecbd726-6952-49e6-b544-4c5cc764c24c,aecbd726-6952-49e6-b544-4c5cc764c24c,0,1,d335cfbf-bc78-4274-a178-10f60372474a,d335cfbf-bc78-4274-a178-10f60372474a,0,1,0f4411b3-addf-4fcf-8da8-c5140dea356c,0f4411b3-addf-4fcf-8da8-c5140dea356c,0,1,c501f9ab-d01b-4137-8cd0-e66103117c84,c501f9ab-d01b-4137-8cd0-e66103117c84,0,1,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,0,1,66e65355-1424-4c74-801c-faf5357257aa,66e65355-1424-4c74-801c-faf5357257aa,0,1,0a93187b-7ae4-4985-8089-3099dfec2b48,0a93187b-7ae4-4985-8089-3099dfec2b48,0,1,044458f3-ed9b-4afb-ae73-8f9162c032bf,044458f3-ed9b-4afb-ae73-8f9162c032bf,0,1,578f618e-5f4a-4e86-959d-39b59e973936,578f618e-5f4a-4e86-959d-39b59e973936,0,1,f74ede2e-2d28-4224-ba44-773eda7760a4,f74ede2e-2d28-4224-ba44-773eda7760a4,0,1,217df06a-1bdf-4394-b617-ed756ff17bc6,217df06a-1bdf-4394-b617-ed756ff17bc6,0,1,a1572e97-a487-497a-9062-49315e237e0f,a1572e97-a487-497a-9062-49315e237e0f,0,1,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,0,1,3c5d87a0-cfce-464a-b946-64c5a589a376,3c5d87a0-cfce-464a-b946-64c5a589a376,0,1,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,0,1,763de8d1-7f53-41b6-8d97-7da724e9f763,763de8d1-7f53-41b6-8d97-7da724e9f763,0,1,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,0,1,4ad59c75-cca4-4968-82e6-babd72d8b318,4ad59c75-cca4-4968-82e6-babd72d8b318,0,1,c248de15-63a2-48ec-8695-7a5213d4fc9b,c248de15-63a2-48ec-8695-7a5213d4fc9b,0,1,272ff0f9-7266-4c22-be12-fe62682b56a5,272ff0f9-7266-4c22-be12-fe62682b56a5,0,1,9f141dd5-d866-4c25-b58a-a7766a08b4e7,9f141dd5-d866-4c25-b58a-a7766a08b4e7,0,1,0570d846-889d-4cfc-98fb-a1ad0181597f,0570d846-889d-4cfc-98fb-a1ad0181597f,0,1,19e17c58-953f-4917-8b6a-c88808fcca36,19e17c58-953f-4917-8b6a-c88808fcca36,0,1,4804316d-3765-4a83-8438-10e8e82656db,4804316d-3765-4a83-8438-10e8e82656db,0,1,59458556-e343-4215-8e6c-69f924ec4183,59458556-e343-4215-8e6c-69f924ec4183,0,1,dd553dca-7eba-41bf-8939-2c61e170ff65,dd553dca-7eba-41bf-8939-2c61e170ff65,0,1,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,0,1,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,0,1,8099e978-28cc-4ade-ac5a-3785f3a45f70,8099e978-28cc-4ade-ac5a-3785f3a45f70,0,1,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,0,1,fe023ca5-f11a-4b98-99c1-363508e4ea4a,fe023ca5-f11a-4b98-99c1-363508e4ea4a,0,1,6f8d515e-13d9-45f8-9793-3757f5b85f81,6f8d515e-13d9-45f8-9793-3757f5b85f81,0,1,25ec541c-c437-4318-b2a8-5146df6ae080,25ec541c-c437-4318-b2a8-5146df6ae080,0,1,148754ed-3063-40a7-a3c3-8ad105552370,148754ed-3063-40a7-a3c3-8ad105552370,0,1,ab3f0862-c355-4fd7-a2a7-4eb8278de510,ab3f0862-c355-4fd7-a2a7-4eb8278de510,0,1,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,0,1,c12c3f3b-3a96-4e70-b131-8d7bd765095f,c12c3f3b-3a96-4e70-b131-8d7bd765095f,0,1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,0,1,c563588c-346e-499e-ae33-9ff3cb62e658,c563588c-346e-499e-ae33-9ff3cb62e658,0,1,40dbc001-97b6-4188-8de9-3adac670bac4,40dbc001-97b6-4188-8de9-3adac670bac4,0,1,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,0,1,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,0,1,93aa5247-6823-4f70-9d47-e5a0f409828a,93aa5247-6823-4f70-9d47-e5a0f409828a,0,1,030c6a22-a3d5-4cf2-9f7b-dc4fe3732f83,030c6a22-a3d5-4cf2-9f7b-dc4fe3732f83,0,1,b19f1223-5ebe-4446-bacc-bc7d53486f2e,b19f1223-5ebe-4446-bacc-bc7d53486f2e,0,1,6ea7e8e9-0faa-43fd-b9c8-1a7b8f899d6d,6ea7e8e9-0faa-43fd-b9c8-1a7b8f899d6d,0,1,7be1decf-feb1-422b-a3f2-f60d08fdb0e6,7be1decf-feb1-422b-a3f2-f60d08fdb0e6,0,1,bf3167d6-3047-482a-b280-184f446ae7a3,bf3167d6-3047-482a-b280-184f446ae7a3,0,1,50c47c0a-a199-4020-9df4-91b17c159454,50c47c0a-a199-4020-9df4-91b17c159454,0,1,c1d449af-8a6e-4cb0-b2c9-50ea5405c44c,c1d449af-8a6e-4cb0-b2c9-50ea5405c44c,0,1,faecdc33-fed8-4b44-96f4-4215c26959b6,faecdc33-fed8-4b44-96f4-4215c26959b6,0,1,09c29992-47a8-4fca-bd95-e7dbc53e8c4c,09c29992-47a8-4fca-bd95-e7dbc53e8c4c,0,1,f07cf7bd-6f3f-426a-8b71-ba1dcb827654,f07cf7bd-6f3f-426a-8b71-ba1dcb827654,0,1,9df3792e-a4ee-4a2c-9296-c1384925521e,9df3792e-a4ee-4a2c-9296-c1384925521e,0,1,03d423db-f98a-468f-9040-5b76454e5a98,03d423db-f98a-468f-9040-5b76454e5a98,0,1,08f394f9-d254-4fe5-8651-a69c96de7a62,08f394f9-d254-4fe5-8651-a69c96de7a62,0,1,e90ec54b-8b86-43df-8c3c-18c6676bf3f1,e90ec54b-8b86-43df-8c3c-18c6676bf3f1,0,1,6aff6b2f-660b-4d75-9064-fed7a6b0feac,6aff6b2f-660b-4d75-9064-fed7a6b0feac,0,1,53502127-9f47-4e2e-b3ed-eb3c3aae1c50,53502127-9f47-4e2e-b3ed-eb3c3aae1c50,0,1,2fcdd0b5-b738-4e19-8bbf-13a72d7014ec,2fcdd0b5-b738-4e19-8bbf-13a72d7014ec,0,1,59dc7e8d-6f5c-4e1b-816e-5fc15c0e96e0,59dc7e8d-6f5c-4e1b-816e-5fc15c0e96e0,0,1,e60a9221-7676-456f-8a01-b317b03a278b,e60a9221-7676-456f-8a01-b317b03a278b,0,1,4e81ec90-f668-49ca-9193-22337bafb01b,4e81ec90-f668-49ca-9193-22337bafb01b,0,1,104c7c31-5bbd-4242-b29a-2c0d8b69a1b9,104c7c31-5bbd-4242-b29a-2c0d8b69a1b9,0,1,cd60adec-52d6-4fa8-85ca-26551196432c,cd60adec-52d6-4fa8-85ca-26551196432c,0,1,4dfbabd7-d5e5-4b2a-b8d1-752e416629a0,4dfbabd7-d5e5-4b2a-b8d1-752e416629a0,0,1,b71ddbdb-08bb-46be-a79d-319c4a557e76,b71ddbdb-08bb-46be-a79d-319c4a557e76,0,1,d3dfa867-3d52-4872-a69e-f27636abe1bd,d3dfa867-3d52-4872-a69e-f27636abe1bd,0,1,6952d1aa-7132-4e40-8542-f64a4dc1e029,6952d1aa-7132-4e40-8542-f64a4dc1e029,0,1,51a1bc4c-9139-42a4-92c3-f45c837cbdb9,51a1bc4c-9139-42a4-92c3-f45c837cbdb9,0,1,1621811b-dfd3-4c58-8e15-ced16690147a,1621811b-dfd3-4c58-8e15-ced16690147a,0,1,3f266e51-0476-4b7f-8d61-6f9f4456049d,3f266e51-0476-4b7f-8d61-6f9f4456049d,0,1,2b9ce591-ff13-4c2d-85c4-632a2609a211,2b9ce591-ff13-4c2d-85c4-632a2609a211,0,1,689ca0ec-61ce-4590-b73b-ac81e8f1d459,689ca0ec-61ce-4590-b73b-ac81e8f1d459,0,1,3ea1895f-66d0-4bbb-a66b-0c9d411a7c55,3ea1895f-66d0-4bbb-a66b-0c9d411a7c55,0,1,55ad36d7-399e-4b82-8d1c-d45bd890abfe,55ad36d7-399e-4b82-8d1c-d45bd890abfe,0,1,0f3b9012-7bf6-4451-b0c3-139d98d9c2c1,0f3b9012-7bf6-4451-b0c3-139d98d9c2c1,0,1,1b39a65f-5425-4bcb-85bd-1425274af8a8,1b39a65f-5425-4bcb-85bd-1425274af8a8,0,1,392a0618-a41a-4713-a561-f3a80b85abd8,392a0618-a41a-4713-a561-f3a80b85abd8,0,1,a453384d-658d-40f1-ac69-578aa3a24e39,a453384d-658d-40f1-ac69-578aa3a24e39,0,1,2215a441-b9b1-4e5c-8df3-e6cee9226c43,2215a441-b9b1-4e5c-8df3-e6cee9226c43,0,1,2a8d4908-ea0d-4837-be3f-bd78f6b61254,2a8d4908-ea0d-4837-be3f-bd78f6b61254,0,1,ec1deb79-7369-4b26-8e91-f51399e8052a,ec1deb79-7369-4b26-8e91-f51399e8052a,0,1,75dde4fb-3a1a-450c-95c2-c1f95a781db9,75dde4fb-3a1a-450c-95c2-c1f95a781db9,0,1,0ae3ac56-160a-417e-9952-719d02e7f089,0ae3ac56-160a-417e-9952-719d02e7f089,0,1,f5b3983d-d22d-44a8-9069-0a60d8b858bf,f5b3983d-d22d-44a8-9069-0a60d8b858bf,0,1,48659b94-ace8-45f4-a043-6b2731ec6925,48659b94-ace8-45f4-a043-6b2731ec6925,0,1,3a8e60f9-19cb-42a6-a448-ad211261d9b8,3a8e60f9-19cb-42a6-a448-ad211261d9b8,0,1,74320602-094a-4645-b2c9-3053377a3ac3,74320602-094a-4645-b2c9-3053377a3ac3,0,1,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,0,1,b066c732-9c5f-4504-894f-96d457b0768f,b066c732-9c5f-4504-894f-96d457b0768f,0,1,9366463d-aa8a-4e89-86d8-c7f746f9551b,9366463d-aa8a-4e89-86d8-c7f746f9551b,0,1,e25da569-d435-45b2-b4e8-fc76d7f1c8df,e25da569-d435-45b2-b4e8-fc76d7f1c8df,0,1,a51a7f57-9c52-4457-819c-13e1b6f886e1,a51a7f57-9c52-4457-819c-13e1b6f886e1,0,1,7d08daba-5e36-4ce3-8a70-17750959b89e,7d08daba-5e36-4ce3-8a70-17750959b89e,0,1,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,0,1,39344a8c-2662-48ff-937b-12951bb268fb,39344a8c-2662-48ff-937b-12951bb268fb,0,1,b577663f-ead2-4b18-a4f6-f7f303e89319,b577663f-ead2-4b18-a4f6-f7f303e89319,0,1,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,0,1,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,0,1,72663843-4010-42ed-989b-0b58bf9f7146,72663843-4010-42ed-989b-0b58bf9f7146,0,1,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,0,1,3adcceea-867e-4b88-a633-4f8d4ccb43c0,3adcceea-867e-4b88-a633-4f8d4ccb43c0,0,1,a132189c-6584-4bb1-9cfd-1415cd83228a,a132189c-6584-4bb1-9cfd-1415cd83228a,0,1,7ba50e13-0a78-4cca-821f-006b1c83b0b0,7ba50e13-0a78-4cca-821f-006b1c83b0b0,0,1,a3670f95-5abe-49ee-8ea5-d7e4438801ba,a3670f95-5abe-49ee-8ea5-d7e4438801ba,0,1,4443dea1-5143-4e76-97a7-c35dbe1665e4,4443dea1-5143-4e76-97a7-c35dbe1665e4,0,1,0d780521-0767-425a-b44d-315d2dc42d04,0d780521-0767-425a-b44d-315d2dc42d04,0,1,c5b1572d-28f5-42f3-b2e0-8b54f091642e,c5b1572d-28f5-42f3-b2e0-8b54f091642e,0,1,0986c1b6-b677-428d-b49f-a93e40e77171,0986c1b6-b677-428d-b49f-a93e40e77171,0,1,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,0,1,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,0,1,b6662b2e-7e93-4eaa-9e4b-b5647285932b,b6662b2e-7e93-4eaa-9e4b-b5647285932b,0,1,4a180f2c-dc54-4591-8f62-f236d1e07799,4a180f2c-dc54-4591-8f62-f236d1e07799,0,1,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,0,1,7572095f-d755-4929-8862-071b1c34f758,7572095f-d755-4929-8862-071b1c34f758,0,1,4e36184e-d818-4f38-9257-6d91d9cc85ae,4e36184e-d818-4f38-9257-6d91d9cc85ae,0,1,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,0,1,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,0,1,3893a258-a9c7-441a-b80c-1cc8c3f4735c,3893a258-a9c7-441a-b80c-1cc8c3f4735c,0,1,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,0,1,c66d0377-45bb-4ef0-bf9b-b44a9c510d38,c66d0377-45bb-4ef0-bf9b-b44a9c510d38,0,1,420748d8-4042-4e1e-aca1-ac0190cdf54e,420748d8-4042-4e1e-aca1-ac0190cdf54e,0,1,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,0,1,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,0,1,f8a456fa-a533-444c-a504-0e74306ada44,f8a456fa-a533-444c-a504-0e74306ada44,0,1,4751a91a-f211-4f66-8238-9bb5668cbc67,4751a91a-f211-4f66-8238-9bb5668cbc67,0,1,f1381abc-e09f-407d-b6b5-c59e7c9e2fd7,f1381abc-e09f-407d-b6b5-c59e7c9e2fd7,0,1,e6c871d6-e06f-420b-ae04-dbf735d3233d,e6c871d6-e06f-420b-ae04-dbf735d3233d,0,1,b9a6b053-2b93-4946-9531-040d3131dcc5,b9a6b053-2b93-4946-9531-040d3131dcc5,0,1,6287eded-23d8-4b04-8415-1d9afa17713b,6287eded-23d8-4b04-8415-1d9afa17713b,0,1,8ce3513d-d086-46f4-81c3-1761594a64c5,8ce3513d-d086-46f4-81c3-1761594a64c5,0,1,79cb147c-8c6b-4f6e-8d5d-dfa29a6e6e53,79cb147c-8c6b-4f6e-8d5d-dfa29a6e6e53,0,1,704f07f2-0513-4a54-bb41-27ca3deb5834,704f07f2-0513-4a54-bb41-27ca3deb5834,0,1,0504ea28-d8ed-43ac-afa5-c3f32c21b385,0504ea28-d8ed-43ac-afa5-c3f32c21b385,0,1,e9c632b0-7977-4e44-ac56-882617ad7cdc,e9c632b0-7977-4e44-ac56-882617ad7cdc,0,1,e84acba7-7e0f-43e8-a545-6e53d529d5d4,e84acba7-7e0f-43e8-a545-6e53d529d5d4,0,1,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,0,1,6086d53f-f1b2-4126-ab46-64705fe63b87,6086d53f-f1b2-4126-ab46-64705fe63b87,0,1,9295d88f-0865-440c-a98a-4710c50211be,9295d88f-0865-440c-a98a-4710c50211be,0,1,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,0,1,38ac9a13-665a-4201-b5cc-687fe4a01130,38ac9a13-665a-4201-b5cc-687fe4a01130,0,1,97c59096-b2dc-45d0-a580-b3018a04f9af,97c59096-b2dc-45d0-a580-b3018a04f9af,0,1,6fbf63b7-1692-495e-a8ec-bdda182997a3,6fbf63b7-1692-495e-a8ec-bdda182997a3,0,1,8172256e-f51e-4de0-bd07-3668785f4cb9,8172256e-f51e-4de0-bd07-3668785f4cb9,0,1,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,0,1,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,0,1,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,0,1,c172aeaf-b444-47c0-baee-80ccd91fe934,c172aeaf-b444-47c0-baee-80ccd91fe934,0,1,b8c36d5a-7966-4978-9225-67502b9c60a4,b8c36d5a-7966-4978-9225-67502b9c60a4,0,1,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,0,1,bb6e6574-4328-4cf5-a043-a7d8f6c81414,bb6e6574-4328-4cf5-a043-a7d8f6c81414,0,1,b46b5090-5eb1-4950-9031-8b43f611fa9c,b46b5090-5eb1-4950-9031-8b43f611fa9c,0,1,94e02f76-8656-4999-9470-dd996118400c,94e02f76-8656-4999-9470-dd996118400c,0,1,9effd265-3783-44e2-8698-80dd82137546,9effd265-3783-44e2-8698-80dd82137546,0,1,bef52020-98f8-465b-8981-e5f8eed62308,bef52020-98f8-465b-8981-e5f8eed62308,0,1,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,0,1,e731dab7-df9e-48ae-8542-4c0c30666ae9,e731dab7-df9e-48ae-8542-4c0c30666ae9,0,1,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0,1,bde05768-2dd6-4800-985d-27075f610cca,bde05768-2dd6-4800-985d-27075f610cca,0,1,d18956cf-e449-48cc-a127-01b5dc910ea2,d18956cf-e449-48cc-a127-01b5dc910ea2,0,1,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,0,1,e352fc19-96be-4410-a516-bc58cc234422,e352fc19-96be-4410-a516-bc58cc234422,0,1,9b742da4-1696-4c06-9dfa-dd85c9286c74,9b742da4-1696-4c06-9dfa-dd85c9286c74,0,1,757ea742-8c14-4e0a-a867-432eee5cfc64,757ea742-8c14-4e0a-a867-432eee5cfc64,0,1,db1062bc-4164-4095-9640-9804c0ebcd0b,db1062bc-4164-4095-9640-9804c0ebcd0b,0,1,ea7c61ff-745c-4908-9a94-bba022d12de4,ea7c61ff-745c-4908-9a94-bba022d12de4,0,1,4d6683a3-1edd-4d04-8e02-0be002e4e5a4,4d6683a3-1edd-4d04-8e02-0be002e4e5a4,0,1,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,0,1,53caada5-1d53-45dc-9432-90075ddca890,53caada5-1d53-45dc-9432-90075ddca890,0,1,d1472d23-954b-4069-b2d6-df08c6ec0be1,d1472d23-954b-4069-b2d6-df08c6ec0be1,0,1,93fe2ce6-7193-42bc-a966-4653b7989eaa,93fe2ce6-7193-42bc-a966-4653b7989eaa,0,1,a7fe0aa5-722c-4a09-889b-ee422421addc,a7fe0aa5-722c-4a09-889b-ee422421addc,0,1,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,0,1,0c838a31-2b08-447c-b39a-a613cfba526c,0c838a31-2b08-447c-b39a-a613cfba526c,0,1,b25083c5-9b97-49a4-b6c3-bbf8d7f91cd3,b25083c5-9b97-49a4-b6c3-bbf8d7f91cd3,0,1,3bc2ca38-4a10-4ebd-a5dc-3418db494f0c,3bc2ca38-4a10-4ebd-a5dc-3418db494f0c,0,1,e1314cd1-e662-4c29-ad51-492cb0029883,e1314cd1-e662-4c29-ad51-492cb0029883,0,1,879844f0-30b4-47f5-8d2e-5fea29910368,879844f0-30b4-47f5-8d2e-5fea29910368,0,1,9bc09758-a7ce-44e0-baa3-a3e909869d9b,9bc09758-a7ce-44e0-baa3-a3e909869d9b,0,1,303334ba-2785-47fe-a094-84f9dea33be2,303334ba-2785-47fe-a094-84f9dea33be2,0,1,9690842c-7a2c-4b5d-a238-f730afc49a7b,9690842c-7a2c-4b5d-a238-f730afc49a7b,0,1,04424730-6992-4a5b-838b-7a7c16dedbd0,04424730-6992-4a5b-838b-7a7c16dedbd0,0,1,240bec31-cd59-477b-8459-8e3278da22dc,240bec31-cd59-477b-8459-8e3278da22dc,0,1,e0519f0c-9c99-4f5c-a3a9-27adce45737d,e0519f0c-9c99-4f5c-a3a9-27adce45737d,0,1,554320a0-55dc-4289-bb08-63d405cb4ca5,554320a0-55dc-4289-bb08-63d405cb4ca5,0,1,0874a3c0-0d16-4172-b467-f0666d5fcaee,0874a3c0-0d16-4172-b467-f0666d5fcaee,0,1,cc380a19-ab29-4f20-93ad-9a58cd4de56e,cc380a19-ab29-4f20-93ad-9a58cd4de56e,0,1,6a5f7521-270e-476e-88ec-a8cf79ea61a6,6a5f7521-270e-476e-88ec-a8cf79ea61a6,0,1,e54a8786-86a4-48e3-a210-aaae4e5fce8c,e54a8786-86a4-48e3-a210-aaae4e5fce8c,0,1,86c86ea2-d14e-4443-b36c-c1c17c4f768a,86c86ea2-d14e-4443-b36c-c1c17c4f768a,0,1,14512818-58b0-44cc-b00d-d37913c57aad,14512818-58b0-44cc-b00d-d37913c57aad,0,1,57964dd6-4b0b-4590-bc44-de744cc423af,57964dd6-4b0b-4590-bc44-de744cc423af,0,1,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,0,1,46e0522b-b88b-43b2-9067-a5359e90994b,46e0522b-b88b-43b2-9067-a5359e90994b,0,1,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,0,1,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,0,1,72d41d01-9c9d-4fbe-8a39-932d82d171ef,72d41d01-9c9d-4fbe-8a39-932d82d171ef,0,1,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,0,1,697d5715-dd04-40be-9b28-539734725158,697d5715-dd04-40be-9b28-539734725158,0,1,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,0,1,d95fcb37-fc65-466d-93e2-489f41683276,d95fcb37-fc65-466d-93e2-489f41683276,0,1,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,0,1,a27a9296-46bb-49a1-8308-db675baa81d0,a27a9296-46bb-49a1-8308-db675baa81d0,0,1,1456f317-360c-4190-b2d1-1be7484369a5,1456f317-360c-4190-b2d1-1be7484369a5,0,1,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,0,1,4867948f-b027-44ae-b78c-a94e00eed52b,4867948f-b027-44ae-b78c-a94e00eed52b,0,1,39ed5463-b1c0-44bb-9d71-4ef08007a7d0,39ed5463-b1c0-44bb-9d71-4ef08007a7d0,0,1,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,0,1,56cc2ba7-fee3-4dcb-9a2a-93dc94a5ee1f,56cc2ba7-fee3-4dcb-9a2a-93dc94a5ee1f,0,1,ef044879-e731-418a-b917-6a685f27c5f4,ef044879-e731-418a-b917-6a685f27c5f4,0,1,f0ffe529-481f-4eed-8fc8-02a9d8f08f7a,f0ffe529-481f-4eed-8fc8-02a9d8f08f7a,0,1,618d13d5-fd1f-4b70-ad45-dd6a17a50730,618d13d5-fd1f-4b70-ad45-dd6a17a50730,0,1,58037b76-b548-4f07-bd67-67e552a5c6e5,58037b76-b548-4f07-bd67-67e552a5c6e5,0,1,68f19104-5fa3-4f28-a84b-bf68c3bed49b,68f19104-5fa3-4f28-a84b-bf68c3bed49b,0,1,f88ccd7a-8d15-4b24-addf-da522a0b4a43,f88ccd7a-8d15-4b24-addf-da522a0b4a43,0,1,349378d1-abe3-44de-84a4-d525b08e0474,349378d1-abe3-44de-84a4-d525b08e0474,0,1,1526b18d-7fab-414e-a5b2-377b67ac0b55,1526b18d-7fab-414e-a5b2-377b67ac0b55,0,1,c561fe6b-53ea-435b-a230-1850e2dc1ff5,c561fe6b-53ea-435b-a230-1850e2dc1ff5,0,1,aba7605f-6baf-42a8-b5ad-8f71c780b81f,aba7605f-6baf-42a8-b5ad-8f71c780b81f,0,1,8fc19eca-1a15-4758-af4b-79637e51edfb,8fc19eca-1a15-4758-af4b-79637e51edfb,0,1,be9144ce-5560-47bb-8c5e-9beefd15bfc3,be9144ce-5560-47bb-8c5e-9beefd15bfc3,0,1,ad09d1e6-5982-4e1c-864e-452ac5b2915a,ad09d1e6-5982-4e1c-864e-452ac5b2915a,0,1,caea53be-d2f7-4109-8017-d2bfdfde8c6f,caea53be-d2f7-4109-8017-d2bfdfde8c6f,0,1,60f30706-9919-4767-a17c-660754b9d542,60f30706-9919-4767-a17c-660754b9d542,0,1,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,0,1,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0,1,28dc34df-1daa-49a2-a12e-db91ee963459,28dc34df-1daa-49a2-a12e-db91ee963459,0,1,e590825f-10c6-4fdd-98cd-3da01da2ed4f,e590825f-10c6-4fdd-98cd-3da01da2ed4f,0,1,2233ce53-b8a8-4c83-97a2-683c8575462a,2233ce53-b8a8-4c83-97a2-683c8575462a,0,1,2071f210-dc13-43c0-a58e-b982821d6842,2071f210-dc13-43c0-a58e-b982821d6842,0,1,3cda70d0-3116-4508-82ea-5ea0f0921262,3cda70d0-3116-4508-82ea-5ea0f0921262,0,1,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,0,1,c2ef8d6b-de7b-430d-ac30-76cdaf0579c2,c2ef8d6b-de7b-430d-ac30-76cdaf0579c2,0,1,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0,1,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,0,1,19056365-9ff1-4733-876e-a7ebdbbe0557,19056365-9ff1-4733-876e-a7ebdbbe0557,0,1,5e09dc5e-bbb7-4c38-b609-940c24f63c84,5e09dc5e-bbb7-4c38-b609-940c24f63c84,0,1,017b28eb-8ba9-465e-a748-20eadbeb4ea2,017b28eb-8ba9-465e-a748-20eadbeb4ea2,0,1,c0bb2d66-94c9-4bc6-afd5-534075e8395b,c0bb2d66-94c9-4bc6-afd5-534075e8395b,0,1,db7cc693-1645-4416-a9d9-5a7584cd3bbc,db7cc693-1645-4416-a9d9-5a7584cd3bbc,0,1,c849fb09-7833-49c8-9461-98426dc6c0af,c849fb09-7833-49c8-9461-98426dc6c0af,0,1,6c58fc3a-37f8-44b7-b076-2c10ce09b554,6c58fc3a-37f8-44b7-b076-2c10ce09b554,0,1,8ca0258c-96d8-4a12-b94f-db968195ee0a,8ca0258c-96d8-4a12-b94f-db968195ee0a,0,1,245c07a9-98b0-452b-b899-dc8751ab7ce0,245c07a9-98b0-452b-b899-dc8751ab7ce0,0,1,75ffd0b9-79be-4600-a310-591fddb6d63e,75ffd0b9-79be-4600-a310-591fddb6d63e,0,1,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,0,1,b4b8dd52-0cc4-4c69-9ec7-f06f2d79586b,b4b8dd52-0cc4-4c69-9ec7-f06f2d79586b,0,1,4e550d28-7174-412b-bfed-559a3dc753f6,4e550d28-7174-412b-bfed-559a3dc753f6,0,1,47da49ee-b243-4e78-9c8f-bb26c60e6136,47da49ee-b243-4e78-9c8f-bb26c60e6136,0,1,39bee714-cacd-4d48-97a5-c838660e049a,39bee714-cacd-4d48-97a5-c838660e049a,0,1,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,0,1,4aac940e-334b-42d2-bff1-0db9dfeff272,4aac940e-334b-42d2-bff1-0db9dfeff272,0,1,c33bcfcd-b5e2-46db-ba70-c373db613394,c33bcfcd-b5e2-46db-ba70-c373db613394,0,1,fef727fa-f63b-4467-9367-73a2425b19e3,fef727fa-f63b-4467-9367-73a2425b19e3,0,1,bfa90848-930f-433d-8f6f-c11ac2c5eba2,bfa90848-930f-433d-8f6f-c11ac2c5eba2,0,1,2baf6d7a-12ed-4f22-ad96-92bb31b747ff,2baf6d7a-12ed-4f22-ad96-92bb31b747ff,0,1,75666bb9-f6d3-4dd6-8220-427a81f23fc9,75666bb9-f6d3-4dd6-8220-427a81f23fc9,0,1,becf53b6-3fbc-4c70-822f-4a70b0434353,becf53b6-3fbc-4c70-822f-4a70b0434353,0,1,9376b18c-cffd-488b-8a1e-cca598f018bc,9376b18c-cffd-488b-8a1e-cca598f018bc,0,1,d78b5faf-b34b-4fa2-89a5-f4bc45203528,d78b5faf-b34b-4fa2-89a5-f4bc45203528,0,1,942a962a-bccb-42c0-b279-077a9b33c70a,942a962a-bccb-42c0-b279-077a9b33c70a,0,1,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,0,1,652ee894-047b-4a5a-a500-2d61b4c4a473,652ee894-047b-4a5a-a500-2d61b4c4a473,0,1,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,0,1,c03f9972-5a1f-449b-b170-5a958c2b5846,c03f9972-5a1f-449b-b170-5a958c2b5846,0,1,33f8cd94-71e7-4703-92c3-22690fbd871a,33f8cd94-71e7-4703-92c3-22690fbd871a,0,1,b6e5de4d-0156-4342-b646-6e6920a4bd3a,b6e5de4d-0156-4342-b646-6e6920a4bd3a,0,1,09858042-6284-4499-8055-c1b5b783ce5f,09858042-6284-4499-8055-c1b5b783ce5f,0,1,1e63c656-a0e7-4b33-8bac-2a196e028ffa,1e63c656-a0e7-4b33-8bac-2a196e028ffa,0,1,085cbea9-1df1-4ee9-afb7-da2bf313697e,085cbea9-1df1-4ee9-afb7-da2bf313697e,0,1,b3152292-5546-4896-ad24-cb41057698d8,b3152292-5546-4896-ad24-cb41057698d8,0,1,bb722783-1e0b-4543-b110-fdf69b4fe20e,bb722783-1e0b-4543-b110-fdf69b4fe20e,0,1,38fc1e6e-7cd3-437b-b429-6655be34cd01,38fc1e6e-7cd3-437b-b429-6655be34cd01,0,1,c38d8135-e11f-4860-b370-84ff279b7fbd,c38d8135-e11f-4860-b370-84ff279b7fbd,0,1,ee0798f5-47a8-4118-a25c-cfd3473007c1,ee0798f5-47a8-4118-a25c-cfd3473007c1,0,1,e25b2b10-bf08-42db-9642-861efc5e583b,e25b2b10-bf08-42db-9642-861efc5e583b,0,1,29f2094a-d0d1-425c-8161-45a9ba186e19,29f2094a-d0d1-425c-8161-45a9ba186e19,0,1,ffe7858a-6c92-4951-8dbf-327215894ace,ffe7858a-6c92-4951-8dbf-327215894ace,0,1,69149ce1-d3f8-4e12-be8f-b328ade60882,69149ce1-d3f8-4e12-be8f-b328ade60882,0,1,ff592ecb-eb08-4554-87bf-1d2935b21d3c,ff592ecb-eb08-4554-87bf-1d2935b21d3c,0,1,e50cb13a-151b-45d2-a7b7-d23440ddfa24,e50cb13a-151b-45d2-a7b7-d23440ddfa24,0,1,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0,1,0d8770aa-fa6e-471c-92c8-b96576927ef0,0d8770aa-fa6e-471c-92c8-b96576927ef0,0,1,1e3c444d-6f73-4eb0-a12d-7106daf36b14,1e3c444d-6f73-4eb0-a12d-7106daf36b14,0,1,b8a32c33-4e15-4c21-baab-64a86d44321b,b8a32c33-4e15-4c21-baab-64a86d44321b,0,1,e7d51ada-f286-4519-bfae-ece95dd4d7b0,e7d51ada-f286-4519-bfae-ece95dd4d7b0,0,1,d7dd9a03-6818-4987-8f39-58e1c906569f,d7dd9a03-6818-4987-8f39-58e1c906569f,0,1,fce028b8-b530-49f0-b6ad-a28d03e19b0f,fce028b8-b530-49f0-b6ad-a28d03e19b0f,0,1,301eea20-0e7f-441e-a531-28b4627dfd93,301eea20-0e7f-441e-a531-28b4627dfd93,0,1,95a71c2e-aa39-42ec-8889-2390a553f146,95a71c2e-aa39-42ec-8889-2390a553f146,0,1,d975aef4-8da8-4486-baeb-a99c48cff0ec,d975aef4-8da8-4486-baeb-a99c48cff0ec,0,1,9da27139-0bed-47b0-aef6-246929968502,9da27139-0bed-47b0-aef6-246929968502,0,1,68e82adf-bc03-4f23-9ec4-749ed42241da,68e82adf-bc03-4f23-9ec4-749ed42241da,0,1,41f87891-ddd5-4e0f-a4f2-8039fb71981b,41f87891-ddd5-4e0f-a4f2-8039fb71981b,0,1,25896075-2484-4879-8310-7f5680d80b48,25896075-2484-4879-8310-7f5680d80b48,0,1,893b2dd9-a939-4799-9b78-50d788a5f3ba,893b2dd9-a939-4799-9b78-50d788a5f3ba,0,1,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,0,1,e4842271-4fc0-4e15-afef-876f05af78c0,e4842271-4fc0-4e15-afef-876f05af78c0,0,1,135d57fe-d420-4bb0-9120-e43fd9b55c16,135d57fe-d420-4bb0-9120-e43fd9b55c16,0,1,31ee6430-b65d-42fa-859b-c4f1c40686ae,31ee6430-b65d-42fa-859b-c4f1c40686ae,0,1,c59e11f3-6bcb-404a-9d76-1416c12be354,c59e11f3-6bcb-404a-9d76-1416c12be354,0,1,c1a1f12b-3978-4047-956e-a5c7de8371a0,c1a1f12b-3978-4047-956e-a5c7de8371a0,0,1,ac39b903-0c60-417e-a50f-49ed375424f5,ac39b903-0c60-417e-a50f-49ed375424f5,0,1,831f4abd-4f96-417f-a71a-9ff481c23922,831f4abd-4f96-417f-a71a-9ff481c23922,0,1,c6c2fa57-a3c2-4f2a-bc02-4436f570cc78,c6c2fa57-a3c2-4f2a-bc02-4436f570cc78,0,1,64f667e5-6a8f-448f-aed5-a4d461232845,64f667e5-6a8f-448f-aed5-a4d461232845,0,1,a148cdff-0e67-48e6-9cc5-e8a6f5aa1ae8,a148cdff-0e67-48e6-9cc5-e8a6f5aa1ae8,0,1,037842ca-aeaf-4e27-9a0e-e929438b6f40,037842ca-aeaf-4e27-9a0e-e929438b6f40,0,1,a4ec7d3d-2d01-436c-98ec-ec42733ee5c6,a4ec7d3d-2d01-436c-98ec-ec42733ee5c6,0,1,230722e6-942f-4594-be89-eff59c6572bf,230722e6-942f-4594-be89-eff59c6572bf,0,1,b43abcf7-1f1d-4a59-b0d1-0a493c3a4785,b43abcf7-1f1d-4a59-b0d1-0a493c3a4785,0,1,ed297409-6215-4fd4-b47d-a2247e0343da,ed297409-6215-4fd4-b47d-a2247e0343da,0,1,eaf6045f-9ac0-43ef-b165-a45be75a4d44,eaf6045f-9ac0-43ef-b165-a45be75a4d44,0,1,237dab99-ed72-432c-ad01-c6045d74f000,237dab99-ed72-432c-ad01-c6045d74f000,0,1,59855d19-29cd-4efd-a453-b19e574113ef,59855d19-29cd-4efd-a453-b19e574113ef,0,1,94e08dcf-3885-4a73-82ab-cb291f1cf95f,94e08dcf-3885-4a73-82ab-cb291f1cf95f,0,1,55ce840b-5838-4107-886d-f935b9907bd8,55ce840b-5838-4107-886d-f935b9907bd8,0,1,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0,1,f1753bda-16db-4b00-a16a-37ddade8403f,f1753bda-16db-4b00-a16a-37ddade8403f,0,1,a1875d63-4303-46f1-bdea-fc529b5891f3,a1875d63-4303-46f1-bdea-fc529b5891f3,0,1,133f181a-fade-4182-826d-904fac780326,133f181a-fade-4182-826d-904fac780326,0,1,59123b12-6052-4480-9c86-f4de1b5cdc04,59123b12-6052-4480-9c86-f4de1b5cdc04,0,1,a687748a-0b2a-4277-b935-07616d28430d,a687748a-0b2a-4277-b935-07616d28430d,0,1,641ebe22-7135-4adb-bbd6-e0c37d246a2d,641ebe22-7135-4adb-bbd6-e0c37d246a2d,0,1,f71ba01e-9f6b-4241-8048-4368c8888756,f71ba01e-9f6b-4241-8048-4368c8888756,0,1,b95681f4-8f91-483e-a9c5-c8a21058679a,b95681f4-8f91-483e-a9c5-c8a21058679a,0,1,ab6fdd75-2ea6-4408-8c03-0cfab775a7a0,ab6fdd75-2ea6-4408-8c03-0cfab775a7a0,0,1,9059defa-047f-4dac-9749-3d0a6a77308a,9059defa-047f-4dac-9749-3d0a6a77308a,0,1,6010c27f-e857-4fc3-be13-1eea51f02ea7,6010c27f-e857-4fc3-be13-1eea51f02ea7,0,1,6aa814fa-417e-428c-951e-6efd9d0775da,6aa814fa-417e-428c-951e-6efd9d0775da,0,1,a247efe1-8608-4780-9cc8-54e29944475b,a247efe1-8608-4780-9cc8-54e29944475b,0,1,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,0,1,a8f162e9-3f59-41a5-b82f-da20928213c7,a8f162e9-3f59-41a5-b82f-da20928213c7,0,1,ade68dfd-5037-4fd7-b043-9514e3fe6342,ade68dfd-5037-4fd7-b043-9514e3fe6342,0,1,7b008aad-9d05-43e1-8295-62ae58cfff42,7b008aad-9d05-43e1-8295-62ae58cfff42,0,1,fdaf9255-d621-4a98-9530-f618ed440795,fdaf9255-d621-4a98-9530-f618ed440795,0,1,0daac965-2026-4acc-8ba1-3c1f01779257,0daac965-2026-4acc-8ba1-3c1f01779257,0,1,65a331c0-7501-49f6-8027-35b703d11834,65a331c0-7501-49f6-8027-35b703d11834,0,1,c67fab0a-704f-43ae-bd03-4b5b1a880b24,c67fab0a-704f-43ae-bd03-4b5b1a880b24,0,1,c1703a14-61a0-4461-8ad8-7173e2c431fe,c1703a14-61a0-4461-8ad8-7173e2c431fe,0,1,aecf5653-3005-43f2-ab49-40977e70f02b,aecf5653-3005-43f2-ab49-40977e70f02b,0,1,475f8577-a141-496b-94e1-53215c0dd017,475f8577-a141-496b-94e1-53215c0dd017,0,1,97638762-c01e-4c8f-88e2-b356e517e18f,97638762-c01e-4c8f-88e2-b356e517e18f,0,1,074e34f2-e9be-4bd3-beca-8b916772e2be,074e34f2-e9be-4bd3-beca-8b916772e2be,0,1,28fecf1b-7cab-4087-b66e-2052edb8ce3a,28fecf1b-7cab-4087-b66e-2052edb8ce3a,0,1,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,0,1,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,0,1,f5417147-4d2a-4e49-911b-2bb5eccb8441,f5417147-4d2a-4e49-911b-2bb5eccb8441,0,1,20fbed2b-4393-4de0-a71d-017a336bdac0,20fbed2b-4393-4de0-a71d-017a336bdac0,0,1,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,0,1,fbbb2449-9a07-4229-8ea5-bee0afab5f56,fbbb2449-9a07-4229-8ea5-bee0afab5f56,0,1,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,0,1,0d124daf-dc52-4391-a2d9-3c43a45c422c,0d124daf-dc52-4391-a2d9-3c43a45c422c,0,1,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,0,1,98153b59-8cc6-4dc7-b945-99c1146d07da,98153b59-8cc6-4dc7-b945-99c1146d07da,0,1,3e2828b4-2b55-471e-ac69-55119c2480f8,3e2828b4-2b55-471e-ac69-55119c2480f8,0,1,9da32b56-ff89-4739-bb99-615074b72298,9da32b56-ff89-4739-bb99-615074b72298,0,1,08baf3ee-b8ca-4f29-89fc-c15344064ad3,08baf3ee-b8ca-4f29-89fc-c15344064ad3,0,1,2c8ab5a6-66d5-4b6f-94ae-4292724ded7f,2c8ab5a6-66d5-4b6f-94ae-4292724ded7f,0,1,01b85e3a-9920-425a-9de5-5079fffeef93,01b85e3a-9920-425a-9de5-5079fffeef93,0,1,82e12316-cc64-4d2f-83fa-054b5a738f02,82e12316-cc64-4d2f-83fa-054b5a738f02,0,1,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,0,1,a890be6b-f050-4ea4-a388-570948ffd22b,a890be6b-f050-4ea4-a388-570948ffd22b,0,1,9039f720-5728-4918-87d5-8b2d07cabcfd,9039f720-5728-4918-87d5-8b2d07cabcfd,0,1,f3e2f35e-53f8-44e8-b24c-8385ba2c6974,f3e2f35e-53f8-44e8-b24c-8385ba2c6974,0,1,b00c31d6-4fc6-4189-9f72-f91742ec705f,b00c31d6-4fc6-4189-9f72-f91742ec705f,0,1,1333101b-82e8-41a9-a793-5af5dcd6f68a,1333101b-82e8-41a9-a793-5af5dcd6f68a,0,1,3ba630c2-cdc1-40a8-a24e-538ddb1abe38,3ba630c2-cdc1-40a8-a24e-538ddb1abe38,0,1,0f25646a-90f9-4747-a778-7efdaabc284c,0f25646a-90f9-4747-a778-7efdaabc284c,0,1,3705a086-46e6-4090-a52a-535908eea8a5,3705a086-46e6-4090-a52a-535908eea8a5,0,1,9b9cd161-5bee-4433-a0ec-b67deb099b5e,9b9cd161-5bee-4433-a0ec-b67deb099b5e,0,1,44b28019-01c0-468d-9b60-e050ff8b71ac,44b28019-01c0-468d-9b60-e050ff8b71ac,0,1,69f6173c-a570-41ff-b07f-5b85f7187515,69f6173c-a570-41ff-b07f-5b85f7187515,0,1,ca179cb5-65e1-4a55-bf12-096b926accb0,ca179cb5-65e1-4a55-bf12-096b926accb0,0,1,472ce1c2-9e83-418b-b1ec-e15e126bc919,472ce1c2-9e83-418b-b1ec-e15e126bc919,0,1,9fe30414-8261-4403-a854-f22b61824f69,9fe30414-8261-4403-a854-f22b61824f69,0,1,07bb26ac-bd97-465f-a192-db7fedbb579b,07bb26ac-bd97-465f-a192-db7fedbb579b,0,1,cd8244d1-0996-40ea-9263-7179c1e8aa26,cd8244d1-0996-40ea-9263-7179c1e8aa26,0,1,bb129cf2-5a5a-433a-924a-a1d0d895644a,bb129cf2-5a5a-433a-924a-a1d0d895644a,0,1,0894db61-51f6-4068-9634-e55d95e2a8ac,0894db61-51f6-4068-9634-e55d95e2a8ac,0,1,ad3fb691-68b2-4d65-93ab-ab8fcb77e035,ad3fb691-68b2-4d65-93ab-ab8fcb77e035,0,1,67aed41e-9707-4007-bb3c-7273476664bb,67aed41e-9707-4007-bb3c-7273476664bb,0,1,954e7804-e8b1-42aa-9d49-bef73f9d13d1,954e7804-e8b1-42aa-9d49-bef73f9d13d1,0,1,de25a90c-4b46-4340-b649-93e16dde33de,de25a90c-4b46-4340-b649-93e16dde33de,0,1,5462f1ab-2095-4515-875e-471900f05db9,5462f1ab-2095-4515-875e-471900f05db9,0,1,4f2d0398-49f4-410c-a451-436cbf96a262,4f2d0398-49f4-410c-a451-436cbf96a262,0,1,5ae2a1de-6380-45cc-9c8f-5612cd5ba627,5ae2a1de-6380-45cc-9c8f-5612cd5ba627,0,1,e8aa2ba2-7dfa-47e3-bc18-6156f700ceed,e8aa2ba2-7dfa-47e3-bc18-6156f700ceed,0,1,8c472f51-47ec-43c4-9858-fd19ac3e17f3,8c472f51-47ec-43c4-9858-fd19ac3e17f3,0,1,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,0,1,c54f31ce-114b-46d3-b4c6-12c8f07727ca,c54f31ce-114b-46d3-b4c6-12c8f07727ca,0,1,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,0,1,b2c8bd74-21c9-4495-93e2-ca5355698350,b2c8bd74-21c9-4495-93e2-ca5355698350,0,1,712c2b73-4697-4581-a095-70555aee8be2,712c2b73-4697-4581-a095-70555aee8be2,0,1,c1508d67-ac6d-41e3-884d-b3bdd54659f8,c1508d67-ac6d-41e3-884d-b3bdd54659f8,0,1,65dd4904-0837-4de5-a5e5-601151055d94,65dd4904-0837-4de5-a5e5-601151055d94,0,1,3436b16e-ef5b-4abb-9aad-c70a7c8560ed,3436b16e-ef5b-4abb-9aad-c70a7c8560ed,0,1,df48bfa3-5502-4a61-a79f-1dea043dac36,df48bfa3-5502-4a61-a79f-1dea043dac36,0,1,adee37e6-f087-422f-91b3-681f3d73189c,adee37e6-f087-422f-91b3-681f3d73189c,0,1,35103a27-230c-45c0-a8c9-24bd46608bbb,35103a27-230c-45c0-a8c9-24bd46608bbb,0,1,c5e9f987-4466-4161-8e36-278b0b3ce056,c5e9f987-4466-4161-8e36-278b0b3ce056,0,1,b6566d54-e821-4a2a-a447-0f533f35de91,b6566d54-e821-4a2a-a447-0f533f35de91,0,1,46568b9a-a765-4037-8a86-b184a570ab37,46568b9a-a765-4037-8a86-b184a570ab37,0,1,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,0,1,547a6dec-6fe8-439d-a8d9-ac2612af20d2,547a6dec-6fe8-439d-a8d9-ac2612af20d2,0,1,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,0,1,84395058-d46a-428c-b782-a9fa89fea14a,84395058-d46a-428c-b782-a9fa89fea14a,0,1,39bc2bc6-2a4f-4e26-b1b9-fb8473234f09,39bc2bc6-2a4f-4e26-b1b9-fb8473234f09,0,1,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,0,1,93016393-c637-4d81-8675-aa5e51e678e0,93016393-c637-4d81-8675-aa5e51e678e0,0,1,d8621f68-106e-4058-963f-56010491ae2e,d8621f68-106e-4058-963f-56010491ae2e,0,1,1f3057c2-135f-44b2-9f86-34481fbc5596,1f3057c2-135f-44b2-9f86-34481fbc5596,0,1,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,0,1,f2e2df50-52fc-4e95-909b-80fc91a68f62,f2e2df50-52fc-4e95-909b-80fc91a68f62,0,1,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,0,1,1b887b59-9a72-4aa3-a985-7a8d6a427b95,1b887b59-9a72-4aa3-a985-7a8d6a427b95,0,1,1fca06d9-b015-4fc8-abdd-3e2397e0c307,1fca06d9-b015-4fc8-abdd-3e2397e0c307,0,1,05b6a743-5831-4c77-894c-b19005b0e141,05b6a743-5831-4c77-894c-b19005b0e141,0,1,295a5554-f6cc-437b-9e89-c6f653a8b858,295a5554-f6cc-437b-9e89-c6f653a8b858,0,1,573f1753-9194-4aaf-9217-5cac70ff108f,573f1753-9194-4aaf-9217-5cac70ff108f,0,1,1f7ec25a-05b1-468b-8857-2bb1aed3678a,1f7ec25a-05b1-468b-8857-2bb1aed3678a,0,1,4a1e6d25-89e7-468a-aef1-6ded0154dca2,4a1e6d25-89e7-468a-aef1-6ded0154dca2,0,1,905624ea-b253-413f-b651-1eb2c5a7d52a,905624ea-b253-413f-b651-1eb2c5a7d52a,0,1,b639ed30-3e37-4c65-a39f-00fe735950eb,b639ed30-3e37-4c65-a39f-00fe735950eb,0,1,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,0,1,f137eb0f-bde7-412d-9229-d7a4f9456e6c,f137eb0f-bde7-412d-9229-d7a4f9456e6c,0,1,90880131-8065-4a7e-a0fa-ecff9e27363c,90880131-8065-4a7e-a0fa-ecff9e27363c,0,1,57e9fcea-342c-4089-bd10-befb3faf0dbd,57e9fcea-342c-4089-bd10-befb3faf0dbd,0,1,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,0,1,f811b0b7-41b5-4591-9910-780f08780236,f811b0b7-41b5-4591-9910-780f08780236,0,1,6b10167a-f5c3-4d7b-b444-d5ff6e705ea4,6b10167a-f5c3-4d7b-b444-d5ff6e705ea4,0,1,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,0,1,51a0444d-13c8-45a8-97f6-f3f976964bf8,51a0444d-13c8-45a8-97f6-f3f976964bf8,0,1,7e089889-cf8d-4f5f-879c-0a1bcca1c19b,7e089889-cf8d-4f5f-879c-0a1bcca1c19b,0,1,7e2ba519-fbb9-4163-b20b-b99898e6ac57,7e2ba519-fbb9-4163-b20b-b99898e6ac57,0,1,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,0,1,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,0,1,0a5e38b7-2794-419f-8c29-076490c7b5ce,0a5e38b7-2794-419f-8c29-076490c7b5ce,0,1,2b1619a6-c841-4963-8c51-c1d8d6ba3746,2b1619a6-c841-4963-8c51-c1d8d6ba3746,0,1,eab50f82-4612-47fd-a5c2-9678016a1937,eab50f82-4612-47fd-a5c2-9678016a1937,0,1,4212bb94-7c24-4d4f-8bb8-4060bd21a135,4212bb94-7c24-4d4f-8bb8-4060bd21a135,0,1,2609ba3c-e4de-45b3-86e0-93db39a21eee,2609ba3c-e4de-45b3-86e0-93db39a21eee,0,1,00dcfeab-7ba1-4a50-996e-4fd693dd0514,00dcfeab-7ba1-4a50-996e-4fd693dd0514,0,1,d21971c9-9aa6-448a-ab37-49ad0b0547ec,d21971c9-9aa6-448a-ab37-49ad0b0547ec,0,1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,0,1,230b80c7-620a-40d3-b473-b6289cfce8c0,230b80c7-620a-40d3-b473-b6289cfce8c0,0,1,00c37f5c-9380-4541-99e2-37bb97536e08,00c37f5c-9380-4541-99e2-37bb97536e08,0,1,5efd2e2e-9b83-4c0d-9bbd-4075b5127d92,5efd2e2e-9b83-4c0d-9bbd-4075b5127d92,0,1,3e4361e9-2baf-407b-9320-b2a265b44e46,3e4361e9-2baf-407b-9320-b2a265b44e46,0,1,00418e6c-77b2-4753-b9ff-3a8013436f8a,00418e6c-77b2-4753-b9ff-3a8013436f8a,0,1,e2c76c41-4c47-4588-a081-7bd81ac1698b,e2c76c41-4c47-4588-a081-7bd81ac1698b,0,1,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,0,1,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,0,1,d9f1f56b-75c8-43e9-8043-89076c225f78,d9f1f56b-75c8-43e9-8043-89076c225f78,0,1,a3c9a7eb-2104-4402-954c-3e12de4a7de3,a3c9a7eb-2104-4402-954c-3e12de4a7de3,0,1,38bf6d3b-5435-4bac-b9fc-23b80afeb760,38bf6d3b-5435-4bac-b9fc-23b80afeb760,0,1,138e674b-c9d4-4b89-b5ac-a50bd5313b98,138e674b-c9d4-4b89-b5ac-a50bd5313b98,0,1,fabbac92-cb98-4087-b3fa-387482ed0d86,fabbac92-cb98-4087-b3fa-387482ed0d86,0,1,b5f518af-59d0-4f91-8759-5f32a5055d07,b5f518af-59d0-4f91-8759-5f32a5055d07,0,1,6c34eef9-9405-4de0-9177-1bae85251ae4,6c34eef9-9405-4de0-9177-1bae85251ae4,0,1,d295f084-1c23-4c94-90eb-85928648224e,d295f084-1c23-4c94-90eb-85928648224e,0,1,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,0,1,e09534e3-ac6e-42a6-86e8-564acb20089a,e09534e3-ac6e-42a6-86e8-564acb20089a,0,1,5e380276-2a08-435c-927e-a7f56f5a4dbc,5e380276-2a08-435c-927e-a7f56f5a4dbc,0,1,5d0811eb-bcd5-42ce-b6e8-8341f3a04225,5d0811eb-bcd5-42ce-b6e8-8341f3a04225,0,1,d06e845a-9f54-40dd-b0df-6988def62017,d06e845a-9f54-40dd-b0df-6988def62017,0,1,9c5cd78a-990e-4134-8ce9-e7f191ee6726,9c5cd78a-990e-4134-8ce9-e7f191ee6726,0,1,7badb97b-c359-42af-9066-6bbfc0650cf9,7badb97b-c359-42af-9066-6bbfc0650cf9,0,1,63223883-06cf-4d01-be95-5e410cc58a22,63223883-06cf-4d01-be95-5e410cc58a22,0,1,1929139f-dabb-4c40-9423-158093360889,1929139f-dabb-4c40-9423-158093360889,0,1,dad92df4-685b-4260-b35f-4d031262dfea,dad92df4-685b-4260-b35f-4d031262dfea,0,1,4399c19a-ddba-42e9-88b4-c5c28abad237,4399c19a-ddba-42e9-88b4-c5c28abad237,0,1,645561e0-787a-45a1-824a-a2c649d516fe,645561e0-787a-45a1-824a-a2c649d516fe,0,1,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,0,1,982315ba-df74-4a31-8929-71d1e5e6f147,982315ba-df74-4a31-8929-71d1e5e6f147,0,1,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,0,1,fd3a6a7e-203d-447a-aebd-7626579387fb,fd3a6a7e-203d-447a-aebd-7626579387fb,0,1,2cd04d4c-2619-40c9-adf4-7bb281f045b6,2cd04d4c-2619-40c9-adf4-7bb281f045b6,0,1,cbc1c36d-7bbf-4892-8220-a33ec91a7b1f,cbc1c36d-7bbf-4892-8220-a33ec91a7b1f,0,1,5d4e67ae-7029-46d2-86f9-834a04a9dd71,5d4e67ae-7029-46d2-86f9-834a04a9dd71,0,1,ff976027-75e8-475c-abfa-876d36733c13,ff976027-75e8-475c-abfa-876d36733c13,0,1,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,0,1,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,0,1,556a0e57-5b3b-4303-a013-0bd296c506b8,556a0e57-5b3b-4303-a013-0bd296c506b8,0,1,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,0,1,b3554203-b930-496d-a712-353bc13a0946,b3554203-b930-496d-a712-353bc13a0946,0,1,59775ce0-f778-45f6-9453-bbd0a0ec1f27,59775ce0-f778-45f6-9453-bbd0a0ec1f27,0,1,f772abd3-8ea0-41e9-aaca-c5375778941a,f772abd3-8ea0-41e9-aaca-c5375778941a,0,1,b322b047-16eb-4500-826a-6dfebb7d997a,b322b047-16eb-4500-826a-6dfebb7d997a,0,1,f08afb10-3467-4af8-804c-ba7761f1dac9,f08afb10-3467-4af8-804c-ba7761f1dac9,0,1,c8da922f-e31e-49b0-b90e-1c060424bde5,c8da922f-e31e-49b0-b90e-1c060424bde5,0,1,41462827-fd8b-4ee6-a739-a884d704bba5,41462827-fd8b-4ee6-a739-a884d704bba5,0,1,e32b940d-3f23-4eea-a559-62ba1be7a425,e32b940d-3f23-4eea-a559-62ba1be7a425,0,1,eca025d2-4fe9-4542-b9f5-46ae2631256e,eca025d2-4fe9-4542-b9f5-46ae2631256e,0,1,35bc58df-8aff-48dd-83a9-b60b0461f94d,35bc58df-8aff-48dd-83a9-b60b0461f94d,0,1,0f46ae6b-9fe8-471a-a59f-af5e66cb9e00,0f46ae6b-9fe8-471a-a59f-af5e66cb9e00,0,1,b65afceb-a200-42d5-9948-831a5ad84b1b,b65afceb-a200-42d5-9948-831a5ad84b1b,0,1,feb1a5c1-c805-4079-8f05-8a44f51b0b02,feb1a5c1-c805-4079-8f05-8a44f51b0b02,0,1,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,0,1,1f55f330-7c0a-4a29-905f-51d664515bc5,1f55f330-7c0a-4a29-905f-51d664515bc5,0,1,6106e958-354c-4211-992c-3c3819e8828e,6106e958-354c-4211-992c-3c3819e8828e,0,1,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,0,1,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,0,1,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,0,1,231d3950-f363-4e63-83cd-8ddb81507c27,231d3950-f363-4e63-83cd-8ddb81507c27,0,1,87429f11-bf95-4013-bf13-da904570f88d,87429f11-bf95-4013-bf13-da904570f88d,0,1,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,0,1,feb41347-62db-41cf-ace0-d8b9de361af3,feb41347-62db-41cf-ace0-d8b9de361af3,0,1,cdce186a-229d-492d-8811-147fc4d7cdf5,cdce186a-229d-492d-8811-147fc4d7cdf5,0,1,f750d4d3-059f-41a5-85b4-16bb4c63d3f2,f750d4d3-059f-41a5-85b4-16bb4c63d3f2,0,1,5f91b00f-d8fc-4d63-8486-66339357ab22,5f91b00f-d8fc-4d63-8486-66339357ab22,0,1,16d44ab1-4bce-4df8-a215-6ed5173c75a8,16d44ab1-4bce-4df8-a215-6ed5173c75a8,0,1,543f976e-fea3-4a51-9962-b8e0fcd3f707,543f976e-fea3-4a51-9962-b8e0fcd3f707,0,1,375977c1-5745-4e78-a4df-cef966c0ccf8,375977c1-5745-4e78-a4df-cef966c0ccf8,0,1,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,0,1,c3796d85-2a24-43c4-9673-64e56249a1d0,c3796d85-2a24-43c4-9673-64e56249a1d0,0,1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,0,1,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,0,1,731211c2-ef90-4883-9525-83cd91b742ac,731211c2-ef90-4883-9525-83cd91b742ac,0,1,0adf02da-940a-4bfc-afa5-59605494a169,0adf02da-940a-4bfc-afa5-59605494a169,0,1,50a1e3bf-8624-4474-854e-21b89aaf97ed,50a1e3bf-8624-4474-854e-21b89aaf97ed,0,1,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,0,1,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,0,1,847b97a3-d0bc-45e2-b06c-932bb22d8eca,847b97a3-d0bc-45e2-b06c-932bb22d8eca,0,1,503b3eab-b7f1-4ede-8845-3290a834cec7,503b3eab-b7f1-4ede-8845-3290a834cec7,0,1,8361991a-0f30-4a03-9a4c-90556b744f53,8361991a-0f30-4a03-9a4c-90556b744f53,0,1,3116fa60-bc42-4dea-aa03-387896168690,3116fa60-bc42-4dea-aa03-387896168690,0,1,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,0,1,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,0,1,f9196766-4ae2-4a73-bed6-4a8838323e02,f9196766-4ae2-4a73-bed6-4a8838323e02,0,1,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,0,1,06afe397-1c7e-400e-bb24-f8e611d114e8,06afe397-1c7e-400e-bb24-f8e611d114e8,0,1,f0105e51-9510-426a-8aa0-af827d93ffd9,f0105e51-9510-426a-8aa0-af827d93ffd9,0,1,3df19dbf-efe7-4e31-99ad-fafb59ec1329,3df19dbf-efe7-4e31-99ad-fafb59ec1329,0,1,baf12d47-fbfe-4563-aa23-26d9f7e83169,baf12d47-fbfe-4563-aa23-26d9f7e83169,0,1,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,0,1,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0,1,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,0,1,11fe3a42-98c4-49ba-b697-86ffb172f16f,11fe3a42-98c4-49ba-b697-86ffb172f16f,0,1,07b53818-7318-4400-8af5-457fac012755,07b53818-7318-4400-8af5-457fac012755,0,1,292b47e7-5cf3-462d-a466-dac6253a7f03,292b47e7-5cf3-462d-a466-dac6253a7f03,0,1,8ecc070f-f6fb-46b1-9636-b77aa80f8804,8ecc070f-f6fb-46b1-9636-b77aa80f8804,0,1,8405be9d-465b-4744-b04f-03933b52f02e,8405be9d-465b-4744-b04f-03933b52f02e,0,1,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,0,1,2f67931e-543f-457e-80fd-78ca754e2e9c,2f67931e-543f-457e-80fd-78ca754e2e9c,0,1,595e5752-36a7-4bba-8a40-26920acae01d,595e5752-36a7-4bba-8a40-26920acae01d,0,1,28801fba-c429-4afa-bdcd-b3ec3ec22fda,28801fba-c429-4afa-bdcd-b3ec3ec22fda,0,1,d1a873ae-d45b-4600-9419-e701dce3da02,d1a873ae-d45b-4600-9419-e701dce3da02,0,1,e3a31f0d-a98f-43c6-bc39-087095ae8c39,e3a31f0d-a98f-43c6-bc39-087095ae8c39,0,1,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,0,1,eb3dfdc7-58b8-4b1f-b079-368c262364c9,eb3dfdc7-58b8-4b1f-b079-368c262364c9,0,1,5030a318-f8f7-4ec7-80d6-6eee0772562f,5030a318-f8f7-4ec7-80d6-6eee0772562f,0,1,242e911d-e49c-4b8a-8543-cc2e079220fd,242e911d-e49c-4b8a-8543-cc2e079220fd,0,1,9ea39d31-3775-4fb8-a3f3-202e54354d49,9ea39d31-3775-4fb8-a3f3-202e54354d49,0,1,73044e20-148c-46e9-b5b5-973c91de0d61,73044e20-148c-46e9-b5b5-973c91de0d61,0,1,f8ab477c-8e78-48c0-9f99-27748b109706,f8ab477c-8e78-48c0-9f99-27748b109706,0,1,24cff6c8-6c20-4383-b97c-6afa52738960,24cff6c8-6c20-4383-b97c-6afa52738960,0,1,462e2694-750d-49ef-93ac-17a7779be68d,462e2694-750d-49ef-93ac-17a7779be68d,0,1,c24ff02e-5afc-45df-81cf-64ea2b261c2d,c24ff02e-5afc-45df-81cf-64ea2b261c2d,0,1,2d51aae9-650d-4719-a94d-2609b69a2d36,2d51aae9-650d-4719-a94d-2609b69a2d36,0,1,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,0,1,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,0,1,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,0,1,85639a53-b367-49ce-84f2-4e21d81c489b,85639a53-b367-49ce-84f2-4e21d81c489b,0,1,24b59586-178e-4efc-90ae-529553f3bb6c,24b59586-178e-4efc-90ae-529553f3bb6c,0,1,20e75dd5-222a-4100-aa43-3684991e3f21,20e75dd5-222a-4100-aa43-3684991e3f21,0,1,3c611832-4bc2-4229-a27d-d5dc82f3a498,3c611832-4bc2-4229-a27d-d5dc82f3a498,0,1,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,0,1,5dadc422-1fbd-4918-9db3-09ec72c3404e,5dadc422-1fbd-4918-9db3-09ec72c3404e,0,1,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,0,1,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,0,1,c5478d09-c8d3-4cc6-878e-27656ecc8409,c5478d09-c8d3-4cc6-878e-27656ecc8409,0,1,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,0,1,75974146-5b1a-412c-b7d5-1575704bbdab,75974146-5b1a-412c-b7d5-1575704bbdab,0,1,949f87cb-258c-4b6b-95ee-8a7491a4b64e,949f87cb-258c-4b6b-95ee-8a7491a4b64e,0,1,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,0,1,5c089988-5381-41ed-9f05-f85db46b8d94,5c089988-5381-41ed-9f05-f85db46b8d94,0,1,85a36352-1569-4ce4-aeba-477db524c36d,85a36352-1569-4ce4-aeba-477db524c36d,0,1,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,0,1,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,0,1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,0,1,b99c2068-15ea-43a1-9e9f-db29647e2387,b99c2068-15ea-43a1-9e9f-db29647e2387,0,1,9a4a0b04-3dfb-4551-90f0-16231f64b14f,9a4a0b04-3dfb-4551-90f0-16231f64b14f,0,1,98edcd6b-1c50-45c6-9a4c-390827a4ba52,98edcd6b-1c50-45c6-9a4c-390827a4ba52,0,1,2fcde115-5c5a-465c-a326-d7ba379675fc,2fcde115-5c5a-465c-a326-d7ba379675fc,0,1,346cb8b7-a20e-4a06-823e-26dfb2e3e741,346cb8b7-a20e-4a06-823e-26dfb2e3e741,0,1,6d83f50f-32e9-45a6-8b5e-d91ba005ae95,6d83f50f-32e9-45a6-8b5e-d91ba005ae95,0,1,538f0963-de90-4659-987d-df71a9586548,538f0963-de90-4659-987d-df71a9586548,0,1,9afe457f-3c88-4cd3-94e7-7cea8a1a99a1,9afe457f-3c88-4cd3-94e7-7cea8a1a99a1,0,1,86ff5ea0-394a-4d8f-9601-acc2eb841bf6,86ff5ea0-394a-4d8f-9601-acc2eb841bf6,0,1,782cb93d-36e6-4923-b2b6-75caa3459cd6,782cb93d-36e6-4923-b2b6-75caa3459cd6,0,1,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,0,1,996c7873-1cc9-44f6-915b-5c6ed7ef2370,996c7873-1cc9-44f6-915b-5c6ed7ef2370,0,1,45a2569e-820c-4d7d-ba74-4a781d26bb2b,45a2569e-820c-4d7d-ba74-4a781d26bb2b,0,1,ced01234-9417-49ce-adf0-8cdd15e6dd7d,ced01234-9417-49ce-adf0-8cdd15e6dd7d,0,1,0eea37cc-47f8-4819-85da-d4991f4e58ed,0eea37cc-47f8-4819-85da-d4991f4e58ed,0,1,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,0,1,c1272bfc-196a-4f99-935f-e2516bc138d2,c1272bfc-196a-4f99-935f-e2516bc138d2,0,1,313e0688-745a-4385-b040-7ef8317a0eb7,313e0688-745a-4385-b040-7ef8317a0eb7,0,1,5f6c6be3-058a-43c8-aa33-3e89af2ea3f1,5f6c6be3-058a-43c8-aa33-3e89af2ea3f1,0,1,8dc08932-0988-4e82-8a5f-385c0694f9ff,8dc08932-0988-4e82-8a5f-385c0694f9ff,0,1,aa7ceeee-3b3c-49e2-95c2-bfb34e381aa3,aa7ceeee-3b3c-49e2-95c2-bfb34e381aa3,0,1,37c37f15-f84b-456b-aab6-729562dc0908,37c37f15-f84b-456b-aab6-729562dc0908,0,1,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,0,1,7974e41d-5af3-4636-b405-c9405d89fb53,7974e41d-5af3-4636-b405-c9405d89fb53,0,1,21fad9b6-44df-417c-ba18-de4b8af98a34,21fad9b6-44df-417c-ba18-de4b8af98a34,0,1,11c086b0-c646-4701-983d-c38758286354,11c086b0-c646-4701-983d-c38758286354,0,1,92876c9e-52ff-480d-9878-5766f4f9d12c,92876c9e-52ff-480d-9878-5766f4f9d12c,0,1,433a114f-3198-4ef6-bbf8-ce9b54fdb736,433a114f-3198-4ef6-bbf8-ce9b54fdb736,0,1,02ac711c-e38e-422e-ac28-ba1b298df9cc,02ac711c-e38e-422e-ac28-ba1b298df9cc,0,1,b729d739-5249-4765-85ee-fd792bb22911,b729d739-5249-4765-85ee-fd792bb22911,0,1,d65c4485-7bac-4206-9a6c-7156f4bb876d,d65c4485-7bac-4206-9a6c-7156f4bb876d,0,1,bbfd9834-12b4-49ca-bdae-5c94efa80482,bbfd9834-12b4-49ca-bdae-5c94efa80482,0,1,d431d1e2-13dc-495c-9de1-b5ec872eceed,d431d1e2-13dc-495c-9de1-b5ec872eceed,0,1,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,0,1,c9ea4e72-5f01-42ae-88e3-52e49757b26f,c9ea4e72-5f01-42ae-88e3-52e49757b26f,0,1,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,0,1,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0,1,a623fef1-96eb-41ba-93fe-09162698f419,a623fef1-96eb-41ba-93fe-09162698f419,0,1,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,0,1,d8e1f92f-9efa-422d-bb21-43bd1a363cec,d8e1f92f-9efa-422d-bb21-43bd1a363cec,0,1,c1416383-bd7e-4dc4-ad88-d98ac87157fd,c1416383-bd7e-4dc4-ad88-d98ac87157fd,0,1,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,0,1,d5d9976a-4cc0-43f7-afd6-d43cebb07940,d5d9976a-4cc0-43f7-afd6-d43cebb07940,0,1,79a0746b-4dbe-4068-8832-4d0da08d6fd3,79a0746b-4dbe-4068-8832-4d0da08d6fd3,0,1,899f1526-d6bc-42ef-852e-7297a06db9e3,899f1526-d6bc-42ef-852e-7297a06db9e3,0,1,c694c132-1ddb-4273-818a-d3cca88c082a,c694c132-1ddb-4273-818a-d3cca88c082a,0,1,cd4da06e-c06b-4233-befc-1bc4c4db58e3,cd4da06e-c06b-4233-befc-1bc4c4db58e3,0,1,918a01fe-f753-4a4a-9200-55bbd6edaf5f,918a01fe-f753-4a4a-9200-55bbd6edaf5f,0,1,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,0,1,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,0,1,d6704410-6297-481e-a6cb-6d6aa566b4f8,d6704410-6297-481e-a6cb-6d6aa566b4f8,0,1,398937ca-b035-43bd-b0da-8c5153a87cb8,398937ca-b035-43bd-b0da-8c5153a87cb8,0,1,5b441321-bd1e-4c56-8f09-365b05985eed,5b441321-bd1e-4c56-8f09-365b05985eed,0,1,559f1e66-e8da-437a-aa27-d0e1be6619b6,559f1e66-e8da-437a-aa27-d0e1be6619b6,0,1,704d69cd-d921-4957-a004-43bd7eb4d979,704d69cd-d921-4957-a004-43bd7eb4d979,0,1,f1594682-16ac-408c-8307-a7a8db79b09f,f1594682-16ac-408c-8307-a7a8db79b09f,0,1,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,0,1,4cb814d8-cb1b-4366-b500-e820ad526b0c,4cb814d8-cb1b-4366-b500-e820ad526b0c,0,1,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,0,1,6c43df9f-ca36-415b-afec-302807820d73,6c43df9f-ca36-415b-afec-302807820d73,0,1,c7fb7551-806a-40b2-8879-14cd897b60d8,c7fb7551-806a-40b2-8879-14cd897b60d8,0,1,68337023-d573-4d04-95b6-44f73258c2a4,68337023-d573-4d04-95b6-44f73258c2a4,0,1,7cf39337-b722-486f-8e37-a62239d0ccd2,7cf39337-b722-486f-8e37-a62239d0ccd2,0,1,2571cfaf-d876-4385-a60a-1488aacf7080,2571cfaf-d876-4385-a60a-1488aacf7080,0,1,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,0,1,44398566-3189-4584-8f8a-9deb1d07ce41,44398566-3189-4584-8f8a-9deb1d07ce41,0,1,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,0,1,accfa63a-479d-4996-95bc-cdf5acdf203c,accfa63a-479d-4996-95bc-cdf5acdf203c,0,1,351998e0-8939-4dd4-a833-f4756bcc53b8,351998e0-8939-4dd4-a833-f4756bcc53b8,0,1,cd69bad8-524e-4be4-88cc-7732a88b38b8,cd69bad8-524e-4be4-88cc-7732a88b38b8,0,1,0a32248c-6994-4988-90d1-30882bc9da6b,0a32248c-6994-4988-90d1-30882bc9da6b,0,1,b57b53cb-6972-4bda-ae46-96571be1ebec,b57b53cb-6972-4bda-ae46-96571be1ebec,0,1,1a1a9636-fb72-4e4a-af96-5858442b1e61,1a1a9636-fb72-4e4a-af96-5858442b1e61,0,1,bca9cf34-9e11-4014-976a-28c4330b136e,bca9cf34-9e11-4014-976a-28c4330b136e,0,1,65fffe1a-6f36-4f50-975f-4471ad29d3ec,65fffe1a-6f36-4f50-975f-4471ad29d3ec,0,1,8fe5dad5-686a-4631-ae05-2917c33f7d83,8fe5dad5-686a-4631-ae05-2917c33f7d83,0,1,edef86c6-73bf-4e47-b62d-b2b548a732cd,edef86c6-73bf-4e47-b62d-b2b548a732cd,0,1,a1715044-d76f-4238-ba3e-989d04078d83,a1715044-d76f-4238-ba3e-989d04078d83,0,1,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,0,1,299c47a7-0b30-4f62-8f5c-f087ad6411fb,299c47a7-0b30-4f62-8f5c-f087ad6411fb,0,1,4d4724df-24fb-4c59-9d04-3f984906214a,4d4724df-24fb-4c59-9d04-3f984906214a,0,1,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,0,1,cb9b73ee-8531-48d9-9266-9aaa4336a612,cb9b73ee-8531-48d9-9266-9aaa4336a612,0,1,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,0,1,aeee2eea-1bb9-4e8a-ac5c-c940eaa86511,aeee2eea-1bb9-4e8a-ac5c-c940eaa86511,0,1,d042687f-0725-4611-a868-f5b4f6a3a3a8,d042687f-0725-4611-a868-f5b4f6a3a3a8,0,1,bb143340-7fff-49ef-b121-355c96613f78,bb143340-7fff-49ef-b121-355c96613f78,0,1,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,0,1,f2f69644-80dc-4b5e-a208-ed1de131e25e,f2f69644-80dc-4b5e-a208-ed1de131e25e,0,1,73060f72-6d08-47da-aac8-d4d2ed8f871c,73060f72-6d08-47da-aac8-d4d2ed8f871c,0,1,f3a6219e-bff5-4d36-9baa-bb214cebc2ed,f3a6219e-bff5-4d36-9baa-bb214cebc2ed,0,1,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,0,1,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,0,1,821225ea-1bad-49a6-a422-80d8a09baf13,821225ea-1bad-49a6-a422-80d8a09baf13,0,1,d0106f3a-8490-4277-a278-75c318ec252c,d0106f3a-8490-4277-a278-75c318ec252c,0,1,5035aa55-d557-419a-89e2-10ed0f8d109b,5035aa55-d557-419a-89e2-10ed0f8d109b,0,1,fb79315a-8d27-4c5e-9cfb-c7778dabedef,fb79315a-8d27-4c5e-9cfb-c7778dabedef,0,1,5f93d2af-64ff-41cc-8403-4a0e83160fea,5f93d2af-64ff-41cc-8403-4a0e83160fea,0,1,c12c90e4-7c40-489b-b14b-6b9442016e0f,c12c90e4-7c40-489b-b14b-6b9442016e0f,0,1,6371e288-3502-4d66-9006-b5a36107c0b7,6371e288-3502-4d66-9006-b5a36107c0b7,0,1,0132e564-2cd3-4930-8962-1068532f4be4,0132e564-2cd3-4930-8962-1068532f4be4,0,1,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,0,1,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,0,1,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,0,1,7021fca5-d612-43e1-927b-7f822153cf75,7021fca5-d612-43e1-927b-7f822153cf75,0,1,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,0,1,ee0a8d23-660a-492b-a813-b57394acee05,ee0a8d23-660a-492b-a813-b57394acee05,0,1,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,0,1,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,0,1,ade21e2e-349f-414b-8f35-6ae3b6a4064d,ade21e2e-349f-414b-8f35-6ae3b6a4064d,0,1,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,0,1,e3ca64af-7766-48e2-b7c6-2a96f4539905,e3ca64af-7766-48e2-b7c6-2a96f4539905,0,1,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,0,1,b03829e9-ba22-4584-85f0-c36d63f48242,b03829e9-ba22-4584-85f0-c36d63f48242,0,1,084a7c95-a59b-4861-b8b3-b5710a57ac60,084a7c95-a59b-4861-b8b3-b5710a57ac60,0,1,efcea6da-6746-4e00-913a-14cab38b5d84,efcea6da-6746-4e00-913a-14cab38b5d84,0,1,aff367fb-7fca-44d0-adf9-3731f14834f6,aff367fb-7fca-44d0-adf9-3731f14834f6,0,1,a2782760-dd4c-44d2-a785-814d6f610455,a2782760-dd4c-44d2-a785-814d6f610455,0,1,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,0,1,6581ac1f-11ef-42b8-9f3b-590bb7546e63,6581ac1f-11ef-42b8-9f3b-590bb7546e63,0,1,ce952e88-35b7-4506-81ac-d7081e50a650,ce952e88-35b7-4506-81ac-d7081e50a650,0,1,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,0,1,3bf1281f-7570-4633-86b9-3e953a7e6647,3bf1281f-7570-4633-86b9-3e953a7e6647,0,1,715dc289-5b14-4ee0-8716-9c15958b9069,715dc289-5b14-4ee0-8716-9c15958b9069,0,1,92707138-5004-4378-8477-f909166d319d,92707138-5004-4378-8477-f909166d319d,0,1,43661775-43bb-4d9e-bfbb-c46e7d194ca3,43661775-43bb-4d9e-bfbb-c46e7d194ca3,0,1,532637ef-be0d-4f42-9747-a88e17eb3def,532637ef-be0d-4f42-9747-a88e17eb3def,0,1,61127152-3e24-40b4-8a23-5eb6cae568ff,61127152-3e24-40b4-8a23-5eb6cae568ff,0,1,ffd987e3-e8af-4d46-881e-1e312e74dbac,ffd987e3-e8af-4d46-881e-1e312e74dbac,0,1,ad1142ed-183d-47a3-800c-997a3770e11e,ad1142ed-183d-47a3-800c-997a3770e11e,0,1,ebef37c6-4808-4683-93be-036ce19cafd5,ebef37c6-4808-4683-93be-036ce19cafd5,0,1,66364cd4-aaa5-421d-96d6-3c283c14650d,66364cd4-aaa5-421d-96d6-3c283c14650d,0,1,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,0,1,3c54d440-e908-43d6-a5cc-bb64620c82d7,3c54d440-e908-43d6-a5cc-bb64620c82d7,0,1,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,0,1,bf1dd911-8ee1-407b-acae-10c85b74baf3,bf1dd911-8ee1-407b-acae-10c85b74baf3,0,1,e924058f-25c3-4744-a565-836b824991b7,e924058f-25c3-4744-a565-836b824991b7,0,1,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,0,1,518dcd70-4ccf-4866-a94f-7ceec7dd2801,518dcd70-4ccf-4866-a94f-7ceec7dd2801,0,1,0481bc65-6a32-46b9-ae87-993ba52a29a5,0481bc65-6a32-46b9-ae87-993ba52a29a5,0,1,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,0,1,dbc5f419-63b0-4cbe-90ff-c0101105e46c,dbc5f419-63b0-4cbe-90ff-c0101105e46c,0,1,c708f6e9-b7a0-4046-90f3-83527da7b872,c708f6e9-b7a0-4046-90f3-83527da7b872,0,1,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0,1,14256e0a-a947-42a3-8e36-47bfbb052a0c,14256e0a-a947-42a3-8e36-47bfbb052a0c,0,1,1b1aa77a-d14b-4751-a7da-0b5bac4db461,1b1aa77a-d14b-4751-a7da-0b5bac4db461,0,1,c0dcdb22-6719-4597-a781-bca1370909e5,c0dcdb22-6719-4597-a781-bca1370909e5,0,1,7a34f723-cd14-4949-a40f-7ce579bf0449,7a34f723-cd14-4949-a40f-7ce579bf0449,0,1,5cdc9ac7-bba9-4ed1-845a-607976fc4679,5cdc9ac7-bba9-4ed1-845a-607976fc4679,0,1,295f3692-0721-4c41-a69b-171ef20a5018,295f3692-0721-4c41-a69b-171ef20a5018,0,1,86c22871-6d1c-44e0-8ade-ce4bdeb23321,86c22871-6d1c-44e0-8ade-ce4bdeb23321,0,1,da51de81-4d4f-46b5-a308-7b50db6c45a7,da51de81-4d4f-46b5-a308-7b50db6c45a7,0,1,8d31ce6a-4d44-46c6-a11c-47fb33e88691,8d31ce6a-4d44-46c6-a11c-47fb33e88691,0,1,c2a8c2d3-ff13-4a13-acd4-797118c4e767,c2a8c2d3-ff13-4a13-acd4-797118c4e767,0,1,bc6adf75-8666-49f3-9703-b0014dfee123,bc6adf75-8666-49f3-9703-b0014dfee123,0,1,30632f54-b779-4857-a5cc-c53fe8887ee5,30632f54-b779-4857-a5cc-c53fe8887ee5,0,1,df22b227-b2c3-4e65-9706-7582f99fe59c,df22b227-b2c3-4e65-9706-7582f99fe59c,0,1,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,0,1,087480bb-8c89-4b00-a29b-b7e29926478d,087480bb-8c89-4b00-a29b-b7e29926478d,0,1,685373b7-638a-439a-8cba-703d56e4e404,685373b7-638a-439a-8cba-703d56e4e404,0,1,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,0,1,1cfba08f-d5e5-4833-b494-a25d0477e9c3,1cfba08f-d5e5-4833-b494-a25d0477e9c3,0,1,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,0,1,921a0a14-8c06-4894-95ce-423000769364,921a0a14-8c06-4894-95ce-423000769364,0,1,3805ee39-a48a-499a-9ef8-9c2a5985404f,3805ee39-a48a-499a-9ef8-9c2a5985404f,0,1,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,0,1,08c2f92c-eb05-49e7-bfc9-4a89607b9864,08c2f92c-eb05-49e7-bfc9-4a89607b9864,0,1,6d751379-89a7-49b5-93e5-578329c63d9c,6d751379-89a7-49b5-93e5-578329c63d9c,0,1,c3f156ef-947e-4ebb-883f-4f099a116063,c3f156ef-947e-4ebb-883f-4f099a116063,0,1,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,0,1,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,0,1,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,0,1,e98e9e56-2995-430c-bd3b-f1070aec15a5,e98e9e56-2995-430c-bd3b-f1070aec15a5,0,1,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,0,1,8a7546f4-bfc9-4732-bf60-43a41e2c8753,8a7546f4-bfc9-4732-bf60-43a41e2c8753,0,1,16244165-d5a4-4012-8bb5-7f5fee1111af,16244165-d5a4-4012-8bb5-7f5fee1111af,0,1,290b72ad-004f-46ab-be5e-47557543b965,290b72ad-004f-46ab-be5e-47557543b965,0,1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,0,1,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,0,1,263bcd20-9878-48d4-aac4-b371ec49d8d6,263bcd20-9878-48d4-aac4-b371ec49d8d6,0,1,da1d8660-2757-4cea-bae0-c2210b9406ae,da1d8660-2757-4cea-bae0-c2210b9406ae,0,1,d60329c6-8f48-481d-82e7-18da355cb09c,d60329c6-8f48-481d-82e7-18da355cb09c,0,1,c4b14162-b25b-4099-9ec3-7251848ef08a,c4b14162-b25b-4099-9ec3-7251848ef08a,0,1,8eb5ba97-eb38-4357-8bfc-e9618280800d,8eb5ba97-eb38-4357-8bfc-e9618280800d,0,1,b72f73d5-e274-472b-871b-16af72dab603,b72f73d5-e274-472b-871b-16af72dab603,0,1,b008d184-0b61-460d-9490-89ecc1cd58ba,b008d184-0b61-460d-9490-89ecc1cd58ba,0,1,c8340e2f-6958-4bcd-8e17-499c4adfe60b,c8340e2f-6958-4bcd-8e17-499c4adfe60b,0,1,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,0,1,03f68d82-752c-45d1-bf9a-60ecd21a2c81,03f68d82-752c-45d1-bf9a-60ecd21a2c81,0,1,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,0,1,d4fffc79-2841-49a9-a382-e9e4138984df,d4fffc79-2841-49a9-a382-e9e4138984df,0,1,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,0,1,9f41f903-d316-4189-8dc0-603ea9036c1c,9f41f903-d316-4189-8dc0-603ea9036c1c,0,1,e19e70d6-8707-4dde-ae69-7bd97035ca03,e19e70d6-8707-4dde-ae69-7bd97035ca03,0,1,425b5272-1130-457d-8a05-aee8fad681d9,425b5272-1130-457d-8a05-aee8fad681d9,0,1,8d583436-f2a6-4a33-8137-1376f5754643,8d583436-f2a6-4a33-8137-1376f5754643,0,1,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,0,1,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,0,1,2d66502d-77ab-4cc9-9ccf-5433458fae9f,2d66502d-77ab-4cc9-9ccf-5433458fae9f,0,1,cff48da7-3c46-4602-83e8-90c9ea53e107,cff48da7-3c46-4602-83e8-90c9ea53e107,0,1,7155472d-c791-402c-96e1-d25612024c88,7155472d-c791-402c-96e1-d25612024c88,0,1,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,0,1,9005911d-ea81-48b6-bf50-1a328ff4d7be,9005911d-ea81-48b6-bf50-1a328ff4d7be,0,1,7df12006-c0c0-42a6-b852-bdced72c62e3,7df12006-c0c0-42a6-b852-bdced72c62e3,0,1,9c00987d-3c55-40eb-bae8-f36e71e4ef87,9c00987d-3c55-40eb-bae8-f36e71e4ef87,0,1,29273130-5142-48c9-8399-00e5ab4b6203,29273130-5142-48c9-8399-00e5ab4b6203,0,1,9e14cd7e-1293-4008-baf8-88df6a98abf7,9e14cd7e-1293-4008-baf8-88df6a98abf7,0,1,98e3aace-52a6-4911-8205-92165adca6de,98e3aace-52a6-4911-8205-92165adca6de,0,1,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,0,1,577e5fea-b792-4c8b-b3b3-a03a14b64b04,577e5fea-b792-4c8b-b3b3-a03a14b64b04,0,1,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,0,1,b18d312b-f9c3-4f37-ac77-d499e949f154,b18d312b-f9c3-4f37-ac77-d499e949f154,0,1,ace2beea-d393-412f-8b71-b845b665e2c4,ace2beea-d393-412f-8b71-b845b665e2c4,0,1,3fd4bc77-2a1b-4750-a54a-4171c8d40027,3fd4bc77-2a1b-4750-a54a-4171c8d40027,0,1,5b27fde9-fa80-48b1-aea1-73e132b9a944,5b27fde9-fa80-48b1-aea1-73e132b9a944,0,1,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,0,1,a747ec6b-f230-49b4-a929-7ed1ba87b078,a747ec6b-f230-49b4-a929-7ed1ba87b078,0,1,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,0,1,4802e016-a9e9-47d0-916b-b42194a1f388,4802e016-a9e9-47d0-916b-b42194a1f388,0,1,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,0,1,4062674a-4a81-494d-82bc-4984cd7c7903,4062674a-4a81-494d-82bc-4984cd7c7903,0,1,782a8801-06ca-4d63-bf8b-63d2320766d8,782a8801-06ca-4d63-bf8b-63d2320766d8,0,1,93a73123-d98c-4286-9269-7bfcedd115e8,93a73123-d98c-4286-9269-7bfcedd115e8,0,1,c5985c02-1824-4ce9-b415-1621dd2ee864,c5985c02-1824-4ce9-b415-1621dd2ee864,0,1,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,0,1,e819aaf6-3dfb-492a-8a4a-50a7c6854790,e819aaf6-3dfb-492a-8a4a-50a7c6854790,0,1,62b95ba1-f213-42fb-90f3-a03e8094bc9e,62b95ba1-f213-42fb-90f3-a03e8094bc9e,0,1,619b534d-5605-40d3-9b8c-4443a21d7795,619b534d-5605-40d3-9b8c-4443a21d7795,0,1,a010bbf4-d547-4576-9797-28e3096ffed3,a010bbf4-d547-4576-9797-28e3096ffed3,0,1,a44c3eb2-1054-41ca-82e8-fc35336e7009,a44c3eb2-1054-41ca-82e8-fc35336e7009,0,1,01f67911-4ca7-4668-b970-62c299b98e56,01f67911-4ca7-4668-b970-62c299b98e56,0,1,20c89c94-f77f-4e14-8c97-2a70c1419ce3,20c89c94-f77f-4e14-8c97-2a70c1419ce3,0,1,3c4519ce-e6aa-43e3-87e5-fbd521fdc88e,3c4519ce-e6aa-43e3-87e5-fbd521fdc88e,0,1,892823b2-41ea-4c87-b0d7-e6fe5f190a1c,892823b2-41ea-4c87-b0d7-e6fe5f190a1c,0,1,05a1450f-7593-48d5-894d-b623e4458c57,05a1450f-7593-48d5-894d-b623e4458c57,0,1,bb8e10cb-6fa1-43f6-870f-0a26bede9d9c,bb8e10cb-6fa1-43f6-870f-0a26bede9d9c,0,1,02a0da6e-4045-49cf-bd14-ff22b534c7be,02a0da6e-4045-49cf-bd14-ff22b534c7be,0,1,726b9fed-3149-4697-8b0f-bc9051e939ae,726b9fed-3149-4697-8b0f-bc9051e939ae,0,1,e7050bde-5acb-4ad8-86f0-375739120d02,e7050bde-5acb-4ad8-86f0-375739120d02,0,1,c6b4c9b4-1064-49b0-bae4-b624582142c7,c6b4c9b4-1064-49b0-bae4-b624582142c7,0,1,11d5138e-df5b-4b0b-adf0-37c239d0de30,11d5138e-df5b-4b0b-adf0-37c239d0de30,0,1,f8b72dff-00a9-4b2f-b1a8-72d1f7670a88,f8b72dff-00a9-4b2f-b1a8-72d1f7670a88,0,1,1c09bf33-9b54-4bfd-bc92-e7324025fab0,1c09bf33-9b54-4bfd-bc92-e7324025fab0,0,1,8d7750e9-899f-4434-8702-44cd02681779,8d7750e9-899f-4434-8702-44cd02681779,0,1,426cbebb-880b-49c5-b046-83c5e071273e,426cbebb-880b-49c5-b046-83c5e071273e,0,1,d85244dc-c417-4e69-9aa7-7ad313ecb940,d85244dc-c417-4e69-9aa7-7ad313ecb940,0,1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,0,1,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,0,1,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,0,1,0713de12-87d5-4877-bd8a-2b6466df67df,0713de12-87d5-4877-bd8a-2b6466df67df,0,1,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,0,1,c4d7c569-4649-4f98-a048-45f3c5933670,c4d7c569-4649-4f98-a048-45f3c5933670,0,1,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,0,1,ad08b104-01f8-4900-a06c-baa1d55eba84,ad08b104-01f8-4900-a06c-baa1d55eba84,0,1,9352d10d-188f-4074-8dd1-7be5c11525e3,9352d10d-188f-4074-8dd1-7be5c11525e3,0,1,1933634a-6f10-48e7-99f0-60ac338f7832,1933634a-6f10-48e7-99f0-60ac338f7832,0,1,655deec5-c079-4748-8521-b3f10c243394,655deec5-c079-4748-8521-b3f10c243394,0,1,f6d4d818-d54c-4337-82cf-abd5e6dbe770,f6d4d818-d54c-4337-82cf-abd5e6dbe770,0,1,656c447b-291f-4e62-81ac-1c004841aa72,656c447b-291f-4e62-81ac-1c004841aa72,0,1,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,0,1,5ba93404-58ad-4321-9a62-27db828f75f6,5ba93404-58ad-4321-9a62-27db828f75f6,0,1,3da20e86-1d83-4935-b425-a91392dc8f35,3da20e86-1d83-4935-b425-a91392dc8f35,0,1,b56f25d2-72a9-4d80-8998-77ac3097c873,b56f25d2-72a9-4d80-8998-77ac3097c873,0,1,03bd775a-e0a1-4205-82ce-6068e73ad134,03bd775a-e0a1-4205-82ce-6068e73ad134,0,1,40bed47b-7754-4a70-b51a-47385fd46e83,40bed47b-7754-4a70-b51a-47385fd46e83,0,1,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,0,1,1e5a4f93-1ab9-4775-9538-2a1772215d89,1e5a4f93-1ab9-4775-9538-2a1772215d89,0,1,c25db165-0734-4fef-b161-e5164954a616,c25db165-0734-4fef-b161-e5164954a616,0,1,4f97b909-68f9-482a-b958-b4caa9b83763,4f97b909-68f9-482a-b958-b4caa9b83763,0,1,c31e34db-41ff-4db3-a4d0-f780f67070f6,c31e34db-41ff-4db3-a4d0-f780f67070f6,0,1,7a014fcb-a4b8-4c1c-b0de-21907a917c25,7a014fcb-a4b8-4c1c-b0de-21907a917c25,0,1,1688ef5d-72df-4bc4-a879-89033d466ad7,1688ef5d-72df-4bc4-a879-89033d466ad7,0,1,30f18fbf-4240-4708-a71a-189f8fc324f3,30f18fbf-4240-4708-a71a-189f8fc324f3,0,1,344cb0de-315d-4d05-93f8-8a1f53208470,344cb0de-315d-4d05-93f8-8a1f53208470,0,1,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,0,1,a7973409-b18e-4b88-ad50-e2ae89470d8f,a7973409-b18e-4b88-ad50-e2ae89470d8f,0,1,a537875e-492e-4cf2-96e9-e2e97bb206da,a537875e-492e-4cf2-96e9-e2e97bb206da,0,1,085a08f3-9d93-429d-9b1b-9065ab8363f7,085a08f3-9d93-429d-9b1b-9065ab8363f7,0,1,a530c0a1-c1d2-40bb-9d0e-320074dbb684,a530c0a1-c1d2-40bb-9d0e-320074dbb684,0,1,55c63580-16f1-4d6f-a40b-e630f71ebb98,55c63580-16f1-4d6f-a40b-e630f71ebb98,0,1,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0,1,b456d820-8034-4381-960d-66d9f86b0a4b,b456d820-8034-4381-960d-66d9f86b0a4b,0,1,bd55fd03-cf67-4333-a554-98e03d18f780,bd55fd03-cf67-4333-a554-98e03d18f780,0,1,4cca4c80-62f5-4205-8196-78fcfa83de2f,4cca4c80-62f5-4205-8196-78fcfa83de2f,0,1,1a7c774d-5b86-4051-b797-3081e19fa30a,1a7c774d-5b86-4051-b797-3081e19fa30a,0,1,00949768-5833-4fe2-8752-b009d1bceef8,00949768-5833-4fe2-8752-b009d1bceef8,0,1,c5b3ca21-8f7b-4933-853c-7d95b17b5631,c5b3ca21-8f7b-4933-853c-7d95b17b5631,0,1,8b0faa1e-09da-4ba4-894e-e86abc5d39df,8b0faa1e-09da-4ba4-894e-e86abc5d39df,0,1,cb50b309-1b6c-400c-9e9e-67204dcccaae,cb50b309-1b6c-400c-9e9e-67204dcccaae,0,1,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,0,1,2a365474-edba-4e3d-a69c-c856be0e4a4a,2a365474-edba-4e3d-a69c-c856be0e4a4a,0,1,c46fd680-efbe-49a8-91f0-73e36d791fa9,c46fd680-efbe-49a8-91f0-73e36d791fa9,0,1,6995567b-5a3c-4e03-9fb4-e22363ed6555,6995567b-5a3c-4e03-9fb4-e22363ed6555,0,1,32c38c2b-072d-4cf2-bf9a-f9c4b4c463e8,32c38c2b-072d-4cf2-bf9a-f9c4b4c463e8,0,1,375fd076-c54c-43c1-8d11-12607c0ce04e,375fd076-c54c-43c1-8d11-12607c0ce04e,0,1,3b9ded5a-f656-4a33-90f3-d7dbff234da9,3b9ded5a-f656-4a33-90f3-d7dbff234da9,0,1,eae94ac3-3aa3-49f0-940f-51c89fec66e2,eae94ac3-3aa3-49f0-940f-51c89fec66e2,0,1,a2b43b21-56e7-4644-9345-d4918a1dfe8e,a2b43b21-56e7-4644-9345-d4918a1dfe8e,0,1,6ef24453-482d-4a6e-a088-7a2faf8de1c8,6ef24453-482d-4a6e-a088-7a2faf8de1c8,0,1,b9f6c8a3-e9bc-4dae-b583-ca20e91eb261,b9f6c8a3-e9bc-4dae-b583-ca20e91eb261,0,1,1a0cdbe5-ad4a-42dc-a1c9-54c737436e20,1a0cdbe5-ad4a-42dc-a1c9-54c737436e20,0,1,f4cdb0ac-8993-4e8c-9d13-128710dec273,f4cdb0ac-8993-4e8c-9d13-128710dec273,0,1,fbe620e1-a3a3-48aa-89e8-4562fdd24f1e,fbe620e1-a3a3-48aa-89e8-4562fdd24f1e,0,1,b4f824aa-9b2f-40c9-a5f6-98d452019c38,b4f824aa-9b2f-40c9-a5f6-98d452019c38,0,1,b8a966ba-3452-44df-91d0-7040ecd3e4c2,b8a966ba-3452-44df-91d0-7040ecd3e4c2,0,1,80d6883d-c608-4fe5-acae-78bc45e40e5f,80d6883d-c608-4fe5-acae-78bc45e40e5f,0,1,213b173a-c3b7-449c-a618-d479c4dc38e8,213b173a-c3b7-449c-a618-d479c4dc38e8,0,1,7a64dffc-5cfe-41e2-bd55-fbf4957559a4,7a64dffc-5cfe-41e2-bd55-fbf4957559a4,0,1,a78249aa-ca9f-4bee-b00d-68ff59ea81a4,a78249aa-ca9f-4bee-b00d-68ff59ea81a4,0,1,7534148d-0124-49a2-a446-c6205d153153,7534148d-0124-49a2-a446-c6205d153153,0,1,32ed8a10-7177-4e45-866e-04a1b6831570,32ed8a10-7177-4e45-866e-04a1b6831570,0,1,e2a90d7a-5480-47cd-b296-8d60d8baf7f9,e2a90d7a-5480-47cd-b296-8d60d8baf7f9,0,1,8190a432-1037-4334-b2c7-bae39f7f9442,8190a432-1037-4334-b2c7-bae39f7f9442,0,1,4733e5c1-8198-408b-8903-866d3b0fdc43,4733e5c1-8198-408b-8903-866d3b0fdc43,0,1,e1fc5146-37c5-4207-af05-7250976bd406,e1fc5146-37c5-4207-af05-7250976bd406,0,1,60038cd9-8d01-44b1-9d3f-f3a31e59e5db,60038cd9-8d01-44b1-9d3f-f3a31e59e5db,0,1,f0bfb98b-cc43-4b6c-8166-9b81b4c22cb0,f0bfb98b-cc43-4b6c-8166-9b81b4c22cb0,0,1,f5e27159-789a-4d34-ac51-fd99d753b83a,f5e27159-789a-4d34-ac51-fd99d753b83a,0,1,f1cb02ff-a2f0-4a34-93fa-e47c6e210ee1,f1cb02ff-a2f0-4a34-93fa-e47c6e210ee1,0,1,7183d525-212a-42f3-a7e5-eb9deaeaa4a3,7183d525-212a-42f3-a7e5-eb9deaeaa4a3,0,1,b82b27cc-e81c-4b7c-9833-ea4f2ce21edb,b82b27cc-e81c-4b7c-9833-ea4f2ce21edb,0,1,4347f77e-bad9-4525-90a0-794787f03585,4347f77e-bad9-4525-90a0-794787f03585,0,1,cfde3330-2bed-4273-8d69-c213ebdde247,cfde3330-2bed-4273-8d69-c213ebdde247,0,1,2d6ca049-89a5-437e-971c-b8e42f61b460,2d6ca049-89a5-437e-971c-b8e42f61b460,0,1,c450ebe1-4223-4a7a-b9fa-374d5c13dc8c,c450ebe1-4223-4a7a-b9fa-374d5c13dc8c,0,1,271d58d0-4449-40cc-bae9-cc4c50eebd9b,271d58d0-4449-40cc-bae9-cc4c50eebd9b,0,1,58df9322-c786-4dd1-af49-7cd164b378da,58df9322-c786-4dd1-af49-7cd164b378da,0,1,8d48de7f-61d6-4462-9c14-f728206a482c,8d48de7f-61d6-4462-9c14-f728206a482c,0,1,a87e890a-8924-4f56-9e37-04579b95297a,a87e890a-8924-4f56-9e37-04579b95297a,0,1,c71d4fa4-86b0-41e2-8b6a-cfb91e131eaf,c71d4fa4-86b0-41e2-8b6a-cfb91e131eaf,0,1,4c1f2581-ee42-4df5-9169-20205a18a9be,4c1f2581-ee42-4df5-9169-20205a18a9be,0,1,bb3d9ea3-8895-4950-9ee9-4249ca983d48,bb3d9ea3-8895-4950-9ee9-4249ca983d48,0,1,86ea21fa-5ecc-4d81-b6ad-d71e7ed39009,86ea21fa-5ecc-4d81-b6ad-d71e7ed39009,0,1,b806d2b6-bbd1-4abd-9471-7791603a2fcf,b806d2b6-bbd1-4abd-9471-7791603a2fcf,0,1,ecee1ec8-aa1f-4b90-a1b3-2538a53c0dd7,ecee1ec8-aa1f-4b90-a1b3-2538a53c0dd7,0,1,34f50dd9-de16-4013-a2ef-6595d9c28930,34f50dd9-de16-4013-a2ef-6595d9c28930,0,1,56fcca65-3429-4409-bce7-f434f6530a74,56fcca65-3429-4409-bce7-f434f6530a74,0,1,5236ca8d-a4a6-4df8-a6a3-5cfe02c49aeb,5236ca8d-a4a6-4df8-a6a3-5cfe02c49aeb,0,1,bcfabf25-ae2f-4f73-836c-2cab3617a0b6,bcfabf25-ae2f-4f73-836c-2cab3617a0b6,0,1,b286f047-a4d0-4808-b1b4-27997ead6d49,b286f047-a4d0-4808-b1b4-27997ead6d49,0,1,49da2d3a-657a-4cfd-8e37-422b96d2cda5,49da2d3a-657a-4cfd-8e37-422b96d2cda5,0,1,fced16ae-abee-4fbe-9582-dfd368d5610a,fced16ae-abee-4fbe-9582-dfd368d5610a,0,1,afe60bad-1585-487f-9a39-9b9e031f9576,afe60bad-1585-487f-9a39-9b9e031f9576,0,1,4c4f0475-bd11-40c8-af0d-8affec6f838d,4c4f0475-bd11-40c8-af0d-8affec6f838d,0,1,7aee36ac-bbd1-4b06-8266-b7325fb9ce3c,7aee36ac-bbd1-4b06-8266-b7325fb9ce3c,0,1,855439d7-a621-48f5-b6d9-bc2bbd11ad90,855439d7-a621-48f5-b6d9-bc2bbd11ad90,0,1,4e0ec0f0-eb44-41b0-b950-88fdb6ac0db2,4e0ec0f0-eb44-41b0-b950-88fdb6ac0db2,0,1,2f25e742-555b-4db8-bff2-2d345ce2a93a,2f25e742-555b-4db8-bff2-2d345ce2a93a,0,1,303d8c17-4303-4f1d-8bed-51cd7ea0a4b2,303d8c17-4303-4f1d-8bed-51cd7ea0a4b2,0,1,46affd3a-f31c-4432-bd58-2f2b1ed9bc4e,46affd3a-f31c-4432-bd58-2f2b1ed9bc4e,0,1,a7fee9d3-569d-4b5b-bd47-44790e0095f5,a7fee9d3-569d-4b5b-bd47-44790e0095f5,0,1,93701593-5ac8-4266-b471-7e9ed35a9c3e,93701593-5ac8-4266-b471-7e9ed35a9c3e,0,1,0fdb864e-ede9-4777-835c-0804968ee544,0fdb864e-ede9-4777-835c-0804968ee544,0,1,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,0,1,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,0,1,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,0,1,5dee9814-fe38-4631-8148-8d6c87ef6f47,5dee9814-fe38-4631-8148-8d6c87ef6f47,0,1,37d17053-5c2b-4972-b6a5-a589f2ddbde6,37d17053-5c2b-4972-b6a5-a589f2ddbde6,0,1,c349968a-3f87-425b-8efb-d847934dee4b,c349968a-3f87-425b-8efb-d847934dee4b,0,1,3bb8dc33-970c-4c58-9036-ce716d963847,3bb8dc33-970c-4c58-9036-ce716d963847,0,1,b3ff39fa-f665-4d01-9a2a-69722e6b1071,b3ff39fa-f665-4d01-9a2a-69722e6b1071,0,1,0abacb0a-ce00-474e-8aec-35685c51ddef,0abacb0a-ce00-474e-8aec-35685c51ddef,0,1,ae407b17-03aa-4268-8603-58d6714dae89,ae407b17-03aa-4268-8603-58d6714dae89,0,1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,0,1,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,0,1,5bb6e52c-ac26-4143-8e90-f04f703f823b,5bb6e52c-ac26-4143-8e90-f04f703f823b,0,1,ead0a902-bd87-4ee5-bfee-1a131dd28bd6,ead0a902-bd87-4ee5-bfee-1a131dd28bd6,0,1,d4ce8dd2-a391-49d0-9742-a6a6a07b1684,d4ce8dd2-a391-49d0-9742-a6a6a07b1684,0,1,579baaa4-6493-4d99-8744-6399757295c7,579baaa4-6493-4d99-8744-6399757295c7,0,1,9c1325af-7492-42be-b3af-51b692534510,9c1325af-7492-42be-b3af-51b692534510,0,1,dface15c-cd65-4fb1-b4dd-b513086d3f8e,dface15c-cd65-4fb1-b4dd-b513086d3f8e,0,1,ae6d0e12-8857-476c-b4b2-f03295cbed3e,ae6d0e12-8857-476c-b4b2-f03295cbed3e,0,1,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,0,1,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,0,1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,0,1,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,0,1,b7e85f5c-4312-44c6-895a-3f636a8c78d8,b7e85f5c-4312-44c6-895a-3f636a8c78d8,0,1,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,0,1,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,0,1,a1afacc5-f49a-4df2-a44d-479594d50179,a1afacc5-f49a-4df2-a44d-479594d50179,0,1,fe70eba3-7477-4a38-a511-d69960abb928,fe70eba3-7477-4a38-a511-d69960abb928,0,1,6534ea96-2145-49e6-9739-f59459dc7f6b,6534ea96-2145-49e6-9739-f59459dc7f6b,0,1,f49bffa0-cad6-4801-b82e-21aa580e72e6,f49bffa0-cad6-4801-b82e-21aa580e72e6,0,1,bbbfb817-8db3-4415-86c3-af028276d6e9,bbbfb817-8db3-4415-86c3-af028276d6e9,0,1,6a91112c-f6cc-47a0-9d26-a36c7702af7d,6a91112c-f6cc-47a0-9d26-a36c7702af7d,0,1,cb92dc2e-6053-4233-a408-4464514b1257,cb92dc2e-6053-4233-a408-4464514b1257,0,1,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,0,1,85550a7a-8fe0-4296-ace5-63cf053536b4,85550a7a-8fe0-4296-ace5-63cf053536b4,0,1,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,0,1,3f8b6411-6606-4d27-891e-7c77be47c5f9,3f8b6411-6606-4d27-891e-7c77be47c5f9,0,1,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,0,1,f8f0857f-2c75-471a-ae0b-a3a265e1eb25,f8f0857f-2c75-471a-ae0b-a3a265e1eb25,0,1,a23f97fb-7ac9-4941-a2c6-bbff6c36ac12,a23f97fb-7ac9-4941-a2c6-bbff6c36ac12,0,1,80cf54ed-8677-4c89-a378-0abef6c64010,80cf54ed-8677-4c89-a378-0abef6c64010,0,1,f0dec7b3-2d6a-44ce-a1da-9c71ccd37539,f0dec7b3-2d6a-44ce-a1da-9c71ccd37539,0,1,56ee3afd-5ae6-421e-b9f3-26505e40f100,56ee3afd-5ae6-421e-b9f3-26505e40f100,0,1,63c9a839-78b2-4706-b380-5aedf6914930,63c9a839-78b2-4706-b380-5aedf6914930,0,1,40f5c1cb-2654-4738-bb44-6734b0e3490b,40f5c1cb-2654-4738-bb44-6734b0e3490b,0,1,2ec484b1-95eb-43a7-9430-1c1ef49f05af,2ec484b1-95eb-43a7-9430-1c1ef49f05af,0,1,1a314ce2-03bc-4267-89a9-bb5bb866f552,1a314ce2-03bc-4267-89a9-bb5bb866f552,0,1,e3b783a6-5ea2-4cd4-955b-df63d93c1f25,e3b783a6-5ea2-4cd4-955b-df63d93c1f25,0,1,f8ab62ad-7776-49ae-b1bb-51bea9a9992b,f8ab62ad-7776-49ae-b1bb-51bea9a9992b,0,1,e859dd18-8baf-49c0-b7a0-1205b6c125d3,e859dd18-8baf-49c0-b7a0-1205b6c125d3,0,1,778c28e6-4548-45f3-a1bc-cb1dbf0cb388,778c28e6-4548-45f3-a1bc-cb1dbf0cb388,0,1,a2d6f2d9-0610-4ca9-bc15-58e341a049a4,a2d6f2d9-0610-4ca9-bc15-58e341a049a4,0,1,4dbf114a-5402-40b0-9cab-19601aa8328e,4dbf114a-5402-40b0-9cab-19601aa8328e,0,1,a0856ca2-6a66-4108-b6d4-82443cdccca6,a0856ca2-6a66-4108-b6d4-82443cdccca6,0,1,378b0708-a0a1-4c82-b55a-796acb27e696,378b0708-a0a1-4c82-b55a-796acb27e696,0,1,8e462c0e-c67a-45e9-9871-1f976b01632d,8e462c0e-c67a-45e9-9871-1f976b01632d,0,1,c5335e1f-3e47-46b7-b695-0653f825d855,c5335e1f-3e47-46b7-b695-0653f825d855,0,1,d7faad11-1e35-460c-8943-49370f328c03,d7faad11-1e35-460c-8943-49370f328c03,0,1,e4726010-85c5-4ccc-b574-4b3b55f0d391,e4726010-85c5-4ccc-b574-4b3b55f0d391,0,1,5d6770f2-9b3d-45c7-9e34-4c8626e482cf,5d6770f2-9b3d-45c7-9e34-4c8626e482cf,0,1,b01ace0e-7f21-4b6b-b751-074dcd9a8f54,b01ace0e-7f21-4b6b-b751-074dcd9a8f54,0,1,1f4f839a-4e19-45b8-a988-13ee604c269c,1f4f839a-4e19-45b8-a988-13ee604c269c,0,1,b3aa97e1-baef-45f4-9179-052f35527a5e,b3aa97e1-baef-45f4-9179-052f35527a5e,0,1,d613941f-ed4c-4957-b469-ea6b0d2a121d,d613941f-ed4c-4957-b469-ea6b0d2a121d,0,1,0d8d08e3-194f-416c-a1e0-aa92b40b7911,0d8d08e3-194f-416c-a1e0-aa92b40b7911,0,1,af0178fe-eb3a-485b-9acf-35c8702aa330,af0178fe-eb3a-485b-9acf-35c8702aa330,0,1,9e2c01b1-ccfe-4a68-a6af-8284e3e2396f,9e2c01b1-ccfe-4a68-a6af-8284e3e2396f,0,1,c513ceb0-0855-43ce-a311-c9bea88e2563,c513ceb0-0855-43ce-a311-c9bea88e2563,0,1,974bfc13-85c2-454a-b562-e72384eb4c31,974bfc13-85c2-454a-b562-e72384eb4c31,0,1,69cd6adc-b129-4fbc-804d-8d5aaef77280,69cd6adc-b129-4fbc-804d-8d5aaef77280,0,1,3431a3de-cb9d-46dc-b597-3203831796a9,3431a3de-cb9d-46dc-b597-3203831796a9,0,1,f3866271-04ed-4963-852e-cf41e9e18e1d,f3866271-04ed-4963-852e-cf41e9e18e1d,0,1,b77e5ec2-35cd-43ae-957f-af35214fa621,b77e5ec2-35cd-43ae-957f-af35214fa621,0,1,4a04d83d-cadd-4f36-9ec8-f926259c18ba,4a04d83d-cadd-4f36-9ec8-f926259c18ba,0,1,85e670c0-1616-4611-984c-3d40e890b2e9,85e670c0-1616-4611-984c-3d40e890b2e9,0,1,48ed25b0-afb9-414b-9a4e-8647fbdd95c3,48ed25b0-afb9-414b-9a4e-8647fbdd95c3,0,1,1e3a1148-1e9c-47b0-8f3c-f218c3b0094f,1e3a1148-1e9c-47b0-8f3c-f218c3b0094f,0,1,f1693207-2637-412a-972f-2bc79b9c7fc8,f1693207-2637-412a-972f-2bc79b9c7fc8,0,1,da59378e-0a97-4cff-977b-cc51967068ee,da59378e-0a97-4cff-977b-cc51967068ee,0,1,bbaad46d-f60d-49e6-a077-075366bca47e,bbaad46d-f60d-49e6-a077-075366bca47e,0,1,0d9f5703-91e4-4769-bedd-5bd974f2f617,0d9f5703-91e4-4769-bedd-5bd974f2f617,0,1,926cdf17-1929-43d6-8205-858aab558ad9,926cdf17-1929-43d6-8205-858aab558ad9,0,1,5ec6838f-2d70-4f91-b41b-16adfe8ed587,5ec6838f-2d70-4f91-b41b-16adfe8ed587,0,1,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,0,1,bee8b8a0-f058-44cb-822c-620351567627,bee8b8a0-f058-44cb-822c-620351567627,0,1,26365e29-903b-47fd-ad96-e0d87f5d6e87,26365e29-903b-47fd-ad96-e0d87f5d6e87,0,1,569180cb-ce54-4267-94b9-332e35e3c17d,569180cb-ce54-4267-94b9-332e35e3c17d,0,1,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,0,1,a2c42946-1cdb-457a-a45b-97781cfb4a15,a2c42946-1cdb-457a-a45b-97781cfb4a15,0,1,20adf54c-044c-4bea-8028-b6d20917a030,20adf54c-044c-4bea-8028-b6d20917a030,0,1,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,0,1,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,0,1,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,0,1,4033eb31-8281-402a-afff-431fa36e589e,4033eb31-8281-402a-afff-431fa36e589e,0,1,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,0,1,f59488c7-4643-4988-8043-5c9724e04279,f59488c7-4643-4988-8043-5c9724e04279,0,1,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,0,1,77149f7a-8a76-4569-9487-991c41e132ef,77149f7a-8a76-4569-9487-991c41e132ef,0,1,9e1be65e-986f-4d21-91f0-15c66db0c947,9e1be65e-986f-4d21-91f0-15c66db0c947,0,1,75a0f8f1-6d8d-47d0-81c5-20b5e55b9cd1,75a0f8f1-6d8d-47d0-81c5-20b5e55b9cd1,0,1,d2fe4578-a1f8-4586-b052-fa71d25365c9,d2fe4578-a1f8-4586-b052-fa71d25365c9,0,1,f31f3dab-5796-47ac-a54d-3081f8cad817,f31f3dab-5796-47ac-a54d-3081f8cad817,0,1,db497857-33d3-49a1-b328-dfc62c973ecb,db497857-33d3-49a1-b328-dfc62c973ecb,0,1,139c001c-7b07-465a-9187-399ad32d294f,139c001c-7b07-465a-9187-399ad32d294f,0,1,5d228ce4-069e-4f98-beed-b8e1de17c3d9,5d228ce4-069e-4f98-beed-b8e1de17c3d9,0,1,9770fc09-87bf-4fce-9b0d-410efd30edae,9770fc09-87bf-4fce-9b0d-410efd30edae,0,1,f3d8590a-dcfa-4d41-8d03-642b99ffa040,f3d8590a-dcfa-4d41-8d03-642b99ffa040,0,1,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,0,1,20156709-1481-4007-8e89-9ce79fc589fc,20156709-1481-4007-8e89-9ce79fc589fc,0,1,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,0,1,7e7c5abd-b645-4de5-a40e-5805ec4456e2,7e7c5abd-b645-4de5-a40e-5805ec4456e2,0,1,763a16c3-a728-4b65-a485-705990310b4a,763a16c3-a728-4b65-a485-705990310b4a,0,1,65338920-c744-4d1e-b351-848b90a3feda,65338920-c744-4d1e-b351-848b90a3feda,0,1,2aedb1ac-caf1-45c7-913e-82a36637d5d4,2aedb1ac-caf1-45c7-913e-82a36637d5d4,0,1,56177464-5e9f-4598-96bc-eb311993c503,56177464-5e9f-4598-96bc-eb311993c503,0,1,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,0,1,bdfe65f4-4174-4e66-915c-943137981cf0,bdfe65f4-4174-4e66-915c-943137981cf0,0,1,c895d58a-5be1-4157-81af-f4f6db9b4b9e,c895d58a-5be1-4157-81af-f4f6db9b4b9e,0,1,8ce6cc1a-8570-4704-b9a3-44e815b2e753,8ce6cc1a-8570-4704-b9a3-44e815b2e753,0,1,7d336fdd-5cbf-4c92-a783-f451f7590502,7d336fdd-5cbf-4c92-a783-f451f7590502,0,1,05243f56-7e9b-4a61-8efb-1b5e525fff21,05243f56-7e9b-4a61-8efb-1b5e525fff21,0,1,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,0,1,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,0,1,86760ecb-2ddd-40ce-bc4f-94c23027a55e,86760ecb-2ddd-40ce-bc4f-94c23027a55e,0,1,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,0,1,7aa86a2d-2b47-447e-8901-806411011279,7aa86a2d-2b47-447e-8901-806411011279,0,1,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,0,1,903af13a-1f73-4145-a3d0-971c3be5fbe6,903af13a-1f73-4145-a3d0-971c3be5fbe6,0,1,37722a34-1148-4cc8-95e6-4645ae9cca98,37722a34-1148-4cc8-95e6-4645ae9cca98,0,1,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,0,1,fca0dfad-f853-4694-9ce9-53a3a10f59b7,fca0dfad-f853-4694-9ce9-53a3a10f59b7,0,1,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,0,1,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,0,1,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,0,1,1470f052-f032-46bc-b1ee-54555e725dfd,1470f052-f032-46bc-b1ee-54555e725dfd,0,1,497cbe4d-586d-48a2-8e98-d20e3e09ed42,497cbe4d-586d-48a2-8e98-d20e3e09ed42,0,1,150c9d05-4ccc-4cb7-879d-b1d9c3534343,150c9d05-4ccc-4cb7-879d-b1d9c3534343,0,1,38b7679d-3739-4572-baf2-d8c7b2a94f0a,38b7679d-3739-4572-baf2-d8c7b2a94f0a,0,1,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,0,1,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,0,1,1281fe19-bbca-4a4f-84d8-14187e62000f,1281fe19-bbca-4a4f-84d8-14187e62000f,0,1,953dbad6-4f5c-4319-874a-db358a77d001,953dbad6-4f5c-4319-874a-db358a77d001,0,1,69ceac29-06d3-45f2-b914-7966465cd0d3,69ceac29-06d3-45f2-b914-7966465cd0d3,0,1,cc34bd23-de0a-4b09-8333-e4693576b9f4,cc34bd23-de0a-4b09-8333-e4693576b9f4,0,1,b4cb92fb-ad82-44ed-9203-397b412b3453,b4cb92fb-ad82-44ed-9203-397b412b3453,0,1,b690721d-960b-4374-8d2c-feed3a2b354b,b690721d-960b-4374-8d2c-feed3a2b354b,0,1,271243d3-1871-4a0a-bf7f-63bacacf0a59,271243d3-1871-4a0a-bf7f-63bacacf0a59,0,1,bc10ad8f-383c-469a-8c0e-60805161055b,bc10ad8f-383c-469a-8c0e-60805161055b,0,1,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,0,1,ee8af8ee-e49a-4511-9a91-48814ab99d23,ee8af8ee-e49a-4511-9a91-48814ab99d23,0,1,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,0,1,6fbf844e-ee8d-490f-9177-6392d262312f,6fbf844e-ee8d-490f-9177-6392d262312f,0,1,65000437-bd07-4841-a458-679d44768c46,65000437-bd07-4841-a458-679d44768c46,0,1,9b7051d5-abc4-416c-a0e6-515d120d78e4,9b7051d5-abc4-416c-a0e6-515d120d78e4,0,1,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,0,1,869938e6-6310-4326-bd15-5b91fe2e0911,869938e6-6310-4326-bd15-5b91fe2e0911,0,1,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,0,1,a156521a-ece1-49d3-8056-1c3508273c45,a156521a-ece1-49d3-8056-1c3508273c45,0,1,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,0,1,10018f80-3138-4089-bf9a-a5f178f1e295,10018f80-3138-4089-bf9a-a5f178f1e295,0,1,43aba109-4b7f-45ef-9c30-8b754e81911b,43aba109-4b7f-45ef-9c30-8b754e81911b,0,1,4ccd72e1-7fd7-4a3b-8428-71b44992937e,4ccd72e1-7fd7-4a3b-8428-71b44992937e,0,1,46077650-2b2c-4319-8279-41f277971669,46077650-2b2c-4319-8279-41f277971669,0,1,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,0,1,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,0,1,e82ebd72-7b5a-4f45-b853-1001bf680a05,e82ebd72-7b5a-4f45-b853-1001bf680a05,0,1,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,0,1,e9e9b733-e97a-430d-95ce-45ea27751f64,e9e9b733-e97a-430d-95ce-45ea27751f64,0,1,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,0,1,3dd50c66-27f7-4f1e-86e9-c709995c8609,3dd50c66-27f7-4f1e-86e9-c709995c8609,0,1,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,0,1,ed1369c5-c274-45bd-ae91-7648565ae09f,ed1369c5-c274-45bd-ae91-7648565ae09f,0,1,8d0fce61-a22f-4033-9e03-3f00c4a21722,8d0fce61-a22f-4033-9e03-3f00c4a21722,0,1,bfb3f026-e940-49c3-ac30-408186f9e11e,bfb3f026-e940-49c3-ac30-408186f9e11e,0,1,e1dc83eb-a8cd-454b-8de8-cff2049be78c,e1dc83eb-a8cd-454b-8de8-cff2049be78c,0,1,9edd9288-1463-4d67-b9f0-40f351d978e9,9edd9288-1463-4d67-b9f0-40f351d978e9,0,1,c9db6c68-965f-4567-b26e-5d497a389de1,c9db6c68-965f-4567-b26e-5d497a389de1,0,1,4da2f65d-56bd-4140-9b31-e5ccac4a800a,4da2f65d-56bd-4140-9b31-e5ccac4a800a,0,1,eb163bba-b94c-4a78-9c2d-7b519325e3d4,eb163bba-b94c-4a78-9c2d-7b519325e3d4,0,1,939bdb9a-294b-4b42-a56f-030f69bc29c4,939bdb9a-294b-4b42-a56f-030f69bc29c4,0,1,ee7a763b-bcbf-4ff3-89af-eb7965b33515,ee7a763b-bcbf-4ff3-89af-eb7965b33515,0,1,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,0,1,1685c406-d0cb-4e0a-a3b0-036c8c22942a,1685c406-d0cb-4e0a-a3b0-036c8c22942a,0,1,892dc4c4-a72b-4dbf-af62-9f9ae0e05aa1,892dc4c4-a72b-4dbf-af62-9f9ae0e05aa1,0,1,81db41a6-2580-4a69-b1fd-57cfd48a7efa,81db41a6-2580-4a69-b1fd-57cfd48a7efa,0,1,0db8b3b2-bf24-4006-9897-797084c241ef,0db8b3b2-bf24-4006-9897-797084c241ef,0,1,fd9d34d9-9c9c-4c05-9c08-b93d4b237adf,fd9d34d9-9c9c-4c05-9c08-b93d4b237adf,0,1,381b7dae-6b34-42a7-9fee-2a4af8a1cc18,381b7dae-6b34-42a7-9fee-2a4af8a1cc18,0,1,31e9ca0d-9ae1-4740-a0a6-2739aa29c99f,31e9ca0d-9ae1-4740-a0a6-2739aa29c99f,0,1,20091427-d173-40ca-b2c4-53ee99b0b5ae,20091427-d173-40ca-b2c4-53ee99b0b5ae,0,1,14cbde39-a39a-48e5-9b72-b798a0bcea3f,14cbde39-a39a-48e5-9b72-b798a0bcea3f,0,1,56871c10-e3af-4679-afad-3baa910d73bb,56871c10-e3af-4679-afad-3baa910d73bb,0,1,f81b51c5-57e4-41f8-9ad5-3d2717351b95,f81b51c5-57e4-41f8-9ad5-3d2717351b95,0,1,3c09f0cd-fbec-46ae-95b0-a00cc53c07ef,3c09f0cd-fbec-46ae-95b0-a00cc53c07ef,0,1,de0a39e0-d37d-47c6-a019-e44836edc8d1,de0a39e0-d37d-47c6-a019-e44836edc8d1,0,1,1fdcc1e7-ad53-409e-ba13-84c6429740cd,1fdcc1e7-ad53-409e-ba13-84c6429740cd,0,1,71d544bf-15c1-4581-8baa-ac126308425c,71d544bf-15c1-4581-8baa-ac126308425c,0,1,1bd0b688-d0fb-4ca2-85aa-4bd82b72ccc2,1bd0b688-d0fb-4ca2-85aa-4bd82b72ccc2,0,1,7acfe30e-73cb-465a-88f2-92b7275dc49b,7acfe30e-73cb-465a-88f2-92b7275dc49b,0,1,8e387dac-5029-49da-a013-355df0a51a44,8e387dac-5029-49da-a013-355df0a51a44,0,1,13859664-8307-40e8-855b-557b9cf2f1ec,13859664-8307-40e8-855b-557b9cf2f1ec,0,1,e4397fba-507f-497c-9414-7d08ccd4d799,e4397fba-507f-497c-9414-7d08ccd4d799,0,1,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,0,1,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,0,1,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,0,1,d915d338-3e4c-45c3-aef5-a07cf41b05f6,d915d338-3e4c-45c3-aef5-a07cf41b05f6,0,1,978640a2-5c4b-4e21-857e-34f00840fba8,978640a2-5c4b-4e21-857e-34f00840fba8,0,1,da2913e3-a29b-423f-9aae-08fed56a7d90,da2913e3-a29b-423f-9aae-08fed56a7d90,0,1,edaed496-d446-423a-a709-434cb643ad5e,edaed496-d446-423a-a709-434cb643ad5e,0,1,7649bd7b-fe8c-4338-80fc-153160a5e538,7649bd7b-fe8c-4338-80fc-153160a5e538,0,1,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,0,1,6137605e-4850-44ec-b4ee-048bd8e0ec3a,6137605e-4850-44ec-b4ee-048bd8e0ec3a,0,1,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,0,1,0e6e9372-beb4-478e-9428-71b19a60739b,0e6e9372-beb4-478e-9428-71b19a60739b,0,1,32b11498-542f-46b2-829f-1525936ab7fa,32b11498-542f-46b2-829f-1525936ab7fa,0,1,64afa916-4750-4008-8c6c-2a470fb11283,64afa916-4750-4008-8c6c-2a470fb11283,0,1,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,0,1,35354abc-9a76-4ee8-8796-c24b37365ea0,35354abc-9a76-4ee8-8796-c24b37365ea0,0,1,840a1d4d-e5f6-4a88-886f-03830fe4f99a,840a1d4d-e5f6-4a88-886f-03830fe4f99a,0,1,7078977f-31bf-427e-ac37-e309d81fe999,7078977f-31bf-427e-ac37-e309d81fe999,0,1,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,0,1,d8854555-9e15-4d82-a1fd-656a848a8e8a,d8854555-9e15-4d82-a1fd-656a848a8e8a,0,1,53191842-ea05-4491-84d7-071cd201992d,53191842-ea05-4491-84d7-071cd201992d,0,1,86c70449-4cf7-4baf-9742-b82b134ed929,86c70449-4cf7-4baf-9742-b82b134ed929,0,1,af3b1881-163a-4c07-a1d9-77ceadf59c77,af3b1881-163a-4c07-a1d9-77ceadf59c77,0,1,b78be6fb-7db8-48c8-ba7b-aab1fea34890,b78be6fb-7db8-48c8-ba7b-aab1fea34890,0,1,bd27276a-e80c-4135-b341-f99a816ffe86,bd27276a-e80c-4135-b341-f99a816ffe86,0,1,35306678-147c-4ad1-a3c6-c80a11afa22f,35306678-147c-4ad1-a3c6-c80a11afa22f,0,1,0da75726-ae71-4d83-a696-a774c787a8a2,0da75726-ae71-4d83-a696-a774c787a8a2,0,1,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,0,1,896a7267-0198-4cbb-b6e6-7aa157c0cc61,896a7267-0198-4cbb-b6e6-7aa157c0cc61,0,1,2005bf54-219b-4111-bff1-e12e2c6dca3e,2005bf54-219b-4111-bff1-e12e2c6dca3e,0,1,abab8f73-d705-4350-b44d-f912649a2190,abab8f73-d705-4350-b44d-f912649a2190,0,1,20c9c25c-f8c9-429f-84bd-543cb809abef,20c9c25c-f8c9-429f-84bd-543cb809abef,0,1,dc5f451e-3275-43a8-9f48-45b83220d461,dc5f451e-3275-43a8-9f48-45b83220d461,0,1,028f5e81-61df-4d13-876d-781c5fd18ee6,028f5e81-61df-4d13-876d-781c5fd18ee6,0,1,3cbb59ef-7f64-4590-8a54-ba01e78283c3,3cbb59ef-7f64-4590-8a54-ba01e78283c3,0,1,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,0,1,388eb513-fadb-40cd-8a7b-33b904dd758e,388eb513-fadb-40cd-8a7b-33b904dd758e,0,1,0613c6aa-e1fe-4632-a396-a17ec773158f,0613c6aa-e1fe-4632-a396-a17ec773158f,0,1,1a330987-4c79-4ab7-b250-db8d32c78751,1a330987-4c79-4ab7-b250-db8d32c78751,0,1,555062ed-9a04-41d8-877f-0a667e9a08cd,555062ed-9a04-41d8-877f-0a667e9a08cd,0,1,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,0,1,ac160e1c-fef7-4625-84e0-964b397f6bdb,ac160e1c-fef7-4625-84e0-964b397f6bdb,0,1,b8946d9c-dda8-4b94-8cbf-db62b647c53e,b8946d9c-dda8-4b94-8cbf-db62b647c53e,0,1,24215916-7732-4030-9f88-163f644e94f7,24215916-7732-4030-9f88-163f644e94f7,0,1,69697945-9748-4cea-a20f-e244b46de2e8,69697945-9748-4cea-a20f-e244b46de2e8,0,1,68538fd1-262c-43ea-b09f-8a66643a0062,68538fd1-262c-43ea-b09f-8a66643a0062,0,1,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,0,1,82ad24cc-d9f8-440b-a720-e204101d85da,82ad24cc-d9f8-440b-a720-e204101d85da,0,1,8010065f-aec8-4768-85ec-9eb7b2b01e7e,8010065f-aec8-4768-85ec-9eb7b2b01e7e,0,1,a44348cb-e20c-4afd-8483-3b9c735b352c,a44348cb-e20c-4afd-8483-3b9c735b352c,0,1,ebfe4c74-6e16-4b64-8a52-cea95c446903,ebfe4c74-6e16-4b64-8a52-cea95c446903,0,1,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,0,1,e6ae5164-fe3b-48fd-8180-f31941e35238,e6ae5164-fe3b-48fd-8180-f31941e35238,0,1,d912e472-9553-4b96-8b16-7aaff6c14239,d912e472-9553-4b96-8b16-7aaff6c14239,0,1,b04018b5-a74d-43c9-8519-6cc8aa23fe09,b04018b5-a74d-43c9-8519-6cc8aa23fe09,0,1,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,0,1,9283277f-2b75-4c3a-810a-8d4071b3afcc,9283277f-2b75-4c3a-810a-8d4071b3afcc,0,1,d03d5b18-57a2-43c0-99ea-8ad9d5788179,d03d5b18-57a2-43c0-99ea-8ad9d5788179,0,1,c491a7fc-14f9-498a-b7dd-575dfc66878e,c491a7fc-14f9-498a-b7dd-575dfc66878e,0,1,db15f8eb-4736-4b47-9cee-3e6883f0888c,db15f8eb-4736-4b47-9cee-3e6883f0888c,0,1,59064eb2-2770-4f1c-96bd-801926fe68ef,59064eb2-2770-4f1c-96bd-801926fe68ef,0,1,9a388c1c-bf74-464e-be2d-bdb2e36232b5,9a388c1c-bf74-464e-be2d-bdb2e36232b5,0,1,06e9fb36-cc47-4517-baac-d666703bdf03,06e9fb36-cc47-4517-baac-d666703bdf03,0,1,cef67574-e5cd-40f9-b7b9-47cff1a1f703,cef67574-e5cd-40f9-b7b9-47cff1a1f703,0,1,6b2340d7-687f-43a3-8eb8-8ddb86712466,6b2340d7-687f-43a3-8eb8-8ddb86712466,0,1,ca5d586f-81bb-40ee-b3bd-de854857c984,ca5d586f-81bb-40ee-b3bd-de854857c984,0,1,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,0,1,ee7d970c-cef7-4740-a357-1fe78f88a6e6,ee7d970c-cef7-4740-a357-1fe78f88a6e6,0,1,73f89524-dbe8-426f-8ee6-1277eb1967cc,73f89524-dbe8-426f-8ee6-1277eb1967cc,0,1,6733f1bd-7878-4a33-8995-c07526e87c1a,6733f1bd-7878-4a33-8995-c07526e87c1a,0,1,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,0,1,ec34befe-3c0b-4a75-b943-840c52e7dda5,ec34befe-3c0b-4a75-b943-840c52e7dda5,0,1,0b7c4cb7-5126-4b5e-8941-cd56eaef76a0,0b7c4cb7-5126-4b5e-8941-cd56eaef76a0,0,1,40b08a20-51a3-438b-ba54-466917ea809f,40b08a20-51a3-438b-ba54-466917ea809f,0,1,0e0670d6-d8f7-4728-bd1b-f016fffa0570,0e0670d6-d8f7-4728-bd1b-f016fffa0570,0,1,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,0,1,144d5498-bb61-4bec-bef3-85a5a4aec3d5,144d5498-bb61-4bec-bef3-85a5a4aec3d5,0,1,ff18803b-4c3a-4720-a718-7547f04c6e2f,ff18803b-4c3a-4720-a718-7547f04c6e2f,0,1,9328da5c-4689-4a60-8136-ae9eac46ab38,9328da5c-4689-4a60-8136-ae9eac46ab38,0,1,42641296-64da-46e0-a407-de2d492f9c90,42641296-64da-46e0-a407-de2d492f9c90,0,1,b834af0b-086c-445d-a271-7e178c324551,b834af0b-086c-445d-a271-7e178c324551,0,1,32c10512-7bb8-423b-9503-ab2fa41386a4,32c10512-7bb8-423b-9503-ab2fa41386a4,0,1,888edfc4-8140-4675-b267-c32bf1d8d29d,888edfc4-8140-4675-b267-c32bf1d8d29d,0,1,a53f6e85-fbf7-4fb1-9301-d63e812fe16c,a53f6e85-fbf7-4fb1-9301-d63e812fe16c,0,1,57a0f5f3-6573-4b35-af25-cea3a25641f1,57a0f5f3-6573-4b35-af25-cea3a25641f1,0,1,21d296a1-6809-4ff6-a4da-b455cad86cc2,21d296a1-6809-4ff6-a4da-b455cad86cc2,0,1,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,0,1,45a8c780-c067-40d7-bbe9-81f854aacf7a,45a8c780-c067-40d7-bbe9-81f854aacf7a,0,1,57885cac-059a-4a08-aa2c-43b116d2c777,57885cac-059a-4a08-aa2c-43b116d2c777,0,1,56b570b1-93b0-468a-9672-9c71113753f3,56b570b1-93b0-468a-9672-9c71113753f3,0,1,e693eac3-f55d-4102-ac6d-b14ef33fb2e7,e693eac3-f55d-4102-ac6d-b14ef33fb2e7,0,1,e7b0ae70-0192-456c-9dc5-e66049fa9df2,e7b0ae70-0192-456c-9dc5-e66049fa9df2,0,1,68944d09-618e-4fa3-a7af-8c84218e0ac7,68944d09-618e-4fa3-a7af-8c84218e0ac7,0,1,91b12ce3-e8ba-4c9d-9daa-1d5532500314,91b12ce3-e8ba-4c9d-9daa-1d5532500314,0,1,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,0,1,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,0,1,cb57aabc-eeef-42b4-9bc2-873cebd9618c,cb57aabc-eeef-42b4-9bc2-873cebd9618c,0,1,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,0,1,52f30ed7-aa16-4ce2-9684-e50229ab0015,52f30ed7-aa16-4ce2-9684-e50229ab0015,0,1,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,0,1,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0,1,54ecaf7b-9bc5-483c-96e1-270bcd323590,54ecaf7b-9bc5-483c-96e1-270bcd323590,0,1,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,0,1,58f6f8fa-7473-40f5-973a-6279335d8f33,58f6f8fa-7473-40f5-973a-6279335d8f33,0,1,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,0,1,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,0,1,fa3632fe-185b-49aa-85ae-dfb721835d40,fa3632fe-185b-49aa-85ae-dfb721835d40,0,1,a4f15108-477c-465e-aaea-cb495ef52cf5,a4f15108-477c-465e-aaea-cb495ef52cf5,0,1,9cda5c2c-f401-4f63-b445-cef160296e48,9cda5c2c-f401-4f63-b445-cef160296e48,0,1,e8ae4a26-3127-43ae-af7a-c2e278d2611d,e8ae4a26-3127-43ae-af7a-c2e278d2611d,0,1,b923c78f-d074-41b4-b832-086686258f19,b923c78f-d074-41b4-b832-086686258f19,0,1,8ff96413-6fdd-4b8d-a181-ea0d8633defc,8ff96413-6fdd-4b8d-a181-ea0d8633defc,0,1,54604ed2-766b-4308-b99e-447817d82799,54604ed2-766b-4308-b99e-447817d82799,0,1,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,0,1,f48b4475-2cd9-41df-962a-6529f84985ca,f48b4475-2cd9-41df-962a-6529f84985ca,0,1,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,0,1,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,0,1,bf94feb9-edf7-4df8-b5f5-805613663a0a,bf94feb9-edf7-4df8-b5f5-805613663a0a,0,1,6d852a13-c85e-4e84-8396-f91c1ed0596e,6d852a13-c85e-4e84-8396-f91c1ed0596e,0,1,9c2d5313-a4fd-417e-a340-ad4980d0028b,9c2d5313-a4fd-417e-a340-ad4980d0028b,0,1,4fb4a280-9426-4c41-a9ba-11f9d01a0740,4fb4a280-9426-4c41-a9ba-11f9d01a0740,0,1,1591ee7e-870c-4bf7-9450-be84f1b2506f,1591ee7e-870c-4bf7-9450-be84f1b2506f,0,1,8f088f33-92d7-4e35-915d-6cda1129dd80,8f088f33-92d7-4e35-915d-6cda1129dd80,0,1,9a8578a2-8a92-4ab3-a480-173340f8b34a,9a8578a2-8a92-4ab3-a480-173340f8b34a,0,1,4889d27b-435b-4059-a34d-6afdf3c77fa3,4889d27b-435b-4059-a34d-6afdf3c77fa3,0,1,4ebf0988-ccc3-440c-bd0f-2d01636bd730,4ebf0988-ccc3-440c-bd0f-2d01636bd730,0,1,69f42341-268b-4e74-9d6d-527800d018ab,69f42341-268b-4e74-9d6d-527800d018ab,0,1,c1be2a02-53b8-4c28-92b2-b6e0c83ab452,c1be2a02-53b8-4c28-92b2-b6e0c83ab452,0,1,ca6ecedc-f4c5-4c14-8a02-6255ce45033a,ca6ecedc-f4c5-4c14-8a02-6255ce45033a,0,1,7eb5217f-684d-4a9e-8aef-48cedc809cbb,7eb5217f-684d-4a9e-8aef-48cedc809cbb,0,1,4b54d626-dc59-4e49-a708-0a7f98833b9a,4b54d626-dc59-4e49-a708-0a7f98833b9a,0,1,1c90a423-ef1b-42dc-a43b-1fda89672481,1c90a423-ef1b-42dc-a43b-1fda89672481,0,1,095cf2d6-5a7c-452d-8d60-991afb6e52bd,095cf2d6-5a7c-452d-8d60-991afb6e52bd,0,1,2c155a03-2aff-4632-adb2-be3266e0fac3,2c155a03-2aff-4632-adb2-be3266e0fac3,0,1,f9213a70-bfd6-464f-b28b-ed35bdf351c0,f9213a70-bfd6-464f-b28b-ed35bdf351c0,0,1,eb81610a-eb2f-4068-ba74-75e0f5bbace8,eb81610a-eb2f-4068-ba74-75e0f5bbace8,0,1,ca5957af-69c9-4640-b9a9-b241c4f9eaa7,ca5957af-69c9-4640-b9a9-b241c4f9eaa7,0,1,21826316-0b49-4034-a49e-6d34c15ceb5c,21826316-0b49-4034-a49e-6d34c15ceb5c,0,1,3abffa47-8d47-4173-897b-708e1a06ef39,3abffa47-8d47-4173-897b-708e1a06ef39,0,1,0cf3d615-76a1-428d-9d25-0d7fdf09e4ae,0cf3d615-76a1-428d-9d25-0d7fdf09e4ae,0,1,5a398637-a06c-4442-9093-a864fa7f049f,5a398637-a06c-4442-9093-a864fa7f049f,0,1,38692186-a62a-42d1-87cd-7dbc6d4816ed,38692186-a62a-42d1-87cd-7dbc6d4816ed,0,1,6cfcdb89-ccb2-45fe-a7b1-5a29ccd6c5ae,6cfcdb89-ccb2-45fe-a7b1-5a29ccd6c5ae,0,1,3a28cea9-7fd7-4834-ab89-2a74331a64e3,3a28cea9-7fd7-4834-ab89-2a74331a64e3,0,1,0f881709-4520-4f18-af9d-cf08757693ff,0f881709-4520-4f18-af9d-cf08757693ff,0,1,c5151ca9-5103-42b2-8573-273c15416db8,c5151ca9-5103-42b2-8573-273c15416db8,0,1,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,0,1,ba8c43ad-678a-4b18-8bbe-5a1b12d19b74,ba8c43ad-678a-4b18-8bbe-5a1b12d19b74,0,1,115a6019-ef87-4126-8ebf-070c1e882940,115a6019-ef87-4126-8ebf-070c1e882940,0,1,162ce023-b2e1-41dc-bcaf-b8e30caccce0,162ce023-b2e1-41dc-bcaf-b8e30caccce0,0,1,52bdd3cc-7103-4dbf-a3c3-dd46cf03da12,52bdd3cc-7103-4dbf-a3c3-dd46cf03da12,0,1,c13fb1cd-fe72-48a6-b383-55b6323619ce,c13fb1cd-fe72-48a6-b383-55b6323619ce,0,1,956fc8ee-96be-4309-b1e8-209372f151ab,956fc8ee-96be-4309-b1e8-209372f151ab,0,1,526c688e-a4d4-45f7-8bba-b8ceff38fe27,526c688e-a4d4-45f7-8bba-b8ceff38fe27,0,1,7e32c295-a769-4cff-a3eb-992f7031475f,7e32c295-a769-4cff-a3eb-992f7031475f,0,1,67efa786-312f-4c9c-b970-0320e92069af,67efa786-312f-4c9c-b970-0320e92069af,0,1,12f85e09-1190-4483-b531-630ab718db7f,12f85e09-1190-4483-b531-630ab718db7f,0,1,52f4453e-e968-4290-a79a-470f68fbd07f,52f4453e-e968-4290-a79a-470f68fbd07f,0,1,5b952e35-1037-4447-8293-6d8889692c8b,5b952e35-1037-4447-8293-6d8889692c8b,0,1,33e0072d-7d5b-4298-ae77-31a7cb358f5d,33e0072d-7d5b-4298-ae77-31a7cb358f5d,0,1,1051c0c7-1058-427c-8bf5-5e30b8fbfb54,1051c0c7-1058-427c-8bf5-5e30b8fbfb54,0,1,b27688c3-6682-45e1-a03f-0d2e8b1214e4,b27688c3-6682-45e1-a03f-0d2e8b1214e4,0,1,c8158812-024b-4f94-bd07-c3f1fd59e8a1,c8158812-024b-4f94-bd07-c3f1fd59e8a1,0,1,05bc8b4e-8c90-4502-8b16-7b1e7625d569,05bc8b4e-8c90-4502-8b16-7b1e7625d569,0,1,ce34d88d-3017-4197-a962-ea23a6a96d32,ce34d88d-3017-4197-a962-ea23a6a96d32,0,1,2cbc16da-aa67-4ad6-82f8-fa6922447be6,2cbc16da-aa67-4ad6-82f8-fa6922447be6,0,1,19d7a1ba-c343-4575-95da-53dac6d4b2cb,19d7a1ba-c343-4575-95da-53dac6d4b2cb,0,1,6cc8b3a0-3377-4b39-b6b0-69c862a15465,6cc8b3a0-3377-4b39-b6b0-69c862a15465,0,1,acb193f4-52e5-4572-a79b-b825a2f6525f,acb193f4-52e5-4572-a79b-b825a2f6525f,0,1,5d46f719-e468-48e2-b4ec-acb85c710451,5d46f719-e468-48e2-b4ec-acb85c710451,0,1,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,0,1,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,0,1,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,0,1,5422610d-b92c-4213-a58c-8db067d93b66,5422610d-b92c-4213-a58c-8db067d93b66,0,1,8f59a635-9e0e-470d-8fda-a47a262a59c2,8f59a635-9e0e-470d-8fda-a47a262a59c2,0,1,ffb50eb9-149a-46ec-9472-d8f20ad09810,ffb50eb9-149a-46ec-9472-d8f20ad09810,0,1,5ae3bba3-dc98-4470-a73d-3bd951c0a3f2,5ae3bba3-dc98-4470-a73d-3bd951c0a3f2,0,1,7a6449e2-e90a-4720-a769-192284ef69c1,7a6449e2-e90a-4720-a769-192284ef69c1,0,1,02118b98-2349-46b1-a328-d6e2b5781f7e,02118b98-2349-46b1-a328-d6e2b5781f7e,0,1,67de9cbb-5c80-4cff-bfbe-269a958e08e6,67de9cbb-5c80-4cff-bfbe-269a958e08e6,0,1,2228a457-6805-41ee-85af-5ebca9568bf4,2228a457-6805-41ee-85af-5ebca9568bf4,0,1,96b71795-e230-4ecb-b98d-4feb3f8b9662,96b71795-e230-4ecb-b98d-4feb3f8b9662,0,1,04055821-03ce-4049-af2c-8670c80517f6,04055821-03ce-4049-af2c-8670c80517f6,0,1,0101305d-62eb-4802-9cd4-d615a518d842,0101305d-62eb-4802-9cd4-d615a518d842,0,1,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,0,1,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,0,1,7c424424-9660-462d-9cf2-4c1e6bd284fa,7c424424-9660-462d-9cf2-4c1e6bd284fa,0,1,e118f957-ab2c-473b-ab64-37032f727416,e118f957-ab2c-473b-ab64-37032f727416,0,1,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,0,1,21f64e5f-dc94-4ce9-b836-e75646ae3325,21f64e5f-dc94-4ce9-b836-e75646ae3325,0,1,82e8a180-f2e1-406c-9609-89d33504aff2,82e8a180-f2e1-406c-9609-89d33504aff2,0,1,e7437c81-3d5b-466e-880c-8febe4a68e88,e7437c81-3d5b-466e-880c-8febe4a68e88,0,1,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,0,1,307771e6-bcf7-4016-b369-e1655bbe9e94,307771e6-bcf7-4016-b369-e1655bbe9e94,0,1,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,0,1,38fc6a54-846c-40b0-9254-3261f540bf18,38fc6a54-846c-40b0-9254-3261f540bf18,0,1,d9134d0c-56cd-4b8f-ab11-ae37fc306801,d9134d0c-56cd-4b8f-ab11-ae37fc306801,0,1,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,0,1,8f2af24b-f5fa-4f6d-831e-28453bdedefc,8f2af24b-f5fa-4f6d-831e-28453bdedefc,0,1,d119e21d-0087-4f22-b3bd-b14707b65330,d119e21d-0087-4f22-b3bd-b14707b65330,0,1,dc9b4072-11de-40fe-bf2a-f7b15af0a250,dc9b4072-11de-40fe-bf2a-f7b15af0a250,0,1,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,0,1,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,0,1,932b1c1a-72eb-49cd-8218-d0ced9c454d8,932b1c1a-72eb-49cd-8218-d0ced9c454d8,0,1,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,0,1,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,0,1,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,0,1,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,0,1,5dd336c4-88c5-4f53-acf0-5f86a658c528,5dd336c4-88c5-4f53-acf0-5f86a658c528,0,1,c723112b-286d-46f1-989d-81252062a025,c723112b-286d-46f1-989d-81252062a025,0,1,67e8b47e-4bad-4b2f-b196-8a9708893051,67e8b47e-4bad-4b2f-b196-8a9708893051,0,1,a583e53a-3f3c-48c7-8928-37ce40b2bafe,a583e53a-3f3c-48c7-8928-37ce40b2bafe,0,1,a844dd4a-274a-4894-9446-031dbe006084,a844dd4a-274a-4894-9446-031dbe006084,0,1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,0,1,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,0,1,77bdd30f-4933-4bda-9c7a-b0a097da0910,77bdd30f-4933-4bda-9c7a-b0a097da0910,0,1,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,0,1,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,0,1,a682e9e1-284f-4e32-86b2-6736f159f585,a682e9e1-284f-4e32-86b2-6736f159f585,0,1,84f0bd89-9b86-440f-b942-9b685e22233e,84f0bd89-9b86-440f-b942-9b685e22233e,0,1,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,0,1,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,0,1,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,0,1,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,0,1,fabf8a0b-366f-4f23-9377-315534bb854b,fabf8a0b-366f-4f23-9377-315534bb854b,0,1,7aac6439-64c9-4492-b866-bf91dda82d06,7aac6439-64c9-4492-b866-bf91dda82d06,0,1,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,0,1,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,0,1,08b86f29-64ef-467a-af1a-d27ffdf621ba,08b86f29-64ef-467a-af1a-d27ffdf621ba,0,1,6483d1ab-c53d-4985-ad7e-b799adbcd9da,6483d1ab-c53d-4985-ad7e-b799adbcd9da,0,1,82f66233-ed13-49ae-ab72-7cf91c88c760,82f66233-ed13-49ae-ab72-7cf91c88c760,0,1,75cddbcd-e960-4164-81d8-ac0a2a36e95b,75cddbcd-e960-4164-81d8-ac0a2a36e95b,0,1,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,0,1,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,0,1,d9151001-a911-45c1-a8e6-dcf0da623ed3,d9151001-a911-45c1-a8e6-dcf0da623ed3,0,1,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,0,1,e589a693-ff50-4c36-ae26-a8fcae966d57,e589a693-ff50-4c36-ae26-a8fcae966d57,0,1,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,0,1,90f023f5-5b48-4f98-bfc6-b704277a355d,90f023f5-5b48-4f98-bfc6-b704277a355d,0,1,99485603-706d-4301-be25-82b1c0ee8f4d,99485603-706d-4301-be25-82b1c0ee8f4d,0,1,e7a28021-c75e-41b2-9974-cf4beee34d28,e7a28021-c75e-41b2-9974-cf4beee34d28,0,1,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,0,1,2a603c61-4cbf-4c6d-a0b2-40c835d36737,2a603c61-4cbf-4c6d-a0b2-40c835d36737,0,1,a8d7f071-401b-499e-957c-d077d8002e54,a8d7f071-401b-499e-957c-d077d8002e54,0,1,211a539b-4be9-4816-98f6-f756e65eafd8,211a539b-4be9-4816-98f6-f756e65eafd8,0,1,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,0,1,e9b9da80-7806-4c9c-a002-01cfa3109169,e9b9da80-7806-4c9c-a002-01cfa3109169,0,1,a271041d-0203-4ecd-bb39-70256c50192e,a271041d-0203-4ecd-bb39-70256c50192e,0,1,73eff626-a363-4a5a-879e-61ef6ce0726f,73eff626-a363-4a5a-879e-61ef6ce0726f,0,1,acf15b79-a6c4-4c46-8013-50d3b223baf6,acf15b79-a6c4-4c46-8013-50d3b223baf6,0,1,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,0,1,2d8d5d74-2bc0-4282-af66-e4a37694c147,2d8d5d74-2bc0-4282-af66-e4a37694c147,0,1,cfd31341-287b-4684-9ac0-b28b4e066f15,cfd31341-287b-4684-9ac0-b28b4e066f15,0,1,81de1b0b-7f2d-4098-ae99-061c6a90dc29,81de1b0b-7f2d-4098-ae99-061c6a90dc29,0,1,f829e2a9-5bdb-4171-8b32-8d10d5968813,f829e2a9-5bdb-4171-8b32-8d10d5968813,0,1,647ba8f8-57f7-4c19-af59-525517c1e392,647ba8f8-57f7-4c19-af59-525517c1e392,0,1,39062cb3-4ae8-4c0d-889b-038a55179946,39062cb3-4ae8-4c0d-889b-038a55179946,0,1,c62d4212-36ca-4afb-bac9-269b6f64ca51,c62d4212-36ca-4afb-bac9-269b6f64ca51,0,1,5cec5e16-46ad-4f8c-b869-f5b1cc487884,5cec5e16-46ad-4f8c-b869-f5b1cc487884,0,1,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,0,1,7aacdf81-49fd-47a3-a36a-c483f1b05872,7aacdf81-49fd-47a3-a36a-c483f1b05872,0,1,857015e2-afb2-403d-bfb7-7acb5080797b,857015e2-afb2-403d-bfb7-7acb5080797b,0,1,5657286b-114b-41de-ab7d-45d0f0d95e2d,5657286b-114b-41de-ab7d-45d0f0d95e2d,0,1,42a0271e-6783-44db-95c1-09805ae01f58,42a0271e-6783-44db-95c1-09805ae01f58,0,1,8628783e-4fad-4dff-8220-9e0ddc8580f8,8628783e-4fad-4dff-8220-9e0ddc8580f8,0,1,356fc245-3034-42d1-84d0-632c6dc7a3d5,356fc245-3034-42d1-84d0-632c6dc7a3d5,0,1,07462664-6b58-4f5a-9b3f-2e5c376f17df,07462664-6b58-4f5a-9b3f-2e5c376f17df,0,1,6f23e946-f700-424b-b9bf-3a9c8846908d,6f23e946-f700-424b-b9bf-3a9c8846908d,0,1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,0,1,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,0,1,07d0d6e9-e0a7-4543-9668-3850c1e0a15c,07d0d6e9-e0a7-4543-9668-3850c1e0a15c,0,1,c656771c-dcb7-4c78-9a16-e62806d5bb5a,c656771c-dcb7-4c78-9a16-e62806d5bb5a,0,1,ec42c45c-18ca-44b0-9c59-1cb204552a43,ec42c45c-18ca-44b0-9c59-1cb204552a43,0,1,2aafb1a1-4321-47e9-9783-03ab616a2873,2aafb1a1-4321-47e9-9783-03ab616a2873,0,1,71109997-6da0-4eaf-bbf2-f94fa24f37cc,71109997-6da0-4eaf-bbf2-f94fa24f37cc,0,1,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,0,1,d601281c-379d-4a9d-843e-478fd6567415,d601281c-379d-4a9d-843e-478fd6567415,0,1,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,0,1,427e6f15-334e-42be-9554-895d8f7ebfc6,427e6f15-334e-42be-9554-895d8f7ebfc6,0,1,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,0,1,36bc8523-41a5-48ff-9bd0-758d078c4408,36bc8523-41a5-48ff-9bd0-758d078c4408,0,1,94ca1b45-3cf0-4857-8299-999c93f4fb56,94ca1b45-3cf0-4857-8299-999c93f4fb56,0,1,ee8419c6-79ca-4546-9a66-bacaa08d2a73,ee8419c6-79ca-4546-9a66-bacaa08d2a73,0,1,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,0,1,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,0,1,a915df5f-7330-4fc3-aecd-08d228b8fd23,a915df5f-7330-4fc3-aecd-08d228b8fd23,0,1,ada11ea2-94d5-4172-a383-a51774599568,ada11ea2-94d5-4172-a383-a51774599568,0,1,1ea080b0-0a11-4152-b8bb-4918bc142a23,1ea080b0-0a11-4152-b8bb-4918bc142a23,0,1,6e20df72-c643-4952-8f9c-f386d2915004,6e20df72-c643-4952-8f9c-f386d2915004,0,1,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,0,1,0e5074b0-bc15-416d-9c87-dad6824186e1,0e5074b0-bc15-416d-9c87-dad6824186e1,0,1,6930e471-7935-4d68-a980-2acde93ba801,6930e471-7935-4d68-a980-2acde93ba801,0,1,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,0,1,5135cc48-c749-4acb-a225-d110f386f482,5135cc48-c749-4acb-a225-d110f386f482,0,1,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,0,1,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,0,1,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,0,1,2e9fa546-96fb-4ecb-b933-7921e131e89b,2e9fa546-96fb-4ecb-b933-7921e131e89b,0,1,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,0,1,637a132b-1a88-44ba-b45f-ed4ed1ac1001,637a132b-1a88-44ba-b45f-ed4ed1ac1001,0,1,699f734b-43d2-4351-bff8-e0e21e164a42,699f734b-43d2-4351-bff8-e0e21e164a42,0,1,95f0792a-7ac4-450a-b05c-219741e61abd,95f0792a-7ac4-450a-b05c-219741e61abd,0,1,742a2e8c-496e-4e02-931d-d33f7afe07a5,742a2e8c-496e-4e02-931d-d33f7afe07a5,0,1,c3efa853-cd29-4618-929f-e3bec33dfd65,c3efa853-cd29-4618-929f-e3bec33dfd65,0,1,62185c28-3d24-487a-9441-b309dcf11e31,62185c28-3d24-487a-9441-b309dcf11e31,0,1,9f264aeb-664d-4724-8248-11873d63ef3b,9f264aeb-664d-4724-8248-11873d63ef3b,0,1,b926d058-53a9-4eea-b4f9-98e77f798dd9,b926d058-53a9-4eea-b4f9-98e77f798dd9,0,1,495e2c77-4868-4191-ac18-f94e55a5982e,495e2c77-4868-4191-ac18-f94e55a5982e,0,1,20191a65-322c-457d-85f5-ed1258b6fe8e,20191a65-322c-457d-85f5-ed1258b6fe8e,0,1,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,0,1,769c60aa-44f4-4c98-a461-d3f5c2b67f61,769c60aa-44f4-4c98-a461-d3f5c2b67f61,0,1,f9809c99-0eaa-4249-967c-a4bef4763277,f9809c99-0eaa-4249-967c-a4bef4763277,0,1,37fa88a0-f2c1-455f-a28d-74165e8b933d,37fa88a0-f2c1-455f-a28d-74165e8b933d,0,1,e4476f09-909b-49f7-8e01-72eea8ceaca6,e4476f09-909b-49f7-8e01-72eea8ceaca6,0,1,2861412c-46f0-454e-b81d-fe081afb5c7a,2861412c-46f0-454e-b81d-fe081afb5c7a,0,1,abacbda3-b4c1-446b-95e7-a45adec16174,abacbda3-b4c1-446b-95e7-a45adec16174,0,1,2b4ece05-b694-42e9-8239-55722fd84294,2b4ece05-b694-42e9-8239-55722fd84294,0,1,0d743731-da5d-4c99-b19f-e93c69b77e14,0d743731-da5d-4c99-b19f-e93c69b77e14,0,1,91a7a0f7-19e8-43d1-935c-e9bd1ac24d03,91a7a0f7-19e8-43d1-935c-e9bd1ac24d03,0,1,d6f15367-23e2-4766-bc7c-8acd0063aa0c,d6f15367-23e2-4766-bc7c-8acd0063aa0c,0,1,868da26b-f32e-48d1-a647-44dac7520d86,868da26b-f32e-48d1-a647-44dac7520d86,0,1,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,0,1,fa4c5665-4d73-4db2-a055-8c1c8a302f82,fa4c5665-4d73-4db2-a055-8c1c8a302f82,0,1,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,0,1,9100b286-8ae9-4de3-b116-5ce0fa95b80c,9100b286-8ae9-4de3-b116-5ce0fa95b80c,0,1,3d315df6-e000-4cbd-810d-0b26c0d1bc54,3d315df6-e000-4cbd-810d-0b26c0d1bc54,0,1,fa429302-ccaf-4c89-8a11-3a1d30817c00,fa429302-ccaf-4c89-8a11-3a1d30817c00,0,1,9b4c49ce-93da-439a-8d67-f3774e92800a,9b4c49ce-93da-439a-8d67-f3774e92800a,0,1,5f8fa827-7017-4b45-b458-3571b8b611f5,5f8fa827-7017-4b45-b458-3571b8b611f5,0,1,79749167-2912-4e06-9deb-7915a1b4390d,79749167-2912-4e06-9deb-7915a1b4390d,0,1,1c93fcd3-53a1-403f-a30b-454fbc941d55,1c93fcd3-53a1-403f-a30b-454fbc941d55,0,1,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0,1,adec3963-b22f-4463-a3f4-c9ec27d187a8,adec3963-b22f-4463-a3f4-c9ec27d187a8,0,1,d8dae0c8-8e11-44bf-bf60-d316220f3e82,d8dae0c8-8e11-44bf-bf60-d316220f3e82,0,1,12afec4d-1728-4aa8-86e5-23cd2f1572b3,12afec4d-1728-4aa8-86e5-23cd2f1572b3,0,1,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,0,1,ee0c3960-d1bf-411f-a51f-e6e27dabea87,ee0c3960-d1bf-411f-a51f-e6e27dabea87,0,1,d7fb9441-1aef-4257-af3f-7f16340ac85e,d7fb9441-1aef-4257-af3f-7f16340ac85e,0,1,d07c094c-2795-4e0c-b030-bdb82be7ba6d,d07c094c-2795-4e0c-b030-bdb82be7ba6d,0,1,62637860-2013-4f9d-9aed-7cbb0dce8983,62637860-2013-4f9d-9aed-7cbb0dce8983,0,1,331217f6-7ec2-425d-93bd-f2979c5f2e05,331217f6-7ec2-425d-93bd-f2979c5f2e05,0,1,457578ab-dfe2-4419-8d8a-64283b341f42,457578ab-dfe2-4419-8d8a-64283b341f42,0,1,67ef6671-f537-46bf-88e6-f5bcf34a17a4,67ef6671-f537-46bf-88e6-f5bcf34a17a4,0,1,de778ca7-feaf-4531-80ae-11a534c56928,de778ca7-feaf-4531-80ae-11a534c56928,0,1,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0,1,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0,1,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,0,1,86df8648-e195-4661-99ee-6052788eb276,86df8648-e195-4661-99ee-6052788eb276,0,1,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,0,1,35133725-9647-42dc-a76a-2e62b2918ac4,35133725-9647-42dc-a76a-2e62b2918ac4,0,1,fa9572ee-0303-4421-9125-70cf3dd5a8c7,fa9572ee-0303-4421-9125-70cf3dd5a8c7,0,1,4cdd7920-0c49-4950-b92f-fdf6e34578b2,4cdd7920-0c49-4950-b92f-fdf6e34578b2,0,1,0af48650-5fef-4a5b-8ac8-38a9ded23bd4,0af48650-5fef-4a5b-8ac8-38a9ded23bd4,0,1,c7b883dc-6c26-4eb5-bc19-7919ad57da27,c7b883dc-6c26-4eb5-bc19-7919ad57da27,0,1,7fc37008-c378-4a70-a9a9-07543c7248a6,7fc37008-c378-4a70-a9a9-07543c7248a6,0,1,6410853e-a17e-44db-b8cc-bfefd7c4d239,6410853e-a17e-44db-b8cc-bfefd7c4d239,0,1,df042e4e-01a6-4480-a9c5-c0d7a454bb41,df042e4e-01a6-4480-a9c5-c0d7a454bb41,0,1,bad3d1fa-9618-427a-93e0-90f151e468bf,bad3d1fa-9618-427a-93e0-90f151e468bf,0,1,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,0,1,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,0,1,ec7cfc56-00fd-4494-be90-49308a3c34a0,ec7cfc56-00fd-4494-be90-49308a3c34a0,0,1,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,0,1,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,0,1,719cdbdd-13b3-44fc-8739-0b788693a8d0,719cdbdd-13b3-44fc-8739-0b788693a8d0,0,1,88618d0f-97af-4055-a490-561d4b8065a7,88618d0f-97af-4055-a490-561d4b8065a7,0,1,5de9fbf9-f075-4acf-b9f9-89688d2006af,5de9fbf9-f075-4acf-b9f9-89688d2006af,0,1,faffa228-4f4f-43f6-99b9-ed8c93af85c0,faffa228-4f4f-43f6-99b9-ed8c93af85c0,0,1,7b816ca0-ba60-4637-8348-23b26ad23e3f,7b816ca0-ba60-4637-8348-23b26ad23e3f,0,1,814a6db4-a43c-44e6-ac44-11983642c5ad,814a6db4-a43c-44e6-ac44-11983642c5ad,0,1,0bd74786-e018-4a66-b994-cdb439c57657,0bd74786-e018-4a66-b994-cdb439c57657,0,1,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,0,1,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,0,1,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,0,1,09502176-c53d-4525-b8ed-32d0a2e21a5d,09502176-c53d-4525-b8ed-32d0a2e21a5d,0,1,75ad984e-d41f-4591-b207-e8a4b05757a7,75ad984e-d41f-4591-b207-e8a4b05757a7,0,1,3f020f90-7aeb-4b21-ad71-4572ac796d4c,3f020f90-7aeb-4b21-ad71-4572ac796d4c,0,1,759e2ba0-2941-4cc1-8409-50b8a3620058,759e2ba0-2941-4cc1-8409-50b8a3620058,0,1,491cf25d-091e-4e09-b145-92d7073326cf,491cf25d-091e-4e09-b145-92d7073326cf,0,1,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,0,1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,0,1,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,0,1,900bc96e-fbcc-473e-970c-96f561420f8e,900bc96e-fbcc-473e-970c-96f561420f8e,0,1,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,0,1,21d5a0b0-9a2b-4989-a50a-781645513179,21d5a0b0-9a2b-4989-a50a-781645513179,0,1,22df0fa4-cb1c-45a2-bcce-d32ed44e462a,22df0fa4-cb1c-45a2-bcce-d32ed44e462a,0,1,d97c6204-3656-4591-aea9-6ebedffe1247,d97c6204-3656-4591-aea9-6ebedffe1247,0,1,7caabe33-184f-45db-bef4-59d4e9cd2394,7caabe33-184f-45db-bef4-59d4e9cd2394,0,1,3255033a-e922-412e-a825-a3e8bd284703,3255033a-e922-412e-a825-a3e8bd284703,0,1,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,0,1,f250f992-ad5a-4dab-ad38-240604adb0c4,f250f992-ad5a-4dab-ad38-240604adb0c4,0,1,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,0,1,e63671f6-c96d-4ea4-8300-af7dbd0d016f,e63671f6-c96d-4ea4-8300-af7dbd0d016f,0,1,2c511469-0df6-470f-a808-decb275e8b1a,2c511469-0df6-470f-a808-decb275e8b1a,0,1,1bbb289c-a78a-47d0-b082-c2225ae1dc83,1bbb289c-a78a-47d0-b082-c2225ae1dc83,0,1,99b40f9f-f8f1-4779-8afc-59d30612f3d6,99b40f9f-f8f1-4779-8afc-59d30612f3d6,0,1,6131e875-3254-4281-9343-9118564c5451,6131e875-3254-4281-9343-9118564c5451,0,1,69622ff8-8a23-42fc-b63d-5097e3f636ac,69622ff8-8a23-42fc-b63d-5097e3f636ac,0,1,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,0,1,ef326bd8-1570-455e-ae8c-063b5578ad15,ef326bd8-1570-455e-ae8c-063b5578ad15,0,1,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,0,1,cb6d4979-2d70-4ceb-af08-deb2b19daf14,cb6d4979-2d70-4ceb-af08-deb2b19daf14,0,1,254a58a9-76ac-43b9-92f7-40579d43f90c,254a58a9-76ac-43b9-92f7-40579d43f90c,0,1,7bbd0835-b3e9-40cb-a424-670828b60bbb,7bbd0835-b3e9-40cb-a424-670828b60bbb,0,1,3e2138ea-48f9-4a60-8f22-53933bea49db,3e2138ea-48f9-4a60-8f22-53933bea49db,0,1,16bda2eb-eab8-4230-b89f-517fb943e009,16bda2eb-eab8-4230-b89f-517fb943e009,0,1,00964512-297f-4b8b-8def-8e4fc0eba991,00964512-297f-4b8b-8def-8e4fc0eba991,0,1,4185fea3-baba-4ba5-8019-9023b3011d4d,4185fea3-baba-4ba5-8019-9023b3011d4d,0,1,ea790035-92d6-445e-9fa3-08e565634d2b,ea790035-92d6-445e-9fa3-08e565634d2b,0,1,cce8900a-51eb-487d-b380-227d1b9d3943,cce8900a-51eb-487d-b380-227d1b9d3943,0,1,c043c36c-90c6-483b-bc20-7c2d85109b90,c043c36c-90c6-483b-bc20-7c2d85109b90,0,1,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,0,1,91d2d40a-c271-412c-b344-1fc98b94ba21,91d2d40a-c271-412c-b344-1fc98b94ba21,0,1,7ce47046-aee8-4809-bac9-a98930a844e1,7ce47046-aee8-4809-bac9-a98930a844e1,0,1,f480b8b9-ecec-4207-a0aa-12c5be4c2250,f480b8b9-ecec-4207-a0aa-12c5be4c2250,0,1,32717d25-6644-4903-8950-03e4c9b1a8fe,32717d25-6644-4903-8950-03e4c9b1a8fe,0,1,3644d8f3-db88-4fce-a851-39c115acfe03,3644d8f3-db88-4fce-a851-39c115acfe03,0,1,837e4559-2f2d-48e9-a03b-2d52b25569ec,837e4559-2f2d-48e9-a03b-2d52b25569ec,0,1,4653da74-34b2-47b9-ad88-efd761d6f1e9,4653da74-34b2-47b9-ad88-efd761d6f1e9,0,1,b0cd056f-c601-4d07-89c4-f7137b88bab6,b0cd056f-c601-4d07-89c4-f7137b88bab6,0,1,3660618a-0cab-458f-b448-867c4d1aba1b,3660618a-0cab-458f-b448-867c4d1aba1b,0,1,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,0,1,22f34fd5-4bda-48c1-8772-74d9c6479a30,22f34fd5-4bda-48c1-8772-74d9c6479a30,0,1,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,0,1,96ed4d39-3bdc-480f-af86-218f22000514,96ed4d39-3bdc-480f-af86-218f22000514,0,1,c9f72e74-22ac-4dc0-8462-0aa7819a9342,c9f72e74-22ac-4dc0-8462-0aa7819a9342,0,1,ca650484-293f-403a-b916-5ec7c3a8969e,ca650484-293f-403a-b916-5ec7c3a8969e,0,1,b71e706d-623e-4039-9bf0-24f151d861d8,b71e706d-623e-4039-9bf0-24f151d861d8,0,1,528f4823-33d8-49bd-a8fe-756a08a107c2,528f4823-33d8-49bd-a8fe-756a08a107c2,0,1,4869095b-b76e-45ca-b77d-0e74f59673f0,4869095b-b76e-45ca-b77d-0e74f59673f0,0,1,bcca2442-448b-4760-923b-cc9621ecb441,bcca2442-448b-4760-923b-cc9621ecb441,0,1,ba7657df-429a-4737-b787-19ef09fdebb2,ba7657df-429a-4737-b787-19ef09fdebb2,0,1,867d72be-f406-45a5-a511-b90459683f11,867d72be-f406-45a5-a511-b90459683f11,0,1,88b22e62-c144-401f-9635-3fb4d914772e,88b22e62-c144-401f-9635-3fb4d914772e,0,1,efeb2914-6604-403a-a11e-5cb995ab2bc9,efeb2914-6604-403a-a11e-5cb995ab2bc9,0,1,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,0,1,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,0,1,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,0,1,de506523-241a-4845-9259-37066afbf16a,de506523-241a-4845-9259-37066afbf16a,0,1,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0,1,e616e007-43e7-4740-a083-b85f5435718a,e616e007-43e7-4740-a083-b85f5435718a,0,1,727da5b1-e054-4832-8e44-f5d5e56f52e5,727da5b1-e054-4832-8e44-f5d5e56f52e5,0,1,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,0,1,6feaad7c-9680-4341-b215-14581e2e2b37,6feaad7c-9680-4341-b215-14581e2e2b37,0,1,d5656a92-adfb-4733-830d-2b1565798b1f,d5656a92-adfb-4733-830d-2b1565798b1f,0,1,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,0,1,b0f6ea83-2849-4151-930d-692866919db3,b0f6ea83-2849-4151-930d-692866919db3,0,1,05558ce4-8568-4009-b1d7-307d54967515,05558ce4-8568-4009-b1d7-307d54967515,0,1,74380324-9b7b-49f6-9458-88deb9405f98,74380324-9b7b-49f6-9458-88deb9405f98,0,1,5286ceb2-0f16-4d70-ad89-dc15a308bb8d,5286ceb2-0f16-4d70-ad89-dc15a308bb8d,0,1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0,1,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,0,1,f66cb2da-3b3c-481f-823a-506f8290f619,f66cb2da-3b3c-481f-823a-506f8290f619,0,1,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,0,1,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,0,1,0bdcf045-5132-4a68-839c-a30515dc569e,0bdcf045-5132-4a68-839c-a30515dc569e,0,1,683861f9-9a5f-47db-8b03-959f839d5a3a,683861f9-9a5f-47db-8b03-959f839d5a3a,0,1,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,0,1,125be5bf-f410-451d-aa96-22fabc6a4d8a,125be5bf-f410-451d-aa96-22fabc6a4d8a,0,1,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,0,1,0a46166a-4562-4a50-b139-39dbe8a1fc84,0a46166a-4562-4a50-b139-39dbe8a1fc84,0,1,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,0,1,6ce64d65-f710-4d3f-a85f-26ce6915451e,6ce64d65-f710-4d3f-a85f-26ce6915451e,0,1,33eb9806-e34f-42a0-9825-3ff2de92c503,33eb9806-e34f-42a0-9825-3ff2de92c503,0,1,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,0,1,bcb58235-7cd7-4c15-a1eb-194ee38259e6,bcb58235-7cd7-4c15-a1eb-194ee38259e6,0,1,e19aefe7-634d-4218-8d40-75802d1691e0,e19aefe7-634d-4218-8d40-75802d1691e0,0,1,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,0,1,f942d212-9be0-4d80-84b6-5b63070e33e4,f942d212-9be0-4d80-84b6-5b63070e33e4,0,1,64c91eaa-084f-4801-8dbf-4e075c689c2b,64c91eaa-084f-4801-8dbf-4e075c689c2b,0,1,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,0,1,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,0,1,3aa12805-823a-439b-b039-fb9940aee312,3aa12805-823a-439b-b039-fb9940aee312,0,1,87d53573-f266-4b74-94af-041ae4b6518f,87d53573-f266-4b74-94af-041ae4b6518f,0,1,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,0,1,801cf1f7-2c65-4126-a3e9-b66abfdde67a,801cf1f7-2c65-4126-a3e9-b66abfdde67a,0,1,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,0,1,29c2bc01-8838-4459-8ac2-79862aa1dbc9,29c2bc01-8838-4459-8ac2-79862aa1dbc9,0,1,ad556c33-6811-48b4-ae90-57700a4d3fd6,ad556c33-6811-48b4-ae90-57700a4d3fd6,0,1,6e0833f4-3b57-4a5f-810f-9e2a492335df,6e0833f4-3b57-4a5f-810f-9e2a492335df,0,1,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,0,1,977bc9d8-9843-4343-85af-11a3d91f9966,977bc9d8-9843-4343-85af-11a3d91f9966,0,1,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,0,1,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,0,1,a6582448-734d-4a4c-a32c-c4755ca1bc93,a6582448-734d-4a4c-a32c-c4755ca1bc93,0,1,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,0,1,53327cc4-22b0-40f9-bae7-db483f85901c,53327cc4-22b0-40f9-bae7-db483f85901c,0,1,d826fe6f-d9f6-41f2-8dd6-bd840af25183,d826fe6f-d9f6-41f2-8dd6-bd840af25183,0,1,098d904d-95c9-459e-86d0-357ba9a40191,098d904d-95c9-459e-86d0-357ba9a40191,0,1,2d58033f-e15d-4a91-8165-dd311025c7c4,2d58033f-e15d-4a91-8165-dd311025c7c4,0,1,5e6a6f8f-5cb1-475d-b2d8-f2f143ef7b19,5e6a6f8f-5cb1-475d-b2d8-f2f143ef7b19,0,1,49cb3a36-90b3-4154-b571-265fc5cee21e,49cb3a36-90b3-4154-b571-265fc5cee21e,0,1,7bc5fa42-7d72-433e-8db6-a046b583a316,7bc5fa42-7d72-433e-8db6-a046b583a316,0,1,10472d2c-18ca-49b0-bd9d-c750db8498c5,10472d2c-18ca-49b0-bd9d-c750db8498c5,0,1,8efe5daf-272d-4255-b5c4-66dca7463b50,8efe5daf-272d-4255-b5c4-66dca7463b50,0,1,65af25a6-f699-4c40-b13e-3b7dff3f16fe,65af25a6-f699-4c40-b13e-3b7dff3f16fe,0,1,c4d2486d-289c-4812-b223-5ccfcd7f29e3,c4d2486d-289c-4812-b223-5ccfcd7f29e3,0,1,b6ae3a72-c686-409d-9cda-9d1a00be1d8d,b6ae3a72-c686-409d-9cda-9d1a00be1d8d,0,1,7da57c89-af2c-445a-96f7-39250f70306f,7da57c89-af2c-445a-96f7-39250f70306f,0,1,b5b94d94-25f7-4cfa-b1e9-6009fb848763,b5b94d94-25f7-4cfa-b1e9-6009fb848763,0,1,a2accf54-5966-42e8-ab2e-e56e415963ee,a2accf54-5966-42e8-ab2e-e56e415963ee,0,1,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,0,1,d8eb5329-5900-4b5d-b45e-458513dddfef,d8eb5329-5900-4b5d-b45e-458513dddfef,0,1,d5afea8a-1b7a-4b23-8ae0-cefa0b937b17,d5afea8a-1b7a-4b23-8ae0-cefa0b937b17,0,1,6ffd2da8-db97-46fc-9a53-8e665a598e3c,6ffd2da8-db97-46fc-9a53-8e665a598e3c,0,1,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,0,1,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,0,1,eaaed107-69d4-4963-be83-74519e331715,eaaed107-69d4-4963-be83-74519e331715,0,1,38cddf96-8703-4396-8c73-47fb22828a48,38cddf96-8703-4396-8c73-47fb22828a48,0,1,2c2cb793-0177-4983-91ca-9c292c5b10f1,2c2cb793-0177-4983-91ca-9c292c5b10f1,0,1,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,0,1,221fa473-3327-44e6-a033-6fdfd2be713c,221fa473-3327-44e6-a033-6fdfd2be713c,0,1,7a5973f0-7e29-44af-8e7b-70af71f704a4,7a5973f0-7e29-44af-8e7b-70af71f704a4,0,1,27089e8e-2c75-431c-b808-5d4dcba3cdca,27089e8e-2c75-431c-b808-5d4dcba3cdca,0,1,9ab3980e-a480-4f90-a8cc-bde99d5ace35,9ab3980e-a480-4f90-a8cc-bde99d5ace35,0,1,ec928563-6e35-4b84-b477-90d2481cec1c,ec928563-6e35-4b84-b477-90d2481cec1c,0,1,5d3e9678-20fe-4128-867a-3f7addaa7831,5d3e9678-20fe-4128-867a-3f7addaa7831,0,1,bb878f73-8a0f-459a-9076-ce57fe7957dc,bb878f73-8a0f-459a-9076-ce57fe7957dc,0,1,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,0,1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,0,1,9f4b8e36-83ff-4694-8540-b5f47b18395f,9f4b8e36-83ff-4694-8540-b5f47b18395f,0,1,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,0,1,314b0da2-24d3-48cc-8532-d36c45eb3bf8,314b0da2-24d3-48cc-8532-d36c45eb3bf8,0,1,4077e700-ec20-4afa-8155-bf7e516a70cb,4077e700-ec20-4afa-8155-bf7e516a70cb,0,1,10008125-3aeb-4912-8ad6-d92d283ea09a,10008125-3aeb-4912-8ad6-d92d283ea09a,0,1,d22a0a50-220d-459e-a23a-39730a1e67c4,d22a0a50-220d-459e-a23a-39730a1e67c4,0,1,dd050ca0-8335-4654-ab5c-7babcb4824ef,dd050ca0-8335-4654-ab5c-7babcb4824ef,0,1,706cbf55-626d-4cab-b589-a2464368f6c1,706cbf55-626d-4cab-b589-a2464368f6c1,0,1,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,0,1,483dfce4-9c66-4739-94d4-17a005d64f5b,483dfce4-9c66-4739-94d4-17a005d64f5b,0,1,19506116-43ef-433c-822c-ef8717b0da6b,19506116-43ef-433c-822c-ef8717b0da6b,0,1,464b92cc-b577-4350-ae9f-e697390248d7,464b92cc-b577-4350-ae9f-e697390248d7,0,1,5a1242c8-3817-4d2c-9bfd-f62a6b80730c,5a1242c8-3817-4d2c-9bfd-f62a6b80730c,0,1,b9be6caf-e5e0-45a9-8cc8-3c83721632a2,b9be6caf-e5e0-45a9-8cc8-3c83721632a2,0,1,2fac5a7b-cb3e-4442-892f-77f338035eeb,2fac5a7b-cb3e-4442-892f-77f338035eeb,0,1,f2076747-0bc4-41dd-bab9-33cec85111f0,f2076747-0bc4-41dd-bab9-33cec85111f0,0,1,9f74c0bb-b876-4a37-b954-c93898a21067,9f74c0bb-b876-4a37-b954-c93898a21067,0,1,97e853dc-065f-4c6d-84cb-3d3aff367b22,97e853dc-065f-4c6d-84cb-3d3aff367b22,0,1,2f1fdf47-2627-496f-9e1f-77019abb2104,2f1fdf47-2627-496f-9e1f-77019abb2104,0,1,c996532a-8795-4136-8a40-9bb4b263277c,c996532a-8795-4136-8a40-9bb4b263277c,0,1,64c77788-fc49-4979-8163-949a891bd8b7,64c77788-fc49-4979-8163-949a891bd8b7,0,1,c39750ca-e33f-40c2-b830-119423d9a2ae,c39750ca-e33f-40c2-b830-119423d9a2ae,0,1,9372ff6b-27b6-48f3-a2a2-762e7c485766,9372ff6b-27b6-48f3-a2a2-762e7c485766,0,1,f454595a-4a3d-451b-8e8b-b17aa8314591,f454595a-4a3d-451b-8e8b-b17aa8314591,0,1,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,0,1,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,0,1,bc708da8-7fc6-4da1-8129-9ef6a86667af,bc708da8-7fc6-4da1-8129-9ef6a86667af,0,1,061842fe-4077-4d6e-aefe-de79409da730,061842fe-4077-4d6e-aefe-de79409da730,0,1,da6e4bff-9835-4b92-b62b-291a5d6c86fe,da6e4bff-9835-4b92-b62b-291a5d6c86fe,0,1,3fadaeb7-2c41-42a4-bfa8-c585602b1028,3fadaeb7-2c41-42a4-bfa8-c585602b1028,0,1,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,0,1,083c709b-ed8c-47e4-a190-421e14259e73,083c709b-ed8c-47e4-a190-421e14259e73,0,1,b98dacc7-29e1-426b-a664-0a988f18186c,b98dacc7-29e1-426b-a664-0a988f18186c,0,1,d678856d-6e7c-443f-a6e3-350bbe8af659,d678856d-6e7c-443f-a6e3-350bbe8af659,0,1,d0979762-22ce-41be-b7a4-5e9ac149d94b,d0979762-22ce-41be-b7a4-5e9ac149d94b,0,1,ae23e70c-479e-47ad-9bfa-58560a903410,ae23e70c-479e-47ad-9bfa-58560a903410,0,1,c0d83781-bbda-43f7-bf0e-5defa3d47143,c0d83781-bbda-43f7-bf0e-5defa3d47143,0,1,21fa5fdd-acbc-403b-9acb-bbf95284bd20,21fa5fdd-acbc-403b-9acb-bbf95284bd20,0,1,576a01e3-4d6d-4241-a3c4-7661ba129bcb,576a01e3-4d6d-4241-a3c4-7661ba129bcb,0,1,9f7290dd-19f4-4163-9795-fe562e84f06d,9f7290dd-19f4-4163-9795-fe562e84f06d,0,1,c3b5c81f-b787-4f63-8cba-79def0921477,c3b5c81f-b787-4f63-8cba-79def0921477,0,1,1f0cb3d4-1344-451b-a257-be3cd854acfd,1f0cb3d4-1344-451b-a257-be3cd854acfd,0,1,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0,1,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,0,1,372150e2-526e-4424-8c54-e4b16bdd25b5,372150e2-526e-4424-8c54-e4b16bdd25b5,0,1,752dc569-cf84-42d7-911d-49d455f7214e,752dc569-cf84-42d7-911d-49d455f7214e,0,1,fecab2b9-27e1-44d6-9082-79c3569b7477,fecab2b9-27e1-44d6-9082-79c3569b7477,0,1,07ae092f-8517-47b7-b54c-5dbcb6506929,07ae092f-8517-47b7-b54c-5dbcb6506929,0,1,db4c25bb-d199-43ec-833d-82972de04a41,db4c25bb-d199-43ec-833d-82972de04a41,0,1,43d19685-0794-41f2-9171-bf565133718d,43d19685-0794-41f2-9171-bf565133718d,0,1,b68c15c4-4966-4f13-8912-2d479b65089a,b68c15c4-4966-4f13-8912-2d479b65089a,0,1,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,0,1,f87e3935-dae1-4192-b6a7-05e3c700c590,f87e3935-dae1-4192-b6a7-05e3c700c590,0,1,ee635706-6ee2-4956-8d58-a235f64687f6,ee635706-6ee2-4956-8d58-a235f64687f6,0,1,a5a40ca7-d665-420b-a516-1355019d6901,a5a40ca7-d665-420b-a516-1355019d6901,0,1,adf9304c-ccf8-492e-95b1-0754764586a2,adf9304c-ccf8-492e-95b1-0754764586a2,0,1,fd175112-ec8f-4088-9b21-d8135056f0c5,fd175112-ec8f-4088-9b21-d8135056f0c5,0,1,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,0,1,df76a1b7-312a-4e77-bac1-79befadb4495,df76a1b7-312a-4e77-bac1-79befadb4495,0,1,ab39fad8-1039-491e-982a-c49637770ec0,ab39fad8-1039-491e-982a-c49637770ec0,0,1,7d93a6ba-3ca7-45ab-a540-743c79587535,7d93a6ba-3ca7-45ab-a540-743c79587535,0,1,76b58810-0527-4dfc-8858-bac68e7e65f3,76b58810-0527-4dfc-8858-bac68e7e65f3,0,1,aba97fd9-f05e-45cd-8404-ed702070e17a,aba97fd9-f05e-45cd-8404-ed702070e17a,0,1,f5c415cd-429b-469f-9332-c43ab5d1c8d6,f5c415cd-429b-469f-9332-c43ab5d1c8d6,0,1,458e9c6b-b828-404b-be5a-c6c0aeea34c9,458e9c6b-b828-404b-be5a-c6c0aeea34c9,0,1,7262eb4d-2d2d-454c-beaa-974645813af7,7262eb4d-2d2d-454c-beaa-974645813af7,0,1,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,0,1,b2265070-9cd3-4176-92c8-6d9f32c2ca84,b2265070-9cd3-4176-92c8-6d9f32c2ca84,0,1,b347e774-2261-4f76-9bdb-3c6736983589,b347e774-2261-4f76-9bdb-3c6736983589,0,1,be7e2715-1243-49a8-8c7c-55d632d3cf6c,be7e2715-1243-49a8-8c7c-55d632d3cf6c,0,1,49221b2f-aae2-4bee-9a1a-18263fc74244,49221b2f-aae2-4bee-9a1a-18263fc74244,0,1,da0cd264-da2f-4044-af28-c91d2efe1d5c,da0cd264-da2f-4044-af28-c91d2efe1d5c,0,1,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,0,1,1e44abfe-c173-4802-b535-96849d384983,1e44abfe-c173-4802-b535-96849d384983,0,1,2751a509-037b-49aa-9ca8-e87057d6d82c,2751a509-037b-49aa-9ca8-e87057d6d82c,0,1,35f62549-eb6a-4284-a6e3-406b0d9df0cf,35f62549-eb6a-4284-a6e3-406b0d9df0cf,0,1,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,0,1,fd66995b-ee76-41d3-983f-33d84bdcbbd4,fd66995b-ee76-41d3-983f-33d84bdcbbd4,0,1,73e97918-b34e-4ad2-8591-4c219eb92f2c,73e97918-b34e-4ad2-8591-4c219eb92f2c,0,1,445cf7eb-35d0-48f8-9579-c2ec574ef324,445cf7eb-35d0-48f8-9579-c2ec574ef324,0,1,1025657e-afd2-4c7b-96d5-ccbedaca4619,1025657e-afd2-4c7b-96d5-ccbedaca4619,0,1,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,0,1,e754ad5c-cf3c-4198-af81-128475924cb0,e754ad5c-cf3c-4198-af81-128475924cb0,0,1,ed65d504-b210-4014-85ec-275ad633ef04,ed65d504-b210-4014-85ec-275ad633ef04,0,1,dc31edb1-273e-4b1a-8e69-32393479ff36,dc31edb1-273e-4b1a-8e69-32393479ff36,0,1,46169f0b-8514-40a1-9d27-8489cab72503,46169f0b-8514-40a1-9d27-8489cab72503,0,1,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,0,1,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,0,1,c90243af-582c-4f5a-88e7-e0cbc0555fcb,c90243af-582c-4f5a-88e7-e0cbc0555fcb,0,1,14bf4066-15cb-4165-b854-45443ee27da1,14bf4066-15cb-4165-b854-45443ee27da1,0,1,c35904cf-4954-434e-96fd-5ca537a88c66,c35904cf-4954-434e-96fd-5ca537a88c66,0,1,5545798f-72dc-4630-a5ba-88039f4bfe3c,5545798f-72dc-4630-a5ba-88039f4bfe3c,0,1,f293ac4b-91ed-4c97-90b3-bfe98c983a0f,f293ac4b-91ed-4c97-90b3-bfe98c983a0f,0,1,4427cab9-4eea-4415-98ef-6021a447c60c,4427cab9-4eea-4415-98ef-6021a447c60c,0,1,fe46b4da-d865-468f-badd-83644bf88faa,fe46b4da-d865-468f-badd-83644bf88faa,0,1,2851c9d4-4366-4488-926d-a7fcd3b1548c,2851c9d4-4366-4488-926d-a7fcd3b1548c,0,1,31116aa2-cfbc-48e8-886b-45c1c17508fd,31116aa2-cfbc-48e8-886b-45c1c17508fd,0,1,6aa819d3-c56d-4561-a2e4-a1188ab1295a,6aa819d3-c56d-4561-a2e4-a1188ab1295a,0,1,2ddf344d-7065-40d5-9306-23870d8fc04a,2ddf344d-7065-40d5-9306-23870d8fc04a,0,1,c630ab2d-0a20-4136-88b6-220b2cad6a71,c630ab2d-0a20-4136-88b6-220b2cad6a71,0,1,00cd1dea-bc54-475c-956d-dc5221104932,00cd1dea-bc54-475c-956d-dc5221104932,0,1,c343495b-5947-4fe7-a94b-d1f2b2455b4f,c343495b-5947-4fe7-a94b-d1f2b2455b4f,0,1,fbce7316-bb9a-40c1-af3c-352f4b559ab6,fbce7316-bb9a-40c1-af3c-352f4b559ab6,0,1,a3721457-b33b-4742-b6e1-531af10969d1,a3721457-b33b-4742-b6e1-531af10969d1,0,1,9619a603-e578-4f30-bcc6-adfddfa915c0,9619a603-e578-4f30-bcc6-adfddfa915c0,0,1,3807f865-dd2c-44f7-9238-3db191f0a186,3807f865-dd2c-44f7-9238-3db191f0a186,0,1,8f184df5-bfe8-4df3-bc7c-18218cef7650,8f184df5-bfe8-4df3-bc7c-18218cef7650,0,1,387e273a-889f-454b-8b43-feaa12025fde,387e273a-889f-454b-8b43-feaa12025fde,0,1,1c38ad75-b294-4c05-89ce-69ce4d9a291f,1c38ad75-b294-4c05-89ce-69ce4d9a291f,0,1,078d1e8f-6d27-4761-9532-b1e7a60e4c13,078d1e8f-6d27-4761-9532-b1e7a60e4c13,0,1,4262193c-58ad-47c6-8088-735d8cd037ea,4262193c-58ad-47c6-8088-735d8cd037ea,0,1,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,0,1,de6d1aad-39eb-46ce-87aa-d29812bb37bf,de6d1aad-39eb-46ce-87aa-d29812bb37bf,0,1,4ad859ec-cc75-4bac-9e89-397798450e48,4ad859ec-cc75-4bac-9e89-397798450e48,0,1,d93ab94c-0f55-4b80-b226-41b44c73b3ea,d93ab94c-0f55-4b80-b226-41b44c73b3ea,0,1,94cbed80-5a35-471f-b354-439a11629210,94cbed80-5a35-471f-b354-439a11629210,0,1,1162cc0a-42e5-47cb-9507-68459579f110,1162cc0a-42e5-47cb-9507-68459579f110,0,1,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,0,1,bb49dc80-4934-4f44-8f27-9a363dca8dc4,bb49dc80-4934-4f44-8f27-9a363dca8dc4,0,1,7338e497-03a7-4ed4-85a2-ca802c065a9f,7338e497-03a7-4ed4-85a2-ca802c065a9f,0,1,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,0,1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,0,1,d33df51c-3dcd-496c-90f2-7ee05582bdf7,d33df51c-3dcd-496c-90f2-7ee05582bdf7,0,1,24b39ebd-2424-4939-8e3e-d09eb674d409,24b39ebd-2424-4939-8e3e-d09eb674d409,0,1,08c751bb-9e57-4536-901e-bb316c8e96d7,08c751bb-9e57-4536-901e-bb316c8e96d7,0,1,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,0,1,034cdcef-08e5-4751-9885-400aa69e0b94,034cdcef-08e5-4751-9885-400aa69e0b94,0,1,efefebea-2032-4006-b9ca-50a23b7da1ef,efefebea-2032-4006-b9ca-50a23b7da1ef,0,1,4c794d37-3352-4acb-a939-5e90fb682db8,4c794d37-3352-4acb-a939-5e90fb682db8,0,1,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,0,1,008f5068-da9c-4dac-9c0a-a50366d27cbb,008f5068-da9c-4dac-9c0a-a50366d27cbb,0,1,a23e6c77-8c12-4f99-ae2d-68a12274be38,a23e6c77-8c12-4f99-ae2d-68a12274be38,0,1,3c4454cd-31e9-42a5-9127-fb66a628f0e1,3c4454cd-31e9-42a5-9127-fb66a628f0e1,0,1,c02c5cbf-b25a-4956-8aa7-74cfeb66d508,c02c5cbf-b25a-4956-8aa7-74cfeb66d508,0,1,6e61d717-de36-4dce-8af9-b6c14ed76acb,6e61d717-de36-4dce-8af9-b6c14ed76acb,0,1,474518fe-9cb5-4a12-9388-bc7a64511617,474518fe-9cb5-4a12-9388-bc7a64511617,0,1,64337614-b1c9-4931-b576-448721fa4602,64337614-b1c9-4931-b576-448721fa4602,0,1,1d73b59c-0594-4ed3-b584-cf1261941e1d,1d73b59c-0594-4ed3-b584-cf1261941e1d,0,1,8ff2547f-d596-4fa1-9e12-079e1cc4c057,8ff2547f-d596-4fa1-9e12-079e1cc4c057,0,1,1ab0c8f8-b908-4618-ae88-af37b8f1224e,1ab0c8f8-b908-4618-ae88-af37b8f1224e,0,1,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,0,1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,0,1,b77d748a-d180-432d-91c3-774e6ccf7efa,b77d748a-d180-432d-91c3-774e6ccf7efa,0,1,e5b9c1b0-4690-442c-b160-e6c587e42e57,e5b9c1b0-4690-442c-b160-e6c587e42e57,0,1,118a0e62-c0bb-435b-9e3e-c64563efa602,118a0e62-c0bb-435b-9e3e-c64563efa602,0,1,b57bc8a9-8a59-4192-a442-2e1982e83179,b57bc8a9-8a59-4192-a442-2e1982e83179,0,1,5b06ccda-2a70-4621-8273-78408cbe72a9,5b06ccda-2a70-4621-8273-78408cbe72a9,0,1,89753385-64fd-4e76-9857-bfd5d7c23f71,89753385-64fd-4e76-9857-bfd5d7c23f71,0,1,1b3113f3-e7d4-4e6f-b6ed-08f5fd78c68e,1b3113f3-e7d4-4e6f-b6ed-08f5fd78c68e,0,1,53e72cf2-e2a5-4b59-b5b1-a1fc28fda5bf,53e72cf2-e2a5-4b59-b5b1-a1fc28fda5bf,0,1,e20bcb57-2f68-4709-8a11-105d561a2dda,e20bcb57-2f68-4709-8a11-105d561a2dda,0,1,66ec2482-c1f3-45d3-9257-e0b9f5ae772a,66ec2482-c1f3-45d3-9257-e0b9f5ae772a,0,1,d3211832-c8ca-437a-8810-82e06cbb48de,d3211832-c8ca-437a-8810-82e06cbb48de,0,1,8131d701-1014-4196-9b67-914e451f8a3a,8131d701-1014-4196-9b67-914e451f8a3a,0,1,2b102933-c660-4e74-ae9a-5061a88ed672,2b102933-c660-4e74-ae9a-5061a88ed672,0,1,56c897b7-d34e-4d7d-9a3b-d0779be5c189,56c897b7-d34e-4d7d-9a3b-d0779be5c189,0,1,3ac81c80-56bd-4750-b135-07ab522e3eab,3ac81c80-56bd-4750-b135-07ab522e3eab,0,1,5657872f-c7d5-446f-bcc3-d0b86ad63a42,5657872f-c7d5-446f-bcc3-d0b86ad63a42,0,1,d5214cb9-67e2-469f-989f-3f2b662ae830,d5214cb9-67e2-469f-989f-3f2b662ae830,0,1,69679e88-4f2b-4dd6-8cb2-b88293d07b55,69679e88-4f2b-4dd6-8cb2-b88293d07b55,0,1,68679208-9972-4854-8649-49bdf6212255,68679208-9972-4854-8649-49bdf6212255,0,1,98393093-7ba6-4b4d-86be-ee5826cd8cd5,98393093-7ba6-4b4d-86be-ee5826cd8cd5,0,1,87de486d-3f35-4432-a7cd-9d3832db63cf,87de486d-3f35-4432-a7cd-9d3832db63cf,0,1,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,0,1,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,0,1,bb7ce04a-8143-4c0b-a196-1b57f1640142,bb7ce04a-8143-4c0b-a196-1b57f1640142,0,1,4872f12c-705c-4dd3-802f-d27496a0d634,4872f12c-705c-4dd3-802f-d27496a0d634,0,1,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0,1,f9ada91a-e673-4821-9bce-cb0dd75ca28b,f9ada91a-e673-4821-9bce-cb0dd75ca28b,0,1,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,0,1,90ce635a-0277-4056-980d-d1a16d91cb30,90ce635a-0277-4056-980d-d1a16d91cb30,0,1,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,0,1,1e77e873-632c-482b-8f46-8f8cc3cc8cef,1e77e873-632c-482b-8f46-8f8cc3cc8cef,0,1,766208a3-2780-427b-a7d3-93abe99d236b,766208a3-2780-427b-a7d3-93abe99d236b,0,1,63ce4c3c-5bad-409c-904f-18f34cf1da78,63ce4c3c-5bad-409c-904f-18f34cf1da78,0,1,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,0,1,26ac22f9-0bbb-4671-b446-626e345e2461,26ac22f9-0bbb-4671-b446-626e345e2461,0,1,0d63ee6d-e17f-4a86-b384-adf9793f3331,0d63ee6d-e17f-4a86-b384-adf9793f3331,0,1,f152945b-2a7b-449e-a915-176166af7bac,f152945b-2a7b-449e-a915-176166af7bac,0,1,77f5d86a-7fae-4490-9740-0e31102dab5c,77f5d86a-7fae-4490-9740-0e31102dab5c,0,1,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,0,1,24be43ec-d39e-46aa-9c11-2536b835e515,24be43ec-d39e-46aa-9c11-2536b835e515,0,1,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,0,1,df9af3ee-6a69-4a03-8ff5-0735e9a38013,df9af3ee-6a69-4a03-8ff5-0735e9a38013,0,1,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,0,1,7743fe24-b941-4dad-bc76-05fb6b26b1d7,7743fe24-b941-4dad-bc76-05fb6b26b1d7,0,1,5bf2da0d-f318-4036-9234-8a3a6eca88b2,5bf2da0d-f318-4036-9234-8a3a6eca88b2,0,1,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,0,1,c3634571-6fe5-45ab-9362-161305eef661,c3634571-6fe5-45ab-9362-161305eef661,0,1,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,0,1,96661303-1286-4f84-93b7-0e6da2bd7893,96661303-1286-4f84-93b7-0e6da2bd7893,0,1,68076431-36e6-46dc-92cb-e0d8e605bf66,68076431-36e6-46dc-92cb-e0d8e605bf66,0,1,239fa55a-6572-4e5c-9918-c2e14063c76d,239fa55a-6572-4e5c-9918-c2e14063c76d,0,1,8211a1b6-c3b1-466b-8d11-22603fb50c7a,8211a1b6-c3b1-466b-8d11-22603fb50c7a,0,1,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,0,1,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,0,1,a83cb338-5707-42c9-9e88-11f6c68fcc32,a83cb338-5707-42c9-9e88-11f6c68fcc32,0,1,985106b7-7476-4b48-90ac-ad86876395b5,985106b7-7476-4b48-90ac-ad86876395b5,0,1,0d8db0c9-adbc-478d-997c-3d7feccac99b,0d8db0c9-adbc-478d-997c-3d7feccac99b,0,1,3fd2ef04-c178-47bf-ab62-7baf83236d99,3fd2ef04-c178-47bf-ab62-7baf83236d99,0,1,b4cd1b51-dbc0-4bb0-879e-5ac0d58e78c1,b4cd1b51-dbc0-4bb0-879e-5ac0d58e78c1,0,1,320bf2e6-a3a8-490b-8aa0-21369ffb121b,320bf2e6-a3a8-490b-8aa0-21369ffb121b,0,1,a3bafc54-8fe4-4841-acc6-74a87baf9caf,a3bafc54-8fe4-4841-acc6-74a87baf9caf,0,1,f93741c9-ab94-464b-b0d4-4af99c9f92d5,f93741c9-ab94-464b-b0d4-4af99c9f92d5,0,1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0,1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,0,1,c59fd3f8-c734-49d3-90ba-e608a22ac981,c59fd3f8-c734-49d3-90ba-e608a22ac981,0,1,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,0,1,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,0,1,475f76ea-f494-41f1-9b65-f39907e5a427,475f76ea-f494-41f1-9b65-f39907e5a427,0,1,986280d1-41bb-4b15-a5ae-516d6a04c1f4,986280d1-41bb-4b15-a5ae-516d6a04c1f4,0,1,43bfd29a-d254-4c33-8639-200b483578c1,43bfd29a-d254-4c33-8639-200b483578c1,0,1,6a274167-7f80-4613-9890-259ffd8ccfc4,6a274167-7f80-4613-9890-259ffd8ccfc4,0,1,4e90e1ab-b1ec-4795-ad45-1db151a5492c,4e90e1ab-b1ec-4795-ad45-1db151a5492c,0,1,91791e56-ca80-4d90-b8a8-16145f6a9721,91791e56-ca80-4d90-b8a8-16145f6a9721,0,1,b242c6a2-5ac9-4edb-b5dd-24eda8162151,b242c6a2-5ac9-4edb-b5dd-24eda8162151,0,1,8d080f3c-06ed-48bf-9709-eea73d676741,8d080f3c-06ed-48bf-9709-eea73d676741,0,1,57b31a5d-9fdc-43d2-ae81-67157822c4b6,57b31a5d-9fdc-43d2-ae81-67157822c4b6,0,1,d4e2da66-9a70-459f-a873-cb4ad71d17b2,d4e2da66-9a70-459f-a873-cb4ad71d17b2,0,1,a84a91d2-d326-4bf4-82e6-d573ee35d090,a84a91d2-d326-4bf4-82e6-d573ee35d090,0,1,39cbda23-db3f-4ddd-8981-8540247406db,39cbda23-db3f-4ddd-8981-8540247406db,0,1,c8a18d99-62ff-45a4-acb5-48e3310c1b53,c8a18d99-62ff-45a4-acb5-48e3310c1b53,0,1,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,0,1,3500c6fa-813a-49dd-a4bf-163500db5b7f,3500c6fa-813a-49dd-a4bf-163500db5b7f,0,1,1d02493a-dd89-4a51-b75e-9c49f9818b95,1d02493a-dd89-4a51-b75e-9c49f9818b95,0,1,2845c5d1-e836-4499-bcae-f3c8fdae75ee,2845c5d1-e836-4499-bcae-f3c8fdae75ee,0,1,fe4e8e4e-9471-4583-b9b3-576007db08ee,fe4e8e4e-9471-4583-b9b3-576007db08ee,0,1,49deaaa8-6d50-4b25-8153-6712d88fb0fb,49deaaa8-6d50-4b25-8153-6712d88fb0fb,0,1,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,0,1,46a06de8-06fd-4b49-835f-4f24b832b3c4,46a06de8-06fd-4b49-835f-4f24b832b3c4,0,1,972c2fa0-0ca9-40da-a8c1-a06b81bd0bcf,972c2fa0-0ca9-40da-a8c1-a06b81bd0bcf,0,1,3845a567-4375-4c3a-af61-5b82674060ab,3845a567-4375-4c3a-af61-5b82674060ab,0,1,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,0,1,a835a3a7-989b-4247-b836-d23bba2f391a,a835a3a7-989b-4247-b836-d23bba2f391a,0,1,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,0,1,9b149c20-9328-4e2d-a34b-95c883ae4dcc,9b149c20-9328-4e2d-a34b-95c883ae4dcc,0,1,f8dbf226-ea56-4b15-baf1-a41fceba2a32,f8dbf226-ea56-4b15-baf1-a41fceba2a32,0,1,fc1476f7-26e6-4374-b99b-e515d86c050a,fc1476f7-26e6-4374-b99b-e515d86c050a,0,1,e0eb7b4a-9a13-4752-9327-e13d2abc4fc5,e0eb7b4a-9a13-4752-9327-e13d2abc4fc5,0,1,59fe985a-f169-495b-bd6d-4b64401f81b0,59fe985a-f169-495b-bd6d-4b64401f81b0,0,1,184d1023-fba9-4e56-b592-519254abe922,184d1023-fba9-4e56-b592-519254abe922,0,1,cb68b275-f191-4632-a8ea-aa8809256804,cb68b275-f191-4632-a8ea-aa8809256804,0,1,174011b9-8fe2-43f5-adea-21f6d73835ff,174011b9-8fe2-43f5-adea-21f6d73835ff,0,1,c4753515-a483-453e-a48b-b12d8ef48fd9,c4753515-a483-453e-a48b-b12d8ef48fd9,0,1,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,0,1,98c3bc52-2351-460c-8b8e-0d3f45ca3131,98c3bc52-2351-460c-8b8e-0d3f45ca3131,0,1,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,0,1,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,0,1,29645810-44aa-402c-9561-7819d6f4a7ab,29645810-44aa-402c-9561-7819d6f4a7ab,0,1,46bf4911-5200-44ac-9b4d-eb0089c12e34,46bf4911-5200-44ac-9b4d-eb0089c12e34,0,1,6e1685bd-7269-401c-b36e-def6a36b41d5,6e1685bd-7269-401c-b36e-def6a36b41d5,0,1,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,0,1,e03b6592-b597-4795-a78e-775d4f2258db,e03b6592-b597-4795-a78e-775d4f2258db,0,1,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,0,1,3b207d5f-6584-4cf2-9173-20235484f9f4,3b207d5f-6584-4cf2-9173-20235484f9f4,0,1,878d9efe-b0e7-487f-b8f7-83470c131e09,878d9efe-b0e7-487f-b8f7-83470c131e09,0,1,8270573d-8ed6-449d-853b-462d2dabaaa9,8270573d-8ed6-449d-853b-462d2dabaaa9,0,1,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,0,1,f2502463-67e4-4bfe-8ad5-fb80aa73975a,f2502463-67e4-4bfe-8ad5-fb80aa73975a,0,1,59e885e6-d978-40c2-95b6-35fc61074fb4,59e885e6-d978-40c2-95b6-35fc61074fb4,0,1,267dc512-9ee1-4bc1-9034-3effb7fb2949,267dc512-9ee1-4bc1-9034-3effb7fb2949,0,1,0f211e73-5be9-4015-93e7-ccf63e793cb6,0f211e73-5be9-4015-93e7-ccf63e793cb6,0,1,6574d8f4-fb97-4a26-b166-711fad63aa07,6574d8f4-fb97-4a26-b166-711fad63aa07,0,1,fb3eddaf-3241-4d59-8314-97a5ae9258c4,fb3eddaf-3241-4d59-8314-97a5ae9258c4,0,1,6528bd7a-bac1-4c8b-9b00-6be01c0121b1,6528bd7a-bac1-4c8b-9b00-6be01c0121b1,0,1,d8601e95-af94-4805-974a-99c539725d74,d8601e95-af94-4805-974a-99c539725d74,0,1,6d98f877-f3bb-4795-9025-2631468a331f,6d98f877-f3bb-4795-9025-2631468a331f,0,1,89b9379d-ace9-48cc-b979-a66fd45aeb1d,89b9379d-ace9-48cc-b979-a66fd45aeb1d,0,1,fb6b9985-3ef7-42e5-9f3a-d4499072ba3d,fb6b9985-3ef7-42e5-9f3a-d4499072ba3d,0,1,04ec4cb1-bab2-4bdd-b119-86540947b0ef,04ec4cb1-bab2-4bdd-b119-86540947b0ef,0,1,e93157d3-3a87-4f54-be95-d2d254c58349,e93157d3-3a87-4f54-be95-d2d254c58349,0,1,a8c1f22e-2589-4c02-93cf-8d88ef511ace,a8c1f22e-2589-4c02-93cf-8d88ef511ace,0,1,2f54f6d5-9d57-450b-a386-e917b5e46b0c,2f54f6d5-9d57-450b-a386-e917b5e46b0c,0,1,efea06e5-0e0b-4a16-9cf4-259ce36fe34e,efea06e5-0e0b-4a16-9cf4-259ce36fe34e,0,1,b7c40101-60b7-4c36-abcd-38101bc8b7d8,b7c40101-60b7-4c36-abcd-38101bc8b7d8,0,1,a4a9535b-b8a6-4d94-97e7-e28d795268ad,a4a9535b-b8a6-4d94-97e7-e28d795268ad,0,1,a4a23aa7-ccd2-49f9-ac3b-1257e9bdd300,a4a23aa7-ccd2-49f9-ac3b-1257e9bdd300,0,1,b6845833-530b-43b3-8715-f88b092d83bc,b6845833-530b-43b3-8715-f88b092d83bc,0,1,d2854e39-4157-45f3-a992-4d161c38b1da,d2854e39-4157-45f3-a992-4d161c38b1da,0,1,c4a5c44d-329d-41b5-9a6c-bddbc15f6249,c4a5c44d-329d-41b5-9a6c-bddbc15f6249,0,1,9767a113-5a42-4749-bf40-0f349e85615d,9767a113-5a42-4749-bf40-0f349e85615d,0,1,a3b0494c-f436-45ea-9577-4c0c86b057c9,a3b0494c-f436-45ea-9577-4c0c86b057c9,0,1,5101c142-b25c-4bef-80e7-7407f2c15c90,5101c142-b25c-4bef-80e7-7407f2c15c90,0,1,6d7872f1-fd54-41c4-8253-5f2b125f31ae,6d7872f1-fd54-41c4-8253-5f2b125f31ae,0,1,0c218200-27a8-4f71-9b09-3632dd453644,0c218200-27a8-4f71-9b09-3632dd453644,0,1,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,0,1,b5d30250-18ab-4af1-b99a-ff5dba334d1f,b5d30250-18ab-4af1-b99a-ff5dba334d1f,0,1,936f1aa5-7516-444b-b451-1162fa5d705f,936f1aa5-7516-444b-b451-1162fa5d705f,0,1,e8d5533e-2669-44f6-9eed-eaedab666d42,e8d5533e-2669-44f6-9eed-eaedab666d42,0,1,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,0,1,9e323b0d-4e3b-45d4-9705-aa30e63014f5,9e323b0d-4e3b-45d4-9705-aa30e63014f5,0,1,5afa798a-958e-4e0c-a380-0104f4c037a7,5afa798a-958e-4e0c-a380-0104f4c037a7,0,1,c0295fd9-c749-41b3-8d0d-6af16f484b1f,c0295fd9-c749-41b3-8d0d-6af16f484b1f,0,1,bd32a863-3090-432d-89c4-356ba86a0bdc,bd32a863-3090-432d-89c4-356ba86a0bdc,0,1,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,0,1,ed5465b4-a556-4078-ab18-49fef2afba2e,ed5465b4-a556-4078-ab18-49fef2afba2e,0,1,7368ab8f-59d5-4270-a43b-0f3e422169ed,7368ab8f-59d5-4270-a43b-0f3e422169ed,0,1,eeb0571b-1b74-4889-b8b5-f94186d692d7,eeb0571b-1b74-4889-b8b5-f94186d692d7,0,1,9ef3b72c-caa3-486b-9917-04c00f6689c1,9ef3b72c-caa3-486b-9917-04c00f6689c1,0,1,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,0,1,9245417f-f247-47ba-a1b4-a17ec2e8776c,9245417f-f247-47ba-a1b4-a17ec2e8776c,0,1,a4b721d7-b119-47eb-80e0-7db34c83964f,a4b721d7-b119-47eb-80e0-7db34c83964f,0,1,512629d1-e8b7-4f66-b613-b8c0cb9c250b,512629d1-e8b7-4f66-b613-b8c0cb9c250b,0,1,b7cf4684-4432-4658-9c06-b315d470a3a6,b7cf4684-4432-4658-9c06-b315d470a3a6,0,1,d3bc8211-54d8-47dd-aecf-5da72b65195f,d3bc8211-54d8-47dd-aecf-5da72b65195f,0,1,33f11da8-f670-4ec3-9d40-96fce031c60f,33f11da8-f670-4ec3-9d40-96fce031c60f,0,1,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,0,1,f74c2d41-2433-4bed-8aef-adfeed198252,f74c2d41-2433-4bed-8aef-adfeed198252,0,1,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,0,1,56c9703a-751a-4e6c-81f4-a8756fb040e3,56c9703a-751a-4e6c-81f4-a8756fb040e3,0,1,c3a86eec-1ff5-4392-9904-91a12a2e253a,c3a86eec-1ff5-4392-9904-91a12a2e253a,0,1,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,0,1,f02b7246-dae9-4e15-b4cd-b06133664d34,f02b7246-dae9-4e15-b4cd-b06133664d34,0,1,77f20022-17ce-4e00-8a84-015238bce6f3,77f20022-17ce-4e00-8a84-015238bce6f3,0,1,3734619b-7059-4547-8b97-0b3393389d4d,3734619b-7059-4547-8b97-0b3393389d4d,0,1,a30bf95f-aabd-4da0-8287-61e08f9362fb,a30bf95f-aabd-4da0-8287-61e08f9362fb,0,1,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,0,1,4078867c-2972-47f9-bebd-935a6f1cc667,4078867c-2972-47f9-bebd-935a6f1cc667,0,1,8502fe39-c241-4be5-a313-fd887bbbdfa1,8502fe39-c241-4be5-a313-fd887bbbdfa1,0,1,67a71201-13e5-42a3-902f-fb3a59710dfb,67a71201-13e5-42a3-902f-fb3a59710dfb,0,1,3a79a951-a997-4596-ab62-ba376d67725d,3a79a951-a997-4596-ab62-ba376d67725d,0,1,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,0,1,884c28de-434f-440a-8c63-67e659c097ad,884c28de-434f-440a-8c63-67e659c097ad,0,1,92ead3b5-8c55-4e4d-bd47-009e025b22f8,92ead3b5-8c55-4e4d-bd47-009e025b22f8,0,1,50d8e365-aa58-4b60-8992-01943379d485,50d8e365-aa58-4b60-8992-01943379d485,0,1,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,0,1,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,0,1,094d5482-286d-4e1a-8888-c0452d2e5af0,094d5482-286d-4e1a-8888-c0452d2e5af0,0,1,fec102ea-a3f6-49b5-b4b8-6884b0654129,fec102ea-a3f6-49b5-b4b8-6884b0654129,0,1,246571fb-38c7-4da6-929d-d8b44bc3437c,246571fb-38c7-4da6-929d-d8b44bc3437c,0,1,047fd6d7-5e30-4184-a09a-6525de526cc7,047fd6d7-5e30-4184-a09a-6525de526cc7,0,1,beb44b02-5d5e-4127-aee7-e184a43a4210,beb44b02-5d5e-4127-aee7-e184a43a4210,0,1,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,0,1,e24641ed-3e92-46d7-852b-9958ab7bc520,e24641ed-3e92-46d7-852b-9958ab7bc520,0,1,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,0,1,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,0,1,2c61114f-abd7-4415-8cdf-4fe95d9fe354,2c61114f-abd7-4415-8cdf-4fe95d9fe354,0,1,abd7a766-5cc1-48db-8d29-797e9d666a78,abd7a766-5cc1-48db-8d29-797e9d666a78,0,1,1704b5e3-8e77-4df6-9223-e6e5c41a280d,1704b5e3-8e77-4df6-9223-e6e5c41a280d,0,1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,0,1,b0dde395-8498-4469-9507-d290798117d7,b0dde395-8498-4469-9507-d290798117d7,0,1,999616ea-0faa-4ae2-9841-6a6997ea6694,999616ea-0faa-4ae2-9841-6a6997ea6694,0,1,c5f91669-13d8-4f0a-a054-2701078da38a,c5f91669-13d8-4f0a-a054-2701078da38a,0,1,34f9872b-e02e-4093-ba06-3cb5b8995850,34f9872b-e02e-4093-ba06-3cb5b8995850,0,1,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,0,1,e61eef89-b3de-4b73-b7d9-af75318093e5,e61eef89-b3de-4b73-b7d9-af75318093e5,0,1,94e68502-adf1-476e-be2f-8418385959fa,94e68502-adf1-476e-be2f-8418385959fa,0,1,bf80ccc5-f907-4e7f-a007-6030c7ba682e,bf80ccc5-f907-4e7f-a007-6030c7ba682e,0,1,a330acd1-bc97-4ef8-8ecb-5604868ca044,a330acd1-bc97-4ef8-8ecb-5604868ca044,0,1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,0,1,58c3936c-4db0-45c8-a22e-b5dd49a61497,58c3936c-4db0-45c8-a22e-b5dd49a61497,0,1,8928693b-1933-4e02-8a33-99b6f05b1c57,8928693b-1933-4e02-8a33-99b6f05b1c57,0,1,9aa607bc-5870-436a-bbe1-296560393e3b,9aa607bc-5870-436a-bbe1-296560393e3b,0,1,1635be16-4861-4a7d-babc-4caff448a7f7,1635be16-4861-4a7d-babc-4caff448a7f7,0,1,9e399087-c957-4a7a-ab9d-2b689736caab,9e399087-c957-4a7a-ab9d-2b689736caab,0,1,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,0,1,61f283c7-f887-432b-a2d7-c27483e04317,61f283c7-f887-432b-a2d7-c27483e04317,0,1,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,0,1,2b7372be-af0d-464e-8d09-8172229790af,2b7372be-af0d-464e-8d09-8172229790af,0,1,079bc65d-da8e-431d-847c-ec46868ca92d,079bc65d-da8e-431d-847c-ec46868ca92d,0,1,d85346db-be25-4dab-a2db-647c3d40dd17,d85346db-be25-4dab-a2db-647c3d40dd17,0,1,9f9936fc-54a0-4812-b12d-2f8f91551440,9f9936fc-54a0-4812-b12d-2f8f91551440,0,1,a5667633-9264-4dfa-9e26-c45e96e61ae3,a5667633-9264-4dfa-9e26-c45e96e61ae3,0,1,2eeea138-481c-4fde-9e8a-709d751cc469,2eeea138-481c-4fde-9e8a-709d751cc469,0,1,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,0,1,1f169cd2-573f-408d-92e7-3eee7ff4528a,1f169cd2-573f-408d-92e7-3eee7ff4528a,0,1,845262f8-8208-4c90-98ec-c85dd5734cf0,845262f8-8208-4c90-98ec-c85dd5734cf0,0,1,3326bbcb-b277-44db-a252-2448119e8146,3326bbcb-b277-44db-a252-2448119e8146,0,1,61cac5f7-320c-4098-9078-44fadcdeb219,61cac5f7-320c-4098-9078-44fadcdeb219,0,1,304304b1-36a4-42bb-8ab9-b23b59795001,304304b1-36a4-42bb-8ab9-b23b59795001,0,1,9ed016b2-2a4a-43a1-a336-6b13d68b3d0a,9ed016b2-2a4a-43a1-a336-6b13d68b3d0a,0,1,75b9ab9f-7cbb-4468-9570-39f719fd682b,75b9ab9f-7cbb-4468-9570-39f719fd682b,0,1,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,0,1,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,0,1,cd454738-62dd-4f95-af33-b52750678428,cd454738-62dd-4f95-af33-b52750678428,0,1,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,0,1,e4abafc6-f859-4d96-9818-5b9bf8d66d69,e4abafc6-f859-4d96-9818-5b9bf8d66d69,0,1,535acd2c-26d2-4f32-9ae6-cc1956317c59,535acd2c-26d2-4f32-9ae6-cc1956317c59,0,1,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,0,1,ac4e0868-ba49-46b4-8872-d42483a5591f,ac4e0868-ba49-46b4-8872-d42483a5591f,0,1,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,0,1,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0,1,ca4c0299-625a-4b03-be0e-36ffb45c6d08,ca4c0299-625a-4b03-be0e-36ffb45c6d08,0,1,7fa1119b-4321-4b8f-a879-1d940084145a,7fa1119b-4321-4b8f-a879-1d940084145a,0,1,5d9c0841-6ea6-48dc-a53b-9f19894750f8,5d9c0841-6ea6-48dc-a53b-9f19894750f8,0,1,86b5303b-d967-4bc6-b2da-066c5a58613f,86b5303b-d967-4bc6-b2da-066c5a58613f,0,1,0c5e261f-961e-4780-877a-06589400b88a,0c5e261f-961e-4780-877a-06589400b88a,0,1,3dd37cb7-f1e0-4882-a9a3-1044a3390a3e,3dd37cb7-f1e0-4882-a9a3-1044a3390a3e,0,1,853b824d-9377-475f-913e-d02bd60f5f64,853b824d-9377-475f-913e-d02bd60f5f64,0,1,4599ef83-5f1e-44af-ae0c-67988656a99e,4599ef83-5f1e-44af-ae0c-67988656a99e,0,1,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,0,1,e1b94dcf-ec37-4b2d-a7af-120eeee40944,e1b94dcf-ec37-4b2d-a7af-120eeee40944,0,1,7d2a37b1-a1a0-435a-846a-95e255655044,7d2a37b1-a1a0-435a-846a-95e255655044,0,1,109db64c-00dc-490e-99a5-4430d9344e99,109db64c-00dc-490e-99a5-4430d9344e99,0,1,85837a55-fed5-4b7b-a622-30d728b9a677,85837a55-fed5-4b7b-a622-30d728b9a677,0,1,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0,1,b6bd2b39-07ae-48a7-8a5b-f44b5034afa9,b6bd2b39-07ae-48a7-8a5b-f44b5034afa9,0,1,5500d5c6-fdbf-4614-b43b-fabf56e3968c,5500d5c6-fdbf-4614-b43b-fabf56e3968c,0,1,a08eeef7-1c81-4985-8628-6b35ac73e135,a08eeef7-1c81-4985-8628-6b35ac73e135,0,1,c446f732-097a-4197-8384-91a6925c6bdd,c446f732-097a-4197-8384-91a6925c6bdd,0,1,cc33ec52-aed4-4807-90b5-700d307b4f57,cc33ec52-aed4-4807-90b5-700d307b4f57,0,1,6f9ece3d-aeca-4313-9e6a-44e562fc83ff,6f9ece3d-aeca-4313-9e6a-44e562fc83ff,0,1,6b04b6f1-2c9d-4de0-b871-6cc377b13e33,6b04b6f1-2c9d-4de0-b871-6cc377b13e33,0,1,82ea249e-ecba-4916-b9a1-c7e6119b353a,82ea249e-ecba-4916-b9a1-c7e6119b353a,0,1,d5406849-57b3-44f4-8efa-e73523939ae5,d5406849-57b3-44f4-8efa-e73523939ae5,0,1,9ce5f33f-4331-491d-b084-9913c38f4c7d,9ce5f33f-4331-491d-b084-9913c38f4c7d,0,1,0603113a-f2f1-43e6-9838-64c5e98417f0,0603113a-f2f1-43e6-9838-64c5e98417f0,0,1,43055a56-a079-41e2-87eb-723769109bed,43055a56-a079-41e2-87eb-723769109bed,0,1,930f2bc5-417d-4b97-b440-8d5e81e5c896,930f2bc5-417d-4b97-b440-8d5e81e5c896,0,1,c8f487aa-544a-41dc-b7c3-7cf21d2720f2,c8f487aa-544a-41dc-b7c3-7cf21d2720f2,0,1,e506f7d3-2572-4c54-ac98-e40f083ac578,e506f7d3-2572-4c54-ac98-e40f083ac578,0,1,bdf93aa5-86a4-4791-bdb0-172532029b7c,bdf93aa5-86a4-4791-bdb0-172532029b7c,0,1,da9821c3-4b16-48b7-9088-d3cf8ac536a6,da9821c3-4b16-48b7-9088-d3cf8ac536a6,0,1,d5142574-a040-4dd0-a482-cdc61c1d86ab,d5142574-a040-4dd0-a482-cdc61c1d86ab,0,1,778e79ee-eb1a-4d52-8a31-58e781c78fe4,778e79ee-eb1a-4d52-8a31-58e781c78fe4,0,1,f480ac52-e2f1-4ed0-a0b1-20a622f77302,f480ac52-e2f1-4ed0-a0b1-20a622f77302,0,1,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,0,1,b9b0fbdc-8fda-46d1-bb3e-561a03604971,b9b0fbdc-8fda-46d1-bb3e-561a03604971,0,1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,0,1,672c2936-9771-4e32-a970-7ac7f12a21e8,672c2936-9771-4e32-a970-7ac7f12a21e8,0,1,c264441d-4805-4968-baa2-37b8970049c7,c264441d-4805-4968-baa2-37b8970049c7,0,1,f36150de-33af-4410-8a4c-8c9f4b545793,f36150de-33af-4410-8a4c-8c9f4b545793,0,1,62f97480-7d4a-48f3-9d1d-612909b242c9,62f97480-7d4a-48f3-9d1d-612909b242c9,0,1,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,0,1,3068be84-a401-4701-8ac9-411fae130f84,3068be84-a401-4701-8ac9-411fae130f84,0,1,957394a7-e5b8-47fc-8680-1e71efe2be7d,957394a7-e5b8-47fc-8680-1e71efe2be7d,0,1,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,0,1,4f25ef45-c8d9-401d-b0e8-2217ac310f04,4f25ef45-c8d9-401d-b0e8-2217ac310f04,0,1,504ca240-b5ae-433e-ae5f-d818263eea23,504ca240-b5ae-433e-ae5f-d818263eea23,0,1,32461819-9437-417d-8d1e-851c9a2dcee2,32461819-9437-417d-8d1e-851c9a2dcee2,0,1,74228950-8a4b-4dd6-a053-8650de202521,74228950-8a4b-4dd6-a053-8650de202521,0,1,ff700f82-aba3-417c-be1b-b1b37ad98543,ff700f82-aba3-417c-be1b-b1b37ad98543,0,1,6b9ce91e-08b9-4972-9878-1724c67b68ec,6b9ce91e-08b9-4972-9878-1724c67b68ec,0,1,640814f2-6082-475e-8006-25fd5b24afdb,640814f2-6082-475e-8006-25fd5b24afdb,0,1,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,0,1,f1b66ea8-262d-4b38-a039-b83a843f6ee8,f1b66ea8-262d-4b38-a039-b83a843f6ee8,0,1,bcae6e05-f1fd-413e-9eef-2e1cee42a962,bcae6e05-f1fd-413e-9eef-2e1cee42a962,0,1,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,0,1,9155c95b-6afb-41bb-bd0b-d37e503fc163,9155c95b-6afb-41bb-bd0b-d37e503fc163,0,1,d917c19e-be15-41cc-9c8a-a97c8de85309,d917c19e-be15-41cc-9c8a-a97c8de85309,0,1,47907538-9357-4885-8b50-17f2e16c260f,47907538-9357-4885-8b50-17f2e16c260f,0,1,59eb5919-3c33-48bf-b322-ec78018e4142,59eb5919-3c33-48bf-b322-ec78018e4142,0,1,17e1840f-fef3-4f17-8476-273e6af24cb4,17e1840f-fef3-4f17-8476-273e6af24cb4,0,1,63f308a5-b955-48a5-8052-50c5bede65d0,63f308a5-b955-48a5-8052-50c5bede65d0,0,1,a64566fa-b706-49bc-8277-4531145c400e,a64566fa-b706-49bc-8277-4531145c400e,0,1,1b614b97-5c1d-497a-9574-40114059f836,1b614b97-5c1d-497a-9574-40114059f836,0,1,294c000f-6979-4ed1-bbc7-7402facd9185,294c000f-6979-4ed1-bbc7-7402facd9185,0,1,db607fbc-f785-47d5-9550-577424aa3fe9,db607fbc-f785-47d5-9550-577424aa3fe9,0,1,b7111ddf-a623-4bae-90aa-636148492ca2,b7111ddf-a623-4bae-90aa-636148492ca2,0,1,905d9dcd-5793-4362-8fe8-2edce8c35e32,905d9dcd-5793-4362-8fe8-2edce8c35e32,0,1,a96cb6fd-54e0-4514-9210-7f4636acd336,a96cb6fd-54e0-4514-9210-7f4636acd336,0,1,3580e7a7-95d1-4a8e-bc12-a1449fe03757,3580e7a7-95d1-4a8e-bc12-a1449fe03757,0,1,13759790-6c70-4323-9321-a68b90c51663,13759790-6c70-4323-9321-a68b90c51663,0,1,cbf6f37a-874a-434a-9c76-c357e6acf215,cbf6f37a-874a-434a-9c76-c357e6acf215,0,1,72edf604-8b73-49d2-a09d-a548c8c69596,72edf604-8b73-49d2-a09d-a548c8c69596,0,1,c6c33e0a-ebaa-4bb0-8a3a-3fe5632c6f47,c6c33e0a-ebaa-4bb0-8a3a-3fe5632c6f47,0,1,01e4c0ce-71ca-4421-a5a6-cd868bbd54fe,01e4c0ce-71ca-4421-a5a6-cd868bbd54fe,0,1,2a659a77-162f-4e1b-8339-695040f04559,2a659a77-162f-4e1b-8339-695040f04559,0,1,6d29693c-8379-46b8-806b-56311826810b,6d29693c-8379-46b8-806b-56311826810b,0,1,4d371b01-b215-4a39-a309-d6d3dc64d9ff,4d371b01-b215-4a39-a309-d6d3dc64d9ff,0,1,d9704b20-c29c-4e7f-b777-0ac9080a5631,d9704b20-c29c-4e7f-b777-0ac9080a5631,0,1,c1372891-0f55-4868-ab97-906eff52be0e,c1372891-0f55-4868-ab97-906eff52be0e,0,1,33e96bda-1708-4ee4-8d4d-3b919bda3e38,33e96bda-1708-4ee4-8d4d-3b919bda3e38,0,1,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,0,1,93fcaa62-2a19-468b-9128-c7930583fbfd,93fcaa62-2a19-468b-9128-c7930583fbfd,0,1,2d885109-4c96-41c0-a996-785bfd793c2d,2d885109-4c96-41c0-a996-785bfd793c2d,0,1,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,0,1,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0,1,5148d263-de26-4c92-b090-ae59f42dfb05,5148d263-de26-4c92-b090-ae59f42dfb05,0,1,dbefe81f-85cf-4d84-9600-b359598c2543,dbefe81f-85cf-4d84-9600-b359598c2543,0,1,1a624a06-93b8-4d1f-8c14-2061e1e7927c,1a624a06-93b8-4d1f-8c14-2061e1e7927c,0,1,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,0,1,d5967e0f-03cd-4190-a702-7e9290eae1eb,d5967e0f-03cd-4190-a702-7e9290eae1eb,0,1,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,0,1,7059b117-714c-4710-aebe-76f88c4d41d5,7059b117-714c-4710-aebe-76f88c4d41d5,0,1,ea050453-4947-40dc-aa2a-503ddd1a235a,ea050453-4947-40dc-aa2a-503ddd1a235a,0,1,37d0e6d4-702e-46f5-ae87-4d393fa0c701,37d0e6d4-702e-46f5-ae87-4d393fa0c701,0,1,1e963c1e-f914-46e1-81d3-90d126fc6f8d,1e963c1e-f914-46e1-81d3-90d126fc6f8d,0,1,3a62d88e-9298-42c0-bd87-c749ecd01d19,3a62d88e-9298-42c0-bd87-c749ecd01d19,0,1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,0,1,fc13dd80-ce44-4ed1-a9d7-dae44602b954,fc13dd80-ce44-4ed1-a9d7-dae44602b954,0,1,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,0,1,433b23a1-a863-4775-b2f2-1384e8f3cbbb,433b23a1-a863-4775-b2f2-1384e8f3cbbb,0,1,a1677c47-b9a4-427a-972d-9bb2293445b6,a1677c47-b9a4-427a-972d-9bb2293445b6,0,1,e4a328c0-e73b-465d-ae36-38e5a71690fa,e4a328c0-e73b-465d-ae36-38e5a71690fa,0,1,85bebd81-a355-4010-889b-cff6f72dafcb,85bebd81-a355-4010-889b-cff6f72dafcb,0,1,49521f36-fd1b-47dd-81cc-48b6fb651e22,49521f36-fd1b-47dd-81cc-48b6fb651e22,0,1,bc946e21-53bb-4332-8c63-7b0aa78826eb,bc946e21-53bb-4332-8c63-7b0aa78826eb,0,1,4be2bdad-9a43-4593-acbc-a02e9144a89f,4be2bdad-9a43-4593-acbc-a02e9144a89f,0,1,eb4455f2-a5a0-44fb-8302-7312bc32df66,eb4455f2-a5a0-44fb-8302-7312bc32df66,0,1,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,0,1,9f20e59e-7db8-466f-b965-7045fc3f1489,9f20e59e-7db8-466f-b965-7045fc3f1489,0,1,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,0,1,89ac3d39-1915-4e67-a4e4-5a67a155cb75,89ac3d39-1915-4e67-a4e4-5a67a155cb75,0,1,d27b637d-5a51-49ff-bf73-343891534586,d27b637d-5a51-49ff-bf73-343891534586,0,1,b5a073a2-54e2-47c9-b533-f75fd2c9f343,b5a073a2-54e2-47c9-b533-f75fd2c9f343,0,1,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0,1,989b8ccd-bc05-48c1-9969-b3733028b65f,989b8ccd-bc05-48c1-9969-b3733028b65f,0,1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,0,1,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,0,1,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,0,1,bf66612b-aec4-414b-bee6-9bcab145c7cc,bf66612b-aec4-414b-bee6-9bcab145c7cc,0,1,811f356f-554a-4a63-90b6-dedb5fec7c05,811f356f-554a-4a63-90b6-dedb5fec7c05,0,1,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,0,1,8eb18de5-8283-4d0c-bb11-b882e78181d5,8eb18de5-8283-4d0c-bb11-b882e78181d5,0,1,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,0,1,64a86d5d-f925-45ee-82da-76df1cc20729,64a86d5d-f925-45ee-82da-76df1cc20729,0,1,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,0,1,83ae9b22-20ff-4e94-9282-19daf2274328,83ae9b22-20ff-4e94-9282-19daf2274328,0,1,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,0,1,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,0,1,a92b2b70-7e69-49d1-b921-c9d1b0718f94,a92b2b70-7e69-49d1-b921-c9d1b0718f94,0,1,19f690a3-d27b-43c1-94b7-585fc628da05,19f690a3-d27b-43c1-94b7-585fc628da05,0,1,d375fac5-098c-42b5-a0bd-9a4ae7516ada,d375fac5-098c-42b5-a0bd-9a4ae7516ada,0,1,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,0,1,162137ef-dea2-4ace-9e67-897dad0e7c3d,162137ef-dea2-4ace-9e67-897dad0e7c3d,0,1,012fb2f1-1c15-4800-8968-78a90c2a1348,012fb2f1-1c15-4800-8968-78a90c2a1348,0,1,436162a0-263f-4126-aa3a-7508505cc4a8,436162a0-263f-4126-aa3a-7508505cc4a8,0,1,9e4fbc61-8736-435d-bdd4-eb3bbaa14b92,9e4fbc61-8736-435d-bdd4-eb3bbaa14b92,0,1,0b750d40-1ee5-414c-b8a5-244c666787ae,0b750d40-1ee5-414c-b8a5-244c666787ae,0,1,aec8f9e6-d177-45f5-ba55-2d662428c2ae,aec8f9e6-d177-45f5-ba55-2d662428c2ae,0,1,7dfdd08b-7cd9-480c-829d-97f5e7152eec,7dfdd08b-7cd9-480c-829d-97f5e7152eec,0,1,0ff797f5-007d-4379-aa14-5d3f5babeb84,0ff797f5-007d-4379-aa14-5d3f5babeb84,0,1,767176d4-4fe9-4de5-9246-59b7fec09c53,767176d4-4fe9-4de5-9246-59b7fec09c53,0,1,64752b64-80ae-4537-986a-d61423dc546b,64752b64-80ae-4537-986a-d61423dc546b,0,1,8e587969-0263-4789-a501-a6c2e102f88e,8e587969-0263-4789-a501-a6c2e102f88e,0,1,f26bfc01-7d8a-43a7-b869-c2deb18218e5,f26bfc01-7d8a-43a7-b869-c2deb18218e5,0,1,8c72a0b2-20cb-43ff-b010-25256aa8011d,8c72a0b2-20cb-43ff-b010-25256aa8011d,0,1,a913b023-0ec5-4c60-880d-2f8ddad2d5ce,a913b023-0ec5-4c60-880d-2f8ddad2d5ce,0,1,b0bf8af5-d824-459c-bc40-17495406af3c,b0bf8af5-d824-459c-bc40-17495406af3c,0,1,2c37e123-ea35-4501-93e1-2fa295444bec,2c37e123-ea35-4501-93e1-2fa295444bec,0,1,afe96dc2-7840-4010-a7d4-1eeac36f0fd3,afe96dc2-7840-4010-a7d4-1eeac36f0fd3,0,1,02ec2b85-3cc8-45bb-911f-c5f7c8668fd5,02ec2b85-3cc8-45bb-911f-c5f7c8668fd5,0,1,a997a430-3ea8-4fde-9f53-7b507a04c215,a997a430-3ea8-4fde-9f53-7b507a04c215,0,1,f648e19d-026b-4fa7-8e70-1866b27b94f8,f648e19d-026b-4fa7-8e70-1866b27b94f8,0,1,a3b47ee8-b7b9-4bdf-afa8-025447ea9d5b,a3b47ee8-b7b9-4bdf-afa8-025447ea9d5b,0,1,36475bf5-5da6-48ad-8077-4de4426f7e10,36475bf5-5da6-48ad-8077-4de4426f7e10,0,1,d32081fc-47d3-4e66-837e-705c94ba8ca8,d32081fc-47d3-4e66-837e-705c94ba8ca8,0,1,f3750ea4-5f9e-4ab3-9495-3f182ecff407,f3750ea4-5f9e-4ab3-9495-3f182ecff407,0,1,14002d51-87d4-4647-92ef-a9b1935cb666,14002d51-87d4-4647-92ef-a9b1935cb666,0,1,e941a39d-1f3c-4e6e-af17-75f92a15dd40,e941a39d-1f3c-4e6e-af17-75f92a15dd40,0,1,d9bbedcb-4872-4183-83c2-6c2aae9634b0,d9bbedcb-4872-4183-83c2-6c2aae9634b0,0,1,72c695c3-66f6-4aa8-8a39-737ec6967a1d,72c695c3-66f6-4aa8-8a39-737ec6967a1d,0,1,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,0,1,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,0,1,d5d11480-d5c7-4569-80c1-f872655ff084,d5d11480-d5c7-4569-80c1-f872655ff084,0,1,b1e45d36-08e9-430e-976b-03e6e3320c6a,b1e45d36-08e9-430e-976b-03e6e3320c6a,0,1,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,0,1,8e21374f-5a65-406c-856d-2040607da4bc,8e21374f-5a65-406c-856d-2040607da4bc,0,1,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,0,1,3e5f5167-8978-4191-b0f6-6a262b848b95,3e5f5167-8978-4191-b0f6-6a262b848b95,0,1,ae3aef9e-df3b-4ebc-912d-2bc581063745,ae3aef9e-df3b-4ebc-912d-2bc581063745,0,1,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,0,1,a8c09e65-6e10-4772-b264-6ead83d52fe3,a8c09e65-6e10-4772-b264-6ead83d52fe3,0,1,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,0,1,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,0,1,ecbe625a-55eb-437a-8dee-33fb034d4c0d,ecbe625a-55eb-437a-8dee-33fb034d4c0d,0,1,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,0,1,84796b00-79db-42ba-94d0-5bf543e09cd6,84796b00-79db-42ba-94d0-5bf543e09cd6,0,1,e85695f1-ec94-42ce-8f80-2bda4c90685b,e85695f1-ec94-42ce-8f80-2bda4c90685b,0,1,6f08cc54-d4b1-4c6f-96dc-e0b6891c81b6,6f08cc54-d4b1-4c6f-96dc-e0b6891c81b6,0,1,948b10b3-0d7c-4dca-8816-75eb86e7881b,948b10b3-0d7c-4dca-8816-75eb86e7881b,0,1,9de91b5a-98e4-414b-b650-b669b0159b49,9de91b5a-98e4-414b-b650-b669b0159b49,0,1,840dc727-288a-4bf2-8b1a-47629d28229c,840dc727-288a-4bf2-8b1a-47629d28229c,0,1,314ac8ca-8845-40c2-b844-91beb05fb601,314ac8ca-8845-40c2-b844-91beb05fb601,0,1,db15717d-1b6a-42fd-9b8f-959e1d5841e9,db15717d-1b6a-42fd-9b8f-959e1d5841e9,0,1,3de3948d-40ff-4e0d-8445-9bf49c916161,3de3948d-40ff-4e0d-8445-9bf49c916161,0,1,37ae1946-9436-47ef-8b8c-17ed0a24971c,37ae1946-9436-47ef-8b8c-17ed0a24971c,0,1,0d3cd7ca-089f-4858-a4a6-0ed373aa77bf,0d3cd7ca-089f-4858-a4a6-0ed373aa77bf,0,1,d844d861-fbe9-4391-89e3-00e505b33b33,d844d861-fbe9-4391-89e3-00e505b33b33,0,1,495ddb5f-f75d-46c9-b134-e925c814b890,495ddb5f-f75d-46c9-b134-e925c814b890,0,1,0a4ded35-1cfa-4e53-91c7-139ee0b94ade,0a4ded35-1cfa-4e53-91c7-139ee0b94ade,0,1,c0688817-fd73-4ead-b9dd-ec966780a2c2,c0688817-fd73-4ead-b9dd-ec966780a2c2,0,1,b1fbfbfe-766f-4018-9491-507748193808,b1fbfbfe-766f-4018-9491-507748193808,0,1,65d9f3a7-6258-49f3-8252-0a60e2735ff3,65d9f3a7-6258-49f3-8252-0a60e2735ff3,0,1,a0ba7e86-b894-4a63-8687-bb2a840fe1ab,a0ba7e86-b894-4a63-8687-bb2a840fe1ab,0,1,e55dfadb-8e12-4808-ad90-e891a4644548,e55dfadb-8e12-4808-ad90-e891a4644548,0,1,a1155588-882f-430d-85a6-19558b5b7256,a1155588-882f-430d-85a6-19558b5b7256,0,1,a792b3dc-ac80-492b-bd94-83eb0438ba9f,a792b3dc-ac80-492b-bd94-83eb0438ba9f,0,1,73a093ea-1927-483b-b6f5-8f0cbd253753,73a093ea-1927-483b-b6f5-8f0cbd253753,0,1,345f04c0-0274-4e79-b523-f1fa3cf0d92a,345f04c0-0274-4e79-b523-f1fa3cf0d92a,0,1,f3a14787-de1b-4b65-8cb1-bc33a785821c,f3a14787-de1b-4b65-8cb1-bc33a785821c,0,1,b9ba3ce3-9059-4135-9d31-725f01907431,b9ba3ce3-9059-4135-9d31-725f01907431,0,1,f637a14d-08ed-4c62-a873-ca36cdcd1e88,f637a14d-08ed-4c62-a873-ca36cdcd1e88,0,1,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,0,1,4d2b3767-7c96-44a6-bb1b-ab74b103b90e,4d2b3767-7c96-44a6-bb1b-ab74b103b90e,0,1,fc9fc58f-c888-41f0-9f57-70748b21706e,fc9fc58f-c888-41f0-9f57-70748b21706e,0,1,fc761833-aa85-4c6d-a36c-d1ed060e3bb1,fc761833-aa85-4c6d-a36c-d1ed060e3bb1,0,1,f0ba2ff2-b353-4f84-8e45-23e47ee6c1b6,f0ba2ff2-b353-4f84-8e45-23e47ee6c1b6,0,1,bb8bade2-5c1b-49a6-b66f-79a3ebff86f7,bb8bade2-5c1b-49a6-b66f-79a3ebff86f7,0,1,33596560-3d45-4d3e-b6ec-1c22162110ad,33596560-3d45-4d3e-b6ec-1c22162110ad,0,1,d3e82a06-daae-4f4d-b3f8-45a406e31664,d3e82a06-daae-4f4d-b3f8-45a406e31664,0,1,af76c3c9-d8dc-4156-9e10-80ee02fcf4fe,af76c3c9-d8dc-4156-9e10-80ee02fcf4fe,0,1,ac6a184d-1247-4b54-a023-f0d16daa5fe9,ac6a184d-1247-4b54-a023-f0d16daa5fe9,0,1,f9af5fe6-0b4f-4d48-92a4-1f2a29972155,f9af5fe6-0b4f-4d48-92a4-1f2a29972155,0,1,3ca1682d-5ff5-4b2b-96c2-54d2dd5297a9,3ca1682d-5ff5-4b2b-96c2-54d2dd5297a9,0,1,a687d346-73cf-4aea-a4d0-f29824f0f6f1,a687d346-73cf-4aea-a4d0-f29824f0f6f1,0,1,f51fda72-56d9-4b45-a775-a0e1dfbf3a27,f51fda72-56d9-4b45-a775-a0e1dfbf3a27,0,1,8bf73614-81a4-4702-88b9-3c6f2594d204,8bf73614-81a4-4702-88b9-3c6f2594d204,0,1,b8d4410b-f626-41b8-87c8-67102256bae2,b8d4410b-f626-41b8-87c8-67102256bae2,0,1,484eeb5f-12af-4139-a081-4dcac067a712,484eeb5f-12af-4139-a081-4dcac067a712,0,1,ec61075e-fbcb-494a-b790-81548a212d2b,ec61075e-fbcb-494a-b790-81548a212d2b,0,1,2f3bdc3c-4c5d-4fcb-85bb-932fe1747d98,2f3bdc3c-4c5d-4fcb-85bb-932fe1747d98,0,1,0c444045-302b-4dbd-a9a3-81fd40004948,0c444045-302b-4dbd-a9a3-81fd40004948,0,1,16099d54-e84f-47c5-aaf3-f8ced3cba5e0,16099d54-e84f-47c5-aaf3-f8ced3cba5e0,0,1,39fce130-be22-42d9-8bcd-b162ae00fc7a,39fce130-be22-42d9-8bcd-b162ae00fc7a,0,1,1528b799-1c0f-4244-85e8-e738b827934a,1528b799-1c0f-4244-85e8-e738b827934a,0,1,45d79e4d-8c2a-432b-abb8-fb9046abea40,45d79e4d-8c2a-432b-abb8-fb9046abea40,0,1,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,0,1,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,0,1,256618cc-0956-4cda-9691-e4ced68a791f,256618cc-0956-4cda-9691-e4ced68a791f,0,1,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,0,1,4b9771a7-b924-4e61-8468-4633e3c54706,4b9771a7-b924-4e61-8468-4633e3c54706,0,1,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,0,1,667de710-cee5-4a97-8434-641d199f3b68,667de710-cee5-4a97-8434-641d199f3b68,0,1,f6e85eeb-d81b-4526-9a33-ab77bd447236,f6e85eeb-d81b-4526-9a33-ab77bd447236,0,1,470e37fe-d149-4007-b397-12fc84f93041,470e37fe-d149-4007-b397-12fc84f93041,0,1,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,0,1,7175cfa0-885c-4807-98ec-af255dcd55d9,7175cfa0-885c-4807-98ec-af255dcd55d9,0,1,1773ff66-ebe4-46e1-b505-d07d87c7fe3e,1773ff66-ebe4-46e1-b505-d07d87c7fe3e,0,1,f5b66759-8102-4cba-a3fd-ee96db5bc809,f5b66759-8102-4cba-a3fd-ee96db5bc809,0,1,6c205eae-9113-46c1-a245-25d29173646e,6c205eae-9113-46c1-a245-25d29173646e,0,1,4cc4aa90-49fb-4602-9f9c-d4d47d223988,4cc4aa90-49fb-4602-9f9c-d4d47d223988,0,1,66ef1631-277b-4c22-99d7-1434b4dbbb3f,66ef1631-277b-4c22-99d7-1434b4dbbb3f,0,1,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,0,1,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,0,1,898535ff-50cd-464a-aadc-5e4f9de15b04,898535ff-50cd-464a-aadc-5e4f9de15b04,0,1,737f6f1b-9ffc-4916-b378-7321eab1f886,737f6f1b-9ffc-4916-b378-7321eab1f886,0,1,01dedf5b-2cce-4d24-81ea-2e3af82f5794,01dedf5b-2cce-4d24-81ea-2e3af82f5794,0,1,04d8ae53-67d9-40a5-b942-59fdebfd6ed7,04d8ae53-67d9-40a5-b942-59fdebfd6ed7,0,1,8c83a662-50e5-402c-913b-5e548b57201d,8c83a662-50e5-402c-913b-5e548b57201d,0,1,385e209d-65aa-43b1-8591-f92544882740,385e209d-65aa-43b1-8591-f92544882740,0,1,8381bc76-0e0f-4196-9911-ec05730cb1c9,8381bc76-0e0f-4196-9911-ec05730cb1c9,0,1,c224e520-7204-4f4a-aac9-b6221ea9ce44,c224e520-7204-4f4a-aac9-b6221ea9ce44,0,1,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,0,1,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,0,1,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,0,1,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,0,1,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,0,1,59364444-4564-42d9-8b94-01ed1b4a1204,59364444-4564-42d9-8b94-01ed1b4a1204,0,1,ef257b20-da10-4cda-8b9d-7de2d68a2f71,ef257b20-da10-4cda-8b9d-7de2d68a2f71,0,1,de0d41b7-acc0-4ebc-8933-d6b5ad351860,de0d41b7-acc0-4ebc-8933-d6b5ad351860,0,1,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,0,1,1a354069-07ea-40e0-bbac-e1b6232750c2,1a354069-07ea-40e0-bbac-e1b6232750c2,0,1,df31548b-0b8e-412b-999a-761970ae3c23,df31548b-0b8e-412b-999a-761970ae3c23,0,1,05135747-43e7-4b61-bc30-57b3289ea923,05135747-43e7-4b61-bc30-57b3289ea923,0,1,6d63728d-3384-4131-b890-1b82d14a04b7,6d63728d-3384-4131-b890-1b82d14a04b7,0,1,6da034af-0481-4a3c-aff9-c50ced6f21d4,6da034af-0481-4a3c-aff9-c50ced6f21d4,0,1,6fe57ea6-fe5e-48b1-bb31-5d42e4c2c6c7,6fe57ea6-fe5e-48b1-bb31-5d42e4c2c6c7,0,1,d07016c8-7d97-42cd-865b-85b49075adfb,d07016c8-7d97-42cd-865b-85b49075adfb,0,1,9202335d-50bb-4282-9438-24c7fb9cf637,9202335d-50bb-4282-9438-24c7fb9cf637,0,1,a62906e5-27f8-4e72-8769-9a3eed6997d7,a62906e5-27f8-4e72-8769-9a3eed6997d7,0,1,6c5d0ac3-6086-434c-812b-1c1158ecc574,6c5d0ac3-6086-434c-812b-1c1158ecc574,0,1,783536d7-c0db-44c9-96e8-58b57804d7c8,783536d7-c0db-44c9-96e8-58b57804d7c8,0,1,a8295435-c2c4-4aff-874b-7412556aa76d,a8295435-c2c4-4aff-874b-7412556aa76d,0,1,f6c4e24b-172b-4ba3-8e3e-988306ade660,f6c4e24b-172b-4ba3-8e3e-988306ade660,0,1,60cd2f20-17cf-4132-b08e-87cf429704b7,60cd2f20-17cf-4132-b08e-87cf429704b7,0,1,9baab24c-a5a3-46f4-ad17-a28d4a49f851,9baab24c-a5a3-46f4-ad17-a28d4a49f851,0,1,d1952319-0e42-4684-a386-fbe7c24526c2,d1952319-0e42-4684-a386-fbe7c24526c2,0,1,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,0,1,83b47a9d-d44b-4c40-becd-df74f9cb2e91,83b47a9d-d44b-4c40-becd-df74f9cb2e91,0,1,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,0,1,86e2a2eb-160f-4e93-a449-b2f726286d1b,86e2a2eb-160f-4e93-a449-b2f726286d1b,0,1,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,0,1,364184c2-ec71-44be-b40c-ba719b4ab0e1,364184c2-ec71-44be-b40c-ba719b4ab0e1,0,1,7ef46c54-ec0c-4211-a750-e5949956b593,7ef46c54-ec0c-4211-a750-e5949956b593,0,1,04823681-875e-459a-b3cf-051c89527f38,04823681-875e-459a-b3cf-051c89527f38,0,1,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,0,1,38265f08-3301-40d1-b630-a319c983e826,38265f08-3301-40d1-b630-a319c983e826,0,1,5175c496-bac7-4c57-9628-793b727aecd0,5175c496-bac7-4c57-9628-793b727aecd0,0,1,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,0,1,fc42df4a-93f0-461f-acfe-fea09158030f,fc42df4a-93f0-461f-acfe-fea09158030f,0,1,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,0,1,6d002aef-00c9-4069-80df-153151218831,6d002aef-00c9-4069-80df-153151218831,0,1,4fec3a6c-5a99-4763-aa07-d5de8712559e,4fec3a6c-5a99-4763-aa07-d5de8712559e,0,1,968a1202-d271-43e0-bfd4-d38e49ceadd4,968a1202-d271-43e0-bfd4-d38e49ceadd4,0,1,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,0,1,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,0,1,ea61e442-273e-4ce4-a806-8090893729ba,ea61e442-273e-4ce4-a806-8090893729ba,0,1,e7100f2b-d169-4635-ab87-7a2225ff12ee,e7100f2b-d169-4635-ab87-7a2225ff12ee,0,1,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,0,1,4a2d2790-debf-4dc2-8216-878d8808d161,4a2d2790-debf-4dc2-8216-878d8808d161,0,1,836d0590-a8ee-40d0-a649-41cf4fae36a6,836d0590-a8ee-40d0-a649-41cf4fae36a6,0,1,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,0,1,6ddbc80a-38c8-4eda-8cdf-6d64331818a3,6ddbc80a-38c8-4eda-8cdf-6d64331818a3,0,1,eda3c675-04b7-4c14-b78a-0caa22843ac0,eda3c675-04b7-4c14-b78a-0caa22843ac0,0,1,fc097ab3-8b3e-4b8f-9e51-d888735a69bd,fc097ab3-8b3e-4b8f-9e51-d888735a69bd,0,1,23c2c28b-867e-41d0-ba61-b9ee20fa38d1,23c2c28b-867e-41d0-ba61-b9ee20fa38d1,0,1,e5ddc65a-e886-4ed6-9598-bec30ddb7341,e5ddc65a-e886-4ed6-9598-bec30ddb7341,0,1,6cf48813-8097-44ae-8630-58f5b002ff31,6cf48813-8097-44ae-8630-58f5b002ff31,0,1,e0cee0ee-24b9-400a-95af-c61debec912b,e0cee0ee-24b9-400a-95af-c61debec912b,0,1,578bc873-5e23-4222-a655-7d653d761a4c,578bc873-5e23-4222-a655-7d653d761a4c,0,1,09bccd03-1492-4ebe-bfb4-8ace744d367f,09bccd03-1492-4ebe-bfb4-8ace744d367f,0,1,4d9294db-1abd-4e34-812f-fdcac0cf657d,4d9294db-1abd-4e34-812f-fdcac0cf657d,0,1,14bc3be4-3075-418d-90ec-be5d2686f875,14bc3be4-3075-418d-90ec-be5d2686f875,0,1,adffd81c-a566-4b4f-89d5-6abc705da36f,adffd81c-a566-4b4f-89d5-6abc705da36f,0,1,9f67e6d4-0b7c-4318-b127-7c8b7daf1d1b,9f67e6d4-0b7c-4318-b127-7c8b7daf1d1b,0,1,23ced9be-cb9d-451f-aea7-aa211054bd4d,23ced9be-cb9d-451f-aea7-aa211054bd4d,0,1,3991175c-0152-44c6-8e1c-4090d960050a,3991175c-0152-44c6-8e1c-4090d960050a,0,1,aa2760cf-b8cd-4eb3-b2f1-0e1fbdec09a8,aa2760cf-b8cd-4eb3-b2f1-0e1fbdec09a8,0,1,d1fabcdd-c072-4341-85d4-9a9ba168f301,d1fabcdd-c072-4341-85d4-9a9ba168f301,0,1,030a9c93-322b-4421-ad70-0acaa94870a2,030a9c93-322b-4421-ad70-0acaa94870a2,0,1,7121d241-9450-4bf2-b7ff-a0e963bbfd0a,7121d241-9450-4bf2-b7ff-a0e963bbfd0a,0,1,01a3ab71-56fa-4ddc-a5a3-9c923ee9c74a,01a3ab71-56fa-4ddc-a5a3-9c923ee9c74a,0,1,5c660f50-c63a-466d-bb32-de5699ad8a95,5c660f50-c63a-466d-bb32-de5699ad8a95,0,1,032587fa-2993-463c-af9f-bdd67f12604f,032587fa-2993-463c-af9f-bdd67f12604f,0,1,64d4aaed-e068-431b-bed0-faef7b5358f3,64d4aaed-e068-431b-bed0-faef7b5358f3,0,1,4507a92e-abb6-4329-88b2-3429bc694bc6,4507a92e-abb6-4329-88b2-3429bc694bc6,0,1,2694c1b4-536b-4187-adf6-0f8757aaae76,2694c1b4-536b-4187-adf6-0f8757aaae76,0,1,e523f88b-b3de-476e-a3cc-592970492dec,e523f88b-b3de-476e-a3cc-592970492dec,0,1,37c3d087-21c5-48ac-b8bd-17dffa071d21,37c3d087-21c5-48ac-b8bd-17dffa071d21,0,1,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,0,1,00c29d0d-338a-4eb0-9e0f-5b64f6521e6e,00c29d0d-338a-4eb0-9e0f-5b64f6521e6e,0,1,ea0843f4-60fb-4d44-abf4-0021867c636b,ea0843f4-60fb-4d44-abf4-0021867c636b,0,1,59aadc03-adbc-481f-89bc-d7f391789522,59aadc03-adbc-481f-89bc-d7f391789522,0,1,254f6ccd-0451-4231-91c9-4abe57b647be,254f6ccd-0451-4231-91c9-4abe57b647be,0,1,bba58a89-2910-44c6-afd9-a59a74ec8b4e,bba58a89-2910-44c6-afd9-a59a74ec8b4e,0,1,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,0,1,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0,1,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,0,1,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,0,1,7601fa7e-079a-4347-abea-e161b2d00783,7601fa7e-079a-4347-abea-e161b2d00783,0,1,ee84cb40-f82d-4558-91be-229d68ad9f4a,ee84cb40-f82d-4558-91be-229d68ad9f4a,0,1,101a7eff-9556-4165-879a-a7c8a852e236,101a7eff-9556-4165-879a-a7c8a852e236,0,1,01775932-3603-4efc-9235-abdb97490dea,01775932-3603-4efc-9235-abdb97490dea,0,1,7637844b-4059-4f8a-8436-b4f4e8cb4f74,7637844b-4059-4f8a-8436-b4f4e8cb4f74,0,1,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,0,1,0ee5b788-61dc-464b-86da-f985df7704b6,0ee5b788-61dc-464b-86da-f985df7704b6,0,1,2375c6a8-9799-4b7c-a48d-091a90c67693,2375c6a8-9799-4b7c-a48d-091a90c67693,0,1,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,0,1,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,0,1,63c6522f-be04-422a-b4f4-0f55f58b09a8,63c6522f-be04-422a-b4f4-0f55f58b09a8,0,1,be919dc1-a377-43e1-82e6-ce946cabdd55,be919dc1-a377-43e1-82e6-ce946cabdd55,0,1,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,0,1,9ded532e-9e60-4895-a4c5-4ea6697aa83c,9ded532e-9e60-4895-a4c5-4ea6697aa83c,0,1,106c5159-ffc7-4059-b3e3-acf74326a44f,106c5159-ffc7-4059-b3e3-acf74326a44f,0,1,d39fd717-1a69-4fd3-889e-4fa9abefea1c,d39fd717-1a69-4fd3-889e-4fa9abefea1c,0,1,5b85e6df-7493-4201-97ad-2aea14de6006,5b85e6df-7493-4201-97ad-2aea14de6006,0,1,061e6c0f-ba52-40ec-96ad-2eba3eee3097,061e6c0f-ba52-40ec-96ad-2eba3eee3097,0,1,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,0,1,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,0,1,4840753b-e2e1-4e67-b35f-2f5eab7754f5,4840753b-e2e1-4e67-b35f-2f5eab7754f5,0,1,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,0,1,6ffd9c17-d90b-4d19-b337-0fbc2c717557,6ffd9c17-d90b-4d19-b337-0fbc2c717557,0,1,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,0,1,3bb83275-7a0e-420f-8c6b-028038f11a8c,3bb83275-7a0e-420f-8c6b-028038f11a8c,0,1,e1950a23-f6e7-48af-b78a-77aa61f08ece,e1950a23-f6e7-48af-b78a-77aa61f08ece,0,1,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,0,1,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,0,1,5d726fa3-bde0-4d97-a577-415857bbb5c1,5d726fa3-bde0-4d97-a577-415857bbb5c1,0,1,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,0,1,49068231-202c-4ac6-a39a-69207cb597dd,49068231-202c-4ac6-a39a-69207cb597dd,0,1,5a470575-e012-42ad-9ad7-53930a8e843f,5a470575-e012-42ad-9ad7-53930a8e843f,0,1,5872d4ed-6503-422d-bcf9-63a8df3e777d,5872d4ed-6503-422d-bcf9-63a8df3e777d,0,1,e21cda29-2579-485e-a207-20b76f719c80,e21cda29-2579-485e-a207-20b76f719c80,0,1,1b232a57-2833-42c6-b318-38dae2af1ab2,1b232a57-2833-42c6-b318-38dae2af1ab2,0,1,007ade8c-b102-408b-b877-b531e046560b,007ade8c-b102-408b-b877-b531e046560b,0,1,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,0,1,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,0,1,eb69c41a-392d-43bb-9b67-a0adcb651b1e,eb69c41a-392d-43bb-9b67-a0adcb651b1e,0,1,fbd63dbc-7318-45f1-9aa5-51c2f3a9190b,fbd63dbc-7318-45f1-9aa5-51c2f3a9190b,0,1,93b01c88-48a2-4753-b443-0e9892395a8f,93b01c88-48a2-4753-b443-0e9892395a8f,0,1,0b7f8e05-bb34-47cc-9775-04362e814316,0b7f8e05-bb34-47cc-9775-04362e814316,0,1,e71e0297-3709-4247-933e-18a6350cbf39,e71e0297-3709-4247-933e-18a6350cbf39,0,1,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0,1,602dac6f-abe6-407a-92d3-7f1613e5dda6,602dac6f-abe6-407a-92d3-7f1613e5dda6,0,1,df6417d1-c722-4a87-a543-5d2c31795b20,df6417d1-c722-4a87-a543-5d2c31795b20,0,1,526a85c9-3a8d-4044-adb9-fd0689c70601,526a85c9-3a8d-4044-adb9-fd0689c70601,0,1,c4203772-580c-4db1-9bde-8925faa90688,c4203772-580c-4db1-9bde-8925faa90688,0,1,9ab0fe18-4dd7-4eed-958d-8537d4896d84,9ab0fe18-4dd7-4eed-958d-8537d4896d84,0,1,2278dc46-46ce-4d00-9289-4de1640782d7,2278dc46-46ce-4d00-9289-4de1640782d7,0,1,1f983a04-c2df-40bb-bee2-b326474d89f8,1f983a04-c2df-40bb-bee2-b326474d89f8,0,1,f03f1b68-e924-4c06-b0aa-8033a9a2f592,f03f1b68-e924-4c06-b0aa-8033a9a2f592,0,1,5e453d10-235d-4e53-86b1-20eed3247992,5e453d10-235d-4e53-86b1-20eed3247992,0,1,0eefb856-0fb4-4c3e-bb08-e88b03a44065,0eefb856-0fb4-4c3e-bb08-e88b03a44065,0,1,21ba8b9f-de97-40a1-8ea1-85a29e8e53ef,21ba8b9f-de97-40a1-8ea1-85a29e8e53ef,0,1,738228ad-c30a-42f4-a6ad-bde0edba6266,738228ad-c30a-42f4-a6ad-bde0edba6266,0,1,c08aea99-ee33-488c-9ba0-f8b24a6d1d04,c08aea99-ee33-488c-9ba0-f8b24a6d1d04,0,1,df8e8344-d7bc-4cf2-b498-88d3abb66c09,df8e8344-d7bc-4cf2-b498-88d3abb66c09,0,1,e6d13536-3021-45b2-a8e1-bdb0e0be850c,e6d13536-3021-45b2-a8e1-bdb0e0be850c,0,1,b49f538c-b2b2-4a1f-a6b4-a911033b1666,b49f538c-b2b2-4a1f-a6b4-a911033b1666,0,1,794e952b-6b03-4a1e-ad3f-453376bccf45,794e952b-6b03-4a1e-ad3f-453376bccf45,0,1,3e2a0713-e6ed-4d38-8036-72f7b62ca64a,3e2a0713-e6ed-4d38-8036-72f7b62ca64a,0,1,5cd997ba-f123-47b3-8cde-fbba45a4a11c,5cd997ba-f123-47b3-8cde-fbba45a4a11c,0,1,0d746247-c4f4-47a5-a373-45ec4023d3ef,0d746247-c4f4-47a5-a373-45ec4023d3ef,0,1,a25bcf4e-1a47-472b-9f93-f6ab45abf461,a25bcf4e-1a47-472b-9f93-f6ab45abf461,0,1,958b7dab-0aba-423f-ab81-b70f2b93a027,958b7dab-0aba-423f-ab81-b70f2b93a027,0,1,a17ec3be-2255-42af-a6ee-d3fb8bb00519,a17ec3be-2255-42af-a6ee-d3fb8bb00519,0,1,add0b22d-ff5a-41f7-88a1-ef34880e50c9,add0b22d-ff5a-41f7-88a1-ef34880e50c9,0,1,7dc10935-69aa-4f2b-8b01-798dbbaa6cc6,7dc10935-69aa-4f2b-8b01-798dbbaa6cc6,0,1,9c15b35b-d658-4e52-a441-3b79294d65eb,9c15b35b-d658-4e52-a441-3b79294d65eb,0,1,d5fdac2a-e3aa-4859-8485-0cf114748c87,d5fdac2a-e3aa-4859-8485-0cf114748c87,0,1,eb3d278b-e8fe-4d43-90a8-dd361009196f,eb3d278b-e8fe-4d43-90a8-dd361009196f,0,1,d30fbeae-e97f-422d-b5c4-289aaeaa2ae4,d30fbeae-e97f-422d-b5c4-289aaeaa2ae4,0,1,a3582d0c-6a63-442e-8422-83f251df0ed9,a3582d0c-6a63-442e-8422-83f251df0ed9,0,1,9aae5d2a-81b7-4f1c-8b65-b3e4a8a9bc4d,9aae5d2a-81b7-4f1c-8b65-b3e4a8a9bc4d,0,1,239601eb-e8de-4d58-a32a-01ee52f6e698,239601eb-e8de-4d58-a32a-01ee52f6e698,0,1,11370667-bec5-4a2d-8aa1-97f4d795718f,11370667-bec5-4a2d-8aa1-97f4d795718f,0,1,2032162d-fbb5-4e6a-be72-cda79869b9ff,2032162d-fbb5-4e6a-be72-cda79869b9ff,0,1,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,0,1,707e64f3-ad8b-470a-aa4f-57fddecc2159,707e64f3-ad8b-470a-aa4f-57fddecc2159,0,1,682da7d7-6e27-4133-90fc-a445c156f908,682da7d7-6e27-4133-90fc-a445c156f908,0,1,64751704-f39d-4859-adc6-8168897d6aec,64751704-f39d-4859-adc6-8168897d6aec,0,1,10543f9a-4e3f-427a-b36a-9c66709dd6fb,10543f9a-4e3f-427a-b36a-9c66709dd6fb,0,1,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,0,1,96ab5424-7be1-416d-b74d-d0c815726b1f,96ab5424-7be1-416d-b74d-d0c815726b1f,0,1,3714e794-ddef-4ad9-a933-6130bbc84545,3714e794-ddef-4ad9-a933-6130bbc84545,0,1,f0dca5f2-1479-42bf-b895-9abd345522f5,f0dca5f2-1479-42bf-b895-9abd345522f5,0,1,8eaa91e0-88d9-4e4e-b2d6-752696bafadf,8eaa91e0-88d9-4e4e-b2d6-752696bafadf,0,1,93d6dda2-dd7c-42d1-b9bc-284929931585,93d6dda2-dd7c-42d1-b9bc-284929931585,0,1,282b089c-7411-40d6-9a0a-ceaf6abb5586,282b089c-7411-40d6-9a0a-ceaf6abb5586,0,1,abc44046-a839-4c4a-8161-ecba29abc27d,abc44046-a839-4c4a-8161-ecba29abc27d,0,1,678188aa-76e7-49bc-a4be-1c55ccd625b1,678188aa-76e7-49bc-a4be-1c55ccd625b1,0,1,12dd81dd-31f5-47f2-a163-ea6c670299c5,12dd81dd-31f5-47f2-a163-ea6c670299c5,0,1,1b9e77bf-639a-4e81-a0fd-4f2bd66feeba,1b9e77bf-639a-4e81-a0fd-4f2bd66feeba,0,1,8238c710-09ff-473e-b0ed-40b31bfccab8,8238c710-09ff-473e-b0ed-40b31bfccab8,0,1,fe59f9ba-11e3-41ba-ac6f-4b4e3dbf35ae,fe59f9ba-11e3-41ba-ac6f-4b4e3dbf35ae,0,1,15845f89-0f9e-4a93-b7e8-ef101694b1b8,15845f89-0f9e-4a93-b7e8-ef101694b1b8,0,1,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,0,1,60f8daf5-06c2-4db6-8fea-5cbb72130113,60f8daf5-06c2-4db6-8fea-5cbb72130113,0,1,e389b86a-7a48-4b31-b5cb-27b3d7dfed82,e389b86a-7a48-4b31-b5cb-27b3d7dfed82,0,1,91e7c98e-fadf-4c08-bd76-1e4e4d140265,91e7c98e-fadf-4c08-bd76-1e4e4d140265,0,1,b3415b4a-d8de-4536-aa4b-82e75fd986ee,b3415b4a-d8de-4536-aa4b-82e75fd986ee,0,1,8247a93d-c2d3-4c9b-a442-619240d35113,8247a93d-c2d3-4c9b-a442-619240d35113,0,1,acc996ab-672a-4602-b7ad-8eee83557e61,acc996ab-672a-4602-b7ad-8eee83557e61,0,1,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,0,1,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,0,1,97745768-ed35-44f1-beba-abb8b28a29ae,97745768-ed35-44f1-beba-abb8b28a29ae,0,1,69364942-bcd1-4b06-9b57-fa59b4e7c552,69364942-bcd1-4b06-9b57-fa59b4e7c552,0,1,ab201c5f-4134-42cf-a528-c1c4df02f2d7,ab201c5f-4134-42cf-a528-c1c4df02f2d7,0,1,303fb7b5-6a23-40ea-ae12-b54f4ebae026,303fb7b5-6a23-40ea-ae12-b54f4ebae026,0,1,634cd26b-78f1-4446-8aad-b96ed16e5329,634cd26b-78f1-4446-8aad-b96ed16e5329,0,1,d8e62f1a-92ca-4971-9609-e79da798c083,d8e62f1a-92ca-4971-9609-e79da798c083,0,1,6b0ddefa-ee70-4b27-989f-e23c734ab943,6b0ddefa-ee70-4b27-989f-e23c734ab943,0,1,ee873280-28ea-41fb-af52-c10c2018cbe4,ee873280-28ea-41fb-af52-c10c2018cbe4,0,1,a388ed70-a68d-4713-a280-881315351f07,a388ed70-a68d-4713-a280-881315351f07,0,1,fd9e84c9-2322-4aa7-b5fe-31d0c8f373c7,fd9e84c9-2322-4aa7-b5fe-31d0c8f373c7,0,1,2c81edc8-02b9-42dd-be4d-e7ad595421a0,2c81edc8-02b9-42dd-be4d-e7ad595421a0,0,1,83cb38ff-1174-449f-b8ce-44d5e064f2df,83cb38ff-1174-449f-b8ce-44d5e064f2df,0,1,d11b51ac-708a-4ee1-b73e-ae62e162101e,d11b51ac-708a-4ee1-b73e-ae62e162101e,0,1,17a50950-6091-4306-9f15-2a621a29c1a0,17a50950-6091-4306-9f15-2a621a29c1a0,0,1,32012b27-1b43-49be-b9af-df0c877e7a4c,32012b27-1b43-49be-b9af-df0c877e7a4c,0,1,e97d5152-9e58-4a91-a691-b4d358f1c89d,e97d5152-9e58-4a91-a691-b4d358f1c89d,0,1,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,0,1,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,0,1,296c478b-4103-46cb-9d14-97f59034ffd4,296c478b-4103-46cb-9d14-97f59034ffd4,0,1,fb918a68-f86d-46c0-9078-61d2b32b5aef,fb918a68-f86d-46c0-9078-61d2b32b5aef,0,1,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,0,1,1ddfc773-4f3c-4764-978e-585aab4666de,1ddfc773-4f3c-4764-978e-585aab4666de,0,1,e424d122-1dbb-4545-975c-177997129f2e,e424d122-1dbb-4545-975c-177997129f2e,0,1,c83bc626-dfdd-4451-92b0-b53eed40f534,c83bc626-dfdd-4451-92b0-b53eed40f534,0,1,7b9b1d11-4f78-4113-8fca-1a3a30953aef,7b9b1d11-4f78-4113-8fca-1a3a30953aef,0,1,7f84cb85-c3e4-4b53-b829-3b1e216f978a,7f84cb85-c3e4-4b53-b829-3b1e216f978a,0,1,7e621ecc-7d2b-42bf-a502-f8e59de56b63,7e621ecc-7d2b-42bf-a502-f8e59de56b63,0,1,798fd445-d02e-4e97-890a-0283f33317cf,798fd445-d02e-4e97-890a-0283f33317cf,0,1,095583ca-010d-43ad-8c7a-8938fa4cb761,095583ca-010d-43ad-8c7a-8938fa4cb761,0,1,178d210c-e847-4805-a8d4-31acdf4983af,178d210c-e847-4805-a8d4-31acdf4983af,0,1,aa214d9f-23b1-4996-8a43-9010dceeb53d,aa214d9f-23b1-4996-8a43-9010dceeb53d,0,1,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,0,1,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,0,1,d9d103bd-1dd6-48a9-8869-6c8485705393,d9d103bd-1dd6-48a9-8869-6c8485705393,0,1,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,0,1,ff0e8487-bdbf-4b21-877e-00008c81bc09,ff0e8487-bdbf-4b21-877e-00008c81bc09,0,1,39c9f8ac-56a0-4057-8359-7228bf97184a,39c9f8ac-56a0-4057-8359-7228bf97184a,0,1,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,0,1,2c0dd892-1d3e-4497-850b-080bdb9c59d8,2c0dd892-1d3e-4497-850b-080bdb9c59d8,0,1,3b727d49-c9ed-4d9e-af61-c13b9a170c75,3b727d49-c9ed-4d9e-af61-c13b9a170c75,0,1,1b264744-bdcd-4c5c-932b-0ac4b990dd78,1b264744-bdcd-4c5c-932b-0ac4b990dd78,0,1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,0,1,37bde288-8e02-4127-bd80-de8ae7590a14,37bde288-8e02-4127-bd80-de8ae7590a14,0,1,a9b8e517-78cd-4428-b2fc-9e16af0069d7,a9b8e517-78cd-4428-b2fc-9e16af0069d7,0,1,5c592024-c009-4674-bbb8-283669e673ef,5c592024-c009-4674-bbb8-283669e673ef,0,1,e76f16b9-77a0-4033-90d0-6e04e4494747,e76f16b9-77a0-4033-90d0-6e04e4494747,0,1,cfb221fc-8639-4e15-9a78-f7837d657a99,cfb221fc-8639-4e15-9a78-f7837d657a99,0,1,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,0,1,022147c1-1ebe-4c8d-b367-4c47115b101d,022147c1-1ebe-4c8d-b367-4c47115b101d,0,1,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,0,1,fca6b230-a38e-4791-9cc5-3d215f79dc6f,fca6b230-a38e-4791-9cc5-3d215f79dc6f,0,1,04e87de4-940a-4533-8c81-8f145b201dc0,04e87de4-940a-4533-8c81-8f145b201dc0,0,1,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,0,1,fa488af9-a5ec-47d8-8661-fa5058a60a6b,fa488af9-a5ec-47d8-8661-fa5058a60a6b,0,1,97cc84c6-3565-474c-a028-83acb5390446,97cc84c6-3565-474c-a028-83acb5390446,0,1,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,0,1,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,0,1,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,0,1,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,0,1,b366d7eb-626c-4c0c-b4cc-c392763e6e94,b366d7eb-626c-4c0c-b4cc-c392763e6e94,0,1,4c7e24aa-726a-4595-82ad-ef1e525b14fa,4c7e24aa-726a-4595-82ad-ef1e525b14fa,0,1,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,0,1,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,0,1,e849e46c-2ce6-427b-92bc-06d7997f59bf,e849e46c-2ce6-427b-92bc-06d7997f59bf,0,1,5a971dc0-28bf-4426-9426-9f456aea080a,5a971dc0-28bf-4426-9426-9f456aea080a,0,1,1e7684f0-1b3b-4a32-8602-dd0672c5a800,1e7684f0-1b3b-4a32-8602-dd0672c5a800,0,1,ab178a93-8570-43b6-ae42-f34a7cc4f359,ab178a93-8570-43b6-ae42-f34a7cc4f359,0,1,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,0,1,168e3189-2676-4cdb-bc9d-78d85df51faf,168e3189-2676-4cdb-bc9d-78d85df51faf,0,1,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,0,1,470bbff8-20d0-475c-a61a-1a09ac14c2db,470bbff8-20d0-475c-a61a-1a09ac14c2db,0,1,6ea25680-c4db-4717-9498-62420ca16970,6ea25680-c4db-4717-9498-62420ca16970,0,1,c37a660e-16c5-495e-9486-e61bcb693fa0,c37a660e-16c5-495e-9486-e61bcb693fa0,0,1,8f44ebad-1160-474e-a566-fb9da55ffcba,8f44ebad-1160-474e-a566-fb9da55ffcba,0,1,11cf336e-7890-4972-bf71-32d7416ff647,11cf336e-7890-4972-bf71-32d7416ff647,0,1,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,0,1,14bd3392-36cd-4ed0-8847-44375d6fb861,14bd3392-36cd-4ed0-8847-44375d6fb861,0,1,759ede7a-e832-44e6-9b11-5bfb3c507820,759ede7a-e832-44e6-9b11-5bfb3c507820,0,1,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,0,1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,0,1,56900066-90e3-40c0-b64a-8f7964a4dfc1,56900066-90e3-40c0-b64a-8f7964a4dfc1,0,1,56f0c4d6-9b13-486a-9586-05e657dca8be,56f0c4d6-9b13-486a-9586-05e657dca8be,0,1,c795c0d3-6a0d-4311-9821-df320663727e,c795c0d3-6a0d-4311-9821-df320663727e,0,1,512b8d89-8798-4549-9e79-b9c3f7d9098f,512b8d89-8798-4549-9e79-b9c3f7d9098f,0,1,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,0,1,7f356abf-9045-4a76-89f3-8b52d467122a,7f356abf-9045-4a76-89f3-8b52d467122a,0,1,625a61ac-4ad0-4b31-aa67-9f864154b9c4,625a61ac-4ad0-4b31-aa67-9f864154b9c4,0,1,51fa8d01-44a1-4e75-9b04-6a2504972f08,51fa8d01-44a1-4e75-9b04-6a2504972f08,0,1,73dae482-a1ee-4c57-8859-2dd8e8635a49,73dae482-a1ee-4c57-8859-2dd8e8635a49,0,1,7dca913d-e37a-4740-8e3d-677d379605ee,7dca913d-e37a-4740-8e3d-677d379605ee,0,1,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,0,1,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,0,1,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,0,1,4cd4694f-17f8-43ba-8940-07628bd937fe,4cd4694f-17f8-43ba-8940-07628bd937fe,0,1,7df6c94b-3cfe-4764-988e-858d733e35d9,7df6c94b-3cfe-4764-988e-858d733e35d9,0,1,8b251c7d-2d55-4734-a1da-7f1115d95080,8b251c7d-2d55-4734-a1da-7f1115d95080,0,1,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,0,1,5a8c3621-595a-4168-8bba-a7f8d499e47e,5a8c3621-595a-4168-8bba-a7f8d499e47e,0,1,fc4cfed6-e492-4420-b357-8143a8c2a41a,fc4cfed6-e492-4420-b357-8143a8c2a41a,0,1,4311a250-64af-443e-a711-93b7c41175cf,4311a250-64af-443e-a711-93b7c41175cf,0,1,804b6c57-1d7b-4927-be5b-84b7959fe55e,804b6c57-1d7b-4927-be5b-84b7959fe55e,0,1,f2655d85-79ea-4736-8f41-94a4f9b2b998,f2655d85-79ea-4736-8f41-94a4f9b2b998,0,1,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,0,1,a8eb5ed9-df99-405b-afad-eeaa98956eee,a8eb5ed9-df99-405b-afad-eeaa98956eee,0,1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,0,1,26a1279f-91f0-4632-ad7c-21cf2f524208,26a1279f-91f0-4632-ad7c-21cf2f524208,0,1,bf751ed0-ee47-4eaf-81bd-f0da00bef343,bf751ed0-ee47-4eaf-81bd-f0da00bef343,0,1,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,0,1,1f1def7c-e0ee-4963-afea-1751bf1b812c,1f1def7c-e0ee-4963-afea-1751bf1b812c,0,1,9a4c0898-ab56-425c-8191-5ab90f4e12bf,9a4c0898-ab56-425c-8191-5ab90f4e12bf,0,1,6841ec47-7a84-441a-b975-69d089072ce7,6841ec47-7a84-441a-b975-69d089072ce7,0,1,ead4001a-0d8a-4b95-8212-2a40e5aa6659,ead4001a-0d8a-4b95-8212-2a40e5aa6659,0,1,22165c8a-2179-4cd5-b195-bd2721e9e232,22165c8a-2179-4cd5-b195-bd2721e9e232,0,1,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,0,1,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,0,1,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,0,1,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,0,1,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,0,1,9d9debfd-4a10-4f09-9d09-2aa5e058b525,9d9debfd-4a10-4f09-9d09-2aa5e058b525,0,1,fc19586c-d89c-495c-b473-6f85967ed48e,fc19586c-d89c-495c-b473-6f85967ed48e,0,1,2ac7c701-a281-4e77-a5f8-294526021e2d,2ac7c701-a281-4e77-a5f8-294526021e2d,0,1,979df549-889d-496a-b6ce-c56d54c771b5,979df549-889d-496a-b6ce-c56d54c771b5,0,1,91b320d8-3426-44d3-97d7-c200287d7343,91b320d8-3426-44d3-97d7-c200287d7343,0,1,b9297f72-b40a-4adb-9975-bb693d4834a4,b9297f72-b40a-4adb-9975-bb693d4834a4,0,1,41cf3916-216f-4c4e-a587-82777f4263e0,41cf3916-216f-4c4e-a587-82777f4263e0,0,1,2ce3a350-86f1-4275-8299-3c3693ca11fa,2ce3a350-86f1-4275-8299-3c3693ca11fa,0,1,59f0ed15-c84c-4f41-bdd4-26317e4e914d,59f0ed15-c84c-4f41-bdd4-26317e4e914d,0,1,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,0,1,8fef790c-a3f4-460c-9093-5065cbdba196,8fef790c-a3f4-460c-9093-5065cbdba196,0,1,79bd24d0-61a9-4558-90ac-4e726066789c,79bd24d0-61a9-4558-90ac-4e726066789c,0,1,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,0,1,ef356548-51a4-4b09-b37d-ede5b8f3edb6,ef356548-51a4-4b09-b37d-ede5b8f3edb6,0,1,53c0d900-5e96-4381-a1ed-4424a5799608,53c0d900-5e96-4381-a1ed-4424a5799608,0,1,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,0,1,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,0,1,45ca9e20-1246-4400-a019-ffb521af6ea7,45ca9e20-1246-4400-a019-ffb521af6ea7,0,1,73eed854-5c3a-4a10-9bfa-793fd517f303,73eed854-5c3a-4a10-9bfa-793fd517f303,0,1,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,0,1,9134dc40-a8f1-4c60-9431-27cb98be5ecd,9134dc40-a8f1-4c60-9431-27cb98be5ecd,0,1,16c4622a-33af-4a95-b44e-0861a6df21d2,16c4622a-33af-4a95-b44e-0861a6df21d2,0,1,d8cac67b-cce2-4a00-a8df-c6570c50153f,d8cac67b-cce2-4a00-a8df-c6570c50153f,0,1,37213c65-bf26-4e50-a2fa-58eb45439b58,37213c65-bf26-4e50-a2fa-58eb45439b58,0,1,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,0,1,b6b31892-73ee-4c9b-92b0-2735536c4938,b6b31892-73ee-4c9b-92b0-2735536c4938,0,1,deb8b883-142e-47d0-a722-7c734a0cf9b3,deb8b883-142e-47d0-a722-7c734a0cf9b3,0,1,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,0,1,29233058-ccb1-4110-a9bc-cdb4c531f35a,29233058-ccb1-4110-a9bc-cdb4c531f35a,0,1,cf3729b2-9ee6-437c-81df-83966793be50,cf3729b2-9ee6-437c-81df-83966793be50,0,1,429d08b7-0b98-4f9b-a053-d04dd84a7026,429d08b7-0b98-4f9b-a053-d04dd84a7026,0,1,b64fd964-cee8-4619-872f-82d2fdc14240,b64fd964-cee8-4619-872f-82d2fdc14240,0,1,5ce7846d-9806-40f5-8631-4e14deb8bc95,5ce7846d-9806-40f5-8631-4e14deb8bc95,0,1,79528a0e-1e48-4d14-bd28-756fd5db57b9,79528a0e-1e48-4d14-bd28-756fd5db57b9,0,1,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,0,1,d9426219-4b37-4776-8d5d-acab5825e789,d9426219-4b37-4776-8d5d-acab5825e789,0,1,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,0,1,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,0,1,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,0,1,29e7299a-ce80-497a-8102-615d0a001ea8,29e7299a-ce80-497a-8102-615d0a001ea8,0,1,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,0,1,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,0,1,adc2cc11-b647-453f-a98e-8a73b7c368c7,adc2cc11-b647-453f-a98e-8a73b7c368c7,0,1,4522c564-61da-40da-a749-5312121a331d,4522c564-61da-40da-a749-5312121a331d,0,1,9394c709-6cbe-4ef6-bc8c-cba8af65821e,9394c709-6cbe-4ef6-bc8c-cba8af65821e,0,1,029e7c7a-5b50-4d38-9fd0-d8a5a15b38ec,029e7c7a-5b50-4d38-9fd0-d8a5a15b38ec,0,1,506bf43b-f7df-4b42-b614-e5925b45b5e9,506bf43b-f7df-4b42-b614-e5925b45b5e9,0,1,58570514-a2cf-4e09-ba7a-d9efd8178269,58570514-a2cf-4e09-ba7a-d9efd8178269,0,1,c23aa057-42f4-4167-9224-693e904598c6,c23aa057-42f4-4167-9224-693e904598c6,0,1,2943b572-7411-4f92-a6cc-7ee552b85223,2943b572-7411-4f92-a6cc-7ee552b85223,0,1,28478e7a-e8aa-40aa-866c-a3624f903141,28478e7a-e8aa-40aa-866c-a3624f903141,0,1,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0,1,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,0,1,dabb3395-6100-4f53-913d-e0230e81b494,dabb3395-6100-4f53-913d-e0230e81b494,0,1,e0a3fae1-1582-4c7a-acd8-870b558acec4,e0a3fae1-1582-4c7a-acd8-870b558acec4,0,1,8e755ce0-c571-4ed5-b0bb-9470edcb7c73,8e755ce0-c571-4ed5-b0bb-9470edcb7c73,0,1,02e1c293-7302-4751-a248-4bbeed9cbad5,02e1c293-7302-4751-a248-4bbeed9cbad5,0,1,c946cde8-c0d7-4acb-a3be-8858e392fc40,c946cde8-c0d7-4acb-a3be-8858e392fc40,0,1,3a111e0d-6466-46fd-95a2-1798b6e51ba0,3a111e0d-6466-46fd-95a2-1798b6e51ba0,0,1,645edcb0-e358-4d32-a9a9-9534af0398ca,645edcb0-e358-4d32-a9a9-9534af0398ca,0,1,efa1b4e5-d16c-4921-a48a-fe700e39dc71,efa1b4e5-d16c-4921-a48a-fe700e39dc71,0,1,e93402db-e7dd-465e-8c62-2a41efd811b8,e93402db-e7dd-465e-8c62-2a41efd811b8,0,1,e0157f72-a362-4b9f-a272-68ca8078b91c,e0157f72-a362-4b9f-a272-68ca8078b91c,0,1,422155c7-1640-48c4-bb21-36595b405c66,422155c7-1640-48c4-bb21-36595b405c66,0,1,16d37b5a-88db-4787-b2de-fb50da0ca94b,16d37b5a-88db-4787-b2de-fb50da0ca94b,0,1,f653bcbf-5659-4605-9bb9-3737f19e79dd,f653bcbf-5659-4605-9bb9-3737f19e79dd,0,1,8b980868-fe63-49ff-ba3d-4c29732e1b90,8b980868-fe63-49ff-ba3d-4c29732e1b90,0,1,54668731-4963-4ec3-b188-9feacaefa182,54668731-4963-4ec3-b188-9feacaefa182,0,1,3702135e-5380-4ca6-82f5-63eff1b043e9,3702135e-5380-4ca6-82f5-63eff1b043e9,0,1,29b2104b-fd02-4d51-951f-51ea213b8ebd,29b2104b-fd02-4d51-951f-51ea213b8ebd,0,1,ba5c945e-554f-45a2-a2de-3157b2d7e931,ba5c945e-554f-45a2-a2de-3157b2d7e931,0,1,f7085f33-f122-4443-a3f5-4e765300175e,f7085f33-f122-4443-a3f5-4e765300175e,0,1,b7e4c512-b856-4679-a025-5f0f28918593,b7e4c512-b856-4679-a025-5f0f28918593,0,1,bba56b8f-a3f3-4d3f-9804-f9569bb1f6f3,bba56b8f-a3f3-4d3f-9804-f9569bb1f6f3,0,1,cff7ba79-9418-43a4-badc-3e3cc2f6bd5b,cff7ba79-9418-43a4-badc-3e3cc2f6bd5b,0,1,a9362ac4-85ee-4214-80c1-048fab769885,a9362ac4-85ee-4214-80c1-048fab769885,0,1,a4e89d2a-d6f7-4966-ac3c-57f1ef1d1a3a,a4e89d2a-d6f7-4966-ac3c-57f1ef1d1a3a,0,1,20f1114a-0b98-464f-aed8-80ce706b808e,20f1114a-0b98-464f-aed8-80ce706b808e,0,1,988b05ae-987a-4433-b446-bcc7bf5d9ea4,988b05ae-987a-4433-b446-bcc7bf5d9ea4,0,1,07e3de4e-28d9-48dc-9253-a2c39c34f827,07e3de4e-28d9-48dc-9253-a2c39c34f827,0,1,241db5c5-e3bc-4db8-bc88-39db84bb60e9,241db5c5-e3bc-4db8-bc88-39db84bb60e9,0,1,c147916d-1fb6-473d-bde0-8dd528dde8eb,c147916d-1fb6-473d-bde0-8dd528dde8eb,0,1,00359e00-aba0-4afb-8b58-2e1247dbe04f,00359e00-aba0-4afb-8b58-2e1247dbe04f,0,1,77bd95d6-3cd5-4b67-a0b6-72d24243fbc2,77bd95d6-3cd5-4b67-a0b6-72d24243fbc2,0,1,0be7f905-53b8-4bb1-8e37-dcc142e508c5,0be7f905-53b8-4bb1-8e37-dcc142e508c5,0,1,fc959221-6313-45d9-b2c4-85befaede226,fc959221-6313-45d9-b2c4-85befaede226,0,1,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,0,1,5206d407-ac91-477e-80e7-97c312da934c,5206d407-ac91-477e-80e7-97c312da934c,0,1,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,0,1,ccb8a530-260a-4488-b1d9-c67325c69bf4,ccb8a530-260a-4488-b1d9-c67325c69bf4,0,1,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0,1,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,0,1,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,0,1,81dd61e5-fe02-4272-a525-affda9b606ca,81dd61e5-fe02-4272-a525-affda9b606ca,0,1,8de7b423-b7d1-46fe-b1dc-fb936736b864,8de7b423-b7d1-46fe-b1dc-fb936736b864,0,1,f565876c-0326-4b12-895e-c248b9e64115,f565876c-0326-4b12-895e-c248b9e64115,0,1,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,0,1,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0,1,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,0,1,80c23bf0-cef0-4d07-a017-d90635f8041d,80c23bf0-cef0-4d07-a017-d90635f8041d,0,1,47a24216-3299-470b-a18c-d8c1258fff24,47a24216-3299-470b-a18c-d8c1258fff24,0,1,72dcfd46-491e-4f88-a0ea-57919f8fbdea,72dcfd46-491e-4f88-a0ea-57919f8fbdea,0,1,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,0,1,f9161bc3-9a1c-4870-8681-8e97d8ce838a,f9161bc3-9a1c-4870-8681-8e97d8ce838a,0,1,a75ed1c8-20c2-49a8-a730-22237ef91366,a75ed1c8-20c2-49a8-a730-22237ef91366,0,1,1c0ebdfd-1913-48fe-b80a-10c30201129b,1c0ebdfd-1913-48fe-b80a-10c30201129b,0,1,22ad3db7-1ad3-4868-8598-b0b90db3fa1f,22ad3db7-1ad3-4868-8598-b0b90db3fa1f,0,1,14025e38-09af-43b2-a49b-403e398a28ea,14025e38-09af-43b2-a49b-403e398a28ea,0,1,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,0,1,c3b3805b-3501-47a7-b280-46180049b235,c3b3805b-3501-47a7-b280-46180049b235,0,1,29af05c2-37de-495b-b3cf-477d452abe5e,29af05c2-37de-495b-b3cf-477d452abe5e,0,1,5e922083-0ceb-449a-8201-7dd27a46f2fc,5e922083-0ceb-449a-8201-7dd27a46f2fc,0,1,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,0,1,e757303e-c61a-4e42-9829-c5a36dba9414,e757303e-c61a-4e42-9829-c5a36dba9414,0,1,091de87c-0801-4bd3-aaaa-ed37bc4cd161,091de87c-0801-4bd3-aaaa-ed37bc4cd161,0,1,d5012e69-89bc-40af-8e4f-377a042854ee,d5012e69-89bc-40af-8e4f-377a042854ee,0,1,02f79fd8-5315-4c90-b520-db67dcb6e371,02f79fd8-5315-4c90-b520-db67dcb6e371,0,1,7f90681d-6534-40ee-bbb7-5356c0ed9de2,7f90681d-6534-40ee-bbb7-5356c0ed9de2,0,1,d1aca4be-1e1e-4bbd-b0a6-a68bc7c8c586,d1aca4be-1e1e-4bbd-b0a6-a68bc7c8c586,0,1,9bb52788-4a3a-48b5-a551-5ca753b6c059,9bb52788-4a3a-48b5-a551-5ca753b6c059,0,1,4fb5004f-3cd9-44c4-a44b-d235cccf9e9c,4fb5004f-3cd9-44c4-a44b-d235cccf9e9c,0,1,872a0c47-fab5-4a54-8ab9-23940bbdefbb,872a0c47-fab5-4a54-8ab9-23940bbdefbb,0,1,7428a626-3fbc-4f2c-a3dd-f14e8d90c00b,7428a626-3fbc-4f2c-a3dd-f14e8d90c00b,0,1,2f20bff4-9201-4f36-9e74-eba4d9b3c59a,2f20bff4-9201-4f36-9e74-eba4d9b3c59a,0,1,ec1755ed-d203-4548-9f1d-dd62ce331ecf,ec1755ed-d203-4548-9f1d-dd62ce331ecf,0,1,4d83ed3c-755c-4b9b-a2b8-17fa2c5c3a61,4d83ed3c-755c-4b9b-a2b8-17fa2c5c3a61,0,1,8f17ec3f-6d62-46b8-baef-b20430e948ce,8f17ec3f-6d62-46b8-baef-b20430e948ce,0,1,ea1298d0-9396-4a50-b83e-24064e8dd99d,ea1298d0-9396-4a50-b83e-24064e8dd99d,0,1,038dbb00-e4c6-4e64-b861-3a0764f54ab3,038dbb00-e4c6-4e64-b861-3a0764f54ab3,0,1,1c291f7d-a493-4297-8aaa-912896800066,1c291f7d-a493-4297-8aaa-912896800066,0,1,69149801-a825-4ed2-b077-c26660dff271,69149801-a825-4ed2-b077-c26660dff271,0,1,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,0,1,518ab687-b84a-40c8-8547-aee4257c1b71,518ab687-b84a-40c8-8547-aee4257c1b71,0,1,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,0,1,7732ef07-16eb-46a0-9645-7de95c5482af,7732ef07-16eb-46a0-9645-7de95c5482af,0,1,75dac536-b316-4b04-a57b-03656c678bec,75dac536-b316-4b04-a57b-03656c678bec,0,1,a07d6c85-159d-4d09-b117-561a1e20329f,a07d6c85-159d-4d09-b117-561a1e20329f,0,1,8a2f9733-4f83-41f2-9d74-dca7161a4b41,8a2f9733-4f83-41f2-9d74-dca7161a4b41,0,1,fbd2d900-1e0d-48f3-9793-0186ee49915c,fbd2d900-1e0d-48f3-9793-0186ee49915c,0,1,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,0,1,3a36e0f5-a645-47f1-99ae-5b0493d604ad,3a36e0f5-a645-47f1-99ae-5b0493d604ad,0,1,57f762f7-b8e4-498b-a3dc-3d40c94855ec,57f762f7-b8e4-498b-a3dc-3d40c94855ec,0,1,ca7d4086-de35-40fd-af65-73369d452135,ca7d4086-de35-40fd-af65-73369d452135,0,1,563c0f5c-e0b4-4229-a3f6-183091060aa4,563c0f5c-e0b4-4229-a3f6-183091060aa4,0,1,bf967588-ea8f-49a3-9331-af2331ffa162,bf967588-ea8f-49a3-9331-af2331ffa162,0,1,5083530c-9a24-4def-99c1-6eb9514e9b33,5083530c-9a24-4def-99c1-6eb9514e9b33,0,1,d59c2725-5d98-495e-9f86-f5d38dbfad90,d59c2725-5d98-495e-9f86-f5d38dbfad90,0,1,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,0,1,0ba68198-983d-409b-be27-96f1572b3f12,0ba68198-983d-409b-be27-96f1572b3f12,0,1,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,0,1,decb27a8-7dd3-4601-a694-30429e638b39,decb27a8-7dd3-4601-a694-30429e638b39,0,1,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,0,1,d7a128e4-f31f-4b09-8424-e816ab59d5c3,d7a128e4-f31f-4b09-8424-e816ab59d5c3,0,1,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0,1,aa9513b4-f575-4030-a7f9-ac09aa319e98,aa9513b4-f575-4030-a7f9-ac09aa319e98,0,1,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,0,1,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,0,1,d03f66b1-48a3-434b-bb58-9fd53c183514,d03f66b1-48a3-434b-bb58-9fd53c183514,0,1,a469e55e-d7ca-4c27-b350-fafe7364c18f,a469e55e-d7ca-4c27-b350-fafe7364c18f,0,1,1a4991f8-7832-4ca9-8809-88a97de88749,1a4991f8-7832-4ca9-8809-88a97de88749,0,1,4f44c1c0-0480-415e-8058-41b28f2f43a0,4f44c1c0-0480-415e-8058-41b28f2f43a0,0,1,3b708ec7-6543-40ff-8ea2-16d4ddb7d56f,3b708ec7-6543-40ff-8ea2-16d4ddb7d56f,0,1,433e502d-ab5c-4e8e-a7c0-0fde1aa6f767,433e502d-ab5c-4e8e-a7c0-0fde1aa6f767,0,1,6bd65f02-9531-4dd4-bd4a-4132aa3c4787,6bd65f02-9531-4dd4-bd4a-4132aa3c4787,0,1,5d9863e6-aab7-4808-a516-8bc42dae5d01,5d9863e6-aab7-4808-a516-8bc42dae5d01,0,1,a2910bb8-fdd2-480c-8ae2-78661d7d18e0,a2910bb8-fdd2-480c-8ae2-78661d7d18e0,0,1,218302fa-674d-45e1-a7e2-2cce2d011342,218302fa-674d-45e1-a7e2-2cce2d011342,0,1,70264a0a-95c5-426f-a1bf-0f57b86d4030,70264a0a-95c5-426f-a1bf-0f57b86d4030,0,1,ba3ba1ac-e7c6-4bab-9771-4ef522011c52,ba3ba1ac-e7c6-4bab-9771-4ef522011c52,0,1,3291428e-6727-43cc-a1f8-c62f90320e90,3291428e-6727-43cc-a1f8-c62f90320e90,0,1,d867720c-c937-4689-b241-0afda05ef993,d867720c-c937-4689-b241-0afda05ef993,0,1,1390da8f-bac6-44ee-8413-1438f1f66074,1390da8f-bac6-44ee-8413-1438f1f66074,0,1,9616956d-a537-44fd-9d3f-5071fb5f4883,9616956d-a537-44fd-9d3f-5071fb5f4883,0,1,4ad1eed9-89ff-4086-b0ff-4eadcebcdce9,4ad1eed9-89ff-4086-b0ff-4eadcebcdce9,0,1,41d31712-6181-4cfe-9aa4-02b7a50150b0,41d31712-6181-4cfe-9aa4-02b7a50150b0,0,1,3ad5d8a7-3071-46aa-aebf-306bdb67983b,3ad5d8a7-3071-46aa-aebf-306bdb67983b,0,1,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,0,1,cb954476-c551-4a06-9bcd-18d67ba47dc8,cb954476-c551-4a06-9bcd-18d67ba47dc8,0,1,79201015-bfae-463e-81f1-0ae2d3066f3f,79201015-bfae-463e-81f1-0ae2d3066f3f,0,1,1ea3178b-73dd-4063-9140-c61687a4b1b8,1ea3178b-73dd-4063-9140-c61687a4b1b8,0,1,6b02f5e0-2b50-492d-ada4-d8fe43b0a748,6b02f5e0-2b50-492d-ada4-d8fe43b0a748,0,1,bbfc7a9c-ac22-47b1-bb18-74993b7ec5b0,bbfc7a9c-ac22-47b1-bb18-74993b7ec5b0,0,1,17dcf8bc-6830-4623-b1b2-9084c5495e20,17dcf8bc-6830-4623-b1b2-9084c5495e20,0,1,a3114825-cf97-4051-907d-9a31e1ac88eb,a3114825-cf97-4051-907d-9a31e1ac88eb,0,1,9886143e-70dd-4c1e-8b00-dc5587403246,9886143e-70dd-4c1e-8b00-dc5587403246,0,1,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,0,1,696723be-7b4f-4321-956e-eff07ea9f5fa,696723be-7b4f-4321-956e-eff07ea9f5fa,0,1,616c27dc-5c59-4469-97a7-27e0752bd3a7,616c27dc-5c59-4469-97a7-27e0752bd3a7,0,1,f7323121-74bc-441c-a3e9-dd5cb4f0accd,f7323121-74bc-441c-a3e9-dd5cb4f0accd,0,1,bb264e83-49f4-4b7a-8be2-094712fc0640,bb264e83-49f4-4b7a-8be2-094712fc0640,0,1,07bf650d-e61e-44f3-9643-6ffc95b913fb,07bf650d-e61e-44f3-9643-6ffc95b913fb,0,1,6b90ed05-813c-4324-8a69-02c2268856b2,6b90ed05-813c-4324-8a69-02c2268856b2,0,1,081ed48d-cb87-459d-97d6-9af121edbabb,081ed48d-cb87-459d-97d6-9af121edbabb,0,1,6c4074b2-f631-451d-b412-1c8c096a71b1,6c4074b2-f631-451d-b412-1c8c096a71b1,0,1,f9931a20-8391-4b13-8c6d-1836f2492e53,f9931a20-8391-4b13-8c6d-1836f2492e53,0,1,c6eec20b-13b9-44a0-968f-1325680c399b,c6eec20b-13b9-44a0-968f-1325680c399b,0,1,02fbf083-1bdd-4900-9dc1-62f415b792a4,02fbf083-1bdd-4900-9dc1-62f415b792a4,0,1,35454c2d-7088-487b-abb3-f95f2dfdcffa,35454c2d-7088-487b-abb3-f95f2dfdcffa,0,1,2178ab47-1bb1-4fe0-940d-6876b66333c1,2178ab47-1bb1-4fe0-940d-6876b66333c1,0,1,8cc09f48-2ef2-434b-b33e-ab9b021816de,8cc09f48-2ef2-434b-b33e-ab9b021816de,0,1,2ca1741b-1e65-4a54-a4a5-489e73cfb4f3,2ca1741b-1e65-4a54-a4a5-489e73cfb4f3,0,1,360b086c-53e3-4514-a4f5-9379ab368b76,360b086c-53e3-4514-a4f5-9379ab368b76,0,1,e6feefa1-7298-4ab0-85d3-9abee571a627,e6feefa1-7298-4ab0-85d3-9abee571a627,0,1,063ef64f-97ec-451e-8470-d3cdf6d08947,063ef64f-97ec-451e-8470-d3cdf6d08947,0,1,b76492d0-17f3-49c0-b23b-6a140122f20f,b76492d0-17f3-49c0-b23b-6a140122f20f,0,1,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,0,1,df459525-4e4d-4819-b996-5a6379b22a88,df459525-4e4d-4819-b996-5a6379b22a88,0,1,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,0,1,e67b4a32-4bac-450e-be6d-88c262383f31,e67b4a32-4bac-450e-be6d-88c262383f31,0,1,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,0,1,6c4c3eca-8b02-451b-af52-93073c3da146,6c4c3eca-8b02-451b-af52-93073c3da146,0,1,095c281c-3903-465d-baea-af1e6abf8019,095c281c-3903-465d-baea-af1e6abf8019,0,1,440d115d-a769-427e-891a-88d65fba2057,440d115d-a769-427e-891a-88d65fba2057,0,1,f7932210-027e-4fad-b7f7-3530789ce803,f7932210-027e-4fad-b7f7-3530789ce803,0,1,7bbfd95e-39a1-485b-930f-c9210c18dcd0,7bbfd95e-39a1-485b-930f-c9210c18dcd0,0,1,4975d3d6-b5a2-41c6-973b-6817013a388d,4975d3d6-b5a2-41c6-973b-6817013a388d,0,1,18ebc799-9724-4ffb-855e-b09a0723869e,18ebc799-9724-4ffb-855e-b09a0723869e,0,1,a06b8ef5-83e6-4fc6-91e1-256004134d69,a06b8ef5-83e6-4fc6-91e1-256004134d69,0,1,1d6a68ec-917f-4c3b-b970-797a6921cbc9,1d6a68ec-917f-4c3b-b970-797a6921cbc9,0,1,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,0,1,5b663988-3599-46dc-8d59-4c82ceac537c,5b663988-3599-46dc-8d59-4c82ceac537c,0,1,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0,1,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,0,1,679cc0df-df5c-4c33-8c64-c0b6cee39116,679cc0df-df5c-4c33-8c64-c0b6cee39116,0,1,b156752b-f25c-4f35-9474-8ac3636597f5,b156752b-f25c-4f35-9474-8ac3636597f5,0,1,2d279292-f9d6-4d5a-aaeb-f82f6485ac54,2d279292-f9d6-4d5a-aaeb-f82f6485ac54,0,1,f335aa38-4e9e-4653-9a76-b6d4ae178c93,f335aa38-4e9e-4653-9a76-b6d4ae178c93,0,1,a62894bc-fab4-4ed4-a57d-cbe725527198,a62894bc-fab4-4ed4-a57d-cbe725527198,0,1,17aadd5f-cda2-4785-a07f-3ab4b04434a6,17aadd5f-cda2-4785-a07f-3ab4b04434a6,0,1,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,0,1,1832336e-32f6-42c4-9087-8614ead52bb3,1832336e-32f6-42c4-9087-8614ead52bb3,0,1,ff9f7b5c-70f4-4eed-8216-64448e7da76f,ff9f7b5c-70f4-4eed-8216-64448e7da76f,0,1,44ac2869-990d-4cac-a14b-c1a28854341e,44ac2869-990d-4cac-a14b-c1a28854341e,0,1,d5df31c3-89f9-469c-80a9-fb4706d30bc4,d5df31c3-89f9-469c-80a9-fb4706d30bc4,0,1,e73a6a9d-8ddd-4531-9f17-745117d9da9b,e73a6a9d-8ddd-4531-9f17-745117d9da9b,0,1,9dd4e17c-d10b-435e-8665-08997edc3e7e,9dd4e17c-d10b-435e-8665-08997edc3e7e,0,1,cafd44e1-8509-4550-8329-ff8cab0c31ae,cafd44e1-8509-4550-8329-ff8cab0c31ae,0,1,105cd740-1f60-45e1-871c-adeecd291b0d,105cd740-1f60-45e1-871c-adeecd291b0d,0,1,95aec7d2-179b-4ea3-a3df-3d737b713564,95aec7d2-179b-4ea3-a3df-3d737b713564,0,1,4bd1cae4-d5b5-444e-9cf5-67a969714293,4bd1cae4-d5b5-444e-9cf5-67a969714293,0,1,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,0,1,f279a625-b88f-43b4-bce9-de1186fe7d7e,f279a625-b88f-43b4-bce9-de1186fe7d7e,0,1,99fc224a-2a61-441a-85e9-d69df6aa8b5e,99fc224a-2a61-441a-85e9-d69df6aa8b5e,0,1,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,0,1,d009782b-d73e-42d1-9979-2cbaf20ee98e,d009782b-d73e-42d1-9979-2cbaf20ee98e,0,1,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,0,1,88d8edf7-654f-4627-b68d-c7e929726da6,88d8edf7-654f-4627-b68d-c7e929726da6,0,1,01579044-5659-4a73-a989-c52cfabaae66,01579044-5659-4a73-a989-c52cfabaae66,0,1,9b8509e8-8262-4e6a-b2f3-a0df8f49e2c5,9b8509e8-8262-4e6a-b2f3-a0df8f49e2c5,0,1,6a798c80-459f-49ef-a8c2-83842ce4252c,6a798c80-459f-49ef-a8c2-83842ce4252c,0,1,911baaa1-a4de-4558-b00e-51644144a762,911baaa1-a4de-4558-b00e-51644144a762,0,1,d6400a59-6e02-4212-bb5a-9e49767aa8d6,d6400a59-6e02-4212-bb5a-9e49767aa8d6,0,1,6016d26e-fe39-4c16-b2b5-15f8c663125e,6016d26e-fe39-4c16-b2b5-15f8c663125e,0,1,6c19d9b0-1a41-4f82-a289-9fe05e272079,6c19d9b0-1a41-4f82-a289-9fe05e272079,0,1,df8063e2-47f1-4230-8e3c-eeee2143c72a,df8063e2-47f1-4230-8e3c-eeee2143c72a,0,1,89856ba2-f39a-41cd-be94-61243c6a0b96,89856ba2-f39a-41cd-be94-61243c6a0b96,0,1,8bdb0483-6ea9-4553-91ac-9cde267aae19,8bdb0483-6ea9-4553-91ac-9cde267aae19,0,1,56c9fa68-467b-4c1b-813e-6bc7ac0375cb,56c9fa68-467b-4c1b-813e-6bc7ac0375cb,0,1,bf30f5a1-6542-469f-b3fe-eee726110ffb,bf30f5a1-6542-469f-b3fe-eee726110ffb,0,1,13367a31-c2c9-43ea-b248-8a92e95ecd53,13367a31-c2c9-43ea-b248-8a92e95ecd53,0,1,8a8ad123-c01a-440a-bd01-1c0da72cf2eb,8a8ad123-c01a-440a-bd01-1c0da72cf2eb,0,1,ca4ef957-36c2-43b9-8ff7-e2b7ee58cde5,ca4ef957-36c2-43b9-8ff7-e2b7ee58cde5,0,1,4e036eff-92a8-4010-89b2-ed949c123311,4e036eff-92a8-4010-89b2-ed949c123311,0,1,38160114-dc22-4d0b-86a5-d650f4756932,38160114-dc22-4d0b-86a5-d650f4756932,0,1,50ee876f-6860-443b-9857-aca772d711ea,50ee876f-6860-443b-9857-aca772d711ea,0,1,6955edb2-d481-432c-b282-58dc07fd067b,6955edb2-d481-432c-b282-58dc07fd067b,0,1,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,0,1,58b33683-1916-4aef-9b98-5569ef7782ed,58b33683-1916-4aef-9b98-5569ef7782ed,0,1,d3e1f622-f438-4cad-94ae-0272f51610f7,d3e1f622-f438-4cad-94ae-0272f51610f7,0,1,64ac2c2a-2726-4ab9-9a6a-3d08f3fc0618,64ac2c2a-2726-4ab9-9a6a-3d08f3fc0618,0,1,8569cd73-d40d-4d92-83e0-8ece0c03a86a,8569cd73-d40d-4d92-83e0-8ece0c03a86a,0,1,9ebe2809-be6b-4c91-9443-b237fb7ad43c,9ebe2809-be6b-4c91-9443-b237fb7ad43c,0,1,bf29c091-de15-4cd4-be0e-a9785f97d444,bf29c091-de15-4cd4-be0e-a9785f97d444,0,1,6a675752-fd31-46a5-8a62-2a1ede437c68,6a675752-fd31-46a5-8a62-2a1ede437c68,0,1,060b2bb4-ca03-4da9-930f-7f91f6299a35,060b2bb4-ca03-4da9-930f-7f91f6299a35,0,1,394b1a1c-a7ae-41b7-a346-4bac99fa567d,394b1a1c-a7ae-41b7-a346-4bac99fa567d,0,1,9a5fa511-59e8-4a1b-a101-f276f0b7b261,9a5fa511-59e8-4a1b-a101-f276f0b7b261,0,1,ccfe4e36-80b6-419f-8bb3-c1046203d023,ccfe4e36-80b6-419f-8bb3-c1046203d023,0,1,94b2e060-53b7-4b40-af05-30bea3520330,94b2e060-53b7-4b40-af05-30bea3520330,0,1,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0,1,41b0dabd-85a3-4819-84dd-371eaf4f996e,41b0dabd-85a3-4819-84dd-371eaf4f996e,0,1,86a5ba4d-0681-4ddc-a505-0f537528e1a3,86a5ba4d-0681-4ddc-a505-0f537528e1a3,0,1,12d936f5-932b-4561-b934-c8444808a450,12d936f5-932b-4561-b934-c8444808a450,0,1,2ccb06ca-9bb7-4b74-9a96-c109bb117984,2ccb06ca-9bb7-4b74-9a96-c109bb117984,0,1,ac1a661d-db18-4576-80a9-a19d4140c05e,ac1a661d-db18-4576-80a9-a19d4140c05e,0,1,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,0,1,c3ffeb09-121b-4d77-9c15-def4648b4f3c,c3ffeb09-121b-4d77-9c15-def4648b4f3c,0,1,c2de0724-04c1-4adb-b62a-b7ba727dbe67,c2de0724-04c1-4adb-b62a-b7ba727dbe67,0,1,4ae26777-69ff-4a55-942b-0bad8ab7a70a,4ae26777-69ff-4a55-942b-0bad8ab7a70a,0,1,a0d8fb0a-0e90-4140-8687-e249b153dc66,a0d8fb0a-0e90-4140-8687-e249b153dc66,0,1,917c6f60-2a07-4587-9496-d393aff93953,917c6f60-2a07-4587-9496-d393aff93953,0,1,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,0,1,9fe72d73-4c95-47e0-bf92-dcb714d747c6,9fe72d73-4c95-47e0-bf92-dcb714d747c6,0,1,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,0,1,b6f8bc3e-f0cd-43ef-b060-d701cd446197,b6f8bc3e-f0cd-43ef-b060-d701cd446197,0,1,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,0,1,b94e805f-e1ab-4870-b855-98aa401864b2,b94e805f-e1ab-4870-b855-98aa401864b2,0,1,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,0,1,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,0,1,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,0,1,60aaa289-1f07-438c-8f10-81058ac671c3,60aaa289-1f07-438c-8f10-81058ac671c3,0,1,7312a4ab-a269-4d85-a2c2-25bd5c5dc59c,7312a4ab-a269-4d85-a2c2-25bd5c5dc59c,0,1,c44b0868-bd7f-4230-973b-544ff4dd2afe,c44b0868-bd7f-4230-973b-544ff4dd2afe,0,1,51e6a6f9-ce9d-4cb0-a40c-384ede074e07,51e6a6f9-ce9d-4cb0-a40c-384ede074e07,0,1,6236ac73-5b9f-4fb5-bb2c-a5d8e205c5db,6236ac73-5b9f-4fb5-bb2c-a5d8e205c5db,0,1,5e22429f-9ec0-4943-bf80-1becc4b8e5cb,5e22429f-9ec0-4943-bf80-1becc4b8e5cb,0,1,0153e60e-daca-48ac-b1c6-adecc89f579e,0153e60e-daca-48ac-b1c6-adecc89f579e,0,1,1ed4cf25-19f0-49f5-96a0-0ffe13adfe35,1ed4cf25-19f0-49f5-96a0-0ffe13adfe35,0,1,a896bc34-30a6-48b6-acfc-786c24c186bd,a896bc34-30a6-48b6-acfc-786c24c186bd,0,1,3867f4cb-bf54-42fb-8ea6-ca51d7cd6c91,3867f4cb-bf54-42fb-8ea6-ca51d7cd6c91,0,1,da8ae00a-7207-4ceb-b739-9114888c5b27,da8ae00a-7207-4ceb-b739-9114888c5b27,0,1,ac028c56-b2a8-4a9b-a325-554c636f838e,ac028c56-b2a8-4a9b-a325-554c636f838e,0,1,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0,1,f99e98ac-cd94-4989-8c02-ef8b323c6815,f99e98ac-cd94-4989-8c02-ef8b323c6815,0,1,e2562347-4549-4111-862e-86c20a6daade,e2562347-4549-4111-862e-86c20a6daade,0,1,b270fc64-15c6-41ed-ad09-44c833ca7c41,b270fc64-15c6-41ed-ad09-44c833ca7c41,0,1,4c3312fd-5613-4e9b-ae7c-572fa1887ded,4c3312fd-5613-4e9b-ae7c-572fa1887ded,0,1,6c8c9618-287a-41ab-890c-60250925ad52,6c8c9618-287a-41ab-890c-60250925ad52,0,1,168fce48-2413-45fc-ad21-9b465121d81b,168fce48-2413-45fc-ad21-9b465121d81b,0,1,55b9650e-098b-4d44-9fb5-d525b46f014b,55b9650e-098b-4d44-9fb5-d525b46f014b,0,1,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,0,1,bc55dc06-a769-40be-9c99-0794bdd2dbea,bc55dc06-a769-40be-9c99-0794bdd2dbea,0,1,7861e179-96d2-422f-a7c2-b38b59074956,7861e179-96d2-422f-a7c2-b38b59074956,0,1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0,1,3797b4c6-e336-4cbe-8d0b-0902e1247b42,3797b4c6-e336-4cbe-8d0b-0902e1247b42,0,1,67ebc493-d29a-4614-890a-feb8b5bd884b,67ebc493-d29a-4614-890a-feb8b5bd884b,0,1,d65c8992-aabc-4b67-9893-01862231ebe1,d65c8992-aabc-4b67-9893-01862231ebe1,0,1,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,0,1,dba6cb38-79c6-4060-87c5-a993548f36c4,dba6cb38-79c6-4060-87c5-a993548f36c4,0,1,6b44227a-e226-4bcb-8638-06b49f830669,6b44227a-e226-4bcb-8638-06b49f830669,0,1,f2406400-87e9-4df2-bcd3-8f1e3ad62088,f2406400-87e9-4df2-bcd3-8f1e3ad62088,0,1,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,0,1,a5623e87-3102-4521-b4ab-c41bf2403a1a,a5623e87-3102-4521-b4ab-c41bf2403a1a,0,1,599b1692-5f4e-42ef-ae1a-822ff527a415,599b1692-5f4e-42ef-ae1a-822ff527a415,0,1,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,0,1,23f70675-6a05-4b50-ad68-c55ddc93e857,23f70675-6a05-4b50-ad68-c55ddc93e857,0,1,4bb7372a-87a9-426e-b09f-fc0110455b10,4bb7372a-87a9-426e-b09f-fc0110455b10,0,1,ac853a0f-c185-4cdb-9f09-c921770937b5,ac853a0f-c185-4cdb-9f09-c921770937b5,0,1,920a7940-4d12-476d-a909-2231787839a9,920a7940-4d12-476d-a909-2231787839a9,0,1,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,0,1,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,0,1,32eb2a75-ff35-4795-bf0c-12b1328441ee,32eb2a75-ff35-4795-bf0c-12b1328441ee,0,1,8e877990-a64c-4c45-91f1-007d47618cc7,8e877990-a64c-4c45-91f1-007d47618cc7,0,1,46c3341c-352c-43fb-b338-15c8ad487fbf,46c3341c-352c-43fb-b338-15c8ad487fbf,0,1,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,0,1,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,0,1,f9450d6a-849c-4621-b528-9cafc4819b44,f9450d6a-849c-4621-b528-9cafc4819b44,0,1,5b7cac99-2fca-4dbb-8d49-b84f310a2496,5b7cac99-2fca-4dbb-8d49-b84f310a2496,0,1,bb11c22e-0fbd-4985-be67-0866df7f7e61,bb11c22e-0fbd-4985-be67-0866df7f7e61,0,1,a4673d5c-9dae-48f7-9c91-53c1302a266a,a4673d5c-9dae-48f7-9c91-53c1302a266a,0,1,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,0,1,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,0,1,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0,1,3f410b53-e762-41fe-9469-d538dfec3a9a,3f410b53-e762-41fe-9469-d538dfec3a9a,0,1,d08857b9-bc84-48f8-a7a1-09db961427c9,d08857b9-bc84-48f8-a7a1-09db961427c9,0,1,53ea8238-cae6-42c0-b92d-b4539c71c34a,53ea8238-cae6-42c0-b92d-b4539c71c34a,0,1,92ea60c0-1027-4337-9130-40028951f09b,92ea60c0-1027-4337-9130-40028951f09b,0,1,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,0,1,d64f18a4-ff93-4284-9eca-085109eafd24,d64f18a4-ff93-4284-9eca-085109eafd24,0,1,bf428e7a-2970-4bab-8c8e-35ea16151c0e,bf428e7a-2970-4bab-8c8e-35ea16151c0e,0,1,232dbd5f-b7f1-4463-946c-b8fbf93ac466,232dbd5f-b7f1-4463-946c-b8fbf93ac466,0,1,a1a74b34-4174-4769-8f03-bd4a32e83418,a1a74b34-4174-4769-8f03-bd4a32e83418,0,1,84562495-1887-495e-8433-2649202684cc,84562495-1887-495e-8433-2649202684cc,0,1,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,0,1,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,0,1,1731708f-53cb-4b00-b90e-f581b4baa845,1731708f-53cb-4b00-b90e-f581b4baa845,0,1,d4b0feca-c00a-4d48-9f23-d92277ea6483,d4b0feca-c00a-4d48-9f23-d92277ea6483,0,1,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,0,1,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,0,1,23cb5bc2-9638-4d1c-b4bc-d5297e271570,23cb5bc2-9638-4d1c-b4bc-d5297e271570,0,1,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,0,1,04b7389d-697d-4b0d-a239-ac8c674cc46f,04b7389d-697d-4b0d-a239-ac8c674cc46f,0,1,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,0,1,864cad61-8280-415d-8fe1-bcb39d56670a,864cad61-8280-415d-8fe1-bcb39d56670a,0,1,b106bd29-5dc7-44d7-94d0-00f61499392e,b106bd29-5dc7-44d7-94d0-00f61499392e,0,1,a4febff8-0566-4977-bf55-1d574568fe9f,a4febff8-0566-4977-bf55-1d574568fe9f,0,1,5199cc65-bed1-40b9-96fe-cf6d855a8b91,5199cc65-bed1-40b9-96fe-cf6d855a8b91,0,1,f518add9-5c26-4dac-ab2e-b30fe3fbd347,f518add9-5c26-4dac-ab2e-b30fe3fbd347,0,1,23f53317-7aa8-4816-8a69-3d39d5e76da0,23f53317-7aa8-4816-8a69-3d39d5e76da0,0,1,9ade5155-fa6d-4999-b019-a5e7e235a158,9ade5155-fa6d-4999-b019-a5e7e235a158,0,1,8b302c5e-b255-4cb5-94d9-0dfef4250097,8b302c5e-b255-4cb5-94d9-0dfef4250097,0,1,49d713b8-6a61-4bd1-9650-0de1869967d2,49d713b8-6a61-4bd1-9650-0de1869967d2,0,1,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,0,1,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,0,1,8e07a76d-db30-491c-b296-181c8e689382,8e07a76d-db30-491c-b296-181c8e689382,0,1,4f1752ae-42d0-477d-854b-de143c428a85,4f1752ae-42d0-477d-854b-de143c428a85,0,1,1a41acdd-3503-4c69-b93b-eb1cb6749712,1a41acdd-3503-4c69-b93b-eb1cb6749712,0,1,0ddeed48-b98a-47c3-84a2-2eac065be06c,0ddeed48-b98a-47c3-84a2-2eac065be06c,0,1,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,0,1,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,0,1,554b1360-d3cb-48c5-bfa6-ebcba5c9afc9,554b1360-d3cb-48c5-bfa6-ebcba5c9afc9,0,1,61b947a5-edca-43ca-82c4-5a7b529d8f82,61b947a5-edca-43ca-82c4-5a7b529d8f82,0,1,59eb6a7a-1d96-4985-8d8e-575162759415,59eb6a7a-1d96-4985-8d8e-575162759415,0,1,68564573-ed49-4519-a8b3-997865fe70a6,68564573-ed49-4519-a8b3-997865fe70a6,0,1,6c789969-d066-489d-ad88-92e2a5a6ec69,6c789969-d066-489d-ad88-92e2a5a6ec69,0,1,2a07d696-75d6-4a12-a310-30d6598b4a4c,2a07d696-75d6-4a12-a310-30d6598b4a4c,0,1,dde88f56-417c-4559-a893-85dc91e7e623,dde88f56-417c-4559-a893-85dc91e7e623,0,1,963eedab-6976-4a98-b9ad-b81f89239661,963eedab-6976-4a98-b9ad-b81f89239661,0,1,3370d43e-8e97-4411-8123-2bb2bcf60a75,3370d43e-8e97-4411-8123-2bb2bcf60a75,0,1,d9d377c9-406f-4bc9-8076-1f049348b816,d9d377c9-406f-4bc9-8076-1f049348b816,0,1,dcfcb108-3761-43d9-ad2a-29633bd1ae47,dcfcb108-3761-43d9-ad2a-29633bd1ae47,0,1,36baa776-83c4-413d-b70c-cbbc45e25662,36baa776-83c4-413d-b70c-cbbc45e25662,0,1,b65f9165-c20d-4053-8a0b-cff3f693b762,b65f9165-c20d-4053-8a0b-cff3f693b762,0,1,51af096b-687f-44f4-a0d8-306f670fc5ce,51af096b-687f-44f4-a0d8-306f670fc5ce,0,1,75972f88-aedd-4338-a3b5-320cd632a2e6,75972f88-aedd-4338-a3b5-320cd632a2e6,0,1,a720abc8-dcf0-4684-8d94-22d394a8e4df,a720abc8-dcf0-4684-8d94-22d394a8e4df,0,1,e40f53de-c27b-4e74-8241-f784d7ca5c84,e40f53de-c27b-4e74-8241-f784d7ca5c84,0,1,ef38b84d-277e-48c2-8826-330132eb6807,ef38b84d-277e-48c2-8826-330132eb6807,0,1,67a50910-059a-4724-84e0-c21bc3ac74c2,67a50910-059a-4724-84e0-c21bc3ac74c2,0,1,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,0,1,2c0d11fc-b927-4b5d-a16c-d60e69580824,2c0d11fc-b927-4b5d-a16c-d60e69580824,0,1,5251e744-666e-48a0-a5b4-9cef313c7631,5251e744-666e-48a0-a5b4-9cef313c7631,0,1,0b09cf2f-1759-4362-b997-29e09ac00445,0b09cf2f-1759-4362-b997-29e09ac00445,0,1,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,0,1,828ddf5d-ca09-4baf-897f-77d569e02a6b,828ddf5d-ca09-4baf-897f-77d569e02a6b,0,1,8856015c-a695-4b1a-99ef-770263f9dc4a,8856015c-a695-4b1a-99ef-770263f9dc4a,0,1,183ec2b5-e173-4885-9e26-1098ffa15020,183ec2b5-e173-4885-9e26-1098ffa15020,0,1,74702fdf-bfc5-4658-ba58-e39bcfbaa647,74702fdf-bfc5-4658-ba58-e39bcfbaa647,0,1,2f436ec3-6a04-4d2c-998a-c60ea875ca86,2f436ec3-6a04-4d2c-998a-c60ea875ca86,0,1,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,0,1,ae641a80-4ada-4592-ace9-29a82e6700e4,ae641a80-4ada-4592-ace9-29a82e6700e4,0,1,c6bf0d10-5406-44e8-b3f3-74b7db2b71e6,c6bf0d10-5406-44e8-b3f3-74b7db2b71e6,0,1,8d653af4-ac00-4ca9-a9e6-4e1a888c6dfb,8d653af4-ac00-4ca9-a9e6-4e1a888c6dfb,0,1,703453e8-cb49-491b-8e19-a17b89894d1e,703453e8-cb49-491b-8e19-a17b89894d1e,0,1,190bc52e-0d51-4dfc-9f16-99ed71ebfa75,190bc52e-0d51-4dfc-9f16-99ed71ebfa75,0,1,0c24858a-7e64-426f-9b59-392449aecaf5,0c24858a-7e64-426f-9b59-392449aecaf5,0,1,b1d61e28-f3dc-418b-b5df-f75622a4b980,b1d61e28-f3dc-418b-b5df-f75622a4b980,0,1,bec4c82f-4e76-4d16-bb4d-b6d9fa404c5d,bec4c82f-4e76-4d16-bb4d-b6d9fa404c5d,0,1,4033f86b-d250-475a-8837-071bf31664b0,4033f86b-d250-475a-8837-071bf31664b0,0,1,876e31ff-ab7b-4ea4-b491-161963727dd1,876e31ff-ab7b-4ea4-b491-161963727dd1,0,1,bb43995b-68b4-41a1-8458-e10a2d8925f1,bb43995b-68b4-41a1-8458-e10a2d8925f1,0,1,61730dd9-fed7-43ce-8f38-724cac8f3d08,61730dd9-fed7-43ce-8f38-724cac8f3d08,0,1,e6a494b8-27e7-46a6-9435-7be6e150a69e,e6a494b8-27e7-46a6-9435-7be6e150a69e,0,1,133dc852-59d3-4351-934d-8845f8a38431,133dc852-59d3-4351-934d-8845f8a38431,0,1,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,0,1,b57eca91-04c2-4412-b5e2-f3c71f8ec602,b57eca91-04c2-4412-b5e2-f3c71f8ec602,0,1,b67914a8-d483-4bed-bd4d-a4aadd4998a4,b67914a8-d483-4bed-bd4d-a4aadd4998a4,0,1,744a52c8-6e4d-4356-a35a-3d2b01ad4a9f,744a52c8-6e4d-4356-a35a-3d2b01ad4a9f,0,1,707a8a49-fec5-454c-9e80-c3da829d395c,707a8a49-fec5-454c-9e80-c3da829d395c,0,1,6f630213-c16c-421c-a160-09e3c729ab26,6f630213-c16c-421c-a160-09e3c729ab26,0,1,878c638c-7c84-4914-896a-d4fdf0d759ef,878c638c-7c84-4914-896a-d4fdf0d759ef,0,1,6065653e-b7a9-4033-9617-f64430c57d89,6065653e-b7a9-4033-9617-f64430c57d89,0,1,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,0,1,00d1d85b-c258-4f10-9d13-a99375a29fc1,00d1d85b-c258-4f10-9d13-a99375a29fc1,0,1,0544376f-461c-42c3-a102-e0ae65e3c0c6,0544376f-461c-42c3-a102-e0ae65e3c0c6,0,1,6df8d316-6ac3-4626-8951-1ad36d7049ed,6df8d316-6ac3-4626-8951-1ad36d7049ed,0,1,f211b418-899d-4220-a14b-4a7302183e46,f211b418-899d-4220-a14b-4a7302183e46,0,1,e499629a-69ed-46b4-be5d-7b1f2f6a11d4,e499629a-69ed-46b4-be5d-7b1f2f6a11d4,0,1,91af7a52-0825-4af5-94df-cc501e0123cd,91af7a52-0825-4af5-94df-cc501e0123cd,0,1,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,0,1,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,0,1,c7b89521-f006-4749-b213-d7f7b0c8a004,c7b89521-f006-4749-b213-d7f7b0c8a004,0,1,401e8f3a-82a4-4f12-9ff1-27440d0a0ed6,401e8f3a-82a4-4f12-9ff1-27440d0a0ed6,0,1,7918eee4-7c9e-4a7a-808e-4ed0fd7bbe41,7918eee4-7c9e-4a7a-808e-4ed0fd7bbe41,0,1,81f8f558-c98b-4999-83f3-4ac06fb79dca,81f8f558-c98b-4999-83f3-4ac06fb79dca,0,1,7b8f082d-0a64-4fad-a33d-af7011a7f33d,7b8f082d-0a64-4fad-a33d-af7011a7f33d,0,1,49f61632-e899-425a-b16a-769f795bdf5f,49f61632-e899-425a-b16a-769f795bdf5f,0,1,c264a337-b573-408a-b77b-c6524ca1687b,c264a337-b573-408a-b77b-c6524ca1687b,0,1,92396874-0d4a-4d8e-b15b-01bc7504d5da,92396874-0d4a-4d8e-b15b-01bc7504d5da,0,1,3e58d607-b906-449f-b044-9c130a487b86,3e58d607-b906-449f-b044-9c130a487b86,0,1,7a911212-7fde-4ea8-a1fa-229116b60895,7a911212-7fde-4ea8-a1fa-229116b60895,0,1,f4580043-5bc2-4295-8523-909302009b44,f4580043-5bc2-4295-8523-909302009b44,0,1,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,0,1,81936ac2-32fe-4e14-897b-0aba92b90c05,81936ac2-32fe-4e14-897b-0aba92b90c05,0,1,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,0,1,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,0,1,876b23bf-2f48-4916-ad0f-4de8306e1864,876b23bf-2f48-4916-ad0f-4de8306e1864,0,1,e983f539-e369-491e-9cee-510518187870,e983f539-e369-491e-9cee-510518187870,0,1,f8d8f958-bf7b-4070-9b5a-8410b9786cbf,f8d8f958-bf7b-4070-9b5a-8410b9786cbf,0,1,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,0,1,e99a1b17-0e37-489a-bc39-3dd2e23b0861,e99a1b17-0e37-489a-bc39-3dd2e23b0861,0,1,e7c63a25-c804-4bc4-a6f1-81009dd889e2,e7c63a25-c804-4bc4-a6f1-81009dd889e2,0,1,1faacc47-680d-48ac-8933-daa76519f24f,1faacc47-680d-48ac-8933-daa76519f24f,0,1,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,0,1,70e710c5-42df-465f-a9c5-8345c87e1f19,70e710c5-42df-465f-a9c5-8345c87e1f19,0,1,4c1576c4-b327-4ec1-87bc-662c5aba343b,4c1576c4-b327-4ec1-87bc-662c5aba343b,0,1,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0,1,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,0,1,4492ac73-eb91-41f8-98f1-54c2b3ad212a,4492ac73-eb91-41f8-98f1-54c2b3ad212a,0,1,869b43fb-968f-4fe0-b945-5030c90a38f2,869b43fb-968f-4fe0-b945-5030c90a38f2,0,1,af071a52-212b-4131-98e6-81f6048a70e6,af071a52-212b-4131-98e6-81f6048a70e6,0,1,64eff9f4-c57b-40a0-bd83-7e371fd010ce,64eff9f4-c57b-40a0-bd83-7e371fd010ce,0,1,0eee931a-57bb-4844-8e6e-eaca342640a0,0eee931a-57bb-4844-8e6e-eaca342640a0,0,1,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,0,1,37210dde-9a2f-475c-8341-578ac99f0e17,37210dde-9a2f-475c-8341-578ac99f0e17,0,1,3d662173-e19d-4077-9a08-8c8899226e24,3d662173-e19d-4077-9a08-8c8899226e24,0,1,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,0,1,3a8fffb6-a732-440c-afb9-d1c699ea53b6,3a8fffb6-a732-440c-afb9-d1c699ea53b6,0,1,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,0,1,a1d91c5f-1acd-4b46-887e-d06e7260dd20,a1d91c5f-1acd-4b46-887e-d06e7260dd20,0,1,3fd26019-c464-4c73-b18e-0888740b1747,3fd26019-c464-4c73-b18e-0888740b1747,0,1,9aadad98-69f5-41ce-ad1c-0afd8c610d86,9aadad98-69f5-41ce-ad1c-0afd8c610d86,0,1,69fd1e6e-7302-4ca8-8419-ec567ae66bef,69fd1e6e-7302-4ca8-8419-ec567ae66bef,0,1,b0650787-8ff5-4407-b491-bcdc2f61fd58,b0650787-8ff5-4407-b491-bcdc2f61fd58,0,1,d792831c-698d-40c6-96c2-dd0ae6f30707,d792831c-698d-40c6-96c2-dd0ae6f30707,0,1,6f9a3d00-d935-4fa6-9fd2-14700226daff,6f9a3d00-d935-4fa6-9fd2-14700226daff,0,1,a21989bd-a57f-4969-be3b-d8b39ead4145,a21989bd-a57f-4969-be3b-d8b39ead4145,0,1,c4aee120-cdbb-4b48-a1c7-99cccbafb120,c4aee120-cdbb-4b48-a1c7-99cccbafb120,0,1,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,0,1,a3667b25-7c18-446d-a318-685a4fe4bf89,a3667b25-7c18-446d-a318-685a4fe4bf89,0,1,8103f12c-ed50-4052-8117-33b6d11ef620,8103f12c-ed50-4052-8117-33b6d11ef620,0,1,498b012b-bb63-490e-8100-1d33dc84b400,498b012b-bb63-490e-8100-1d33dc84b400,0,1,7c7857b6-90e8-4b3f-9902-fd81bf68d133,7c7857b6-90e8-4b3f-9902-fd81bf68d133,0,1,617de19c-bf01-4900-832a-c169e9faeb79,617de19c-bf01-4900-832a-c169e9faeb79,0,1,70b73fd0-f5dc-411e-9bbb-10a538e8281b,70b73fd0-f5dc-411e-9bbb-10a538e8281b,0,1,758f44ad-54da-4f72-accf-0afecc4f4827,758f44ad-54da-4f72-accf-0afecc4f4827,0,1,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,0,1,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,0,1,4378ab20-5467-476b-8f04-4b6876efdee6,4378ab20-5467-476b-8f04-4b6876efdee6,0,1,55e47901-c79c-41c5-9d7f-6b6846ed2782,55e47901-c79c-41c5-9d7f-6b6846ed2782,0,1,3c429fe8-e663-4a58-817f-8f8382697dbb,3c429fe8-e663-4a58-817f-8f8382697dbb,0,1,c37be0c3-d2db-4e63-a8cb-7956a5396650,c37be0c3-d2db-4e63-a8cb-7956a5396650,0,1,83180e0d-fc4b-41ec-9a17-5af555a4776f,83180e0d-fc4b-41ec-9a17-5af555a4776f,0,1,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,0,1,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,0,1,3e8c6546-416c-4437-8c85-2cf591b4fc3f,3e8c6546-416c-4437-8c85-2cf591b4fc3f,0,1,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,0,1,9a0b27db-e4ac-496b-b6de-876b90381527,9a0b27db-e4ac-496b-b6de-876b90381527,0,1,bac41d45-249f-40b4-a013-008e261369c8,bac41d45-249f-40b4-a013-008e261369c8,0,1,84e34b4a-02e8-4676-8b81-771ddf3c2931,84e34b4a-02e8-4676-8b81-771ddf3c2931,0,1,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0,1,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,0,1,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,0,1,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,0,1,f71ac535-74a5-4001-a613-455a9e1bf734,f71ac535-74a5-4001-a613-455a9e1bf734,0,1,55a42b83-b6d2-409b-a8ff-7849b08e07ed,55a42b83-b6d2-409b-a8ff-7849b08e07ed,0,1,61889399-ecc2-442c-a790-a8b27a7a540c,61889399-ecc2-442c-a790-a8b27a7a540c,0,1,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,0,1,4ee2efbc-bc4a-4b47-bfdb-bb83f108c5bb,4ee2efbc-bc4a-4b47-bfdb-bb83f108c5bb,0,1,d6aed0fd-686c-430d-b884-74494177422e,d6aed0fd-686c-430d-b884-74494177422e,0,1,245ec4aa-ed65-41f7-b0f0-f8085cfc5bef,245ec4aa-ed65-41f7-b0f0-f8085cfc5bef,0,1,3ed64288-8bf0-4049-8d44-1b424f31d40f,3ed64288-8bf0-4049-8d44-1b424f31d40f,0,1,a21cf522-d657-49ba-a198-01ff1de5e3f0,a21cf522-d657-49ba-a198-01ff1de5e3f0,0,1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,0,1,7ceb2f18-4dae-4b13-a5be-e949be165b4e,7ceb2f18-4dae-4b13-a5be-e949be165b4e,0,1,c4f94f6d-e33f-4226-bf47-c4b544098082,c4f94f6d-e33f-4226-bf47-c4b544098082,0,1,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0,1,4e892154-3279-492c-9eae-124304225c5d,4e892154-3279-492c-9eae-124304225c5d,0,1,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,0,1,575a135a-6ffd-4ae8-a597-7e584df9bac4,575a135a-6ffd-4ae8-a597-7e584df9bac4,0,1,693a7196-f525-4bd2-a417-e902977f21cb,693a7196-f525-4bd2-a417-e902977f21cb,0,1,9bb39184-08b7-440e-a8f8-5caf0083ba0f,9bb39184-08b7-440e-a8f8-5caf0083ba0f,0,1,d48e817e-f6a4-47e5-a052-35d09e066490,d48e817e-f6a4-47e5-a052-35d09e066490,0,1,091cb921-c7e3-4a5f-97b7-34e625159b9c,091cb921-c7e3-4a5f-97b7-34e625159b9c,0,1,f6118cdd-1dcd-464e-a49d-e95c69466750,f6118cdd-1dcd-464e-a49d-e95c69466750,0,1,39932897-959b-41a6-94ad-61426abfdbd9,39932897-959b-41a6-94ad-61426abfdbd9,0,1,c56ea6f3-1032-4b7a-a20e-e912196da1cd,c56ea6f3-1032-4b7a-a20e-e912196da1cd,0,1,b69b611d-18d3-4e78-8a09-f010bcf9c261,b69b611d-18d3-4e78-8a09-f010bcf9c261,0,1,e8e087c1-9131-4037-8562-8bce8c38f78c,e8e087c1-9131-4037-8562-8bce8c38f78c,0,1,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,0,1,6adaef8e-82b6-4664-9748-4f41b170d91a,6adaef8e-82b6-4664-9748-4f41b170d91a,0,1,20d655a7-788c-48bc-83ae-25003106bedb,20d655a7-788c-48bc-83ae-25003106bedb,0,1,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,0,1,68a72014-4b2e-4347-aaa7-54d95b8eb919,68a72014-4b2e-4347-aaa7-54d95b8eb919,0,1,a71d9c41-7510-4d38-90df-1034977b8f45,a71d9c41-7510-4d38-90df-1034977b8f45,0,1,25830f5b-27e2-4eff-9728-b21eb498727d,25830f5b-27e2-4eff-9728-b21eb498727d,0,1,379c9295-d0d5-418d-82f3-5ae19985cc53,379c9295-d0d5-418d-82f3-5ae19985cc53,0,1,af02f534-8508-4f9f-bcc1-0c6f3d696971,af02f534-8508-4f9f-bcc1-0c6f3d696971,0,1,dd345cfb-ea0c-4ea8-9b35-22547b000275,dd345cfb-ea0c-4ea8-9b35-22547b000275,0,1,86a871da-3725-43a1-a7c3-98acd187011b,86a871da-3725-43a1-a7c3-98acd187011b,0,1,2447cfeb-d877-4222-8ac2-b0026b85f932,2447cfeb-d877-4222-8ac2-b0026b85f932,0,1,fb94e9cb-1f27-42a6-a701-18bbe5888e70,fb94e9cb-1f27-42a6-a701-18bbe5888e70,0,1,2e26e32e-a0c6-4460-99de-865622202166,2e26e32e-a0c6-4460-99de-865622202166,0,1,c9489a6e-45af-4877-9788-158071571a0a,c9489a6e-45af-4877-9788-158071571a0a,0,1,23959912-f8fc-42bc-9ec2-1d520ebc5dad,23959912-f8fc-42bc-9ec2-1d520ebc5dad,0,1,5ef026c2-2ef4-45d6-9792-5ba0d298714b,5ef026c2-2ef4-45d6-9792-5ba0d298714b,0,1,45d61391-4cf7-4f45-8775-ada582c42400,45d61391-4cf7-4f45-8775-ada582c42400,0,1,78b2a913-2ab9-455d-85a3-504f0f468468,78b2a913-2ab9-455d-85a3-504f0f468468,0,1,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,0,1,560b5b12-4dee-4c69-ab6b-7680757a2797,560b5b12-4dee-4c69-ab6b-7680757a2797,0,1,3cfb1ce0-de42-4914-85c0-807d0c10f77e,3cfb1ce0-de42-4914-85c0-807d0c10f77e,0,1,a27244c2-ac65-423f-afce-42efd288a83d,a27244c2-ac65-423f-afce-42efd288a83d,0,1,d4002184-8e08-4dcc-9070-62f595e82e23,d4002184-8e08-4dcc-9070-62f595e82e23,0,1,62163fda-1a09-4d4f-b290-76ff324042ab,62163fda-1a09-4d4f-b290-76ff324042ab,0,1,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,0,1,6e6a1557-06fa-45c0-ad98-c43809553cd7,6e6a1557-06fa-45c0-ad98-c43809553cd7,0,1,179f7436-e328-42b8-9382-19ee6f10c768,179f7436-e328-42b8-9382-19ee6f10c768,0,1,0333cd9e-392d-40b2-869d-ad47119e0384,0333cd9e-392d-40b2-869d-ad47119e0384,0,1,82cc8820-0b92-4bb7-b097-7ac79e922f01,82cc8820-0b92-4bb7-b097-7ac79e922f01,0,1,f2267d6c-6972-4621-b677-87798056363b,f2267d6c-6972-4621-b677-87798056363b,0,1,243d201b-3714-4700-b410-c74c9093e6f6,243d201b-3714-4700-b410-c74c9093e6f6,0,1,de3cb50c-ef99-419e-b922-c6a453da6a5b,de3cb50c-ef99-419e-b922-c6a453da6a5b,0,1,d4ca4802-756a-494c-bab3-e77e0777a3fa,d4ca4802-756a-494c-bab3-e77e0777a3fa,0,1,134c1054-8d65-405f-ba3b-5beeca803a72,134c1054-8d65-405f-ba3b-5beeca803a72,0,1,cfa1669b-5310-4171-83fd-4dff3c6ac345,cfa1669b-5310-4171-83fd-4dff3c6ac345,0,1,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,0,1,aec7df6a-21a1-495d-b0a9-3769e1069888,aec7df6a-21a1-495d-b0a9-3769e1069888,0,1,463b98bf-b4d4-4edb-995d-0a75ff29b60d,463b98bf-b4d4-4edb-995d-0a75ff29b60d,0,1,317f88a7-12a4-4d21-b637-3050525406f4,317f88a7-12a4-4d21-b637-3050525406f4,0,1,2d9d2319-68fb-436d-b431-98858b88a75a,2d9d2319-68fb-436d-b431-98858b88a75a,0,1,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,0,1,a8e14d2e-911d-4096-9027-deb7a08838e0,a8e14d2e-911d-4096-9027-deb7a08838e0,0,1,8e9f9baf-8d12-46cc-915f-f6f290af5512,8e9f9baf-8d12-46cc-915f-f6f290af5512,0,1,6200ebce-5189-473a-9824-db733d78fcb2,6200ebce-5189-473a-9824-db733d78fcb2,0,1,5808331f-9ab4-4a23-a592-1f65087f3214,5808331f-9ab4-4a23-a592-1f65087f3214,0,1,600092a5-0fc4-4ea1-91bd-8fadcc137d8a,600092a5-0fc4-4ea1-91bd-8fadcc137d8a,0,1,c6e65fa9-3077-43c2-aff7-61cc05760fac,c6e65fa9-3077-43c2-aff7-61cc05760fac,0,1,9316738d-3d38-4068-818e-a001355b19fb,9316738d-3d38-4068-818e-a001355b19fb,0,1,d86d766f-021a-4c11-b9e8-403af08918cc,d86d766f-021a-4c11-b9e8-403af08918cc,0,1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,0,1,29200d04-d7da-435a-89e6-858c11a1a98c,29200d04-d7da-435a-89e6-858c11a1a98c,0,1,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,0,1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,0,1,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,0,1,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0,1,27df6c22-85d7-4cb6-be19-82af76c84bf9,27df6c22-85d7-4cb6-be19-82af76c84bf9,0,1,4ec242e0-75d1-4bf7-be18-783e7aa4f236,4ec242e0-75d1-4bf7-be18-783e7aa4f236,0,1,e02b1366-9d7a-462f-86a1-436bbf4532ff,e02b1366-9d7a-462f-86a1-436bbf4532ff,0,1,40ee729c-c317-4a1c-b985-5f7e4e1e20fb,40ee729c-c317-4a1c-b985-5f7e4e1e20fb,0,1,2feb35c0-b046-4086-a2ce-ccc462fc6e9c,2feb35c0-b046-4086-a2ce-ccc462fc6e9c,0,1,8811cc64-99d9-4f13-8309-c29965783f5a,8811cc64-99d9-4f13-8309-c29965783f5a,0,1,7c737071-e850-4a3f-8942-697ef52a8ecc,7c737071-e850-4a3f-8942-697ef52a8ecc,0,1,62eff222-7b74-4cab-9138-880db1f05147,62eff222-7b74-4cab-9138-880db1f05147,0,1,39c6c277-cfc6-4e8a-8e7f-afcff55f0511,39c6c277-cfc6-4e8a-8e7f-afcff55f0511,0,1,860f8893-22fe-4b13-adb1-24e1ea8c6544,860f8893-22fe-4b13-adb1-24e1ea8c6544,0,1,95266e9f-073f-4de3-83c6-cc0d9ee9334f,95266e9f-073f-4de3-83c6-cc0d9ee9334f,0,1,21b8ac8d-75ca-481c-8e85-01bc2029f0c0,21b8ac8d-75ca-481c-8e85-01bc2029f0c0,0,1,b6c94efd-5994-4c4c-a641-b062ecc38b65,b6c94efd-5994-4c4c-a641-b062ecc38b65,0,1,98501228-7f0e-45a3-b58f-4c654f393f80,98501228-7f0e-45a3-b58f-4c654f393f80,0,1,502384c9-edb7-451a-b7ea-de006f657a6e,502384c9-edb7-451a-b7ea-de006f657a6e,0,1,4e1a4fe0-dca4-40ba-9369-73be303a4aef,4e1a4fe0-dca4-40ba-9369-73be303a4aef,0,1,329906a0-0b61-4f3f-8cd0-f06a78e8fe5f,329906a0-0b61-4f3f-8cd0-f06a78e8fe5f,0,1,840e0b1b-a599-4c5f-8eaa-7f7e4f2e55a4,840e0b1b-a599-4c5f-8eaa-7f7e4f2e55a4,0,1,1d06a9e4-e637-4219-a81c-64f8ec1b91a4,1d06a9e4-e637-4219-a81c-64f8ec1b91a4,0,1,50968921-76f3-4108-835a-96b153671c8d,50968921-76f3-4108-835a-96b153671c8d,0,1,b773f510-1485-4886-9071-afcbf49ff856,b773f510-1485-4886-9071-afcbf49ff856,0,1,964403f2-0a87-49e1-b183-dbe3624e3805,964403f2-0a87-49e1-b183-dbe3624e3805,0,1,9f021ea4-cb5b-4248-a79e-0a23e0fac748,9f021ea4-cb5b-4248-a79e-0a23e0fac748,0,1,d5e6cf20-9a74-40bf-9eeb-c91029f014f0,d5e6cf20-9a74-40bf-9eeb-c91029f014f0,0,1,46d94d4c-f76e-4fb4-b0be-39733f0493d9,46d94d4c-f76e-4fb4-b0be-39733f0493d9,0,1,e5936679-41a1-4b0d-9f11-6c83eb6740e8,e5936679-41a1-4b0d-9f11-6c83eb6740e8,0,1,d49411b4-5f6d-48c5-b4f8-fdfbd1b73317,d49411b4-5f6d-48c5-b4f8-fdfbd1b73317,0,1,8b3da21b-ea3f-47cf-af48-15b886b21f20,8b3da21b-ea3f-47cf-af48-15b886b21f20,0,1,32c4750b-0096-4bbc-8dcd-c1f717734233,32c4750b-0096-4bbc-8dcd-c1f717734233,0,1,be6740b1-1f57-4c01-a67a-d48152931dc8,be6740b1-1f57-4c01-a67a-d48152931dc8,0,1,40fd038d-a93a-4be7-9221-d8ae83350ca0,40fd038d-a93a-4be7-9221-d8ae83350ca0,0,1,e9fcabef-5067-477b-8cb0-1bf3ab8161c5,e9fcabef-5067-477b-8cb0-1bf3ab8161c5,0,1,29adc9e5-a994-48ab-a5a1-919d01119c3a,29adc9e5-a994-48ab-a5a1-919d01119c3a,0,1,c47ffce7-c905-4e88-8b1f-156f47047ccd,c47ffce7-c905-4e88-8b1f-156f47047ccd,0,1,e1755eed-88cf-42c1-83e4-f9047f2c30bf,e1755eed-88cf-42c1-83e4-f9047f2c30bf,0,1,c6ec9d48-9131-4735-9cf7-b498705a57e4,c6ec9d48-9131-4735-9cf7-b498705a57e4,0,1,865d76f7-db4a-4fa2-8e1c-3ecbc2d8faf4,865d76f7-db4a-4fa2-8e1c-3ecbc2d8faf4,0,1,706c421a-74ce-4985-9443-b4a2032481f6,706c421a-74ce-4985-9443-b4a2032481f6,0,1,64da4c24-4aaf-42c8-8595-7f60ff3bc344,64da4c24-4aaf-42c8-8595-7f60ff3bc344,0,1,fb9577e1-00d9-4d52-8de9-23914929a683,fb9577e1-00d9-4d52-8de9-23914929a683,0,1,ffd62a16-f2b4-4e3a-8849-15b957a3d1a1,ffd62a16-f2b4-4e3a-8849-15b957a3d1a1,0,1,529253ae-9c92-4426-b150-8444ba622f89,529253ae-9c92-4426-b150-8444ba622f89,0,1,06a1955a-2ef0-4607-9dcb-a480a7951af7,06a1955a-2ef0-4607-9dcb-a480a7951af7,0,1,6f8fcc96-bfed-444a-908d-95c5b1c64972,6f8fcc96-bfed-444a-908d-95c5b1c64972,0,1,97ce4bf2-6580-4f27-8b5d-d60b66a09c9e,97ce4bf2-6580-4f27-8b5d-d60b66a09c9e,0,1,a84c89d9-2cfe-405f-9bb0-5392b3171695,a84c89d9-2cfe-405f-9bb0-5392b3171695,0,1,070ecbfe-88d6-4de8-b236-e7eedbc3ebc6,070ecbfe-88d6-4de8-b236-e7eedbc3ebc6,0,1,91e26e73-027f-4a10-9083-e5182e768723,91e26e73-027f-4a10-9083-e5182e768723,0,1,e55680f4-cb1a-4cdb-88f0-5d82f43c1d05,e55680f4-cb1a-4cdb-88f0-5d82f43c1d05,0,1,54433668-4391-4dea-8baf-43e9aa1d624e,54433668-4391-4dea-8baf-43e9aa1d624e,0,1,fc309616-060a-42c3-8401-dfef0f359bc5,fc309616-060a-42c3-8401-dfef0f359bc5,0,1,b968398d-973d-4643-95a5-16633d7e48bc,b968398d-973d-4643-95a5-16633d7e48bc,0,1,b9507495-2536-4895-b68b-62acd74343f6,b9507495-2536-4895-b68b-62acd74343f6,0,1,e05a14cc-9051-4c38-9725-19856e36d260,e05a14cc-9051-4c38-9725-19856e36d260,0,1,8154aa0f-ecd6-4ab0-9498-56ef25486a55,8154aa0f-ecd6-4ab0-9498-56ef25486a55,0,1,9d6429f7-23da-4596-822a-04818deb3088,9d6429f7-23da-4596-822a-04818deb3088,0,1,a1b67bd2-3220-497d-b2b4-bd0ea62d9111,a1b67bd2-3220-497d-b2b4-bd0ea62d9111,0,1,acb533e7-4610-4f92-b548-1a4ff1a423d4,acb533e7-4610-4f92-b548-1a4ff1a423d4,0,1,8697999d-9cdb-43d8-979b-3f283daffdd3,8697999d-9cdb-43d8-979b-3f283daffdd3,0,1,23378687-249c-4ec6-99b8-b13fb04b8643,23378687-249c-4ec6-99b8-b13fb04b8643,0,1,66315b12-7abf-46e0-a994-894b827b1301,66315b12-7abf-46e0-a994-894b827b1301,0,1,dba174fb-8392-4451-8069-ae8145658e34,dba174fb-8392-4451-8069-ae8145658e34,0,1,ff5dd4f8-8a16-4a41-875d-c4f7c37ae67a,ff5dd4f8-8a16-4a41-875d-c4f7c37ae67a,0,1,4435d99d-a1df-43e6-97ab-5e651017c61d,4435d99d-a1df-43e6-97ab-5e651017c61d,0,1,fb58d277-b2a5-4a72-8d45-170c6f6263f9,fb58d277-b2a5-4a72-8d45-170c6f6263f9,0,1,325ed391-8558-4f03-9784-cde1f2a32944,325ed391-8558-4f03-9784-cde1f2a32944,0,1,f6cda05a-0f8f-4aa2-9686-1735c4207db3,f6cda05a-0f8f-4aa2-9686-1735c4207db3,0,1,0761ea58-8358-49ba-8e2d-e6afe88f6899,0761ea58-8358-49ba-8e2d-e6afe88f6899,0,1,da09e340-7cc0-4830-917a-5a59c42bbbf7,da09e340-7cc0-4830-917a-5a59c42bbbf7,0,1,c325aa12-9564-4033-8d3e-3103df55427f,c325aa12-9564-4033-8d3e-3103df55427f,0,1,9f4d4834-6994-4573-b99d-a5051746e5f9,9f4d4834-6994-4573-b99d-a5051746e5f9,0,1,c8ef3db5-2562-4f80-a679-86c2ba288ebf,c8ef3db5-2562-4f80-a679-86c2ba288ebf,0,1,2398d69d-ecdd-4d34-bdae-34ed5507a61e,2398d69d-ecdd-4d34-bdae-34ed5507a61e,0,1,a707035a-0172-4b55-b589-fa4a8be9b596,a707035a-0172-4b55-b589-fa4a8be9b596,0,1,c4456e94-8c76-49b1-b85a-433e0f65bdb0,c4456e94-8c76-49b1-b85a-433e0f65bdb0,0,1,4a347209-3a07-48ea-b407-6ee37f1d69f2,4a347209-3a07-48ea-b407-6ee37f1d69f2,0,1,5786dce7-e9a3-437a-b694-ca93ea87363f,5786dce7-e9a3-437a-b694-ca93ea87363f,0,1,e3f81324-3366-4de5-b834-688fee5ea625,e3f81324-3366-4de5-b834-688fee5ea625,0,1,205928c7-042b-4f11-919b-5ca9d1fc1ecb,205928c7-042b-4f11-919b-5ca9d1fc1ecb,0,1,b928a3e7-6d57-44f7-8c1e-c5df9a803a49,b928a3e7-6d57-44f7-8c1e-c5df9a803a49,0,1,e1c11609-5400-43ed-887c-22ba3a48a384,e1c11609-5400-43ed-887c-22ba3a48a384,0,1,1c99dd99-fd0a-4342-b7dd-ccf859e41f38,1c99dd99-fd0a-4342-b7dd-ccf859e41f38,0,1,40e2fb30-bb03-4178-a8eb-ddf48337ef23,40e2fb30-bb03-4178-a8eb-ddf48337ef23,0,1,1026fbcb-acd8-40dc-b638-6e02c6378c55,1026fbcb-acd8-40dc-b638-6e02c6378c55,0,1,dc9e2ba6-f4f1-493f-9054-cac633f239dd,dc9e2ba6-f4f1-493f-9054-cac633f239dd,0,1,7b95d0b1-c7b2-43b4-9119-320cb8912032,7b95d0b1-c7b2-43b4-9119-320cb8912032,0,1,004582b7-00aa-405e-8e24-ce76c945edae,004582b7-00aa-405e-8e24-ce76c945edae,0,1,97a9b005-a836-4308-8e63-0e00f6890baa,97a9b005-a836-4308-8e63-0e00f6890baa,0,1,98c34ada-0b78-41db-9183-6d7b9e466bde,98c34ada-0b78-41db-9183-6d7b9e466bde,0,1,fb688339-918e-40a1-8721-a26f3077973e,fb688339-918e-40a1-8721-a26f3077973e,0,1,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,0,1,079ba95c-8293-47e2-b8bd-7acf73c2d880,079ba95c-8293-47e2-b8bd-7acf73c2d880,0,1,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,0,1,a5f264a8-a547-4653-abb1-eb1666d527dc,a5f264a8-a547-4653-abb1-eb1666d527dc,0,1,d1b6c5e8-7625-43aa-bb11-943c9bfa01b7,d1b6c5e8-7625-43aa-bb11-943c9bfa01b7,0,1,83d23220-0226-4efe-a81c-6809459443a2,83d23220-0226-4efe-a81c-6809459443a2,0,1,ee30252f-ea25-4d50-b49c-163514bee342,ee30252f-ea25-4d50-b49c-163514bee342,0,1,02afc219-6b86-4282-ab6f-2688203542b7,02afc219-6b86-4282-ab6f-2688203542b7,0,1,dabae379-6356-497a-aab5-cf102f16a72a,dabae379-6356-497a-aab5-cf102f16a72a,0,1,337370e0-1021-4887-9d38-6c3833c90a5b,337370e0-1021-4887-9d38-6c3833c90a5b,0,1,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0,1,d6f01f1c-801b-4776-ae11-48236103f76a,d6f01f1c-801b-4776-ae11-48236103f76a,0,1,b6fe68cf-657b-40e0-af2e-247607a86519,b6fe68cf-657b-40e0-af2e-247607a86519,0,1,9b0b8191-94b7-428f-be86-e9e4cd24a72f,9b0b8191-94b7-428f-be86-e9e4cd24a72f,0,1,a923dbcb-7146-4445-ad17-f4a32c16a837,a923dbcb-7146-4445-ad17-f4a32c16a837,0,1,41dec792-1d1a-4e06-a54b-a86193b98225,41dec792-1d1a-4e06-a54b-a86193b98225,0,1,52257beb-3e0c-4681-b430-9690398cd13a,52257beb-3e0c-4681-b430-9690398cd13a,0,1,f71bd0e8-8784-452e-bea9-3696c875d69d,f71bd0e8-8784-452e-bea9-3696c875d69d,0,1,135e637c-c28e-4547-8da2-d897dca54cb2,135e637c-c28e-4547-8da2-d897dca54cb2,0,1,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,0,1,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,0,1,5356543a-db9a-4265-b83f-31d45544c8e6,5356543a-db9a-4265-b83f-31d45544c8e6,0,1,857dd311-9c6d-4dba-82d8-283d7b05b09e,857dd311-9c6d-4dba-82d8-283d7b05b09e,0,1,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,0,1,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,0,1,81ef02df-498d-4af0-8254-dc6730cbf140,81ef02df-498d-4af0-8254-dc6730cbf140,0,1,872521e3-413c-45ac-a6ea-39fe1324bae8,872521e3-413c-45ac-a6ea-39fe1324bae8,0,1,c4968b4e-0715-43a5-92ad-c8cd276fbf7b,c4968b4e-0715-43a5-92ad-c8cd276fbf7b,0,1,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,0,1,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,0,1,2902460a-ed86-41cf-8e8f-895adab9a72f,2902460a-ed86-41cf-8e8f-895adab9a72f,0,1,f82d5bd6-4c74-4c23-978c-565aae3d752a,f82d5bd6-4c74-4c23-978c-565aae3d752a,0,1,403d4675-b80e-4e0a-8cc0-2876661d0c89,403d4675-b80e-4e0a-8cc0-2876661d0c89,0,1,7fba41a5-4faa-412b-b367-b30ced0314c0,7fba41a5-4faa-412b-b367-b30ced0314c0,0,1,98422d20-9a71-40e4-966e-6958d44eaefb,98422d20-9a71-40e4-966e-6958d44eaefb,0,1,37333d0b-3589-4b8b-bf6c-e605e0287b66,37333d0b-3589-4b8b-bf6c-e605e0287b66,0,1,d671bea8-51b2-4a93-9594-3ae6bb1ace52,d671bea8-51b2-4a93-9594-3ae6bb1ace52,0,1,ad083c26-7461-4e94-b524-0174242fbd91,ad083c26-7461-4e94-b524-0174242fbd91,0,1,5ce39370-f918-493f-bb24-53346b6fd836,5ce39370-f918-493f-bb24-53346b6fd836,0,1,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,0,1,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0,1,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,0,1,a76b1fd1-ba00-40e6-8756-f17fee449818,a76b1fd1-ba00-40e6-8756-f17fee449818,0,1,5c913626-48d1-4e0a-a423-64078ce59c7b,5c913626-48d1-4e0a-a423-64078ce59c7b,0,1,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0,1,7b0ec304-1904-413e-a9c6-ff62e87107dd,7b0ec304-1904-413e-a9c6-ff62e87107dd,0,1,d4dd8c96-914d-496f-b735-ef85ec473605,d4dd8c96-914d-496f-b735-ef85ec473605,0,1,62517db4-59e6-4945-bcd6-b3f1845572bf,62517db4-59e6-4945-bcd6-b3f1845572bf,0,1,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,0,1,f0f72149-0e7f-441a-b70d-8f47d4977927,f0f72149-0e7f-441a-b70d-8f47d4977927,0,1,776efc3e-ac27-4550-bafd-6e91aa987af2,776efc3e-ac27-4550-bafd-6e91aa987af2,0,1,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,0,1,cc438366-85ea-48be-8b74-d05cddb1fc51,cc438366-85ea-48be-8b74-d05cddb1fc51,0,1,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,0,1,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,0,1,3271b800-1825-422f-97bb-757baf403e90,3271b800-1825-422f-97bb-757baf403e90,0,1,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,0,1,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,0,1,a040c756-4687-4bfd-a690-b122d3c490e5,a040c756-4687-4bfd-a690-b122d3c490e5,0,1,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,0,1,961a9801-3956-4ea0-b0d3-908f09bf4929,961a9801-3956-4ea0-b0d3-908f09bf4929,0,1,6fac5c14-e126-4342-9078-edf1d0efcbf2,6fac5c14-e126-4342-9078-edf1d0efcbf2,0,1,0a3325a1-21c4-4997-882f-4ac2edc175f0,0a3325a1-21c4-4997-882f-4ac2edc175f0,0,1,f0620d5a-e1fe-419f-af37-e0f462f97e8d,f0620d5a-e1fe-419f-af37-e0f462f97e8d,0,1,3e2f2ae1-c809-43fc-8276-b0a16a92858c,3e2f2ae1-c809-43fc-8276-b0a16a92858c,0,1,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,0,1,1a7c7427-bead-4655-9dd6-df6e722663c5,1a7c7427-bead-4655-9dd6-df6e722663c5,0,1,3ad08f4a-6202-4099-b6cc-bc116e6731a0,3ad08f4a-6202-4099-b6cc-bc116e6731a0,0,1,fd96c8ab-602a-4735-b168-52b501e80351,fd96c8ab-602a-4735-b168-52b501e80351,0,1,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,0,1,370f0c75-d2c5-4be5-a633-4bcc77998ece,370f0c75-d2c5-4be5-a633-4bcc77998ece,0,1,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,0,1,2139532c-f6cb-4393-936e-cc912e5adca9,2139532c-f6cb-4393-936e-cc912e5adca9,0,1,755c3eca-4956-4a44-9b38-c11dae00b87f,755c3eca-4956-4a44-9b38-c11dae00b87f,0,1,f57c558c-2c94-4b9d-8697-448d0548ab1a,f57c558c-2c94-4b9d-8697-448d0548ab1a,0,1,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,0,1,c32db021-eca1-4b67-aa85-3d6e28c51b53,c32db021-eca1-4b67-aa85-3d6e28c51b53,0,1,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,0,1,02466dcf-02a1-4853-814f-a913a9baba45,02466dcf-02a1-4853-814f-a913a9baba45,0,1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,0,1,62b75eb2-42e1-4484-a77f-b676dd36f3d4,62b75eb2-42e1-4484-a77f-b676dd36f3d4,0,1,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,0,1,856510ee-74f5-44e9-a3c0-1c60cfb7a787,856510ee-74f5-44e9-a3c0-1c60cfb7a787,0,1,28b761c6-c286-4125-a4ed-da602e49950f,28b761c6-c286-4125-a4ed-da602e49950f,0,1,4ac66a22-c736-4e06-a8aa-ef4a71788c65,4ac66a22-c736-4e06-a8aa-ef4a71788c65,0,1,9cfe9281-8840-4077-824d-a2c9cbb0b730,9cfe9281-8840-4077-824d-a2c9cbb0b730,0,1,76389fa9-b9e0-492e-9c93-24b5f3bf094c,76389fa9-b9e0-492e-9c93-24b5f3bf094c,0,1,23e3de37-9315-45e6-bbfd-60aae28c25ae,23e3de37-9315-45e6-bbfd-60aae28c25ae,0,1,a9957f43-8b6f-4d98-a2d8-77b78047494c,a9957f43-8b6f-4d98-a2d8-77b78047494c,0,1,e470e15d-1b06-43cb-a9f9-ba489e2f596f,e470e15d-1b06-43cb-a9f9-ba489e2f596f,0,1,0408002c-9255-43a2-8022-82f02ee0e8f4,0408002c-9255-43a2-8022-82f02ee0e8f4,0,1,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,0,1,1851afd4-5324-45c1-b754-54e65943f945,1851afd4-5324-45c1-b754-54e65943f945,0,1,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,0,1,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,0,1,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0,1,c322dc4a-30f3-4d23-9824-4a01c496408d,c322dc4a-30f3-4d23-9824-4a01c496408d,0,1,dcff004c-1b61-4a19-b977-ea21bf688614,dcff004c-1b61-4a19-b977-ea21bf688614,0,0,0,1,0,0,0,1,0,1,0,1,1,1,1} \ No newline at end of file +{6,1,1,f96691ef-4f36-458a-a90d-a4be7b82ea99,1,14d03b2b-30c1-4406-8262-941500a53afc,"2.1.4.34","Фирма ""1С""","БиблиотекаСтандартныхПодсистем",4483,1,0,a815e3f3-74a6-420e-aaea-9ade6d7f0d00,a815e3f3-74a6-420e-aaea-9ade6d7f0d00,0,1,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,db4a9ccb-9ef5-4b3c-8577-b6fe5db1b62e,0,1,9233322b-dfdb-4c66-91fe-1299292d40a5,9233322b-dfdb-4c66-91fe-1299292d40a5,0,1,0421b67e-ed26-491d-ab98-ec59002ed4ce,0421b67e-ed26-491d-ab98-ec59002ed4ce,0,1,bb47ced2-31f9-4870-8633-20b986e53ccc,bb47ced2-31f9-4870-8633-20b986e53ccc,0,1,7d8acec9-f5a9-411e-921c-446ed0dd3332,7d8acec9-f5a9-411e-921c-446ed0dd3332,0,1,739c01a9-1125-45ef-ab4e-8c73af4eeff0,739c01a9-1125-45ef-ab4e-8c73af4eeff0,0,1,cdbd26b1-9583-46e8-adf7-8cc705639892,cdbd26b1-9583-46e8-adf7-8cc705639892,0,1,c0e38c3e-7088-4e35-9d84-2d0ab9655402,c0e38c3e-7088-4e35-9d84-2d0ab9655402,0,1,1098786f-dd24-4cce-b212-be0cb5f01735,1098786f-dd24-4cce-b212-be0cb5f01735,0,1,3c0037f3-4422-4836-b116-8c72e32bdd55,3c0037f3-4422-4836-b116-8c72e32bdd55,0,1,6f7c6c31-206b-4010-bdad-1ad2e304f154,6f7c6c31-206b-4010-bdad-1ad2e304f154,0,1,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,a8659e53-8c6b-4b0c-9736-fe93a91e4d69,0,1,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,fe9a1d1a-19c0-499f-8e1b-09cadabe882f,0,1,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,c7e984ae-1dbb-4041-b18a-bfd0d63a002f,0,1,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,bb0424b8-dfd1-4a27-bd66-9dea3ffc77c4,0,1,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,a4ac0a50-ee39-4dc1-b84f-eec8fe485f03,0,1,1861ee4f-fd8c-4afa-8441-c074bf51f67e,1861ee4f-fd8c-4afa-8441-c074bf51f67e,0,1,b93b8760-6200-40ee-8bdc-875ba80a6155,b93b8760-6200-40ee-8bdc-875ba80a6155,0,1,e8b248d9-9049-456a-9c7d-7a0462cc67ab,e8b248d9-9049-456a-9c7d-7a0462cc67ab,0,1,d4562287-440d-4462-9de2-7097ccbf3764,d4562287-440d-4462-9de2-7097ccbf3764,0,1,e3faac40-253a-47c3-bb4b-e0014b56daa9,e3faac40-253a-47c3-bb4b-e0014b56daa9,0,1,ec797c75-02c5-4cf5-9dd4-26cd46c99519,ec797c75-02c5-4cf5-9dd4-26cd46c99519,0,1,6fccdf59-fc99-4a2b-a144-fffe438a147c,6fccdf59-fc99-4a2b-a144-fffe438a147c,0,1,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,af8bd73a-d8e8-487d-8f36-d835ab10ea3a,0,1,9e36087a-baa8-4812-956a-6e1ac73aa7e0,9e36087a-baa8-4812-956a-6e1ac73aa7e0,0,1,da9b32e6-5b93-45a6-84b2-238d57541e18,da9b32e6-5b93-45a6-84b2-238d57541e18,0,1,e43d69c8-b284-47da-b236-611bc94a15b6,e43d69c8-b284-47da-b236-611bc94a15b6,0,1,31eeaa05-6c49-41fe-b840-1edbad4ccac7,31eeaa05-6c49-41fe-b840-1edbad4ccac7,0,1,842c8662-8f39-405e-9665-cbdabc116159,842c8662-8f39-405e-9665-cbdabc116159,0,1,fca4b033-02c4-4d61-9e51-87783c3cef1a,fca4b033-02c4-4d61-9e51-87783c3cef1a,0,1,396ef757-d7f6-411f-8c4c-1acb1106a009,396ef757-d7f6-411f-8c4c-1acb1106a009,0,1,cb8da2f3-f8bb-4736-8381-7c153670e3e2,cb8da2f3-f8bb-4736-8381-7c153670e3e2,0,1,9aecf4f5-46ed-4d1c-a584-cd028e467895,9aecf4f5-46ed-4d1c-a584-cd028e467895,0,1,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,a1c379be-43d3-4e02-83bb-d2e7de2d4ae3,0,1,a1f10624-22e9-4a04-b370-fd085bdd0f67,a1f10624-22e9-4a04-b370-fd085bdd0f67,0,1,3323ca68-1382-4710-a933-23fc56588935,3323ca68-1382-4710-a933-23fc56588935,0,1,d6b12775-3255-42b8-88b2-62684f873e7d,d6b12775-3255-42b8-88b2-62684f873e7d,0,1,cc23d903-ccc5-42f4-862f-5e7278c4e346,cc23d903-ccc5-42f4-862f-5e7278c4e346,0,1,98f033e0-fa40-46e0-b51a-87a066749a35,98f033e0-fa40-46e0-b51a-87a066749a35,0,1,c53df2d1-4564-47a7-b66e-6a23ba28270e,c53df2d1-4564-47a7-b66e-6a23ba28270e,0,1,e8b4cb2d-1180-4101-954a-4cb5464f198c,e8b4cb2d-1180-4101-954a-4cb5464f198c,0,1,f765c4ba-c677-42ac-8d0c-43bb485405b9,f765c4ba-c677-42ac-8d0c-43bb485405b9,0,1,83192b3e-e7a9-4595-8887-24cda84457a9,83192b3e-e7a9-4595-8887-24cda84457a9,0,1,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,2fd1287d-d96d-4480-baf7-8815ae5ffbfb,0,1,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,c8a4c5da-bc88-4f6e-9787-1c22c2f41be7,0,1,08eeb8f1-944f-4450-83f6-ef20aaab7d86,08eeb8f1-944f-4450-83f6-ef20aaab7d86,0,1,ac4742ed-1bc2-4a97-8c1a-bcdfbc20db82,ac4742ed-1bc2-4a97-8c1a-bcdfbc20db82,0,1,cbfef589-e7fb-4cbc-9103-e234861879ac,cbfef589-e7fb-4cbc-9103-e234861879ac,0,1,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,8d77dd4a-e646-4105-8dcf-8ce8fc3da0b4,0,1,52176b25-0232-4326-9548-495db32b2660,52176b25-0232-4326-9548-495db32b2660,0,1,2fd12dba-5311-4f31-949c-f6b15decc0cc,2fd12dba-5311-4f31-949c-f6b15decc0cc,0,1,d7cf3981-cf63-4a21-868b-8175a7704a8f,d7cf3981-cf63-4a21-868b-8175a7704a8f,0,1,35895e12-52b6-49a1-acdf-6d828a948af0,35895e12-52b6-49a1-acdf-6d828a948af0,0,1,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0ae93712-74e8-41c7-8f2d-4dfc8983697d,0,1,060b6f18-538c-4ea1-9748-00efe0b1ab57,060b6f18-538c-4ea1-9748-00efe0b1ab57,0,1,307b6821-fd82-4a1c-9fdb-a26293d4f713,307b6821-fd82-4a1c-9fdb-a26293d4f713,0,1,a952960b-be1b-4ec4-bd76-80915065a60b,a952960b-be1b-4ec4-bd76-80915065a60b,0,1,64f548c8-c1fc-434e-b3ee-5be367ead1db,64f548c8-c1fc-434e-b3ee-5be367ead1db,0,1,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,9e4dfdfa-ec05-4c9e-89bd-fc24f60f2678,0,1,cd592a5d-b184-4558-8a28-7079ccf28b89,cd592a5d-b184-4558-8a28-7079ccf28b89,0,1,2009c673-c1a5-45fc-8da2-a36c435085a6,2009c673-c1a5-45fc-8da2-a36c435085a6,0,1,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,ab7e5f9a-1dfe-4165-a540-21f45ae1d94d,0,1,5d16e042-3889-4851-86f1-bc43bf06ee88,5d16e042-3889-4851-86f1-bc43bf06ee88,0,1,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,e5a0e7c2-6186-43a3-a1c5-1f16990602a4,0,1,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,3d47838b-e1aa-4acb-96bf-6de2f9be8bdb,0,1,e39ecc8a-ce81-483d-85de-b0488c8b7749,e39ecc8a-ce81-483d-85de-b0488c8b7749,0,1,1514eaff-faea-4d82-9465-d0d5292bb31d,1514eaff-faea-4d82-9465-d0d5292bb31d,0,1,6d39c6df-8cd4-47ad-9125-252b37d94575,6d39c6df-8cd4-47ad-9125-252b37d94575,0,1,739bd762-01fc-41a8-87df-844eb201962f,739bd762-01fc-41a8-87df-844eb201962f,0,1,7ef99dd3-d799-4f53-ab56-5528b4c9d782,7ef99dd3-d799-4f53-ab56-5528b4c9d782,0,1,ad7c6165-2e44-4808-a77a-526882cf5dea,ad7c6165-2e44-4808-a77a-526882cf5dea,0,1,b7e435a9-6107-4d02-a949-cff793462e31,b7e435a9-6107-4d02-a949-cff793462e31,0,1,f0cda8f5-56f5-423b-8c1c-7113433ebf25,f0cda8f5-56f5-423b-8c1c-7113433ebf25,0,1,1a220e88-428b-4d85-926d-e572bf19997c,1a220e88-428b-4d85-926d-e572bf19997c,0,1,ca0d938b-244e-421f-9fa4-320784b9f416,ca0d938b-244e-421f-9fa4-320784b9f416,0,1,a108b11d-a489-4684-84ea-d5377c7394de,a108b11d-a489-4684-84ea-d5377c7394de,0,1,289a2d84-2477-4177-a6ef-507e2cadeea2,289a2d84-2477-4177-a6ef-507e2cadeea2,0,1,757b547b-b79c-459a-a64a-eef19a09a38f,757b547b-b79c-459a-a64a-eef19a09a38f,0,1,61cd6eab-6bab-4382-986e-4c7fc44f369b,61cd6eab-6bab-4382-986e-4c7fc44f369b,0,1,cbbe7903-842c-470e-a2d6-7928df8f13e9,cbbe7903-842c-470e-a2d6-7928df8f13e9,0,1,e02597c4-bf45-4bb6-931d-62d2244f6c58,e02597c4-bf45-4bb6-931d-62d2244f6c58,0,1,42544966-445d-41b8-b6a0-a52c64758232,42544966-445d-41b8-b6a0-a52c64758232,0,1,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,a92d8a5c-b595-4c6c-9f1d-5e85b1c996b4,0,1,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,bd68dd13-66bb-40ed-8f4b-0767b7063ffd,0,1,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,e07ac651-07b9-4664-95e8-f3f5a51ea6c8,0,1,0c44fdea-7b81-45be-87f5-d64456a9d379,0c44fdea-7b81-45be-87f5-d64456a9d379,0,1,d09d6f21-cdd0-485e-bd2c-92092a1aefef,d09d6f21-cdd0-485e-bd2c-92092a1aefef,0,1,2fc92784-d7b0-4209-ba06-e54bed2f160f,2fc92784-d7b0-4209-ba06-e54bed2f160f,0,1,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,e5b8ea5c-1d08-4f0a-a8f6-358b41e2e9f2,0,1,a4e4c91c-fd95-4369-98e3-51ffba79937b,a4e4c91c-fd95-4369-98e3-51ffba79937b,0,1,0d0ada8a-09bb-4634-bf50-199f3779dad5,0d0ada8a-09bb-4634-bf50-199f3779dad5,0,1,d343d4e4-d07f-48c3-9db1-774b0d6c1134,d343d4e4-d07f-48c3-9db1-774b0d6c1134,0,1,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,14ef2331-6d9b-4cf1-90f3-7d4ac410439d,0,1,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,04ab13b1-ffc2-47f5-aa0d-5850dcbd4a62,0,1,968588bb-ee60-4399-955a-3ec4228d3c40,968588bb-ee60-4399-955a-3ec4228d3c40,0,1,23dbb528-7ea8-44ae-a1f2-b7608118666e,23dbb528-7ea8-44ae-a1f2-b7608118666e,0,1,b9627855-6773-4a59-b7d3-f9e2e565cd9e,b9627855-6773-4a59-b7d3-f9e2e565cd9e,0,1,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,ad87bd29-0ad1-4da4-ac62-38e714e0cb9f,0,1,283ce432-3553-4de9-94a2-ca9a590437f5,283ce432-3553-4de9-94a2-ca9a590437f5,0,1,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,7102d4fa-92f2-4fba-ad09-a33dbc71bef2,0,1,34b0e268-497d-44d4-b822-84909d0685aa,34b0e268-497d-44d4-b822-84909d0685aa,0,1,8961a859-2203-4678-ae1f-63e2474a787a,8961a859-2203-4678-ae1f-63e2474a787a,0,1,fe63db47-3ece-4518-b6a2-0b6499f60a61,fe63db47-3ece-4518-b6a2-0b6499f60a61,0,1,654523be-93d9-4faa-9a35-ce2fede13820,654523be-93d9-4faa-9a35-ce2fede13820,0,1,671afc3e-7589-49d8-95a5-1cf195c3b2f8,671afc3e-7589-49d8-95a5-1cf195c3b2f8,0,1,2c8e45b8-7d80-4137-85db-66cd1db94526,2c8e45b8-7d80-4137-85db-66cd1db94526,0,1,47accdc7-8fa0-4996-9305-c42b6ca12df9,47accdc7-8fa0-4996-9305-c42b6ca12df9,0,1,5abc496c-5745-4220-9fdc-bac092717871,5abc496c-5745-4220-9fdc-bac092717871,0,1,7df36398-7752-4f51-9978-1bcb4bcdd062,7df36398-7752-4f51-9978-1bcb4bcdd062,0,1,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,9fd55b7f-209b-4b74-99d6-965b8f6f2df9,0,1,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,f818fde9-1b06-4507-a69f-4dcb0ce8cd7a,0,1,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,a6690ef1-b16a-4d58-bc31-a8089b2c00d8,0,1,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,316f94ec-81ed-4b5c-aa9d-98d2cfe1c641,0,1,f4885af5-6ed6-40e8-81a5-0e9537f943d7,f4885af5-6ed6-40e8-81a5-0e9537f943d7,0,1,87472d14-0d8c-4813-8a3e-2721bbb26811,87472d14-0d8c-4813-8a3e-2721bbb26811,0,1,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,44cf6d0a-0a5b-4ca1-b91e-af61f40fb825,0,1,e8faa1a9-807a-4916-b3c5-76ba2199754c,e8faa1a9-807a-4916-b3c5-76ba2199754c,0,1,99b5c632-61fe-41f5-ac00-ea530633bf28,99b5c632-61fe-41f5-ac00-ea530633bf28,0,1,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,a3c9c4e7-d36a-4db1-bd95-a50886c4be60,0,1,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,4c53f94e-d7e8-457c-b337-59d3b3c5bf24,0,1,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,bd6d7dcd-421c-402e-b6b8-f6ce6b18c140,0,1,485911f7-a964-450d-82da-cab020836eb2,485911f7-a964-450d-82da-cab020836eb2,0,1,cedd0b47-07cb-4dae-86b5-31d396b693c7,cedd0b47-07cb-4dae-86b5-31d396b693c7,0,1,c08391e1-c4e3-42aa-8738-061031d0cb75,c08391e1-c4e3-42aa-8738-061031d0cb75,0,1,bf4c6723-e586-4643-9f03-9e672afea26f,bf4c6723-e586-4643-9f03-9e672afea26f,0,1,eb226ca1-6478-4d38-b1ee-b7ec38525249,eb226ca1-6478-4d38-b1ee-b7ec38525249,0,1,23204b0b-bf77-4f7c-9945-e73ad924ebb4,23204b0b-bf77-4f7c-9945-e73ad924ebb4,0,1,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,dd9d3586-775b-4d5b-ab2d-78db0870ecdd,0,1,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,44c610c3-9c0b-4bf0-95d6-f17100d3e98d,0,1,a54f2d41-a05e-4878-80c6-81ca2899fa4c,a54f2d41-a05e-4878-80c6-81ca2899fa4c,0,1,23a898d9-5bcb-4744-ab6c-97b17dc98f20,23a898d9-5bcb-4744-ab6c-97b17dc98f20,0,1,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,50a04251-ac9c-4a21-a37f-ebc9ac3ef233,0,1,f8f56806-ed7e-4059-a0c8-940538c14c98,f8f56806-ed7e-4059-a0c8-940538c14c98,0,1,9ff9f92b-c509-48da-82ce-15b524a895d6,9ff9f92b-c509-48da-82ce-15b524a895d6,0,1,c8bf96c8-f359-4940-8e87-3d190371d6d3,c8bf96c8-f359-4940-8e87-3d190371d6d3,0,1,477f0b81-0eb1-4de1-8cb5-38f1e0823947,477f0b81-0eb1-4de1-8cb5-38f1e0823947,0,1,d914eaa9-ce85-4df7-a545-2d411ef915b0,d914eaa9-ce85-4df7-a545-2d411ef915b0,0,1,41881344-82b7-4904-9ab8-0207d9bcd0a9,41881344-82b7-4904-9ab8-0207d9bcd0a9,0,1,21032fa5-9426-40bd-91e4-ace1e4ceb013,21032fa5-9426-40bd-91e4-ace1e4ceb013,0,1,17d23818-d865-4df6-a5d3-aa21b0287d0c,17d23818-d865-4df6-a5d3-aa21b0287d0c,0,1,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,ddfe5401-e136-4f20-aa65-aeb42a61a1f0,0,1,27a80757-c0fd-40c7-ad24-4c819c1ba72b,27a80757-c0fd-40c7-ad24-4c819c1ba72b,0,1,7fce9e49-e558-4760-9d95-dde6ac6c1e78,7fce9e49-e558-4760-9d95-dde6ac6c1e78,0,1,e5aba4a3-6056-4ef3-827c-d74283175393,e5aba4a3-6056-4ef3-827c-d74283175393,0,1,63039e62-7314-42ff-bdc6-c251f38b3827,63039e62-7314-42ff-bdc6-c251f38b3827,0,1,8a4b7aab-b602-4581-8fa4-fab66791f701,8a4b7aab-b602-4581-8fa4-fab66791f701,0,1,7c92c579-4651-4fe3-90dc-6c9b594b76f0,7c92c579-4651-4fe3-90dc-6c9b594b76f0,0,1,a2be2d7a-cca0-460f-a915-dadfb9cd588b,a2be2d7a-cca0-460f-a915-dadfb9cd588b,0,1,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,35bac3e3-1329-4aa6-866f-f6fcaed8cd6e,0,1,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,ed53b24d-5338-4ae1-8659-0ea6450dc7bb,0,1,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,6add2712-48e8-4b22-a7bb-7d8c808ac5fc,0,1,1f4408f5-460e-431b-9842-bc6875ccf0ae,1f4408f5-460e-431b-9842-bc6875ccf0ae,0,1,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,ec09aa2d-758f-4ae8-96b7-0f05b8187dda,0,1,7bfc6163-a62f-45e8-9112-40a5d675ba4a,7bfc6163-a62f-45e8-9112-40a5d675ba4a,0,1,542ff510-0245-4a08-80ac-a9941c66ae93,542ff510-0245-4a08-80ac-a9941c66ae93,0,1,03297623-eaa2-4db0-bf1b-ce2076faf20a,03297623-eaa2-4db0-bf1b-ce2076faf20a,0,1,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,3c6ef64e-c9bd-4cba-98a4-ffcc5b93b6da,0,1,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,700c2edd-c457-47b7-a7d3-5fb3d9078d1f,0,1,82a3802c-b6d6-4511-bd8b-eeec003afa33,82a3802c-b6d6-4511-bd8b-eeec003afa33,0,1,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,8b59dec8-12b8-455f-8dfc-7c3f03b4ffa5,0,1,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,b5eb2e12-c39c-44fa-b940-09b4dcd2817c,0,1,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,5d5ffb56-e18b-4831-94f0-d7a76c2eee6f,0,1,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,590f29f4-2db1-47c6-83a0-f44d4bbe6e3e,0,1,a755cb43-492d-4069-9b6a-29b92ebb5b0e,a755cb43-492d-4069-9b6a-29b92ebb5b0e,0,1,86d09107-f511-4148-b5d9-d97e92addfde,86d09107-f511-4148-b5d9-d97e92addfde,0,1,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,c14c1f91-f4b9-44d6-b560-8dcdb5faf5f9,0,1,55b78834-3d90-4858-a6f7-e0368b1d8c41,55b78834-3d90-4858-a6f7-e0368b1d8c41,0,1,059b9a75-f53a-4518-a48a-afc72ab9ee36,059b9a75-f53a-4518-a48a-afc72ab9ee36,0,1,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,bc0dcb68-bfb8-49f4-8eb4-2ca953d852bd,0,1,31e95872-97c7-49e3-bd1b-8df4de07014d,31e95872-97c7-49e3-bd1b-8df4de07014d,0,1,9c7f2728-10a9-463b-b04c-01ee26f3d4c5,9c7f2728-10a9-463b-b04c-01ee26f3d4c5,0,1,8b9be02b-cd1f-4231-a895-6c9be26348c2,8b9be02b-cd1f-4231-a895-6c9be26348c2,0,1,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,c52c4b8c-6be7-460a-9b54-6cdf64e3f8fe,0,1,fa4f0b33-5253-4a5f-8121-feae3e1968a6,fa4f0b33-5253-4a5f-8121-feae3e1968a6,0,1,e0d21be2-91dc-4a04-9078-49420ddddcd5,e0d21be2-91dc-4a04-9078-49420ddddcd5,0,1,56c97764-7dba-42e0-8ba0-82712aca20e9,56c97764-7dba-42e0-8ba0-82712aca20e9,0,1,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,03ad9b3d-8f3a-4482-a777-f6a3b3d953d6,0,1,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,3f05dcf9-be52-42e1-b5ff-dea14d97a26f,0,1,ea868745-71fc-483c-aa6e-f242c06c673f,ea868745-71fc-483c-aa6e-f242c06c673f,0,1,7f3c6269-ea41-492f-87b7-7eaaf712762e,7f3c6269-ea41-492f-87b7-7eaaf712762e,0,1,a5d037b0-c666-4179-9d6a-5f48c4a126a8,a5d037b0-c666-4179-9d6a-5f48c4a126a8,0,1,f0850411-4dee-4f1d-baec-7d6c96b10637,f0850411-4dee-4f1d-baec-7d6c96b10637,0,1,12f95031-b81f-4802-b2f3-6f70def90db0,12f95031-b81f-4802-b2f3-6f70def90db0,0,1,5732112a-f31d-41cd-9a7f-312a27395502,5732112a-f31d-41cd-9a7f-312a27395502,0,1,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,bbf8342b-24f0-4d11-bb5a-4c89d5ea7766,0,1,3befd4a6-8f77-4159-9a99-09202d5c83c2,3befd4a6-8f77-4159-9a99-09202d5c83c2,0,1,f646835e-61eb-4ebd-811e-dac5e70bd1b4,f646835e-61eb-4ebd-811e-dac5e70bd1b4,0,1,61b49c4c-3021-4868-834a-9137476ae169,61b49c4c-3021-4868-834a-9137476ae169,0,1,58911911-5192-45fe-87cf-c4a222a521a1,58911911-5192-45fe-87cf-c4a222a521a1,0,1,70067937-9f27-4442-b87b-6c4576ce1b78,70067937-9f27-4442-b87b-6c4576ce1b78,0,1,115d5d06-a2fc-453e-aab5-c869b6d5850b,115d5d06-a2fc-453e-aab5-c869b6d5850b,0,1,d33ca006-d81d-4ef8-8503-7878e81c599f,d33ca006-d81d-4ef8-8503-7878e81c599f,0,1,123bb339-b95e-44c3-b1e9-482dcaa6f297,123bb339-b95e-44c3-b1e9-482dcaa6f297,0,1,f4119605-beb3-46b6-b372-ecdb74f10a33,f4119605-beb3-46b6-b372-ecdb74f10a33,0,1,d2a2e332-a52c-4277-bd19-5ea8ef198469,d2a2e332-a52c-4277-bd19-5ea8ef198469,0,1,e440c594-14bb-4a6e-af53-a4519c7d5548,e440c594-14bb-4a6e-af53-a4519c7d5548,0,1,4165bdaa-8e27-40de-bcdc-0379c34e8868,4165bdaa-8e27-40de-bcdc-0379c34e8868,0,1,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,a9a3fde2-99d5-4ebf-88b1-eccd9d74276e,0,1,e606f8eb-952a-4abb-b1ae-4211204bed84,e606f8eb-952a-4abb-b1ae-4211204bed84,0,1,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,7ddc3d13-fa6f-4fa9-870e-a34d5b2d9582,0,1,1c2ad932-150a-4b15-b958-62eaa8a1eebc,1c2ad932-150a-4b15-b958-62eaa8a1eebc,0,1,b4deaebf-2c21-47d7-9436-10c94c94667c,b4deaebf-2c21-47d7-9436-10c94c94667c,0,1,f8295f29-2533-4013-981b-240f017d9f7c,f8295f29-2533-4013-981b-240f017d9f7c,0,1,538b316b-3876-4da6-8b97-ad8ef59de17d,538b316b-3876-4da6-8b97-ad8ef59de17d,0,1,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,f70f09fd-59e1-47b6-aaf3-cb4cc4ceaa7e,0,1,ebc5f182-482b-4dec-9961-ce3a448abd0e,ebc5f182-482b-4dec-9961-ce3a448abd0e,0,1,83e618f5-1bf4-474a-9d65-389f1e4b16c3,83e618f5-1bf4-474a-9d65-389f1e4b16c3,0,1,1357512e-3ed3-455d-bc91-81db3b92f9fe,1357512e-3ed3-455d-bc91-81db3b92f9fe,0,1,82223d0f-41d9-45a6-9612-ae4d8408fa1b,82223d0f-41d9-45a6-9612-ae4d8408fa1b,0,1,3ee058a9-aff5-46f0-8928-8a417e7800d4,3ee058a9-aff5-46f0-8928-8a417e7800d4,0,1,c9a03f19-42bb-4e07-8ce8-1b954e431ada,c9a03f19-42bb-4e07-8ce8-1b954e431ada,0,1,ed4edc6f-048a-40d5-8f61-989895c95cf3,ed4edc6f-048a-40d5-8f61-989895c95cf3,0,1,dc17d8b6-d277-43eb-8823-71d440ae1e90,dc17d8b6-d277-43eb-8823-71d440ae1e90,0,1,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,c5b8bf21-5c8f-4e5b-8b85-bfac387ce99a,0,1,c2768e31-9e61-4d8d-838d-90b2e2683148,c2768e31-9e61-4d8d-838d-90b2e2683148,0,1,93c347d8-66cb-406c-9ee6-b1962482893f,93c347d8-66cb-406c-9ee6-b1962482893f,0,1,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,d9a6706e-3dcd-4aec-b9d1-542330ba6e2e,0,1,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,7cbf0398-2bc7-4f40-9a9e-af4135c6a2d2,0,1,cc770616-f6f6-4054-876c-f319b1f8c6cf,cc770616-f6f6-4054-876c-f319b1f8c6cf,0,1,8486e623-1a54-4ad9-ab44-591b6a559bc3,8486e623-1a54-4ad9-ab44-591b6a559bc3,0,1,dce82d28-9a7b-4d4c-af13-90f459cf4af2,dce82d28-9a7b-4d4c-af13-90f459cf4af2,0,1,cb9f2231-49bb-4b14-a124-8996628afead,cb9f2231-49bb-4b14-a124-8996628afead,0,1,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,dc1b8bce-49c5-4fd2-a597-27f1fbc98648,0,1,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,ac4c6275-3c23-4a1f-b19e-c674fd685e8f,0,1,896de79f-3c34-4436-a4e2-4dd4f45c3e20,896de79f-3c34-4436-a4e2-4dd4f45c3e20,0,1,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,25d118f0-bfb7-4f08-84b1-0511b0fc92e8,0,1,e6c42b5d-57fd-42ce-a968-653620e797f6,e6c42b5d-57fd-42ce-a968-653620e797f6,0,1,724fb328-fec6-4afe-bc99-0ff0951b184b,724fb328-fec6-4afe-bc99-0ff0951b184b,0,1,f6259a3b-98f5-4649-8fd0-da0a0285f375,f6259a3b-98f5-4649-8fd0-da0a0285f375,0,1,c565bf25-c55e-4324-851a-cec497f5114a,c565bf25-c55e-4324-851a-cec497f5114a,0,1,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,b50994d0-23f9-4bf4-93d2-cf9bcffa6fc9,0,1,8943233f-5c9a-4e6b-b1c2-3bbb94b6c4a7,8943233f-5c9a-4e6b-b1c2-3bbb94b6c4a7,0,1,5b0e250c-4d2d-4e37-ade1-593854610d3f,5b0e250c-4d2d-4e37-ade1-593854610d3f,0,1,148f63d5-23ad-4824-a24c-14d5a54c62d3,148f63d5-23ad-4824-a24c-14d5a54c62d3,0,1,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,d6cdd049-b31b-48aa-a2aa-a24b0bdf3337,0,1,041daf91-e5b3-471d-934d-55229f8a81d6,041daf91-e5b3-471d-934d-55229f8a81d6,0,1,eabfa8b7-fb65-43dd-9308-787f7cce88c9,eabfa8b7-fb65-43dd-9308-787f7cce88c9,0,1,30213cef-b2bc-4e6c-8094-74a61f28b2ed,30213cef-b2bc-4e6c-8094-74a61f28b2ed,0,1,8c72f824-b667-4d74-84aa-30eccfbbd2f0,8c72f824-b667-4d74-84aa-30eccfbbd2f0,0,1,ec7b492d-5d38-4f31-90e0-577ad181514e,ec7b492d-5d38-4f31-90e0-577ad181514e,0,1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,da0686ce-25e2-4d2c-b152-283f5e4cf4b1,0,1,2889ef9d-5091-4de3-bbcc-62e307ab7cad,2889ef9d-5091-4de3-bbcc-62e307ab7cad,0,1,4807629d-8421-4bd9-beb4-5b2940197958,4807629d-8421-4bd9-beb4-5b2940197958,0,1,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,cd6f96c7-33ee-42b1-bb81-ce7d9652337c,0,1,766c7fb5-727e-4975-9ea1-3b0df4739620,766c7fb5-727e-4975-9ea1-3b0df4739620,0,1,ba59393c-c499-4999-91d4-b9e34d94db0e,ba59393c-c499-4999-91d4-b9e34d94db0e,0,1,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,fcf6a4cd-d0c9-4f83-b9b0-514baed3ccb9,0,1,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,3f92cffe-b4ea-45e3-b2b9-a9e316405a8c,0,1,e70a6eab-791f-4c70-bb92-f069c7486d1b,e70a6eab-791f-4c70-bb92-f069c7486d1b,0,1,f74f97b7-4cbf-4124-b441-d8bb5d9b1634,f74f97b7-4cbf-4124-b441-d8bb5d9b1634,0,1,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,a3a9a48b-f241-45b2-b93b-d34bba0a8a66,0,1,f58bffe7-4a02-4c4e-bfed-7895177a400c,f58bffe7-4a02-4c4e-bfed-7895177a400c,0,1,fe285122-2257-4fb2-ab7e-1683c31db1c6,fe285122-2257-4fb2-ab7e-1683c31db1c6,0,1,0facc6eb-a178-45ee-a6bc-4bf085d80453,0facc6eb-a178-45ee-a6bc-4bf085d80453,0,1,f74eef36-9441-4b6f-b21c-de9643832f9f,f74eef36-9441-4b6f-b21c-de9643832f9f,0,1,ac2e5217-aaeb-4b6f-b063-538c84f2da06,ac2e5217-aaeb-4b6f-b063-538c84f2da06,0,1,b5e73fbe-499c-4666-a482-0ef399c97c1e,b5e73fbe-499c-4666-a482-0ef399c97c1e,0,1,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,a0811e0a-91b6-4c4b-a6d2-a57b9185983b,0,1,4ac77dea-3c2b-4566-8857-ba99f7b025c9,4ac77dea-3c2b-4566-8857-ba99f7b025c9,0,1,09fec67d-6e45-428c-b858-9ae20979676c,09fec67d-6e45-428c-b858-9ae20979676c,0,1,58ffc4d9-d711-4b68-905c-d2ac4f78b547,58ffc4d9-d711-4b68-905c-d2ac4f78b547,0,1,94ab750f-46b4-427c-a7f2-4e94fb9b0678,94ab750f-46b4-427c-a7f2-4e94fb9b0678,0,1,397d9926-31a3-4c03-acb7-74478f9863e1,397d9926-31a3-4c03-acb7-74478f9863e1,0,1,9ad979d3-74ad-4d90-b279-c3a2bea36ea7,9ad979d3-74ad-4d90-b279-c3a2bea36ea7,0,1,264dd12a-b4c5-44bf-b3c0-ef9225505f76,264dd12a-b4c5-44bf-b3c0-ef9225505f76,0,1,90b8fdf3-3e42-442f-a002-6a28ad0edc99,90b8fdf3-3e42-442f-a002-6a28ad0edc99,0,1,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,92f35bea-50b8-4a1c-8fb2-a8c7df7a50db,0,1,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,82ba8c13-6567-4f0c-be0e-0884ce19bbcc,0,1,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,a3e9afe9-1587-47c7-8e7b-b8df6b3a2664,0,1,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0e31d69a-8d2c-4ad0-b3ac-93ba5afcefdf,0,1,89574884-bce2-406d-9961-d1656b306eb8,89574884-bce2-406d-9961-d1656b306eb8,0,1,3de28e34-3c1e-4e7f-a720-3418c8c9c496,3de28e34-3c1e-4e7f-a720-3418c8c9c496,0,1,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,7f2d69b4-2f87-40f4-a78c-fe4cabc2a502,0,1,dacb236e-42a5-47e5-b239-ff18ae48e21e,dacb236e-42a5-47e5-b239-ff18ae48e21e,0,1,5cdb6e71-fd20-461a-83db-d59ccdb5b366,5cdb6e71-fd20-461a-83db-d59ccdb5b366,0,1,388b8576-9ba4-460f-b71b-3d644663656a,388b8576-9ba4-460f-b71b-3d644663656a,0,1,d4d38827-fce6-4c39-a4b4-51c7d7edc475,d4d38827-fce6-4c39-a4b4-51c7d7edc475,0,1,2d40609d-b56f-4082-9a6f-8216817ebd24,2d40609d-b56f-4082-9a6f-8216817ebd24,0,1,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,b238b4b2-beaf-4b5d-a728-8aebac3bacb5,0,1,732b19c8-4f22-4748-a796-71538e46fc2f,732b19c8-4f22-4748-a796-71538e46fc2f,0,1,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,9fb2169b-fc77-4a3f-a1d8-b939079d9d9d,0,1,3fe0ef25-ce56-435d-b343-eadfec91a636,3fe0ef25-ce56-435d-b343-eadfec91a636,0,1,6cb35d15-936f-4ca8-a196-8a9a75ce54dd,6cb35d15-936f-4ca8-a196-8a9a75ce54dd,0,1,74f02619-7fa8-4c6d-81d6-230156ee45f4,74f02619-7fa8-4c6d-81d6-230156ee45f4,0,1,a103cca0-8243-40e9-bcdd-97a1cc8a3943,a103cca0-8243-40e9-bcdd-97a1cc8a3943,0,1,80fd89d7-160d-4528-9aa0-05b8dac64b4c,80fd89d7-160d-4528-9aa0-05b8dac64b4c,0,1,dd773b86-30fa-4e4a-9391-b4e12488a44e,dd773b86-30fa-4e4a-9391-b4e12488a44e,0,1,d92afab1-81df-4be8-8759-6964da6768bf,d92afab1-81df-4be8-8759-6964da6768bf,0,1,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,4eb24fcd-85f6-4fa6-bc9f-baef3861664e,0,1,da551cf6-4f86-4e37-8967-a84c80e1fb13,da551cf6-4f86-4e37-8967-a84c80e1fb13,0,1,5fb2c120-fd14-4e78-a35f-c8e9478b3235,5fb2c120-fd14-4e78-a35f-c8e9478b3235,0,1,9d514ce1-f9bd-4018-8107-545cdd372fbd,9d514ce1-f9bd-4018-8107-545cdd372fbd,0,1,fe6b732f-3a33-460f-9686-cffdd5f7d99b,fe6b732f-3a33-460f-9686-cffdd5f7d99b,0,1,06250212-aeb1-4cb8-8785-ea71b1dad848,06250212-aeb1-4cb8-8785-ea71b1dad848,0,1,0c068a61-e5e6-4475-96fa-b7c1d825da42,0c068a61-e5e6-4475-96fa-b7c1d825da42,0,1,1047e34d-397a-42cc-80e6-1be755bd6462,1047e34d-397a-42cc-80e6-1be755bd6462,0,1,1cd473c3-4e36-47a9-b466-73d86ec244b0,1cd473c3-4e36-47a9-b466-73d86ec244b0,0,1,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,c3e31dfd-b79b-49b9-9dc0-e2439bfe5ab7,0,1,b406b5f9-eeaf-43a0-8930-067554d783c9,b406b5f9-eeaf-43a0-8930-067554d783c9,0,1,47718840-2939-4e30-a72c-a20c88ac4c17,47718840-2939-4e30-a72c-a20c88ac4c17,0,1,58a38994-9fe4-4783-967d-79d1141b90f3,58a38994-9fe4-4783-967d-79d1141b90f3,0,1,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,6e23a4b2-f53c-41ea-9fef-8f4561b8e0cc,0,1,7c2e35a8-d05d-4e52-baee-a1e13585c502,7c2e35a8-d05d-4e52-baee-a1e13585c502,0,1,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,5d8b60e5-d407-4d8a-b4fb-e26a36ab8180,0,1,f551f78a-2f05-4932-ac33-cfa1b077f46f,f551f78a-2f05-4932-ac33-cfa1b077f46f,0,1,a96091a7-d3a5-4893-8440-f360231bf468,a96091a7-d3a5-4893-8440-f360231bf468,0,1,9ce6eef0-5280-4374-9714-474ac571e4e2,9ce6eef0-5280-4374-9714-474ac571e4e2,0,1,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,aeb54e92-a1d0-46a1-b4cb-87d3c29fa30b,0,1,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,8395bfb2-3cf4-4bec-b19b-eb6dd3aa7a39,0,1,eca79a64-3d00-4178-b4eb-cf5468622c96,eca79a64-3d00-4178-b4eb-cf5468622c96,0,1,6dc4c216-e49f-4833-b45f-6060b67995ef,6dc4c216-e49f-4833-b45f-6060b67995ef,0,1,4655fa12-9169-4d08-bdab-9b3174d0b223,4655fa12-9169-4d08-bdab-9b3174d0b223,0,1,6c07ddfb-8823-4953-9905-9550b847dc3f,6c07ddfb-8823-4953-9905-9550b847dc3f,0,1,2362a8d5-dca2-4527-acc0-63782377f28a,2362a8d5-dca2-4527-acc0-63782377f28a,0,1,dfd6d85c-a734-4458-83b0-87b5949f9c68,dfd6d85c-a734-4458-83b0-87b5949f9c68,0,1,f3d3d91b-67a6-4f8c-a6d9-c8b80d1dd43f,f3d3d91b-67a6-4f8c-a6d9-c8b80d1dd43f,0,1,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,4e3b0b9f-45b7-48a8-86c6-cc14a921aa78,0,1,ba5574bd-53ca-413f-a245-272f468a80fb,ba5574bd-53ca-413f-a245-272f468a80fb,0,1,79b6ecf5-8a6b-44a4-9587-5f8764463228,79b6ecf5-8a6b-44a4-9587-5f8764463228,0,1,cd49148c-e385-4b75-a758-a93196e73dba,cd49148c-e385-4b75-a758-a93196e73dba,0,1,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,6cb136cd-dc5c-4d85-8a0d-70b9f8bf70d5,0,1,300ecdd6-144f-48c8-9fd4-6166f1de1047,300ecdd6-144f-48c8-9fd4-6166f1de1047,0,1,b6bbfb59-8249-47af-9394-be262f118811,b6bbfb59-8249-47af-9394-be262f118811,0,1,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,15dab650-f7ed-42bc-8ca3-c104c3e68ce4,0,1,fb63d488-fb91-4d08-8f8c-f4836538216f,fb63d488-fb91-4d08-8f8c-f4836538216f,0,1,b8be6c09-6880-45d3-a2d1-06ad72d069c9,b8be6c09-6880-45d3-a2d1-06ad72d069c9,0,1,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,3c1b10c7-3667-43f0-ac03-8cdaa84cb177,0,1,148dd521-8754-451b-803b-cbee7c3d3965,148dd521-8754-451b-803b-cbee7c3d3965,0,1,38bc48c7-3938-47be-be3f-844f19561301,38bc48c7-3938-47be-be3f-844f19561301,0,1,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,4bdd09d5-6bc9-421f-99f0-ae905340f0d4,0,1,147038fb-6154-41f3-aad6-547db27d1e43,147038fb-6154-41f3-aad6-547db27d1e43,0,1,832fa9d3-deab-4c57-b6e2-dee5d24d6100,832fa9d3-deab-4c57-b6e2-dee5d24d6100,0,1,dd4270ef-6b4c-491e-8871-959dbec14c53,dd4270ef-6b4c-491e-8871-959dbec14c53,0,1,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,c2b115d3-04f8-43c8-aed9-c61280b8cc3b,0,1,c1ea0b1b-da19-4ca5-8e93-b05a194c2829,c1ea0b1b-da19-4ca5-8e93-b05a194c2829,0,1,8ccd9be8-ef26-49b9-8cee-03ae4e500386,8ccd9be8-ef26-49b9-8cee-03ae4e500386,0,1,ddca925c-fdcd-40ce-a504-4fca1758de3f,ddca925c-fdcd-40ce-a504-4fca1758de3f,0,1,f64de21f-5a7c-4a1a-a929-07fc53049f6c,f64de21f-5a7c-4a1a-a929-07fc53049f6c,0,1,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,470cdf43-07f4-46d5-aab2-d41f1e5da3cd,0,1,ea653eca-f96a-447d-8b09-7a7cb6929ed6,ea653eca-f96a-447d-8b09-7a7cb6929ed6,0,1,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,ae52e48c-20ec-43cd-a9a5-b1753558e1d2,0,1,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,39af0f4c-0f0d-4e9a-aa63-d0eee3985b4e,0,1,3b380a63-9232-42c2-bfa2-e8fc89448bbd,3b380a63-9232-42c2-bfa2-e8fc89448bbd,0,1,10556a26-ea4b-46b4-84d1-175eb13b333f,10556a26-ea4b-46b4-84d1-175eb13b333f,0,1,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,4bc4c6db-0ef8-405f-8875-b4cb1540aeb5,0,1,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,dbd8391c-a174-43d6-a8db-d9ab76b4edbe,0,1,fd317d96-380e-4ee7-a25b-401e8521cc7a,fd317d96-380e-4ee7-a25b-401e8521cc7a,0,1,ecfc7ede-fffb-4bea-9598-3e18845f603d,ecfc7ede-fffb-4bea-9598-3e18845f603d,0,1,fa44433b-1c44-45a0-9487-47aa092442cf,fa44433b-1c44-45a0-9487-47aa092442cf,0,1,041cecfd-cef2-45d9-90e8-afe0d97d2d95,041cecfd-cef2-45d9-90e8-afe0d97d2d95,0,1,eaae534f-b506-4c86-b649-5b103cf5791d,eaae534f-b506-4c86-b649-5b103cf5791d,0,1,18b4773a-5380-4e71-8b51-ef10e19df17e,18b4773a-5380-4e71-8b51-ef10e19df17e,0,1,42f454f7-cfc4-459b-898f-86cace30410c,42f454f7-cfc4-459b-898f-86cace30410c,0,1,2b72fe1c-afe1-4905-8db2-2bb1baca6295,2b72fe1c-afe1-4905-8db2-2bb1baca6295,0,1,e700ab8e-ff33-4968-9bd0-8918a7d2b83f,e700ab8e-ff33-4968-9bd0-8918a7d2b83f,0,1,330933ca-c4d5-4014-8a6d-910124dfdc7e,330933ca-c4d5-4014-8a6d-910124dfdc7e,0,1,910b3640-790c-4185-88b5-a7c7466374c0,910b3640-790c-4185-88b5-a7c7466374c0,0,1,b5eceb60-76ba-47e3-90bd-52078d4bae4e,b5eceb60-76ba-47e3-90bd-52078d4bae4e,0,1,b8869f44-b87f-4e3e-a0d5-2aec5ccda4e2,b8869f44-b87f-4e3e-a0d5-2aec5ccda4e2,0,1,f7c23753-ff8c-4c26-bdc5-58e3b038668d,f7c23753-ff8c-4c26-bdc5-58e3b038668d,0,1,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,5e08154e-bd8b-4e61-8a6c-b5b500f12b99,0,1,10197638-2cde-4424-8390-3bc9abe9852e,10197638-2cde-4424-8390-3bc9abe9852e,0,1,d9d14a24-c023-4b69-ad57-30d1474e1232,d9d14a24-c023-4b69-ad57-30d1474e1232,0,1,0943dd00-1653-4760-a9fe-ebc083ffa660,0943dd00-1653-4760-a9fe-ebc083ffa660,0,1,4fb8564e-2338-4c23-84a4-31f768047ced,4fb8564e-2338-4c23-84a4-31f768047ced,0,1,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,6179c7bf-08d6-4600-8cdc-ea6d4187bd55,0,1,f93c9a7f-0249-421e-b3d0-55f02d130017,f93c9a7f-0249-421e-b3d0-55f02d130017,0,1,e18b4527-8727-4a10-9e99-a80012debe6c,e18b4527-8727-4a10-9e99-a80012debe6c,0,1,1ed910db-e434-4efd-9b12-c25353a31d5a,1ed910db-e434-4efd-9b12-c25353a31d5a,1,0,76702e9e-fa7a-4b98-befa-f9b37db2dae0,76702e9e-fa7a-4b98-befa-f9b37db2dae0,1,0,101a4eb3-cdda-47af-8c69-615a6920347a,101a4eb3-cdda-47af-8c69-615a6920347a,1,0,cf19f220-f6d4-4c9e-b5d5-9d94234f0a2c,cf19f220-f6d4-4c9e-b5d5-9d94234f0a2c,1,0,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,f410a5db-8698-44ca-9ff6-2c530e1f5c2a,1,0,f79bada2-838f-4e4f-a017-935cf671a70c,f79bada2-838f-4e4f-a017-935cf671a70c,1,0,ed394820-a216-4c4b-81ae-5dea33ced43b,ed394820-a216-4c4b-81ae-5dea33ced43b,1,0,3f3a0b1b-04ce-47c1-928d-5e3483e9fd73,3f3a0b1b-04ce-47c1-928d-5e3483e9fd73,1,0,8a310493-c06f-46db-b2b5-14d6ed203312,8a310493-c06f-46db-b2b5-14d6ed203312,1,0,b68ec95b-64f3-4a2b-9683-231d50f01eeb,b68ec95b-64f3-4a2b-9683-231d50f01eeb,1,0,4a008342-f72f-4ca1-bad1-64b59b509911,4a008342-f72f-4ca1-bad1-64b59b509911,1,0,cefa1723-a4d4-44c4-bd57-ffa713f9306c,cefa1723-a4d4-44c4-bd57-ffa713f9306c,1,0,8d8b91c0-c0ab-4b9d-b854-b867063ddb5b,8d8b91c0-c0ab-4b9d-b854-b867063ddb5b,1,0,4920aabf-6f53-4f91-932a-8ace24631a74,4920aabf-6f53-4f91-932a-8ace24631a74,1,0,ce7a7f72-9d7d-4240-b852-e83b4b8d944b,ce7a7f72-9d7d-4240-b852-e83b4b8d944b,1,0,dacd15cd-ffdc-444d-a45f-9b0c7776a7c5,dacd15cd-ffdc-444d-a45f-9b0c7776a7c5,1,0,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,7309e58d-b0d4-4e0f-a74d-68cab03fea8e,1,0,bbec9c3d-31dd-484e-ab32-41ef845f1370,bbec9c3d-31dd-484e-ab32-41ef845f1370,1,0,8692ba41-d91d-4af0-8aba-69dd5409d593,8692ba41-d91d-4af0-8aba-69dd5409d593,1,0,5bfd74f4-811a-45db-b33d-8f93ba9c873a,5bfd74f4-811a-45db-b33d-8f93ba9c873a,1,0,852bd696-9a9e-4952-b676-4108f757ad9b,852bd696-9a9e-4952-b676-4108f757ad9b,1,0,a95b564a-c895-40f2-b947-ea08462bb2a0,a95b564a-c895-40f2-b947-ea08462bb2a0,1,0,ca63ca2f-703d-4317-8c5d-0650ea638f3f,ca63ca2f-703d-4317-8c5d-0650ea638f3f,1,0,aa2256c7-9847-40a5-9e49-11c508e0d45b,aa2256c7-9847-40a5-9e49-11c508e0d45b,1,0,a04493f4-508c-4047-b0e3-b7d4bde6427b,a04493f4-508c-4047-b0e3-b7d4bde6427b,1,0,418982cd-d403-47cf-a7ef-993a36104947,418982cd-d403-47cf-a7ef-993a36104947,1,0,485ebc6a-0e3e-4278-8ef1-c6194d6d5015,485ebc6a-0e3e-4278-8ef1-c6194d6d5015,1,0,816c8143-8b02-4f4a-8eb1-44c7fb36afcc,816c8143-8b02-4f4a-8eb1-44c7fb36afcc,1,0,35eea3b8-d017-442a-b5a0-a1571165b9a9,35eea3b8-d017-442a-b5a0-a1571165b9a9,1,0,7e84901c-cb7f-437c-a135-0902cd47acb6,7e84901c-cb7f-437c-a135-0902cd47acb6,1,0,c4d67026-2c97-4126-b8be-49aa6f567e2d,c4d67026-2c97-4126-b8be-49aa6f567e2d,1,0,fda2906d-f499-4016-b13a-99f7f713b898,fda2906d-f499-4016-b13a-99f7f713b898,1,0,da2b47f5-4109-4f72-a4a5-70be24a6881f,da2b47f5-4109-4f72-a4a5-70be24a6881f,1,0,849f034e-85dc-4515-aae6-240c1e0d46d9,849f034e-85dc-4515-aae6-240c1e0d46d9,1,0,de4d37c9-b278-4c0c-bc10-1b63ecd72947,de4d37c9-b278-4c0c-bc10-1b63ecd72947,1,0,1c7e9baa-7728-4afd-829a-806cee13ecdb,1c7e9baa-7728-4afd-829a-806cee13ecdb,1,0,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,5d75aae8-9d9c-4a47-b8c0-2ce56431fe53,1,0,3091c6d3-6cb2-4990-a0d2-ee766db5c1df,3091c6d3-6cb2-4990-a0d2-ee766db5c1df,1,0,5a741cf6-8160-4409-9396-2e6d1e67e6fa,5a741cf6-8160-4409-9396-2e6d1e67e6fa,1,0,8242daae-181a-47df-b28e-c1de3fce0359,8242daae-181a-47df-b28e-c1de3fce0359,1,0,5cc3a29d-aa98-42bf-9800-f584229c8e46,5cc3a29d-aa98-42bf-9800-f584229c8e46,1,0,db82191f-77bd-44da-8b33-86f01018e25a,db82191f-77bd-44da-8b33-86f01018e25a,1,0,acfa1919-07ce-4464-8552-6b104e284dca,acfa1919-07ce-4464-8552-6b104e284dca,1,0,497ce8f3-f6f0-4da8-aeb0-0fa01bb26dc6,497ce8f3-f6f0-4da8-aeb0-0fa01bb26dc6,1,0,f4cff4ff-68e9-4072-971e-1b359d3aa980,f4cff4ff-68e9-4072-971e-1b359d3aa980,1,0,6f9fba85-7c04-4e07-bc93-8ad79cbdca85,6f9fba85-7c04-4e07-bc93-8ad79cbdca85,1,0,fdb012c9-583a-42af-95da-070e75a58078,fdb012c9-583a-42af-95da-070e75a58078,1,0,40a52f83-f0e2-470d-9c17-7fdc8cc646b7,40a52f83-f0e2-470d-9c17-7fdc8cc646b7,1,0,7d069b11-cddd-463d-97be-3cbeaaf0954c,7d069b11-cddd-463d-97be-3cbeaaf0954c,1,0,8c5fae4c-b5b6-4e05-9453-4ac5de07c54c,8c5fae4c-b5b6-4e05-9453-4ac5de07c54c,1,0,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,7531fb7c-a4ae-42df-b8e5-d8bfcb66be52,1,0,d1b950b0-dd66-49f9-998e-3ae5e820ae7f,d1b950b0-dd66-49f9-998e-3ae5e820ae7f,1,0,57e39881-cbf9-4cac-9ed0-bf4a6ea667ee,57e39881-cbf9-4cac-9ed0-bf4a6ea667ee,1,0,b9004626-915c-44c8-9cb7-25e5b627ee83,b9004626-915c-44c8-9cb7-25e5b627ee83,1,0,63c6cfad-124d-491a-829d-b298463c95e6,63c6cfad-124d-491a-829d-b298463c95e6,1,0,3da31d2f-24dd-469b-bd3b-073fa3b3d585,3da31d2f-24dd-469b-bd3b-073fa3b3d585,1,0,737404de-5b9d-4445-81c5-2c5b50b36846,737404de-5b9d-4445-81c5-2c5b50b36846,1,0,1ae364d3-0bec-4089-af23-c60d2a274c85,1ae364d3-0bec-4089-af23-c60d2a274c85,1,0,1c1a5bf8-bbe6-4a69-973e-11445175dac2,1c1a5bf8-bbe6-4a69-973e-11445175dac2,1,0,f11ffcfd-3588-4785-b222-cebe80455303,f11ffcfd-3588-4785-b222-cebe80455303,1,0,5d216c28-0724-4e7d-86cf-b6f75e7e28b7,5d216c28-0724-4e7d-86cf-b6f75e7e28b7,1,0,bfdc6346-db5b-427f-acca-9b48db8fefd0,bfdc6346-db5b-427f-acca-9b48db8fefd0,1,0,1c3f258c-345e-47f6-9e29-98b1222fb348,1c3f258c-345e-47f6-9e29-98b1222fb348,1,0,dfafcdf3-cdeb-4822-9f41-a730d9d3fb24,dfafcdf3-cdeb-4822-9f41-a730d9d3fb24,1,0,35c938f4-065f-47f5-a75b-637ed0080725,35c938f4-065f-47f5-a75b-637ed0080725,1,0,b3847d64-46b8-4bd1-9362-d88d82b34254,b3847d64-46b8-4bd1-9362-d88d82b34254,1,0,14b58f6d-9243-47cd-a430-8408fcddd8d8,14b58f6d-9243-47cd-a430-8408fcddd8d8,0,1,57b9edd2-16d2-40f2-ae9c-33462eda5fb4,57b9edd2-16d2-40f2-ae9c-33462eda5fb4,0,1,e14c0841-226c-4c79-bec9-cfc8d2c3a160,e14c0841-226c-4c79-bec9-cfc8d2c3a160,0,1,098d9444-e178-45b5-a8c3-97bd94371684,098d9444-e178-45b5-a8c3-97bd94371684,0,1,6f3c5b90-b030-4267-a973-33d12c2c7680,6f3c5b90-b030-4267-a973-33d12c2c7680,0,1,b107a4a8-0db8-44f4-93f7-9f231e850398,b107a4a8-0db8-44f4-93f7-9f231e850398,0,1,88b879b7-1bb3-4478-b569-35bdb5c56939,88b879b7-1bb3-4478-b569-35bdb5c56939,0,1,c8d797cf-e72c-4d99-bd6f-f4a8b0ca7c8d,c8d797cf-e72c-4d99-bd6f-f4a8b0ca7c8d,0,1,7a62d031-c340-4b1e-90af-fff697a2e979,7a62d031-c340-4b1e-90af-fff697a2e979,0,1,18bf6916-83cc-41e5-a35b-1489450ae632,18bf6916-83cc-41e5-a35b-1489450ae632,0,1,ebab97cf-5335-4648-9845-8ca41f79fb49,ebab97cf-5335-4648-9845-8ca41f79fb49,0,1,bb29fa44-6772-4426-a0b8-422115e14288,bb29fa44-6772-4426-a0b8-422115e14288,0,1,a5cc5ae2-be80-4957-8aca-9e477433dfcc,a5cc5ae2-be80-4957-8aca-9e477433dfcc,0,1,62fa393c-687c-49bf-8a25-81adc04430fb,62fa393c-687c-49bf-8a25-81adc04430fb,0,1,36d7d739-b198-487d-8644-76589356c2ec,36d7d739-b198-487d-8644-76589356c2ec,0,1,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,e4da2959-0fb0-48fb-a5aa-e7a5589d69c3,0,1,e51ae56c-d311-46b7-8d4c-19a432f4cd16,e51ae56c-d311-46b7-8d4c-19a432f4cd16,0,1,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,e000d04e-37eb-4d95-a833-b0a9b10ee0b9,0,1,40d3ed07-3b56-4c9f-8b96-d94455202ef0,40d3ed07-3b56-4c9f-8b96-d94455202ef0,0,1,b5365cb6-a4e7-479b-82f4-f4ad80fcd7c9,b5365cb6-a4e7-479b-82f4-f4ad80fcd7c9,0,1,84282afa-21f5-40db-9386-e6f741c9a06c,84282afa-21f5-40db-9386-e6f741c9a06c,0,1,5b3b3da9-8619-4fbd-b140-3528875cd179,5b3b3da9-8619-4fbd-b140-3528875cd179,0,1,99e5e866-7ac6-4916-ab66-3e2909822c56,99e5e866-7ac6-4916-ab66-3e2909822c56,0,1,03363877-2752-4a03-95f2-d73b732e0bfd,03363877-2752-4a03-95f2-d73b732e0bfd,0,1,8d9d2284-e592-44c5-93bb-247037ab6b95,8d9d2284-e592-44c5-93bb-247037ab6b95,0,1,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0b0d2b7c-d52e-4163-83cf-a7e86bb47c47,0,1,78051e10-74ab-44be-adca-e4c93824a386,78051e10-74ab-44be-adca-e4c93824a386,0,1,73629419-83d8-4727-88a9-76c851d104c9,73629419-83d8-4727-88a9-76c851d104c9,0,1,a9c3065b-db68-4f59-9235-33f9fbfdaafd,a9c3065b-db68-4f59-9235-33f9fbfdaafd,0,1,3715cf3d-0abc-4711-8ac9-d41f0be7878f,3715cf3d-0abc-4711-8ac9-d41f0be7878f,0,1,8e8d8078-8b32-4c24-b26e-89a92bf60160,8e8d8078-8b32-4c24-b26e-89a92bf60160,0,1,f96cbb27-7619-41e0-8577-e623ef02dc58,f96cbb27-7619-41e0-8577-e623ef02dc58,0,1,d74dfd31-2016-435b-8652-15fdbca59490,d74dfd31-2016-435b-8652-15fdbca59490,0,1,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,ba8111a9-1d33-4615-ad0b-b3e923b2f3bd,0,1,27651e0e-d560-434b-a49c-f473a5b20c4d,27651e0e-d560-434b-a49c-f473a5b20c4d,0,1,dab1491b-0685-442d-b945-2bfde3f37933,dab1491b-0685-442d-b945-2bfde3f37933,0,1,ce85554b-81ba-4149-a951-d09bdc14fa16,ce85554b-81ba-4149-a951-d09bdc14fa16,0,1,23a1ef35-1469-44ea-8535-fa9c7f535cae,23a1ef35-1469-44ea-8535-fa9c7f535cae,0,1,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,8c7d74bf-2865-47d9-8a16-5b0db1104a3a,0,1,2558d812-ac0a-49ba-87db-3f661209a3c4,2558d812-ac0a-49ba-87db-3f661209a3c4,0,1,20d712ef-77c1-4374-92e1-f20a3ebc7eab,20d712ef-77c1-4374-92e1-f20a3ebc7eab,0,1,65d23ce8-e326-45ee-86b0-6dcf35797201,65d23ce8-e326-45ee-86b0-6dcf35797201,0,1,a2683c3f-1b21-47d8-951d-7d30cde51efc,a2683c3f-1b21-47d8-951d-7d30cde51efc,0,1,54c77053-1728-4914-a354-73fe8853a0e1,54c77053-1728-4914-a354-73fe8853a0e1,0,1,21136691-078f-4bf7-bddd-f41416a76d86,21136691-078f-4bf7-bddd-f41416a76d86,0,1,30a121c7-c4f5-45c4-9504-9778ed85d9e3,30a121c7-c4f5-45c4-9504-9778ed85d9e3,0,1,c68e2157-2541-4f80-966a-d68ce603f131,c68e2157-2541-4f80-966a-d68ce603f131,0,1,e5dfee58-f748-48ee-81a3-7c6133f06365,e5dfee58-f748-48ee-81a3-7c6133f06365,0,1,27bfc94e-e438-4854-9a9d-39a3b984c9b4,27bfc94e-e438-4854-9a9d-39a3b984c9b4,0,1,a7f1af69-f0f1-4c24-bf4f-b8dc15f4dec2,a7f1af69-f0f1-4c24-bf4f-b8dc15f4dec2,0,1,5c4c9931-3fb0-47a8-9e4f-d552de12b355,5c4c9931-3fb0-47a8-9e4f-d552de12b355,0,1,2a498baf-ec2e-4dda-b568-801bb60db225,2a498baf-ec2e-4dda-b568-801bb60db225,0,1,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,8a32af97-cdb5-46b4-ab7b-e1509e26ecc3,0,1,35989876-16b1-4b02-9381-444a06a7a21d,35989876-16b1-4b02-9381-444a06a7a21d,0,1,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,9f59f8cd-8d61-4fbc-ae6e-32f28ce0035a,0,1,f7608000-1e8a-4ca4-afb7-e04ef547b70a,f7608000-1e8a-4ca4-afb7-e04ef547b70a,0,1,26cea519-19d0-4707-be0a-1a43fde6e563,26cea519-19d0-4707-be0a-1a43fde6e563,0,1,a3d599b9-89d1-4386-8c5b-1c2a9905e6e2,a3d599b9-89d1-4386-8c5b-1c2a9905e6e2,0,1,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,9fb3e902-3154-4bab-9bfe-9a266dc49fa5,0,1,60c04f0a-78a8-4c55-8844-b86906350fd1,60c04f0a-78a8-4c55-8844-b86906350fd1,0,1,851306a7-8847-4b43-8214-898bfc24b0ab,851306a7-8847-4b43-8214-898bfc24b0ab,0,1,af8d4bc9-2f0f-44d3-89ce-2593877055c8,af8d4bc9-2f0f-44d3-89ce-2593877055c8,0,1,344fb829-a1cc-4b17-8f98-2d4f93bfcd6a,344fb829-a1cc-4b17-8f98-2d4f93bfcd6a,0,1,eb35bff2-8467-48fe-bf93-ece2aa40f506,eb35bff2-8467-48fe-bf93-ece2aa40f506,0,1,f7f99dab-9f1e-4814-84e6-e05eb425f67e,f7f99dab-9f1e-4814-84e6-e05eb425f67e,0,1,f26bdf61-8dc9-47e3-bc13-e6b7d8252ebd,f26bdf61-8dc9-47e3-bc13-e6b7d8252ebd,0,1,10302ca9-850c-4561-a774-d099c20b1919,10302ca9-850c-4561-a774-d099c20b1919,0,1,c62c30d6-ffac-43e0-bb20-25fa8eeb62fd,c62c30d6-ffac-43e0-bb20-25fa8eeb62fd,0,1,d693bfcf-e117-445b-b0e1-d895bc5227c4,d693bfcf-e117-445b-b0e1-d895bc5227c4,0,1,cc9be940-db0c-4fad-9655-f5ce2b3ac57e,cc9be940-db0c-4fad-9655-f5ce2b3ac57e,0,1,211ca200-977e-4d48-a0c2-6b4e47bc1838,211ca200-977e-4d48-a0c2-6b4e47bc1838,0,1,68cf55da-b29e-4a65-815b-c9cdc8e5888e,68cf55da-b29e-4a65-815b-c9cdc8e5888e,0,1,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,a9f927ef-22a2-4d77-8648-4bb25eeaccf2,0,1,1041ed81-c1f7-43b2-9087-914865a3076e,1041ed81-c1f7-43b2-9087-914865a3076e,0,1,5d7174d2-42b3-4e12-b705-4209dd73b53b,5d7174d2-42b3-4e12-b705-4209dd73b53b,0,1,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,b1b5bf08-1c57-4875-87bb-ad1fa1a3251f,0,1,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,e00dcab4-5e92-44e3-bcdf-a31dd32a195f,0,1,5a4c6511-f8ed-40e4-a251-e28f62629cf2,5a4c6511-f8ed-40e4-a251-e28f62629cf2,0,1,0508e7ab-3dd9-42b4-9542-089ce0656bbb,0508e7ab-3dd9-42b4-9542-089ce0656bbb,0,1,cfe59dfd-a509-4f83-b926-b3ff94234a43,cfe59dfd-a509-4f83-b926-b3ff94234a43,0,1,9020fa9d-e7de-4574-ab65-db6651b5b610,9020fa9d-e7de-4574-ab65-db6651b5b610,0,1,f9aa933e-6684-48de-b802-96c8e61b1fe6,f9aa933e-6684-48de-b802-96c8e61b1fe6,0,1,9de4d430-95ec-4435-b3e8-4fc85778d517,9de4d430-95ec-4435-b3e8-4fc85778d517,0,1,205b8908-fa21-42bd-bff0-fb95e6787f15,205b8908-fa21-42bd-bff0-fb95e6787f15,0,1,5320abf1-b09b-4de0-9adf-4cb1da31df6f,5320abf1-b09b-4de0-9adf-4cb1da31df6f,0,1,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,5e9e42c5-dcbc-422f-acce-4f11a63dbb85,0,1,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,6903ffe4-42c1-4708-a1b0-bb67cd3f9e4c,0,1,96d66cdd-d40c-43a3-92ce-40aef2101b64,96d66cdd-d40c-43a3-92ce-40aef2101b64,0,1,9daa8270-4782-4d83-af03-c8d2b11057ff,9daa8270-4782-4d83-af03-c8d2b11057ff,0,1,d12e7d62-9910-43e2-a3a8-39a723f6ff6e,d12e7d62-9910-43e2-a3a8-39a723f6ff6e,0,1,65bef8ef-f088-4bb6-abb4-c2a59f82f900,65bef8ef-f088-4bb6-abb4-c2a59f82f900,0,1,27a9d7f3-7f44-4268-931f-1308047ce462,27a9d7f3-7f44-4268-931f-1308047ce462,0,1,1504d923-a49f-4340-854f-6b79847bc8a1,1504d923-a49f-4340-854f-6b79847bc8a1,0,1,6e45158b-bace-44c9-81b2-cd96c605e575,6e45158b-bace-44c9-81b2-cd96c605e575,0,1,1be7114c-686a-422b-b759-2cc2dbf25c78,1be7114c-686a-422b-b759-2cc2dbf25c78,0,1,4b8927df-e124-4bf6-9d70-6e91b4796d90,4b8927df-e124-4bf6-9d70-6e91b4796d90,0,1,871b63a2-c7a6-4343-8d8b-7dda1b0def87,871b63a2-c7a6-4343-8d8b-7dda1b0def87,0,1,fc78d8df-ab27-4544-a65c-73908b9c5425,fc78d8df-ab27-4544-a65c-73908b9c5425,0,1,70b79e56-bb71-4f38-93cf-94dda79d9b4c,70b79e56-bb71-4f38-93cf-94dda79d9b4c,0,1,f8a090d2-b2d1-4ead-a8bf-6325a7552743,f8a090d2-b2d1-4ead-a8bf-6325a7552743,0,1,84f935da-9fe5-44ea-845b-b447b8b0a6f5,84f935da-9fe5-44ea-845b-b447b8b0a6f5,0,1,bd97e481-cfc4-4a40-8438-985020f06abd,bd97e481-cfc4-4a40-8438-985020f06abd,0,1,120c5162-b03c-46ce-8a2a-8ef501971715,120c5162-b03c-46ce-8a2a-8ef501971715,0,1,caf79125-bde8-4f52-8ad2-f915c7a884cc,caf79125-bde8-4f52-8ad2-f915c7a884cc,0,1,a9a0db31-6808-4790-be72-f345197b0c6e,a9a0db31-6808-4790-be72-f345197b0c6e,0,1,36554213-9af4-4fec-8944-35f50b306eda,36554213-9af4-4fec-8944-35f50b306eda,0,1,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,c770bdd5-c7c0-4751-b31d-46c0ea1f49b7,0,1,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,6afcc089-7f15-42e8-97b5-6aad6cf2e6f9,0,1,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,cce4c615-dc29-42b3-9d3d-b277dde4a2e4,0,1,33343620-673e-4aa3-9e58-c6a25f738001,33343620-673e-4aa3-9e58-c6a25f738001,0,1,8aaf780f-ed74-4f44-9598-c14180053ff9,8aaf780f-ed74-4f44-9598-c14180053ff9,0,1,dbd4d09d-f410-4453-9143-bd72da5464cc,dbd4d09d-f410-4453-9143-bd72da5464cc,0,1,c4fe10b6-d025-4736-be23-3113bd7fe7b4,c4fe10b6-d025-4736-be23-3113bd7fe7b4,0,1,65530aca-7cf2-4a52-b5be-5dcbc15a049e,65530aca-7cf2-4a52-b5be-5dcbc15a049e,0,1,15eb2c2d-305d-42c0-9aec-936b82114bdb,15eb2c2d-305d-42c0-9aec-936b82114bdb,0,1,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,bb99bc44-f83e-48bb-93fd-7b07ca7da6a7,0,1,cbca7272-2aae-4e21-b3f5-12786f085648,cbca7272-2aae-4e21-b3f5-12786f085648,0,1,7718bd0b-7b8a-4ffc-b228-f05683b5531a,7718bd0b-7b8a-4ffc-b228-f05683b5531a,0,1,38aeb32b-9e3b-4b4a-9a61-97da63cdea48,38aeb32b-9e3b-4b4a-9a61-97da63cdea48,0,1,881f53bc-a52e-4312-b09d-3d3f53ddf84b,881f53bc-a52e-4312-b09d-3d3f53ddf84b,0,1,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,2e36a7b3-5331-4fab-a0a3-31b42a8387fe,0,1,e3476d0e-0ab4-4734-9261-04aef6281086,e3476d0e-0ab4-4734-9261-04aef6281086,0,1,945ae8d2-b74a-41e9-b740-c82acdd40d04,945ae8d2-b74a-41e9-b740-c82acdd40d04,0,1,29c37223-de1c-49fb-8488-77e44dd79edd,29c37223-de1c-49fb-8488-77e44dd79edd,0,1,f561be64-9420-46ec-a4f7-9df0bea2e28b,f561be64-9420-46ec-a4f7-9df0bea2e28b,0,1,e9e242b7-0077-4c47-8f45-df50e7cc90cf,e9e242b7-0077-4c47-8f45-df50e7cc90cf,0,1,820383e1-9b95-4c0f-8464-722f1fe64ad5,820383e1-9b95-4c0f-8464-722f1fe64ad5,0,1,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,3d6cf2ab-29b2-45af-a6e2-8796284acf2d,0,1,292bfe6b-703e-40cb-856d-abb470e6709f,292bfe6b-703e-40cb-856d-abb470e6709f,0,1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,276c42ca-f5e0-4bb4-9b89-a925def35cb1,0,1,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,41a9cabc-5667-4ca0-a798-ba0b22bd1aa0,0,1,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,1bf44c42-87c0-4f2e-846c-b04d0b7e8d7d,0,1,8811ea1a-1221-47b7-9574-3f36ff15a3cf,8811ea1a-1221-47b7-9574-3f36ff15a3cf,0,1,a84891cc-e996-489a-abde-5b5af166a057,a84891cc-e996-489a-abde-5b5af166a057,0,1,1d715463-691b-4c01-ae39-57c261f2a6ad,1d715463-691b-4c01-ae39-57c261f2a6ad,0,1,4c3d007f-a62c-4fd9-beda-58dbf08ad188,4c3d007f-a62c-4fd9-beda-58dbf08ad188,0,1,c35373a9-f0b0-4ddb-a985-409ac9c64609,c35373a9-f0b0-4ddb-a985-409ac9c64609,0,1,c1c40916-fee5-46e3-90fc-10e7595866c9,c1c40916-fee5-46e3-90fc-10e7595866c9,0,1,19a307b1-9ef0-4fc6-bf4f-7636e9118399,19a307b1-9ef0-4fc6-bf4f-7636e9118399,0,1,666244a4-5636-4405-89dd-bbd8f4278071,666244a4-5636-4405-89dd-bbd8f4278071,0,1,8b79f0e3-9024-4073-aa6b-a42beed9b0c6,8b79f0e3-9024-4073-aa6b-a42beed9b0c6,0,1,29a627a9-debc-4074-88d0-ec3561e1ef9c,29a627a9-debc-4074-88d0-ec3561e1ef9c,0,1,5a01a002-8833-4c89-b8d6-9b63fc49d3b6,5a01a002-8833-4c89-b8d6-9b63fc49d3b6,0,1,39f5e272-9a10-40b0-8a10-92037828b206,39f5e272-9a10-40b0-8a10-92037828b206,0,1,87dad256-122b-4d7e-b249-a2c313a9cf33,87dad256-122b-4d7e-b249-a2c313a9cf33,0,1,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,57a030fb-ed57-4ffc-a462-c7bbd2435c3d,0,1,958033a6-2a8e-473a-903b-34eee6507f5a,958033a6-2a8e-473a-903b-34eee6507f5a,0,1,a2704bf4-3c9b-470d-8be2-ac1335667557,a2704bf4-3c9b-470d-8be2-ac1335667557,0,1,ac5f945e-2d03-44fb-a8cf-5d786194cefd,ac5f945e-2d03-44fb-a8cf-5d786194cefd,0,1,698ec00f-bf75-420e-81ab-a98808daf3f7,698ec00f-bf75-420e-81ab-a98808daf3f7,0,1,f441907c-d02e-431e-baf4-1854e48a1f50,f441907c-d02e-431e-baf4-1854e48a1f50,0,1,783dd4ba-a597-45ba-8989-2ed5224d62bc,783dd4ba-a597-45ba-8989-2ed5224d62bc,0,1,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,97aaede5-d32f-4eba-b0e0-5ae5f094a8b7,0,1,d9e08c12-1999-41d8-b530-90187303be0a,d9e08c12-1999-41d8-b530-90187303be0a,0,1,dad9710a-73ca-4e0d-b98b-75f955d0822d,dad9710a-73ca-4e0d-b98b-75f955d0822d,0,1,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,d01beeab-7c42-4d5e-a2f6-f190b9f703a5,0,1,2191939f-6f71-47c9-a3d2-57acbf7f411e,2191939f-6f71-47c9-a3d2-57acbf7f411e,0,1,19b9cbbb-1fcc-4492-9385-687742cb3d0b,19b9cbbb-1fcc-4492-9385-687742cb3d0b,0,1,247c41dd-c8dc-43dd-b348-1ba31ee92065,247c41dd-c8dc-43dd-b348-1ba31ee92065,0,1,dbad3cee-0d5c-41f6-819f-1a2b5251b62c,dbad3cee-0d5c-41f6-819f-1a2b5251b62c,0,1,da673406-078d-44c8-9d27-80ef172c4b5e,da673406-078d-44c8-9d27-80ef172c4b5e,0,1,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,75e77f99-b9d1-4bc0-93aa-c77a93d760d3,0,1,a2c36563-126d-4c3a-9714-5b7a4903073b,a2c36563-126d-4c3a-9714-5b7a4903073b,0,1,3a46c243-bdf5-4429-895a-edeae1c0396e,3a46c243-bdf5-4429-895a-edeae1c0396e,0,1,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,c7da3115-3cee-4282-a2f2-4e0b5558e4fc,0,1,2976c29f-f482-463d-8f6e-6a632fb50893,2976c29f-f482-463d-8f6e-6a632fb50893,0,1,701964a1-7762-45ee-a9a4-41dd9ce94783,701964a1-7762-45ee-a9a4-41dd9ce94783,0,1,55d1909e-f552-441f-8e14-47d2e604cf6a,55d1909e-f552-441f-8e14-47d2e604cf6a,0,1,eae627db-c52b-4e41-94d1-58db28cd0063,eae627db-c52b-4e41-94d1-58db28cd0063,0,1,cafc86e1-d7f1-4cd2-ac20-04fa0917556a,cafc86e1-d7f1-4cd2-ac20-04fa0917556a,0,1,0a646724-b49d-42cd-82e6-e800466ed127,0a646724-b49d-42cd-82e6-e800466ed127,0,1,47058e36-a281-43a5-a41d-691b3ef32b5b,47058e36-a281-43a5-a41d-691b3ef32b5b,0,1,e620e93c-4382-478f-a700-ad2faa67362b,e620e93c-4382-478f-a700-ad2faa67362b,0,1,a4a8693b-dc91-4762-92e6-35360c8768db,a4a8693b-dc91-4762-92e6-35360c8768db,0,1,2ae236ec-28a7-44e0-a0ba-be62fe52d817,2ae236ec-28a7-44e0-a0ba-be62fe52d817,0,1,12cf9412-baf5-4d32-a563-a11ac3d5e0ed,12cf9412-baf5-4d32-a563-a11ac3d5e0ed,0,1,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,bdde9030-5718-4f5e-a9e2-f641f4ce69f9,0,1,ed137e05-1996-411d-9927-45a3d7e3ee3b,ed137e05-1996-411d-9927-45a3d7e3ee3b,0,1,fbebf341-9842-41e1-8e4d-490fa02065ce,fbebf341-9842-41e1-8e4d-490fa02065ce,0,1,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,fcb46a8a-3461-4ec2-9aa0-685aedb9dd50,0,1,067f88f6-ccd2-491e-a466-94345a1f220f,067f88f6-ccd2-491e-a466-94345a1f220f,0,1,642154b8-97da-4c4f-bf34-c1124215077d,642154b8-97da-4c4f-bf34-c1124215077d,0,1,abc10867-39ae-46bf-8bd7-90f645919235,abc10867-39ae-46bf-8bd7-90f645919235,0,1,b3396504-8ccb-43d6-9a0f-ab259ba0a542,b3396504-8ccb-43d6-9a0f-ab259ba0a542,0,1,f59f91c5-026a-4dc5-996e-0d59814a9604,f59f91c5-026a-4dc5-996e-0d59814a9604,0,1,aac9966f-e9ea-4106-97bb-6b9822939bc7,aac9966f-e9ea-4106-97bb-6b9822939bc7,0,1,a752fba8-5084-4fa2-9d0b-7074a42b1312,a752fba8-5084-4fa2-9d0b-7074a42b1312,0,1,640d7486-8abd-40aa-a244-2ed899b7225a,640d7486-8abd-40aa-a244-2ed899b7225a,0,1,832fe1ae-ba81-44b2-9474-a29f36c3b863,832fe1ae-ba81-44b2-9474-a29f36c3b863,0,1,c05f87b4-ec5f-4d14-981f-02ca8ba89863,c05f87b4-ec5f-4d14-981f-02ca8ba89863,0,1,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,560a5f44-e4e6-46d9-a9fe-3609842d0e3e,0,1,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,98f68a75-ebf9-4c59-b6a8-b3634089ca6b,0,1,875d1fc1-8172-4e48-8192-035882e1665d,875d1fc1-8172-4e48-8192-035882e1665d,0,1,26132b28-98cc-4690-92ad-139f91839ba2,26132b28-98cc-4690-92ad-139f91839ba2,0,1,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0bd85b79-cc32-4c1d-b629-567a1bdfac56,0,1,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,b87ce4f9-aaa6-4a4c-af80-0bd9adc83506,0,1,ca81e0ea-c428-47f9-aedb-078214104a2f,ca81e0ea-c428-47f9-aedb-078214104a2f,0,1,9518d09c-6996-4439-9278-3c71d5ae8fce,9518d09c-6996-4439-9278-3c71d5ae8fce,0,1,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,9dd6e7d6-cd98-4928-b50c-38bdbc61c211,0,1,5fbd9a13-012d-4c36-b72c-da3bc4157cff,5fbd9a13-012d-4c36-b72c-da3bc4157cff,0,1,6ae6e515-5cd4-4eca-8602-c6abe6d66276,6ae6e515-5cd4-4eca-8602-c6abe6d66276,0,1,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,44b8472b-0f70-49cc-8f71-9c9d3e9cfbcc,0,1,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,b071a44e-9a34-4af3-a59a-35aa5f3a74b4,0,1,35a28677-0653-47f9-82e1-02c4b9266fee,35a28677-0653-47f9-82e1-02c4b9266fee,0,1,2e17464f-9cef-4812-865f-4eb77ff16b6a,2e17464f-9cef-4812-865f-4eb77ff16b6a,0,1,e5ecbb1f-981d-4928-9335-22216879f7e2,e5ecbb1f-981d-4928-9335-22216879f7e2,0,1,259564b8-172e-4eed-9360-d561ec6dad69,259564b8-172e-4eed-9360-d561ec6dad69,0,1,461be12a-9f16-4826-978a-436608ca8733,461be12a-9f16-4826-978a-436608ca8733,0,1,9b143299-d300-4b6c-b667-5552fb3bdcde,9b143299-d300-4b6c-b667-5552fb3bdcde,0,1,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0de070f4-d8b7-48bb-bfc9-027dd727a4ad,0,1,74973d06-f57d-403e-945c-5cd2f4fc4869,74973d06-f57d-403e-945c-5cd2f4fc4869,0,1,91c799d7-2b3d-4d1a-87ff-221057a428c6,91c799d7-2b3d-4d1a-87ff-221057a428c6,0,1,a50fcacc-6d2d-496c-bea0-9c73cd153437,a50fcacc-6d2d-496c-bea0-9c73cd153437,0,1,a6846c5a-7cf6-4df2-a159-2fd33d18d18f,a6846c5a-7cf6-4df2-a159-2fd33d18d18f,0,1,a5633248-8611-4e9b-b223-2f59e7b84a65,a5633248-8611-4e9b-b223-2f59e7b84a65,0,1,6ec3463a-1e94-4de7-a8c0-b0e42f38573e,6ec3463a-1e94-4de7-a8c0-b0e42f38573e,0,1,e40b8882-737a-40c0-83b4-c35dc042f4a5,e40b8882-737a-40c0-83b4-c35dc042f4a5,0,1,d60c1e9d-1395-4293-8462-6ea2c93a0c86,d60c1e9d-1395-4293-8462-6ea2c93a0c86,0,1,a2b2f025-3108-4f13-9440-8909b5e685f5,a2b2f025-3108-4f13-9440-8909b5e685f5,0,1,5a2d5d8a-afd9-4954-9868-7c82bad00426,5a2d5d8a-afd9-4954-9868-7c82bad00426,0,1,14fcf5e5-5856-4b5f-8c3f-75eaba0f7268,14fcf5e5-5856-4b5f-8c3f-75eaba0f7268,0,1,6ac7db0c-18ed-4d3b-956a-5985214db474,6ac7db0c-18ed-4d3b-956a-5985214db474,0,1,267103e0-6703-4a74-bb4f-af610d7ef332,267103e0-6703-4a74-bb4f-af610d7ef332,0,1,b98ca634-25a5-4366-af04-815ba34c8bb2,b98ca634-25a5-4366-af04-815ba34c8bb2,0,1,14d69108-4d26-401a-b7ae-2c86dadf831c,14d69108-4d26-401a-b7ae-2c86dadf831c,0,1,d6251f65-d366-4bc9-a5db-42063fe03594,d6251f65-d366-4bc9-a5db-42063fe03594,0,1,31dd320b-06aa-4314-9914-2c2420f572a1,31dd320b-06aa-4314-9914-2c2420f572a1,0,1,56730848-3bef-4b8c-b449-fe9d09c9c374,56730848-3bef-4b8c-b449-fe9d09c9c374,0,1,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,43c477d2-1234-4c4a-a18a-022c0ddf2fd5,0,1,91d8c5e4-eaec-4951-9224-16882fda08f6,91d8c5e4-eaec-4951-9224-16882fda08f6,0,1,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,4304ffb9-7ede-4c59-bef8-26fe3e8f0103,0,1,d4655391-144c-4ba6-aee5-1edafebe862c,d4655391-144c-4ba6-aee5-1edafebe862c,0,1,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,1ea750ae-5ec4-43c5-b34f-fd28999d41d7,0,1,8ceea1e8-42ce-469f-823a-ceffdbd6b112,8ceea1e8-42ce-469f-823a-ceffdbd6b112,0,1,6995ee71-5901-46d9-a5c1-b35d795bda20,6995ee71-5901-46d9-a5c1-b35d795bda20,0,1,68caf9e5-9a79-4b77-b0f4-ca9c0fe4fa16,68caf9e5-9a79-4b77-b0f4-ca9c0fe4fa16,0,1,75c4e24f-b8d4-4b29-a9ce-e1d141c60fae,75c4e24f-b8d4-4b29-a9ce-e1d141c60fae,0,1,e93a4293-0497-4f11-b8b9-40300104fb96,e93a4293-0497-4f11-b8b9-40300104fb96,0,1,93531e5d-5dfc-42e8-be52-2e83f37262b0,93531e5d-5dfc-42e8-be52-2e83f37262b0,0,1,61bf78c0-7004-4a74-b362-e979c7316e05,61bf78c0-7004-4a74-b362-e979c7316e05,0,1,c4351896-eff1-4e4d-8823-028d63a9d6bf,c4351896-eff1-4e4d-8823-028d63a9d6bf,0,1,475f83a2-ba5a-4072-94f8-1324b1f198a4,475f83a2-ba5a-4072-94f8-1324b1f198a4,0,1,cd7c15c1-c573-46c9-b109-339b8b54c3ee,cd7c15c1-c573-46c9-b109-339b8b54c3ee,0,1,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,efd89929-4db9-4c58-b3cb-a8d9a41a1df2,0,1,deee8bde-381f-4094-8794-7a06248860dd,deee8bde-381f-4094-8794-7a06248860dd,0,1,2757ee75-4b36-4901-bff1-044708754edb,2757ee75-4b36-4901-bff1-044708754edb,0,1,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0e6bab27-bf94-4732-8549-dbd9b8a5f4e9,0,1,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,774c92d6-9b9b-422a-83d7-8d42ae2a9f60,0,1,71144539-6472-4727-8887-0139f6221370,71144539-6472-4727-8887-0139f6221370,0,1,bff07da4-ae19-48a9-806b-14b285d42485,bff07da4-ae19-48a9-806b-14b285d42485,0,1,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,659cd4f6-d18c-4d75-a7e6-7c124a63ab9a,0,1,b0ccc05d-8d39-4f57-8e87-6846014f92ea,b0ccc05d-8d39-4f57-8e87-6846014f92ea,0,1,aa368dd9-86e1-46f9-a296-591c3639734d,aa368dd9-86e1-46f9-a296-591c3639734d,0,1,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,64fbfed7-9dda-481b-a4f7-fe440f24ba7e,0,1,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,b2835a5b-5c91-448c-9eb1-1bb1c9a5e727,0,1,066f9ab6-ff76-4426-bddd-702e9b16aa5b,066f9ab6-ff76-4426-bddd-702e9b16aa5b,0,1,0e2c2490-50ee-4fed-9119-5dec8385f925,0e2c2490-50ee-4fed-9119-5dec8385f925,0,1,8d60a95c-4035-473f-b1b1-2d52afa2e2d6,8d60a95c-4035-473f-b1b1-2d52afa2e2d6,0,1,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,447fb310-0588-4e0d-8f6d-5fc1f3bb1180,0,1,8986c155-54be-4b1b-b31a-5c00b88bc40d,8986c155-54be-4b1b-b31a-5c00b88bc40d,0,1,d91441cf-d793-4dfa-9225-f0c16818edde,d91441cf-d793-4dfa-9225-f0c16818edde,0,1,42a39785-144c-4d2d-92c6-fd8b345f687b,42a39785-144c-4d2d-92c6-fd8b345f687b,0,1,f3bd841b-fb36-4462-9627-b51801e563cd,f3bd841b-fb36-4462-9627-b51801e563cd,0,1,0a23f273-5589-4a48-be3a-eee7565749aa,0a23f273-5589-4a48-be3a-eee7565749aa,0,1,494eb9d9-4a10-4e85-b511-375408f21bbe,494eb9d9-4a10-4e85-b511-375408f21bbe,0,1,a161dd07-4a6e-4d0f-b72c-702d0d3a83a3,a161dd07-4a6e-4d0f-b72c-702d0d3a83a3,0,1,a275802f-937a-49f4-92da-fcdd185a036d,a275802f-937a-49f4-92da-fcdd185a036d,0,1,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,ec6ed9cb-85a2-4303-9906-cfb4ce6500bf,0,1,f2dc9319-ba60-421a-8340-be3e3a291393,f2dc9319-ba60-421a-8340-be3e3a291393,0,1,bf4eb62a-bc74-4845-bad2-58a2a8302a65,bf4eb62a-bc74-4845-bad2-58a2a8302a65,0,1,b66eb190-1c16-4f20-a94f-954bcdf313b8,b66eb190-1c16-4f20-a94f-954bcdf313b8,0,1,c05f15b0-a659-4473-b6d0-acebc4a2da57,c05f15b0-a659-4473-b6d0-acebc4a2da57,0,1,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,b8d07e97-f67d-4669-972a-96ce0f5e8c0d,0,1,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,5c9c5f87-e85f-49b3-a7ca-01e2220d4f39,0,1,b953eafc-20be-4463-8c3e-903184e18402,b953eafc-20be-4463-8c3e-903184e18402,0,1,dcefdde9-645e-43c7-9244-384dadc75439,dcefdde9-645e-43c7-9244-384dadc75439,0,1,bbdfeebd-cda0-4911-8f31-553d751340a7,bbdfeebd-cda0-4911-8f31-553d751340a7,0,1,dc7adfb7-41e7-4019-a18d-5d9f5d227b71,dc7adfb7-41e7-4019-a18d-5d9f5d227b71,0,1,20aad006-5b1e-4cc2-94ef-668dd002667b,20aad006-5b1e-4cc2-94ef-668dd002667b,0,1,af6af7ae-d68a-4e12-ba2c-a360ce2920a7,af6af7ae-d68a-4e12-ba2c-a360ce2920a7,0,1,b0f5bce4-2ad3-416e-9b1e-3fb23deaa040,b0f5bce4-2ad3-416e-9b1e-3fb23deaa040,0,1,b98a3511-4a6d-4b95-b7f5-eb3043e2289e,b98a3511-4a6d-4b95-b7f5-eb3043e2289e,0,1,ac2d4f02-e893-4366-9702-369a11c5f9b8,ac2d4f02-e893-4366-9702-369a11c5f9b8,0,1,cac7aa71-b5ed-4b0a-87cd-67149b718538,cac7aa71-b5ed-4b0a-87cd-67149b718538,0,1,9bd0ffb9-5ba6-43d3-83fd-2b165dea85f6,9bd0ffb9-5ba6-43d3-83fd-2b165dea85f6,0,1,fa787228-aed5-4a16-b958-d102b78bf776,fa787228-aed5-4a16-b958-d102b78bf776,0,1,d511a261-4f9b-44e8-b3a1-1e6d393ec6e1,d511a261-4f9b-44e8-b3a1-1e6d393ec6e1,0,1,2befb2e3-7354-4a01-83d6-b24262704a5e,2befb2e3-7354-4a01-83d6-b24262704a5e,0,1,5b93975e-b2a4-4102-a060-2667f5813c94,5b93975e-b2a4-4102-a060-2667f5813c94,0,1,ca75d086-cd01-4f54-b57d-1b35bcb1272a,ca75d086-cd01-4f54-b57d-1b35bcb1272a,0,1,b4a27991-2e18-4ead-80e8-f2956a7539e3,b4a27991-2e18-4ead-80e8-f2956a7539e3,0,1,ac8c40d6-be1e-4733-be2e-ae83bde4ec15,ac8c40d6-be1e-4733-be2e-ae83bde4ec15,0,1,be900d20-c02d-476d-9ede-2bc5303ef6cb,be900d20-c02d-476d-9ede-2bc5303ef6cb,0,1,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,ddce1d3c-4a23-4c92-8083-c395dd3b7f6d,0,1,07b53437-cc8d-4834-a1e0-7007538b6eab,07b53437-cc8d-4834-a1e0-7007538b6eab,0,1,0dbec644-cb98-4368-ab76-5997259cbce7,0dbec644-cb98-4368-ab76-5997259cbce7,0,1,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,c05a7d33-8a58-4b5f-a433-4ba54c88d5f4,0,1,dcdc9c65-c2d5-4531-a325-f64b3861cbab,dcdc9c65-c2d5-4531-a325-f64b3861cbab,0,1,ca542a9e-3040-419f-9a98-2a8de230b734,ca542a9e-3040-419f-9a98-2a8de230b734,0,1,c9fc5155-1df3-4872-a83d-72872baf43c4,c9fc5155-1df3-4872-a83d-72872baf43c4,0,1,9f9adb67-66bd-4c28-8319-44ae097ae1fe,9f9adb67-66bd-4c28-8319-44ae097ae1fe,0,1,0bae3704-b370-48be-b094-f18a2e62ad1b,0bae3704-b370-48be-b094-f18a2e62ad1b,0,1,e097bf94-9235-4a27-b0eb-d6387d22cd62,e097bf94-9235-4a27-b0eb-d6387d22cd62,0,1,eccded1c-f3ca-40d3-a8cd-71947bfed7b8,eccded1c-f3ca-40d3-a8cd-71947bfed7b8,0,1,4d243f2b-14d9-4e96-9707-4ead5d12e0a2,4d243f2b-14d9-4e96-9707-4ead5d12e0a2,0,1,8d2bfd40-f185-4eab-b374-872d49310eb2,8d2bfd40-f185-4eab-b374-872d49310eb2,0,1,523de426-e5a6-49e0-8144-c637f80d8ddd,523de426-e5a6-49e0-8144-c637f80d8ddd,0,1,09256328-6205-4b04-b908-3287ae8ded75,09256328-6205-4b04-b908-3287ae8ded75,0,1,05a6e161-9791-4c5b-8753-bd6370cc4cc9,05a6e161-9791-4c5b-8753-bd6370cc4cc9,0,1,966ecce5-ec91-4f8e-82b2-364b38eb7ff4,966ecce5-ec91-4f8e-82b2-364b38eb7ff4,0,1,66a2df23-3a08-40d2-8e6c-2db10a3bca7a,66a2df23-3a08-40d2-8e6c-2db10a3bca7a,0,1,5ee4b3ee-b795-48c1-9bad-f4010b559b0e,5ee4b3ee-b795-48c1-9bad-f4010b559b0e,0,1,6362facc-bf95-4adf-8ee7-c65f90972a1c,6362facc-bf95-4adf-8ee7-c65f90972a1c,0,1,08dbba81-68fb-49ef-8aac-9631fcfa87c6,08dbba81-68fb-49ef-8aac-9631fcfa87c6,0,1,8170a27d-45e9-48b1-860b-c2d9cc5961cd,8170a27d-45e9-48b1-860b-c2d9cc5961cd,0,1,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,f1c08fed-f3db-4f72-8a8e-7c626b8cc130,0,1,e8c3b796-bfd8-4108-ab5f-d0f21b7bd9a6,e8c3b796-bfd8-4108-ab5f-d0f21b7bd9a6,0,1,f41d01ec-983a-4b39-9c11-a6d25d08df4f,f41d01ec-983a-4b39-9c11-a6d25d08df4f,0,1,3247e64e-b57e-4c33-8086-7ab93c5b6371,3247e64e-b57e-4c33-8086-7ab93c5b6371,0,1,e5dca369-dc9a-4332-a509-f734b8787e13,e5dca369-dc9a-4332-a509-f734b8787e13,0,1,722af623-156c-4e63-8b2a-93da760f1559,722af623-156c-4e63-8b2a-93da760f1559,0,1,1abeb10b-0558-4478-8f51-d0964ba3c274,1abeb10b-0558-4478-8f51-d0964ba3c274,0,1,38325a66-588a-4db0-8e0c-21d239408369,38325a66-588a-4db0-8e0c-21d239408369,0,1,7c27e885-33fd-4da2-a60d-50336c0189b0,7c27e885-33fd-4da2-a60d-50336c0189b0,0,1,4b849c66-6a36-4efd-815e-af4467c6f064,4b849c66-6a36-4efd-815e-af4467c6f064,0,1,f6939587-ff87-4eca-ae52-10e1bd2abfce,f6939587-ff87-4eca-ae52-10e1bd2abfce,0,1,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,a8e4d97f-e2da-4aa8-a221-3cbcc135f403,0,1,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,f2b0eab2-e34b-42f8-9b24-5596b4c17d7f,0,1,3cb575a9-dc82-45e0-81f0-d651e12246da,3cb575a9-dc82-45e0-81f0-d651e12246da,0,1,b0d9086f-cef7-47a8-ad62-d85fea28ebda,b0d9086f-cef7-47a8-ad62-d85fea28ebda,0,1,68f6d1b2-9c08-4b37-ba23-1e15539a9c35,68f6d1b2-9c08-4b37-ba23-1e15539a9c35,0,1,cb6df70e-c7cd-4343-bfa9-5bdb907b4580,cb6df70e-c7cd-4343-bfa9-5bdb907b4580,0,1,49c010fc-f5cc-45f4-ba46-132e7661c3dd,49c010fc-f5cc-45f4-ba46-132e7661c3dd,0,1,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,3f3b592d-ca61-40c7-be1f-e5d3224a1eb3,0,1,2b3cab9a-fd05-42a8-811a-f443aee5e192,2b3cab9a-fd05-42a8-811a-f443aee5e192,0,1,2c02a558-8d12-44cf-be6b-9c399b9032e5,2c02a558-8d12-44cf-be6b-9c399b9032e5,0,1,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,d94d4931-7c81-4ee8-93ea-b2c54b152fa5,0,1,9c267aa6-5f23-49f6-868a-3324ef2845ff,9c267aa6-5f23-49f6-868a-3324ef2845ff,0,1,495eeeee-d7bf-4063-99e2-86daa066451a,495eeeee-d7bf-4063-99e2-86daa066451a,0,1,b6184698-79e4-4c19-9440-092ccd9dabf8,b6184698-79e4-4c19-9440-092ccd9dabf8,0,1,7d01fc0c-378e-421d-ab70-6a418eed5941,7d01fc0c-378e-421d-ab70-6a418eed5941,0,1,6eeb4867-bf9d-48dc-b96b-934a0c293010,6eeb4867-bf9d-48dc-b96b-934a0c293010,0,1,c7f817ee-9f6a-454c-95a0-b279fd08055e,c7f817ee-9f6a-454c-95a0-b279fd08055e,0,1,e1803e54-ec5e-4a82-8097-5e2331820991,e1803e54-ec5e-4a82-8097-5e2331820991,0,1,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,4cbb0b91-dbdd-472f-93c5-061076b6a8d3,0,1,8506dbe9-7066-444b-83b6-fb2d71a336e7,8506dbe9-7066-444b-83b6-fb2d71a336e7,0,1,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,240b4df5-0d75-4e5a-9ae8-d0bc7cc51722,0,1,6686d828-3129-4d44-a8a2-a64657d424cb,6686d828-3129-4d44-a8a2-a64657d424cb,0,1,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,90433152-f389-4d45-8ccc-3eb6c7a7e1f0,0,1,ce235ab9-1dec-459a-9fec-498c262ece56,ce235ab9-1dec-459a-9fec-498c262ece56,0,1,9ec53d1a-ed7a-41e8-b5d0-6c2181fd63a5,9ec53d1a-ed7a-41e8-b5d0-6c2181fd63a5,0,1,39355e82-30a6-431e-9697-e2c42e82de83,39355e82-30a6-431e-9697-e2c42e82de83,0,1,a9ae364f-b668-4fb4-b976-f227951ffb6b,a9ae364f-b668-4fb4-b976-f227951ffb6b,0,1,edc01b03-8b01-4551-939a-f7e257892040,edc01b03-8b01-4551-939a-f7e257892040,0,1,15d09274-9508-4f64-9ea3-678c5aa50f0f,15d09274-9508-4f64-9ea3-678c5aa50f0f,0,1,4debe032-12e4-4777-b2fc-70b150f2aad1,4debe032-12e4-4777-b2fc-70b150f2aad1,0,1,37558fa2-0833-46d6-9e4f-63d4a3136870,37558fa2-0833-46d6-9e4f-63d4a3136870,0,1,d92cb614-ed09-47db-b70b-d3e533c44c6a,d92cb614-ed09-47db-b70b-d3e533c44c6a,0,1,361271fa-2faa-497d-adfe-dea8b825405e,361271fa-2faa-497d-adfe-dea8b825405e,0,1,5dceae8b-1ff3-4760-a1c4-975a92be1023,5dceae8b-1ff3-4760-a1c4-975a92be1023,0,1,e660c8bf-af5f-4525-a56e-68925d2b96fa,e660c8bf-af5f-4525-a56e-68925d2b96fa,0,1,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,b18bdc5f-a2b6-4b15-81c3-37b27a5a3176,0,1,528d96cc-8838-49ea-8d76-ea56747882e0,528d96cc-8838-49ea-8d76-ea56747882e0,0,1,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,c996916d-7f1c-4fbf-939f-3e1bafe81f7d,0,1,086d69d6-e2fa-45cb-84b6-f8f3e2919160,086d69d6-e2fa-45cb-84b6-f8f3e2919160,0,1,4678c704-933a-45ef-9d41-89b8f39016bb,4678c704-933a-45ef-9d41-89b8f39016bb,0,1,1681dd7a-de80-4b8d-9657-c9702a19d653,1681dd7a-de80-4b8d-9657-c9702a19d653,0,1,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,10d796e9-a3d4-4ef0-87d5-8315aa12f1c8,0,1,9f593f27-8009-40c0-94d6-53f177ce55f4,9f593f27-8009-40c0-94d6-53f177ce55f4,0,1,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,820bb4b4-895b-4ccf-a350-2545bf8a2f7e,0,1,530a3164-4ef1-4b3b-8269-13764ef4bf15,530a3164-4ef1-4b3b-8269-13764ef4bf15,0,1,6df2bb92-558c-4453-9de4-e4176e8f93dc,6df2bb92-558c-4453-9de4-e4176e8f93dc,0,1,0ce4c8a4-b20b-4550-bee3-f677e9ec64e9,0ce4c8a4-b20b-4550-bee3-f677e9ec64e9,0,1,30d5c2a6-b3cf-4ed5-ba75-850bcae932d1,30d5c2a6-b3cf-4ed5-ba75-850bcae932d1,0,1,0bf5e9c1-905a-4202-8b96-ed831b41be4b,0bf5e9c1-905a-4202-8b96-ed831b41be4b,0,1,e92ae368-0d7c-4fb7-b6d0-5ab63dc95a6a,e92ae368-0d7c-4fb7-b6d0-5ab63dc95a6a,0,1,f30c9c4b-aa6c-4b15-9ac7-888c0c0cabd9,f30c9c4b-aa6c-4b15-9ac7-888c0c0cabd9,0,1,be15e947-f671-4848-ada1-51239af73615,be15e947-f671-4848-ada1-51239af73615,0,1,d3e0dd8f-886a-4441-8f05-fd629da80f07,d3e0dd8f-886a-4441-8f05-fd629da80f07,0,1,6417d7c8-6436-4907-98eb-44cd7638f3f1,6417d7c8-6436-4907-98eb-44cd7638f3f1,0,1,2c04d747-c363-4218-92c9-5c83393e928b,2c04d747-c363-4218-92c9-5c83393e928b,0,1,093b8255-7ee5-4463-bd20-542b1d63e799,093b8255-7ee5-4463-bd20-542b1d63e799,0,1,5afb95e0-51a3-4a0f-bea7-e06716421974,5afb95e0-51a3-4a0f-bea7-e06716421974,0,1,ba49877b-6e30-4177-a67c-00e65aa498fb,ba49877b-6e30-4177-a67c-00e65aa498fb,0,1,25b39aeb-94c3-4199-9d56-5bd87e325bf2,25b39aeb-94c3-4199-9d56-5bd87e325bf2,0,1,2bd80198-4739-4e8f-9af1-40addc91a05b,2bd80198-4739-4e8f-9af1-40addc91a05b,0,1,e2c0bc7a-7197-4972-b703-a2356d2a36ad,e2c0bc7a-7197-4972-b703-a2356d2a36ad,0,1,3dbfed86-380d-4fc5-80f8-64add08fa2d2,3dbfed86-380d-4fc5-80f8-64add08fa2d2,0,1,33c66a15-e48e-406a-a77c-02af72ae96d5,33c66a15-e48e-406a-a77c-02af72ae96d5,0,1,593be64c-6792-46d9-8618-84c50c9ad9e4,593be64c-6792-46d9-8618-84c50c9ad9e4,0,1,208d29cb-040f-4282-b8e8-dda8417b8e92,208d29cb-040f-4282-b8e8-dda8417b8e92,0,1,9935d602-668e-4df9-a338-0f542def878b,9935d602-668e-4df9-a338-0f542def878b,0,1,459ed297-0c0d-4bdb-90a3-da387868f040,459ed297-0c0d-4bdb-90a3-da387868f040,0,1,ccb5b9a7-1a10-4803-b455-0350afe4b584,ccb5b9a7-1a10-4803-b455-0350afe4b584,0,1,ebce49ef-755a-4ace-aeb1-b99db2a8bf6c,ebce49ef-755a-4ace-aeb1-b99db2a8bf6c,0,1,0cd18f4c-aeb9-456b-9dcd-9649d1dd486b,0cd18f4c-aeb9-456b-9dcd-9649d1dd486b,0,1,ba5e7c41-0442-4f74-ba41-631d864eafb4,ba5e7c41-0442-4f74-ba41-631d864eafb4,0,1,3913f78f-ce34-4ae3-840a-ccdf06319cbb,3913f78f-ce34-4ae3-840a-ccdf06319cbb,0,1,104cf3e3-2104-4ac2-bdc6-792750a63ea0,104cf3e3-2104-4ac2-bdc6-792750a63ea0,0,1,c86aa97a-5898-4cb2-ae62-598bddf8e99f,c86aa97a-5898-4cb2-ae62-598bddf8e99f,0,1,d3c9b925-6b74-42db-8b21-ab21d24797d1,d3c9b925-6b74-42db-8b21-ab21d24797d1,0,1,4d348ec3-9de8-4f5b-960c-4b507d0fd7ce,4d348ec3-9de8-4f5b-960c-4b507d0fd7ce,0,1,39261a2d-7c46-40b1-9f8f-02d970aa04bc,39261a2d-7c46-40b1-9f8f-02d970aa04bc,0,1,3a07e5a5-2ab1-43ef-b97f-d45cd7775d67,3a07e5a5-2ab1-43ef-b97f-d45cd7775d67,0,1,124a516f-cdab-49ce-95d1-359921140342,124a516f-cdab-49ce-95d1-359921140342,0,1,e4294611-a770-4e67-9578-a1f370879476,e4294611-a770-4e67-9578-a1f370879476,0,1,c5033dd2-0911-4124-8688-dc9dabf3155f,c5033dd2-0911-4124-8688-dc9dabf3155f,0,1,274357df-cb5c-407d-ae72-58046c310db2,274357df-cb5c-407d-ae72-58046c310db2,0,1,5467001e-d025-4669-b16e-26381ac4403f,5467001e-d025-4669-b16e-26381ac4403f,0,1,a4e56049-4de9-40a3-8197-a5c84a11f516,a4e56049-4de9-40a3-8197-a5c84a11f516,0,1,339c9220-fd5b-45d3-b300-cdcc8788f87e,339c9220-fd5b-45d3-b300-cdcc8788f87e,0,1,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,02d7d401-3c0c-4fd0-b096-1f73b6ec14c3,0,1,9042a6de-5048-432d-a448-7e21f2d1d24a,9042a6de-5048-432d-a448-7e21f2d1d24a,0,1,350d46bf-114e-48e7-90c6-6708d949f20d,350d46bf-114e-48e7-90c6-6708d949f20d,0,1,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,d047caa8-7bcf-41ac-a18e-97877d6e0a2a,0,1,aac20ff3-5873-432e-b763-14411e623d41,aac20ff3-5873-432e-b763-14411e623d41,0,1,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,fbc4df3e-c235-4197-8c1f-a5e39ac63a8c,0,1,6df44466-8750-481a-9baf-c924f0d45353,6df44466-8750-481a-9baf-c924f0d45353,0,1,110121eb-a0eb-4662-8911-3dcc3d341a73,110121eb-a0eb-4662-8911-3dcc3d341a73,0,1,f8980c18-6b9c-4e45-919a-22e976d2a846,f8980c18-6b9c-4e45-919a-22e976d2a846,0,1,c946efb7-c67e-49c1-bf56-d3c2d7220acd,c946efb7-c67e-49c1-bf56-d3c2d7220acd,0,1,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,7ed6bd83-b61d-4db4-8549-acacbdda6ca2,0,1,6b7c9f74-f2b6-463e-acb9-9f82901986cf,6b7c9f74-f2b6-463e-acb9-9f82901986cf,0,1,fc4c1d64-132b-4687-a37d-05000fdb4ba5,fc4c1d64-132b-4687-a37d-05000fdb4ba5,0,1,528777cd-090b-4b70-82f5-56def98c5893,528777cd-090b-4b70-82f5-56def98c5893,0,1,49dbe467-8832-4ede-9a05-494248619aeb,49dbe467-8832-4ede-9a05-494248619aeb,0,1,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,460ed9ca-10c2-491c-a641-b92ffc2a8e7c,0,1,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,bd5fadd3-9264-4c3b-9bd5-51e91847a6fb,0,1,09c73108-8528-4970-9b7f-fff9eda7816a,09c73108-8528-4970-9b7f-fff9eda7816a,0,1,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,40aa936e-cb1c-4ae9-85f1-6d930a5815cc,0,1,f568245a-d158-45dc-af92-2d411f12db7b,f568245a-d158-45dc-af92-2d411f12db7b,0,1,0f17cdac-aa17-45e6-b3d0-220b13345390,0f17cdac-aa17-45e6-b3d0-220b13345390,0,1,c675db75-d0c3-4026-b97c-6b23ecbb336a,c675db75-d0c3-4026-b97c-6b23ecbb336a,0,1,469f67fa-98b0-44b0-abd4-cae136c02834,469f67fa-98b0-44b0-abd4-cae136c02834,0,1,16a18458-999c-420e-80df-8fc10855746c,16a18458-999c-420e-80df-8fc10855746c,0,1,b794f222-0fde-439f-97a3-0da74075b415,b794f222-0fde-439f-97a3-0da74075b415,0,1,3a716aad-9b2c-48a7-b802-80732066391b,3a716aad-9b2c-48a7-b802-80732066391b,0,1,480d959f-aac8-4241-875f-78e1c1f32621,480d959f-aac8-4241-875f-78e1c1f32621,0,1,496e5de8-d75c-4536-9993-75374f070b40,496e5de8-d75c-4536-9993-75374f070b40,0,1,b4e610ba-c9c8-4b25-903b-e567dcbc2556,b4e610ba-c9c8-4b25-903b-e567dcbc2556,0,1,48febdbd-a085-4113-8511-ed7ff6be7d3c,48febdbd-a085-4113-8511-ed7ff6be7d3c,0,1,49413232-c0c3-4983-9d10-291a0399281b,49413232-c0c3-4983-9d10-291a0399281b,0,1,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,032bb782-96a7-4c1b-8b8f-eb4e18b555b7,0,1,b9b076bb-38ab-4a94-8226-41a4d4d7432c,b9b076bb-38ab-4a94-8226-41a4d4d7432c,0,1,e12da8db-4037-473e-ba2b-d0ceb4534dcb,e12da8db-4037-473e-ba2b-d0ceb4534dcb,0,1,789514e5-8ea3-4a5e-88c5-ed89c4135866,789514e5-8ea3-4a5e-88c5-ed89c4135866,0,1,a16768ff-6137-43d8-8784-4805ed83632a,a16768ff-6137-43d8-8784-4805ed83632a,0,1,61971286-9f94-4a27-aa34-e10848adb70a,61971286-9f94-4a27-aa34-e10848adb70a,0,1,1e75d143-3452-496e-a137-6d7f4c4ed019,1e75d143-3452-496e-a137-6d7f4c4ed019,0,1,e0619d14-c658-4eb5-841a-3a029de28be4,e0619d14-c658-4eb5-841a-3a029de28be4,0,1,99a3b660-7875-47f7-9c6c-c552e5673deb,99a3b660-7875-47f7-9c6c-c552e5673deb,0,1,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,2bdcf3a5-c8e1-492c-afee-f9db68e2fbb6,0,1,41cbf934-ea54-41df-abf0-09f319d2e67a,41cbf934-ea54-41df-abf0-09f319d2e67a,0,1,47246084-a5f8-4d0f-b4e2-204c1b97483a,47246084-a5f8-4d0f-b4e2-204c1b97483a,0,1,e58233ec-6cfc-4a8b-9929-689fa69cdb07,e58233ec-6cfc-4a8b-9929-689fa69cdb07,0,1,3291a891-a47c-43ca-b088-aecd3867d38c,3291a891-a47c-43ca-b088-aecd3867d38c,0,1,56cde2b4-00f2-49ba-b407-16e241c17fd2,56cde2b4-00f2-49ba-b407-16e241c17fd2,0,1,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,bd84fb2b-4c52-4e2f-a8c5-f289b8336145,0,1,219ed110-f2a0-41c1-ac5a-02301b248c54,219ed110-f2a0-41c1-ac5a-02301b248c54,0,1,1c722dfd-2b07-4985-9188-17353de24771,1c722dfd-2b07-4985-9188-17353de24771,0,1,1a630496-2cdd-4c89-a1aa-ed20545ad133,1a630496-2cdd-4c89-a1aa-ed20545ad133,0,1,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,b0dd02ee-ea6a-43f2-baa2-abac0a1ab4bb,0,1,b19cea0e-e57a-4969-8daf-f48d3d16705f,b19cea0e-e57a-4969-8daf-f48d3d16705f,0,1,d4059340-3361-4baa-ae48-ecbfb9800a2e,d4059340-3361-4baa-ae48-ecbfb9800a2e,0,1,f78f6c43-dd90-4117-acf7-ed5b951cb964,f78f6c43-dd90-4117-acf7-ed5b951cb964,0,1,8eebd519-4989-4784-82b8-39d77eebfb17,8eebd519-4989-4784-82b8-39d77eebfb17,0,1,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0a2cb6e3-d9fa-4881-b136-7b6db9efca07,0,1,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,c1561ed9-2fbf-4c12-a484-07f8adbe8fa3,0,1,4527877b-5723-4aa5-8705-98174ac9c337,4527877b-5723-4aa5-8705-98174ac9c337,0,1,d6b21e7b-df57-4280-8c95-c269b5316018,d6b21e7b-df57-4280-8c95-c269b5316018,0,1,808c468b-6322-428d-ac6a-ccf2228b05b6,808c468b-6322-428d-ac6a-ccf2228b05b6,0,1,13664bb2-738f-4d18-b382-a7bcf8105a5a,13664bb2-738f-4d18-b382-a7bcf8105a5a,0,1,f3f56abe-9248-4555-bf99-29560eb4f9ee,f3f56abe-9248-4555-bf99-29560eb4f9ee,0,1,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0dbd5d55-a85f-4c7e-ac31-7ba4ab7cc371,0,1,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,dd9d09ef-3b4b-4bb5-9408-9c4080049bb3,0,1,3eb43a06-b32d-4904-8489-6264d0207623,3eb43a06-b32d-4904-8489-6264d0207623,0,1,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,a18098cf-5a61-46b5-bd55-cc61d15aa6bc,0,1,18615fe1-cfee-4888-9c09-88d1c5db39eb,18615fe1-cfee-4888-9c09-88d1c5db39eb,0,1,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,63e363fa-8b0c-4d48-ab1b-9c953c5ed4c0,0,1,087c83c0-75e7-476b-b7c6-5be55498a190,087c83c0-75e7-476b-b7c6-5be55498a190,0,1,ec5e5413-9e77-4929-83b8-6fee70688b28,ec5e5413-9e77-4929-83b8-6fee70688b28,0,1,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,59cd8e3f-ecf3-4e1d-bd98-41551d5d6f68,0,1,8390c864-2b84-4c45-8583-cb4a4ab49168,8390c864-2b84-4c45-8583-cb4a4ab49168,0,1,1b2fefca-fef5-4319-90cc-325444cb63a6,1b2fefca-fef5-4319-90cc-325444cb63a6,0,1,34a128be-8fbb-4dd8-ac23-9f35041feb63,34a128be-8fbb-4dd8-ac23-9f35041feb63,0,1,baa31006-e0d6-496e-a60e-27b3dfd19397,baa31006-e0d6-496e-a60e-27b3dfd19397,0,1,3007d8ff-3942-45ed-bac5-8a6c40ca060c,3007d8ff-3942-45ed-bac5-8a6c40ca060c,0,1,8bfe1474-fd12-4744-a9ab-3383bfe766b3,8bfe1474-fd12-4744-a9ab-3383bfe766b3,0,1,3af97375-f776-4129-9521-b8d65d795db6,3af97375-f776-4129-9521-b8d65d795db6,0,1,0e98801b-a45b-44cb-a341-7e43d723f6ed,0e98801b-a45b-44cb-a341-7e43d723f6ed,0,1,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,5b71cd3b-d5b8-4632-9678-0ab1e1d2ea91,0,1,103ac72d-c386-40ea-89d4-35798d064f1a,103ac72d-c386-40ea-89d4-35798d064f1a,0,1,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,645ceb40-1e9f-4a67-aa7f-b9002fa066b3,0,1,d1fe15e9-8e5c-4819-85cd-24ab31409437,d1fe15e9-8e5c-4819-85cd-24ab31409437,0,1,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,c8c5bfe9-ead5-4e79-9fd5-60ad275faa1e,0,1,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,8f9826b6-890e-4ba3-a1f2-bc9ebb3238dd,0,1,74f68bda-17b1-4b3c-aa64-b1014300f9b5,74f68bda-17b1-4b3c-aa64-b1014300f9b5,0,1,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,90a195b0-7f64-4ccb-986e-8c8c2cf12ccd,0,1,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,9f9d1f8c-7ff9-420f-a426-48f33493d9f2,0,1,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,ab7bc0bc-b4b8-4a4a-aecc-1cbe14fd4975,0,1,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,9f8d9594-674f-49ef-9fb8-bb64d5c40a37,0,1,47ee7d38-9fa9-458d-abee-e11270f79494,47ee7d38-9fa9-458d-abee-e11270f79494,0,1,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,bb6b83ff-81f4-4c39-ad8e-8cda9ccd9cb9,0,1,076daecf-8fcb-496b-9f13-c4faa3a8a722,076daecf-8fcb-496b-9f13-c4faa3a8a722,0,1,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,f1a8357b-7083-42b3-ab5d-36223a3dd2a4,0,1,296d7725-bdd3-4210-9db9-31de5711ea9b,296d7725-bdd3-4210-9db9-31de5711ea9b,0,1,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,6ecc5bc2-20b3-46f3-8019-ae1e1f3de319,0,1,1d05f89a-23dd-4d30-8786-abe8a9a39a40,1d05f89a-23dd-4d30-8786-abe8a9a39a40,0,1,245c2c6c-7b7f-4381-9304-1d7287a215fa,245c2c6c-7b7f-4381-9304-1d7287a215fa,0,1,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,fd17bbe4-34d9-4832-8eea-8eeb82194e4c,0,1,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,d4c72d7f-7e1f-473c-9a2b-fa675fc78731,0,1,8bb5be12-98df-4a38-bffe-432fb13d8101,8bb5be12-98df-4a38-bffe-432fb13d8101,0,1,94209023-ce88-401c-9aff-526fb7e43709,94209023-ce88-401c-9aff-526fb7e43709,0,1,22b99094-b52a-4244-ae91-53848d82560b,22b99094-b52a-4244-ae91-53848d82560b,0,1,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,22c9e2fa-c1f0-41ec-b6f2-9d7357dd3479,0,1,b0002134-d5c9-4508-9f0e-97f92461b590,b0002134-d5c9-4508-9f0e-97f92461b590,0,1,1506ec71-cb38-4831-a29d-dac2c4deddda,1506ec71-cb38-4831-a29d-dac2c4deddda,0,1,e05fd82b-b77b-4b7f-b300-43653017f341,e05fd82b-b77b-4b7f-b300-43653017f341,0,1,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,d3b5e5ee-2317-43b4-b669-3af2ce635cf3,0,1,f15a0526-c207-42fe-aed9-438ae0c4a4b8,f15a0526-c207-42fe-aed9-438ae0c4a4b8,0,1,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,9d444a41-7190-48fb-9a4a-08f8e7bc32a3,0,1,8583cab0-0620-4346-96e0-bcac40981b8a,8583cab0-0620-4346-96e0-bcac40981b8a,0,1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,e1dfba26-c682-42a2-8e15-fe6f535c9ce1,0,1,095990b1-187b-400c-941a-275f272239ca,095990b1-187b-400c-941a-275f272239ca,0,1,ba108470-350d-40c3-bb44-9852c2aa8c97,ba108470-350d-40c3-bb44-9852c2aa8c97,0,1,a37c33fa-64b0-4a1b-846a-0a236bad44f8,a37c33fa-64b0-4a1b-846a-0a236bad44f8,0,1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,d8481ce1-7f64-47b0-8fc0-6642ae93aca1,0,1,a50f4324-da44-449b-b500-74228b2aa7e0,a50f4324-da44-449b-b500-74228b2aa7e0,0,1,04236716-9c36-4a1d-b4fb-4b8c65644ab4,04236716-9c36-4a1d-b4fb-4b8c65644ab4,0,1,97276702-6686-4ac4-8360-d85369a08b20,97276702-6686-4ac4-8360-d85369a08b20,0,1,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,e5450ee7-e891-4f58-9a01-d2d81d5ddd6d,0,1,068883fe-d7ae-40e7-ad82-864867916daa,068883fe-d7ae-40e7-ad82-864867916daa,0,1,c1b02568-2095-4f83-8543-2402f67dbe3d,c1b02568-2095-4f83-8543-2402f67dbe3d,0,1,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,8b749b7a-5e68-4523-adc2-8b3c5ce9701c,0,1,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,bf3c7edc-0791-459e-a7ac-b7e8d7ed97fe,0,1,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,7dc6d13e-4edf-4e6a-9ee9-4b32ad889ecf,0,1,aecbd726-6952-49e6-b544-4c5cc764c24c,aecbd726-6952-49e6-b544-4c5cc764c24c,0,1,d335cfbf-bc78-4274-a178-10f60372474a,d335cfbf-bc78-4274-a178-10f60372474a,0,1,0f4411b3-addf-4fcf-8da8-c5140dea356c,0f4411b3-addf-4fcf-8da8-c5140dea356c,0,1,c501f9ab-d01b-4137-8cd0-e66103117c84,c501f9ab-d01b-4137-8cd0-e66103117c84,0,1,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,8d5d4e0f-b7b5-4cdc-aedc-571517fa101f,0,1,66e65355-1424-4c74-801c-faf5357257aa,66e65355-1424-4c74-801c-faf5357257aa,0,1,0a93187b-7ae4-4985-8089-3099dfec2b48,0a93187b-7ae4-4985-8089-3099dfec2b48,0,1,044458f3-ed9b-4afb-ae73-8f9162c032bf,044458f3-ed9b-4afb-ae73-8f9162c032bf,0,1,578f618e-5f4a-4e86-959d-39b59e973936,578f618e-5f4a-4e86-959d-39b59e973936,0,1,f74ede2e-2d28-4224-ba44-773eda7760a4,f74ede2e-2d28-4224-ba44-773eda7760a4,0,1,217df06a-1bdf-4394-b617-ed756ff17bc6,217df06a-1bdf-4394-b617-ed756ff17bc6,0,1,a1572e97-a487-497a-9062-49315e237e0f,a1572e97-a487-497a-9062-49315e237e0f,0,1,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,969cdcb8-0f2a-427f-93a0-e7ae38f465e8,0,1,3c5d87a0-cfce-464a-b946-64c5a589a376,3c5d87a0-cfce-464a-b946-64c5a589a376,0,1,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,2d22c67d-4795-4a6b-bc81-a3ed1eb28367,0,1,763de8d1-7f53-41b6-8d97-7da724e9f763,763de8d1-7f53-41b6-8d97-7da724e9f763,0,1,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,75592ed4-2aab-4dfc-ae7b-d93e2a98370f,0,1,4ad59c75-cca4-4968-82e6-babd72d8b318,4ad59c75-cca4-4968-82e6-babd72d8b318,0,1,c248de15-63a2-48ec-8695-7a5213d4fc9b,c248de15-63a2-48ec-8695-7a5213d4fc9b,0,1,272ff0f9-7266-4c22-be12-fe62682b56a5,272ff0f9-7266-4c22-be12-fe62682b56a5,0,1,9f141dd5-d866-4c25-b58a-a7766a08b4e7,9f141dd5-d866-4c25-b58a-a7766a08b4e7,0,1,0570d846-889d-4cfc-98fb-a1ad0181597f,0570d846-889d-4cfc-98fb-a1ad0181597f,0,1,19e17c58-953f-4917-8b6a-c88808fcca36,19e17c58-953f-4917-8b6a-c88808fcca36,0,1,4804316d-3765-4a83-8438-10e8e82656db,4804316d-3765-4a83-8438-10e8e82656db,0,1,59458556-e343-4215-8e6c-69f924ec4183,59458556-e343-4215-8e6c-69f924ec4183,0,1,dd553dca-7eba-41bf-8939-2c61e170ff65,dd553dca-7eba-41bf-8939-2c61e170ff65,0,1,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,b4ecf3dc-a2aa-406e-a593-1700ea8746bc,0,1,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,933d7ce7-ea82-4b26-8d1b-dc92cb5ac92d,0,1,8099e978-28cc-4ade-ac5a-3785f3a45f70,8099e978-28cc-4ade-ac5a-3785f3a45f70,0,1,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,11eff613-8077-41fa-8cb8-5e8dc27d0e4f,0,1,fe023ca5-f11a-4b98-99c1-363508e4ea4a,fe023ca5-f11a-4b98-99c1-363508e4ea4a,0,1,6f8d515e-13d9-45f8-9793-3757f5b85f81,6f8d515e-13d9-45f8-9793-3757f5b85f81,0,1,25ec541c-c437-4318-b2a8-5146df6ae080,25ec541c-c437-4318-b2a8-5146df6ae080,0,1,148754ed-3063-40a7-a3c3-8ad105552370,148754ed-3063-40a7-a3c3-8ad105552370,0,1,ab3f0862-c355-4fd7-a2a7-4eb8278de510,ab3f0862-c355-4fd7-a2a7-4eb8278de510,0,1,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,85bbfe20-a6a4-49ca-8f20-342f4cbe8258,0,1,c12c3f3b-3a96-4e70-b131-8d7bd765095f,c12c3f3b-3a96-4e70-b131-8d7bd765095f,0,1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,70ee4b32-80d1-4b79-a322-0433f1b8c7f1,0,1,c563588c-346e-499e-ae33-9ff3cb62e658,c563588c-346e-499e-ae33-9ff3cb62e658,0,1,40dbc001-97b6-4188-8de9-3adac670bac4,40dbc001-97b6-4188-8de9-3adac670bac4,0,1,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,a4ed8b24-bd23-45a7-9f34-61b25b91d0c6,0,1,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,65efaa10-3239-4f0f-a08e-88c89d9d8d5a,0,1,93aa5247-6823-4f70-9d47-e5a0f409828a,93aa5247-6823-4f70-9d47-e5a0f409828a,0,1,030c6a22-a3d5-4cf2-9f7b-dc4fe3732f83,030c6a22-a3d5-4cf2-9f7b-dc4fe3732f83,0,1,b19f1223-5ebe-4446-bacc-bc7d53486f2e,b19f1223-5ebe-4446-bacc-bc7d53486f2e,0,1,6ea7e8e9-0faa-43fd-b9c8-1a7b8f899d6d,6ea7e8e9-0faa-43fd-b9c8-1a7b8f899d6d,0,1,7be1decf-feb1-422b-a3f2-f60d08fdb0e6,7be1decf-feb1-422b-a3f2-f60d08fdb0e6,0,1,bf3167d6-3047-482a-b280-184f446ae7a3,bf3167d6-3047-482a-b280-184f446ae7a3,0,1,50c47c0a-a199-4020-9df4-91b17c159454,50c47c0a-a199-4020-9df4-91b17c159454,0,1,c1d449af-8a6e-4cb0-b2c9-50ea5405c44c,c1d449af-8a6e-4cb0-b2c9-50ea5405c44c,0,1,faecdc33-fed8-4b44-96f4-4215c26959b6,faecdc33-fed8-4b44-96f4-4215c26959b6,0,1,09c29992-47a8-4fca-bd95-e7dbc53e8c4c,09c29992-47a8-4fca-bd95-e7dbc53e8c4c,0,1,f07cf7bd-6f3f-426a-8b71-ba1dcb827654,f07cf7bd-6f3f-426a-8b71-ba1dcb827654,0,1,9df3792e-a4ee-4a2c-9296-c1384925521e,9df3792e-a4ee-4a2c-9296-c1384925521e,0,1,03d423db-f98a-468f-9040-5b76454e5a98,03d423db-f98a-468f-9040-5b76454e5a98,0,1,08f394f9-d254-4fe5-8651-a69c96de7a62,08f394f9-d254-4fe5-8651-a69c96de7a62,0,1,e90ec54b-8b86-43df-8c3c-18c6676bf3f1,e90ec54b-8b86-43df-8c3c-18c6676bf3f1,0,1,6aff6b2f-660b-4d75-9064-fed7a6b0feac,6aff6b2f-660b-4d75-9064-fed7a6b0feac,0,1,53502127-9f47-4e2e-b3ed-eb3c3aae1c50,53502127-9f47-4e2e-b3ed-eb3c3aae1c50,0,1,2fcdd0b5-b738-4e19-8bbf-13a72d7014ec,2fcdd0b5-b738-4e19-8bbf-13a72d7014ec,0,1,59dc7e8d-6f5c-4e1b-816e-5fc15c0e96e0,59dc7e8d-6f5c-4e1b-816e-5fc15c0e96e0,0,1,e60a9221-7676-456f-8a01-b317b03a278b,e60a9221-7676-456f-8a01-b317b03a278b,0,1,4e81ec90-f668-49ca-9193-22337bafb01b,4e81ec90-f668-49ca-9193-22337bafb01b,0,1,104c7c31-5bbd-4242-b29a-2c0d8b69a1b9,104c7c31-5bbd-4242-b29a-2c0d8b69a1b9,0,1,cd60adec-52d6-4fa8-85ca-26551196432c,cd60adec-52d6-4fa8-85ca-26551196432c,0,1,4dfbabd7-d5e5-4b2a-b8d1-752e416629a0,4dfbabd7-d5e5-4b2a-b8d1-752e416629a0,0,1,b71ddbdb-08bb-46be-a79d-319c4a557e76,b71ddbdb-08bb-46be-a79d-319c4a557e76,0,1,d3dfa867-3d52-4872-a69e-f27636abe1bd,d3dfa867-3d52-4872-a69e-f27636abe1bd,0,1,6952d1aa-7132-4e40-8542-f64a4dc1e029,6952d1aa-7132-4e40-8542-f64a4dc1e029,0,1,51a1bc4c-9139-42a4-92c3-f45c837cbdb9,51a1bc4c-9139-42a4-92c3-f45c837cbdb9,0,1,1621811b-dfd3-4c58-8e15-ced16690147a,1621811b-dfd3-4c58-8e15-ced16690147a,0,1,3f266e51-0476-4b7f-8d61-6f9f4456049d,3f266e51-0476-4b7f-8d61-6f9f4456049d,0,1,2b9ce591-ff13-4c2d-85c4-632a2609a211,2b9ce591-ff13-4c2d-85c4-632a2609a211,0,1,689ca0ec-61ce-4590-b73b-ac81e8f1d459,689ca0ec-61ce-4590-b73b-ac81e8f1d459,0,1,3ea1895f-66d0-4bbb-a66b-0c9d411a7c55,3ea1895f-66d0-4bbb-a66b-0c9d411a7c55,0,1,55ad36d7-399e-4b82-8d1c-d45bd890abfe,55ad36d7-399e-4b82-8d1c-d45bd890abfe,0,1,0f3b9012-7bf6-4451-b0c3-139d98d9c2c1,0f3b9012-7bf6-4451-b0c3-139d98d9c2c1,0,1,1b39a65f-5425-4bcb-85bd-1425274af8a8,1b39a65f-5425-4bcb-85bd-1425274af8a8,0,1,392a0618-a41a-4713-a561-f3a80b85abd8,392a0618-a41a-4713-a561-f3a80b85abd8,0,1,a453384d-658d-40f1-ac69-578aa3a24e39,a453384d-658d-40f1-ac69-578aa3a24e39,0,1,2215a441-b9b1-4e5c-8df3-e6cee9226c43,2215a441-b9b1-4e5c-8df3-e6cee9226c43,0,1,2a8d4908-ea0d-4837-be3f-bd78f6b61254,2a8d4908-ea0d-4837-be3f-bd78f6b61254,0,1,ec1deb79-7369-4b26-8e91-f51399e8052a,ec1deb79-7369-4b26-8e91-f51399e8052a,0,1,75dde4fb-3a1a-450c-95c2-c1f95a781db9,75dde4fb-3a1a-450c-95c2-c1f95a781db9,0,1,0ae3ac56-160a-417e-9952-719d02e7f089,0ae3ac56-160a-417e-9952-719d02e7f089,0,1,f5b3983d-d22d-44a8-9069-0a60d8b858bf,f5b3983d-d22d-44a8-9069-0a60d8b858bf,0,1,48659b94-ace8-45f4-a043-6b2731ec6925,48659b94-ace8-45f4-a043-6b2731ec6925,0,1,3a8e60f9-19cb-42a6-a448-ad211261d9b8,3a8e60f9-19cb-42a6-a448-ad211261d9b8,0,1,74320602-094a-4645-b2c9-3053377a3ac3,74320602-094a-4645-b2c9-3053377a3ac3,0,1,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,3aba26a3-76ee-46c0-9e11-6f64fc754a0d,0,1,b066c732-9c5f-4504-894f-96d457b0768f,b066c732-9c5f-4504-894f-96d457b0768f,0,1,9366463d-aa8a-4e89-86d8-c7f746f9551b,9366463d-aa8a-4e89-86d8-c7f746f9551b,0,1,e25da569-d435-45b2-b4e8-fc76d7f1c8df,e25da569-d435-45b2-b4e8-fc76d7f1c8df,0,1,a51a7f57-9c52-4457-819c-13e1b6f886e1,a51a7f57-9c52-4457-819c-13e1b6f886e1,0,1,7d08daba-5e36-4ce3-8a70-17750959b89e,7d08daba-5e36-4ce3-8a70-17750959b89e,0,1,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,e2c2d915-ae50-4fa0-add3-26ad7dc75efb,0,1,39344a8c-2662-48ff-937b-12951bb268fb,39344a8c-2662-48ff-937b-12951bb268fb,0,1,b577663f-ead2-4b18-a4f6-f7f303e89319,b577663f-ead2-4b18-a4f6-f7f303e89319,0,1,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,43dc335f-5503-47ab-9c6b-0b4c6ab13f57,0,1,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,6cc0a1d7-01eb-4af6-b4ed-4002e2316080,0,1,72663843-4010-42ed-989b-0b58bf9f7146,72663843-4010-42ed-989b-0b58bf9f7146,0,1,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,79da4490-f0b0-48b5-b435-3b2c9ffb0eb3,0,1,3adcceea-867e-4b88-a633-4f8d4ccb43c0,3adcceea-867e-4b88-a633-4f8d4ccb43c0,0,1,a132189c-6584-4bb1-9cfd-1415cd83228a,a132189c-6584-4bb1-9cfd-1415cd83228a,0,1,7ba50e13-0a78-4cca-821f-006b1c83b0b0,7ba50e13-0a78-4cca-821f-006b1c83b0b0,0,1,a3670f95-5abe-49ee-8ea5-d7e4438801ba,a3670f95-5abe-49ee-8ea5-d7e4438801ba,0,1,4443dea1-5143-4e76-97a7-c35dbe1665e4,4443dea1-5143-4e76-97a7-c35dbe1665e4,0,1,0d780521-0767-425a-b44d-315d2dc42d04,0d780521-0767-425a-b44d-315d2dc42d04,0,1,c5b1572d-28f5-42f3-b2e0-8b54f091642e,c5b1572d-28f5-42f3-b2e0-8b54f091642e,0,1,0986c1b6-b677-428d-b49f-a93e40e77171,0986c1b6-b677-428d-b49f-a93e40e77171,0,1,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,b9c41558-8fe7-45f6-bcb0-5ea3a35264cf,0,1,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,597c1f9b-3cbd-42bd-b819-f29b3a3f073a,0,1,b6662b2e-7e93-4eaa-9e4b-b5647285932b,b6662b2e-7e93-4eaa-9e4b-b5647285932b,0,1,4a180f2c-dc54-4591-8f62-f236d1e07799,4a180f2c-dc54-4591-8f62-f236d1e07799,0,1,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,3f1578ba-3d55-4eff-bbdd-6329dd5060d5,0,1,7572095f-d755-4929-8862-071b1c34f758,7572095f-d755-4929-8862-071b1c34f758,0,1,4e36184e-d818-4f38-9257-6d91d9cc85ae,4e36184e-d818-4f38-9257-6d91d9cc85ae,0,1,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,afcba8a1-5d3e-4a76-9be9-5fbda20d55bd,0,1,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,cbdc8d7e-b685-4c8d-9f47-d8bfb08300d4,0,1,3893a258-a9c7-441a-b80c-1cc8c3f4735c,3893a258-a9c7-441a-b80c-1cc8c3f4735c,0,1,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,f9ad1ef3-7475-4d55-a1ef-eadceda9bf6b,0,1,c66d0377-45bb-4ef0-bf9b-b44a9c510d38,c66d0377-45bb-4ef0-bf9b-b44a9c510d38,0,1,420748d8-4042-4e1e-aca1-ac0190cdf54e,420748d8-4042-4e1e-aca1-ac0190cdf54e,0,1,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,a64b15fa-fc34-43fe-a366-d27c0f1c3df2,0,1,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,8b13e848-8fd3-4326-bd18-5a5b12ed3dc5,0,1,f8a456fa-a533-444c-a504-0e74306ada44,f8a456fa-a533-444c-a504-0e74306ada44,0,1,4751a91a-f211-4f66-8238-9bb5668cbc67,4751a91a-f211-4f66-8238-9bb5668cbc67,0,1,f1381abc-e09f-407d-b6b5-c59e7c9e2fd7,f1381abc-e09f-407d-b6b5-c59e7c9e2fd7,0,1,e6c871d6-e06f-420b-ae04-dbf735d3233d,e6c871d6-e06f-420b-ae04-dbf735d3233d,0,1,b9a6b053-2b93-4946-9531-040d3131dcc5,b9a6b053-2b93-4946-9531-040d3131dcc5,0,1,6287eded-23d8-4b04-8415-1d9afa17713b,6287eded-23d8-4b04-8415-1d9afa17713b,0,1,8ce3513d-d086-46f4-81c3-1761594a64c5,8ce3513d-d086-46f4-81c3-1761594a64c5,0,1,79cb147c-8c6b-4f6e-8d5d-dfa29a6e6e53,79cb147c-8c6b-4f6e-8d5d-dfa29a6e6e53,0,1,704f07f2-0513-4a54-bb41-27ca3deb5834,704f07f2-0513-4a54-bb41-27ca3deb5834,0,1,0504ea28-d8ed-43ac-afa5-c3f32c21b385,0504ea28-d8ed-43ac-afa5-c3f32c21b385,0,1,2ccbc9aa-52d3-4cf3-8e83-77aaef82a38d,2ccbc9aa-52d3-4cf3-8e83-77aaef82a38d,0,1,e9c632b0-7977-4e44-ac56-882617ad7cdc,e9c632b0-7977-4e44-ac56-882617ad7cdc,0,1,e84acba7-7e0f-43e8-a545-6e53d529d5d4,e84acba7-7e0f-43e8-a545-6e53d529d5d4,0,1,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,3b089d90-7ece-4b74-a4dc-e436d9d31b3b,0,1,6086d53f-f1b2-4126-ab46-64705fe63b87,6086d53f-f1b2-4126-ab46-64705fe63b87,0,1,9295d88f-0865-440c-a98a-4710c50211be,9295d88f-0865-440c-a98a-4710c50211be,0,1,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,90aa51ae-434d-48f4-bfe3-0e1dd3aeea6f,0,1,38ac9a13-665a-4201-b5cc-687fe4a01130,38ac9a13-665a-4201-b5cc-687fe4a01130,0,1,97c59096-b2dc-45d0-a580-b3018a04f9af,97c59096-b2dc-45d0-a580-b3018a04f9af,0,1,6fbf63b7-1692-495e-a8ec-bdda182997a3,6fbf63b7-1692-495e-a8ec-bdda182997a3,0,1,8172256e-f51e-4de0-bd07-3668785f4cb9,8172256e-f51e-4de0-bd07-3668785f4cb9,0,1,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,ccb54dc9-3d12-43d0-af6a-138d3526f5d5,0,1,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,b82bcff8-49c9-44a9-8a9f-4428b0cc54a5,0,1,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,870b4d6d-0b89-4eda-a2b3-5c6db7dbe864,0,1,c172aeaf-b444-47c0-baee-80ccd91fe934,c172aeaf-b444-47c0-baee-80ccd91fe934,0,1,b8c36d5a-7966-4978-9225-67502b9c60a4,b8c36d5a-7966-4978-9225-67502b9c60a4,0,1,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,37ea0c64-2fec-4c2e-922b-d3a2f01f3e22,0,1,bb6e6574-4328-4cf5-a043-a7d8f6c81414,bb6e6574-4328-4cf5-a043-a7d8f6c81414,0,1,b46b5090-5eb1-4950-9031-8b43f611fa9c,b46b5090-5eb1-4950-9031-8b43f611fa9c,0,1,94e02f76-8656-4999-9470-dd996118400c,94e02f76-8656-4999-9470-dd996118400c,0,1,9effd265-3783-44e2-8698-80dd82137546,9effd265-3783-44e2-8698-80dd82137546,0,1,bef52020-98f8-465b-8981-e5f8eed62308,bef52020-98f8-465b-8981-e5f8eed62308,0,1,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,19897ad0-bdb5-439c-b4a2-a773c0ce5cf5,0,1,e731dab7-df9e-48ae-8542-4c0c30666ae9,e731dab7-df9e-48ae-8542-4c0c30666ae9,0,1,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0841ebfc-12e6-4b3e-a60f-861b15e1b63c,0,1,bde05768-2dd6-4800-985d-27075f610cca,bde05768-2dd6-4800-985d-27075f610cca,0,1,d18956cf-e449-48cc-a127-01b5dc910ea2,d18956cf-e449-48cc-a127-01b5dc910ea2,0,1,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,8e5487a3-b5e5-40ca-88f3-5b0ea0c4d481,0,1,e352fc19-96be-4410-a516-bc58cc234422,e352fc19-96be-4410-a516-bc58cc234422,0,1,9b742da4-1696-4c06-9dfa-dd85c9286c74,9b742da4-1696-4c06-9dfa-dd85c9286c74,0,1,757ea742-8c14-4e0a-a867-432eee5cfc64,757ea742-8c14-4e0a-a867-432eee5cfc64,0,1,db1062bc-4164-4095-9640-9804c0ebcd0b,db1062bc-4164-4095-9640-9804c0ebcd0b,0,1,ea7c61ff-745c-4908-9a94-bba022d12de4,ea7c61ff-745c-4908-9a94-bba022d12de4,0,1,4d6683a3-1edd-4d04-8e02-0be002e4e5a4,4d6683a3-1edd-4d04-8e02-0be002e4e5a4,0,1,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,c7ffd8ab-15e9-4cf1-a7fd-d05534dff000,0,1,53caada5-1d53-45dc-9432-90075ddca890,53caada5-1d53-45dc-9432-90075ddca890,0,1,d1472d23-954b-4069-b2d6-df08c6ec0be1,d1472d23-954b-4069-b2d6-df08c6ec0be1,0,1,93fe2ce6-7193-42bc-a966-4653b7989eaa,93fe2ce6-7193-42bc-a966-4653b7989eaa,0,1,a7fe0aa5-722c-4a09-889b-ee422421addc,a7fe0aa5-722c-4a09-889b-ee422421addc,0,1,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,798bd34c-d0ee-4590-9b1d-8bc47e42ca8c,0,1,0c838a31-2b08-447c-b39a-a613cfba526c,0c838a31-2b08-447c-b39a-a613cfba526c,0,1,b25083c5-9b97-49a4-b6c3-bbf8d7f91cd3,b25083c5-9b97-49a4-b6c3-bbf8d7f91cd3,0,1,86c679c0-3531-4622-9a1f-3d9d6ccdd431,86c679c0-3531-4622-9a1f-3d9d6ccdd431,0,1,3bc2ca38-4a10-4ebd-a5dc-3418db494f0c,3bc2ca38-4a10-4ebd-a5dc-3418db494f0c,0,1,670c62c1-1a33-4dec-9540-5b4c1fe29074,670c62c1-1a33-4dec-9540-5b4c1fe29074,0,1,cc664d81-d0af-4d25-ae29-64f422e51bf2,cc664d81-d0af-4d25-ae29-64f422e51bf2,0,1,e1314cd1-e662-4c29-ad51-492cb0029883,e1314cd1-e662-4c29-ad51-492cb0029883,0,1,879844f0-30b4-47f5-8d2e-5fea29910368,879844f0-30b4-47f5-8d2e-5fea29910368,0,1,9bc09758-a7ce-44e0-baa3-a3e909869d9b,9bc09758-a7ce-44e0-baa3-a3e909869d9b,0,1,303334ba-2785-47fe-a094-84f9dea33be2,303334ba-2785-47fe-a094-84f9dea33be2,0,1,9690842c-7a2c-4b5d-a238-f730afc49a7b,9690842c-7a2c-4b5d-a238-f730afc49a7b,0,1,04424730-6992-4a5b-838b-7a7c16dedbd0,04424730-6992-4a5b-838b-7a7c16dedbd0,0,1,240bec31-cd59-477b-8459-8e3278da22dc,240bec31-cd59-477b-8459-8e3278da22dc,0,1,e0519f0c-9c99-4f5c-a3a9-27adce45737d,e0519f0c-9c99-4f5c-a3a9-27adce45737d,0,1,554320a0-55dc-4289-bb08-63d405cb4ca5,554320a0-55dc-4289-bb08-63d405cb4ca5,0,1,0874a3c0-0d16-4172-b467-f0666d5fcaee,0874a3c0-0d16-4172-b467-f0666d5fcaee,0,1,cc380a19-ab29-4f20-93ad-9a58cd4de56e,cc380a19-ab29-4f20-93ad-9a58cd4de56e,0,1,6a5f7521-270e-476e-88ec-a8cf79ea61a6,6a5f7521-270e-476e-88ec-a8cf79ea61a6,0,1,e54a8786-86a4-48e3-a210-aaae4e5fce8c,e54a8786-86a4-48e3-a210-aaae4e5fce8c,0,1,86c86ea2-d14e-4443-b36c-c1c17c4f768a,86c86ea2-d14e-4443-b36c-c1c17c4f768a,0,1,14512818-58b0-44cc-b00d-d37913c57aad,14512818-58b0-44cc-b00d-d37913c57aad,0,1,57964dd6-4b0b-4590-bc44-de744cc423af,57964dd6-4b0b-4590-bc44-de744cc423af,0,1,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,364cbfe2-bc44-4387-aa7e-6b4aa086c9e9,0,1,46e0522b-b88b-43b2-9067-a5359e90994b,46e0522b-b88b-43b2-9067-a5359e90994b,0,1,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,727c7c01-83e6-4d59-afa4-ee36f1cbacf2,0,1,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,b143bc6d-ead6-41a2-9a15-1a44488c1ce4,0,1,72d41d01-9c9d-4fbe-8a39-932d82d171ef,72d41d01-9c9d-4fbe-8a39-932d82d171ef,0,1,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,b1e7d3c3-9fc1-4364-a8c3-b076080c7472,0,1,697d5715-dd04-40be-9b28-539734725158,697d5715-dd04-40be-9b28-539734725158,0,1,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,d831a8ac-88a4-4191-ab0b-7538dfb3e7d7,0,1,d95fcb37-fc65-466d-93e2-489f41683276,d95fcb37-fc65-466d-93e2-489f41683276,0,1,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,c6b0d31e-7b68-4c7f-a565-0ac8a7c11143,0,1,a27a9296-46bb-49a1-8308-db675baa81d0,a27a9296-46bb-49a1-8308-db675baa81d0,0,1,1456f317-360c-4190-b2d1-1be7484369a5,1456f317-360c-4190-b2d1-1be7484369a5,0,1,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,5ac74bb3-a4df-47db-ad87-6cb95b85c51f,0,1,4867948f-b027-44ae-b78c-a94e00eed52b,4867948f-b027-44ae-b78c-a94e00eed52b,0,1,39ed5463-b1c0-44bb-9d71-4ef08007a7d0,39ed5463-b1c0-44bb-9d71-4ef08007a7d0,0,1,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,3d4cb11a-7ce7-4c46-a427-99d6f41f08bf,0,1,56cc2ba7-fee3-4dcb-9a2a-93dc94a5ee1f,56cc2ba7-fee3-4dcb-9a2a-93dc94a5ee1f,0,1,ef044879-e731-418a-b917-6a685f27c5f4,ef044879-e731-418a-b917-6a685f27c5f4,0,1,f0ffe529-481f-4eed-8fc8-02a9d8f08f7a,f0ffe529-481f-4eed-8fc8-02a9d8f08f7a,0,1,618d13d5-fd1f-4b70-ad45-dd6a17a50730,618d13d5-fd1f-4b70-ad45-dd6a17a50730,0,1,58037b76-b548-4f07-bd67-67e552a5c6e5,58037b76-b548-4f07-bd67-67e552a5c6e5,0,1,68f19104-5fa3-4f28-a84b-bf68c3bed49b,68f19104-5fa3-4f28-a84b-bf68c3bed49b,0,1,f88ccd7a-8d15-4b24-addf-da522a0b4a43,f88ccd7a-8d15-4b24-addf-da522a0b4a43,0,1,349378d1-abe3-44de-84a4-d525b08e0474,349378d1-abe3-44de-84a4-d525b08e0474,0,1,1526b18d-7fab-414e-a5b2-377b67ac0b55,1526b18d-7fab-414e-a5b2-377b67ac0b55,0,1,c561fe6b-53ea-435b-a230-1850e2dc1ff5,c561fe6b-53ea-435b-a230-1850e2dc1ff5,0,1,aba7605f-6baf-42a8-b5ad-8f71c780b81f,aba7605f-6baf-42a8-b5ad-8f71c780b81f,0,1,8fc19eca-1a15-4758-af4b-79637e51edfb,8fc19eca-1a15-4758-af4b-79637e51edfb,0,1,be9144ce-5560-47bb-8c5e-9beefd15bfc3,be9144ce-5560-47bb-8c5e-9beefd15bfc3,0,1,ad09d1e6-5982-4e1c-864e-452ac5b2915a,ad09d1e6-5982-4e1c-864e-452ac5b2915a,0,1,caea53be-d2f7-4109-8017-d2bfdfde8c6f,caea53be-d2f7-4109-8017-d2bfdfde8c6f,0,1,60f30706-9919-4767-a17c-660754b9d542,60f30706-9919-4767-a17c-660754b9d542,0,1,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,7de19812-ed6c-41b5-82aa-b9a8e6d808f2,0,1,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0dcc3bbf-afbe-4a4e-bc4a-17534d5fab28,0,1,28dc34df-1daa-49a2-a12e-db91ee963459,28dc34df-1daa-49a2-a12e-db91ee963459,0,1,e590825f-10c6-4fdd-98cd-3da01da2ed4f,e590825f-10c6-4fdd-98cd-3da01da2ed4f,0,1,2233ce53-b8a8-4c83-97a2-683c8575462a,2233ce53-b8a8-4c83-97a2-683c8575462a,0,1,2071f210-dc13-43c0-a58e-b982821d6842,2071f210-dc13-43c0-a58e-b982821d6842,0,1,3cda70d0-3116-4508-82ea-5ea0f0921262,3cda70d0-3116-4508-82ea-5ea0f0921262,0,1,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,d5588c0d-3e94-485b-a7e9-45f5cf74df9e,0,1,c2ef8d6b-de7b-430d-ac30-76cdaf0579c2,c2ef8d6b-de7b-430d-ac30-76cdaf0579c2,0,1,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0e805e1f-3797-4ef9-94d3-0ec58ac1b605,0,1,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,8677bd53-5569-4d44-b7ce-d1b3fe12c78d,0,1,19056365-9ff1-4733-876e-a7ebdbbe0557,19056365-9ff1-4733-876e-a7ebdbbe0557,0,1,5e09dc5e-bbb7-4c38-b609-940c24f63c84,5e09dc5e-bbb7-4c38-b609-940c24f63c84,0,1,017b28eb-8ba9-465e-a748-20eadbeb4ea2,017b28eb-8ba9-465e-a748-20eadbeb4ea2,0,1,c0bb2d66-94c9-4bc6-afd5-534075e8395b,c0bb2d66-94c9-4bc6-afd5-534075e8395b,0,1,db7cc693-1645-4416-a9d9-5a7584cd3bbc,db7cc693-1645-4416-a9d9-5a7584cd3bbc,0,1,c849fb09-7833-49c8-9461-98426dc6c0af,c849fb09-7833-49c8-9461-98426dc6c0af,0,1,6c58fc3a-37f8-44b7-b076-2c10ce09b554,6c58fc3a-37f8-44b7-b076-2c10ce09b554,0,1,8ca0258c-96d8-4a12-b94f-db968195ee0a,8ca0258c-96d8-4a12-b94f-db968195ee0a,0,1,245c07a9-98b0-452b-b899-dc8751ab7ce0,245c07a9-98b0-452b-b899-dc8751ab7ce0,0,1,75ffd0b9-79be-4600-a310-591fddb6d63e,75ffd0b9-79be-4600-a310-591fddb6d63e,0,1,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,4883cb3d-4ab3-4e0e-bddb-ae8852547a3c,0,1,b4b8dd52-0cc4-4c69-9ec7-f06f2d79586b,b4b8dd52-0cc4-4c69-9ec7-f06f2d79586b,0,1,4e550d28-7174-412b-bfed-559a3dc753f6,4e550d28-7174-412b-bfed-559a3dc753f6,0,1,47da49ee-b243-4e78-9c8f-bb26c60e6136,47da49ee-b243-4e78-9c8f-bb26c60e6136,0,1,39bee714-cacd-4d48-97a5-c838660e049a,39bee714-cacd-4d48-97a5-c838660e049a,0,1,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,ea97b67e-1182-49c3-b95a-8fcce4cd3d09,0,1,4aac940e-334b-42d2-bff1-0db9dfeff272,4aac940e-334b-42d2-bff1-0db9dfeff272,0,1,c33bcfcd-b5e2-46db-ba70-c373db613394,c33bcfcd-b5e2-46db-ba70-c373db613394,0,1,fef727fa-f63b-4467-9367-73a2425b19e3,fef727fa-f63b-4467-9367-73a2425b19e3,0,1,bfa90848-930f-433d-8f6f-c11ac2c5eba2,bfa90848-930f-433d-8f6f-c11ac2c5eba2,0,1,2baf6d7a-12ed-4f22-ad96-92bb31b747ff,2baf6d7a-12ed-4f22-ad96-92bb31b747ff,0,1,75666bb9-f6d3-4dd6-8220-427a81f23fc9,75666bb9-f6d3-4dd6-8220-427a81f23fc9,0,1,becf53b6-3fbc-4c70-822f-4a70b0434353,becf53b6-3fbc-4c70-822f-4a70b0434353,0,1,9376b18c-cffd-488b-8a1e-cca598f018bc,9376b18c-cffd-488b-8a1e-cca598f018bc,0,1,d78b5faf-b34b-4fa2-89a5-f4bc45203528,d78b5faf-b34b-4fa2-89a5-f4bc45203528,0,1,942a962a-bccb-42c0-b279-077a9b33c70a,942a962a-bccb-42c0-b279-077a9b33c70a,0,1,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,f8dc2485-685b-4e41-834a-a2cbbbe4d53b,0,1,652ee894-047b-4a5a-a500-2d61b4c4a473,652ee894-047b-4a5a-a500-2d61b4c4a473,0,1,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,8a95d199-9bd1-4cbb-9d1a-941e80fa2105,0,1,c03f9972-5a1f-449b-b170-5a958c2b5846,c03f9972-5a1f-449b-b170-5a958c2b5846,0,1,33f8cd94-71e7-4703-92c3-22690fbd871a,33f8cd94-71e7-4703-92c3-22690fbd871a,0,1,b6e5de4d-0156-4342-b646-6e6920a4bd3a,b6e5de4d-0156-4342-b646-6e6920a4bd3a,0,1,09858042-6284-4499-8055-c1b5b783ce5f,09858042-6284-4499-8055-c1b5b783ce5f,0,1,1e63c656-a0e7-4b33-8bac-2a196e028ffa,1e63c656-a0e7-4b33-8bac-2a196e028ffa,0,1,085cbea9-1df1-4ee9-afb7-da2bf313697e,085cbea9-1df1-4ee9-afb7-da2bf313697e,0,1,b3152292-5546-4896-ad24-cb41057698d8,b3152292-5546-4896-ad24-cb41057698d8,0,1,bb722783-1e0b-4543-b110-fdf69b4fe20e,bb722783-1e0b-4543-b110-fdf69b4fe20e,0,1,38fc1e6e-7cd3-437b-b429-6655be34cd01,38fc1e6e-7cd3-437b-b429-6655be34cd01,0,1,c38d8135-e11f-4860-b370-84ff279b7fbd,c38d8135-e11f-4860-b370-84ff279b7fbd,0,1,ee0798f5-47a8-4118-a25c-cfd3473007c1,ee0798f5-47a8-4118-a25c-cfd3473007c1,0,1,e25b2b10-bf08-42db-9642-861efc5e583b,e25b2b10-bf08-42db-9642-861efc5e583b,0,1,29f2094a-d0d1-425c-8161-45a9ba186e19,29f2094a-d0d1-425c-8161-45a9ba186e19,0,1,ffe7858a-6c92-4951-8dbf-327215894ace,ffe7858a-6c92-4951-8dbf-327215894ace,0,1,69149ce1-d3f8-4e12-be8f-b328ade60882,69149ce1-d3f8-4e12-be8f-b328ade60882,0,1,ff592ecb-eb08-4554-87bf-1d2935b21d3c,ff592ecb-eb08-4554-87bf-1d2935b21d3c,0,1,e50cb13a-151b-45d2-a7b7-d23440ddfa24,e50cb13a-151b-45d2-a7b7-d23440ddfa24,0,1,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0b8bfb71-d430-4bdf-8391-a534b3a15fc3,0,1,0d8770aa-fa6e-471c-92c8-b96576927ef0,0d8770aa-fa6e-471c-92c8-b96576927ef0,0,1,1e3c444d-6f73-4eb0-a12d-7106daf36b14,1e3c444d-6f73-4eb0-a12d-7106daf36b14,0,1,b8a32c33-4e15-4c21-baab-64a86d44321b,b8a32c33-4e15-4c21-baab-64a86d44321b,0,1,e7d51ada-f286-4519-bfae-ece95dd4d7b0,e7d51ada-f286-4519-bfae-ece95dd4d7b0,0,1,d7dd9a03-6818-4987-8f39-58e1c906569f,d7dd9a03-6818-4987-8f39-58e1c906569f,0,1,fce028b8-b530-49f0-b6ad-a28d03e19b0f,fce028b8-b530-49f0-b6ad-a28d03e19b0f,0,1,301eea20-0e7f-441e-a531-28b4627dfd93,301eea20-0e7f-441e-a531-28b4627dfd93,0,1,95a71c2e-aa39-42ec-8889-2390a553f146,95a71c2e-aa39-42ec-8889-2390a553f146,0,1,d975aef4-8da8-4486-baeb-a99c48cff0ec,d975aef4-8da8-4486-baeb-a99c48cff0ec,0,1,9da27139-0bed-47b0-aef6-246929968502,9da27139-0bed-47b0-aef6-246929968502,0,1,68e82adf-bc03-4f23-9ec4-749ed42241da,68e82adf-bc03-4f23-9ec4-749ed42241da,0,1,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,7ae5d177-a3e6-4989-b10c-8e0a605c26d9,0,1,41f87891-ddd5-4e0f-a4f2-8039fb71981b,41f87891-ddd5-4e0f-a4f2-8039fb71981b,0,1,a57f6dc1-59d7-4311-8acd-65ce57a9f386,a57f6dc1-59d7-4311-8acd-65ce57a9f386,0,1,25896075-2484-4879-8310-7f5680d80b48,25896075-2484-4879-8310-7f5680d80b48,0,1,893b2dd9-a939-4799-9b78-50d788a5f3ba,893b2dd9-a939-4799-9b78-50d788a5f3ba,0,1,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,68229ecd-7ecc-4194-a3e5-f8df39b55d6a,0,1,e4842271-4fc0-4e15-afef-876f05af78c0,e4842271-4fc0-4e15-afef-876f05af78c0,0,1,135d57fe-d420-4bb0-9120-e43fd9b55c16,135d57fe-d420-4bb0-9120-e43fd9b55c16,0,1,31ee6430-b65d-42fa-859b-c4f1c40686ae,31ee6430-b65d-42fa-859b-c4f1c40686ae,0,1,c59e11f3-6bcb-404a-9d76-1416c12be354,c59e11f3-6bcb-404a-9d76-1416c12be354,0,1,c1a1f12b-3978-4047-956e-a5c7de8371a0,c1a1f12b-3978-4047-956e-a5c7de8371a0,0,1,ac39b903-0c60-417e-a50f-49ed375424f5,ac39b903-0c60-417e-a50f-49ed375424f5,0,1,831f4abd-4f96-417f-a71a-9ff481c23922,831f4abd-4f96-417f-a71a-9ff481c23922,0,1,16392cf6-dd83-4df0-a54b-6efc29778a89,16392cf6-dd83-4df0-a54b-6efc29778a89,0,1,bc96a131-9e79-4ea2-9294-84b3bd1cc85f,bc96a131-9e79-4ea2-9294-84b3bd1cc85f,0,1,64f667e5-6a8f-448f-aed5-a4d461232845,64f667e5-6a8f-448f-aed5-a4d461232845,0,1,a148cdff-0e67-48e6-9cc5-e8a6f5aa1ae8,a148cdff-0e67-48e6-9cc5-e8a6f5aa1ae8,0,1,037842ca-aeaf-4e27-9a0e-e929438b6f40,037842ca-aeaf-4e27-9a0e-e929438b6f40,0,1,a4ec7d3d-2d01-436c-98ec-ec42733ee5c6,a4ec7d3d-2d01-436c-98ec-ec42733ee5c6,0,1,230722e6-942f-4594-be89-eff59c6572bf,230722e6-942f-4594-be89-eff59c6572bf,0,1,b43abcf7-1f1d-4a59-b0d1-0a493c3a4785,b43abcf7-1f1d-4a59-b0d1-0a493c3a4785,0,1,eaf6045f-9ac0-43ef-b165-a45be75a4d44,eaf6045f-9ac0-43ef-b165-a45be75a4d44,0,1,237dab99-ed72-432c-ad01-c6045d74f000,237dab99-ed72-432c-ad01-c6045d74f000,0,1,59855d19-29cd-4efd-a453-b19e574113ef,59855d19-29cd-4efd-a453-b19e574113ef,0,1,94e08dcf-3885-4a73-82ab-cb291f1cf95f,94e08dcf-3885-4a73-82ab-cb291f1cf95f,0,1,405c52c4-25fe-45ff-abab-bf01041e768d,405c52c4-25fe-45ff-abab-bf01041e768d,0,1,55ce840b-5838-4107-886d-f935b9907bd8,55ce840b-5838-4107-886d-f935b9907bd8,0,1,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0b3088c9-7fb9-4979-acce-16d7ae7ba6b7,0,1,f1753bda-16db-4b00-a16a-37ddade8403f,f1753bda-16db-4b00-a16a-37ddade8403f,0,1,a1875d63-4303-46f1-bdea-fc529b5891f3,a1875d63-4303-46f1-bdea-fc529b5891f3,0,1,59123b12-6052-4480-9c86-f4de1b5cdc04,59123b12-6052-4480-9c86-f4de1b5cdc04,0,1,133f181a-fade-4182-826d-904fac780326,133f181a-fade-4182-826d-904fac780326,0,1,a687748a-0b2a-4277-b935-07616d28430d,a687748a-0b2a-4277-b935-07616d28430d,0,1,641ebe22-7135-4adb-bbd6-e0c37d246a2d,641ebe22-7135-4adb-bbd6-e0c37d246a2d,0,1,f71ba01e-9f6b-4241-8048-4368c8888756,f71ba01e-9f6b-4241-8048-4368c8888756,0,1,b95681f4-8f91-483e-a9c5-c8a21058679a,b95681f4-8f91-483e-a9c5-c8a21058679a,0,1,0a07041a-159c-4b15-9b5f-c7982a8a245a,0a07041a-159c-4b15-9b5f-c7982a8a245a,0,1,ab6fdd75-2ea6-4408-8c03-0cfab775a7a0,ab6fdd75-2ea6-4408-8c03-0cfab775a7a0,0,1,9059defa-047f-4dac-9749-3d0a6a77308a,9059defa-047f-4dac-9749-3d0a6a77308a,0,1,6010c27f-e857-4fc3-be13-1eea51f02ea7,6010c27f-e857-4fc3-be13-1eea51f02ea7,0,1,6aa814fa-417e-428c-951e-6efd9d0775da,6aa814fa-417e-428c-951e-6efd9d0775da,0,1,a247efe1-8608-4780-9cc8-54e29944475b,a247efe1-8608-4780-9cc8-54e29944475b,0,1,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,4b8c3c82-6e8f-469e-8a80-144361d1d0b2,0,1,a8f162e9-3f59-41a5-b82f-da20928213c7,a8f162e9-3f59-41a5-b82f-da20928213c7,0,1,ade68dfd-5037-4fd7-b043-9514e3fe6342,ade68dfd-5037-4fd7-b043-9514e3fe6342,0,1,7b008aad-9d05-43e1-8295-62ae58cfff42,7b008aad-9d05-43e1-8295-62ae58cfff42,0,1,fdaf9255-d621-4a98-9530-f618ed440795,fdaf9255-d621-4a98-9530-f618ed440795,0,1,0daac965-2026-4acc-8ba1-3c1f01779257,0daac965-2026-4acc-8ba1-3c1f01779257,0,1,65a331c0-7501-49f6-8027-35b703d11834,65a331c0-7501-49f6-8027-35b703d11834,0,1,c67fab0a-704f-43ae-bd03-4b5b1a880b24,c67fab0a-704f-43ae-bd03-4b5b1a880b24,0,1,c1703a14-61a0-4461-8ad8-7173e2c431fe,c1703a14-61a0-4461-8ad8-7173e2c431fe,0,1,aecf5653-3005-43f2-ab49-40977e70f02b,aecf5653-3005-43f2-ab49-40977e70f02b,0,1,475f8577-a141-496b-94e1-53215c0dd017,475f8577-a141-496b-94e1-53215c0dd017,0,1,97638762-c01e-4c8f-88e2-b356e517e18f,97638762-c01e-4c8f-88e2-b356e517e18f,0,1,074e34f2-e9be-4bd3-beca-8b916772e2be,074e34f2-e9be-4bd3-beca-8b916772e2be,0,1,28fecf1b-7cab-4087-b66e-2052edb8ce3a,28fecf1b-7cab-4087-b66e-2052edb8ce3a,0,1,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,d85b00b7-b0d8-4b91-8d7f-0c2da524d446,0,1,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,cc906f05-5ea6-43cb-a084-c4ee51ca4bd5,0,1,f5417147-4d2a-4e49-911b-2bb5eccb8441,f5417147-4d2a-4e49-911b-2bb5eccb8441,0,1,20fbed2b-4393-4de0-a71d-017a336bdac0,20fbed2b-4393-4de0-a71d-017a336bdac0,0,1,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,2ca4fc58-798b-4fc3-8673-27688ce7a1f2,0,1,fbbb2449-9a07-4229-8ea5-bee0afab5f56,fbbb2449-9a07-4229-8ea5-bee0afab5f56,0,1,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,9fdddb51-0605-4f64-8d2e-aa7dbcd37262,0,1,0d124daf-dc52-4391-a2d9-3c43a45c422c,0d124daf-dc52-4391-a2d9-3c43a45c422c,0,1,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,9c443dd3-4acb-4c5a-9c4b-af8b0c87e861,0,1,98153b59-8cc6-4dc7-b945-99c1146d07da,98153b59-8cc6-4dc7-b945-99c1146d07da,0,1,3e2828b4-2b55-471e-ac69-55119c2480f8,3e2828b4-2b55-471e-ac69-55119c2480f8,0,1,9da32b56-ff89-4739-bb99-615074b72298,9da32b56-ff89-4739-bb99-615074b72298,0,1,08baf3ee-b8ca-4f29-89fc-c15344064ad3,08baf3ee-b8ca-4f29-89fc-c15344064ad3,0,1,2c8ab5a6-66d5-4b6f-94ae-4292724ded7f,2c8ab5a6-66d5-4b6f-94ae-4292724ded7f,0,1,01b85e3a-9920-425a-9de5-5079fffeef93,01b85e3a-9920-425a-9de5-5079fffeef93,0,1,82e12316-cc64-4d2f-83fa-054b5a738f02,82e12316-cc64-4d2f-83fa-054b5a738f02,0,1,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,6b70f7e1-8bdb-4fc4-9b95-0e045bfa288c,0,1,a890be6b-f050-4ea4-a388-570948ffd22b,a890be6b-f050-4ea4-a388-570948ffd22b,0,1,9039f720-5728-4918-87d5-8b2d07cabcfd,9039f720-5728-4918-87d5-8b2d07cabcfd,0,1,f3e2f35e-53f8-44e8-b24c-8385ba2c6974,f3e2f35e-53f8-44e8-b24c-8385ba2c6974,0,1,b00c31d6-4fc6-4189-9f72-f91742ec705f,b00c31d6-4fc6-4189-9f72-f91742ec705f,0,1,1333101b-82e8-41a9-a793-5af5dcd6f68a,1333101b-82e8-41a9-a793-5af5dcd6f68a,0,1,3ba630c2-cdc1-40a8-a24e-538ddb1abe38,3ba630c2-cdc1-40a8-a24e-538ddb1abe38,0,1,0f25646a-90f9-4747-a778-7efdaabc284c,0f25646a-90f9-4747-a778-7efdaabc284c,0,1,3705a086-46e6-4090-a52a-535908eea8a5,3705a086-46e6-4090-a52a-535908eea8a5,0,1,9b9cd161-5bee-4433-a0ec-b67deb099b5e,9b9cd161-5bee-4433-a0ec-b67deb099b5e,0,1,44b28019-01c0-468d-9b60-e050ff8b71ac,44b28019-01c0-468d-9b60-e050ff8b71ac,0,1,69f6173c-a570-41ff-b07f-5b85f7187515,69f6173c-a570-41ff-b07f-5b85f7187515,0,1,ca179cb5-65e1-4a55-bf12-096b926accb0,ca179cb5-65e1-4a55-bf12-096b926accb0,0,1,472ce1c2-9e83-418b-b1ec-e15e126bc919,472ce1c2-9e83-418b-b1ec-e15e126bc919,0,1,9fe30414-8261-4403-a854-f22b61824f69,9fe30414-8261-4403-a854-f22b61824f69,0,1,07bb26ac-bd97-465f-a192-db7fedbb579b,07bb26ac-bd97-465f-a192-db7fedbb579b,0,1,cd8244d1-0996-40ea-9263-7179c1e8aa26,cd8244d1-0996-40ea-9263-7179c1e8aa26,0,1,bb129cf2-5a5a-433a-924a-a1d0d895644a,bb129cf2-5a5a-433a-924a-a1d0d895644a,0,1,0894db61-51f6-4068-9634-e55d95e2a8ac,0894db61-51f6-4068-9634-e55d95e2a8ac,0,1,ad3fb691-68b2-4d65-93ab-ab8fcb77e035,ad3fb691-68b2-4d65-93ab-ab8fcb77e035,0,1,67aed41e-9707-4007-bb3c-7273476664bb,67aed41e-9707-4007-bb3c-7273476664bb,0,1,954e7804-e8b1-42aa-9d49-bef73f9d13d1,954e7804-e8b1-42aa-9d49-bef73f9d13d1,0,1,de25a90c-4b46-4340-b649-93e16dde33de,de25a90c-4b46-4340-b649-93e16dde33de,0,1,5462f1ab-2095-4515-875e-471900f05db9,5462f1ab-2095-4515-875e-471900f05db9,0,1,4f8e3f81-7445-4e68-b773-b477a05aa6b3,4f8e3f81-7445-4e68-b773-b477a05aa6b3,0,1,4f2d0398-49f4-410c-a451-436cbf96a262,4f2d0398-49f4-410c-a451-436cbf96a262,0,1,ed297409-6215-4fd4-b47d-a2247e0343da,ed297409-6215-4fd4-b47d-a2247e0343da,0,1,5ae2a1de-6380-45cc-9c8f-5612cd5ba627,5ae2a1de-6380-45cc-9c8f-5612cd5ba627,0,1,e8aa2ba2-7dfa-47e3-bc18-6156f700ceed,e8aa2ba2-7dfa-47e3-bc18-6156f700ceed,0,1,8c472f51-47ec-43c4-9858-fd19ac3e17f3,8c472f51-47ec-43c4-9858-fd19ac3e17f3,0,1,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,e7d0cc1f-f3ee-486e-b1f3-db8e6a6162cc,0,1,c54f31ce-114b-46d3-b4c6-12c8f07727ca,c54f31ce-114b-46d3-b4c6-12c8f07727ca,0,1,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,5a9c82c1-d0cd-48ff-b91c-38b950591e4c,0,1,b2c8bd74-21c9-4495-93e2-ca5355698350,b2c8bd74-21c9-4495-93e2-ca5355698350,0,1,712c2b73-4697-4581-a095-70555aee8be2,712c2b73-4697-4581-a095-70555aee8be2,0,1,c1508d67-ac6d-41e3-884d-b3bdd54659f8,c1508d67-ac6d-41e3-884d-b3bdd54659f8,0,1,65dd4904-0837-4de5-a5e5-601151055d94,65dd4904-0837-4de5-a5e5-601151055d94,0,1,3436b16e-ef5b-4abb-9aad-c70a7c8560ed,3436b16e-ef5b-4abb-9aad-c70a7c8560ed,0,1,ce6d1259-af90-482b-b19a-405512321bd9,ce6d1259-af90-482b-b19a-405512321bd9,0,1,df48bfa3-5502-4a61-a79f-1dea043dac36,df48bfa3-5502-4a61-a79f-1dea043dac36,0,1,adee37e6-f087-422f-91b3-681f3d73189c,adee37e6-f087-422f-91b3-681f3d73189c,0,1,35103a27-230c-45c0-a8c9-24bd46608bbb,35103a27-230c-45c0-a8c9-24bd46608bbb,0,1,c5e9f987-4466-4161-8e36-278b0b3ce056,c5e9f987-4466-4161-8e36-278b0b3ce056,0,1,b6566d54-e821-4a2a-a447-0f533f35de91,b6566d54-e821-4a2a-a447-0f533f35de91,0,1,46568b9a-a765-4037-8a86-b184a570ab37,46568b9a-a765-4037-8a86-b184a570ab37,0,1,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,4fcc7278-2fec-49ee-b0ef-c7d5f5f698a4,0,1,547a6dec-6fe8-439d-a8d9-ac2612af20d2,547a6dec-6fe8-439d-a8d9-ac2612af20d2,0,1,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,2bc2c4b7-dacb-4cb3-b5b2-712b19bebcd7,0,1,84395058-d46a-428c-b782-a9fa89fea14a,84395058-d46a-428c-b782-a9fa89fea14a,0,1,39bc2bc6-2a4f-4e26-b1b9-fb8473234f09,39bc2bc6-2a4f-4e26-b1b9-fb8473234f09,0,1,5b7eb8bc-ad6b-4191-a6c1-92561bb944f2,5b7eb8bc-ad6b-4191-a6c1-92561bb944f2,0,1,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,cc9679a5-1ed2-4290-8c9b-8a2f6614d053,0,1,93016393-c637-4d81-8675-aa5e51e678e0,93016393-c637-4d81-8675-aa5e51e678e0,0,1,d8621f68-106e-4058-963f-56010491ae2e,d8621f68-106e-4058-963f-56010491ae2e,0,1,1f3057c2-135f-44b2-9f86-34481fbc5596,1f3057c2-135f-44b2-9f86-34481fbc5596,0,1,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,f8f0d92c-b7f0-496c-8d33-f8a57dfa16f2,0,1,f2e2df50-52fc-4e95-909b-80fc91a68f62,f2e2df50-52fc-4e95-909b-80fc91a68f62,0,1,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,1a1d8dd0-1559-426c-ad3c-baa6eb3a53db,0,1,1fca06d9-b015-4fc8-abdd-3e2397e0c307,1fca06d9-b015-4fc8-abdd-3e2397e0c307,0,1,295a5554-f6cc-437b-9e89-c6f653a8b858,295a5554-f6cc-437b-9e89-c6f653a8b858,0,1,573f1753-9194-4aaf-9217-5cac70ff108f,573f1753-9194-4aaf-9217-5cac70ff108f,0,1,1f7ec25a-05b1-468b-8857-2bb1aed3678a,1f7ec25a-05b1-468b-8857-2bb1aed3678a,0,1,4a1e6d25-89e7-468a-aef1-6ded0154dca2,4a1e6d25-89e7-468a-aef1-6ded0154dca2,0,1,905624ea-b253-413f-b651-1eb2c5a7d52a,905624ea-b253-413f-b651-1eb2c5a7d52a,0,1,b639ed30-3e37-4c65-a39f-00fe735950eb,b639ed30-3e37-4c65-a39f-00fe735950eb,0,1,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,76ef7f67-0ce8-4ee2-9134-e793c41b8de3,0,1,f137eb0f-bde7-412d-9229-d7a4f9456e6c,f137eb0f-bde7-412d-9229-d7a4f9456e6c,0,1,90880131-8065-4a7e-a0fa-ecff9e27363c,90880131-8065-4a7e-a0fa-ecff9e27363c,0,1,57e9fcea-342c-4089-bd10-befb3faf0dbd,57e9fcea-342c-4089-bd10-befb3faf0dbd,0,1,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,7b01236c-5ab7-43fa-aa0e-1ae55c8a4efe,0,1,f811b0b7-41b5-4591-9910-780f08780236,f811b0b7-41b5-4591-9910-780f08780236,0,1,6b10167a-f5c3-4d7b-b444-d5ff6e705ea4,6b10167a-f5c3-4d7b-b444-d5ff6e705ea4,0,1,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,f85ff11a-163e-4d18-98bc-b0ebe83d34e4,0,1,51a0444d-13c8-45a8-97f6-f3f976964bf8,51a0444d-13c8-45a8-97f6-f3f976964bf8,0,1,7e089889-cf8d-4f5f-879c-0a1bcca1c19b,7e089889-cf8d-4f5f-879c-0a1bcca1c19b,0,1,7e2ba519-fbb9-4163-b20b-b99898e6ac57,7e2ba519-fbb9-4163-b20b-b99898e6ac57,0,1,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,38eb3fd1-57be-4dc2-bed4-d8107086bf2a,0,1,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,6b6d541b-5dc1-4150-b8d1-5844a694ac6a,0,1,0a5e38b7-2794-419f-8c29-076490c7b5ce,0a5e38b7-2794-419f-8c29-076490c7b5ce,0,1,2b1619a6-c841-4963-8c51-c1d8d6ba3746,2b1619a6-c841-4963-8c51-c1d8d6ba3746,0,1,eab50f82-4612-47fd-a5c2-9678016a1937,eab50f82-4612-47fd-a5c2-9678016a1937,0,1,4212bb94-7c24-4d4f-8bb8-4060bd21a135,4212bb94-7c24-4d4f-8bb8-4060bd21a135,0,1,2609ba3c-e4de-45b3-86e0-93db39a21eee,2609ba3c-e4de-45b3-86e0-93db39a21eee,0,1,00dcfeab-7ba1-4a50-996e-4fd693dd0514,00dcfeab-7ba1-4a50-996e-4fd693dd0514,0,1,d21971c9-9aa6-448a-ab37-49ad0b0547ec,d21971c9-9aa6-448a-ab37-49ad0b0547ec,0,1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,627438b8-c738-4e02-a0e7-cfd7fbf8eca1,0,1,230b80c7-620a-40d3-b473-b6289cfce8c0,230b80c7-620a-40d3-b473-b6289cfce8c0,0,1,6a03be63-e2b1-4f26-a7bf-1c9fe0d7a15f,6a03be63-e2b1-4f26-a7bf-1c9fe0d7a15f,0,1,5efd2e2e-9b83-4c0d-9bbd-4075b5127d92,5efd2e2e-9b83-4c0d-9bbd-4075b5127d92,0,1,3e4361e9-2baf-407b-9320-b2a265b44e46,3e4361e9-2baf-407b-9320-b2a265b44e46,0,1,00418e6c-77b2-4753-b9ff-3a8013436f8a,00418e6c-77b2-4753-b9ff-3a8013436f8a,0,1,e2c76c41-4c47-4588-a081-7bd81ac1698b,e2c76c41-4c47-4588-a081-7bd81ac1698b,0,1,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,8deaa3d0-b36b-4f20-a9a8-11d829f5ef9d,0,1,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,d5537afb-df5f-4edf-a3d3-ff6b2a908ad9,0,1,d9f1f56b-75c8-43e9-8043-89076c225f78,d9f1f56b-75c8-43e9-8043-89076c225f78,0,1,a3c9a7eb-2104-4402-954c-3e12de4a7de3,a3c9a7eb-2104-4402-954c-3e12de4a7de3,0,1,38bf6d3b-5435-4bac-b9fc-23b80afeb760,38bf6d3b-5435-4bac-b9fc-23b80afeb760,0,1,138e674b-c9d4-4b89-b5ac-a50bd5313b98,138e674b-c9d4-4b89-b5ac-a50bd5313b98,0,1,fabbac92-cb98-4087-b3fa-387482ed0d86,fabbac92-cb98-4087-b3fa-387482ed0d86,0,1,6c34eef9-9405-4de0-9177-1bae85251ae4,6c34eef9-9405-4de0-9177-1bae85251ae4,0,1,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,bbbc2d1f-2f78-4b7e-b5fb-ca7c74051221,0,1,e09534e3-ac6e-42a6-86e8-564acb20089a,e09534e3-ac6e-42a6-86e8-564acb20089a,0,1,5e380276-2a08-435c-927e-a7f56f5a4dbc,5e380276-2a08-435c-927e-a7f56f5a4dbc,0,1,d06e845a-9f54-40dd-b0df-6988def62017,d06e845a-9f54-40dd-b0df-6988def62017,0,1,7badb97b-c359-42af-9066-6bbfc0650cf9,7badb97b-c359-42af-9066-6bbfc0650cf9,0,1,63223883-06cf-4d01-be95-5e410cc58a22,63223883-06cf-4d01-be95-5e410cc58a22,0,1,1929139f-dabb-4c40-9423-158093360889,1929139f-dabb-4c40-9423-158093360889,0,1,dad92df4-685b-4260-b35f-4d031262dfea,dad92df4-685b-4260-b35f-4d031262dfea,0,1,4399c19a-ddba-42e9-88b4-c5c28abad237,4399c19a-ddba-42e9-88b4-c5c28abad237,0,1,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,304525f8-c697-4835-b0a6-4ed3cbcaf3c6,0,1,982315ba-df74-4a31-8929-71d1e5e6f147,982315ba-df74-4a31-8929-71d1e5e6f147,0,1,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,8d1c01a9-9806-4e5d-bafb-ce6af11d5650,0,1,fd3a6a7e-203d-447a-aebd-7626579387fb,fd3a6a7e-203d-447a-aebd-7626579387fb,0,1,2cd04d4c-2619-40c9-adf4-7bb281f045b6,2cd04d4c-2619-40c9-adf4-7bb281f045b6,0,1,cbc1c36d-7bbf-4892-8220-a33ec91a7b1f,cbc1c36d-7bbf-4892-8220-a33ec91a7b1f,0,1,5d4e67ae-7029-46d2-86f9-834a04a9dd71,5d4e67ae-7029-46d2-86f9-834a04a9dd71,0,1,ff976027-75e8-475c-abfa-876d36733c13,ff976027-75e8-475c-abfa-876d36733c13,0,1,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,7452d9c0-cb03-4d1b-afd4-8855950f2ad8,0,1,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,32d4a42d-6e4d-49db-b5bc-1ea6dbe9fe4d,0,1,556a0e57-5b3b-4303-a013-0bd296c506b8,556a0e57-5b3b-4303-a013-0bd296c506b8,0,1,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,3f823f5b-e5a8-40af-8fc3-e4c6ffb18fa3,0,1,b3554203-b930-496d-a712-353bc13a0946,b3554203-b930-496d-a712-353bc13a0946,0,1,59775ce0-f778-45f6-9453-bbd0a0ec1f27,59775ce0-f778-45f6-9453-bbd0a0ec1f27,0,1,f772abd3-8ea0-41e9-aaca-c5375778941a,f772abd3-8ea0-41e9-aaca-c5375778941a,0,1,a1e494f8-96a4-41bd-9234-b87e8d8742c5,a1e494f8-96a4-41bd-9234-b87e8d8742c5,0,1,b322b047-16eb-4500-826a-6dfebb7d997a,b322b047-16eb-4500-826a-6dfebb7d997a,0,1,f08afb10-3467-4af8-804c-ba7761f1dac9,f08afb10-3467-4af8-804c-ba7761f1dac9,0,1,c8da922f-e31e-49b0-b90e-1c060424bde5,c8da922f-e31e-49b0-b90e-1c060424bde5,0,1,41462827-fd8b-4ee6-a739-a884d704bba5,41462827-fd8b-4ee6-a739-a884d704bba5,0,1,eca025d2-4fe9-4542-b9f5-46ae2631256e,eca025d2-4fe9-4542-b9f5-46ae2631256e,0,1,35bc58df-8aff-48dd-83a9-b60b0461f94d,35bc58df-8aff-48dd-83a9-b60b0461f94d,0,1,0f46ae6b-9fe8-471a-a59f-af5e66cb9e00,0f46ae6b-9fe8-471a-a59f-af5e66cb9e00,0,1,b65afceb-a200-42d5-9948-831a5ad84b1b,b65afceb-a200-42d5-9948-831a5ad84b1b,0,1,feb1a5c1-c805-4079-8f05-8a44f51b0b02,feb1a5c1-c805-4079-8f05-8a44f51b0b02,0,1,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,ff7916bd-cbd1-4d9e-8aab-bad9fffaa0d4,0,1,1f55f330-7c0a-4a29-905f-51d664515bc5,1f55f330-7c0a-4a29-905f-51d664515bc5,0,1,6106e958-354c-4211-992c-3c3819e8828e,6106e958-354c-4211-992c-3c3819e8828e,0,1,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,9d6d77a9-1f55-4162-93a5-14bb3f3febaf,0,1,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,1d6b8425-360c-4ab1-9bab-cc9a3b590bb2,0,1,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,9f67d228-79aa-44e6-8dc7-fae4fbdfef2a,0,1,231d3950-f363-4e63-83cd-8ddb81507c27,231d3950-f363-4e63-83cd-8ddb81507c27,0,1,87429f11-bf95-4013-bf13-da904570f88d,87429f11-bf95-4013-bf13-da904570f88d,0,1,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,6173cab2-e0f5-40c1-8e74-4f41fc8bd68f,0,1,feb41347-62db-41cf-ace0-d8b9de361af3,feb41347-62db-41cf-ace0-d8b9de361af3,0,1,cdce186a-229d-492d-8811-147fc4d7cdf5,cdce186a-229d-492d-8811-147fc4d7cdf5,0,1,f750d4d3-059f-41a5-85b4-16bb4c63d3f2,f750d4d3-059f-41a5-85b4-16bb4c63d3f2,0,1,5f91b00f-d8fc-4d63-8486-66339357ab22,5f91b00f-d8fc-4d63-8486-66339357ab22,0,1,16d44ab1-4bce-4df8-a215-6ed5173c75a8,16d44ab1-4bce-4df8-a215-6ed5173c75a8,0,1,543f976e-fea3-4a51-9962-b8e0fcd3f707,543f976e-fea3-4a51-9962-b8e0fcd3f707,0,1,375977c1-5745-4e78-a4df-cef966c0ccf8,375977c1-5745-4e78-a4df-cef966c0ccf8,0,1,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,2582a714-a6d6-4d37-b9a7-5e89e18b0f27,0,1,c3796d85-2a24-43c4-9673-64e56249a1d0,c3796d85-2a24-43c4-9673-64e56249a1d0,0,1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,fc1066b5-20d4-4c73-85f8-9889e554d6e1,0,1,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,a9b6b5fd-1862-4207-87e8-5c25a8f86c57,0,1,731211c2-ef90-4883-9525-83cd91b742ac,731211c2-ef90-4883-9525-83cd91b742ac,0,1,0adf02da-940a-4bfc-afa5-59605494a169,0adf02da-940a-4bfc-afa5-59605494a169,0,1,50a1e3bf-8624-4474-854e-21b89aaf97ed,50a1e3bf-8624-4474-854e-21b89aaf97ed,0,1,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,6c7b82ca-37b0-4f67-b7fa-ab1b77c0fb61,0,1,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,24f9d1a6-73d0-4cc7-b3ca-d36c5c7a9892,0,1,847b97a3-d0bc-45e2-b06c-932bb22d8eca,847b97a3-d0bc-45e2-b06c-932bb22d8eca,0,1,503b3eab-b7f1-4ede-8845-3290a834cec7,503b3eab-b7f1-4ede-8845-3290a834cec7,0,1,8361991a-0f30-4a03-9a4c-90556b744f53,8361991a-0f30-4a03-9a4c-90556b744f53,0,1,3116fa60-bc42-4dea-aa03-387896168690,3116fa60-bc42-4dea-aa03-387896168690,0,1,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,5a3cc2a8-f519-45ac-af9b-c57a4f1acdc0,0,1,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,08427a9a-fb3a-4bc1-b2e2-72e4f89680cd,0,1,f9196766-4ae2-4a73-bed6-4a8838323e02,f9196766-4ae2-4a73-bed6-4a8838323e02,0,1,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,4eeda6df-fb48-4c88-853f-9c35e2b3a3cf,0,1,06afe397-1c7e-400e-bb24-f8e611d114e8,06afe397-1c7e-400e-bb24-f8e611d114e8,0,1,f0105e51-9510-426a-8aa0-af827d93ffd9,f0105e51-9510-426a-8aa0-af827d93ffd9,0,1,3df19dbf-efe7-4e31-99ad-fafb59ec1329,3df19dbf-efe7-4e31-99ad-fafb59ec1329,0,1,baf12d47-fbfe-4563-aa23-26d9f7e83169,baf12d47-fbfe-4563-aa23-26d9f7e83169,0,1,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,e2046f49-6fea-4bf4-92b0-92f3c8357bcf,0,1,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0ba11486-1972-4434-ab1a-5bb75cc05e9f,0,1,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,4ed9c555-7dd0-4577-bf62-152b4c5ec9f2,0,1,11fe3a42-98c4-49ba-b697-86ffb172f16f,11fe3a42-98c4-49ba-b697-86ffb172f16f,0,1,07b53818-7318-4400-8af5-457fac012755,07b53818-7318-4400-8af5-457fac012755,0,1,292b47e7-5cf3-462d-a466-dac6253a7f03,292b47e7-5cf3-462d-a466-dac6253a7f03,0,1,8ecc070f-f6fb-46b1-9636-b77aa80f8804,8ecc070f-f6fb-46b1-9636-b77aa80f8804,0,1,8405be9d-465b-4744-b04f-03933b52f02e,8405be9d-465b-4744-b04f-03933b52f02e,0,1,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,a8021ff9-f0ae-49ab-b8ac-5e3d8fe90d82,0,1,2f67931e-543f-457e-80fd-78ca754e2e9c,2f67931e-543f-457e-80fd-78ca754e2e9c,0,1,595e5752-36a7-4bba-8a40-26920acae01d,595e5752-36a7-4bba-8a40-26920acae01d,0,1,28801fba-c429-4afa-bdcd-b3ec3ec22fda,28801fba-c429-4afa-bdcd-b3ec3ec22fda,0,1,d1a873ae-d45b-4600-9419-e701dce3da02,d1a873ae-d45b-4600-9419-e701dce3da02,0,1,e3a31f0d-a98f-43c6-bc39-087095ae8c39,e3a31f0d-a98f-43c6-bc39-087095ae8c39,0,1,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,e39d8ff3-52db-4ba4-b4ea-42d5ee787076,0,1,eb3dfdc7-58b8-4b1f-b079-368c262364c9,eb3dfdc7-58b8-4b1f-b079-368c262364c9,0,1,5030a318-f8f7-4ec7-80d6-6eee0772562f,5030a318-f8f7-4ec7-80d6-6eee0772562f,0,1,242e911d-e49c-4b8a-8543-cc2e079220fd,242e911d-e49c-4b8a-8543-cc2e079220fd,0,1,9ea39d31-3775-4fb8-a3f3-202e54354d49,9ea39d31-3775-4fb8-a3f3-202e54354d49,0,1,73044e20-148c-46e9-b5b5-973c91de0d61,73044e20-148c-46e9-b5b5-973c91de0d61,0,1,f8ab477c-8e78-48c0-9f99-27748b109706,f8ab477c-8e78-48c0-9f99-27748b109706,0,1,24cff6c8-6c20-4383-b97c-6afa52738960,24cff6c8-6c20-4383-b97c-6afa52738960,0,1,462e2694-750d-49ef-93ac-17a7779be68d,462e2694-750d-49ef-93ac-17a7779be68d,0,1,c24ff02e-5afc-45df-81cf-64ea2b261c2d,c24ff02e-5afc-45df-81cf-64ea2b261c2d,0,1,2d51aae9-650d-4719-a94d-2609b69a2d36,2d51aae9-650d-4719-a94d-2609b69a2d36,0,1,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,6025f5b5-6dc7-46b8-96e6-02823c5b4de7,0,1,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,5d9d88ea-b2e4-425c-bb4d-a005e867d56c,0,1,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,b76d342c-0f9d-4eb0-b49e-a9f472a4dd0d,0,1,85639a53-b367-49ce-84f2-4e21d81c489b,85639a53-b367-49ce-84f2-4e21d81c489b,0,1,24b59586-178e-4efc-90ae-529553f3bb6c,24b59586-178e-4efc-90ae-529553f3bb6c,0,1,20e75dd5-222a-4100-aa43-3684991e3f21,20e75dd5-222a-4100-aa43-3684991e3f21,0,1,3c611832-4bc2-4229-a27d-d5dc82f3a498,3c611832-4bc2-4229-a27d-d5dc82f3a498,0,1,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,50e9eb52-02e3-44ff-9c9e-e76dbe38da63,0,1,5dadc422-1fbd-4918-9db3-09ec72c3404e,5dadc422-1fbd-4918-9db3-09ec72c3404e,0,1,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,ffdaf8a0-7a8f-4756-bdfc-a0c6ae6c3869,0,1,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,ab1bcabf-ffb0-4914-8ad0-b94b5aaeab1d,0,1,c5478d09-c8d3-4cc6-878e-27656ecc8409,c5478d09-c8d3-4cc6-878e-27656ecc8409,0,1,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,01b97d2f-40b9-4f12-8bc5-ab75fd160b7c,0,1,75974146-5b1a-412c-b7d5-1575704bbdab,75974146-5b1a-412c-b7d5-1575704bbdab,0,1,949f87cb-258c-4b6b-95ee-8a7491a4b64e,949f87cb-258c-4b6b-95ee-8a7491a4b64e,0,1,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,8a348012-99dc-4dc9-8bec-0df3caf4cdc5,0,1,5c089988-5381-41ed-9f05-f85db46b8d94,5c089988-5381-41ed-9f05-f85db46b8d94,0,1,85a36352-1569-4ce4-aeba-477db524c36d,85a36352-1569-4ce4-aeba-477db524c36d,0,1,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,ebfb6f80-88f5-4046-8ae7-e11a7b0c1beb,0,1,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,b2e656c1-f4ff-4d95-b066-4ee11ce4dea8,0,1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,2d86d1fc-5367-47b8-804e-7f9c5fc8f3b1,0,1,b99c2068-15ea-43a1-9e9f-db29647e2387,b99c2068-15ea-43a1-9e9f-db29647e2387,0,1,9a4a0b04-3dfb-4551-90f0-16231f64b14f,9a4a0b04-3dfb-4551-90f0-16231f64b14f,0,1,98edcd6b-1c50-45c6-9a4c-390827a4ba52,98edcd6b-1c50-45c6-9a4c-390827a4ba52,0,1,2fcde115-5c5a-465c-a326-d7ba379675fc,2fcde115-5c5a-465c-a326-d7ba379675fc,0,1,346cb8b7-a20e-4a06-823e-26dfb2e3e741,346cb8b7-a20e-4a06-823e-26dfb2e3e741,0,1,6d83f50f-32e9-45a6-8b5e-d91ba005ae95,6d83f50f-32e9-45a6-8b5e-d91ba005ae95,0,1,538f0963-de90-4659-987d-df71a9586548,538f0963-de90-4659-987d-df71a9586548,0,1,9afe457f-3c88-4cd3-94e7-7cea8a1a99a1,9afe457f-3c88-4cd3-94e7-7cea8a1a99a1,0,1,86ff5ea0-394a-4d8f-9601-acc2eb841bf6,86ff5ea0-394a-4d8f-9601-acc2eb841bf6,0,1,782cb93d-36e6-4923-b2b6-75caa3459cd6,782cb93d-36e6-4923-b2b6-75caa3459cd6,0,1,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,2767473e-79fb-4c7c-a7d1-a83a8f2df71d,0,1,996c7873-1cc9-44f6-915b-5c6ed7ef2370,996c7873-1cc9-44f6-915b-5c6ed7ef2370,0,1,45a2569e-820c-4d7d-ba74-4a781d26bb2b,45a2569e-820c-4d7d-ba74-4a781d26bb2b,0,1,ced01234-9417-49ce-adf0-8cdd15e6dd7d,ced01234-9417-49ce-adf0-8cdd15e6dd7d,0,1,0eea37cc-47f8-4819-85da-d4991f4e58ed,0eea37cc-47f8-4819-85da-d4991f4e58ed,0,1,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,b51eaf45-baa1-4d1c-bcb7-a89bb8bcc26a,0,1,c1272bfc-196a-4f99-935f-e2516bc138d2,c1272bfc-196a-4f99-935f-e2516bc138d2,0,1,313e0688-745a-4385-b040-7ef8317a0eb7,313e0688-745a-4385-b040-7ef8317a0eb7,0,1,5f6c6be3-058a-43c8-aa33-3e89af2ea3f1,5f6c6be3-058a-43c8-aa33-3e89af2ea3f1,0,1,8dc08932-0988-4e82-8a5f-385c0694f9ff,8dc08932-0988-4e82-8a5f-385c0694f9ff,0,1,aa7ceeee-3b3c-49e2-95c2-bfb34e381aa3,aa7ceeee-3b3c-49e2-95c2-bfb34e381aa3,0,1,37c37f15-f84b-456b-aab6-729562dc0908,37c37f15-f84b-456b-aab6-729562dc0908,0,1,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,f5ef3f75-7d12-4284-844f-54d19d1f7e2f,0,1,7974e41d-5af3-4636-b405-c9405d89fb53,7974e41d-5af3-4636-b405-c9405d89fb53,0,1,21fad9b6-44df-417c-ba18-de4b8af98a34,21fad9b6-44df-417c-ba18-de4b8af98a34,0,1,11c086b0-c646-4701-983d-c38758286354,11c086b0-c646-4701-983d-c38758286354,0,1,92876c9e-52ff-480d-9878-5766f4f9d12c,92876c9e-52ff-480d-9878-5766f4f9d12c,0,1,433a114f-3198-4ef6-bbf8-ce9b54fdb736,433a114f-3198-4ef6-bbf8-ce9b54fdb736,0,1,02ac711c-e38e-422e-ac28-ba1b298df9cc,02ac711c-e38e-422e-ac28-ba1b298df9cc,0,1,b729d739-5249-4765-85ee-fd792bb22911,b729d739-5249-4765-85ee-fd792bb22911,0,1,d65c4485-7bac-4206-9a6c-7156f4bb876d,d65c4485-7bac-4206-9a6c-7156f4bb876d,0,1,bbfd9834-12b4-49ca-bdae-5c94efa80482,bbfd9834-12b4-49ca-bdae-5c94efa80482,0,1,d431d1e2-13dc-495c-9de1-b5ec872eceed,d431d1e2-13dc-495c-9de1-b5ec872eceed,0,1,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,9dc3a563-11bb-40a7-8431-c1d4367ccbaf,0,1,c9ea4e72-5f01-42ae-88e3-52e49757b26f,c9ea4e72-5f01-42ae-88e3-52e49757b26f,0,1,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,38d92d75-c8b8-42d6-9e0a-6dc0811a8652,0,1,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0f564dbe-6a6e-48df-9718-5cea5d608ee6,0,1,a623fef1-96eb-41ba-93fe-09162698f419,a623fef1-96eb-41ba-93fe-09162698f419,0,1,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,45a8d7cb-c927-4a4e-a653-13fd9b1eda10,0,1,d8e1f92f-9efa-422d-bb21-43bd1a363cec,d8e1f92f-9efa-422d-bb21-43bd1a363cec,0,1,c1416383-bd7e-4dc4-ad88-d98ac87157fd,c1416383-bd7e-4dc4-ad88-d98ac87157fd,0,1,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,5e8bddc7-7836-4ec8-b6e1-0c15d228f47e,0,1,d5d9976a-4cc0-43f7-afd6-d43cebb07940,d5d9976a-4cc0-43f7-afd6-d43cebb07940,0,1,79a0746b-4dbe-4068-8832-4d0da08d6fd3,79a0746b-4dbe-4068-8832-4d0da08d6fd3,0,1,899f1526-d6bc-42ef-852e-7297a06db9e3,899f1526-d6bc-42ef-852e-7297a06db9e3,0,1,c694c132-1ddb-4273-818a-d3cca88c082a,c694c132-1ddb-4273-818a-d3cca88c082a,0,1,cd4da06e-c06b-4233-befc-1bc4c4db58e3,cd4da06e-c06b-4233-befc-1bc4c4db58e3,0,1,918a01fe-f753-4a4a-9200-55bbd6edaf5f,918a01fe-f753-4a4a-9200-55bbd6edaf5f,0,1,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,51a8a209-2a9d-419f-9fda-f7aeac68bdbe,0,1,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,ef43961f-8cac-4f3f-bcee-c6bc51c4148c,0,1,d6704410-6297-481e-a6cb-6d6aa566b4f8,d6704410-6297-481e-a6cb-6d6aa566b4f8,0,1,398937ca-b035-43bd-b0da-8c5153a87cb8,398937ca-b035-43bd-b0da-8c5153a87cb8,0,1,5b441321-bd1e-4c56-8f09-365b05985eed,5b441321-bd1e-4c56-8f09-365b05985eed,0,1,559f1e66-e8da-437a-aa27-d0e1be6619b6,559f1e66-e8da-437a-aa27-d0e1be6619b6,0,1,704d69cd-d921-4957-a004-43bd7eb4d979,704d69cd-d921-4957-a004-43bd7eb4d979,0,1,f1594682-16ac-408c-8307-a7a8db79b09f,f1594682-16ac-408c-8307-a7a8db79b09f,0,1,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,863aebd2-ce32-4f1f-bb3d-d6062ab187fd,0,1,4cb814d8-cb1b-4366-b500-e820ad526b0c,4cb814d8-cb1b-4366-b500-e820ad526b0c,0,1,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,7da5f3b4-6330-4112-9d3a-7bb42996aa4a,0,1,6c43df9f-ca36-415b-afec-302807820d73,6c43df9f-ca36-415b-afec-302807820d73,0,1,c7fb7551-806a-40b2-8879-14cd897b60d8,c7fb7551-806a-40b2-8879-14cd897b60d8,0,1,68337023-d573-4d04-95b6-44f73258c2a4,68337023-d573-4d04-95b6-44f73258c2a4,0,1,7cf39337-b722-486f-8e37-a62239d0ccd2,7cf39337-b722-486f-8e37-a62239d0ccd2,0,1,2571cfaf-d876-4385-a60a-1488aacf7080,2571cfaf-d876-4385-a60a-1488aacf7080,0,1,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,4ea1dd0a-6eab-48e4-a6a7-314d0e211d6c,0,1,44398566-3189-4584-8f8a-9deb1d07ce41,44398566-3189-4584-8f8a-9deb1d07ce41,0,1,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,6f4e3082-9c8c-4289-8cc2-704c8d2763ce,0,1,accfa63a-479d-4996-95bc-cdf5acdf203c,accfa63a-479d-4996-95bc-cdf5acdf203c,0,1,351998e0-8939-4dd4-a833-f4756bcc53b8,351998e0-8939-4dd4-a833-f4756bcc53b8,0,1,cd69bad8-524e-4be4-88cc-7732a88b38b8,cd69bad8-524e-4be4-88cc-7732a88b38b8,0,1,0a32248c-6994-4988-90d1-30882bc9da6b,0a32248c-6994-4988-90d1-30882bc9da6b,0,1,b57b53cb-6972-4bda-ae46-96571be1ebec,b57b53cb-6972-4bda-ae46-96571be1ebec,0,1,1a1a9636-fb72-4e4a-af96-5858442b1e61,1a1a9636-fb72-4e4a-af96-5858442b1e61,0,1,bca9cf34-9e11-4014-976a-28c4330b136e,bca9cf34-9e11-4014-976a-28c4330b136e,0,1,65fffe1a-6f36-4f50-975f-4471ad29d3ec,65fffe1a-6f36-4f50-975f-4471ad29d3ec,0,1,8fe5dad5-686a-4631-ae05-2917c33f7d83,8fe5dad5-686a-4631-ae05-2917c33f7d83,0,1,edef86c6-73bf-4e47-b62d-b2b548a732cd,edef86c6-73bf-4e47-b62d-b2b548a732cd,0,1,a1715044-d76f-4238-ba3e-989d04078d83,a1715044-d76f-4238-ba3e-989d04078d83,0,1,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,a7ec91a5-2ed4-4ecd-b794-fcd3bb5ea4a2,0,1,299c47a7-0b30-4f62-8f5c-f087ad6411fb,299c47a7-0b30-4f62-8f5c-f087ad6411fb,0,1,4d4724df-24fb-4c59-9d04-3f984906214a,4d4724df-24fb-4c59-9d04-3f984906214a,0,1,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,95b10bc8-39ef-43f5-b74e-f36cfa9bc806,0,1,cb9b73ee-8531-48d9-9266-9aaa4336a612,cb9b73ee-8531-48d9-9266-9aaa4336a612,0,1,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,b7b80237-d642-4c21-a9ee-64fc4ed20d2f,0,1,aeee2eea-1bb9-4e8a-ac5c-c940eaa86511,aeee2eea-1bb9-4e8a-ac5c-c940eaa86511,0,1,d042687f-0725-4611-a868-f5b4f6a3a3a8,d042687f-0725-4611-a868-f5b4f6a3a3a8,0,1,bb143340-7fff-49ef-b121-355c96613f78,bb143340-7fff-49ef-b121-355c96613f78,0,1,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,cd5fbbcb-19b8-4c0b-93c7-ebdf642826db,0,1,f2f69644-80dc-4b5e-a208-ed1de131e25e,f2f69644-80dc-4b5e-a208-ed1de131e25e,0,1,73060f72-6d08-47da-aac8-d4d2ed8f871c,73060f72-6d08-47da-aac8-d4d2ed8f871c,0,1,f3a6219e-bff5-4d36-9baa-bb214cebc2ed,f3a6219e-bff5-4d36-9baa-bb214cebc2ed,0,1,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,9f832f4b-ae60-4d81-9ffd-6e00f7e02560,0,1,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,6f6ef6ac-5bb7-41e4-b6d5-0f068e8cb176,0,1,821225ea-1bad-49a6-a422-80d8a09baf13,821225ea-1bad-49a6-a422-80d8a09baf13,0,1,d0106f3a-8490-4277-a278-75c318ec252c,d0106f3a-8490-4277-a278-75c318ec252c,0,1,5035aa55-d557-419a-89e2-10ed0f8d109b,5035aa55-d557-419a-89e2-10ed0f8d109b,0,1,fb79315a-8d27-4c5e-9cfb-c7778dabedef,fb79315a-8d27-4c5e-9cfb-c7778dabedef,0,1,5f93d2af-64ff-41cc-8403-4a0e83160fea,5f93d2af-64ff-41cc-8403-4a0e83160fea,0,1,c12c90e4-7c40-489b-b14b-6b9442016e0f,c12c90e4-7c40-489b-b14b-6b9442016e0f,0,1,6371e288-3502-4d66-9006-b5a36107c0b7,6371e288-3502-4d66-9006-b5a36107c0b7,0,1,245814f7-028c-4c13-98eb-15412e851f81,245814f7-028c-4c13-98eb-15412e851f81,0,1,0132e564-2cd3-4930-8962-1068532f4be4,0132e564-2cd3-4930-8962-1068532f4be4,0,1,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,57d0f9b0-18d0-48ba-9f3c-d106f66ac602,0,1,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,3a7cfd4c-c943-43c2-a8d5-6d8ab3a10fc9,0,1,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,36b8b08f-0da3-4dbd-9aa8-73220ca9101d,0,1,7021fca5-d612-43e1-927b-7f822153cf75,7021fca5-d612-43e1-927b-7f822153cf75,0,1,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,9fd16d51-91bb-4973-a7c4-cf4db87da8bf,0,1,ee0a8d23-660a-492b-a813-b57394acee05,ee0a8d23-660a-492b-a813-b57394acee05,0,1,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,d1eda8f4-ffdd-445a-882c-6124d9f7fcf2,0,1,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,f3a8dd22-4469-4a3b-a7dd-78a5624b7bf0,0,1,ade21e2e-349f-414b-8f35-6ae3b6a4064d,ade21e2e-349f-414b-8f35-6ae3b6a4064d,0,1,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,cce823c6-3bd5-4e46-91f6-8715cb72b1d5,0,1,83f51efe-e2af-459a-b59f-2c036124ac23,83f51efe-e2af-459a-b59f-2c036124ac23,0,1,e3ca64af-7766-48e2-b7c6-2a96f4539905,e3ca64af-7766-48e2-b7c6-2a96f4539905,0,1,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,6ed466d7-e016-4d9c-9c0e-8deed48cbd70,0,1,b03829e9-ba22-4584-85f0-c36d63f48242,b03829e9-ba22-4584-85f0-c36d63f48242,0,1,084a7c95-a59b-4861-b8b3-b5710a57ac60,084a7c95-a59b-4861-b8b3-b5710a57ac60,0,1,efcea6da-6746-4e00-913a-14cab38b5d84,efcea6da-6746-4e00-913a-14cab38b5d84,0,1,aff367fb-7fca-44d0-adf9-3731f14834f6,aff367fb-7fca-44d0-adf9-3731f14834f6,0,1,a2782760-dd4c-44d2-a785-814d6f610455,a2782760-dd4c-44d2-a785-814d6f610455,0,1,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,245162d8-6ae1-47e5-a0c9-0d5f2e5d8ea8,0,1,6581ac1f-11ef-42b8-9f3b-590bb7546e63,6581ac1f-11ef-42b8-9f3b-590bb7546e63,0,1,ce952e88-35b7-4506-81ac-d7081e50a650,ce952e88-35b7-4506-81ac-d7081e50a650,0,1,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,5d7a53fa-1a89-4e6e-868c-4077bd84c0ce,0,1,3bf1281f-7570-4633-86b9-3e953a7e6647,3bf1281f-7570-4633-86b9-3e953a7e6647,0,1,715dc289-5b14-4ee0-8716-9c15958b9069,715dc289-5b14-4ee0-8716-9c15958b9069,0,1,92707138-5004-4378-8477-f909166d319d,92707138-5004-4378-8477-f909166d319d,0,1,43661775-43bb-4d9e-bfbb-c46e7d194ca3,43661775-43bb-4d9e-bfbb-c46e7d194ca3,0,1,532637ef-be0d-4f42-9747-a88e17eb3def,532637ef-be0d-4f42-9747-a88e17eb3def,0,1,61127152-3e24-40b4-8a23-5eb6cae568ff,61127152-3e24-40b4-8a23-5eb6cae568ff,0,1,ffd987e3-e8af-4d46-881e-1e312e74dbac,ffd987e3-e8af-4d46-881e-1e312e74dbac,0,1,ad1142ed-183d-47a3-800c-997a3770e11e,ad1142ed-183d-47a3-800c-997a3770e11e,0,1,ebef37c6-4808-4683-93be-036ce19cafd5,ebef37c6-4808-4683-93be-036ce19cafd5,0,1,66364cd4-aaa5-421d-96d6-3c283c14650d,66364cd4-aaa5-421d-96d6-3c283c14650d,0,1,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,fdbbbf8b-dacf-436e-8d8b-1e2b8e854b17,0,1,3c54d440-e908-43d6-a5cc-bb64620c82d7,3c54d440-e908-43d6-a5cc-bb64620c82d7,0,1,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,23a240a2-52ee-46ab-89d9-50dcee2cc8d2,0,1,bf1dd911-8ee1-407b-acae-10c85b74baf3,bf1dd911-8ee1-407b-acae-10c85b74baf3,0,1,e924058f-25c3-4744-a565-836b824991b7,e924058f-25c3-4744-a565-836b824991b7,0,1,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,bc6a47a1-a3f3-4d7e-9dad-099bd3dba751,0,1,518dcd70-4ccf-4866-a94f-7ceec7dd2801,518dcd70-4ccf-4866-a94f-7ceec7dd2801,0,1,0481bc65-6a32-46b9-ae87-993ba52a29a5,0481bc65-6a32-46b9-ae87-993ba52a29a5,0,1,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,36ebebbb-dff1-4dbd-870b-58bd4a71fa1f,0,1,dbc5f419-63b0-4cbe-90ff-c0101105e46c,dbc5f419-63b0-4cbe-90ff-c0101105e46c,0,1,c708f6e9-b7a0-4046-90f3-83527da7b872,c708f6e9-b7a0-4046-90f3-83527da7b872,0,1,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0006b44a-3a0c-4be4-8dd0-bd0db9ddcc4d,0,1,14256e0a-a947-42a3-8e36-47bfbb052a0c,14256e0a-a947-42a3-8e36-47bfbb052a0c,0,1,1b1aa77a-d14b-4751-a7da-0b5bac4db461,1b1aa77a-d14b-4751-a7da-0b5bac4db461,0,1,c0dcdb22-6719-4597-a781-bca1370909e5,c0dcdb22-6719-4597-a781-bca1370909e5,0,1,7a34f723-cd14-4949-a40f-7ce579bf0449,7a34f723-cd14-4949-a40f-7ce579bf0449,0,1,5cdc9ac7-bba9-4ed1-845a-607976fc4679,5cdc9ac7-bba9-4ed1-845a-607976fc4679,0,1,295f3692-0721-4c41-a69b-171ef20a5018,295f3692-0721-4c41-a69b-171ef20a5018,0,1,86c22871-6d1c-44e0-8ade-ce4bdeb23321,86c22871-6d1c-44e0-8ade-ce4bdeb23321,0,1,da51de81-4d4f-46b5-a308-7b50db6c45a7,da51de81-4d4f-46b5-a308-7b50db6c45a7,0,1,8d31ce6a-4d44-46c6-a11c-47fb33e88691,8d31ce6a-4d44-46c6-a11c-47fb33e88691,0,1,c2a8c2d3-ff13-4a13-acd4-797118c4e767,c2a8c2d3-ff13-4a13-acd4-797118c4e767,0,1,bc6adf75-8666-49f3-9703-b0014dfee123,bc6adf75-8666-49f3-9703-b0014dfee123,0,1,30632f54-b779-4857-a5cc-c53fe8887ee5,30632f54-b779-4857-a5cc-c53fe8887ee5,0,1,df22b227-b2c3-4e65-9706-7582f99fe59c,df22b227-b2c3-4e65-9706-7582f99fe59c,0,1,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,eafaec9c-030b-4e5f-8fa8-e17dad2feec9,0,1,087480bb-8c89-4b00-a29b-b7e29926478d,087480bb-8c89-4b00-a29b-b7e29926478d,0,1,685373b7-638a-439a-8cba-703d56e4e404,685373b7-638a-439a-8cba-703d56e4e404,0,1,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,8a41b8f1-93fc-44e6-bf45-0d1fa9d24f4a,0,1,1cfba08f-d5e5-4833-b494-a25d0477e9c3,1cfba08f-d5e5-4833-b494-a25d0477e9c3,0,1,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,ae22743b-6d21-4fbb-bb4c-fee53e2b87cb,0,1,921a0a14-8c06-4894-95ce-423000769364,921a0a14-8c06-4894-95ce-423000769364,0,1,3805ee39-a48a-499a-9ef8-9c2a5985404f,3805ee39-a48a-499a-9ef8-9c2a5985404f,0,1,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,07ccfe87-e1ab-4da7-92cb-a612e0972b0b,0,1,08c2f92c-eb05-49e7-bfc9-4a89607b9864,08c2f92c-eb05-49e7-bfc9-4a89607b9864,0,1,6d751379-89a7-49b5-93e5-578329c63d9c,6d751379-89a7-49b5-93e5-578329c63d9c,0,1,c3f156ef-947e-4ebb-883f-4f099a116063,c3f156ef-947e-4ebb-883f-4f099a116063,0,1,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,5e3ab0a3-c0a6-4f41-85d3-2eede4abb555,0,1,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,a065ffc3-f50b-4a78-9b84-bfc4e5515a4b,0,1,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,4cba5a06-1484-4dd1-8e35-2d702c7d96d0,0,1,e98e9e56-2995-430c-bd3b-f1070aec15a5,e98e9e56-2995-430c-bd3b-f1070aec15a5,0,1,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,d35c51b0-4cb7-4f9c-8aac-6a25a1b49adf,0,1,8a7546f4-bfc9-4732-bf60-43a41e2c8753,8a7546f4-bfc9-4732-bf60-43a41e2c8753,0,1,16244165-d5a4-4012-8bb5-7f5fee1111af,16244165-d5a4-4012-8bb5-7f5fee1111af,0,1,290b72ad-004f-46ab-be5e-47557543b965,290b72ad-004f-46ab-be5e-47557543b965,0,1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,e1b2ccf9-5a8f-4008-86f3-d2c7cf5581d1,0,1,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,fa0e0792-bffb-47ce-866f-9e8dbdab17a4,0,1,263bcd20-9878-48d4-aac4-b371ec49d8d6,263bcd20-9878-48d4-aac4-b371ec49d8d6,0,1,da1d8660-2757-4cea-bae0-c2210b9406ae,da1d8660-2757-4cea-bae0-c2210b9406ae,0,1,d60329c6-8f48-481d-82e7-18da355cb09c,d60329c6-8f48-481d-82e7-18da355cb09c,0,1,c4b14162-b25b-4099-9ec3-7251848ef08a,c4b14162-b25b-4099-9ec3-7251848ef08a,0,1,8eb5ba97-eb38-4357-8bfc-e9618280800d,8eb5ba97-eb38-4357-8bfc-e9618280800d,0,1,b72f73d5-e274-472b-871b-16af72dab603,b72f73d5-e274-472b-871b-16af72dab603,0,1,b008d184-0b61-460d-9490-89ecc1cd58ba,b008d184-0b61-460d-9490-89ecc1cd58ba,0,1,c8340e2f-6958-4bcd-8e17-499c4adfe60b,c8340e2f-6958-4bcd-8e17-499c4adfe60b,0,1,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,c72831cd-d064-4fe8-9603-64e6d7b8ac4d,0,1,03f68d82-752c-45d1-bf9a-60ecd21a2c81,03f68d82-752c-45d1-bf9a-60ecd21a2c81,0,1,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,307e8938-e347-4eff-b2fb-fd0b8f4aa27f,0,1,d4fffc79-2841-49a9-a382-e9e4138984df,d4fffc79-2841-49a9-a382-e9e4138984df,0,1,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,84e4c572-5b32-46e0-82a0-0c76d4ef5d73,0,1,9f41f903-d316-4189-8dc0-603ea9036c1c,9f41f903-d316-4189-8dc0-603ea9036c1c,0,1,e19e70d6-8707-4dde-ae69-7bd97035ca03,e19e70d6-8707-4dde-ae69-7bd97035ca03,0,1,425b5272-1130-457d-8a05-aee8fad681d9,425b5272-1130-457d-8a05-aee8fad681d9,0,1,8d583436-f2a6-4a33-8137-1376f5754643,8d583436-f2a6-4a33-8137-1376f5754643,0,1,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,4a864e74-41ce-4673-a080-bc3c2ba1b8ee,0,1,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,d279958e-6dd4-4bb0-a65f-c8768b4c4d96,0,1,2d66502d-77ab-4cc9-9ccf-5433458fae9f,2d66502d-77ab-4cc9-9ccf-5433458fae9f,0,1,cff48da7-3c46-4602-83e8-90c9ea53e107,cff48da7-3c46-4602-83e8-90c9ea53e107,0,1,7155472d-c791-402c-96e1-d25612024c88,7155472d-c791-402c-96e1-d25612024c88,0,1,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,fb90c261-24a7-4cef-8a2c-85c0e4fdd64a,0,1,9005911d-ea81-48b6-bf50-1a328ff4d7be,9005911d-ea81-48b6-bf50-1a328ff4d7be,0,1,7df12006-c0c0-42a6-b852-bdced72c62e3,7df12006-c0c0-42a6-b852-bdced72c62e3,0,1,9c00987d-3c55-40eb-bae8-f36e71e4ef87,9c00987d-3c55-40eb-bae8-f36e71e4ef87,0,1,29273130-5142-48c9-8399-00e5ab4b6203,29273130-5142-48c9-8399-00e5ab4b6203,0,1,9e14cd7e-1293-4008-baf8-88df6a98abf7,9e14cd7e-1293-4008-baf8-88df6a98abf7,0,1,98e3aace-52a6-4911-8205-92165adca6de,98e3aace-52a6-4911-8205-92165adca6de,0,1,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,91f4dbf9-d539-4239-a95d-c1d9e14e50f8,0,1,577e5fea-b792-4c8b-b3b3-a03a14b64b04,577e5fea-b792-4c8b-b3b3-a03a14b64b04,0,1,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,ba5ec2d6-1791-42b5-8e6f-04d1d18e9469,0,1,b18d312b-f9c3-4f37-ac77-d499e949f154,b18d312b-f9c3-4f37-ac77-d499e949f154,0,1,ace2beea-d393-412f-8b71-b845b665e2c4,ace2beea-d393-412f-8b71-b845b665e2c4,0,1,3fd4bc77-2a1b-4750-a54a-4171c8d40027,3fd4bc77-2a1b-4750-a54a-4171c8d40027,0,1,5b27fde9-fa80-48b1-aea1-73e132b9a944,5b27fde9-fa80-48b1-aea1-73e132b9a944,0,1,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,00bf04d6-6a8e-4b13-94cf-36c1c6090cd8,0,1,a747ec6b-f230-49b4-a929-7ed1ba87b078,a747ec6b-f230-49b4-a929-7ed1ba87b078,0,1,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,796f8fb4-d9cd-40ae-936b-8a70d2eb1121,0,1,4802e016-a9e9-47d0-916b-b42194a1f388,4802e016-a9e9-47d0-916b-b42194a1f388,0,1,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,a1740d1f-1b8f-4db5-be5e-0eac44e934b8,0,1,4062674a-4a81-494d-82bc-4984cd7c7903,4062674a-4a81-494d-82bc-4984cd7c7903,0,1,782a8801-06ca-4d63-bf8b-63d2320766d8,782a8801-06ca-4d63-bf8b-63d2320766d8,0,1,93a73123-d98c-4286-9269-7bfcedd115e8,93a73123-d98c-4286-9269-7bfcedd115e8,0,1,c5985c02-1824-4ce9-b415-1621dd2ee864,c5985c02-1824-4ce9-b415-1621dd2ee864,0,1,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,993ce747-cdc9-445f-ad7d-daf53cd5f7e9,0,1,e819aaf6-3dfb-492a-8a4a-50a7c6854790,e819aaf6-3dfb-492a-8a4a-50a7c6854790,0,1,62b95ba1-f213-42fb-90f3-a03e8094bc9e,62b95ba1-f213-42fb-90f3-a03e8094bc9e,0,1,619b534d-5605-40d3-9b8c-4443a21d7795,619b534d-5605-40d3-9b8c-4443a21d7795,0,1,a010bbf4-d547-4576-9797-28e3096ffed3,a010bbf4-d547-4576-9797-28e3096ffed3,0,1,a44c3eb2-1054-41ca-82e8-fc35336e7009,a44c3eb2-1054-41ca-82e8-fc35336e7009,0,1,01f67911-4ca7-4668-b970-62c299b98e56,01f67911-4ca7-4668-b970-62c299b98e56,0,1,20c89c94-f77f-4e14-8c97-2a70c1419ce3,20c89c94-f77f-4e14-8c97-2a70c1419ce3,0,1,3c4519ce-e6aa-43e3-87e5-fbd521fdc88e,3c4519ce-e6aa-43e3-87e5-fbd521fdc88e,0,1,892823b2-41ea-4c87-b0d7-e6fe5f190a1c,892823b2-41ea-4c87-b0d7-e6fe5f190a1c,0,1,05a1450f-7593-48d5-894d-b623e4458c57,05a1450f-7593-48d5-894d-b623e4458c57,0,1,bb8e10cb-6fa1-43f6-870f-0a26bede9d9c,bb8e10cb-6fa1-43f6-870f-0a26bede9d9c,0,1,02a0da6e-4045-49cf-bd14-ff22b534c7be,02a0da6e-4045-49cf-bd14-ff22b534c7be,0,1,726b9fed-3149-4697-8b0f-bc9051e939ae,726b9fed-3149-4697-8b0f-bc9051e939ae,0,1,e7050bde-5acb-4ad8-86f0-375739120d02,e7050bde-5acb-4ad8-86f0-375739120d02,0,1,c6b4c9b4-1064-49b0-bae4-b624582142c7,c6b4c9b4-1064-49b0-bae4-b624582142c7,0,1,11d5138e-df5b-4b0b-adf0-37c239d0de30,11d5138e-df5b-4b0b-adf0-37c239d0de30,0,1,f8b72dff-00a9-4b2f-b1a8-72d1f7670a88,f8b72dff-00a9-4b2f-b1a8-72d1f7670a88,0,1,1c09bf33-9b54-4bfd-bc92-e7324025fab0,1c09bf33-9b54-4bfd-bc92-e7324025fab0,0,1,8d7750e9-899f-4434-8702-44cd02681779,8d7750e9-899f-4434-8702-44cd02681779,0,1,426cbebb-880b-49c5-b046-83c5e071273e,426cbebb-880b-49c5-b046-83c5e071273e,0,1,d85244dc-c417-4e69-9aa7-7ad313ecb940,d85244dc-c417-4e69-9aa7-7ad313ecb940,0,1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,3bebf5e9-68bb-48dc-a39d-cbdca2dbecb1,0,1,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,cd392ef0-dedb-4f83-9a2c-a24190ee0dc0,0,1,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,bb2f0c1c-3cfb-4a26-b6de-5bbeb5614587,0,1,0713de12-87d5-4877-bd8a-2b6466df67df,0713de12-87d5-4877-bd8a-2b6466df67df,0,1,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,b848aafc-44fb-4dfe-8eec-233dc08fbbb6,0,1,c4d7c569-4649-4f98-a048-45f3c5933670,c4d7c569-4649-4f98-a048-45f3c5933670,0,1,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,6dc05d69-bd54-4e8a-8985-c2ddfa0aaffb,0,1,ad08b104-01f8-4900-a06c-baa1d55eba84,ad08b104-01f8-4900-a06c-baa1d55eba84,0,1,9352d10d-188f-4074-8dd1-7be5c11525e3,9352d10d-188f-4074-8dd1-7be5c11525e3,0,1,1933634a-6f10-48e7-99f0-60ac338f7832,1933634a-6f10-48e7-99f0-60ac338f7832,0,1,655deec5-c079-4748-8521-b3f10c243394,655deec5-c079-4748-8521-b3f10c243394,0,1,f6d4d818-d54c-4337-82cf-abd5e6dbe770,f6d4d818-d54c-4337-82cf-abd5e6dbe770,0,1,656c447b-291f-4e62-81ac-1c004841aa72,656c447b-291f-4e62-81ac-1c004841aa72,0,1,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,c9a06c8d-2f6d-4e03-bc62-a1a19f17faf3,0,1,5ba93404-58ad-4321-9a62-27db828f75f6,5ba93404-58ad-4321-9a62-27db828f75f6,0,1,3da20e86-1d83-4935-b425-a91392dc8f35,3da20e86-1d83-4935-b425-a91392dc8f35,0,1,b56f25d2-72a9-4d80-8998-77ac3097c873,b56f25d2-72a9-4d80-8998-77ac3097c873,0,1,03bd775a-e0a1-4205-82ce-6068e73ad134,03bd775a-e0a1-4205-82ce-6068e73ad134,0,1,40bed47b-7754-4a70-b51a-47385fd46e83,40bed47b-7754-4a70-b51a-47385fd46e83,0,1,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,773ef914-5e7e-4ec1-bcdb-b2d111b560e6,0,1,1e5a4f93-1ab9-4775-9538-2a1772215d89,1e5a4f93-1ab9-4775-9538-2a1772215d89,0,1,c25db165-0734-4fef-b161-e5164954a616,c25db165-0734-4fef-b161-e5164954a616,0,1,4f97b909-68f9-482a-b958-b4caa9b83763,4f97b909-68f9-482a-b958-b4caa9b83763,0,1,c31e34db-41ff-4db3-a4d0-f780f67070f6,c31e34db-41ff-4db3-a4d0-f780f67070f6,0,1,7a014fcb-a4b8-4c1c-b0de-21907a917c25,7a014fcb-a4b8-4c1c-b0de-21907a917c25,0,1,1688ef5d-72df-4bc4-a879-89033d466ad7,1688ef5d-72df-4bc4-a879-89033d466ad7,0,1,30f18fbf-4240-4708-a71a-189f8fc324f3,30f18fbf-4240-4708-a71a-189f8fc324f3,0,1,344cb0de-315d-4d05-93f8-8a1f53208470,344cb0de-315d-4d05-93f8-8a1f53208470,0,1,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,98aa5d5e-6c0e-4b9b-a3fa-335635d15217,0,1,a7973409-b18e-4b88-ad50-e2ae89470d8f,a7973409-b18e-4b88-ad50-e2ae89470d8f,0,1,a537875e-492e-4cf2-96e9-e2e97bb206da,a537875e-492e-4cf2-96e9-e2e97bb206da,0,1,085a08f3-9d93-429d-9b1b-9065ab8363f7,085a08f3-9d93-429d-9b1b-9065ab8363f7,0,1,a530c0a1-c1d2-40bb-9d0e-320074dbb684,a530c0a1-c1d2-40bb-9d0e-320074dbb684,0,1,55c63580-16f1-4d6f-a40b-e630f71ebb98,55c63580-16f1-4d6f-a40b-e630f71ebb98,0,1,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0a136ad9-22ad-4ba7-a31a-40a193b49d26,0,1,b456d820-8034-4381-960d-66d9f86b0a4b,b456d820-8034-4381-960d-66d9f86b0a4b,0,1,bd55fd03-cf67-4333-a554-98e03d18f780,bd55fd03-cf67-4333-a554-98e03d18f780,0,1,4cca4c80-62f5-4205-8196-78fcfa83de2f,4cca4c80-62f5-4205-8196-78fcfa83de2f,0,1,1a7c774d-5b86-4051-b797-3081e19fa30a,1a7c774d-5b86-4051-b797-3081e19fa30a,0,1,00949768-5833-4fe2-8752-b009d1bceef8,00949768-5833-4fe2-8752-b009d1bceef8,0,1,c5b3ca21-8f7b-4933-853c-7d95b17b5631,c5b3ca21-8f7b-4933-853c-7d95b17b5631,0,1,8b0faa1e-09da-4ba4-894e-e86abc5d39df,8b0faa1e-09da-4ba4-894e-e86abc5d39df,0,1,cb50b309-1b6c-400c-9e9e-67204dcccaae,cb50b309-1b6c-400c-9e9e-67204dcccaae,0,1,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,e2b482cb-6954-4e6a-abe9-d0a01f64b73a,0,1,2a365474-edba-4e3d-a69c-c856be0e4a4a,2a365474-edba-4e3d-a69c-c856be0e4a4a,0,1,c46fd680-efbe-49a8-91f0-73e36d791fa9,c46fd680-efbe-49a8-91f0-73e36d791fa9,0,1,6995567b-5a3c-4e03-9fb4-e22363ed6555,6995567b-5a3c-4e03-9fb4-e22363ed6555,0,1,32c38c2b-072d-4cf2-bf9a-f9c4b4c463e8,32c38c2b-072d-4cf2-bf9a-f9c4b4c463e8,0,1,375fd076-c54c-43c1-8d11-12607c0ce04e,375fd076-c54c-43c1-8d11-12607c0ce04e,0,1,3b9ded5a-f656-4a33-90f3-d7dbff234da9,3b9ded5a-f656-4a33-90f3-d7dbff234da9,0,1,eae94ac3-3aa3-49f0-940f-51c89fec66e2,eae94ac3-3aa3-49f0-940f-51c89fec66e2,0,1,a2b43b21-56e7-4644-9345-d4918a1dfe8e,a2b43b21-56e7-4644-9345-d4918a1dfe8e,0,1,6ef24453-482d-4a6e-a088-7a2faf8de1c8,6ef24453-482d-4a6e-a088-7a2faf8de1c8,0,1,b9f6c8a3-e9bc-4dae-b583-ca20e91eb261,b9f6c8a3-e9bc-4dae-b583-ca20e91eb261,0,1,1a0cdbe5-ad4a-42dc-a1c9-54c737436e20,1a0cdbe5-ad4a-42dc-a1c9-54c737436e20,0,1,f4cdb0ac-8993-4e8c-9d13-128710dec273,f4cdb0ac-8993-4e8c-9d13-128710dec273,0,1,fbe620e1-a3a3-48aa-89e8-4562fdd24f1e,fbe620e1-a3a3-48aa-89e8-4562fdd24f1e,0,1,b4f824aa-9b2f-40c9-a5f6-98d452019c38,b4f824aa-9b2f-40c9-a5f6-98d452019c38,0,1,b8a966ba-3452-44df-91d0-7040ecd3e4c2,b8a966ba-3452-44df-91d0-7040ecd3e4c2,0,1,80d6883d-c608-4fe5-acae-78bc45e40e5f,80d6883d-c608-4fe5-acae-78bc45e40e5f,0,1,213b173a-c3b7-449c-a618-d479c4dc38e8,213b173a-c3b7-449c-a618-d479c4dc38e8,0,1,7a64dffc-5cfe-41e2-bd55-fbf4957559a4,7a64dffc-5cfe-41e2-bd55-fbf4957559a4,0,1,a78249aa-ca9f-4bee-b00d-68ff59ea81a4,a78249aa-ca9f-4bee-b00d-68ff59ea81a4,0,1,7534148d-0124-49a2-a446-c6205d153153,7534148d-0124-49a2-a446-c6205d153153,0,1,32ed8a10-7177-4e45-866e-04a1b6831570,32ed8a10-7177-4e45-866e-04a1b6831570,0,1,e2a90d7a-5480-47cd-b296-8d60d8baf7f9,e2a90d7a-5480-47cd-b296-8d60d8baf7f9,0,1,8190a432-1037-4334-b2c7-bae39f7f9442,8190a432-1037-4334-b2c7-bae39f7f9442,0,1,4733e5c1-8198-408b-8903-866d3b0fdc43,4733e5c1-8198-408b-8903-866d3b0fdc43,0,1,e1fc5146-37c5-4207-af05-7250976bd406,e1fc5146-37c5-4207-af05-7250976bd406,0,1,60038cd9-8d01-44b1-9d3f-f3a31e59e5db,60038cd9-8d01-44b1-9d3f-f3a31e59e5db,0,1,f0bfb98b-cc43-4b6c-8166-9b81b4c22cb0,f0bfb98b-cc43-4b6c-8166-9b81b4c22cb0,0,1,f5e27159-789a-4d34-ac51-fd99d753b83a,f5e27159-789a-4d34-ac51-fd99d753b83a,0,1,f1cb02ff-a2f0-4a34-93fa-e47c6e210ee1,f1cb02ff-a2f0-4a34-93fa-e47c6e210ee1,0,1,7183d525-212a-42f3-a7e5-eb9deaeaa4a3,7183d525-212a-42f3-a7e5-eb9deaeaa4a3,0,1,b82b27cc-e81c-4b7c-9833-ea4f2ce21edb,b82b27cc-e81c-4b7c-9833-ea4f2ce21edb,0,1,4347f77e-bad9-4525-90a0-794787f03585,4347f77e-bad9-4525-90a0-794787f03585,0,1,cfde3330-2bed-4273-8d69-c213ebdde247,cfde3330-2bed-4273-8d69-c213ebdde247,0,1,2d6ca049-89a5-437e-971c-b8e42f61b460,2d6ca049-89a5-437e-971c-b8e42f61b460,0,1,c450ebe1-4223-4a7a-b9fa-374d5c13dc8c,c450ebe1-4223-4a7a-b9fa-374d5c13dc8c,0,1,271d58d0-4449-40cc-bae9-cc4c50eebd9b,271d58d0-4449-40cc-bae9-cc4c50eebd9b,0,1,58df9322-c786-4dd1-af49-7cd164b378da,58df9322-c786-4dd1-af49-7cd164b378da,0,1,8d48de7f-61d6-4462-9c14-f728206a482c,8d48de7f-61d6-4462-9c14-f728206a482c,0,1,a87e890a-8924-4f56-9e37-04579b95297a,a87e890a-8924-4f56-9e37-04579b95297a,0,1,c71d4fa4-86b0-41e2-8b6a-cfb91e131eaf,c71d4fa4-86b0-41e2-8b6a-cfb91e131eaf,0,1,4c1f2581-ee42-4df5-9169-20205a18a9be,4c1f2581-ee42-4df5-9169-20205a18a9be,0,1,bb3d9ea3-8895-4950-9ee9-4249ca983d48,bb3d9ea3-8895-4950-9ee9-4249ca983d48,0,1,86ea21fa-5ecc-4d81-b6ad-d71e7ed39009,86ea21fa-5ecc-4d81-b6ad-d71e7ed39009,0,1,b806d2b6-bbd1-4abd-9471-7791603a2fcf,b806d2b6-bbd1-4abd-9471-7791603a2fcf,0,1,d7aa519b-9a2e-4946-bd06-9ac22bb7c1e4,d7aa519b-9a2e-4946-bd06-9ac22bb7c1e4,0,1,ecee1ec8-aa1f-4b90-a1b3-2538a53c0dd7,ecee1ec8-aa1f-4b90-a1b3-2538a53c0dd7,0,1,34f50dd9-de16-4013-a2ef-6595d9c28930,34f50dd9-de16-4013-a2ef-6595d9c28930,0,1,56fcca65-3429-4409-bce7-f434f6530a74,56fcca65-3429-4409-bce7-f434f6530a74,0,1,5236ca8d-a4a6-4df8-a6a3-5cfe02c49aeb,5236ca8d-a4a6-4df8-a6a3-5cfe02c49aeb,0,1,bcfabf25-ae2f-4f73-836c-2cab3617a0b6,bcfabf25-ae2f-4f73-836c-2cab3617a0b6,0,1,b286f047-a4d0-4808-b1b4-27997ead6d49,b286f047-a4d0-4808-b1b4-27997ead6d49,0,1,49da2d3a-657a-4cfd-8e37-422b96d2cda5,49da2d3a-657a-4cfd-8e37-422b96d2cda5,0,1,fced16ae-abee-4fbe-9582-dfd368d5610a,fced16ae-abee-4fbe-9582-dfd368d5610a,0,1,afe60bad-1585-487f-9a39-9b9e031f9576,afe60bad-1585-487f-9a39-9b9e031f9576,0,1,4c4f0475-bd11-40c8-af0d-8affec6f838d,4c4f0475-bd11-40c8-af0d-8affec6f838d,0,1,7aee36ac-bbd1-4b06-8266-b7325fb9ce3c,7aee36ac-bbd1-4b06-8266-b7325fb9ce3c,0,1,855439d7-a621-48f5-b6d9-bc2bbd11ad90,855439d7-a621-48f5-b6d9-bc2bbd11ad90,0,1,4e0ec0f0-eb44-41b0-b950-88fdb6ac0db2,4e0ec0f0-eb44-41b0-b950-88fdb6ac0db2,0,1,2f25e742-555b-4db8-bff2-2d345ce2a93a,2f25e742-555b-4db8-bff2-2d345ce2a93a,0,1,303d8c17-4303-4f1d-8bed-51cd7ea0a4b2,303d8c17-4303-4f1d-8bed-51cd7ea0a4b2,0,1,46affd3a-f31c-4432-bd58-2f2b1ed9bc4e,46affd3a-f31c-4432-bd58-2f2b1ed9bc4e,0,1,a7fee9d3-569d-4b5b-bd47-44790e0095f5,a7fee9d3-569d-4b5b-bd47-44790e0095f5,0,1,a258fe12-7e55-4f89-86fa-962b1d2947ac,a258fe12-7e55-4f89-86fa-962b1d2947ac,0,1,93701593-5ac8-4266-b471-7e9ed35a9c3e,93701593-5ac8-4266-b471-7e9ed35a9c3e,0,1,0fdb864e-ede9-4777-835c-0804968ee544,0fdb864e-ede9-4777-835c-0804968ee544,0,1,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,04c45a51-4a8e-48fa-a39c-f67ce2079fc4,0,1,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,b46546fe-3d6b-473f-a7cb-ff3b3ae0bafe,0,1,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,e7b1810c-8e6c-4759-9e6f-c754b5a1ac77,0,1,5dee9814-fe38-4631-8148-8d6c87ef6f47,5dee9814-fe38-4631-8148-8d6c87ef6f47,0,1,37d17053-5c2b-4972-b6a5-a589f2ddbde6,37d17053-5c2b-4972-b6a5-a589f2ddbde6,0,1,c349968a-3f87-425b-8efb-d847934dee4b,c349968a-3f87-425b-8efb-d847934dee4b,0,1,3bb8dc33-970c-4c58-9036-ce716d963847,3bb8dc33-970c-4c58-9036-ce716d963847,0,1,b3ff39fa-f665-4d01-9a2a-69722e6b1071,b3ff39fa-f665-4d01-9a2a-69722e6b1071,0,1,0abacb0a-ce00-474e-8aec-35685c51ddef,0abacb0a-ce00-474e-8aec-35685c51ddef,0,1,ae407b17-03aa-4268-8603-58d6714dae89,ae407b17-03aa-4268-8603-58d6714dae89,0,1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,5c0ce79b-97a9-4917-9b02-a4548a97d5a1,0,1,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,c552cfac-d3ef-4b63-a0b9-7c79261ff9f3,0,1,5bb6e52c-ac26-4143-8e90-f04f703f823b,5bb6e52c-ac26-4143-8e90-f04f703f823b,0,1,ead0a902-bd87-4ee5-bfee-1a131dd28bd6,ead0a902-bd87-4ee5-bfee-1a131dd28bd6,0,1,d4ce8dd2-a391-49d0-9742-a6a6a07b1684,d4ce8dd2-a391-49d0-9742-a6a6a07b1684,0,1,579baaa4-6493-4d99-8744-6399757295c7,579baaa4-6493-4d99-8744-6399757295c7,0,1,9c1325af-7492-42be-b3af-51b692534510,9c1325af-7492-42be-b3af-51b692534510,0,1,dface15c-cd65-4fb1-b4dd-b513086d3f8e,dface15c-cd65-4fb1-b4dd-b513086d3f8e,0,1,ae6d0e12-8857-476c-b4b2-f03295cbed3e,ae6d0e12-8857-476c-b4b2-f03295cbed3e,0,1,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,bd0e3bd4-1207-41ea-8dfc-afa8f7d08cc2,0,1,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,d6969c1e-e13c-4542-abb7-9cf6bb50b8e2,0,1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,ccd91f94-d3f1-4aa3-90cf-081d72c4cab1,0,1,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,aa7d5ca4-3c02-4ca1-a790-2435ee9f9f02,0,1,b7e85f5c-4312-44c6-895a-3f636a8c78d8,b7e85f5c-4312-44c6-895a-3f636a8c78d8,0,1,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,3b6e7ee6-0ef5-464a-a01a-6143479c7a61,0,1,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,1969e8d1-0a82-44cb-a0d4-e5badb1d28d4,0,1,a1afacc5-f49a-4df2-a44d-479594d50179,a1afacc5-f49a-4df2-a44d-479594d50179,0,1,fe70eba3-7477-4a38-a511-d69960abb928,fe70eba3-7477-4a38-a511-d69960abb928,0,1,6534ea96-2145-49e6-9739-f59459dc7f6b,6534ea96-2145-49e6-9739-f59459dc7f6b,0,1,f49bffa0-cad6-4801-b82e-21aa580e72e6,f49bffa0-cad6-4801-b82e-21aa580e72e6,0,1,bbbfb817-8db3-4415-86c3-af028276d6e9,bbbfb817-8db3-4415-86c3-af028276d6e9,0,1,6a91112c-f6cc-47a0-9d26-a36c7702af7d,6a91112c-f6cc-47a0-9d26-a36c7702af7d,0,1,cb92dc2e-6053-4233-a408-4464514b1257,cb92dc2e-6053-4233-a408-4464514b1257,0,1,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,8cd65ad3-a7a3-46f6-9061-e8751fd5073e,0,1,85550a7a-8fe0-4296-ace5-63cf053536b4,85550a7a-8fe0-4296-ace5-63cf053536b4,0,1,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,cf1bd9cd-2ef2-4868-b6c0-5160860690f7,0,1,3f8b6411-6606-4d27-891e-7c77be47c5f9,3f8b6411-6606-4d27-891e-7c77be47c5f9,0,1,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,bed3f0b2-40c6-4323-9bca-cb8864e38ec0,0,1,f8f0857f-2c75-471a-ae0b-a3a265e1eb25,f8f0857f-2c75-471a-ae0b-a3a265e1eb25,0,1,a23f97fb-7ac9-4941-a2c6-bbff6c36ac12,a23f97fb-7ac9-4941-a2c6-bbff6c36ac12,0,1,80cf54ed-8677-4c89-a378-0abef6c64010,80cf54ed-8677-4c89-a378-0abef6c64010,0,1,f0dec7b3-2d6a-44ce-a1da-9c71ccd37539,f0dec7b3-2d6a-44ce-a1da-9c71ccd37539,0,1,56ee3afd-5ae6-421e-b9f3-26505e40f100,56ee3afd-5ae6-421e-b9f3-26505e40f100,0,1,63c9a839-78b2-4706-b380-5aedf6914930,63c9a839-78b2-4706-b380-5aedf6914930,0,1,40f5c1cb-2654-4738-bb44-6734b0e3490b,40f5c1cb-2654-4738-bb44-6734b0e3490b,0,1,2ec484b1-95eb-43a7-9430-1c1ef49f05af,2ec484b1-95eb-43a7-9430-1c1ef49f05af,0,1,1a314ce2-03bc-4267-89a9-bb5bb866f552,1a314ce2-03bc-4267-89a9-bb5bb866f552,0,1,e3b783a6-5ea2-4cd4-955b-df63d93c1f25,e3b783a6-5ea2-4cd4-955b-df63d93c1f25,0,1,f8ab62ad-7776-49ae-b1bb-51bea9a9992b,f8ab62ad-7776-49ae-b1bb-51bea9a9992b,0,1,e859dd18-8baf-49c0-b7a0-1205b6c125d3,e859dd18-8baf-49c0-b7a0-1205b6c125d3,0,1,778c28e6-4548-45f3-a1bc-cb1dbf0cb388,778c28e6-4548-45f3-a1bc-cb1dbf0cb388,0,1,a2d6f2d9-0610-4ca9-bc15-58e341a049a4,a2d6f2d9-0610-4ca9-bc15-58e341a049a4,0,1,4dbf114a-5402-40b0-9cab-19601aa8328e,4dbf114a-5402-40b0-9cab-19601aa8328e,0,1,a0856ca2-6a66-4108-b6d4-82443cdccca6,a0856ca2-6a66-4108-b6d4-82443cdccca6,0,1,378b0708-a0a1-4c82-b55a-796acb27e696,378b0708-a0a1-4c82-b55a-796acb27e696,0,1,8e462c0e-c67a-45e9-9871-1f976b01632d,8e462c0e-c67a-45e9-9871-1f976b01632d,0,1,c5335e1f-3e47-46b7-b695-0653f825d855,c5335e1f-3e47-46b7-b695-0653f825d855,0,1,d7faad11-1e35-460c-8943-49370f328c03,d7faad11-1e35-460c-8943-49370f328c03,0,1,e4726010-85c5-4ccc-b574-4b3b55f0d391,e4726010-85c5-4ccc-b574-4b3b55f0d391,0,1,5d6770f2-9b3d-45c7-9e34-4c8626e482cf,5d6770f2-9b3d-45c7-9e34-4c8626e482cf,0,1,b01ace0e-7f21-4b6b-b751-074dcd9a8f54,b01ace0e-7f21-4b6b-b751-074dcd9a8f54,0,1,1f4f839a-4e19-45b8-a988-13ee604c269c,1f4f839a-4e19-45b8-a988-13ee604c269c,0,1,b3aa97e1-baef-45f4-9179-052f35527a5e,b3aa97e1-baef-45f4-9179-052f35527a5e,0,1,d613941f-ed4c-4957-b469-ea6b0d2a121d,d613941f-ed4c-4957-b469-ea6b0d2a121d,0,1,0d8d08e3-194f-416c-a1e0-aa92b40b7911,0d8d08e3-194f-416c-a1e0-aa92b40b7911,0,1,af0178fe-eb3a-485b-9acf-35c8702aa330,af0178fe-eb3a-485b-9acf-35c8702aa330,0,1,9e2c01b1-ccfe-4a68-a6af-8284e3e2396f,9e2c01b1-ccfe-4a68-a6af-8284e3e2396f,0,1,c513ceb0-0855-43ce-a311-c9bea88e2563,c513ceb0-0855-43ce-a311-c9bea88e2563,0,1,974bfc13-85c2-454a-b562-e72384eb4c31,974bfc13-85c2-454a-b562-e72384eb4c31,0,1,69cd6adc-b129-4fbc-804d-8d5aaef77280,69cd6adc-b129-4fbc-804d-8d5aaef77280,0,1,3431a3de-cb9d-46dc-b597-3203831796a9,3431a3de-cb9d-46dc-b597-3203831796a9,0,1,f3866271-04ed-4963-852e-cf41e9e18e1d,f3866271-04ed-4963-852e-cf41e9e18e1d,0,1,b77e5ec2-35cd-43ae-957f-af35214fa621,b77e5ec2-35cd-43ae-957f-af35214fa621,0,1,4a04d83d-cadd-4f36-9ec8-f926259c18ba,4a04d83d-cadd-4f36-9ec8-f926259c18ba,0,1,85e670c0-1616-4611-984c-3d40e890b2e9,85e670c0-1616-4611-984c-3d40e890b2e9,0,1,48ed25b0-afb9-414b-9a4e-8647fbdd95c3,48ed25b0-afb9-414b-9a4e-8647fbdd95c3,0,1,1e3a1148-1e9c-47b0-8f3c-f218c3b0094f,1e3a1148-1e9c-47b0-8f3c-f218c3b0094f,0,1,f1693207-2637-412a-972f-2bc79b9c7fc8,f1693207-2637-412a-972f-2bc79b9c7fc8,0,1,da59378e-0a97-4cff-977b-cc51967068ee,da59378e-0a97-4cff-977b-cc51967068ee,0,1,bbaad46d-f60d-49e6-a077-075366bca47e,bbaad46d-f60d-49e6-a077-075366bca47e,0,1,0d9f5703-91e4-4769-bedd-5bd974f2f617,0d9f5703-91e4-4769-bedd-5bd974f2f617,0,1,926cdf17-1929-43d6-8205-858aab558ad9,926cdf17-1929-43d6-8205-858aab558ad9,0,1,5ec6838f-2d70-4f91-b41b-16adfe8ed587,5ec6838f-2d70-4f91-b41b-16adfe8ed587,0,1,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,6420ad7e-61ca-4af9-9715-f2b0c3e2c58f,0,1,bee8b8a0-f058-44cb-822c-620351567627,bee8b8a0-f058-44cb-822c-620351567627,0,1,26365e29-903b-47fd-ad96-e0d87f5d6e87,26365e29-903b-47fd-ad96-e0d87f5d6e87,0,1,569180cb-ce54-4267-94b9-332e35e3c17d,569180cb-ce54-4267-94b9-332e35e3c17d,0,1,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,9ec6fc35-e84e-4f82-b616-5c02e945cc8f,0,1,a2c42946-1cdb-457a-a45b-97781cfb4a15,a2c42946-1cdb-457a-a45b-97781cfb4a15,0,1,20adf54c-044c-4bea-8028-b6d20917a030,20adf54c-044c-4bea-8028-b6d20917a030,0,1,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,dea6b05f-d3e1-4ff4-8f71-6a0c18134e94,0,1,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,a666af62-aa5d-4b2b-b9e5-017d1c93ae6a,0,1,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,7604b15a-8c5e-4515-84b9-c1d36f9efd0a,0,1,4033eb31-8281-402a-afff-431fa36e589e,4033eb31-8281-402a-afff-431fa36e589e,0,1,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,5a1e1da5-7307-4f48-bb1c-2977fc4d7cef,0,1,f59488c7-4643-4988-8043-5c9724e04279,f59488c7-4643-4988-8043-5c9724e04279,0,1,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,cfe022b5-7647-4b5c-a2bd-f5d313f4a9db,0,1,77149f7a-8a76-4569-9487-991c41e132ef,77149f7a-8a76-4569-9487-991c41e132ef,0,1,9e1be65e-986f-4d21-91f0-15c66db0c947,9e1be65e-986f-4d21-91f0-15c66db0c947,0,1,75a0f8f1-6d8d-47d0-81c5-20b5e55b9cd1,75a0f8f1-6d8d-47d0-81c5-20b5e55b9cd1,0,1,d2fe4578-a1f8-4586-b052-fa71d25365c9,d2fe4578-a1f8-4586-b052-fa71d25365c9,0,1,f31f3dab-5796-47ac-a54d-3081f8cad817,f31f3dab-5796-47ac-a54d-3081f8cad817,0,1,cd59707e-b9e4-4038-8203-ae22a8060e8d,cd59707e-b9e4-4038-8203-ae22a8060e8d,0,1,db497857-33d3-49a1-b328-dfc62c973ecb,db497857-33d3-49a1-b328-dfc62c973ecb,0,1,139c001c-7b07-465a-9187-399ad32d294f,139c001c-7b07-465a-9187-399ad32d294f,0,1,5d228ce4-069e-4f98-beed-b8e1de17c3d9,5d228ce4-069e-4f98-beed-b8e1de17c3d9,0,1,9770fc09-87bf-4fce-9b0d-410efd30edae,9770fc09-87bf-4fce-9b0d-410efd30edae,0,1,f3d8590a-dcfa-4d41-8d03-642b99ffa040,f3d8590a-dcfa-4d41-8d03-642b99ffa040,0,1,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,3d73d5ff-995e-40ed-a401-cec2a3d12c8f,0,1,20156709-1481-4007-8e89-9ce79fc589fc,20156709-1481-4007-8e89-9ce79fc589fc,0,1,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,fbcda361-0ef2-47b4-ba1c-1d1952898bd3,0,1,7e7c5abd-b645-4de5-a40e-5805ec4456e2,7e7c5abd-b645-4de5-a40e-5805ec4456e2,0,1,763a16c3-a728-4b65-a485-705990310b4a,763a16c3-a728-4b65-a485-705990310b4a,0,1,65338920-c744-4d1e-b351-848b90a3feda,65338920-c744-4d1e-b351-848b90a3feda,0,1,2aedb1ac-caf1-45c7-913e-82a36637d5d4,2aedb1ac-caf1-45c7-913e-82a36637d5d4,0,1,56177464-5e9f-4598-96bc-eb311993c503,56177464-5e9f-4598-96bc-eb311993c503,0,1,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,c2308e60-2844-4bd8-bc8a-c9c20e5fc62d,0,1,bdfe65f4-4174-4e66-915c-943137981cf0,bdfe65f4-4174-4e66-915c-943137981cf0,0,1,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,5271de2d-d3a0-4128-90e0-cd8e1ea2ad30,0,1,c895d58a-5be1-4157-81af-f4f6db9b4b9e,c895d58a-5be1-4157-81af-f4f6db9b4b9e,0,1,8ce6cc1a-8570-4704-b9a3-44e815b2e753,8ce6cc1a-8570-4704-b9a3-44e815b2e753,0,1,7d336fdd-5cbf-4c92-a783-f451f7590502,7d336fdd-5cbf-4c92-a783-f451f7590502,0,1,05243f56-7e9b-4a61-8efb-1b5e525fff21,05243f56-7e9b-4a61-8efb-1b5e525fff21,0,1,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,b16d5e79-9d7e-4d3e-9be8-3b2a932abf78,0,1,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,bc110a6a-26fa-4aa1-a2ef-bdaeaa0a33af,0,1,86760ecb-2ddd-40ce-bc4f-94c23027a55e,86760ecb-2ddd-40ce-bc4f-94c23027a55e,0,1,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,fb42ad06-d5a4-40ea-817c-fa7ff385d8db,0,1,7aa86a2d-2b47-447e-8901-806411011279,7aa86a2d-2b47-447e-8901-806411011279,0,1,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,f5d90a5a-1adb-49d6-8640-2e4054bdb99f,0,1,903af13a-1f73-4145-a3d0-971c3be5fbe6,903af13a-1f73-4145-a3d0-971c3be5fbe6,0,1,37722a34-1148-4cc8-95e6-4645ae9cca98,37722a34-1148-4cc8-95e6-4645ae9cca98,0,1,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,934b8380-c6e0-49f8-a6c2-91c0ddb2f95e,0,1,fca0dfad-f853-4694-9ce9-53a3a10f59b7,fca0dfad-f853-4694-9ce9-53a3a10f59b7,0,1,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,703a3e8a-0204-4e8f-8fa0-a2ed1aeb7662,0,1,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,4019a5e9-1f50-44b9-98ba-87c07a0ce4e5,0,1,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,71aa2bf7-85c9-40f3-a9b0-f6d666eddd28,0,1,1470f052-f032-46bc-b1ee-54555e725dfd,1470f052-f032-46bc-b1ee-54555e725dfd,0,1,497cbe4d-586d-48a2-8e98-d20e3e09ed42,497cbe4d-586d-48a2-8e98-d20e3e09ed42,0,1,150c9d05-4ccc-4cb7-879d-b1d9c3534343,150c9d05-4ccc-4cb7-879d-b1d9c3534343,0,1,38b7679d-3739-4572-baf2-d8c7b2a94f0a,38b7679d-3739-4572-baf2-d8c7b2a94f0a,0,1,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,11f32e0f-7d16-4ebd-9cef-fffd2d64e70a,0,1,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,b1ed134b-f2aa-4b06-b7a2-0e524ead04df,0,1,1281fe19-bbca-4a4f-84d8-14187e62000f,1281fe19-bbca-4a4f-84d8-14187e62000f,0,1,953dbad6-4f5c-4319-874a-db358a77d001,953dbad6-4f5c-4319-874a-db358a77d001,0,1,69ceac29-06d3-45f2-b914-7966465cd0d3,69ceac29-06d3-45f2-b914-7966465cd0d3,0,1,cc34bd23-de0a-4b09-8333-e4693576b9f4,cc34bd23-de0a-4b09-8333-e4693576b9f4,0,1,b4cb92fb-ad82-44ed-9203-397b412b3453,b4cb92fb-ad82-44ed-9203-397b412b3453,0,1,b690721d-960b-4374-8d2c-feed3a2b354b,b690721d-960b-4374-8d2c-feed3a2b354b,0,1,271243d3-1871-4a0a-bf7f-63bacacf0a59,271243d3-1871-4a0a-bf7f-63bacacf0a59,0,1,bc10ad8f-383c-469a-8c0e-60805161055b,bc10ad8f-383c-469a-8c0e-60805161055b,0,1,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,57f4ee70-185e-4f2a-91a6-6c0bf93c1000,0,1,ee8af8ee-e49a-4511-9a91-48814ab99d23,ee8af8ee-e49a-4511-9a91-48814ab99d23,0,1,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,3a7d9d49-b5e5-4c5c-958e-a4c6afda8b9d,0,1,6fbf844e-ee8d-490f-9177-6392d262312f,6fbf844e-ee8d-490f-9177-6392d262312f,0,1,65000437-bd07-4841-a458-679d44768c46,65000437-bd07-4841-a458-679d44768c46,0,1,9b7051d5-abc4-416c-a0e6-515d120d78e4,9b7051d5-abc4-416c-a0e6-515d120d78e4,0,1,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,86d1bc4e-f08d-48c7-8b3a-3c5feb0c843c,0,1,869938e6-6310-4326-bd15-5b91fe2e0911,869938e6-6310-4326-bd15-5b91fe2e0911,0,1,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,8ed7254b-bbf8-49d9-8a73-9a91316fd02d,0,1,a156521a-ece1-49d3-8056-1c3508273c45,a156521a-ece1-49d3-8056-1c3508273c45,0,1,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,075d39e0-a77a-4d0b-9260-7524fb5b2d0c,0,1,10018f80-3138-4089-bf9a-a5f178f1e295,10018f80-3138-4089-bf9a-a5f178f1e295,0,1,43aba109-4b7f-45ef-9c30-8b754e81911b,43aba109-4b7f-45ef-9c30-8b754e81911b,0,1,4ccd72e1-7fd7-4a3b-8428-71b44992937e,4ccd72e1-7fd7-4a3b-8428-71b44992937e,0,1,46077650-2b2c-4319-8279-41f277971669,46077650-2b2c-4319-8279-41f277971669,0,1,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,4afe733d-64a0-4ea5-9d12-6e2c86eb91e4,0,1,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,d0b79c3d-b0c5-4eb3-9971-1def1c88698f,0,1,e82ebd72-7b5a-4f45-b853-1001bf680a05,e82ebd72-7b5a-4f45-b853-1001bf680a05,0,1,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,a74879b8-c080-4cc0-b44f-2b7c4dae87fe,0,1,e9e9b733-e97a-430d-95ce-45ea27751f64,e9e9b733-e97a-430d-95ce-45ea27751f64,0,1,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,86ffe9a7-9b3e-49ab-bd88-20269fec56bc,0,1,3dd50c66-27f7-4f1e-86e9-c709995c8609,3dd50c66-27f7-4f1e-86e9-c709995c8609,0,1,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,45c0003f-0ed7-4582-b84e-217fdc4ddeaf,0,1,ed1369c5-c274-45bd-ae91-7648565ae09f,ed1369c5-c274-45bd-ae91-7648565ae09f,0,1,8d0fce61-a22f-4033-9e03-3f00c4a21722,8d0fce61-a22f-4033-9e03-3f00c4a21722,0,1,bfb3f026-e940-49c3-ac30-408186f9e11e,bfb3f026-e940-49c3-ac30-408186f9e11e,0,1,e1dc83eb-a8cd-454b-8de8-cff2049be78c,e1dc83eb-a8cd-454b-8de8-cff2049be78c,0,1,9edd9288-1463-4d67-b9f0-40f351d978e9,9edd9288-1463-4d67-b9f0-40f351d978e9,0,1,c9db6c68-965f-4567-b26e-5d497a389de1,c9db6c68-965f-4567-b26e-5d497a389de1,0,1,4da2f65d-56bd-4140-9b31-e5ccac4a800a,4da2f65d-56bd-4140-9b31-e5ccac4a800a,0,1,eb163bba-b94c-4a78-9c2d-7b519325e3d4,eb163bba-b94c-4a78-9c2d-7b519325e3d4,0,1,939bdb9a-294b-4b42-a56f-030f69bc29c4,939bdb9a-294b-4b42-a56f-030f69bc29c4,0,1,ee7a763b-bcbf-4ff3-89af-eb7965b33515,ee7a763b-bcbf-4ff3-89af-eb7965b33515,0,1,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,e72b3ae6-00e9-45d7-a4f3-bc8a5a2f5ae4,0,1,b8931f98-c1d7-4e9b-be43-065064e7ba95,b8931f98-c1d7-4e9b-be43-065064e7ba95,0,1,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,ab2b472d-97d5-4c33-86fd-e2cdaedf3f3d,0,1,60848308-931c-4da3-aa4b-37f6fb4b194f,60848308-931c-4da3-aa4b-37f6fb4b194f,0,1,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,08af8da8-d44b-46f0-a8d3-60421e7b5a1a,0,1,54b14504-503b-45f6-9b5d-785b49829425,54b14504-503b-45f6-9b5d-785b49829425,0,1,80d3ee33-1cdc-4af6-85c2-787094526592,80d3ee33-1cdc-4af6-85c2-787094526592,0,1,c8b28660-6cb0-4ef5-85c2-a75da863ba96,c8b28660-6cb0-4ef5-85c2-a75da863ba96,0,1,1cd607b4-49fc-460e-a014-6afe50083b47,1cd607b4-49fc-460e-a014-6afe50083b47,0,1,a215e767-36e9-4408-9d18-7b4be757022a,a215e767-36e9-4408-9d18-7b4be757022a,0,1,a3e262bc-9f0d-480d-a1d1-c2326105d22d,a3e262bc-9f0d-480d-a1d1-c2326105d22d,0,1,8eae0c79-288b-4773-90bb-49299ad45628,8eae0c79-288b-4773-90bb-49299ad45628,0,1,2faa5594-f1b4-4312-b674-82fdf9623105,2faa5594-f1b4-4312-b674-82fdf9623105,0,1,185c1ad3-b5db-49b6-9342-d08e1bf64903,185c1ad3-b5db-49b6-9342-d08e1bf64903,0,1,3c69a4ad-001d-4421-88f6-412e15d710d6,3c69a4ad-001d-4421-88f6-412e15d710d6,0,1,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,d0373603-5abb-4f7b-8d2f-9f7fb52615aa,0,1,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,f20a35fe-6029-4dc8-b6b4-b098dbce12e8,0,1,6a68a08a-ea37-4573-ab9f-ec822f6d250b,6a68a08a-ea37-4573-ab9f-ec822f6d250b,0,1,00e87d04-8104-420b-b2c6-7304889a75b2,00e87d04-8104-420b-b2c6-7304889a75b2,0,1,bde86820-f7bb-463b-97d0-bfa5f8323af0,bde86820-f7bb-463b-97d0-bfa5f8323af0,0,1,289a6aac-dc4e-4fae-8815-853e78d450bb,289a6aac-dc4e-4fae-8815-853e78d450bb,0,1,557e7d89-83ed-45d0-86cc-6e355f14025d,557e7d89-83ed-45d0-86cc-6e355f14025d,0,1,d681b26b-dd8d-46d7-986e-10f05c37a1e4,d681b26b-dd8d-46d7-986e-10f05c37a1e4,0,1,4d3c216e-c04f-4884-8681-1c861c50ce7d,4d3c216e-c04f-4884-8681-1c861c50ce7d,0,1,4a41eee0-c973-4824-a07c-9fcf731f055e,4a41eee0-c973-4824-a07c-9fcf731f055e,0,1,ee756c33-f408-4449-a6bb-3186a0421362,ee756c33-f408-4449-a6bb-3186a0421362,0,1,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,fbfa8f64-52e4-48f6-b0fb-fd06976dd93d,0,1,6ff66622-4d20-4696-9fe9-4b4faeb21d96,6ff66622-4d20-4696-9fe9-4b4faeb21d96,0,1,46237eec-c206-4d21-883c-27599b9ed38c,46237eec-c206-4d21-883c-27599b9ed38c,0,1,8b451909-2c15-48f2-b869-65e7031cc542,8b451909-2c15-48f2-b869-65e7031cc542,0,1,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,ab6ff81a-56aa-4742-afe4-d7a652e9d2de,0,1,7b377fca-4466-476f-9eb2-0b00141103d6,7b377fca-4466-476f-9eb2-0b00141103d6,0,1,9ce5eceb-f366-4035-956e-62721358b154,9ce5eceb-f366-4035-956e-62721358b154,0,1,52c016dd-f0df-4251-94c2-2e29ed5bc2d6,52c016dd-f0df-4251-94c2-2e29ed5bc2d6,0,1,c559ab26-8ed8-418e-9342-0559442dbcbf,c559ab26-8ed8-418e-9342-0559442dbcbf,0,1,1685c406-d0cb-4e0a-a3b0-036c8c22942a,1685c406-d0cb-4e0a-a3b0-036c8c22942a,0,1,892dc4c4-a72b-4dbf-af62-9f9ae0e05aa1,892dc4c4-a72b-4dbf-af62-9f9ae0e05aa1,0,1,81db41a6-2580-4a69-b1fd-57cfd48a7efa,81db41a6-2580-4a69-b1fd-57cfd48a7efa,0,1,0db8b3b2-bf24-4006-9897-797084c241ef,0db8b3b2-bf24-4006-9897-797084c241ef,0,1,fd9d34d9-9c9c-4c05-9c08-b93d4b237adf,fd9d34d9-9c9c-4c05-9c08-b93d4b237adf,0,1,381b7dae-6b34-42a7-9fee-2a4af8a1cc18,381b7dae-6b34-42a7-9fee-2a4af8a1cc18,0,1,31e9ca0d-9ae1-4740-a0a6-2739aa29c99f,31e9ca0d-9ae1-4740-a0a6-2739aa29c99f,0,1,20091427-d173-40ca-b2c4-53ee99b0b5ae,20091427-d173-40ca-b2c4-53ee99b0b5ae,0,1,14cbde39-a39a-48e5-9b72-b798a0bcea3f,14cbde39-a39a-48e5-9b72-b798a0bcea3f,0,1,56871c10-e3af-4679-afad-3baa910d73bb,56871c10-e3af-4679-afad-3baa910d73bb,0,1,f81b51c5-57e4-41f8-9ad5-3d2717351b95,f81b51c5-57e4-41f8-9ad5-3d2717351b95,0,1,3c09f0cd-fbec-46ae-95b0-a00cc53c07ef,3c09f0cd-fbec-46ae-95b0-a00cc53c07ef,0,1,de0a39e0-d37d-47c6-a019-e44836edc8d1,de0a39e0-d37d-47c6-a019-e44836edc8d1,0,1,1fdcc1e7-ad53-409e-ba13-84c6429740cd,1fdcc1e7-ad53-409e-ba13-84c6429740cd,0,1,71d544bf-15c1-4581-8baa-ac126308425c,71d544bf-15c1-4581-8baa-ac126308425c,0,1,1bd0b688-d0fb-4ca2-85aa-4bd82b72ccc2,1bd0b688-d0fb-4ca2-85aa-4bd82b72ccc2,0,1,7acfe30e-73cb-465a-88f2-92b7275dc49b,7acfe30e-73cb-465a-88f2-92b7275dc49b,0,1,8e387dac-5029-49da-a013-355df0a51a44,8e387dac-5029-49da-a013-355df0a51a44,0,1,13859664-8307-40e8-855b-557b9cf2f1ec,13859664-8307-40e8-855b-557b9cf2f1ec,0,1,e4397fba-507f-497c-9414-7d08ccd4d799,e4397fba-507f-497c-9414-7d08ccd4d799,0,1,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,794f5fb5-3b8f-4f45-9250-7a3b9d1db383,0,1,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,f7a89bfc-e3c9-4894-a2df-6c229b4e0fd8,0,1,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,1e8b70ce-27fc-418f-b3f3-e6efbce9f7a2,0,1,d915d338-3e4c-45c3-aef5-a07cf41b05f6,d915d338-3e4c-45c3-aef5-a07cf41b05f6,0,1,978640a2-5c4b-4e21-857e-34f00840fba8,978640a2-5c4b-4e21-857e-34f00840fba8,0,1,da2913e3-a29b-423f-9aae-08fed56a7d90,da2913e3-a29b-423f-9aae-08fed56a7d90,0,1,149e72b8-cc03-4b4f-8ca4-07987600c34d,149e72b8-cc03-4b4f-8ca4-07987600c34d,0,1,7649bd7b-fe8c-4338-80fc-153160a5e538,7649bd7b-fe8c-4338-80fc-153160a5e538,0,1,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,3dec1ae7-90bb-45ab-aa04-48cfbc14742e,0,1,6137605e-4850-44ec-b4ee-048bd8e0ec3a,6137605e-4850-44ec-b4ee-048bd8e0ec3a,0,1,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,ee28aa9b-0f31-4d8b-8444-43b8bc88bd23,0,1,0e6e9372-beb4-478e-9428-71b19a60739b,0e6e9372-beb4-478e-9428-71b19a60739b,0,1,32b11498-542f-46b2-829f-1525936ab7fa,32b11498-542f-46b2-829f-1525936ab7fa,0,1,64afa916-4750-4008-8c6c-2a470fb11283,64afa916-4750-4008-8c6c-2a470fb11283,0,1,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,f4a85bfb-40c7-4f81-af32-d07b96c53ad0,0,1,35354abc-9a76-4ee8-8796-c24b37365ea0,35354abc-9a76-4ee8-8796-c24b37365ea0,0,1,840a1d4d-e5f6-4a88-886f-03830fe4f99a,840a1d4d-e5f6-4a88-886f-03830fe4f99a,0,1,7078977f-31bf-427e-ac37-e309d81fe999,7078977f-31bf-427e-ac37-e309d81fe999,0,1,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,bb39ae51-be82-4bb5-a30e-2bf2b53be59e,0,1,d8854555-9e15-4d82-a1fd-656a848a8e8a,d8854555-9e15-4d82-a1fd-656a848a8e8a,0,1,53191842-ea05-4491-84d7-071cd201992d,53191842-ea05-4491-84d7-071cd201992d,0,1,86c70449-4cf7-4baf-9742-b82b134ed929,86c70449-4cf7-4baf-9742-b82b134ed929,0,1,af3b1881-163a-4c07-a1d9-77ceadf59c77,af3b1881-163a-4c07-a1d9-77ceadf59c77,0,1,b78be6fb-7db8-48c8-ba7b-aab1fea34890,b78be6fb-7db8-48c8-ba7b-aab1fea34890,0,1,bd27276a-e80c-4135-b341-f99a816ffe86,bd27276a-e80c-4135-b341-f99a816ffe86,0,1,35306678-147c-4ad1-a3c6-c80a11afa22f,35306678-147c-4ad1-a3c6-c80a11afa22f,0,1,0da75726-ae71-4d83-a696-a774c787a8a2,0da75726-ae71-4d83-a696-a774c787a8a2,0,1,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,5b30b0e9-f986-49b8-8668-5bb0e09f0cfe,0,1,896a7267-0198-4cbb-b6e6-7aa157c0cc61,896a7267-0198-4cbb-b6e6-7aa157c0cc61,0,1,2005bf54-219b-4111-bff1-e12e2c6dca3e,2005bf54-219b-4111-bff1-e12e2c6dca3e,0,1,abab8f73-d705-4350-b44d-f912649a2190,abab8f73-d705-4350-b44d-f912649a2190,0,1,20c9c25c-f8c9-429f-84bd-543cb809abef,20c9c25c-f8c9-429f-84bd-543cb809abef,0,1,dc5f451e-3275-43a8-9f48-45b83220d461,dc5f451e-3275-43a8-9f48-45b83220d461,0,1,028f5e81-61df-4d13-876d-781c5fd18ee6,028f5e81-61df-4d13-876d-781c5fd18ee6,0,1,3cbb59ef-7f64-4590-8a54-ba01e78283c3,3cbb59ef-7f64-4590-8a54-ba01e78283c3,0,1,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,a5b83672-2ead-4d0a-a4e5-ddd991f1addc,0,1,388eb513-fadb-40cd-8a7b-33b904dd758e,388eb513-fadb-40cd-8a7b-33b904dd758e,0,1,0613c6aa-e1fe-4632-a396-a17ec773158f,0613c6aa-e1fe-4632-a396-a17ec773158f,0,1,1a330987-4c79-4ab7-b250-db8d32c78751,1a330987-4c79-4ab7-b250-db8d32c78751,0,1,555062ed-9a04-41d8-877f-0a667e9a08cd,555062ed-9a04-41d8-877f-0a667e9a08cd,0,1,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,5b1db523-b5cb-4ff8-8662-5feeb4282b4a,0,1,ac160e1c-fef7-4625-84e0-964b397f6bdb,ac160e1c-fef7-4625-84e0-964b397f6bdb,0,1,b8946d9c-dda8-4b94-8cbf-db62b647c53e,b8946d9c-dda8-4b94-8cbf-db62b647c53e,0,1,24215916-7732-4030-9f88-163f644e94f7,24215916-7732-4030-9f88-163f644e94f7,0,1,69697945-9748-4cea-a20f-e244b46de2e8,69697945-9748-4cea-a20f-e244b46de2e8,0,1,68538fd1-262c-43ea-b09f-8a66643a0062,68538fd1-262c-43ea-b09f-8a66643a0062,0,1,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,d042a8e1-a7b9-4f26-abc4-d618bc73e9f5,0,1,82ad24cc-d9f8-440b-a720-e204101d85da,82ad24cc-d9f8-440b-a720-e204101d85da,0,1,8010065f-aec8-4768-85ec-9eb7b2b01e7e,8010065f-aec8-4768-85ec-9eb7b2b01e7e,0,1,a44348cb-e20c-4afd-8483-3b9c735b352c,a44348cb-e20c-4afd-8483-3b9c735b352c,0,1,ebfe4c74-6e16-4b64-8a52-cea95c446903,ebfe4c74-6e16-4b64-8a52-cea95c446903,0,1,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,ea9ed37c-7f58-43a8-990c-f1feb5d2d275,0,1,e6ae5164-fe3b-48fd-8180-f31941e35238,e6ae5164-fe3b-48fd-8180-f31941e35238,0,1,d912e472-9553-4b96-8b16-7aaff6c14239,d912e472-9553-4b96-8b16-7aaff6c14239,0,1,b04018b5-a74d-43c9-8519-6cc8aa23fe09,b04018b5-a74d-43c9-8519-6cc8aa23fe09,0,1,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,8f5af22e-3e73-4a4f-b91e-eccd0f5084fd,0,1,9283277f-2b75-4c3a-810a-8d4071b3afcc,9283277f-2b75-4c3a-810a-8d4071b3afcc,0,1,d03d5b18-57a2-43c0-99ea-8ad9d5788179,d03d5b18-57a2-43c0-99ea-8ad9d5788179,0,1,c491a7fc-14f9-498a-b7dd-575dfc66878e,c491a7fc-14f9-498a-b7dd-575dfc66878e,0,1,db15f8eb-4736-4b47-9cee-3e6883f0888c,db15f8eb-4736-4b47-9cee-3e6883f0888c,0,1,59064eb2-2770-4f1c-96bd-801926fe68ef,59064eb2-2770-4f1c-96bd-801926fe68ef,0,1,6b2340d7-687f-43a3-8eb8-8ddb86712466,6b2340d7-687f-43a3-8eb8-8ddb86712466,0,1,ca5d586f-81bb-40ee-b3bd-de854857c984,ca5d586f-81bb-40ee-b3bd-de854857c984,0,1,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,9846e2f6-d82a-42a6-bf50-2a9cdf750a8f,0,1,ee7d970c-cef7-4740-a357-1fe78f88a6e6,ee7d970c-cef7-4740-a357-1fe78f88a6e6,0,1,73f89524-dbe8-426f-8ee6-1277eb1967cc,73f89524-dbe8-426f-8ee6-1277eb1967cc,0,1,6733f1bd-7878-4a33-8995-c07526e87c1a,6733f1bd-7878-4a33-8995-c07526e87c1a,0,1,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,b5e81952-e469-4f26-b8d2-90e7d9e7bc1d,0,1,ec34befe-3c0b-4a75-b943-840c52e7dda5,ec34befe-3c0b-4a75-b943-840c52e7dda5,0,1,0b7c4cb7-5126-4b5e-8941-cd56eaef76a0,0b7c4cb7-5126-4b5e-8941-cd56eaef76a0,0,1,40b08a20-51a3-438b-ba54-466917ea809f,40b08a20-51a3-438b-ba54-466917ea809f,0,1,0e0670d6-d8f7-4728-bd1b-f016fffa0570,0e0670d6-d8f7-4728-bd1b-f016fffa0570,0,1,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,7f18eb86-e9ac-4cb8-a9aa-389f61dff582,0,1,144d5498-bb61-4bec-bef3-85a5a4aec3d5,144d5498-bb61-4bec-bef3-85a5a4aec3d5,0,1,ff18803b-4c3a-4720-a718-7547f04c6e2f,ff18803b-4c3a-4720-a718-7547f04c6e2f,0,1,9328da5c-4689-4a60-8136-ae9eac46ab38,9328da5c-4689-4a60-8136-ae9eac46ab38,0,1,42641296-64da-46e0-a407-de2d492f9c90,42641296-64da-46e0-a407-de2d492f9c90,0,1,b834af0b-086c-445d-a271-7e178c324551,b834af0b-086c-445d-a271-7e178c324551,0,1,32c10512-7bb8-423b-9503-ab2fa41386a4,32c10512-7bb8-423b-9503-ab2fa41386a4,0,1,888edfc4-8140-4675-b267-c32bf1d8d29d,888edfc4-8140-4675-b267-c32bf1d8d29d,0,1,a53f6e85-fbf7-4fb1-9301-d63e812fe16c,a53f6e85-fbf7-4fb1-9301-d63e812fe16c,0,1,57a0f5f3-6573-4b35-af25-cea3a25641f1,57a0f5f3-6573-4b35-af25-cea3a25641f1,0,1,21d296a1-6809-4ff6-a4da-b455cad86cc2,21d296a1-6809-4ff6-a4da-b455cad86cc2,0,1,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,ecaa0af8-549c-4c07-82ff-1c4e02ff15b8,0,1,45a8c780-c067-40d7-bbe9-81f854aacf7a,45a8c780-c067-40d7-bbe9-81f854aacf7a,0,1,57885cac-059a-4a08-aa2c-43b116d2c777,57885cac-059a-4a08-aa2c-43b116d2c777,0,1,56b570b1-93b0-468a-9672-9c71113753f3,56b570b1-93b0-468a-9672-9c71113753f3,0,1,e693eac3-f55d-4102-ac6d-b14ef33fb2e7,e693eac3-f55d-4102-ac6d-b14ef33fb2e7,0,1,e7b0ae70-0192-456c-9dc5-e66049fa9df2,e7b0ae70-0192-456c-9dc5-e66049fa9df2,0,1,68944d09-618e-4fa3-a7af-8c84218e0ac7,68944d09-618e-4fa3-a7af-8c84218e0ac7,0,1,91b12ce3-e8ba-4c9d-9daa-1d5532500314,91b12ce3-e8ba-4c9d-9daa-1d5532500314,0,1,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,733dc291-0bef-4fe8-ac9f-63440f0c2ad0,0,1,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,5b7b7dc3-dbef-4854-9395-30a3ae4d751c,0,1,cb57aabc-eeef-42b4-9bc2-873cebd9618c,cb57aabc-eeef-42b4-9bc2-873cebd9618c,0,1,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,2fcd2c85-6778-42fa-9bdd-a6ba47497ec0,0,1,52f30ed7-aa16-4ce2-9684-e50229ab0015,52f30ed7-aa16-4ce2-9684-e50229ab0015,0,1,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,79c2e2bd-f923-42ec-8bdc-3e517e08ee7c,0,1,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0526492c-be48-4c84-8d68-19fa1c7e9d6e,0,1,54ecaf7b-9bc5-483c-96e1-270bcd323590,54ecaf7b-9bc5-483c-96e1-270bcd323590,0,1,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,2a1f77ba-fa2e-4281-8e68-7ec4ca0261b7,0,1,58f6f8fa-7473-40f5-973a-6279335d8f33,58f6f8fa-7473-40f5-973a-6279335d8f33,0,1,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,ec0c3187-de61-4bc8-a52a-7617f47ffb6d,0,1,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,1e71ec59-55a4-45e8-a8c9-f70c2cb56589,0,1,fa3632fe-185b-49aa-85ae-dfb721835d40,fa3632fe-185b-49aa-85ae-dfb721835d40,0,1,a4f15108-477c-465e-aaea-cb495ef52cf5,a4f15108-477c-465e-aaea-cb495ef52cf5,0,1,9cda5c2c-f401-4f63-b445-cef160296e48,9cda5c2c-f401-4f63-b445-cef160296e48,0,1,e8ae4a26-3127-43ae-af7a-c2e278d2611d,e8ae4a26-3127-43ae-af7a-c2e278d2611d,0,1,b923c78f-d074-41b4-b832-086686258f19,b923c78f-d074-41b4-b832-086686258f19,0,1,8ff96413-6fdd-4b8d-a181-ea0d8633defc,8ff96413-6fdd-4b8d-a181-ea0d8633defc,0,1,54604ed2-766b-4308-b99e-447817d82799,54604ed2-766b-4308-b99e-447817d82799,0,1,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,7abdb07b-edbc-4c3b-aa53-afaa92dc9071,0,1,f48b4475-2cd9-41df-962a-6529f84985ca,f48b4475-2cd9-41df-962a-6529f84985ca,0,1,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,2fbfe405-48e6-4abf-99c2-7f1f66a62b48,0,1,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,5e6637c7-19b5-4ac2-a8e9-d119e49f444e,0,1,bf94feb9-edf7-4df8-b5f5-805613663a0a,bf94feb9-edf7-4df8-b5f5-805613663a0a,0,1,6d852a13-c85e-4e84-8396-f91c1ed0596e,6d852a13-c85e-4e84-8396-f91c1ed0596e,0,1,9c2d5313-a4fd-417e-a340-ad4980d0028b,9c2d5313-a4fd-417e-a340-ad4980d0028b,0,1,4fb4a280-9426-4c41-a9ba-11f9d01a0740,4fb4a280-9426-4c41-a9ba-11f9d01a0740,0,1,1591ee7e-870c-4bf7-9450-be84f1b2506f,1591ee7e-870c-4bf7-9450-be84f1b2506f,0,1,8f088f33-92d7-4e35-915d-6cda1129dd80,8f088f33-92d7-4e35-915d-6cda1129dd80,0,1,9a8578a2-8a92-4ab3-a480-173340f8b34a,9a8578a2-8a92-4ab3-a480-173340f8b34a,0,1,4889d27b-435b-4059-a34d-6afdf3c77fa3,4889d27b-435b-4059-a34d-6afdf3c77fa3,0,1,4ebf0988-ccc3-440c-bd0f-2d01636bd730,4ebf0988-ccc3-440c-bd0f-2d01636bd730,0,1,69f42341-268b-4e74-9d6d-527800d018ab,69f42341-268b-4e74-9d6d-527800d018ab,0,1,c1be2a02-53b8-4c28-92b2-b6e0c83ab452,c1be2a02-53b8-4c28-92b2-b6e0c83ab452,0,1,ca6ecedc-f4c5-4c14-8a02-6255ce45033a,ca6ecedc-f4c5-4c14-8a02-6255ce45033a,0,1,7eb5217f-684d-4a9e-8aef-48cedc809cbb,7eb5217f-684d-4a9e-8aef-48cedc809cbb,0,1,4b54d626-dc59-4e49-a708-0a7f98833b9a,4b54d626-dc59-4e49-a708-0a7f98833b9a,0,1,1c90a423-ef1b-42dc-a43b-1fda89672481,1c90a423-ef1b-42dc-a43b-1fda89672481,0,1,095cf2d6-5a7c-452d-8d60-991afb6e52bd,095cf2d6-5a7c-452d-8d60-991afb6e52bd,0,1,2c155a03-2aff-4632-adb2-be3266e0fac3,2c155a03-2aff-4632-adb2-be3266e0fac3,0,1,f9213a70-bfd6-464f-b28b-ed35bdf351c0,f9213a70-bfd6-464f-b28b-ed35bdf351c0,0,1,eb81610a-eb2f-4068-ba74-75e0f5bbace8,eb81610a-eb2f-4068-ba74-75e0f5bbace8,0,1,ca5957af-69c9-4640-b9a9-b241c4f9eaa7,ca5957af-69c9-4640-b9a9-b241c4f9eaa7,0,1,21826316-0b49-4034-a49e-6d34c15ceb5c,21826316-0b49-4034-a49e-6d34c15ceb5c,0,1,3abffa47-8d47-4173-897b-708e1a06ef39,3abffa47-8d47-4173-897b-708e1a06ef39,0,1,0cf3d615-76a1-428d-9d25-0d7fdf09e4ae,0cf3d615-76a1-428d-9d25-0d7fdf09e4ae,0,1,5a398637-a06c-4442-9093-a864fa7f049f,5a398637-a06c-4442-9093-a864fa7f049f,0,1,38692186-a62a-42d1-87cd-7dbc6d4816ed,38692186-a62a-42d1-87cd-7dbc6d4816ed,0,1,6cfcdb89-ccb2-45fe-a7b1-5a29ccd6c5ae,6cfcdb89-ccb2-45fe-a7b1-5a29ccd6c5ae,0,1,3a28cea9-7fd7-4834-ab89-2a74331a64e3,3a28cea9-7fd7-4834-ab89-2a74331a64e3,0,1,0f881709-4520-4f18-af9d-cf08757693ff,0f881709-4520-4f18-af9d-cf08757693ff,0,1,c5151ca9-5103-42b2-8573-273c15416db8,c5151ca9-5103-42b2-8573-273c15416db8,0,1,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,fe4aa694-76c4-49c9-96ce-a2476f4ff58b,0,1,ba8c43ad-678a-4b18-8bbe-5a1b12d19b74,ba8c43ad-678a-4b18-8bbe-5a1b12d19b74,0,1,115a6019-ef87-4126-8ebf-070c1e882940,115a6019-ef87-4126-8ebf-070c1e882940,0,1,162ce023-b2e1-41dc-bcaf-b8e30caccce0,162ce023-b2e1-41dc-bcaf-b8e30caccce0,0,1,52bdd3cc-7103-4dbf-a3c3-dd46cf03da12,52bdd3cc-7103-4dbf-a3c3-dd46cf03da12,0,1,c13fb1cd-fe72-48a6-b383-55b6323619ce,c13fb1cd-fe72-48a6-b383-55b6323619ce,0,1,956fc8ee-96be-4309-b1e8-209372f151ab,956fc8ee-96be-4309-b1e8-209372f151ab,0,1,526c688e-a4d4-45f7-8bba-b8ceff38fe27,526c688e-a4d4-45f7-8bba-b8ceff38fe27,0,1,7e32c295-a769-4cff-a3eb-992f7031475f,7e32c295-a769-4cff-a3eb-992f7031475f,0,1,67efa786-312f-4c9c-b970-0320e92069af,67efa786-312f-4c9c-b970-0320e92069af,0,1,12f85e09-1190-4483-b531-630ab718db7f,12f85e09-1190-4483-b531-630ab718db7f,0,1,52f4453e-e968-4290-a79a-470f68fbd07f,52f4453e-e968-4290-a79a-470f68fbd07f,0,1,5b952e35-1037-4447-8293-6d8889692c8b,5b952e35-1037-4447-8293-6d8889692c8b,0,1,33e0072d-7d5b-4298-ae77-31a7cb358f5d,33e0072d-7d5b-4298-ae77-31a7cb358f5d,0,1,1051c0c7-1058-427c-8bf5-5e30b8fbfb54,1051c0c7-1058-427c-8bf5-5e30b8fbfb54,0,1,b27688c3-6682-45e1-a03f-0d2e8b1214e4,b27688c3-6682-45e1-a03f-0d2e8b1214e4,0,1,c8158812-024b-4f94-bd07-c3f1fd59e8a1,c8158812-024b-4f94-bd07-c3f1fd59e8a1,0,1,05bc8b4e-8c90-4502-8b16-7b1e7625d569,05bc8b4e-8c90-4502-8b16-7b1e7625d569,0,1,ce34d88d-3017-4197-a962-ea23a6a96d32,ce34d88d-3017-4197-a962-ea23a6a96d32,0,1,2cbc16da-aa67-4ad6-82f8-fa6922447be6,2cbc16da-aa67-4ad6-82f8-fa6922447be6,0,1,19d7a1ba-c343-4575-95da-53dac6d4b2cb,19d7a1ba-c343-4575-95da-53dac6d4b2cb,0,1,6cc8b3a0-3377-4b39-b6b0-69c862a15465,6cc8b3a0-3377-4b39-b6b0-69c862a15465,0,1,acb193f4-52e5-4572-a79b-b825a2f6525f,acb193f4-52e5-4572-a79b-b825a2f6525f,0,1,5d46f719-e468-48e2-b4ec-acb85c710451,5d46f719-e468-48e2-b4ec-acb85c710451,0,1,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,9fb13bfe-80c7-43c3-b0da-9185ab197ce2,0,1,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,cd80a520-1d1c-4d80-8a4a-360ac1ca98d8,0,1,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,e9aef0c8-9dc4-4c4a-8288-8b2d9860624d,0,1,5422610d-b92c-4213-a58c-8db067d93b66,5422610d-b92c-4213-a58c-8db067d93b66,0,1,8f59a635-9e0e-470d-8fda-a47a262a59c2,8f59a635-9e0e-470d-8fda-a47a262a59c2,0,1,ffb50eb9-149a-46ec-9472-d8f20ad09810,ffb50eb9-149a-46ec-9472-d8f20ad09810,0,1,5ae3bba3-dc98-4470-a73d-3bd951c0a3f2,5ae3bba3-dc98-4470-a73d-3bd951c0a3f2,0,1,7a6449e2-e90a-4720-a769-192284ef69c1,7a6449e2-e90a-4720-a769-192284ef69c1,0,1,02118b98-2349-46b1-a328-d6e2b5781f7e,02118b98-2349-46b1-a328-d6e2b5781f7e,0,1,67de9cbb-5c80-4cff-bfbe-269a958e08e6,67de9cbb-5c80-4cff-bfbe-269a958e08e6,0,1,2228a457-6805-41ee-85af-5ebca9568bf4,2228a457-6805-41ee-85af-5ebca9568bf4,0,1,96b71795-e230-4ecb-b98d-4feb3f8b9662,96b71795-e230-4ecb-b98d-4feb3f8b9662,0,1,04055821-03ce-4049-af2c-8670c80517f6,04055821-03ce-4049-af2c-8670c80517f6,0,1,0101305d-62eb-4802-9cd4-d615a518d842,0101305d-62eb-4802-9cd4-d615a518d842,0,1,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,898d2ba7-631a-4e7a-9bdf-cd2ef411e57a,0,1,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,bf1fc624-60d7-4a04-bb3a-b6e2882bebfe,0,1,7c424424-9660-462d-9cf2-4c1e6bd284fa,7c424424-9660-462d-9cf2-4c1e6bd284fa,0,1,e118f957-ab2c-473b-ab64-37032f727416,e118f957-ab2c-473b-ab64-37032f727416,0,1,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,e770e26e-a3a4-487d-b3bb-aeb63d8b7323,0,1,21f64e5f-dc94-4ce9-b836-e75646ae3325,21f64e5f-dc94-4ce9-b836-e75646ae3325,0,1,82e8a180-f2e1-406c-9609-89d33504aff2,82e8a180-f2e1-406c-9609-89d33504aff2,0,1,e7437c81-3d5b-466e-880c-8febe4a68e88,e7437c81-3d5b-466e-880c-8febe4a68e88,0,1,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,99bc26f9-ba56-4c63-9fd1-c2f3d630b93c,0,1,307771e6-bcf7-4016-b369-e1655bbe9e94,307771e6-bcf7-4016-b369-e1655bbe9e94,0,1,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,bf8c60f7-7dea-4a2c-8ce2-7001a6a37bfa,0,1,38fc6a54-846c-40b0-9254-3261f540bf18,38fc6a54-846c-40b0-9254-3261f540bf18,0,1,d9134d0c-56cd-4b8f-ab11-ae37fc306801,d9134d0c-56cd-4b8f-ab11-ae37fc306801,0,1,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,9408d0ee-bd61-4b95-ac7c-98de139b5f9e,0,1,8f2af24b-f5fa-4f6d-831e-28453bdedefc,8f2af24b-f5fa-4f6d-831e-28453bdedefc,0,1,d119e21d-0087-4f22-b3bd-b14707b65330,d119e21d-0087-4f22-b3bd-b14707b65330,0,1,dc9b4072-11de-40fe-bf2a-f7b15af0a250,dc9b4072-11de-40fe-bf2a-f7b15af0a250,0,1,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,e2cf5ca9-c2a0-4506-89e6-318cad0a48a3,0,1,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,5aecdfd1-1cd7-4523-be23-7e32fcb01a94,0,1,932b1c1a-72eb-49cd-8218-d0ced9c454d8,932b1c1a-72eb-49cd-8218-d0ced9c454d8,0,1,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,96d70dc4-02bd-47ad-9465-81de6ff5bdc9,0,1,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,38acaf7a-5a77-40bf-ba2a-17b31cccd37d,0,1,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,cb604857-8e49-4f2f-b5c8-2a7d8a3cf8e4,0,1,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,f33e9c76-e523-4f4e-ab4b-3fc1b256d8dd,0,1,5dd336c4-88c5-4f53-acf0-5f86a658c528,5dd336c4-88c5-4f53-acf0-5f86a658c528,0,1,c723112b-286d-46f1-989d-81252062a025,c723112b-286d-46f1-989d-81252062a025,0,1,67e8b47e-4bad-4b2f-b196-8a9708893051,67e8b47e-4bad-4b2f-b196-8a9708893051,0,1,a583e53a-3f3c-48c7-8928-37ce40b2bafe,a583e53a-3f3c-48c7-8928-37ce40b2bafe,0,1,a844dd4a-274a-4894-9446-031dbe006084,a844dd4a-274a-4894-9446-031dbe006084,0,1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,9a740f81-5437-47af-8ed9-ea62edcb2ea1,0,1,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,cdf54c86-0a1c-4f74-93ee-6d8d8db0a778,0,1,77bdd30f-4933-4bda-9c7a-b0a097da0910,77bdd30f-4933-4bda-9c7a-b0a097da0910,0,1,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,a8d52851-4293-4fe4-b2cb-f9c8c166ed97,0,1,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,d4879ecc-8f1a-4183-99a8-d6dfc1eed3f8,0,1,a682e9e1-284f-4e32-86b2-6736f159f585,a682e9e1-284f-4e32-86b2-6736f159f585,0,1,84f0bd89-9b86-440f-b942-9b685e22233e,84f0bd89-9b86-440f-b942-9b685e22233e,0,1,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,f2d508b3-9425-4ce6-86d8-5893ca4a8cd6,0,1,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,ce61612f-bcbb-4a02-bca0-d88e0ee42bd7,0,1,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,c1c35035-44cc-4aa1-ae8e-db3513ddc5f3,0,1,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,ac52baa1-02cb-4ce8-8f4f-1f9441b1cda0,0,1,fabf8a0b-366f-4f23-9377-315534bb854b,fabf8a0b-366f-4f23-9377-315534bb854b,0,1,7aac6439-64c9-4492-b866-bf91dda82d06,7aac6439-64c9-4492-b866-bf91dda82d06,0,1,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,6ffe3723-c6df-497b-a3ff-d817fbabfd8c,0,1,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,528a82b7-ef06-4d90-bb32-bd6d76ed6c74,0,1,08b86f29-64ef-467a-af1a-d27ffdf621ba,08b86f29-64ef-467a-af1a-d27ffdf621ba,0,1,6483d1ab-c53d-4985-ad7e-b799adbcd9da,6483d1ab-c53d-4985-ad7e-b799adbcd9da,0,1,82f66233-ed13-49ae-ab72-7cf91c88c760,82f66233-ed13-49ae-ab72-7cf91c88c760,0,1,75cddbcd-e960-4164-81d8-ac0a2a36e95b,75cddbcd-e960-4164-81d8-ac0a2a36e95b,0,1,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,e14d57f4-ae4a-4644-9ec1-a6af1b3e4c41,0,1,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,314f8451-ba96-46cd-bf9f-3a87df7d2a5b,0,1,d9151001-a911-45c1-a8e6-dcf0da623ed3,d9151001-a911-45c1-a8e6-dcf0da623ed3,0,1,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,30e06f80-b6d0-4fa9-a346-8e17dbe2fb68,0,1,e589a693-ff50-4c36-ae26-a8fcae966d57,e589a693-ff50-4c36-ae26-a8fcae966d57,0,1,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,8bacb87e-c2e9-41f5-bae1-c3a6b0e8179f,0,1,90f023f5-5b48-4f98-bfc6-b704277a355d,90f023f5-5b48-4f98-bfc6-b704277a355d,0,1,99485603-706d-4301-be25-82b1c0ee8f4d,99485603-706d-4301-be25-82b1c0ee8f4d,0,1,e7a28021-c75e-41b2-9974-cf4beee34d28,e7a28021-c75e-41b2-9974-cf4beee34d28,0,1,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,21e3bdf3-7cec-42de-8ef3-5815b9a1b747,0,1,2a603c61-4cbf-4c6d-a0b2-40c835d36737,2a603c61-4cbf-4c6d-a0b2-40c835d36737,0,1,a8d7f071-401b-499e-957c-d077d8002e54,a8d7f071-401b-499e-957c-d077d8002e54,0,1,211a539b-4be9-4816-98f6-f756e65eafd8,211a539b-4be9-4816-98f6-f756e65eafd8,0,1,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,e2d8167d-3ebf-4771-b9e0-e6382d68cc18,0,1,e9b9da80-7806-4c9c-a002-01cfa3109169,e9b9da80-7806-4c9c-a002-01cfa3109169,0,1,a271041d-0203-4ecd-bb39-70256c50192e,a271041d-0203-4ecd-bb39-70256c50192e,0,1,73eff626-a363-4a5a-879e-61ef6ce0726f,73eff626-a363-4a5a-879e-61ef6ce0726f,0,1,acf15b79-a6c4-4c46-8013-50d3b223baf6,acf15b79-a6c4-4c46-8013-50d3b223baf6,0,1,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,f6a29b80-e4c3-4c4f-8e2c-d4dda851d813,0,1,2d8d5d74-2bc0-4282-af66-e4a37694c147,2d8d5d74-2bc0-4282-af66-e4a37694c147,0,1,cfd31341-287b-4684-9ac0-b28b4e066f15,cfd31341-287b-4684-9ac0-b28b4e066f15,0,1,81de1b0b-7f2d-4098-ae99-061c6a90dc29,81de1b0b-7f2d-4098-ae99-061c6a90dc29,0,1,f829e2a9-5bdb-4171-8b32-8d10d5968813,f829e2a9-5bdb-4171-8b32-8d10d5968813,0,1,647ba8f8-57f7-4c19-af59-525517c1e392,647ba8f8-57f7-4c19-af59-525517c1e392,0,1,39062cb3-4ae8-4c0d-889b-038a55179946,39062cb3-4ae8-4c0d-889b-038a55179946,0,1,c62d4212-36ca-4afb-bac9-269b6f64ca51,c62d4212-36ca-4afb-bac9-269b6f64ca51,0,1,5cec5e16-46ad-4f8c-b869-f5b1cc487884,5cec5e16-46ad-4f8c-b869-f5b1cc487884,0,1,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,ca0363bb-81c2-4fce-b2f0-e8f42d118a74,0,1,7aacdf81-49fd-47a3-a36a-c483f1b05872,7aacdf81-49fd-47a3-a36a-c483f1b05872,0,1,857015e2-afb2-403d-bfb7-7acb5080797b,857015e2-afb2-403d-bfb7-7acb5080797b,0,1,5657286b-114b-41de-ab7d-45d0f0d95e2d,5657286b-114b-41de-ab7d-45d0f0d95e2d,0,1,42a0271e-6783-44db-95c1-09805ae01f58,42a0271e-6783-44db-95c1-09805ae01f58,0,1,8628783e-4fad-4dff-8220-9e0ddc8580f8,8628783e-4fad-4dff-8220-9e0ddc8580f8,0,1,356fc245-3034-42d1-84d0-632c6dc7a3d5,356fc245-3034-42d1-84d0-632c6dc7a3d5,0,1,07462664-6b58-4f5a-9b3f-2e5c376f17df,07462664-6b58-4f5a-9b3f-2e5c376f17df,0,1,6f23e946-f700-424b-b9bf-3a9c8846908d,6f23e946-f700-424b-b9bf-3a9c8846908d,0,1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,f3ef5989-a848-4a7f-8ac5-0eca882a6aa1,0,1,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,4f5087ab-cc60-4d1e-ba83-a319536bf8ba,0,1,07d0d6e9-e0a7-4543-9668-3850c1e0a15c,07d0d6e9-e0a7-4543-9668-3850c1e0a15c,0,1,c656771c-dcb7-4c78-9a16-e62806d5bb5a,c656771c-dcb7-4c78-9a16-e62806d5bb5a,0,1,ec42c45c-18ca-44b0-9c59-1cb204552a43,ec42c45c-18ca-44b0-9c59-1cb204552a43,0,1,2aafb1a1-4321-47e9-9783-03ab616a2873,2aafb1a1-4321-47e9-9783-03ab616a2873,0,1,71109997-6da0-4eaf-bbf2-f94fa24f37cc,71109997-6da0-4eaf-bbf2-f94fa24f37cc,0,1,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,a3deeef2-f8a2-462f-a57f-87d89e4ec12a,0,1,d601281c-379d-4a9d-843e-478fd6567415,d601281c-379d-4a9d-843e-478fd6567415,0,1,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,fd9b3f7d-d25d-4ecb-8b87-218d5ccf1f7b,0,1,427e6f15-334e-42be-9554-895d8f7ebfc6,427e6f15-334e-42be-9554-895d8f7ebfc6,0,1,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,e85a4314-7b63-4294-9bd0-ff77e3ae7c1e,0,1,36bc8523-41a5-48ff-9bd0-758d078c4408,36bc8523-41a5-48ff-9bd0-758d078c4408,0,1,94ca1b45-3cf0-4857-8299-999c93f4fb56,94ca1b45-3cf0-4857-8299-999c93f4fb56,0,1,ee8419c6-79ca-4546-9a66-bacaa08d2a73,ee8419c6-79ca-4546-9a66-bacaa08d2a73,0,1,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,e36ddb60-2f21-4c5f-b96c-947bcf2af42a,0,1,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,d4a0ca3b-3985-4ba2-9e96-1c5baed28b46,0,1,a915df5f-7330-4fc3-aecd-08d228b8fd23,a915df5f-7330-4fc3-aecd-08d228b8fd23,0,1,ada11ea2-94d5-4172-a383-a51774599568,ada11ea2-94d5-4172-a383-a51774599568,0,1,1ea080b0-0a11-4152-b8bb-4918bc142a23,1ea080b0-0a11-4152-b8bb-4918bc142a23,0,1,6e20df72-c643-4952-8f9c-f386d2915004,6e20df72-c643-4952-8f9c-f386d2915004,0,1,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,a21cd1c1-4649-4dc2-9dbd-a913f2d6ca75,0,1,0e5074b0-bc15-416d-9c87-dad6824186e1,0e5074b0-bc15-416d-9c87-dad6824186e1,0,1,6930e471-7935-4d68-a980-2acde93ba801,6930e471-7935-4d68-a980-2acde93ba801,0,1,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,2c425fa5-b10b-4a6f-926a-5cb4c1f2d491,0,1,5135cc48-c749-4acb-a225-d110f386f482,5135cc48-c749-4acb-a225-d110f386f482,0,1,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,15e6f31b-556a-4f47-9f40-2f69ac7fcb43,0,1,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,53c4c3b2-9257-4d02-8df8-6b55fe9abdae,0,1,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,d2dba2ae-e987-4c9d-a289-3dc19afa87cd,0,1,2e9fa546-96fb-4ecb-b933-7921e131e89b,2e9fa546-96fb-4ecb-b933-7921e131e89b,0,1,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,4645b1ad-eb8f-484c-b29c-2093d9ef9dba,0,1,637a132b-1a88-44ba-b45f-ed4ed1ac1001,637a132b-1a88-44ba-b45f-ed4ed1ac1001,0,1,699f734b-43d2-4351-bff8-e0e21e164a42,699f734b-43d2-4351-bff8-e0e21e164a42,0,1,95f0792a-7ac4-450a-b05c-219741e61abd,95f0792a-7ac4-450a-b05c-219741e61abd,0,1,742a2e8c-496e-4e02-931d-d33f7afe07a5,742a2e8c-496e-4e02-931d-d33f7afe07a5,0,1,c3efa853-cd29-4618-929f-e3bec33dfd65,c3efa853-cd29-4618-929f-e3bec33dfd65,0,1,62185c28-3d24-487a-9441-b309dcf11e31,62185c28-3d24-487a-9441-b309dcf11e31,0,1,9f264aeb-664d-4724-8248-11873d63ef3b,9f264aeb-664d-4724-8248-11873d63ef3b,0,1,b926d058-53a9-4eea-b4f9-98e77f798dd9,b926d058-53a9-4eea-b4f9-98e77f798dd9,0,1,495e2c77-4868-4191-ac18-f94e55a5982e,495e2c77-4868-4191-ac18-f94e55a5982e,0,1,20191a65-322c-457d-85f5-ed1258b6fe8e,20191a65-322c-457d-85f5-ed1258b6fe8e,0,1,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,23b46ecd-14dc-4cc5-8ff0-c676a8337aee,0,1,769c60aa-44f4-4c98-a461-d3f5c2b67f61,769c60aa-44f4-4c98-a461-d3f5c2b67f61,0,1,f9809c99-0eaa-4249-967c-a4bef4763277,f9809c99-0eaa-4249-967c-a4bef4763277,0,1,37fa88a0-f2c1-455f-a28d-74165e8b933d,37fa88a0-f2c1-455f-a28d-74165e8b933d,0,1,e4476f09-909b-49f7-8e01-72eea8ceaca6,e4476f09-909b-49f7-8e01-72eea8ceaca6,0,1,2861412c-46f0-454e-b81d-fe081afb5c7a,2861412c-46f0-454e-b81d-fe081afb5c7a,0,1,abacbda3-b4c1-446b-95e7-a45adec16174,abacbda3-b4c1-446b-95e7-a45adec16174,0,1,2b4ece05-b694-42e9-8239-55722fd84294,2b4ece05-b694-42e9-8239-55722fd84294,0,1,0d743731-da5d-4c99-b19f-e93c69b77e14,0d743731-da5d-4c99-b19f-e93c69b77e14,0,1,91a7a0f7-19e8-43d1-935c-e9bd1ac24d03,91a7a0f7-19e8-43d1-935c-e9bd1ac24d03,0,1,d6f15367-23e2-4766-bc7c-8acd0063aa0c,d6f15367-23e2-4766-bc7c-8acd0063aa0c,0,1,868da26b-f32e-48d1-a647-44dac7520d86,868da26b-f32e-48d1-a647-44dac7520d86,0,1,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,966b1bde-5b0c-446d-b38b-dc037e2ff7ad,0,1,fa4c5665-4d73-4db2-a055-8c1c8a302f82,fa4c5665-4d73-4db2-a055-8c1c8a302f82,0,1,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,e3e0caa1-6d3f-45a6-9043-d58a34f35b8f,0,1,9100b286-8ae9-4de3-b116-5ce0fa95b80c,9100b286-8ae9-4de3-b116-5ce0fa95b80c,0,1,3d315df6-e000-4cbd-810d-0b26c0d1bc54,3d315df6-e000-4cbd-810d-0b26c0d1bc54,0,1,fa429302-ccaf-4c89-8a11-3a1d30817c00,fa429302-ccaf-4c89-8a11-3a1d30817c00,0,1,9b4c49ce-93da-439a-8d67-f3774e92800a,9b4c49ce-93da-439a-8d67-f3774e92800a,0,1,5f8fa827-7017-4b45-b458-3571b8b611f5,5f8fa827-7017-4b45-b458-3571b8b611f5,0,1,79749167-2912-4e06-9deb-7915a1b4390d,79749167-2912-4e06-9deb-7915a1b4390d,0,1,1c93fcd3-53a1-403f-a30b-454fbc941d55,1c93fcd3-53a1-403f-a30b-454fbc941d55,0,1,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0fc54be4-2e19-45cf-b62f-7cbc70a70d5f,0,1,adec3963-b22f-4463-a3f4-c9ec27d187a8,adec3963-b22f-4463-a3f4-c9ec27d187a8,0,1,d8dae0c8-8e11-44bf-bf60-d316220f3e82,d8dae0c8-8e11-44bf-bf60-d316220f3e82,0,1,12afec4d-1728-4aa8-86e5-23cd2f1572b3,12afec4d-1728-4aa8-86e5-23cd2f1572b3,0,1,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,16bc197b-5a2f-43f4-8ba0-ffabd9289f5c,0,1,ee0c3960-d1bf-411f-a51f-e6e27dabea87,ee0c3960-d1bf-411f-a51f-e6e27dabea87,0,1,d7fb9441-1aef-4257-af3f-7f16340ac85e,d7fb9441-1aef-4257-af3f-7f16340ac85e,0,1,d07c094c-2795-4e0c-b030-bdb82be7ba6d,d07c094c-2795-4e0c-b030-bdb82be7ba6d,0,1,62637860-2013-4f9d-9aed-7cbb0dce8983,62637860-2013-4f9d-9aed-7cbb0dce8983,0,1,331217f6-7ec2-425d-93bd-f2979c5f2e05,331217f6-7ec2-425d-93bd-f2979c5f2e05,0,1,67c1269a-79e6-44d9-9254-671c50fb3974,67c1269a-79e6-44d9-9254-671c50fb3974,0,1,5d455d2a-910d-48c7-bc74-ba5ad7855110,5d455d2a-910d-48c7-bc74-ba5ad7855110,0,1,7cf3feea-75e2-42cc-9c89-4a9182034910,7cf3feea-75e2-42cc-9c89-4a9182034910,0,1,930a0156-feb3-4e14-96a5-cd183a4891f4,930a0156-feb3-4e14-96a5-cd183a4891f4,0,1,cfa55ab3-1335-4712-8352-03c2f0277708,cfa55ab3-1335-4712-8352-03c2f0277708,0,1,fb176f8b-edb9-4e4b-926d-dabe9552bfa1,fb176f8b-edb9-4e4b-926d-dabe9552bfa1,0,1,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,cd5c52d4-f832-4a3b-b4c7-b4f3e0c98222,0,1,e268a337-f576-4ec2-8a22-0500b79b2441,e268a337-f576-4ec2-8a22-0500b79b2441,0,1,eb33a8fa-75a6-4926-a025-05bc0abe4374,eb33a8fa-75a6-4926-a025-05bc0abe4374,0,1,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,c352da94-ea64-44b1-b2df-2c4ed9e2efc5,0,1,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,6babd40a-8b8f-454b-b4a4-7cf2854f49a2,0,1,bf480259-6e72-4ad1-ac41-0b0d41a75387,bf480259-6e72-4ad1-ac41-0b0d41a75387,0,1,a41f060a-f0f6-4940-960b-5056082b2c45,a41f060a-f0f6-4940-960b-5056082b2c45,0,1,073e14d4-5d43-428b-a9a7-985d173e94c7,073e14d4-5d43-428b-a9a7-985d173e94c7,0,1,2394775b-8910-4667-9c74-e1606e0b13bc,2394775b-8910-4667-9c74-e1606e0b13bc,0,1,43c88ffd-a036-4563-890b-bdc60180e841,43c88ffd-a036-4563-890b-bdc60180e841,0,1,af6e5e8e-6482-4820-a810-9e275ae039bf,af6e5e8e-6482-4820-a810-9e275ae039bf,0,1,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,fe3ccb8b-fee7-4825-a7bc-4b0fd432d382,0,1,7690620b-21d9-463a-8c22-60844927b4a0,7690620b-21d9-463a-8c22-60844927b4a0,0,1,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,e7f96a15-9f62-4a7f-85f3-06ba5d30b130,0,1,b1db3255-38da-4684-b44e-4e2e9ee1dc35,b1db3255-38da-4684-b44e-4e2e9ee1dc35,0,1,4761f89b-7894-4dca-83b0-3be2d0828781,4761f89b-7894-4dca-83b0-3be2d0828781,0,1,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,573ff1f2-0ef5-4962-a0f6-eb84d430fe03,0,1,7236d52f-9068-45ad-8b92-a7319e737e08,7236d52f-9068-45ad-8b92-a7319e737e08,0,1,3e3eb4de-4811-4282-917d-9b28e9b87a44,3e3eb4de-4811-4282-917d-9b28e9b87a44,0,1,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,3b0b708f-1b6c-4eb2-a2ad-86c088d9f1bf,0,1,7575fd54-c91b-4220-a2ef-2cf533f60426,7575fd54-c91b-4220-a2ef-2cf533f60426,0,1,88879822-e4a6-47e2-b849-2ec0783cda6b,88879822-e4a6-47e2-b849-2ec0783cda6b,0,1,1b751f19-bb0c-40c2-a5d1-068544c36c6b,1b751f19-bb0c-40c2-a5d1-068544c36c6b,0,1,80bfaf42-86b7-46b0-aae2-20e8d773b00e,80bfaf42-86b7-46b0-aae2-20e8d773b00e,0,1,26e2c83b-8873-4ad3-9c50-e94421473a43,26e2c83b-8873-4ad3-9c50-e94421473a43,0,1,f0b2ec05-8e01-4ccf-b927-671329a9013b,f0b2ec05-8e01-4ccf-b927-671329a9013b,0,1,ab442b11-2482-4f80-ac82-01966e0657ec,ab442b11-2482-4f80-ac82-01966e0657ec,0,1,14fe4d39-81a1-470e-9724-6642ce34ad89,14fe4d39-81a1-470e-9724-6642ce34ad89,0,1,457578ab-dfe2-4419-8d8a-64283b341f42,457578ab-dfe2-4419-8d8a-64283b341f42,0,1,67ef6671-f537-46bf-88e6-f5bcf34a17a4,67ef6671-f537-46bf-88e6-f5bcf34a17a4,0,1,de778ca7-feaf-4531-80ae-11a534c56928,de778ca7-feaf-4531-80ae-11a534c56928,0,1,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0dfbe7a9-9c2e-4cbd-ac53-3b547fd73e91,0,1,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0a76a84d-e883-477e-8b87-7bf984cdc1cf,0,1,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,2b6c4184-6d7d-48e5-bd4e-ad31e63398d6,0,1,86df8648-e195-4661-99ee-6052788eb276,86df8648-e195-4661-99ee-6052788eb276,0,1,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,a22cf6e9-1157-4be5-8d30-aa9bbf2b5e6e,0,1,35133725-9647-42dc-a76a-2e62b2918ac4,35133725-9647-42dc-a76a-2e62b2918ac4,0,1,fa9572ee-0303-4421-9125-70cf3dd5a8c7,fa9572ee-0303-4421-9125-70cf3dd5a8c7,0,1,4cdd7920-0c49-4950-b92f-fdf6e34578b2,4cdd7920-0c49-4950-b92f-fdf6e34578b2,0,1,0af48650-5fef-4a5b-8ac8-38a9ded23bd4,0af48650-5fef-4a5b-8ac8-38a9ded23bd4,0,1,c7b883dc-6c26-4eb5-bc19-7919ad57da27,c7b883dc-6c26-4eb5-bc19-7919ad57da27,0,1,7fc37008-c378-4a70-a9a9-07543c7248a6,7fc37008-c378-4a70-a9a9-07543c7248a6,0,1,6410853e-a17e-44db-b8cc-bfefd7c4d239,6410853e-a17e-44db-b8cc-bfefd7c4d239,0,1,df042e4e-01a6-4480-a9c5-c0d7a454bb41,df042e4e-01a6-4480-a9c5-c0d7a454bb41,0,1,bad3d1fa-9618-427a-93e0-90f151e468bf,bad3d1fa-9618-427a-93e0-90f151e468bf,0,1,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,6a4972f1-012c-438b-b1d3-81e7f6da3ddd,0,1,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,ff7cfd75-e0ba-49a3-92e1-33ea26df46e2,0,1,ec7cfc56-00fd-4494-be90-49308a3c34a0,ec7cfc56-00fd-4494-be90-49308a3c34a0,0,1,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,bc37fc81-6a86-4e72-b75a-abb75bddc4b3,0,1,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,34dd0dd6-880c-4a90-9b9c-0503c8dc4ef3,0,1,719cdbdd-13b3-44fc-8739-0b788693a8d0,719cdbdd-13b3-44fc-8739-0b788693a8d0,0,1,88618d0f-97af-4055-a490-561d4b8065a7,88618d0f-97af-4055-a490-561d4b8065a7,0,1,5de9fbf9-f075-4acf-b9f9-89688d2006af,5de9fbf9-f075-4acf-b9f9-89688d2006af,0,1,faffa228-4f4f-43f6-99b9-ed8c93af85c0,faffa228-4f4f-43f6-99b9-ed8c93af85c0,0,1,7b816ca0-ba60-4637-8348-23b26ad23e3f,7b816ca0-ba60-4637-8348-23b26ad23e3f,0,1,814a6db4-a43c-44e6-ac44-11983642c5ad,814a6db4-a43c-44e6-ac44-11983642c5ad,0,1,0bd74786-e018-4a66-b994-cdb439c57657,0bd74786-e018-4a66-b994-cdb439c57657,0,1,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,f50fcf2b-90bb-4d73-9fda-f4575e7682fa,0,1,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,a01b8078-a6cd-4184-9317-2f1e0bcefb3a,0,1,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,54a279b1-9e6a-49b0-8fda-e2807cf3a2a3,0,1,09502176-c53d-4525-b8ed-32d0a2e21a5d,09502176-c53d-4525-b8ed-32d0a2e21a5d,0,1,75ad984e-d41f-4591-b207-e8a4b05757a7,75ad984e-d41f-4591-b207-e8a4b05757a7,0,1,3f020f90-7aeb-4b21-ad71-4572ac796d4c,3f020f90-7aeb-4b21-ad71-4572ac796d4c,0,1,759e2ba0-2941-4cc1-8409-50b8a3620058,759e2ba0-2941-4cc1-8409-50b8a3620058,0,1,491cf25d-091e-4e09-b145-92d7073326cf,491cf25d-091e-4e09-b145-92d7073326cf,0,1,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,9b9d4d10-a4f2-4b0d-a63a-15d55f30fb26,0,1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,579f18ce-a7ce-4eb8-a4e3-a134a9a27bc1,0,1,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,e7d05eca-2fdd-4cbb-8e2c-537525326ffe,0,1,900bc96e-fbcc-473e-970c-96f561420f8e,900bc96e-fbcc-473e-970c-96f561420f8e,0,1,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,c3bb7b85-1e90-45c4-9bc1-39bbd253d498,0,1,21d5a0b0-9a2b-4989-a50a-781645513179,21d5a0b0-9a2b-4989-a50a-781645513179,0,1,22df0fa4-cb1c-45a2-bcce-d32ed44e462a,22df0fa4-cb1c-45a2-bcce-d32ed44e462a,0,1,d97c6204-3656-4591-aea9-6ebedffe1247,d97c6204-3656-4591-aea9-6ebedffe1247,0,1,7caabe33-184f-45db-bef4-59d4e9cd2394,7caabe33-184f-45db-bef4-59d4e9cd2394,0,1,3255033a-e922-412e-a825-a3e8bd284703,3255033a-e922-412e-a825-a3e8bd284703,0,1,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,1aa65c35-e8a0-4c8a-90a3-48b62314cb19,0,1,f250f992-ad5a-4dab-ad38-240604adb0c4,f250f992-ad5a-4dab-ad38-240604adb0c4,0,1,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,c4a7efca-f27d-4fdd-86ab-cc22a2a96fb2,0,1,e63671f6-c96d-4ea4-8300-af7dbd0d016f,e63671f6-c96d-4ea4-8300-af7dbd0d016f,0,1,2c511469-0df6-470f-a808-decb275e8b1a,2c511469-0df6-470f-a808-decb275e8b1a,0,1,1bbb289c-a78a-47d0-b082-c2225ae1dc83,1bbb289c-a78a-47d0-b082-c2225ae1dc83,0,1,99b40f9f-f8f1-4779-8afc-59d30612f3d6,99b40f9f-f8f1-4779-8afc-59d30612f3d6,0,1,6131e875-3254-4281-9343-9118564c5451,6131e875-3254-4281-9343-9118564c5451,0,1,69622ff8-8a23-42fc-b63d-5097e3f636ac,69622ff8-8a23-42fc-b63d-5097e3f636ac,0,1,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,b88450cc-0dd4-4881-b3d9-a9e4e07e08f5,0,1,ef326bd8-1570-455e-ae8c-063b5578ad15,ef326bd8-1570-455e-ae8c-063b5578ad15,0,1,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,3713c76d-6ff7-4d45-9f15-d061bdf7dee2,0,1,cb6d4979-2d70-4ceb-af08-deb2b19daf14,cb6d4979-2d70-4ceb-af08-deb2b19daf14,0,1,bf30b754-84fb-4104-b52b-a4f7df6fba12,bf30b754-84fb-4104-b52b-a4f7df6fba12,0,1,7bbd0835-b3e9-40cb-a424-670828b60bbb,7bbd0835-b3e9-40cb-a424-670828b60bbb,0,1,3e2138ea-48f9-4a60-8f22-53933bea49db,3e2138ea-48f9-4a60-8f22-53933bea49db,0,1,16bda2eb-eab8-4230-b89f-517fb943e009,16bda2eb-eab8-4230-b89f-517fb943e009,0,1,00964512-297f-4b8b-8def-8e4fc0eba991,00964512-297f-4b8b-8def-8e4fc0eba991,0,1,4185fea3-baba-4ba5-8019-9023b3011d4d,4185fea3-baba-4ba5-8019-9023b3011d4d,0,1,ea790035-92d6-445e-9fa3-08e565634d2b,ea790035-92d6-445e-9fa3-08e565634d2b,0,1,cce8900a-51eb-487d-b380-227d1b9d3943,cce8900a-51eb-487d-b380-227d1b9d3943,0,1,c043c36c-90c6-483b-bc20-7c2d85109b90,c043c36c-90c6-483b-bc20-7c2d85109b90,0,1,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,a1e619a6-3bb2-468d-a225-c88ccc3b71f5,0,1,91d2d40a-c271-412c-b344-1fc98b94ba21,91d2d40a-c271-412c-b344-1fc98b94ba21,0,1,7ce47046-aee8-4809-bac9-a98930a844e1,7ce47046-aee8-4809-bac9-a98930a844e1,0,1,f480b8b9-ecec-4207-a0aa-12c5be4c2250,f480b8b9-ecec-4207-a0aa-12c5be4c2250,0,1,32717d25-6644-4903-8950-03e4c9b1a8fe,32717d25-6644-4903-8950-03e4c9b1a8fe,0,1,3644d8f3-db88-4fce-a851-39c115acfe03,3644d8f3-db88-4fce-a851-39c115acfe03,0,1,837e4559-2f2d-48e9-a03b-2d52b25569ec,837e4559-2f2d-48e9-a03b-2d52b25569ec,0,1,4653da74-34b2-47b9-ad88-efd761d6f1e9,4653da74-34b2-47b9-ad88-efd761d6f1e9,0,1,b0cd056f-c601-4d07-89c4-f7137b88bab6,b0cd056f-c601-4d07-89c4-f7137b88bab6,0,1,3660618a-0cab-458f-b448-867c4d1aba1b,3660618a-0cab-458f-b448-867c4d1aba1b,0,1,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,5cc3ebef-8f09-443c-b131-e5c3a9f7d260,0,1,22f34fd5-4bda-48c1-8772-74d9c6479a30,22f34fd5-4bda-48c1-8772-74d9c6479a30,0,1,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,b9a21b8f-8a95-4c86-9ab2-ee6c90164e18,0,1,96ed4d39-3bdc-480f-af86-218f22000514,96ed4d39-3bdc-480f-af86-218f22000514,0,1,c9f72e74-22ac-4dc0-8462-0aa7819a9342,c9f72e74-22ac-4dc0-8462-0aa7819a9342,0,1,ca650484-293f-403a-b916-5ec7c3a8969e,ca650484-293f-403a-b916-5ec7c3a8969e,0,1,b71e706d-623e-4039-9bf0-24f151d861d8,b71e706d-623e-4039-9bf0-24f151d861d8,0,1,528f4823-33d8-49bd-a8fe-756a08a107c2,528f4823-33d8-49bd-a8fe-756a08a107c2,0,1,4869095b-b76e-45ca-b77d-0e74f59673f0,4869095b-b76e-45ca-b77d-0e74f59673f0,0,1,bcca2442-448b-4760-923b-cc9621ecb441,bcca2442-448b-4760-923b-cc9621ecb441,0,1,ba7657df-429a-4737-b787-19ef09fdebb2,ba7657df-429a-4737-b787-19ef09fdebb2,0,1,867d72be-f406-45a5-a511-b90459683f11,867d72be-f406-45a5-a511-b90459683f11,0,1,88b22e62-c144-401f-9635-3fb4d914772e,88b22e62-c144-401f-9635-3fb4d914772e,0,1,efeb2914-6604-403a-a11e-5cb995ab2bc9,efeb2914-6604-403a-a11e-5cb995ab2bc9,0,1,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,4c2dd77f-adc7-4f11-8e8f-1f8e41e6c84b,0,1,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,8f2b8a8e-4cd3-45e3-89ae-1cc4bd0ff30a,0,1,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,24b3aecc-f92f-475b-862e-83dd6d6aa2b9,0,1,de506523-241a-4845-9259-37066afbf16a,de506523-241a-4845-9259-37066afbf16a,0,1,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0510206f-eef0-4a5e-aeb7-d53c26d34adb,0,1,e616e007-43e7-4740-a083-b85f5435718a,e616e007-43e7-4740-a083-b85f5435718a,0,1,727da5b1-e054-4832-8e44-f5d5e56f52e5,727da5b1-e054-4832-8e44-f5d5e56f52e5,0,1,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,6135ffd5-1510-4aa8-8bf5-d7c0ca624414,0,1,6feaad7c-9680-4341-b215-14581e2e2b37,6feaad7c-9680-4341-b215-14581e2e2b37,0,1,d5656a92-adfb-4733-830d-2b1565798b1f,d5656a92-adfb-4733-830d-2b1565798b1f,0,1,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,2ee0d56b-cd7c-42db-8fb6-c1567fe1967d,0,1,b0f6ea83-2849-4151-930d-692866919db3,b0f6ea83-2849-4151-930d-692866919db3,0,1,05558ce4-8568-4009-b1d7-307d54967515,05558ce4-8568-4009-b1d7-307d54967515,0,1,74380324-9b7b-49f6-9458-88deb9405f98,74380324-9b7b-49f6-9458-88deb9405f98,0,1,5286ceb2-0f16-4d70-ad89-dc15a308bb8d,5286ceb2-0f16-4d70-ad89-dc15a308bb8d,0,1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0abf70e0-0d81-4d85-a288-a2134da5fbf1,0,1,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,392fc734-4251-4d28-bfd1-d6f2f33ec0e5,0,1,f66cb2da-3b3c-481f-823a-506f8290f619,f66cb2da-3b3c-481f-823a-506f8290f619,0,1,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,b80ddaf8-c5c3-4bde-98ed-74a1a0446f38,0,1,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,e4f16dbf-609d-4a34-a0bf-b20e5925c1ba,0,1,0bdcf045-5132-4a68-839c-a30515dc569e,0bdcf045-5132-4a68-839c-a30515dc569e,0,1,683861f9-9a5f-47db-8b03-959f839d5a3a,683861f9-9a5f-47db-8b03-959f839d5a3a,0,1,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,56fda0b0-c0ae-4ea2-8f77-df22a9ca3e87,0,1,125be5bf-f410-451d-aa96-22fabc6a4d8a,125be5bf-f410-451d-aa96-22fabc6a4d8a,0,1,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,e5017fd0-ecea-48ae-99c8-7fc8c4f1d72b,0,1,0a46166a-4562-4a50-b139-39dbe8a1fc84,0a46166a-4562-4a50-b139-39dbe8a1fc84,0,1,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,9aa6d1d1-75ad-40e4-b01f-274826c0c9da,0,1,6ce64d65-f710-4d3f-a85f-26ce6915451e,6ce64d65-f710-4d3f-a85f-26ce6915451e,0,1,33eb9806-e34f-42a0-9825-3ff2de92c503,33eb9806-e34f-42a0-9825-3ff2de92c503,0,1,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,4905fcc5-9bd7-4b1b-b51d-882b11ee3d74,0,1,bcb58235-7cd7-4c15-a1eb-194ee38259e6,bcb58235-7cd7-4c15-a1eb-194ee38259e6,0,1,e19aefe7-634d-4218-8d40-75802d1691e0,e19aefe7-634d-4218-8d40-75802d1691e0,0,1,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,ce2a8ff8-94fd-4ce2-9caa-4711e9b79ee9,0,1,f942d212-9be0-4d80-84b6-5b63070e33e4,f942d212-9be0-4d80-84b6-5b63070e33e4,0,1,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,bea6bbc1-c1e4-4306-a0ca-efd47b9a8b23,0,1,64c91eaa-084f-4801-8dbf-4e075c689c2b,64c91eaa-084f-4801-8dbf-4e075c689c2b,0,1,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,c01bb4de-06f7-4c3d-8ea3-d861f89948c0,0,1,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,3c8c4f7b-d267-422c-becd-b6e8a9d6fe49,0,1,3aa12805-823a-439b-b039-fb9940aee312,3aa12805-823a-439b-b039-fb9940aee312,0,1,87d53573-f266-4b74-94af-041ae4b6518f,87d53573-f266-4b74-94af-041ae4b6518f,0,1,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,65a8545a-e73c-4c6a-8f87-7734d7ff5c03,0,1,801cf1f7-2c65-4126-a3e9-b66abfdde67a,801cf1f7-2c65-4126-a3e9-b66abfdde67a,0,1,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,b991eefb-0d97-48a1-89c8-3d83b3b8d97a,0,1,29c2bc01-8838-4459-8ac2-79862aa1dbc9,29c2bc01-8838-4459-8ac2-79862aa1dbc9,0,1,ad556c33-6811-48b4-ae90-57700a4d3fd6,ad556c33-6811-48b4-ae90-57700a4d3fd6,0,1,6e0833f4-3b57-4a5f-810f-9e2a492335df,6e0833f4-3b57-4a5f-810f-9e2a492335df,0,1,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,78ccdf33-9c2b-4931-afa3-5d652f2bcbc5,0,1,977bc9d8-9843-4343-85af-11a3d91f9966,977bc9d8-9843-4343-85af-11a3d91f9966,0,1,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,02ff9ef0-1057-4bc2-b745-1c2ae41835e3,0,1,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,5a86abe7-db6c-43a3-9bcd-9b3647519c6b,0,1,a6582448-734d-4a4c-a32c-c4755ca1bc93,a6582448-734d-4a4c-a32c-c4755ca1bc93,0,1,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,6a0b9a91-51a0-4ef4-b630-4f1b5a1da2b7,0,1,53327cc4-22b0-40f9-bae7-db483f85901c,53327cc4-22b0-40f9-bae7-db483f85901c,0,1,d826fe6f-d9f6-41f2-8dd6-bd840af25183,d826fe6f-d9f6-41f2-8dd6-bd840af25183,0,1,098d904d-95c9-459e-86d0-357ba9a40191,098d904d-95c9-459e-86d0-357ba9a40191,0,1,2d58033f-e15d-4a91-8165-dd311025c7c4,2d58033f-e15d-4a91-8165-dd311025c7c4,0,1,5e6a6f8f-5cb1-475d-b2d8-f2f143ef7b19,5e6a6f8f-5cb1-475d-b2d8-f2f143ef7b19,0,1,49cb3a36-90b3-4154-b571-265fc5cee21e,49cb3a36-90b3-4154-b571-265fc5cee21e,0,1,7bc5fa42-7d72-433e-8db6-a046b583a316,7bc5fa42-7d72-433e-8db6-a046b583a316,0,1,10472d2c-18ca-49b0-bd9d-c750db8498c5,10472d2c-18ca-49b0-bd9d-c750db8498c5,0,1,8efe5daf-272d-4255-b5c4-66dca7463b50,8efe5daf-272d-4255-b5c4-66dca7463b50,0,1,65af25a6-f699-4c40-b13e-3b7dff3f16fe,65af25a6-f699-4c40-b13e-3b7dff3f16fe,0,1,c4d2486d-289c-4812-b223-5ccfcd7f29e3,c4d2486d-289c-4812-b223-5ccfcd7f29e3,0,1,b6ae3a72-c686-409d-9cda-9d1a00be1d8d,b6ae3a72-c686-409d-9cda-9d1a00be1d8d,0,1,7da57c89-af2c-445a-96f7-39250f70306f,7da57c89-af2c-445a-96f7-39250f70306f,0,1,b5b94d94-25f7-4cfa-b1e9-6009fb848763,b5b94d94-25f7-4cfa-b1e9-6009fb848763,0,1,a2accf54-5966-42e8-ab2e-e56e415963ee,a2accf54-5966-42e8-ab2e-e56e415963ee,0,1,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,6d521e58-24a3-4f19-b4b0-dff84f7ca86b,0,1,d8eb5329-5900-4b5d-b45e-458513dddfef,d8eb5329-5900-4b5d-b45e-458513dddfef,0,1,d5afea8a-1b7a-4b23-8ae0-cefa0b937b17,d5afea8a-1b7a-4b23-8ae0-cefa0b937b17,0,1,6ffd2da8-db97-46fc-9a53-8e665a598e3c,6ffd2da8-db97-46fc-9a53-8e665a598e3c,0,1,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,8c413fa5-9e24-4b81-aa55-0e78c5e3e20f,0,1,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,a4322f22-7de0-4018-8e06-9f1aa7cf0c07,0,1,eaaed107-69d4-4963-be83-74519e331715,eaaed107-69d4-4963-be83-74519e331715,0,1,38cddf96-8703-4396-8c73-47fb22828a48,38cddf96-8703-4396-8c73-47fb22828a48,0,1,2c2cb793-0177-4983-91ca-9c292c5b10f1,2c2cb793-0177-4983-91ca-9c292c5b10f1,0,1,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,2a2e7f51-a4e5-48ec-b969-b1fca18ba9b5,0,1,221fa473-3327-44e6-a033-6fdfd2be713c,221fa473-3327-44e6-a033-6fdfd2be713c,0,1,7a5973f0-7e29-44af-8e7b-70af71f704a4,7a5973f0-7e29-44af-8e7b-70af71f704a4,0,1,27089e8e-2c75-431c-b808-5d4dcba3cdca,27089e8e-2c75-431c-b808-5d4dcba3cdca,0,1,9ab3980e-a480-4f90-a8cc-bde99d5ace35,9ab3980e-a480-4f90-a8cc-bde99d5ace35,0,1,ec928563-6e35-4b84-b477-90d2481cec1c,ec928563-6e35-4b84-b477-90d2481cec1c,0,1,5d3e9678-20fe-4128-867a-3f7addaa7831,5d3e9678-20fe-4128-867a-3f7addaa7831,0,1,bb878f73-8a0f-459a-9076-ce57fe7957dc,bb878f73-8a0f-459a-9076-ce57fe7957dc,0,1,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,a2b4110b-4d9c-40fd-ab46-bfa08d2eb993,0,1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,4f262b7f-927e-45f2-ad90-9d5e1b3155d1,0,1,9f4b8e36-83ff-4694-8540-b5f47b18395f,9f4b8e36-83ff-4694-8540-b5f47b18395f,0,1,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,b99f2a63-54e8-490b-a0a4-1941fbc38b3f,0,1,314b0da2-24d3-48cc-8532-d36c45eb3bf8,314b0da2-24d3-48cc-8532-d36c45eb3bf8,0,1,4077e700-ec20-4afa-8155-bf7e516a70cb,4077e700-ec20-4afa-8155-bf7e516a70cb,0,1,10008125-3aeb-4912-8ad6-d92d283ea09a,10008125-3aeb-4912-8ad6-d92d283ea09a,0,1,d22a0a50-220d-459e-a23a-39730a1e67c4,d22a0a50-220d-459e-a23a-39730a1e67c4,0,1,dd050ca0-8335-4654-ab5c-7babcb4824ef,dd050ca0-8335-4654-ab5c-7babcb4824ef,0,1,706cbf55-626d-4cab-b589-a2464368f6c1,706cbf55-626d-4cab-b589-a2464368f6c1,0,1,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,2e3ac3fb-9f0e-463f-95c2-9f661ce2e015,0,1,e010c0f9-f770-4fdc-8607-50838c0262ef,e010c0f9-f770-4fdc-8607-50838c0262ef,0,1,483dfce4-9c66-4739-94d4-17a005d64f5b,483dfce4-9c66-4739-94d4-17a005d64f5b,0,1,19506116-43ef-433c-822c-ef8717b0da6b,19506116-43ef-433c-822c-ef8717b0da6b,0,1,464b92cc-b577-4350-ae9f-e697390248d7,464b92cc-b577-4350-ae9f-e697390248d7,0,1,5a1242c8-3817-4d2c-9bfd-f62a6b80730c,5a1242c8-3817-4d2c-9bfd-f62a6b80730c,0,1,b9be6caf-e5e0-45a9-8cc8-3c83721632a2,b9be6caf-e5e0-45a9-8cc8-3c83721632a2,0,1,2fac5a7b-cb3e-4442-892f-77f338035eeb,2fac5a7b-cb3e-4442-892f-77f338035eeb,0,1,f2076747-0bc4-41dd-bab9-33cec85111f0,f2076747-0bc4-41dd-bab9-33cec85111f0,0,1,9f74c0bb-b876-4a37-b954-c93898a21067,9f74c0bb-b876-4a37-b954-c93898a21067,0,1,97e853dc-065f-4c6d-84cb-3d3aff367b22,97e853dc-065f-4c6d-84cb-3d3aff367b22,0,1,2f1fdf47-2627-496f-9e1f-77019abb2104,2f1fdf47-2627-496f-9e1f-77019abb2104,0,1,c996532a-8795-4136-8a40-9bb4b263277c,c996532a-8795-4136-8a40-9bb4b263277c,0,1,64c77788-fc49-4979-8163-949a891bd8b7,64c77788-fc49-4979-8163-949a891bd8b7,0,1,c39750ca-e33f-40c2-b830-119423d9a2ae,c39750ca-e33f-40c2-b830-119423d9a2ae,0,1,9372ff6b-27b6-48f3-a2a2-762e7c485766,9372ff6b-27b6-48f3-a2a2-762e7c485766,0,1,f454595a-4a3d-451b-8e8b-b17aa8314591,f454595a-4a3d-451b-8e8b-b17aa8314591,0,1,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,d3b7f89e-eb04-404e-bcc1-1d3557fb8d1a,0,1,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,442f9d7b-ae8f-4074-8ece-d5aa1c66e35c,0,1,bc708da8-7fc6-4da1-8129-9ef6a86667af,bc708da8-7fc6-4da1-8129-9ef6a86667af,0,1,061842fe-4077-4d6e-aefe-de79409da730,061842fe-4077-4d6e-aefe-de79409da730,0,1,da6e4bff-9835-4b92-b62b-291a5d6c86fe,da6e4bff-9835-4b92-b62b-291a5d6c86fe,0,1,3fadaeb7-2c41-42a4-bfa8-c585602b1028,3fadaeb7-2c41-42a4-bfa8-c585602b1028,0,1,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,171a0dfc-032e-4eaf-81a2-e5e0dfde8d56,0,1,083c709b-ed8c-47e4-a190-421e14259e73,083c709b-ed8c-47e4-a190-421e14259e73,0,1,b98dacc7-29e1-426b-a664-0a988f18186c,b98dacc7-29e1-426b-a664-0a988f18186c,0,1,d678856d-6e7c-443f-a6e3-350bbe8af659,d678856d-6e7c-443f-a6e3-350bbe8af659,0,1,d0979762-22ce-41be-b7a4-5e9ac149d94b,d0979762-22ce-41be-b7a4-5e9ac149d94b,0,1,ae23e70c-479e-47ad-9bfa-58560a903410,ae23e70c-479e-47ad-9bfa-58560a903410,0,1,c0d83781-bbda-43f7-bf0e-5defa3d47143,c0d83781-bbda-43f7-bf0e-5defa3d47143,0,1,21fa5fdd-acbc-403b-9acb-bbf95284bd20,21fa5fdd-acbc-403b-9acb-bbf95284bd20,0,1,576a01e3-4d6d-4241-a3c4-7661ba129bcb,576a01e3-4d6d-4241-a3c4-7661ba129bcb,0,1,9f7290dd-19f4-4163-9795-fe562e84f06d,9f7290dd-19f4-4163-9795-fe562e84f06d,0,1,c3b5c81f-b787-4f63-8cba-79def0921477,c3b5c81f-b787-4f63-8cba-79def0921477,0,1,1f0cb3d4-1344-451b-a257-be3cd854acfd,1f0cb3d4-1344-451b-a257-be3cd854acfd,0,1,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0131fe59-ce47-48b7-8f7e-1544bf0fa031,0,1,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,c8b0a1be-97c6-4a16-b1dd-31901ac61cdc,0,1,372150e2-526e-4424-8c54-e4b16bdd25b5,372150e2-526e-4424-8c54-e4b16bdd25b5,0,1,752dc569-cf84-42d7-911d-49d455f7214e,752dc569-cf84-42d7-911d-49d455f7214e,0,1,fecab2b9-27e1-44d6-9082-79c3569b7477,fecab2b9-27e1-44d6-9082-79c3569b7477,0,1,07ae092f-8517-47b7-b54c-5dbcb6506929,07ae092f-8517-47b7-b54c-5dbcb6506929,0,1,db4c25bb-d199-43ec-833d-82972de04a41,db4c25bb-d199-43ec-833d-82972de04a41,0,1,43d19685-0794-41f2-9171-bf565133718d,43d19685-0794-41f2-9171-bf565133718d,0,1,b68c15c4-4966-4f13-8912-2d479b65089a,b68c15c4-4966-4f13-8912-2d479b65089a,0,1,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,8f6770c2-654c-4cc7-8ed5-15b5b2e3109a,0,1,f87e3935-dae1-4192-b6a7-05e3c700c590,f87e3935-dae1-4192-b6a7-05e3c700c590,0,1,ee635706-6ee2-4956-8d58-a235f64687f6,ee635706-6ee2-4956-8d58-a235f64687f6,0,1,a5a40ca7-d665-420b-a516-1355019d6901,a5a40ca7-d665-420b-a516-1355019d6901,0,1,adf9304c-ccf8-492e-95b1-0754764586a2,adf9304c-ccf8-492e-95b1-0754764586a2,0,1,fd175112-ec8f-4088-9b21-d8135056f0c5,fd175112-ec8f-4088-9b21-d8135056f0c5,0,1,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,ddd82a66-1eda-409f-b6c0-e22c4bd2c1b7,0,1,df76a1b7-312a-4e77-bac1-79befadb4495,df76a1b7-312a-4e77-bac1-79befadb4495,0,1,ab39fad8-1039-491e-982a-c49637770ec0,ab39fad8-1039-491e-982a-c49637770ec0,0,1,7d93a6ba-3ca7-45ab-a540-743c79587535,7d93a6ba-3ca7-45ab-a540-743c79587535,0,1,76b58810-0527-4dfc-8858-bac68e7e65f3,76b58810-0527-4dfc-8858-bac68e7e65f3,0,1,aba97fd9-f05e-45cd-8404-ed702070e17a,aba97fd9-f05e-45cd-8404-ed702070e17a,0,1,f5c415cd-429b-469f-9332-c43ab5d1c8d6,f5c415cd-429b-469f-9332-c43ab5d1c8d6,0,1,458e9c6b-b828-404b-be5a-c6c0aeea34c9,458e9c6b-b828-404b-be5a-c6c0aeea34c9,0,1,7262eb4d-2d2d-454c-beaa-974645813af7,7262eb4d-2d2d-454c-beaa-974645813af7,0,1,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,45fa9f17-eeb1-43e2-b78c-f81a341f1bff,0,1,b2265070-9cd3-4176-92c8-6d9f32c2ca84,b2265070-9cd3-4176-92c8-6d9f32c2ca84,0,1,b347e774-2261-4f76-9bdb-3c6736983589,b347e774-2261-4f76-9bdb-3c6736983589,0,1,be7e2715-1243-49a8-8c7c-55d632d3cf6c,be7e2715-1243-49a8-8c7c-55d632d3cf6c,0,1,49221b2f-aae2-4bee-9a1a-18263fc74244,49221b2f-aae2-4bee-9a1a-18263fc74244,0,1,da0cd264-da2f-4044-af28-c91d2efe1d5c,da0cd264-da2f-4044-af28-c91d2efe1d5c,0,1,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,f1b1db38-2d9f-4409-a6d6-fd7192b1f102,0,1,1e44abfe-c173-4802-b535-96849d384983,1e44abfe-c173-4802-b535-96849d384983,0,1,2751a509-037b-49aa-9ca8-e87057d6d82c,2751a509-037b-49aa-9ca8-e87057d6d82c,0,1,35f62549-eb6a-4284-a6e3-406b0d9df0cf,35f62549-eb6a-4284-a6e3-406b0d9df0cf,0,1,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,cee94c04-7a46-47a5-bdd5-6f0dbd884e97,0,1,fd66995b-ee76-41d3-983f-33d84bdcbbd4,fd66995b-ee76-41d3-983f-33d84bdcbbd4,0,1,73e97918-b34e-4ad2-8591-4c219eb92f2c,73e97918-b34e-4ad2-8591-4c219eb92f2c,0,1,445cf7eb-35d0-48f8-9579-c2ec574ef324,445cf7eb-35d0-48f8-9579-c2ec574ef324,0,1,1025657e-afd2-4c7b-96d5-ccbedaca4619,1025657e-afd2-4c7b-96d5-ccbedaca4619,0,1,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,64839c78-b2fa-4d80-bee0-b3d3a7e5db35,0,1,e754ad5c-cf3c-4198-af81-128475924cb0,e754ad5c-cf3c-4198-af81-128475924cb0,0,1,ed65d504-b210-4014-85ec-275ad633ef04,ed65d504-b210-4014-85ec-275ad633ef04,0,1,dc31edb1-273e-4b1a-8e69-32393479ff36,dc31edb1-273e-4b1a-8e69-32393479ff36,0,1,46169f0b-8514-40a1-9d27-8489cab72503,46169f0b-8514-40a1-9d27-8489cab72503,0,1,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,d9cf39cc-8652-4c4d-bc5b-b4e455c0083f,0,1,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,4b0d7d39-5f79-4a21-b0bb-d3142a3bc8a9,0,1,c90243af-582c-4f5a-88e7-e0cbc0555fcb,c90243af-582c-4f5a-88e7-e0cbc0555fcb,0,1,14bf4066-15cb-4165-b854-45443ee27da1,14bf4066-15cb-4165-b854-45443ee27da1,0,1,c35904cf-4954-434e-96fd-5ca537a88c66,c35904cf-4954-434e-96fd-5ca537a88c66,0,1,5545798f-72dc-4630-a5ba-88039f4bfe3c,5545798f-72dc-4630-a5ba-88039f4bfe3c,0,1,f293ac4b-91ed-4c97-90b3-bfe98c983a0f,f293ac4b-91ed-4c97-90b3-bfe98c983a0f,0,1,4427cab9-4eea-4415-98ef-6021a447c60c,4427cab9-4eea-4415-98ef-6021a447c60c,0,1,fe46b4da-d865-468f-badd-83644bf88faa,fe46b4da-d865-468f-badd-83644bf88faa,0,1,2851c9d4-4366-4488-926d-a7fcd3b1548c,2851c9d4-4366-4488-926d-a7fcd3b1548c,0,1,31116aa2-cfbc-48e8-886b-45c1c17508fd,31116aa2-cfbc-48e8-886b-45c1c17508fd,0,1,6aa819d3-c56d-4561-a2e4-a1188ab1295a,6aa819d3-c56d-4561-a2e4-a1188ab1295a,0,1,2ddf344d-7065-40d5-9306-23870d8fc04a,2ddf344d-7065-40d5-9306-23870d8fc04a,0,1,c630ab2d-0a20-4136-88b6-220b2cad6a71,c630ab2d-0a20-4136-88b6-220b2cad6a71,0,1,00cd1dea-bc54-475c-956d-dc5221104932,00cd1dea-bc54-475c-956d-dc5221104932,0,1,c343495b-5947-4fe7-a94b-d1f2b2455b4f,c343495b-5947-4fe7-a94b-d1f2b2455b4f,0,1,fbce7316-bb9a-40c1-af3c-352f4b559ab6,fbce7316-bb9a-40c1-af3c-352f4b559ab6,0,1,a3721457-b33b-4742-b6e1-531af10969d1,a3721457-b33b-4742-b6e1-531af10969d1,0,1,9619a603-e578-4f30-bcc6-adfddfa915c0,9619a603-e578-4f30-bcc6-adfddfa915c0,0,1,3807f865-dd2c-44f7-9238-3db191f0a186,3807f865-dd2c-44f7-9238-3db191f0a186,0,1,8f184df5-bfe8-4df3-bc7c-18218cef7650,8f184df5-bfe8-4df3-bc7c-18218cef7650,0,1,387e273a-889f-454b-8b43-feaa12025fde,387e273a-889f-454b-8b43-feaa12025fde,0,1,1c38ad75-b294-4c05-89ce-69ce4d9a291f,1c38ad75-b294-4c05-89ce-69ce4d9a291f,0,1,078d1e8f-6d27-4761-9532-b1e7a60e4c13,078d1e8f-6d27-4761-9532-b1e7a60e4c13,0,1,4262193c-58ad-47c6-8088-735d8cd037ea,4262193c-58ad-47c6-8088-735d8cd037ea,0,1,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,36a2b5f9-ded5-4fc3-a7bd-e12b37cd6bab,0,1,de6d1aad-39eb-46ce-87aa-d29812bb37bf,de6d1aad-39eb-46ce-87aa-d29812bb37bf,0,1,4ad859ec-cc75-4bac-9e89-397798450e48,4ad859ec-cc75-4bac-9e89-397798450e48,0,1,d93ab94c-0f55-4b80-b226-41b44c73b3ea,d93ab94c-0f55-4b80-b226-41b44c73b3ea,0,1,94cbed80-5a35-471f-b354-439a11629210,94cbed80-5a35-471f-b354-439a11629210,0,1,1162cc0a-42e5-47cb-9507-68459579f110,1162cc0a-42e5-47cb-9507-68459579f110,0,1,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,17f9f188-d3fd-4fe1-a00c-b0dde64a0f9e,0,1,bb49dc80-4934-4f44-8f27-9a363dca8dc4,bb49dc80-4934-4f44-8f27-9a363dca8dc4,0,1,7338e497-03a7-4ed4-85a2-ca802c065a9f,7338e497-03a7-4ed4-85a2-ca802c065a9f,0,1,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,49fe879c-8972-4c9a-bb08-e3e5b2e5ff84,0,1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,5249687b-9ff4-46f5-be15-dbb5d5047fd1,0,1,d33df51c-3dcd-496c-90f2-7ee05582bdf7,d33df51c-3dcd-496c-90f2-7ee05582bdf7,0,1,24b39ebd-2424-4939-8e3e-d09eb674d409,24b39ebd-2424-4939-8e3e-d09eb674d409,0,1,08c751bb-9e57-4536-901e-bb316c8e96d7,08c751bb-9e57-4536-901e-bb316c8e96d7,0,1,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,de0afa6f-07c6-441c-a4ca-e7ed709a8da5,0,1,034cdcef-08e5-4751-9885-400aa69e0b94,034cdcef-08e5-4751-9885-400aa69e0b94,0,1,efefebea-2032-4006-b9ca-50a23b7da1ef,efefebea-2032-4006-b9ca-50a23b7da1ef,0,1,4c794d37-3352-4acb-a939-5e90fb682db8,4c794d37-3352-4acb-a939-5e90fb682db8,0,1,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,5f3fea83-6ca8-481b-9e2b-789a6fd01e2e,0,1,008f5068-da9c-4dac-9c0a-a50366d27cbb,008f5068-da9c-4dac-9c0a-a50366d27cbb,0,1,a23e6c77-8c12-4f99-ae2d-68a12274be38,a23e6c77-8c12-4f99-ae2d-68a12274be38,0,1,3c4454cd-31e9-42a5-9127-fb66a628f0e1,3c4454cd-31e9-42a5-9127-fb66a628f0e1,0,1,c02c5cbf-b25a-4956-8aa7-74cfeb66d508,c02c5cbf-b25a-4956-8aa7-74cfeb66d508,0,1,6e61d717-de36-4dce-8af9-b6c14ed76acb,6e61d717-de36-4dce-8af9-b6c14ed76acb,0,1,474518fe-9cb5-4a12-9388-bc7a64511617,474518fe-9cb5-4a12-9388-bc7a64511617,0,1,64337614-b1c9-4931-b576-448721fa4602,64337614-b1c9-4931-b576-448721fa4602,0,1,1d73b59c-0594-4ed3-b584-cf1261941e1d,1d73b59c-0594-4ed3-b584-cf1261941e1d,0,1,8ff2547f-d596-4fa1-9e12-079e1cc4c057,8ff2547f-d596-4fa1-9e12-079e1cc4c057,0,1,1ab0c8f8-b908-4618-ae88-af37b8f1224e,1ab0c8f8-b908-4618-ae88-af37b8f1224e,0,1,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,bd3ec5a9-161d-487e-ab1d-e5e15a6e3a7b,0,1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,b85b3a58-95e4-4698-b1ae-037901ecc1b1,0,1,b77d748a-d180-432d-91c3-774e6ccf7efa,b77d748a-d180-432d-91c3-774e6ccf7efa,0,1,e5b9c1b0-4690-442c-b160-e6c587e42e57,e5b9c1b0-4690-442c-b160-e6c587e42e57,0,1,e3adb576-6b33-475b-976b-7a6783de3184,e3adb576-6b33-475b-976b-7a6783de3184,0,1,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,c6cef8db-0689-42a6-9f43-c86b7c3cf0e9,0,1,78f5a205-dffb-4009-897a-e8f36372f33c,78f5a205-dffb-4009-897a-e8f36372f33c,0,1,f7597041-f182-42fb-803a-2521c70d627d,f7597041-f182-42fb-803a-2521c70d627d,0,1,ce988b8a-d0c1-400a-9466-aa757501bb58,ce988b8a-d0c1-400a-9466-aa757501bb58,0,1,ab98d665-8da8-406e-9e0e-3e130ab393ef,ab98d665-8da8-406e-9e0e-3e130ab393ef,0,1,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,9e823bb6-b0c0-439e-81e4-ebd46b79b99c,0,1,118a0e62-c0bb-435b-9e3e-c64563efa602,118a0e62-c0bb-435b-9e3e-c64563efa602,0,1,b57bc8a9-8a59-4192-a442-2e1982e83179,b57bc8a9-8a59-4192-a442-2e1982e83179,0,1,5b06ccda-2a70-4621-8273-78408cbe72a9,5b06ccda-2a70-4621-8273-78408cbe72a9,0,1,89753385-64fd-4e76-9857-bfd5d7c23f71,89753385-64fd-4e76-9857-bfd5d7c23f71,0,1,1b3113f3-e7d4-4e6f-b6ed-08f5fd78c68e,1b3113f3-e7d4-4e6f-b6ed-08f5fd78c68e,0,1,53e72cf2-e2a5-4b59-b5b1-a1fc28fda5bf,53e72cf2-e2a5-4b59-b5b1-a1fc28fda5bf,0,1,e20bcb57-2f68-4709-8a11-105d561a2dda,e20bcb57-2f68-4709-8a11-105d561a2dda,0,1,878fe826-fa99-44ad-9891-5eada9744017,878fe826-fa99-44ad-9891-5eada9744017,0,1,0d61712a-dfaf-46f1-b728-62993dd94fbe,0d61712a-dfaf-46f1-b728-62993dd94fbe,0,1,3a6cf496-09b9-4947-9df5-06d23b474558,3a6cf496-09b9-4947-9df5-06d23b474558,0,1,625b498a-33d1-4162-9525-fb7790cbb6a8,625b498a-33d1-4162-9525-fb7790cbb6a8,0,1,28223f7b-d15a-4f12-b57c-1f6d08a902f9,28223f7b-d15a-4f12-b57c-1f6d08a902f9,0,1,dd9eb5b7-5aed-4e51-9939-9ff14492d240,dd9eb5b7-5aed-4e51-9939-9ff14492d240,0,1,b2a14899-d589-4990-b85e-7bffb427e8af,b2a14899-d589-4990-b85e-7bffb427e8af,0,1,0981d114-05bd-4ee1-a8fd-398fa6620d0b,0981d114-05bd-4ee1-a8fd-398fa6620d0b,0,1,3210ba40-382e-4917-ad0f-9bd88d23dc25,3210ba40-382e-4917-ad0f-9bd88d23dc25,0,1,835e3ead-d01f-410b-937a-902dd5e66aec,835e3ead-d01f-410b-937a-902dd5e66aec,0,1,40141982-d1d6-416f-844e-19143a407ff9,40141982-d1d6-416f-844e-19143a407ff9,0,1,66ec2482-c1f3-45d3-9257-e0b9f5ae772a,66ec2482-c1f3-45d3-9257-e0b9f5ae772a,0,1,d3211832-c8ca-437a-8810-82e06cbb48de,d3211832-c8ca-437a-8810-82e06cbb48de,0,1,8131d701-1014-4196-9b67-914e451f8a3a,8131d701-1014-4196-9b67-914e451f8a3a,0,1,2b102933-c660-4e74-ae9a-5061a88ed672,2b102933-c660-4e74-ae9a-5061a88ed672,0,1,56c897b7-d34e-4d7d-9a3b-d0779be5c189,56c897b7-d34e-4d7d-9a3b-d0779be5c189,0,1,3ac81c80-56bd-4750-b135-07ab522e3eab,3ac81c80-56bd-4750-b135-07ab522e3eab,0,1,5657872f-c7d5-446f-bcc3-d0b86ad63a42,5657872f-c7d5-446f-bcc3-d0b86ad63a42,0,1,d5214cb9-67e2-469f-989f-3f2b662ae830,d5214cb9-67e2-469f-989f-3f2b662ae830,0,1,69679e88-4f2b-4dd6-8cb2-b88293d07b55,69679e88-4f2b-4dd6-8cb2-b88293d07b55,0,1,68679208-9972-4854-8649-49bdf6212255,68679208-9972-4854-8649-49bdf6212255,0,1,98393093-7ba6-4b4d-86be-ee5826cd8cd5,98393093-7ba6-4b4d-86be-ee5826cd8cd5,0,1,87de486d-3f35-4432-a7cd-9d3832db63cf,87de486d-3f35-4432-a7cd-9d3832db63cf,0,1,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,246f17a0-93a7-4e2c-8fa6-f57405f0abeb,0,1,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,ea6c4830-a34d-4026-a0ca-5cf7e44f089d,0,1,bb7ce04a-8143-4c0b-a196-1b57f1640142,bb7ce04a-8143-4c0b-a196-1b57f1640142,0,1,4872f12c-705c-4dd3-802f-d27496a0d634,4872f12c-705c-4dd3-802f-d27496a0d634,0,1,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0c0bbfba-c1c4-4bb5-a813-10da4bef7911,0,1,f9ada91a-e673-4821-9bce-cb0dd75ca28b,f9ada91a-e673-4821-9bce-cb0dd75ca28b,0,1,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,9fcf68bb-43e2-4cd1-89ec-8797ad9c0e8b,0,1,90ce635a-0277-4056-980d-d1a16d91cb30,90ce635a-0277-4056-980d-d1a16d91cb30,0,1,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,e61a8360-a0f8-4d86-b91a-2ae9b8552bf0,0,1,1e77e873-632c-482b-8f46-8f8cc3cc8cef,1e77e873-632c-482b-8f46-8f8cc3cc8cef,0,1,766208a3-2780-427b-a7d3-93abe99d236b,766208a3-2780-427b-a7d3-93abe99d236b,0,1,63ce4c3c-5bad-409c-904f-18f34cf1da78,63ce4c3c-5bad-409c-904f-18f34cf1da78,0,1,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,62bddcee-bef6-42cc-9ba3-e99b8160dcc2,0,1,26ac22f9-0bbb-4671-b446-626e345e2461,26ac22f9-0bbb-4671-b446-626e345e2461,0,1,0d63ee6d-e17f-4a86-b384-adf9793f3331,0d63ee6d-e17f-4a86-b384-adf9793f3331,0,1,f152945b-2a7b-449e-a915-176166af7bac,f152945b-2a7b-449e-a915-176166af7bac,0,1,77f5d86a-7fae-4490-9740-0e31102dab5c,77f5d86a-7fae-4490-9740-0e31102dab5c,0,1,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,5a54bc1a-d178-412c-bf4a-cf92d7f141aa,0,1,24be43ec-d39e-46aa-9c11-2536b835e515,24be43ec-d39e-46aa-9c11-2536b835e515,0,1,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,c9ca80ef-c7b7-4425-b5c0-3d13af82f291,0,1,df9af3ee-6a69-4a03-8ff5-0735e9a38013,df9af3ee-6a69-4a03-8ff5-0735e9a38013,0,1,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,1b27eb77-d535-43a5-8ae1-fa2fec15d92c,0,1,7743fe24-b941-4dad-bc76-05fb6b26b1d7,7743fe24-b941-4dad-bc76-05fb6b26b1d7,0,1,5bf2da0d-f318-4036-9234-8a3a6eca88b2,5bf2da0d-f318-4036-9234-8a3a6eca88b2,0,1,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,288525fc-d3fa-4c8e-a1d7-d2d1ef4cd0ef,0,1,c3634571-6fe5-45ab-9362-161305eef661,c3634571-6fe5-45ab-9362-161305eef661,0,1,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,ecd8772d-e33f-426f-a87a-e28bd94d5fdf,0,1,96661303-1286-4f84-93b7-0e6da2bd7893,96661303-1286-4f84-93b7-0e6da2bd7893,0,1,68076431-36e6-46dc-92cb-e0d8e605bf66,68076431-36e6-46dc-92cb-e0d8e605bf66,0,1,239fa55a-6572-4e5c-9918-c2e14063c76d,239fa55a-6572-4e5c-9918-c2e14063c76d,0,1,8211a1b6-c3b1-466b-8d11-22603fb50c7a,8211a1b6-c3b1-466b-8d11-22603fb50c7a,0,1,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,7e7dfcb5-04eb-40f4-8f4c-f29644e81473,0,1,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,daef68a3-c6c3-450d-b8fd-7af2a2f5572e,0,1,a83cb338-5707-42c9-9e88-11f6c68fcc32,a83cb338-5707-42c9-9e88-11f6c68fcc32,0,1,985106b7-7476-4b48-90ac-ad86876395b5,985106b7-7476-4b48-90ac-ad86876395b5,0,1,0d8db0c9-adbc-478d-997c-3d7feccac99b,0d8db0c9-adbc-478d-997c-3d7feccac99b,0,1,3fd2ef04-c178-47bf-ab62-7baf83236d99,3fd2ef04-c178-47bf-ab62-7baf83236d99,0,1,b4cd1b51-dbc0-4bb0-879e-5ac0d58e78c1,b4cd1b51-dbc0-4bb0-879e-5ac0d58e78c1,0,1,320bf2e6-a3a8-490b-8aa0-21369ffb121b,320bf2e6-a3a8-490b-8aa0-21369ffb121b,0,1,a3bafc54-8fe4-4841-acc6-74a87baf9caf,a3bafc54-8fe4-4841-acc6-74a87baf9caf,0,1,f93741c9-ab94-464b-b0d4-4af99c9f92d5,f93741c9-ab94-464b-b0d4-4af99c9f92d5,0,1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0fddbd8d-12dd-4af1-9e34-feebf4bc38b1,0,1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,2e9548a6-1fd8-4430-8864-91bde0d2a7a1,0,1,c59fd3f8-c734-49d3-90ba-e608a22ac981,c59fd3f8-c734-49d3-90ba-e608a22ac981,0,1,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,b26235ed-374c-44ab-8b3c-01d7c4d82d4c,0,1,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,5056db9f-9ebe-4cca-98f0-5f4817a1cba4,0,1,475f76ea-f494-41f1-9b65-f39907e5a427,475f76ea-f494-41f1-9b65-f39907e5a427,0,1,986280d1-41bb-4b15-a5ae-516d6a04c1f4,986280d1-41bb-4b15-a5ae-516d6a04c1f4,0,1,43bfd29a-d254-4c33-8639-200b483578c1,43bfd29a-d254-4c33-8639-200b483578c1,0,1,6a274167-7f80-4613-9890-259ffd8ccfc4,6a274167-7f80-4613-9890-259ffd8ccfc4,0,1,4e90e1ab-b1ec-4795-ad45-1db151a5492c,4e90e1ab-b1ec-4795-ad45-1db151a5492c,0,1,91791e56-ca80-4d90-b8a8-16145f6a9721,91791e56-ca80-4d90-b8a8-16145f6a9721,0,1,b242c6a2-5ac9-4edb-b5dd-24eda8162151,b242c6a2-5ac9-4edb-b5dd-24eda8162151,0,1,8d080f3c-06ed-48bf-9709-eea73d676741,8d080f3c-06ed-48bf-9709-eea73d676741,0,1,57b31a5d-9fdc-43d2-ae81-67157822c4b6,57b31a5d-9fdc-43d2-ae81-67157822c4b6,0,1,d4e2da66-9a70-459f-a873-cb4ad71d17b2,d4e2da66-9a70-459f-a873-cb4ad71d17b2,0,1,a84a91d2-d326-4bf4-82e6-d573ee35d090,a84a91d2-d326-4bf4-82e6-d573ee35d090,0,1,39cbda23-db3f-4ddd-8981-8540247406db,39cbda23-db3f-4ddd-8981-8540247406db,0,1,c8a18d99-62ff-45a4-acb5-48e3310c1b53,c8a18d99-62ff-45a4-acb5-48e3310c1b53,0,1,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,a6eb0cb1-80f0-4390-80ff-7af53f8e63c3,0,1,3500c6fa-813a-49dd-a4bf-163500db5b7f,3500c6fa-813a-49dd-a4bf-163500db5b7f,0,1,1d02493a-dd89-4a51-b75e-9c49f9818b95,1d02493a-dd89-4a51-b75e-9c49f9818b95,0,1,2845c5d1-e836-4499-bcae-f3c8fdae75ee,2845c5d1-e836-4499-bcae-f3c8fdae75ee,0,1,fe4e8e4e-9471-4583-b9b3-576007db08ee,fe4e8e4e-9471-4583-b9b3-576007db08ee,0,1,49deaaa8-6d50-4b25-8153-6712d88fb0fb,49deaaa8-6d50-4b25-8153-6712d88fb0fb,0,1,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,1eeb7634-e924-4ad8-92e0-1c54c22b1ba6,0,1,46a06de8-06fd-4b49-835f-4f24b832b3c4,46a06de8-06fd-4b49-835f-4f24b832b3c4,0,1,972c2fa0-0ca9-40da-a8c1-a06b81bd0bcf,972c2fa0-0ca9-40da-a8c1-a06b81bd0bcf,0,1,3845a567-4375-4c3a-af61-5b82674060ab,3845a567-4375-4c3a-af61-5b82674060ab,0,1,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,ab210fb8-4fc4-47f8-b8ef-3a00eeb0ab8b,0,1,a835a3a7-989b-4247-b836-d23bba2f391a,a835a3a7-989b-4247-b836-d23bba2f391a,0,1,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,58f5c354-8f1d-4064-ba35-527ea3d2f4a9,0,1,9b149c20-9328-4e2d-a34b-95c883ae4dcc,9b149c20-9328-4e2d-a34b-95c883ae4dcc,0,1,f8dbf226-ea56-4b15-baf1-a41fceba2a32,f8dbf226-ea56-4b15-baf1-a41fceba2a32,0,1,fc1476f7-26e6-4374-b99b-e515d86c050a,fc1476f7-26e6-4374-b99b-e515d86c050a,0,1,e0eb7b4a-9a13-4752-9327-e13d2abc4fc5,e0eb7b4a-9a13-4752-9327-e13d2abc4fc5,0,1,59fe985a-f169-495b-bd6d-4b64401f81b0,59fe985a-f169-495b-bd6d-4b64401f81b0,0,1,184d1023-fba9-4e56-b592-519254abe922,184d1023-fba9-4e56-b592-519254abe922,0,1,cb68b275-f191-4632-a8ea-aa8809256804,cb68b275-f191-4632-a8ea-aa8809256804,0,1,174011b9-8fe2-43f5-adea-21f6d73835ff,174011b9-8fe2-43f5-adea-21f6d73835ff,0,1,c4753515-a483-453e-a48b-b12d8ef48fd9,c4753515-a483-453e-a48b-b12d8ef48fd9,0,1,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,2d9048eb-abdf-4980-96ed-788fbb0f4ea7,0,1,98c3bc52-2351-460c-8b8e-0d3f45ca3131,98c3bc52-2351-460c-8b8e-0d3f45ca3131,0,1,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,b1ff31b9-c9f2-4be4-ac9a-62faa1d1eb81,0,1,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,c14ea7a0-1fb6-4d54-82d6-7f12f11b0c0b,0,1,29645810-44aa-402c-9561-7819d6f4a7ab,29645810-44aa-402c-9561-7819d6f4a7ab,0,1,46bf4911-5200-44ac-9b4d-eb0089c12e34,46bf4911-5200-44ac-9b4d-eb0089c12e34,0,1,6e1685bd-7269-401c-b36e-def6a36b41d5,6e1685bd-7269-401c-b36e-def6a36b41d5,0,1,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,9d77103a-9921-4f6c-98fc-d7f42f0f2d8d,0,1,e03b6592-b597-4795-a78e-775d4f2258db,e03b6592-b597-4795-a78e-775d4f2258db,0,1,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,6ae9e86a-a42f-4de0-a891-6abe1ed16cdd,0,1,3b207d5f-6584-4cf2-9173-20235484f9f4,3b207d5f-6584-4cf2-9173-20235484f9f4,0,1,878d9efe-b0e7-487f-b8f7-83470c131e09,878d9efe-b0e7-487f-b8f7-83470c131e09,0,1,8270573d-8ed6-449d-853b-462d2dabaaa9,8270573d-8ed6-449d-853b-462d2dabaaa9,0,1,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,baeec6cd-b220-4240-95f2-3a0c1ee06c2e,0,1,f2502463-67e4-4bfe-8ad5-fb80aa73975a,f2502463-67e4-4bfe-8ad5-fb80aa73975a,0,1,59e885e6-d978-40c2-95b6-35fc61074fb4,59e885e6-d978-40c2-95b6-35fc61074fb4,0,1,267dc512-9ee1-4bc1-9034-3effb7fb2949,267dc512-9ee1-4bc1-9034-3effb7fb2949,0,1,0f211e73-5be9-4015-93e7-ccf63e793cb6,0f211e73-5be9-4015-93e7-ccf63e793cb6,0,1,6574d8f4-fb97-4a26-b166-711fad63aa07,6574d8f4-fb97-4a26-b166-711fad63aa07,0,1,fb3eddaf-3241-4d59-8314-97a5ae9258c4,fb3eddaf-3241-4d59-8314-97a5ae9258c4,0,1,6528bd7a-bac1-4c8b-9b00-6be01c0121b1,6528bd7a-bac1-4c8b-9b00-6be01c0121b1,0,1,d8601e95-af94-4805-974a-99c539725d74,d8601e95-af94-4805-974a-99c539725d74,0,1,6d98f877-f3bb-4795-9025-2631468a331f,6d98f877-f3bb-4795-9025-2631468a331f,0,1,89b9379d-ace9-48cc-b979-a66fd45aeb1d,89b9379d-ace9-48cc-b979-a66fd45aeb1d,0,1,c4a5c44d-329d-41b5-9a6c-bddbc15f6249,c4a5c44d-329d-41b5-9a6c-bddbc15f6249,0,1,9767a113-5a42-4749-bf40-0f349e85615d,9767a113-5a42-4749-bf40-0f349e85615d,0,1,a3b0494c-f436-45ea-9577-4c0c86b057c9,a3b0494c-f436-45ea-9577-4c0c86b057c9,0,1,5101c142-b25c-4bef-80e7-7407f2c15c90,5101c142-b25c-4bef-80e7-7407f2c15c90,0,1,6d7872f1-fd54-41c4-8253-5f2b125f31ae,6d7872f1-fd54-41c4-8253-5f2b125f31ae,0,1,0c218200-27a8-4f71-9b09-3632dd453644,0c218200-27a8-4f71-9b09-3632dd453644,0,1,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,2d8a74e5-eb29-448b-b4c0-1f41fa171b5e,0,1,b5d30250-18ab-4af1-b99a-ff5dba334d1f,b5d30250-18ab-4af1-b99a-ff5dba334d1f,0,1,936f1aa5-7516-444b-b451-1162fa5d705f,936f1aa5-7516-444b-b451-1162fa5d705f,0,1,e8d5533e-2669-44f6-9eed-eaedab666d42,e8d5533e-2669-44f6-9eed-eaedab666d42,0,1,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,dd8e0f41-51a3-4bf2-a32e-084f9ad09be7,0,1,9e323b0d-4e3b-45d4-9705-aa30e63014f5,9e323b0d-4e3b-45d4-9705-aa30e63014f5,0,1,5afa798a-958e-4e0c-a380-0104f4c037a7,5afa798a-958e-4e0c-a380-0104f4c037a7,0,1,c0295fd9-c749-41b3-8d0d-6af16f484b1f,c0295fd9-c749-41b3-8d0d-6af16f484b1f,0,1,bd32a863-3090-432d-89c4-356ba86a0bdc,bd32a863-3090-432d-89c4-356ba86a0bdc,0,1,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,4621bf5a-46b5-4b82-8ae4-cc8e11e81ba0,0,1,ed5465b4-a556-4078-ab18-49fef2afba2e,ed5465b4-a556-4078-ab18-49fef2afba2e,0,1,7368ab8f-59d5-4270-a43b-0f3e422169ed,7368ab8f-59d5-4270-a43b-0f3e422169ed,0,1,eeb0571b-1b74-4889-b8b5-f94186d692d7,eeb0571b-1b74-4889-b8b5-f94186d692d7,0,1,9ef3b72c-caa3-486b-9917-04c00f6689c1,9ef3b72c-caa3-486b-9917-04c00f6689c1,0,1,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,cb3039d8-4b11-4d03-b0ca-eae5dfc01b0a,0,1,9245417f-f247-47ba-a1b4-a17ec2e8776c,9245417f-f247-47ba-a1b4-a17ec2e8776c,0,1,a4b721d7-b119-47eb-80e0-7db34c83964f,a4b721d7-b119-47eb-80e0-7db34c83964f,0,1,512629d1-e8b7-4f66-b613-b8c0cb9c250b,512629d1-e8b7-4f66-b613-b8c0cb9c250b,0,1,b7cf4684-4432-4658-9c06-b315d470a3a6,b7cf4684-4432-4658-9c06-b315d470a3a6,0,1,d3bc8211-54d8-47dd-aecf-5da72b65195f,d3bc8211-54d8-47dd-aecf-5da72b65195f,0,1,33f11da8-f670-4ec3-9d40-96fce031c60f,33f11da8-f670-4ec3-9d40-96fce031c60f,0,1,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,97cbd5b5-5a39-418c-93b5-f9934fa1ba4e,0,1,f74c2d41-2433-4bed-8aef-adfeed198252,f74c2d41-2433-4bed-8aef-adfeed198252,0,1,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,3c2b8a8a-bfe7-4e37-9d83-55a695a06605,0,1,56c9703a-751a-4e6c-81f4-a8756fb040e3,56c9703a-751a-4e6c-81f4-a8756fb040e3,0,1,c3a86eec-1ff5-4392-9904-91a12a2e253a,c3a86eec-1ff5-4392-9904-91a12a2e253a,0,1,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,f5df72a3-c71c-412b-8c3e-6329f1d3a7da,0,1,f02b7246-dae9-4e15-b4cd-b06133664d34,f02b7246-dae9-4e15-b4cd-b06133664d34,0,1,77f20022-17ce-4e00-8a84-015238bce6f3,77f20022-17ce-4e00-8a84-015238bce6f3,0,1,3734619b-7059-4547-8b97-0b3393389d4d,3734619b-7059-4547-8b97-0b3393389d4d,0,1,a30bf95f-aabd-4da0-8287-61e08f9362fb,a30bf95f-aabd-4da0-8287-61e08f9362fb,0,1,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,f5a7df18-2ddb-4053-9aeb-57fc37ae557e,0,1,4078867c-2972-47f9-bebd-935a6f1cc667,4078867c-2972-47f9-bebd-935a6f1cc667,0,1,8502fe39-c241-4be5-a313-fd887bbbdfa1,8502fe39-c241-4be5-a313-fd887bbbdfa1,0,1,67a71201-13e5-42a3-902f-fb3a59710dfb,67a71201-13e5-42a3-902f-fb3a59710dfb,0,1,3a79a951-a997-4596-ab62-ba376d67725d,3a79a951-a997-4596-ab62-ba376d67725d,0,1,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,dd4fe688-c113-4ac5-8114-b89cf1b0eb55,0,1,884c28de-434f-440a-8c63-67e659c097ad,884c28de-434f-440a-8c63-67e659c097ad,0,1,92ead3b5-8c55-4e4d-bd47-009e025b22f8,92ead3b5-8c55-4e4d-bd47-009e025b22f8,0,1,50d8e365-aa58-4b60-8992-01943379d485,50d8e365-aa58-4b60-8992-01943379d485,0,1,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,9bb58c7c-d87d-435b-adf6-09c8f75d47b2,0,1,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,bcd705ba-c9ac-4e73-94b1-7632c0f06c04,0,1,094d5482-286d-4e1a-8888-c0452d2e5af0,094d5482-286d-4e1a-8888-c0452d2e5af0,0,1,fec102ea-a3f6-49b5-b4b8-6884b0654129,fec102ea-a3f6-49b5-b4b8-6884b0654129,0,1,246571fb-38c7-4da6-929d-d8b44bc3437c,246571fb-38c7-4da6-929d-d8b44bc3437c,0,1,047fd6d7-5e30-4184-a09a-6525de526cc7,047fd6d7-5e30-4184-a09a-6525de526cc7,0,1,beb44b02-5d5e-4127-aee7-e184a43a4210,beb44b02-5d5e-4127-aee7-e184a43a4210,0,1,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,1dedfbc2-9250-4229-a6ea-5e085f33e7c3,0,1,e24641ed-3e92-46d7-852b-9958ab7bc520,e24641ed-3e92-46d7-852b-9958ab7bc520,0,1,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,bc2aa3f9-ef2c-49a5-8cd9-ddd8a8cbe19d,0,1,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,b6ac4cd6-c68f-4464-88e9-a8d335d581c6,0,1,2c61114f-abd7-4415-8cdf-4fe95d9fe354,2c61114f-abd7-4415-8cdf-4fe95d9fe354,0,1,abd7a766-5cc1-48db-8d29-797e9d666a78,abd7a766-5cc1-48db-8d29-797e9d666a78,0,1,1704b5e3-8e77-4df6-9223-e6e5c41a280d,1704b5e3-8e77-4df6-9223-e6e5c41a280d,0,1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,62eca88f-025d-44de-b92c-46cd8bc7e4a1,0,1,b0dde395-8498-4469-9507-d290798117d7,b0dde395-8498-4469-9507-d290798117d7,0,1,999616ea-0faa-4ae2-9841-6a6997ea6694,999616ea-0faa-4ae2-9841-6a6997ea6694,0,1,c5f91669-13d8-4f0a-a054-2701078da38a,c5f91669-13d8-4f0a-a054-2701078da38a,0,1,34f9872b-e02e-4093-ba06-3cb5b8995850,34f9872b-e02e-4093-ba06-3cb5b8995850,0,1,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,18515c19-c9ef-4c9f-8d12-4f58ffa251e8,0,1,e61eef89-b3de-4b73-b7d9-af75318093e5,e61eef89-b3de-4b73-b7d9-af75318093e5,0,1,94e68502-adf1-476e-be2f-8418385959fa,94e68502-adf1-476e-be2f-8418385959fa,0,1,bf80ccc5-f907-4e7f-a007-6030c7ba682e,bf80ccc5-f907-4e7f-a007-6030c7ba682e,0,1,a330acd1-bc97-4ef8-8ecb-5604868ca044,a330acd1-bc97-4ef8-8ecb-5604868ca044,0,1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,05f1f184-50cb-47c5-b3a8-62be6a9780c1,0,1,58c3936c-4db0-45c8-a22e-b5dd49a61497,58c3936c-4db0-45c8-a22e-b5dd49a61497,0,1,8928693b-1933-4e02-8a33-99b6f05b1c57,8928693b-1933-4e02-8a33-99b6f05b1c57,0,1,9aa607bc-5870-436a-bbe1-296560393e3b,9aa607bc-5870-436a-bbe1-296560393e3b,0,1,1635be16-4861-4a7d-babc-4caff448a7f7,1635be16-4861-4a7d-babc-4caff448a7f7,0,1,9e399087-c957-4a7a-ab9d-2b689736caab,9e399087-c957-4a7a-ab9d-2b689736caab,0,1,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,e7542e37-a2f0-43b5-852e-4e2b24b1b71f,0,1,61f283c7-f887-432b-a2d7-c27483e04317,61f283c7-f887-432b-a2d7-c27483e04317,0,1,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,3e94649c-7d69-4fb4-ada1-ae00eabf02b6,0,1,2b7372be-af0d-464e-8d09-8172229790af,2b7372be-af0d-464e-8d09-8172229790af,0,1,079bc65d-da8e-431d-847c-ec46868ca92d,079bc65d-da8e-431d-847c-ec46868ca92d,0,1,d85346db-be25-4dab-a2db-647c3d40dd17,d85346db-be25-4dab-a2db-647c3d40dd17,0,1,9f9936fc-54a0-4812-b12d-2f8f91551440,9f9936fc-54a0-4812-b12d-2f8f91551440,0,1,a5667633-9264-4dfa-9e26-c45e96e61ae3,a5667633-9264-4dfa-9e26-c45e96e61ae3,0,1,2eeea138-481c-4fde-9e8a-709d751cc469,2eeea138-481c-4fde-9e8a-709d751cc469,0,1,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,02c5f3b2-d691-4eaf-84fd-763770e4b1cb,0,1,1f169cd2-573f-408d-92e7-3eee7ff4528a,1f169cd2-573f-408d-92e7-3eee7ff4528a,0,1,845262f8-8208-4c90-98ec-c85dd5734cf0,845262f8-8208-4c90-98ec-c85dd5734cf0,0,1,3326bbcb-b277-44db-a252-2448119e8146,3326bbcb-b277-44db-a252-2448119e8146,0,1,61cac5f7-320c-4098-9078-44fadcdeb219,61cac5f7-320c-4098-9078-44fadcdeb219,0,1,304304b1-36a4-42bb-8ab9-b23b59795001,304304b1-36a4-42bb-8ab9-b23b59795001,0,1,9ed016b2-2a4a-43a1-a336-6b13d68b3d0a,9ed016b2-2a4a-43a1-a336-6b13d68b3d0a,0,1,75b9ab9f-7cbb-4468-9570-39f719fd682b,75b9ab9f-7cbb-4468-9570-39f719fd682b,0,1,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,a22d1a4f-cb7c-4bcc-b258-ecca282fb071,0,1,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,e5beda2c-f4e2-4a6b-a1d0-a877eb0c9f5b,0,1,cd454738-62dd-4f95-af33-b52750678428,cd454738-62dd-4f95-af33-b52750678428,0,1,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,2a479b8f-7569-43d0-8ca3-9001d6ec57f0,0,1,e4abafc6-f859-4d96-9818-5b9bf8d66d69,e4abafc6-f859-4d96-9818-5b9bf8d66d69,0,1,535acd2c-26d2-4f32-9ae6-cc1956317c59,535acd2c-26d2-4f32-9ae6-cc1956317c59,0,1,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,801adeeb-8a7f-44c1-b649-a7dfffc7b65d,0,1,ac4e0868-ba49-46b4-8872-d42483a5591f,ac4e0868-ba49-46b4-8872-d42483a5591f,0,1,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,45e6c4a6-1d63-4b94-a7d2-fbd3fb68061b,0,1,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0493dcf1-5f94-41f9-a4c7-a52e12a29068,0,1,ca4c0299-625a-4b03-be0e-36ffb45c6d08,ca4c0299-625a-4b03-be0e-36ffb45c6d08,0,1,7fa1119b-4321-4b8f-a879-1d940084145a,7fa1119b-4321-4b8f-a879-1d940084145a,0,1,5d9c0841-6ea6-48dc-a53b-9f19894750f8,5d9c0841-6ea6-48dc-a53b-9f19894750f8,0,1,86b5303b-d967-4bc6-b2da-066c5a58613f,86b5303b-d967-4bc6-b2da-066c5a58613f,0,1,853b824d-9377-475f-913e-d02bd60f5f64,853b824d-9377-475f-913e-d02bd60f5f64,0,1,0c5e261f-961e-4780-877a-06589400b88a,0c5e261f-961e-4780-877a-06589400b88a,0,1,4599ef83-5f1e-44af-ae0c-67988656a99e,4599ef83-5f1e-44af-ae0c-67988656a99e,0,1,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,acb0d7eb-2ed9-4419-b79d-7dc661d70c30,0,1,e1b94dcf-ec37-4b2d-a7af-120eeee40944,e1b94dcf-ec37-4b2d-a7af-120eeee40944,0,1,7d2a37b1-a1a0-435a-846a-95e255655044,7d2a37b1-a1a0-435a-846a-95e255655044,0,1,109db64c-00dc-490e-99a5-4430d9344e99,109db64c-00dc-490e-99a5-4430d9344e99,0,1,85837a55-fed5-4b7b-a622-30d728b9a677,85837a55-fed5-4b7b-a622-30d728b9a677,0,1,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0fd79cdb-dc7a-40ca-a3bc-2c7a7b4691bb,0,1,b6bd2b39-07ae-48a7-8a5b-f44b5034afa9,b6bd2b39-07ae-48a7-8a5b-f44b5034afa9,0,1,5500d5c6-fdbf-4614-b43b-fabf56e3968c,5500d5c6-fdbf-4614-b43b-fabf56e3968c,0,1,a08eeef7-1c81-4985-8628-6b35ac73e135,a08eeef7-1c81-4985-8628-6b35ac73e135,0,1,c446f732-097a-4197-8384-91a6925c6bdd,c446f732-097a-4197-8384-91a6925c6bdd,0,1,cc33ec52-aed4-4807-90b5-700d307b4f57,cc33ec52-aed4-4807-90b5-700d307b4f57,0,1,6f9ece3d-aeca-4313-9e6a-44e562fc83ff,6f9ece3d-aeca-4313-9e6a-44e562fc83ff,0,1,6b04b6f1-2c9d-4de0-b871-6cc377b13e33,6b04b6f1-2c9d-4de0-b871-6cc377b13e33,0,1,82ea249e-ecba-4916-b9a1-c7e6119b353a,82ea249e-ecba-4916-b9a1-c7e6119b353a,0,1,d5406849-57b3-44f4-8efa-e73523939ae5,d5406849-57b3-44f4-8efa-e73523939ae5,0,1,9ce5f33f-4331-491d-b084-9913c38f4c7d,9ce5f33f-4331-491d-b084-9913c38f4c7d,0,1,0603113a-f2f1-43e6-9838-64c5e98417f0,0603113a-f2f1-43e6-9838-64c5e98417f0,0,1,43055a56-a079-41e2-87eb-723769109bed,43055a56-a079-41e2-87eb-723769109bed,0,1,930f2bc5-417d-4b97-b440-8d5e81e5c896,930f2bc5-417d-4b97-b440-8d5e81e5c896,0,1,c8f487aa-544a-41dc-b7c3-7cf21d2720f2,c8f487aa-544a-41dc-b7c3-7cf21d2720f2,0,1,e506f7d3-2572-4c54-ac98-e40f083ac578,e506f7d3-2572-4c54-ac98-e40f083ac578,0,1,bdf93aa5-86a4-4791-bdb0-172532029b7c,bdf93aa5-86a4-4791-bdb0-172532029b7c,0,1,da9821c3-4b16-48b7-9088-d3cf8ac536a6,da9821c3-4b16-48b7-9088-d3cf8ac536a6,0,1,d5142574-a040-4dd0-a482-cdc61c1d86ab,d5142574-a040-4dd0-a482-cdc61c1d86ab,0,1,778e79ee-eb1a-4d52-8a31-58e781c78fe4,778e79ee-eb1a-4d52-8a31-58e781c78fe4,0,1,f480ac52-e2f1-4ed0-a0b1-20a622f77302,f480ac52-e2f1-4ed0-a0b1-20a622f77302,0,1,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,5c63e7cd-ecdb-45ae-a589-f6c38f5a8e76,0,1,b9b0fbdc-8fda-46d1-bb3e-561a03604971,b9b0fbdc-8fda-46d1-bb3e-561a03604971,0,1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,eadfdbe3-bc85-4084-aef6-4cfd258ee6f1,0,1,672c2936-9771-4e32-a970-7ac7f12a21e8,672c2936-9771-4e32-a970-7ac7f12a21e8,0,1,c264441d-4805-4968-baa2-37b8970049c7,c264441d-4805-4968-baa2-37b8970049c7,0,1,f36150de-33af-4410-8a4c-8c9f4b545793,f36150de-33af-4410-8a4c-8c9f4b545793,0,1,62f97480-7d4a-48f3-9d1d-612909b242c9,62f97480-7d4a-48f3-9d1d-612909b242c9,0,1,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,2b4f6e2f-6cc4-4c7c-98a6-786f3793366b,0,1,3068be84-a401-4701-8ac9-411fae130f84,3068be84-a401-4701-8ac9-411fae130f84,0,1,957394a7-e5b8-47fc-8680-1e71efe2be7d,957394a7-e5b8-47fc-8680-1e71efe2be7d,0,1,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,ba49a9e4-6ec1-43ff-92cd-9dbf221bbf09,0,1,4f25ef45-c8d9-401d-b0e8-2217ac310f04,4f25ef45-c8d9-401d-b0e8-2217ac310f04,0,1,504ca240-b5ae-433e-ae5f-d818263eea23,504ca240-b5ae-433e-ae5f-d818263eea23,0,1,32461819-9437-417d-8d1e-851c9a2dcee2,32461819-9437-417d-8d1e-851c9a2dcee2,0,1,74228950-8a4b-4dd6-a053-8650de202521,74228950-8a4b-4dd6-a053-8650de202521,0,1,ff700f82-aba3-417c-be1b-b1b37ad98543,ff700f82-aba3-417c-be1b-b1b37ad98543,0,1,6b9ce91e-08b9-4972-9878-1724c67b68ec,6b9ce91e-08b9-4972-9878-1724c67b68ec,0,1,640814f2-6082-475e-8006-25fd5b24afdb,640814f2-6082-475e-8006-25fd5b24afdb,0,1,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,6fcd2a3a-4d66-40e3-bde0-5c274b43783f,0,1,f1b66ea8-262d-4b38-a039-b83a843f6ee8,f1b66ea8-262d-4b38-a039-b83a843f6ee8,0,1,bcae6e05-f1fd-413e-9eef-2e1cee42a962,bcae6e05-f1fd-413e-9eef-2e1cee42a962,0,1,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,40da1bca-ebb3-4c64-bf54-1f37b71d47b6,0,1,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,84da1ef8-1784-4dfc-b17a-7728aa7ff62a,0,1,9155c95b-6afb-41bb-bd0b-d37e503fc163,9155c95b-6afb-41bb-bd0b-d37e503fc163,0,1,d917c19e-be15-41cc-9c8a-a97c8de85309,d917c19e-be15-41cc-9c8a-a97c8de85309,0,1,47907538-9357-4885-8b50-17f2e16c260f,47907538-9357-4885-8b50-17f2e16c260f,0,1,59eb5919-3c33-48bf-b322-ec78018e4142,59eb5919-3c33-48bf-b322-ec78018e4142,0,1,17e1840f-fef3-4f17-8476-273e6af24cb4,17e1840f-fef3-4f17-8476-273e6af24cb4,0,1,63f308a5-b955-48a5-8052-50c5bede65d0,63f308a5-b955-48a5-8052-50c5bede65d0,0,1,a64566fa-b706-49bc-8277-4531145c400e,a64566fa-b706-49bc-8277-4531145c400e,0,1,1b614b97-5c1d-497a-9574-40114059f836,1b614b97-5c1d-497a-9574-40114059f836,0,1,294c000f-6979-4ed1-bbc7-7402facd9185,294c000f-6979-4ed1-bbc7-7402facd9185,0,1,db607fbc-f785-47d5-9550-577424aa3fe9,db607fbc-f785-47d5-9550-577424aa3fe9,0,1,b7111ddf-a623-4bae-90aa-636148492ca2,b7111ddf-a623-4bae-90aa-636148492ca2,0,1,905d9dcd-5793-4362-8fe8-2edce8c35e32,905d9dcd-5793-4362-8fe8-2edce8c35e32,0,1,a96cb6fd-54e0-4514-9210-7f4636acd336,a96cb6fd-54e0-4514-9210-7f4636acd336,0,1,3580e7a7-95d1-4a8e-bc12-a1449fe03757,3580e7a7-95d1-4a8e-bc12-a1449fe03757,0,1,13759790-6c70-4323-9321-a68b90c51663,13759790-6c70-4323-9321-a68b90c51663,0,1,cbf6f37a-874a-434a-9c76-c357e6acf215,cbf6f37a-874a-434a-9c76-c357e6acf215,0,1,f188a333-9bd8-4c54-99b9-72a8333dc80e,f188a333-9bd8-4c54-99b9-72a8333dc80e,0,1,72edf604-8b73-49d2-a09d-a548c8c69596,72edf604-8b73-49d2-a09d-a548c8c69596,0,1,c6c33e0a-ebaa-4bb0-8a3a-3fe5632c6f47,c6c33e0a-ebaa-4bb0-8a3a-3fe5632c6f47,0,1,01e4c0ce-71ca-4421-a5a6-cd868bbd54fe,01e4c0ce-71ca-4421-a5a6-cd868bbd54fe,0,1,2a659a77-162f-4e1b-8339-695040f04559,2a659a77-162f-4e1b-8339-695040f04559,0,1,af969b02-2d8b-4e48-9dae-f50a332ac05b,af969b02-2d8b-4e48-9dae-f50a332ac05b,0,1,4540062e-7a7b-4114-b96b-2597545cc85c,4540062e-7a7b-4114-b96b-2597545cc85c,0,1,fc98b0f2-7cfb-4a04-8dca-f4a6bd08104f,fc98b0f2-7cfb-4a04-8dca-f4a6bd08104f,0,1,6d6a94e3-77df-4d87-b058-905023fbef4a,6d6a94e3-77df-4d87-b058-905023fbef4a,0,1,6d29693c-8379-46b8-806b-56311826810b,6d29693c-8379-46b8-806b-56311826810b,0,1,4d371b01-b215-4a39-a309-d6d3dc64d9ff,4d371b01-b215-4a39-a309-d6d3dc64d9ff,0,1,d9704b20-c29c-4e7f-b777-0ac9080a5631,d9704b20-c29c-4e7f-b777-0ac9080a5631,0,1,c1372891-0f55-4868-ab97-906eff52be0e,c1372891-0f55-4868-ab97-906eff52be0e,0,1,33e96bda-1708-4ee4-8d4d-3b919bda3e38,33e96bda-1708-4ee4-8d4d-3b919bda3e38,0,1,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,53fb35a7-44ab-42e7-8dba-6fa08bf5ba2c,0,1,93fcaa62-2a19-468b-9128-c7930583fbfd,93fcaa62-2a19-468b-9128-c7930583fbfd,0,1,2d885109-4c96-41c0-a996-785bfd793c2d,2d885109-4c96-41c0-a996-785bfd793c2d,0,1,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,cae8a6f2-bbe9-4b73-b839-9bf8e5e2818d,0,1,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9,0,1,5148d263-de26-4c92-b090-ae59f42dfb05,5148d263-de26-4c92-b090-ae59f42dfb05,0,1,dbefe81f-85cf-4d84-9600-b359598c2543,dbefe81f-85cf-4d84-9600-b359598c2543,0,1,1a624a06-93b8-4d1f-8c14-2061e1e7927c,1a624a06-93b8-4d1f-8c14-2061e1e7927c,0,1,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,4ad54ca8-8e4a-4a35-9537-0395851fcdfb,0,1,d5967e0f-03cd-4190-a702-7e9290eae1eb,d5967e0f-03cd-4190-a702-7e9290eae1eb,0,1,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,27b27cc5-d1ad-4a2a-bcf4-ec2ebb3eba43,0,1,7059b117-714c-4710-aebe-76f88c4d41d5,7059b117-714c-4710-aebe-76f88c4d41d5,0,1,ea050453-4947-40dc-aa2a-503ddd1a235a,ea050453-4947-40dc-aa2a-503ddd1a235a,0,1,37d0e6d4-702e-46f5-ae87-4d393fa0c701,37d0e6d4-702e-46f5-ae87-4d393fa0c701,0,1,1e963c1e-f914-46e1-81d3-90d126fc6f8d,1e963c1e-f914-46e1-81d3-90d126fc6f8d,0,1,3a62d88e-9298-42c0-bd87-c749ecd01d19,3a62d88e-9298-42c0-bd87-c749ecd01d19,0,1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,abbf064e-c6ea-4712-930b-a9fef42e0ee1,0,1,fc13dd80-ce44-4ed1-a9d7-dae44602b954,fc13dd80-ce44-4ed1-a9d7-dae44602b954,0,1,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,a3fe224e-c3ef-4e30-90e4-c4ed5eb11824,0,1,433b23a1-a863-4775-b2f2-1384e8f3cbbb,433b23a1-a863-4775-b2f2-1384e8f3cbbb,0,1,a1677c47-b9a4-427a-972d-9bb2293445b6,a1677c47-b9a4-427a-972d-9bb2293445b6,0,1,e4a328c0-e73b-465d-ae36-38e5a71690fa,e4a328c0-e73b-465d-ae36-38e5a71690fa,0,1,85bebd81-a355-4010-889b-cff6f72dafcb,85bebd81-a355-4010-889b-cff6f72dafcb,0,1,49521f36-fd1b-47dd-81cc-48b6fb651e22,49521f36-fd1b-47dd-81cc-48b6fb651e22,0,1,bc946e21-53bb-4332-8c63-7b0aa78826eb,bc946e21-53bb-4332-8c63-7b0aa78826eb,0,1,4be2bdad-9a43-4593-acbc-a02e9144a89f,4be2bdad-9a43-4593-acbc-a02e9144a89f,0,1,eb4455f2-a5a0-44fb-8302-7312bc32df66,eb4455f2-a5a0-44fb-8302-7312bc32df66,0,1,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,cd6d2ab5-8e5c-4db3-8c8c-0526046a9b68,0,1,9f20e59e-7db8-466f-b965-7045fc3f1489,9f20e59e-7db8-466f-b965-7045fc3f1489,0,1,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,cb057756-d3f7-4c50-a9d0-bac9ca2abd46,0,1,89ac3d39-1915-4e67-a4e4-5a67a155cb75,89ac3d39-1915-4e67-a4e4-5a67a155cb75,0,1,d27b637d-5a51-49ff-bf73-343891534586,d27b637d-5a51-49ff-bf73-343891534586,0,1,b5a073a2-54e2-47c9-b533-f75fd2c9f343,b5a073a2-54e2-47c9-b533-f75fd2c9f343,0,1,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0c8571be-f9b6-4292-add9-980cfe7fa2ec,0,1,989b8ccd-bc05-48c1-9969-b3733028b65f,989b8ccd-bc05-48c1-9969-b3733028b65f,0,1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,6c70b13d-f9d0-459f-8d38-c01c11f356f1,0,1,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,3e427c09-79ed-45f7-b4c9-d9aa7ccc01b2,0,1,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,1a4dd1f5-c2d6-4e06-b428-ab7870810bf3,0,1,bf66612b-aec4-414b-bee6-9bcab145c7cc,bf66612b-aec4-414b-bee6-9bcab145c7cc,0,1,811f356f-554a-4a63-90b6-dedb5fec7c05,811f356f-554a-4a63-90b6-dedb5fec7c05,0,1,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,78fdbce8-8479-4edd-89c0-1bbaf8ffd482,0,1,8eb18de5-8283-4d0c-bb11-b882e78181d5,8eb18de5-8283-4d0c-bb11-b882e78181d5,0,1,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,1491cc2a-b3be-4bcc-a181-ce68d4b5d4cb,0,1,64a86d5d-f925-45ee-82da-76df1cc20729,64a86d5d-f925-45ee-82da-76df1cc20729,0,1,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091,0,1,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,2e7fbea4-57ac-4633-bb39-8725e57bc7ba,0,1,83ae9b22-20ff-4e94-9282-19daf2274328,83ae9b22-20ff-4e94-9282-19daf2274328,0,1,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,dcad5d84-6643-4f0b-9e6e-73fe343db4a7,0,1,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,e1ca1374-6dad-46d3-bb72-b67f3e6b1809,0,1,a92b2b70-7e69-49d1-b921-c9d1b0718f94,a92b2b70-7e69-49d1-b921-c9d1b0718f94,0,1,d57a3300-0f9f-4fe5-b627-01c96b723053,d57a3300-0f9f-4fe5-b627-01c96b723053,0,1,19f690a3-d27b-43c1-94b7-585fc628da05,19f690a3-d27b-43c1-94b7-585fc628da05,0,1,d375fac5-098c-42b5-a0bd-9a4ae7516ada,d375fac5-098c-42b5-a0bd-9a4ae7516ada,0,1,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,29034f3e-d2eb-44e0-ac85-f2ffaf14eb90,0,1,162137ef-dea2-4ace-9e67-897dad0e7c3d,162137ef-dea2-4ace-9e67-897dad0e7c3d,0,1,012fb2f1-1c15-4800-8968-78a90c2a1348,012fb2f1-1c15-4800-8968-78a90c2a1348,0,1,436162a0-263f-4126-aa3a-7508505cc4a8,436162a0-263f-4126-aa3a-7508505cc4a8,0,1,9e4fbc61-8736-435d-bdd4-eb3bbaa14b92,9e4fbc61-8736-435d-bdd4-eb3bbaa14b92,0,1,0b750d40-1ee5-414c-b8a5-244c666787ae,0b750d40-1ee5-414c-b8a5-244c666787ae,0,1,aec8f9e6-d177-45f5-ba55-2d662428c2ae,aec8f9e6-d177-45f5-ba55-2d662428c2ae,0,1,7dfdd08b-7cd9-480c-829d-97f5e7152eec,7dfdd08b-7cd9-480c-829d-97f5e7152eec,0,1,0ff797f5-007d-4379-aa14-5d3f5babeb84,0ff797f5-007d-4379-aa14-5d3f5babeb84,0,1,767176d4-4fe9-4de5-9246-59b7fec09c53,767176d4-4fe9-4de5-9246-59b7fec09c53,0,1,64752b64-80ae-4537-986a-d61423dc546b,64752b64-80ae-4537-986a-d61423dc546b,0,1,8e587969-0263-4789-a501-a6c2e102f88e,8e587969-0263-4789-a501-a6c2e102f88e,0,1,f26bfc01-7d8a-43a7-b869-c2deb18218e5,f26bfc01-7d8a-43a7-b869-c2deb18218e5,0,1,8c72a0b2-20cb-43ff-b010-25256aa8011d,8c72a0b2-20cb-43ff-b010-25256aa8011d,0,1,a913b023-0ec5-4c60-880d-2f8ddad2d5ce,a913b023-0ec5-4c60-880d-2f8ddad2d5ce,0,1,b0bf8af5-d824-459c-bc40-17495406af3c,b0bf8af5-d824-459c-bc40-17495406af3c,0,1,2c37e123-ea35-4501-93e1-2fa295444bec,2c37e123-ea35-4501-93e1-2fa295444bec,0,1,afe96dc2-7840-4010-a7d4-1eeac36f0fd3,afe96dc2-7840-4010-a7d4-1eeac36f0fd3,0,1,02ec2b85-3cc8-45bb-911f-c5f7c8668fd5,02ec2b85-3cc8-45bb-911f-c5f7c8668fd5,0,1,a997a430-3ea8-4fde-9f53-7b507a04c215,a997a430-3ea8-4fde-9f53-7b507a04c215,0,1,f648e19d-026b-4fa7-8e70-1866b27b94f8,f648e19d-026b-4fa7-8e70-1866b27b94f8,0,1,a3b47ee8-b7b9-4bdf-afa8-025447ea9d5b,a3b47ee8-b7b9-4bdf-afa8-025447ea9d5b,0,1,36475bf5-5da6-48ad-8077-4de4426f7e10,36475bf5-5da6-48ad-8077-4de4426f7e10,0,1,d32081fc-47d3-4e66-837e-705c94ba8ca8,d32081fc-47d3-4e66-837e-705c94ba8ca8,0,1,e33df42d-4c64-4475-8294-6b05ecdb4e02,e33df42d-4c64-4475-8294-6b05ecdb4e02,0,1,6094a0ed-2051-4649-ad75-dfeb389d3cbb,6094a0ed-2051-4649-ad75-dfeb389d3cbb,0,1,6944a7e2-b9a1-492f-a6f2-9bf31d97ec78,6944a7e2-b9a1-492f-a6f2-9bf31d97ec78,0,1,f3750ea4-5f9e-4ab3-9495-3f182ecff407,f3750ea4-5f9e-4ab3-9495-3f182ecff407,0,1,14002d51-87d4-4647-92ef-a9b1935cb666,14002d51-87d4-4647-92ef-a9b1935cb666,0,1,e941a39d-1f3c-4e6e-af17-75f92a15dd40,e941a39d-1f3c-4e6e-af17-75f92a15dd40,0,1,d9bbedcb-4872-4183-83c2-6c2aae9634b0,d9bbedcb-4872-4183-83c2-6c2aae9634b0,0,1,72c695c3-66f6-4aa8-8a39-737ec6967a1d,72c695c3-66f6-4aa8-8a39-737ec6967a1d,0,1,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,2beef1e0-7a59-407e-b454-ee2ec38ca4b3,0,1,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,b57a1d6f-8375-4d57-a2c1-f53e25318ddb,0,1,d5d11480-d5c7-4569-80c1-f872655ff084,d5d11480-d5c7-4569-80c1-f872655ff084,0,1,b1e45d36-08e9-430e-976b-03e6e3320c6a,b1e45d36-08e9-430e-976b-03e6e3320c6a,0,1,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,b5384eb7-40e4-4437-b96b-eab9b7b5b8f2,0,1,8e21374f-5a65-406c-856d-2040607da4bc,8e21374f-5a65-406c-856d-2040607da4bc,0,1,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,1b63cbbb-77b1-4e78-a4c7-ddea8ea7294d,0,1,3e5f5167-8978-4191-b0f6-6a262b848b95,3e5f5167-8978-4191-b0f6-6a262b848b95,0,1,ae3aef9e-df3b-4ebc-912d-2bc581063745,ae3aef9e-df3b-4ebc-912d-2bc581063745,0,1,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,5c4ecf15-b92d-4610-b2bb-f2331c5c7528,0,1,a8c09e65-6e10-4772-b264-6ead83d52fe3,a8c09e65-6e10-4772-b264-6ead83d52fe3,0,1,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,eb74ebf0-a9c6-4c4c-b279-5a46f40ea0d3,0,1,d5e1806b-9827-40ab-9cfa-23c22456d137,d5e1806b-9827-40ab-9cfa-23c22456d137,0,1,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,b57b186a-ec1e-46a2-87ae-6ba27793ebf6,0,1,d24170d7-5477-4ec8-acd2-0de8bd2067d6,d24170d7-5477-4ec8-acd2-0de8bd2067d6,0,1,f047da82-7574-4da4-b54e-480195280a11,f047da82-7574-4da4-b54e-480195280a11,0,1,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,4a749e8c-cb35-4bc4-9b31-fb5bc0eab474,0,1,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,da4a0c05-2285-434b-b7f8-83b2a0d7f23d,0,1,ecbe625a-55eb-437a-8dee-33fb034d4c0d,ecbe625a-55eb-437a-8dee-33fb034d4c0d,0,1,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,5d4cefac-5dc4-4d73-8b4b-900a8464fbb2,0,1,84796b00-79db-42ba-94d0-5bf543e09cd6,84796b00-79db-42ba-94d0-5bf543e09cd6,0,1,e85695f1-ec94-42ce-8f80-2bda4c90685b,e85695f1-ec94-42ce-8f80-2bda4c90685b,0,1,6f08cc54-d4b1-4c6f-96dc-e0b6891c81b6,6f08cc54-d4b1-4c6f-96dc-e0b6891c81b6,0,1,948b10b3-0d7c-4dca-8816-75eb86e7881b,948b10b3-0d7c-4dca-8816-75eb86e7881b,0,1,9de91b5a-98e4-414b-b650-b669b0159b49,9de91b5a-98e4-414b-b650-b669b0159b49,0,1,840dc727-288a-4bf2-8b1a-47629d28229c,840dc727-288a-4bf2-8b1a-47629d28229c,0,1,314ac8ca-8845-40c2-b844-91beb05fb601,314ac8ca-8845-40c2-b844-91beb05fb601,0,1,db15717d-1b6a-42fd-9b8f-959e1d5841e9,db15717d-1b6a-42fd-9b8f-959e1d5841e9,0,1,3de3948d-40ff-4e0d-8445-9bf49c916161,3de3948d-40ff-4e0d-8445-9bf49c916161,0,1,37ae1946-9436-47ef-8b8c-17ed0a24971c,37ae1946-9436-47ef-8b8c-17ed0a24971c,0,1,0d3cd7ca-089f-4858-a4a6-0ed373aa77bf,0d3cd7ca-089f-4858-a4a6-0ed373aa77bf,0,1,d844d861-fbe9-4391-89e3-00e505b33b33,d844d861-fbe9-4391-89e3-00e505b33b33,0,1,495ddb5f-f75d-46c9-b134-e925c814b890,495ddb5f-f75d-46c9-b134-e925c814b890,0,1,0a4ded35-1cfa-4e53-91c7-139ee0b94ade,0a4ded35-1cfa-4e53-91c7-139ee0b94ade,0,1,c0688817-fd73-4ead-b9dd-ec966780a2c2,c0688817-fd73-4ead-b9dd-ec966780a2c2,0,1,b1fbfbfe-766f-4018-9491-507748193808,b1fbfbfe-766f-4018-9491-507748193808,0,1,65d9f3a7-6258-49f3-8252-0a60e2735ff3,65d9f3a7-6258-49f3-8252-0a60e2735ff3,0,1,a0ba7e86-b894-4a63-8687-bb2a840fe1ab,a0ba7e86-b894-4a63-8687-bb2a840fe1ab,0,1,e55dfadb-8e12-4808-ad90-e891a4644548,e55dfadb-8e12-4808-ad90-e891a4644548,0,1,a1155588-882f-430d-85a6-19558b5b7256,a1155588-882f-430d-85a6-19558b5b7256,0,1,a792b3dc-ac80-492b-bd94-83eb0438ba9f,a792b3dc-ac80-492b-bd94-83eb0438ba9f,0,1,73a093ea-1927-483b-b6f5-8f0cbd253753,73a093ea-1927-483b-b6f5-8f0cbd253753,0,1,345f04c0-0274-4e79-b523-f1fa3cf0d92a,345f04c0-0274-4e79-b523-f1fa3cf0d92a,0,1,f3a14787-de1b-4b65-8cb1-bc33a785821c,f3a14787-de1b-4b65-8cb1-bc33a785821c,0,1,b9ba3ce3-9059-4135-9d31-725f01907431,b9ba3ce3-9059-4135-9d31-725f01907431,0,1,f637a14d-08ed-4c62-a873-ca36cdcd1e88,f637a14d-08ed-4c62-a873-ca36cdcd1e88,0,1,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,8afa9a0e-04c1-4cac-82bb-6767cc0594d9,0,1,4d2b3767-7c96-44a6-bb1b-ab74b103b90e,4d2b3767-7c96-44a6-bb1b-ab74b103b90e,0,1,fc9fc58f-c888-41f0-9f57-70748b21706e,fc9fc58f-c888-41f0-9f57-70748b21706e,0,1,fc761833-aa85-4c6d-a36c-d1ed060e3bb1,fc761833-aa85-4c6d-a36c-d1ed060e3bb1,0,1,f0ba2ff2-b353-4f84-8e45-23e47ee6c1b6,f0ba2ff2-b353-4f84-8e45-23e47ee6c1b6,0,1,bb8bade2-5c1b-49a6-b66f-79a3ebff86f7,bb8bade2-5c1b-49a6-b66f-79a3ebff86f7,0,1,33596560-3d45-4d3e-b6ec-1c22162110ad,33596560-3d45-4d3e-b6ec-1c22162110ad,0,1,d3e82a06-daae-4f4d-b3f8-45a406e31664,d3e82a06-daae-4f4d-b3f8-45a406e31664,0,1,af76c3c9-d8dc-4156-9e10-80ee02fcf4fe,af76c3c9-d8dc-4156-9e10-80ee02fcf4fe,0,1,ac6a184d-1247-4b54-a023-f0d16daa5fe9,ac6a184d-1247-4b54-a023-f0d16daa5fe9,0,1,f9af5fe6-0b4f-4d48-92a4-1f2a29972155,f9af5fe6-0b4f-4d48-92a4-1f2a29972155,0,1,3ca1682d-5ff5-4b2b-96c2-54d2dd5297a9,3ca1682d-5ff5-4b2b-96c2-54d2dd5297a9,0,1,a687d346-73cf-4aea-a4d0-f29824f0f6f1,a687d346-73cf-4aea-a4d0-f29824f0f6f1,0,1,f51fda72-56d9-4b45-a775-a0e1dfbf3a27,f51fda72-56d9-4b45-a775-a0e1dfbf3a27,0,1,8bf73614-81a4-4702-88b9-3c6f2594d204,8bf73614-81a4-4702-88b9-3c6f2594d204,0,1,b8d4410b-f626-41b8-87c8-67102256bae2,b8d4410b-f626-41b8-87c8-67102256bae2,0,1,484eeb5f-12af-4139-a081-4dcac067a712,484eeb5f-12af-4139-a081-4dcac067a712,0,1,ec61075e-fbcb-494a-b790-81548a212d2b,ec61075e-fbcb-494a-b790-81548a212d2b,0,1,2f3bdc3c-4c5d-4fcb-85bb-932fe1747d98,2f3bdc3c-4c5d-4fcb-85bb-932fe1747d98,0,1,0c444045-302b-4dbd-a9a3-81fd40004948,0c444045-302b-4dbd-a9a3-81fd40004948,0,1,16099d54-e84f-47c5-aaf3-f8ced3cba5e0,16099d54-e84f-47c5-aaf3-f8ced3cba5e0,0,1,39fce130-be22-42d9-8bcd-b162ae00fc7a,39fce130-be22-42d9-8bcd-b162ae00fc7a,0,1,1528b799-1c0f-4244-85e8-e738b827934a,1528b799-1c0f-4244-85e8-e738b827934a,0,1,45d79e4d-8c2a-432b-abb8-fb9046abea40,45d79e4d-8c2a-432b-abb8-fb9046abea40,0,1,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,8f4d2fa9-c6ed-4f85-b3ef-f9214468ffc4,0,1,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,cb73c8c2-3b09-42e9-ac26-1bd51854efb6,0,1,256618cc-0956-4cda-9691-e4ced68a791f,256618cc-0956-4cda-9691-e4ced68a791f,0,1,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,e20593fd-b3e3-41d2-8c8d-97b5d6148fa4,0,1,4b9771a7-b924-4e61-8468-4633e3c54706,4b9771a7-b924-4e61-8468-4633e3c54706,0,1,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,bc846fc8-3c67-45f8-9c5c-69bf1190baf9,0,1,667de710-cee5-4a97-8434-641d199f3b68,667de710-cee5-4a97-8434-641d199f3b68,0,1,f6e85eeb-d81b-4526-9a33-ab77bd447236,f6e85eeb-d81b-4526-9a33-ab77bd447236,0,1,470e37fe-d149-4007-b397-12fc84f93041,470e37fe-d149-4007-b397-12fc84f93041,0,1,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,f8d9068d-8a4e-4b23-b5ca-5b9ddce1f60f,0,1,7175cfa0-885c-4807-98ec-af255dcd55d9,7175cfa0-885c-4807-98ec-af255dcd55d9,0,1,1773ff66-ebe4-46e1-b505-d07d87c7fe3e,1773ff66-ebe4-46e1-b505-d07d87c7fe3e,0,1,f5b66759-8102-4cba-a3fd-ee96db5bc809,f5b66759-8102-4cba-a3fd-ee96db5bc809,0,1,6c205eae-9113-46c1-a245-25d29173646e,6c205eae-9113-46c1-a245-25d29173646e,0,1,4cc4aa90-49fb-4602-9f9c-d4d47d223988,4cc4aa90-49fb-4602-9f9c-d4d47d223988,0,1,66ef1631-277b-4c22-99d7-1434b4dbbb3f,66ef1631-277b-4c22-99d7-1434b4dbbb3f,0,1,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,7cfa5a37-b9f8-43e4-ae33-e3a7251dd052,0,1,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,2f8a5b9d-ab86-492b-85d1-5a28535b2ebc,0,1,898535ff-50cd-464a-aadc-5e4f9de15b04,898535ff-50cd-464a-aadc-5e4f9de15b04,0,1,737f6f1b-9ffc-4916-b378-7321eab1f886,737f6f1b-9ffc-4916-b378-7321eab1f886,0,1,01dedf5b-2cce-4d24-81ea-2e3af82f5794,01dedf5b-2cce-4d24-81ea-2e3af82f5794,0,1,04d8ae53-67d9-40a5-b942-59fdebfd6ed7,04d8ae53-67d9-40a5-b942-59fdebfd6ed7,0,1,8c83a662-50e5-402c-913b-5e548b57201d,8c83a662-50e5-402c-913b-5e548b57201d,0,1,385e209d-65aa-43b1-8591-f92544882740,385e209d-65aa-43b1-8591-f92544882740,0,1,8381bc76-0e0f-4196-9911-ec05730cb1c9,8381bc76-0e0f-4196-9911-ec05730cb1c9,0,1,c224e520-7204-4f4a-aac9-b6221ea9ce44,c224e520-7204-4f4a-aac9-b6221ea9ce44,0,1,771a1900-46be-49fe-a02d-584780de8363,771a1900-46be-49fe-a02d-584780de8363,0,1,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,f81b1f2d-6fde-4861-8fee-1dbe6acf3985,0,1,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,b62eecf6-6ee3-4a70-a4d6-3f064ae35c43,0,1,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,9bf2525c-e8fc-44e6-ac14-7df3208dbb0f,0,1,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,a2faa3f8-5064-4fbf-a90e-26d15c021cd3,0,1,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,527ea8ca-e723-454a-8e9e-f2e7a38e62ee,0,1,59364444-4564-42d9-8b94-01ed1b4a1204,59364444-4564-42d9-8b94-01ed1b4a1204,0,1,ef257b20-da10-4cda-8b9d-7de2d68a2f71,ef257b20-da10-4cda-8b9d-7de2d68a2f71,0,1,de0d41b7-acc0-4ebc-8933-d6b5ad351860,de0d41b7-acc0-4ebc-8933-d6b5ad351860,0,1,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,9ef5dd5e-1f26-4187-90a0-a3ac7aaabc1d,0,1,1a354069-07ea-40e0-bbac-e1b6232750c2,1a354069-07ea-40e0-bbac-e1b6232750c2,0,1,df31548b-0b8e-412b-999a-761970ae3c23,df31548b-0b8e-412b-999a-761970ae3c23,0,1,05135747-43e7-4b61-bc30-57b3289ea923,05135747-43e7-4b61-bc30-57b3289ea923,0,1,6d63728d-3384-4131-b890-1b82d14a04b7,6d63728d-3384-4131-b890-1b82d14a04b7,0,1,6da034af-0481-4a3c-aff9-c50ced6f21d4,6da034af-0481-4a3c-aff9-c50ced6f21d4,0,1,6fe57ea6-fe5e-48b1-bb31-5d42e4c2c6c7,6fe57ea6-fe5e-48b1-bb31-5d42e4c2c6c7,0,1,d07016c8-7d97-42cd-865b-85b49075adfb,d07016c8-7d97-42cd-865b-85b49075adfb,0,1,9202335d-50bb-4282-9438-24c7fb9cf637,9202335d-50bb-4282-9438-24c7fb9cf637,0,1,a62906e5-27f8-4e72-8769-9a3eed6997d7,a62906e5-27f8-4e72-8769-9a3eed6997d7,0,1,6c5d0ac3-6086-434c-812b-1c1158ecc574,6c5d0ac3-6086-434c-812b-1c1158ecc574,0,1,783536d7-c0db-44c9-96e8-58b57804d7c8,783536d7-c0db-44c9-96e8-58b57804d7c8,0,1,a8295435-c2c4-4aff-874b-7412556aa76d,a8295435-c2c4-4aff-874b-7412556aa76d,0,1,f6c4e24b-172b-4ba3-8e3e-988306ade660,f6c4e24b-172b-4ba3-8e3e-988306ade660,0,1,60cd2f20-17cf-4132-b08e-87cf429704b7,60cd2f20-17cf-4132-b08e-87cf429704b7,0,1,9baab24c-a5a3-46f4-ad17-a28d4a49f851,9baab24c-a5a3-46f4-ad17-a28d4a49f851,0,1,d1952319-0e42-4684-a386-fbe7c24526c2,d1952319-0e42-4684-a386-fbe7c24526c2,0,1,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,01cd59fc-8577-4b3c-9d69-6db75e81e7c4,0,1,83b47a9d-d44b-4c40-becd-df74f9cb2e91,83b47a9d-d44b-4c40-becd-df74f9cb2e91,0,1,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,d03e636e-ff88-4e96-bf3c-d795d10cbcb0,0,1,86e2a2eb-160f-4e93-a449-b2f726286d1b,86e2a2eb-160f-4e93-a449-b2f726286d1b,0,1,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,8e6e1f24-83bf-42c2-9eda-b3874c7910c3,0,1,364184c2-ec71-44be-b40c-ba719b4ab0e1,364184c2-ec71-44be-b40c-ba719b4ab0e1,0,1,7ef46c54-ec0c-4211-a750-e5949956b593,7ef46c54-ec0c-4211-a750-e5949956b593,0,1,04823681-875e-459a-b3cf-051c89527f38,04823681-875e-459a-b3cf-051c89527f38,0,1,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,8e115a0c-a17c-4d7e-bd2c-305fb53d09ca,0,1,38265f08-3301-40d1-b630-a319c983e826,38265f08-3301-40d1-b630-a319c983e826,0,1,5175c496-bac7-4c57-9628-793b727aecd0,5175c496-bac7-4c57-9628-793b727aecd0,0,1,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,1453309e-77d0-444d-ac3f-fd7c2cb65c0c,0,1,fc42df4a-93f0-461f-acfe-fea09158030f,fc42df4a-93f0-461f-acfe-fea09158030f,0,1,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,9f0a7909-0b97-48a7-964f-a52cb3c19c4e,0,1,6d002aef-00c9-4069-80df-153151218831,6d002aef-00c9-4069-80df-153151218831,0,1,4fec3a6c-5a99-4763-aa07-d5de8712559e,4fec3a6c-5a99-4763-aa07-d5de8712559e,0,1,968a1202-d271-43e0-bfd4-d38e49ceadd4,968a1202-d271-43e0-bfd4-d38e49ceadd4,0,1,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,c80e2ef7-93b6-4cef-806a-2dfcf2fd80e6,0,1,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,b3b4fbf1-cbf0-4ee2-a490-4d657693479b,0,1,ea61e442-273e-4ce4-a806-8090893729ba,ea61e442-273e-4ce4-a806-8090893729ba,0,1,e7100f2b-d169-4635-ab87-7a2225ff12ee,e7100f2b-d169-4635-ab87-7a2225ff12ee,0,1,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,d6bd5459-6f95-4f9c-8d84-c67bdc716acf,0,1,4a2d2790-debf-4dc2-8216-878d8808d161,4a2d2790-debf-4dc2-8216-878d8808d161,0,1,836d0590-a8ee-40d0-a649-41cf4fae36a6,836d0590-a8ee-40d0-a649-41cf4fae36a6,0,1,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,6dcbb379-d4f5-418a-a3ab-bb7c0e169058,0,1,6ddbc80a-38c8-4eda-8cdf-6d64331818a3,6ddbc80a-38c8-4eda-8cdf-6d64331818a3,0,1,eda3c675-04b7-4c14-b78a-0caa22843ac0,eda3c675-04b7-4c14-b78a-0caa22843ac0,0,1,fc097ab3-8b3e-4b8f-9e51-d888735a69bd,fc097ab3-8b3e-4b8f-9e51-d888735a69bd,0,1,23c2c28b-867e-41d0-ba61-b9ee20fa38d1,23c2c28b-867e-41d0-ba61-b9ee20fa38d1,0,1,e5ddc65a-e886-4ed6-9598-bec30ddb7341,e5ddc65a-e886-4ed6-9598-bec30ddb7341,0,1,6cf48813-8097-44ae-8630-58f5b002ff31,6cf48813-8097-44ae-8630-58f5b002ff31,0,1,e0cee0ee-24b9-400a-95af-c61debec912b,e0cee0ee-24b9-400a-95af-c61debec912b,0,1,578bc873-5e23-4222-a655-7d653d761a4c,578bc873-5e23-4222-a655-7d653d761a4c,0,1,09bccd03-1492-4ebe-bfb4-8ace744d367f,09bccd03-1492-4ebe-bfb4-8ace744d367f,0,1,4d9294db-1abd-4e34-812f-fdcac0cf657d,4d9294db-1abd-4e34-812f-fdcac0cf657d,0,1,14bc3be4-3075-418d-90ec-be5d2686f875,14bc3be4-3075-418d-90ec-be5d2686f875,0,1,adffd81c-a566-4b4f-89d5-6abc705da36f,adffd81c-a566-4b4f-89d5-6abc705da36f,0,1,9f67e6d4-0b7c-4318-b127-7c8b7daf1d1b,9f67e6d4-0b7c-4318-b127-7c8b7daf1d1b,0,1,23ced9be-cb9d-451f-aea7-aa211054bd4d,23ced9be-cb9d-451f-aea7-aa211054bd4d,0,1,3991175c-0152-44c6-8e1c-4090d960050a,3991175c-0152-44c6-8e1c-4090d960050a,0,1,aa2760cf-b8cd-4eb3-b2f1-0e1fbdec09a8,aa2760cf-b8cd-4eb3-b2f1-0e1fbdec09a8,0,1,d1fabcdd-c072-4341-85d4-9a9ba168f301,d1fabcdd-c072-4341-85d4-9a9ba168f301,0,1,030a9c93-322b-4421-ad70-0acaa94870a2,030a9c93-322b-4421-ad70-0acaa94870a2,0,1,7121d241-9450-4bf2-b7ff-a0e963bbfd0a,7121d241-9450-4bf2-b7ff-a0e963bbfd0a,0,1,01a3ab71-56fa-4ddc-a5a3-9c923ee9c74a,01a3ab71-56fa-4ddc-a5a3-9c923ee9c74a,0,1,5c660f50-c63a-466d-bb32-de5699ad8a95,5c660f50-c63a-466d-bb32-de5699ad8a95,0,1,032587fa-2993-463c-af9f-bdd67f12604f,032587fa-2993-463c-af9f-bdd67f12604f,0,1,64d4aaed-e068-431b-bed0-faef7b5358f3,64d4aaed-e068-431b-bed0-faef7b5358f3,0,1,4507a92e-abb6-4329-88b2-3429bc694bc6,4507a92e-abb6-4329-88b2-3429bc694bc6,0,1,2694c1b4-536b-4187-adf6-0f8757aaae76,2694c1b4-536b-4187-adf6-0f8757aaae76,0,1,e523f88b-b3de-476e-a3cc-592970492dec,e523f88b-b3de-476e-a3cc-592970492dec,0,1,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,efb6b3b6-d57b-469f-a7c2-f4e0308d0c7f,0,1,00c29d0d-338a-4eb0-9e0f-5b64f6521e6e,00c29d0d-338a-4eb0-9e0f-5b64f6521e6e,0,1,ea0843f4-60fb-4d44-abf4-0021867c636b,ea0843f4-60fb-4d44-abf4-0021867c636b,0,1,59aadc03-adbc-481f-89bc-d7f391789522,59aadc03-adbc-481f-89bc-d7f391789522,0,1,254f6ccd-0451-4231-91c9-4abe57b647be,254f6ccd-0451-4231-91c9-4abe57b647be,0,1,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,1e2d790c-0076-413a-b5fb-f25c01ab6ad5,0,1,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0dcc537b-76b3-4e73-b060-6cbdcf6345db,0,1,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,ae662b53-e11e-4b59-be52-b9d4ab00c4a4,0,1,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,ce55df94-71e4-46ac-9b3b-bdae5d336b0a,0,1,7601fa7e-079a-4347-abea-e161b2d00783,7601fa7e-079a-4347-abea-e161b2d00783,0,1,ee84cb40-f82d-4558-91be-229d68ad9f4a,ee84cb40-f82d-4558-91be-229d68ad9f4a,0,1,101a7eff-9556-4165-879a-a7c8a852e236,101a7eff-9556-4165-879a-a7c8a852e236,0,1,01775932-3603-4efc-9235-abdb97490dea,01775932-3603-4efc-9235-abdb97490dea,0,1,7637844b-4059-4f8a-8436-b4f4e8cb4f74,7637844b-4059-4f8a-8436-b4f4e8cb4f74,0,1,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,b6bb4cbe-b6fa-4d28-b372-0b959951ad4d,0,1,0ee5b788-61dc-464b-86da-f985df7704b6,0ee5b788-61dc-464b-86da-f985df7704b6,0,1,2375c6a8-9799-4b7c-a48d-091a90c67693,2375c6a8-9799-4b7c-a48d-091a90c67693,0,1,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,3d3c3360-4502-4ad4-bbe9-35d4ba9b54b3,0,1,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,9b0671c6-6e92-42e6-9cf4-13d4be11f27d,0,1,63c6522f-be04-422a-b4f4-0f55f58b09a8,63c6522f-be04-422a-b4f4-0f55f58b09a8,0,1,be919dc1-a377-43e1-82e6-ce946cabdd55,be919dc1-a377-43e1-82e6-ce946cabdd55,0,1,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,6b17a0fc-4d6f-4189-9067-c58a95f04dd7,0,1,9ded532e-9e60-4895-a4c5-4ea6697aa83c,9ded532e-9e60-4895-a4c5-4ea6697aa83c,0,1,106c5159-ffc7-4059-b3e3-acf74326a44f,106c5159-ffc7-4059-b3e3-acf74326a44f,0,1,d39fd717-1a69-4fd3-889e-4fa9abefea1c,d39fd717-1a69-4fd3-889e-4fa9abefea1c,0,1,5b85e6df-7493-4201-97ad-2aea14de6006,5b85e6df-7493-4201-97ad-2aea14de6006,0,1,061e6c0f-ba52-40ec-96ad-2eba3eee3097,061e6c0f-ba52-40ec-96ad-2eba3eee3097,0,1,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,d77e3c65-e9fd-4ba7-885f-a8a2f4c827d2,0,1,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,4fb86bf3-02ad-4f0e-85a9-98be6c350a06,0,1,4840753b-e2e1-4e67-b35f-2f5eab7754f5,4840753b-e2e1-4e67-b35f-2f5eab7754f5,0,1,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,4095c9e7-83ab-4db9-a2d0-a9f4ef9ee53e,0,1,6ffd9c17-d90b-4d19-b337-0fbc2c717557,6ffd9c17-d90b-4d19-b337-0fbc2c717557,0,1,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,9a11a6bd-0c13-4be2-9e34-b12b7554f3c9,0,1,3bb83275-7a0e-420f-8c6b-028038f11a8c,3bb83275-7a0e-420f-8c6b-028038f11a8c,0,1,e1950a23-f6e7-48af-b78a-77aa61f08ece,e1950a23-f6e7-48af-b78a-77aa61f08ece,0,1,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,1cc3d7c4-9178-4a40-86ea-2bbc1f5aa69f,0,1,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,790735cf-f6e2-4b0d-bb16-c5b9ea95efae,0,1,5d726fa3-bde0-4d97-a577-415857bbb5c1,5d726fa3-bde0-4d97-a577-415857bbb5c1,0,1,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,f63d0e2d-4685-4ac5-b22c-1b83e3ab955f,0,1,49068231-202c-4ac6-a39a-69207cb597dd,49068231-202c-4ac6-a39a-69207cb597dd,0,1,5a470575-e012-42ad-9ad7-53930a8e843f,5a470575-e012-42ad-9ad7-53930a8e843f,0,1,5872d4ed-6503-422d-bcf9-63a8df3e777d,5872d4ed-6503-422d-bcf9-63a8df3e777d,0,1,e21cda29-2579-485e-a207-20b76f719c80,e21cda29-2579-485e-a207-20b76f719c80,0,1,1b232a57-2833-42c6-b318-38dae2af1ab2,1b232a57-2833-42c6-b318-38dae2af1ab2,0,1,007ade8c-b102-408b-b877-b531e046560b,007ade8c-b102-408b-b877-b531e046560b,0,1,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,a8dfea6c-0c21-456d-96ab-f4bb5d579b13,0,1,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,305f1ef1-4f9c-40a2-a978-3a4c0ecf75d4,0,1,eb69c41a-392d-43bb-9b67-a0adcb651b1e,eb69c41a-392d-43bb-9b67-a0adcb651b1e,0,1,fbd63dbc-7318-45f1-9aa5-51c2f3a9190b,fbd63dbc-7318-45f1-9aa5-51c2f3a9190b,0,1,93b01c88-48a2-4753-b443-0e9892395a8f,93b01c88-48a2-4753-b443-0e9892395a8f,0,1,0b7f8e05-bb34-47cc-9775-04362e814316,0b7f8e05-bb34-47cc-9775-04362e814316,0,1,e71e0297-3709-4247-933e-18a6350cbf39,e71e0297-3709-4247-933e-18a6350cbf39,0,1,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0b32e372-c6ad-4dda-acd1-8b5d58537d37,0,1,602dac6f-abe6-407a-92d3-7f1613e5dda6,602dac6f-abe6-407a-92d3-7f1613e5dda6,0,1,df6417d1-c722-4a87-a543-5d2c31795b20,df6417d1-c722-4a87-a543-5d2c31795b20,0,1,526a85c9-3a8d-4044-adb9-fd0689c70601,526a85c9-3a8d-4044-adb9-fd0689c70601,0,1,c4203772-580c-4db1-9bde-8925faa90688,c4203772-580c-4db1-9bde-8925faa90688,0,1,9ab0fe18-4dd7-4eed-958d-8537d4896d84,9ab0fe18-4dd7-4eed-958d-8537d4896d84,0,1,2278dc46-46ce-4d00-9289-4de1640782d7,2278dc46-46ce-4d00-9289-4de1640782d7,0,1,1f983a04-c2df-40bb-bee2-b326474d89f8,1f983a04-c2df-40bb-bee2-b326474d89f8,0,1,f03f1b68-e924-4c06-b0aa-8033a9a2f592,f03f1b68-e924-4c06-b0aa-8033a9a2f592,0,1,5e453d10-235d-4e53-86b1-20eed3247992,5e453d10-235d-4e53-86b1-20eed3247992,0,1,0eefb856-0fb4-4c3e-bb08-e88b03a44065,0eefb856-0fb4-4c3e-bb08-e88b03a44065,0,1,21ba8b9f-de97-40a1-8ea1-85a29e8e53ef,21ba8b9f-de97-40a1-8ea1-85a29e8e53ef,0,1,738228ad-c30a-42f4-a6ad-bde0edba6266,738228ad-c30a-42f4-a6ad-bde0edba6266,0,1,c08aea99-ee33-488c-9ba0-f8b24a6d1d04,c08aea99-ee33-488c-9ba0-f8b24a6d1d04,0,1,df8e8344-d7bc-4cf2-b498-88d3abb66c09,df8e8344-d7bc-4cf2-b498-88d3abb66c09,0,1,e6d13536-3021-45b2-a8e1-bdb0e0be850c,e6d13536-3021-45b2-a8e1-bdb0e0be850c,0,1,b49f538c-b2b2-4a1f-a6b4-a911033b1666,b49f538c-b2b2-4a1f-a6b4-a911033b1666,0,1,794e952b-6b03-4a1e-ad3f-453376bccf45,794e952b-6b03-4a1e-ad3f-453376bccf45,0,1,3e2a0713-e6ed-4d38-8036-72f7b62ca64a,3e2a0713-e6ed-4d38-8036-72f7b62ca64a,0,1,5cd997ba-f123-47b3-8cde-fbba45a4a11c,5cd997ba-f123-47b3-8cde-fbba45a4a11c,0,1,0d746247-c4f4-47a5-a373-45ec4023d3ef,0d746247-c4f4-47a5-a373-45ec4023d3ef,0,1,a25bcf4e-1a47-472b-9f93-f6ab45abf461,a25bcf4e-1a47-472b-9f93-f6ab45abf461,0,1,958b7dab-0aba-423f-ab81-b70f2b93a027,958b7dab-0aba-423f-ab81-b70f2b93a027,0,1,a17ec3be-2255-42af-a6ee-d3fb8bb00519,a17ec3be-2255-42af-a6ee-d3fb8bb00519,0,1,add0b22d-ff5a-41f7-88a1-ef34880e50c9,add0b22d-ff5a-41f7-88a1-ef34880e50c9,0,1,7dc10935-69aa-4f2b-8b01-798dbbaa6cc6,7dc10935-69aa-4f2b-8b01-798dbbaa6cc6,0,1,9c15b35b-d658-4e52-a441-3b79294d65eb,9c15b35b-d658-4e52-a441-3b79294d65eb,0,1,d5fdac2a-e3aa-4859-8485-0cf114748c87,d5fdac2a-e3aa-4859-8485-0cf114748c87,0,1,eb3d278b-e8fe-4d43-90a8-dd361009196f,eb3d278b-e8fe-4d43-90a8-dd361009196f,0,1,d30fbeae-e97f-422d-b5c4-289aaeaa2ae4,d30fbeae-e97f-422d-b5c4-289aaeaa2ae4,0,1,a3582d0c-6a63-442e-8422-83f251df0ed9,a3582d0c-6a63-442e-8422-83f251df0ed9,0,1,9aae5d2a-81b7-4f1c-8b65-b3e4a8a9bc4d,9aae5d2a-81b7-4f1c-8b65-b3e4a8a9bc4d,0,1,4b714d9c-26f4-46e8-ac79-471522b3853b,4b714d9c-26f4-46e8-ac79-471522b3853b,0,1,411489de-f907-4d60-a776-64bb0aa12a0e,411489de-f907-4d60-a776-64bb0aa12a0e,0,1,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,58d9ba60-a0c7-405d-a76e-0b0a796daaf3,0,1,9c47670e-9eb9-49ec-876c-cd545aaa093c,9c47670e-9eb9-49ec-876c-cd545aaa093c,0,1,f57e74e6-75e8-4136-911e-86793036a077,f57e74e6-75e8-4136-911e-86793036a077,0,1,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,8492ee20-3f15-45d8-b70d-19b5cd6f1ae3,0,1,3ba8c378-ef3d-4646-90b3-6d8078aa623e,3ba8c378-ef3d-4646-90b3-6d8078aa623e,0,1,2dd7eb87-8130-425a-be13-85235508cde6,2dd7eb87-8130-425a-be13-85235508cde6,0,1,8a62c997-4fda-4464-90bd-ab719161949f,8a62c997-4fda-4464-90bd-ab719161949f,0,1,28af52dd-3144-428b-956d-b6f27863ec4a,28af52dd-3144-428b-956d-b6f27863ec4a,0,1,c34c330a-991a-4ec9-a0ad-73c04c6a6fc3,c34c330a-991a-4ec9-a0ad-73c04c6a6fc3,0,1,8ac94328-2300-4681-9c35-fd7e2f830310,8ac94328-2300-4681-9c35-fd7e2f830310,0,1,da0ee165-1917-466b-ac5c-16c28e2318bb,da0ee165-1917-466b-ac5c-16c28e2318bb,0,1,4868cb2e-0892-42bc-9de1-73cb8a15a96f,4868cb2e-0892-42bc-9de1-73cb8a15a96f,0,1,e8b80879-33b3-4c45-ad68-1acabcf91faf,e8b80879-33b3-4c45-ad68-1acabcf91faf,0,1,239601eb-e8de-4d58-a32a-01ee52f6e698,239601eb-e8de-4d58-a32a-01ee52f6e698,0,1,11370667-bec5-4a2d-8aa1-97f4d795718f,11370667-bec5-4a2d-8aa1-97f4d795718f,0,1,2032162d-fbb5-4e6a-be72-cda79869b9ff,2032162d-fbb5-4e6a-be72-cda79869b9ff,0,1,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,95a8e790-25ef-4ef3-a44a-f150bf1ceb1f,0,1,707e64f3-ad8b-470a-aa4f-57fddecc2159,707e64f3-ad8b-470a-aa4f-57fddecc2159,0,1,682da7d7-6e27-4133-90fc-a445c156f908,682da7d7-6e27-4133-90fc-a445c156f908,0,1,64751704-f39d-4859-adc6-8168897d6aec,64751704-f39d-4859-adc6-8168897d6aec,0,1,10543f9a-4e3f-427a-b36a-9c66709dd6fb,10543f9a-4e3f-427a-b36a-9c66709dd6fb,0,1,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,973967e5-1702-4fb8-ba36-70fd5b3b7e7c,0,1,96ab5424-7be1-416d-b74d-d0c815726b1f,96ab5424-7be1-416d-b74d-d0c815726b1f,0,1,3714e794-ddef-4ad9-a933-6130bbc84545,3714e794-ddef-4ad9-a933-6130bbc84545,0,1,f0dca5f2-1479-42bf-b895-9abd345522f5,f0dca5f2-1479-42bf-b895-9abd345522f5,0,1,8eaa91e0-88d9-4e4e-b2d6-752696bafadf,8eaa91e0-88d9-4e4e-b2d6-752696bafadf,0,1,93d6dda2-dd7c-42d1-b9bc-284929931585,93d6dda2-dd7c-42d1-b9bc-284929931585,0,1,282b089c-7411-40d6-9a0a-ceaf6abb5586,282b089c-7411-40d6-9a0a-ceaf6abb5586,0,1,abc44046-a839-4c4a-8161-ecba29abc27d,abc44046-a839-4c4a-8161-ecba29abc27d,0,1,678188aa-76e7-49bc-a4be-1c55ccd625b1,678188aa-76e7-49bc-a4be-1c55ccd625b1,0,1,12dd81dd-31f5-47f2-a163-ea6c670299c5,12dd81dd-31f5-47f2-a163-ea6c670299c5,0,1,1b9e77bf-639a-4e81-a0fd-4f2bd66feeba,1b9e77bf-639a-4e81-a0fd-4f2bd66feeba,0,1,8238c710-09ff-473e-b0ed-40b31bfccab8,8238c710-09ff-473e-b0ed-40b31bfccab8,0,1,fe59f9ba-11e3-41ba-ac6f-4b4e3dbf35ae,fe59f9ba-11e3-41ba-ac6f-4b4e3dbf35ae,0,1,15845f89-0f9e-4a93-b7e8-ef101694b1b8,15845f89-0f9e-4a93-b7e8-ef101694b1b8,0,1,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,6c27eece-2f8e-48eb-b9c7-f9c414ee15bd,0,1,60f8daf5-06c2-4db6-8fea-5cbb72130113,60f8daf5-06c2-4db6-8fea-5cbb72130113,0,1,e389b86a-7a48-4b31-b5cb-27b3d7dfed82,e389b86a-7a48-4b31-b5cb-27b3d7dfed82,0,1,91e7c98e-fadf-4c08-bd76-1e4e4d140265,91e7c98e-fadf-4c08-bd76-1e4e4d140265,0,1,b3415b4a-d8de-4536-aa4b-82e75fd986ee,b3415b4a-d8de-4536-aa4b-82e75fd986ee,0,1,8247a93d-c2d3-4c9b-a442-619240d35113,8247a93d-c2d3-4c9b-a442-619240d35113,0,1,acc996ab-672a-4602-b7ad-8eee83557e61,acc996ab-672a-4602-b7ad-8eee83557e61,0,1,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,bf9e9c2f-e5dc-4f82-8e9a-7f35e3ad9a0b,0,1,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,371361b6-15fd-4e62-9f60-cc8ee3fbacf0,0,1,97745768-ed35-44f1-beba-abb8b28a29ae,97745768-ed35-44f1-beba-abb8b28a29ae,0,1,69364942-bcd1-4b06-9b57-fa59b4e7c552,69364942-bcd1-4b06-9b57-fa59b4e7c552,0,1,ab201c5f-4134-42cf-a528-c1c4df02f2d7,ab201c5f-4134-42cf-a528-c1c4df02f2d7,0,1,303fb7b5-6a23-40ea-ae12-b54f4ebae026,303fb7b5-6a23-40ea-ae12-b54f4ebae026,0,1,634cd26b-78f1-4446-8aad-b96ed16e5329,634cd26b-78f1-4446-8aad-b96ed16e5329,0,1,d8e62f1a-92ca-4971-9609-e79da798c083,d8e62f1a-92ca-4971-9609-e79da798c083,0,1,6b0ddefa-ee70-4b27-989f-e23c734ab943,6b0ddefa-ee70-4b27-989f-e23c734ab943,0,1,ee873280-28ea-41fb-af52-c10c2018cbe4,ee873280-28ea-41fb-af52-c10c2018cbe4,0,1,a388ed70-a68d-4713-a280-881315351f07,a388ed70-a68d-4713-a280-881315351f07,0,1,fd9e84c9-2322-4aa7-b5fe-31d0c8f373c7,fd9e84c9-2322-4aa7-b5fe-31d0c8f373c7,0,1,2c81edc8-02b9-42dd-be4d-e7ad595421a0,2c81edc8-02b9-42dd-be4d-e7ad595421a0,0,1,83cb38ff-1174-449f-b8ce-44d5e064f2df,83cb38ff-1174-449f-b8ce-44d5e064f2df,0,1,d11b51ac-708a-4ee1-b73e-ae62e162101e,d11b51ac-708a-4ee1-b73e-ae62e162101e,0,1,17a50950-6091-4306-9f15-2a621a29c1a0,17a50950-6091-4306-9f15-2a621a29c1a0,0,1,32012b27-1b43-49be-b9af-df0c877e7a4c,32012b27-1b43-49be-b9af-df0c877e7a4c,0,1,e97d5152-9e58-4a91-a691-b4d358f1c89d,e97d5152-9e58-4a91-a691-b4d358f1c89d,0,1,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,1de4d7ee-7ddd-44db-bf7f-1b99b653652c,0,1,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,dfe624ac-9f49-46dd-b821-1f1f5b5e0d15,0,1,296c478b-4103-46cb-9d14-97f59034ffd4,296c478b-4103-46cb-9d14-97f59034ffd4,0,1,fb918a68-f86d-46c0-9078-61d2b32b5aef,fb918a68-f86d-46c0-9078-61d2b32b5aef,0,1,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,9ca4d0c4-f5d3-4748-bf73-f3cd1bc4ac46,0,1,1ddfc773-4f3c-4764-978e-585aab4666de,1ddfc773-4f3c-4764-978e-585aab4666de,0,1,e424d122-1dbb-4545-975c-177997129f2e,e424d122-1dbb-4545-975c-177997129f2e,0,1,c83bc626-dfdd-4451-92b0-b53eed40f534,c83bc626-dfdd-4451-92b0-b53eed40f534,0,1,7b9b1d11-4f78-4113-8fca-1a3a30953aef,7b9b1d11-4f78-4113-8fca-1a3a30953aef,0,1,7f84cb85-c3e4-4b53-b829-3b1e216f978a,7f84cb85-c3e4-4b53-b829-3b1e216f978a,0,1,7e621ecc-7d2b-42bf-a502-f8e59de56b63,7e621ecc-7d2b-42bf-a502-f8e59de56b63,0,1,798fd445-d02e-4e97-890a-0283f33317cf,798fd445-d02e-4e97-890a-0283f33317cf,0,1,095583ca-010d-43ad-8c7a-8938fa4cb761,095583ca-010d-43ad-8c7a-8938fa4cb761,0,1,178d210c-e847-4805-a8d4-31acdf4983af,178d210c-e847-4805-a8d4-31acdf4983af,0,1,aa214d9f-23b1-4996-8a43-9010dceeb53d,aa214d9f-23b1-4996-8a43-9010dceeb53d,0,1,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,26a5527e-dc2b-45a4-a51c-b1dfb31fa8a2,0,1,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,aefc3149-90ee-4ccc-8fb6-b1f6096237f6,0,1,d9d103bd-1dd6-48a9-8869-6c8485705393,d9d103bd-1dd6-48a9-8869-6c8485705393,0,1,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,cf2f7e1f-9b0b-4ae9-9c94-99d80bf95eae,0,1,ff0e8487-bdbf-4b21-877e-00008c81bc09,ff0e8487-bdbf-4b21-877e-00008c81bc09,0,1,39c9f8ac-56a0-4057-8359-7228bf97184a,39c9f8ac-56a0-4057-8359-7228bf97184a,0,1,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,763fbb4c-cab2-4c71-ba16-7e2ce8c3dc97,0,1,2c0dd892-1d3e-4497-850b-080bdb9c59d8,2c0dd892-1d3e-4497-850b-080bdb9c59d8,0,1,3b727d49-c9ed-4d9e-af61-c13b9a170c75,3b727d49-c9ed-4d9e-af61-c13b9a170c75,0,1,1b264744-bdcd-4c5c-932b-0ac4b990dd78,1b264744-bdcd-4c5c-932b-0ac4b990dd78,0,1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,a2dbf20e-1fe9-463d-8fd4-76ce2e4854d1,0,1,37bde288-8e02-4127-bd80-de8ae7590a14,37bde288-8e02-4127-bd80-de8ae7590a14,0,1,a9b8e517-78cd-4428-b2fc-9e16af0069d7,a9b8e517-78cd-4428-b2fc-9e16af0069d7,0,1,5c592024-c009-4674-bbb8-283669e673ef,5c592024-c009-4674-bbb8-283669e673ef,0,1,e76f16b9-77a0-4033-90d0-6e04e4494747,e76f16b9-77a0-4033-90d0-6e04e4494747,0,1,cfb221fc-8639-4e15-9a78-f7837d657a99,cfb221fc-8639-4e15-9a78-f7837d657a99,0,1,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,4e61c8c3-756e-4937-adf6-6a1e9a89fc6a,0,1,022147c1-1ebe-4c8d-b367-4c47115b101d,022147c1-1ebe-4c8d-b367-4c47115b101d,0,1,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,2975d4c8-90d8-4791-8bc2-4adaa328ddc0,0,1,fca6b230-a38e-4791-9cc5-3d215f79dc6f,fca6b230-a38e-4791-9cc5-3d215f79dc6f,0,1,04e87de4-940a-4533-8c81-8f145b201dc0,04e87de4-940a-4533-8c81-8f145b201dc0,0,1,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,573ef4f4-e9e6-4b7c-944d-30808a6a00b7,0,1,fa488af9-a5ec-47d8-8661-fa5058a60a6b,fa488af9-a5ec-47d8-8661-fa5058a60a6b,0,1,97cc84c6-3565-474c-a028-83acb5390446,97cc84c6-3565-474c-a028-83acb5390446,0,1,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,9bf07c3e-7fdf-4a4f-ab00-98c7668349bd,0,1,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,ebbf6957-6ff6-4dc2-9e20-23d1da091f05,0,1,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,9b80acf6-6bf0-42c4-abb3-2fa2fcf4088c,0,1,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,1dcec107-9d5f-4b69-ad65-cc4cb1f27a9c,0,1,b366d7eb-626c-4c0c-b4cc-c392763e6e94,b366d7eb-626c-4c0c-b4cc-c392763e6e94,0,1,4c7e24aa-726a-4595-82ad-ef1e525b14fa,4c7e24aa-726a-4595-82ad-ef1e525b14fa,0,1,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,b9e5bb39-ed0a-4e12-b7e4-2d9b5015bf9c,0,1,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,dbced4aa-6432-4f0c-a99a-5a3e7b0f6755,0,1,e849e46c-2ce6-427b-92bc-06d7997f59bf,e849e46c-2ce6-427b-92bc-06d7997f59bf,0,1,5a971dc0-28bf-4426-9426-9f456aea080a,5a971dc0-28bf-4426-9426-9f456aea080a,0,1,1e7684f0-1b3b-4a32-8602-dd0672c5a800,1e7684f0-1b3b-4a32-8602-dd0672c5a800,0,1,ab178a93-8570-43b6-ae42-f34a7cc4f359,ab178a93-8570-43b6-ae42-f34a7cc4f359,0,1,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,4c82f31d-7a98-47dd-89dc-1846cb15bf3b,0,1,168e3189-2676-4cdb-bc9d-78d85df51faf,168e3189-2676-4cdb-bc9d-78d85df51faf,0,1,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,ecf1a87f-4ca4-4efb-a84c-b2db1b0e8829,0,1,470bbff8-20d0-475c-a61a-1a09ac14c2db,470bbff8-20d0-475c-a61a-1a09ac14c2db,0,1,6ea25680-c4db-4717-9498-62420ca16970,6ea25680-c4db-4717-9498-62420ca16970,0,1,14e20d48-635e-4c52-9099-e743323fc190,14e20d48-635e-4c52-9099-e743323fc190,0,1,c37a660e-16c5-495e-9486-e61bcb693fa0,c37a660e-16c5-495e-9486-e61bcb693fa0,0,1,8f44ebad-1160-474e-a566-fb9da55ffcba,8f44ebad-1160-474e-a566-fb9da55ffcba,0,1,11cf336e-7890-4972-bf71-32d7416ff647,11cf336e-7890-4972-bf71-32d7416ff647,0,1,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,4c4d61a6-6bb6-4a15-9a81-25fdcf96ec4b,0,1,14bd3392-36cd-4ed0-8847-44375d6fb861,14bd3392-36cd-4ed0-8847-44375d6fb861,0,1,759ede7a-e832-44e6-9b11-5bfb3c507820,759ede7a-e832-44e6-9b11-5bfb3c507820,0,1,64484611-b32c-4155-a063-7df5a3f924dd,64484611-b32c-4155-a063-7df5a3f924dd,0,1,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,2f2ac0db-db86-4ed2-a55a-b245b4d00d70,0,1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,821b93bd-f0dd-4468-972a-d9b2b4de72f1,0,1,56900066-90e3-40c0-b64a-8f7964a4dfc1,56900066-90e3-40c0-b64a-8f7964a4dfc1,0,1,56f0c4d6-9b13-486a-9586-05e657dca8be,56f0c4d6-9b13-486a-9586-05e657dca8be,0,1,c795c0d3-6a0d-4311-9821-df320663727e,c795c0d3-6a0d-4311-9821-df320663727e,0,1,512b8d89-8798-4549-9e79-b9c3f7d9098f,512b8d89-8798-4549-9e79-b9c3f7d9098f,0,1,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,e1fe71f8-f37c-4705-aca1-c25e2bdc5db6,0,1,7f356abf-9045-4a76-89f3-8b52d467122a,7f356abf-9045-4a76-89f3-8b52d467122a,0,1,625a61ac-4ad0-4b31-aa67-9f864154b9c4,625a61ac-4ad0-4b31-aa67-9f864154b9c4,0,1,51fa8d01-44a1-4e75-9b04-6a2504972f08,51fa8d01-44a1-4e75-9b04-6a2504972f08,0,1,73dae482-a1ee-4c57-8859-2dd8e8635a49,73dae482-a1ee-4c57-8859-2dd8e8635a49,0,1,e4ea640f-e3a4-44ad-b17d-51f32136372e,e4ea640f-e3a4-44ad-b17d-51f32136372e,0,1,7dca913d-e37a-4740-8e3d-677d379605ee,7dca913d-e37a-4740-8e3d-677d379605ee,0,1,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,bd1cf7ef-f3e2-4441-836b-16f2cc227aa9,0,1,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,c9035b0f-cfc4-4761-9ba0-a8aacfaa9c72,0,1,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,7efb0bf4-d40c-417b-b9bc-f4a5af66ec09,0,1,4cd4694f-17f8-43ba-8940-07628bd937fe,4cd4694f-17f8-43ba-8940-07628bd937fe,0,1,7df6c94b-3cfe-4764-988e-858d733e35d9,7df6c94b-3cfe-4764-988e-858d733e35d9,0,1,8b251c7d-2d55-4734-a1da-7f1115d95080,8b251c7d-2d55-4734-a1da-7f1115d95080,0,1,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,87b3153d-bef0-4441-8b1c-a5fc7ba4c36a,0,1,5a8c3621-595a-4168-8bba-a7f8d499e47e,5a8c3621-595a-4168-8bba-a7f8d499e47e,0,1,fc4cfed6-e492-4420-b357-8143a8c2a41a,fc4cfed6-e492-4420-b357-8143a8c2a41a,0,1,4311a250-64af-443e-a711-93b7c41175cf,4311a250-64af-443e-a711-93b7c41175cf,0,1,804b6c57-1d7b-4927-be5b-84b7959fe55e,804b6c57-1d7b-4927-be5b-84b7959fe55e,0,1,f2655d85-79ea-4736-8f41-94a4f9b2b998,f2655d85-79ea-4736-8f41-94a4f9b2b998,0,1,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,21258174-3a95-4c10-bb8f-4d6db0c5ae0e,0,1,a8eb5ed9-df99-405b-afad-eeaa98956eee,a8eb5ed9-df99-405b-afad-eeaa98956eee,0,1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,a64d4b1b-fae4-43ae-ae98-bdc4e59a94c1,0,1,26a1279f-91f0-4632-ad7c-21cf2f524208,26a1279f-91f0-4632-ad7c-21cf2f524208,0,1,bf751ed0-ee47-4eaf-81bd-f0da00bef343,bf751ed0-ee47-4eaf-81bd-f0da00bef343,0,1,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,14b65111-4c0e-4521-9fcd-2a8d4aaa6b4b,0,1,1f1def7c-e0ee-4963-afea-1751bf1b812c,1f1def7c-e0ee-4963-afea-1751bf1b812c,0,1,9a4c0898-ab56-425c-8191-5ab90f4e12bf,9a4c0898-ab56-425c-8191-5ab90f4e12bf,0,1,6841ec47-7a84-441a-b975-69d089072ce7,6841ec47-7a84-441a-b975-69d089072ce7,0,1,ead4001a-0d8a-4b95-8212-2a40e5aa6659,ead4001a-0d8a-4b95-8212-2a40e5aa6659,0,1,22165c8a-2179-4cd5-b195-bd2721e9e232,22165c8a-2179-4cd5-b195-bd2721e9e232,0,1,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,b28c3a8f-8cad-45eb-90d3-6d90a0b3f881,0,1,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,3c5974ec-f76d-401c-a8e4-d51c7cd4c4fb,0,1,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,609a9bc9-4225-4fe1-91fa-90c9c2e5cfba,0,1,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,d22ed498-c7df-45bb-869f-f16d3aa2d3d3,0,1,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,4a966f6e-87dd-4dae-9cc0-dbabee9424dc,0,1,9d9debfd-4a10-4f09-9d09-2aa5e058b525,9d9debfd-4a10-4f09-9d09-2aa5e058b525,0,1,fc19586c-d89c-495c-b473-6f85967ed48e,fc19586c-d89c-495c-b473-6f85967ed48e,0,1,2ac7c701-a281-4e77-a5f8-294526021e2d,2ac7c701-a281-4e77-a5f8-294526021e2d,0,1,979df549-889d-496a-b6ce-c56d54c771b5,979df549-889d-496a-b6ce-c56d54c771b5,0,1,91b320d8-3426-44d3-97d7-c200287d7343,91b320d8-3426-44d3-97d7-c200287d7343,0,1,b9297f72-b40a-4adb-9975-bb693d4834a4,b9297f72-b40a-4adb-9975-bb693d4834a4,0,1,41cf3916-216f-4c4e-a587-82777f4263e0,41cf3916-216f-4c4e-a587-82777f4263e0,0,1,2ce3a350-86f1-4275-8299-3c3693ca11fa,2ce3a350-86f1-4275-8299-3c3693ca11fa,0,1,59f0ed15-c84c-4f41-bdd4-26317e4e914d,59f0ed15-c84c-4f41-bdd4-26317e4e914d,0,1,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,4b5ff142-47b8-4548-b6f9-56ebcbd40e35,0,1,8fef790c-a3f4-460c-9093-5065cbdba196,8fef790c-a3f4-460c-9093-5065cbdba196,0,1,79bd24d0-61a9-4558-90ac-4e726066789c,79bd24d0-61a9-4558-90ac-4e726066789c,0,1,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,d843cbd7-e2b5-4c50-8ed2-7cb0baac8ecc,0,1,ef356548-51a4-4b09-b37d-ede5b8f3edb6,ef356548-51a4-4b09-b37d-ede5b8f3edb6,0,1,53c0d900-5e96-4381-a1ed-4424a5799608,53c0d900-5e96-4381-a1ed-4424a5799608,0,1,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,64fe317a-7d0e-4758-b5cf-0d871d2bf4ad,0,1,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,abfb7ac3-ebfa-4275-a039-a6b94bb9a76f,0,1,45ca9e20-1246-4400-a019-ffb521af6ea7,45ca9e20-1246-4400-a019-ffb521af6ea7,0,1,73eed854-5c3a-4a10-9bfa-793fd517f303,73eed854-5c3a-4a10-9bfa-793fd517f303,0,1,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,c3eb2836-ea4d-48cc-a03f-3a0c30f67e7f,0,1,9134dc40-a8f1-4c60-9431-27cb98be5ecd,9134dc40-a8f1-4c60-9431-27cb98be5ecd,0,1,16c4622a-33af-4a95-b44e-0861a6df21d2,16c4622a-33af-4a95-b44e-0861a6df21d2,0,1,d8cac67b-cce2-4a00-a8df-c6570c50153f,d8cac67b-cce2-4a00-a8df-c6570c50153f,0,1,37213c65-bf26-4e50-a2fa-58eb45439b58,37213c65-bf26-4e50-a2fa-58eb45439b58,0,1,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,e43c08a9-6496-4c8e-bfe2-9d728e31d63d,0,1,b6b31892-73ee-4c9b-92b0-2735536c4938,b6b31892-73ee-4c9b-92b0-2735536c4938,0,1,deb8b883-142e-47d0-a722-7c734a0cf9b3,deb8b883-142e-47d0-a722-7c734a0cf9b3,0,1,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,a6794f74-08a4-4b73-add7-e6d0d1b6e7a3,0,1,29233058-ccb1-4110-a9bc-cdb4c531f35a,29233058-ccb1-4110-a9bc-cdb4c531f35a,0,1,cf3729b2-9ee6-437c-81df-83966793be50,cf3729b2-9ee6-437c-81df-83966793be50,0,1,429d08b7-0b98-4f9b-a053-d04dd84a7026,429d08b7-0b98-4f9b-a053-d04dd84a7026,0,1,b64fd964-cee8-4619-872f-82d2fdc14240,b64fd964-cee8-4619-872f-82d2fdc14240,0,1,5ce7846d-9806-40f5-8631-4e14deb8bc95,5ce7846d-9806-40f5-8631-4e14deb8bc95,0,1,79528a0e-1e48-4d14-bd28-756fd5db57b9,79528a0e-1e48-4d14-bd28-756fd5db57b9,0,1,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,4eeab8c2-d901-4b95-adea-4a08f79d0fa2,0,1,d9426219-4b37-4776-8d5d-acab5825e789,d9426219-4b37-4776-8d5d-acab5825e789,0,1,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,7ce1f9eb-ac51-46fd-adc5-c8b9bfb32e44,0,1,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,4fef5026-1cba-4c33-ae75-5f9570a8e6b6,0,1,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,243ee3d4-4130-41ea-a37c-c7b39a5e73fa,0,1,29e7299a-ce80-497a-8102-615d0a001ea8,29e7299a-ce80-497a-8102-615d0a001ea8,0,1,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,f9e48170-62eb-4d6b-b861-c7af1b4a38c3,0,1,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,9bcc8f9a-ec12-45f2-8a32-6946d556f57a,0,1,adc2cc11-b647-453f-a98e-8a73b7c368c7,adc2cc11-b647-453f-a98e-8a73b7c368c7,0,1,4522c564-61da-40da-a749-5312121a331d,4522c564-61da-40da-a749-5312121a331d,0,1,9394c709-6cbe-4ef6-bc8c-cba8af65821e,9394c709-6cbe-4ef6-bc8c-cba8af65821e,0,1,029e7c7a-5b50-4d38-9fd0-d8a5a15b38ec,029e7c7a-5b50-4d38-9fd0-d8a5a15b38ec,0,1,506bf43b-f7df-4b42-b614-e5925b45b5e9,506bf43b-f7df-4b42-b614-e5925b45b5e9,0,1,58570514-a2cf-4e09-ba7a-d9efd8178269,58570514-a2cf-4e09-ba7a-d9efd8178269,0,1,c23aa057-42f4-4167-9224-693e904598c6,c23aa057-42f4-4167-9224-693e904598c6,0,1,2943b572-7411-4f92-a6cc-7ee552b85223,2943b572-7411-4f92-a6cc-7ee552b85223,0,1,28478e7a-e8aa-40aa-866c-a3624f903141,28478e7a-e8aa-40aa-866c-a3624f903141,0,1,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0ec0b1a0-5f0d-4a14-9a84-49098befa0af,0,1,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,c644ab9b-7bcb-4bfa-b8ba-4c5f7689c91c,0,1,dabb3395-6100-4f53-913d-e0230e81b494,dabb3395-6100-4f53-913d-e0230e81b494,0,1,e0a3fae1-1582-4c7a-acd8-870b558acec4,e0a3fae1-1582-4c7a-acd8-870b558acec4,0,1,8e755ce0-c571-4ed5-b0bb-9470edcb7c73,8e755ce0-c571-4ed5-b0bb-9470edcb7c73,0,1,02e1c293-7302-4751-a248-4bbeed9cbad5,02e1c293-7302-4751-a248-4bbeed9cbad5,0,1,c946cde8-c0d7-4acb-a3be-8858e392fc40,c946cde8-c0d7-4acb-a3be-8858e392fc40,0,1,3a111e0d-6466-46fd-95a2-1798b6e51ba0,3a111e0d-6466-46fd-95a2-1798b6e51ba0,0,1,645edcb0-e358-4d32-a9a9-9534af0398ca,645edcb0-e358-4d32-a9a9-9534af0398ca,0,1,efa1b4e5-d16c-4921-a48a-fe700e39dc71,efa1b4e5-d16c-4921-a48a-fe700e39dc71,0,1,e93402db-e7dd-465e-8c62-2a41efd811b8,e93402db-e7dd-465e-8c62-2a41efd811b8,0,1,e0157f72-a362-4b9f-a272-68ca8078b91c,e0157f72-a362-4b9f-a272-68ca8078b91c,0,1,422155c7-1640-48c4-bb21-36595b405c66,422155c7-1640-48c4-bb21-36595b405c66,0,1,16d37b5a-88db-4787-b2de-fb50da0ca94b,16d37b5a-88db-4787-b2de-fb50da0ca94b,0,1,f653bcbf-5659-4605-9bb9-3737f19e79dd,f653bcbf-5659-4605-9bb9-3737f19e79dd,0,1,8b980868-fe63-49ff-ba3d-4c29732e1b90,8b980868-fe63-49ff-ba3d-4c29732e1b90,0,1,54668731-4963-4ec3-b188-9feacaefa182,54668731-4963-4ec3-b188-9feacaefa182,0,1,3702135e-5380-4ca6-82f5-63eff1b043e9,3702135e-5380-4ca6-82f5-63eff1b043e9,0,1,29b2104b-fd02-4d51-951f-51ea213b8ebd,29b2104b-fd02-4d51-951f-51ea213b8ebd,0,1,ba5c945e-554f-45a2-a2de-3157b2d7e931,ba5c945e-554f-45a2-a2de-3157b2d7e931,0,1,f7085f33-f122-4443-a3f5-4e765300175e,f7085f33-f122-4443-a3f5-4e765300175e,0,1,b7e4c512-b856-4679-a025-5f0f28918593,b7e4c512-b856-4679-a025-5f0f28918593,0,1,bba56b8f-a3f3-4d3f-9804-f9569bb1f6f3,bba56b8f-a3f3-4d3f-9804-f9569bb1f6f3,0,1,cff7ba79-9418-43a4-badc-3e3cc2f6bd5b,cff7ba79-9418-43a4-badc-3e3cc2f6bd5b,0,1,a9362ac4-85ee-4214-80c1-048fab769885,a9362ac4-85ee-4214-80c1-048fab769885,0,1,a4e89d2a-d6f7-4966-ac3c-57f1ef1d1a3a,a4e89d2a-d6f7-4966-ac3c-57f1ef1d1a3a,0,1,20f1114a-0b98-464f-aed8-80ce706b808e,20f1114a-0b98-464f-aed8-80ce706b808e,0,1,988b05ae-987a-4433-b446-bcc7bf5d9ea4,988b05ae-987a-4433-b446-bcc7bf5d9ea4,0,1,07e3de4e-28d9-48dc-9253-a2c39c34f827,07e3de4e-28d9-48dc-9253-a2c39c34f827,0,1,241db5c5-e3bc-4db8-bc88-39db84bb60e9,241db5c5-e3bc-4db8-bc88-39db84bb60e9,0,1,c147916d-1fb6-473d-bde0-8dd528dde8eb,c147916d-1fb6-473d-bde0-8dd528dde8eb,0,1,00359e00-aba0-4afb-8b58-2e1247dbe04f,00359e00-aba0-4afb-8b58-2e1247dbe04f,0,1,77bd95d6-3cd5-4b67-a0b6-72d24243fbc2,77bd95d6-3cd5-4b67-a0b6-72d24243fbc2,0,1,0be7f905-53b8-4bb1-8e37-dcc142e508c5,0be7f905-53b8-4bb1-8e37-dcc142e508c5,0,1,fc959221-6313-45d9-b2c4-85befaede226,fc959221-6313-45d9-b2c4-85befaede226,0,1,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,6ffa8536-7639-4e9a-9f6d-4eda71f5ca3b,0,1,5206d407-ac91-477e-80e7-97c312da934c,5206d407-ac91-477e-80e7-97c312da934c,0,1,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,15b53eaa-cb35-4385-9515-c2ec6e1fdb4b,0,1,ccb8a530-260a-4488-b1d9-c67325c69bf4,ccb8a530-260a-4488-b1d9-c67325c69bf4,0,1,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0b13cad5-91ae-4cd1-a620-9a315ae8024c,0,1,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,d0634a8e-676f-4f49-9a38-7cb80cfa9fdf,0,1,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,59bb5271-4cc7-45aa-8e2a-f556a4afa2dc,0,1,81dd61e5-fe02-4272-a525-affda9b606ca,81dd61e5-fe02-4272-a525-affda9b606ca,0,1,8de7b423-b7d1-46fe-b1dc-fb936736b864,8de7b423-b7d1-46fe-b1dc-fb936736b864,0,1,f565876c-0326-4b12-895e-c248b9e64115,f565876c-0326-4b12-895e-c248b9e64115,0,1,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,62f075c5-1ad0-4a29-9f40-567b9fa70cdf,0,1,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0f6f8fd9-b3af-4d06-bc47-bdad238d15b7,0,1,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,460e76d2-4ed6-464e-bf9c-a6bcf920aaf2,0,1,80c23bf0-cef0-4d07-a017-d90635f8041d,80c23bf0-cef0-4d07-a017-d90635f8041d,0,1,47a24216-3299-470b-a18c-d8c1258fff24,47a24216-3299-470b-a18c-d8c1258fff24,0,1,72dcfd46-491e-4f88-a0ea-57919f8fbdea,72dcfd46-491e-4f88-a0ea-57919f8fbdea,0,1,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,fa7a11cc-7ee0-4550-8d0d-9c7464d57a37,0,1,f9161bc3-9a1c-4870-8681-8e97d8ce838a,f9161bc3-9a1c-4870-8681-8e97d8ce838a,0,1,a75ed1c8-20c2-49a8-a730-22237ef91366,a75ed1c8-20c2-49a8-a730-22237ef91366,0,1,1c0ebdfd-1913-48fe-b80a-10c30201129b,1c0ebdfd-1913-48fe-b80a-10c30201129b,0,1,22ad3db7-1ad3-4868-8598-b0b90db3fa1f,22ad3db7-1ad3-4868-8598-b0b90db3fa1f,0,1,14025e38-09af-43b2-a49b-403e398a28ea,14025e38-09af-43b2-a49b-403e398a28ea,0,1,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,5e53ccc6-5ab4-4f9d-b524-0081d345d7a2,0,1,c3b3805b-3501-47a7-b280-46180049b235,c3b3805b-3501-47a7-b280-46180049b235,0,1,29af05c2-37de-495b-b3cf-477d452abe5e,29af05c2-37de-495b-b3cf-477d452abe5e,0,1,5e922083-0ceb-449a-8201-7dd27a46f2fc,5e922083-0ceb-449a-8201-7dd27a46f2fc,0,1,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,d97e78c7-f2c1-4e0e-9c9b-d2dd6a94da22,0,1,e757303e-c61a-4e42-9829-c5a36dba9414,e757303e-c61a-4e42-9829-c5a36dba9414,0,1,091de87c-0801-4bd3-aaaa-ed37bc4cd161,091de87c-0801-4bd3-aaaa-ed37bc4cd161,0,1,d5012e69-89bc-40af-8e4f-377a042854ee,d5012e69-89bc-40af-8e4f-377a042854ee,0,1,02f79fd8-5315-4c90-b520-db67dcb6e371,02f79fd8-5315-4c90-b520-db67dcb6e371,0,1,7f90681d-6534-40ee-bbb7-5356c0ed9de2,7f90681d-6534-40ee-bbb7-5356c0ed9de2,0,1,d1aca4be-1e1e-4bbd-b0a6-a68bc7c8c586,d1aca4be-1e1e-4bbd-b0a6-a68bc7c8c586,0,1,9bb52788-4a3a-48b5-a551-5ca753b6c059,9bb52788-4a3a-48b5-a551-5ca753b6c059,0,1,4fb5004f-3cd9-44c4-a44b-d235cccf9e9c,4fb5004f-3cd9-44c4-a44b-d235cccf9e9c,0,1,872a0c47-fab5-4a54-8ab9-23940bbdefbb,872a0c47-fab5-4a54-8ab9-23940bbdefbb,0,1,7428a626-3fbc-4f2c-a3dd-f14e8d90c00b,7428a626-3fbc-4f2c-a3dd-f14e8d90c00b,0,1,2f20bff4-9201-4f36-9e74-eba4d9b3c59a,2f20bff4-9201-4f36-9e74-eba4d9b3c59a,0,1,ec1755ed-d203-4548-9f1d-dd62ce331ecf,ec1755ed-d203-4548-9f1d-dd62ce331ecf,0,1,4d83ed3c-755c-4b9b-a2b8-17fa2c5c3a61,4d83ed3c-755c-4b9b-a2b8-17fa2c5c3a61,0,1,8f17ec3f-6d62-46b8-baef-b20430e948ce,8f17ec3f-6d62-46b8-baef-b20430e948ce,0,1,ea1298d0-9396-4a50-b83e-24064e8dd99d,ea1298d0-9396-4a50-b83e-24064e8dd99d,0,1,038dbb00-e4c6-4e64-b861-3a0764f54ab3,038dbb00-e4c6-4e64-b861-3a0764f54ab3,0,1,1c291f7d-a493-4297-8aaa-912896800066,1c291f7d-a493-4297-8aaa-912896800066,0,1,69149801-a825-4ed2-b077-c26660dff271,69149801-a825-4ed2-b077-c26660dff271,0,1,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,12146ed3-c159-4d6b-ae1a-1ecd30e5a87e,0,1,518ab687-b84a-40c8-8547-aee4257c1b71,518ab687-b84a-40c8-8547-aee4257c1b71,0,1,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,5cec0949-bfe8-4f7e-98c1-0c402be3ea09,0,1,7732ef07-16eb-46a0-9645-7de95c5482af,7732ef07-16eb-46a0-9645-7de95c5482af,0,1,75dac536-b316-4b04-a57b-03656c678bec,75dac536-b316-4b04-a57b-03656c678bec,0,1,a07d6c85-159d-4d09-b117-561a1e20329f,a07d6c85-159d-4d09-b117-561a1e20329f,0,1,8a2f9733-4f83-41f2-9d74-dca7161a4b41,8a2f9733-4f83-41f2-9d74-dca7161a4b41,0,1,fbd2d900-1e0d-48f3-9793-0186ee49915c,fbd2d900-1e0d-48f3-9793-0186ee49915c,0,1,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,4a69a70d-1b4c-4999-a3dd-ae1deb331fea,0,1,3a36e0f5-a645-47f1-99ae-5b0493d604ad,3a36e0f5-a645-47f1-99ae-5b0493d604ad,0,1,57f762f7-b8e4-498b-a3dc-3d40c94855ec,57f762f7-b8e4-498b-a3dc-3d40c94855ec,0,1,ca7d4086-de35-40fd-af65-73369d452135,ca7d4086-de35-40fd-af65-73369d452135,0,1,563c0f5c-e0b4-4229-a3f6-183091060aa4,563c0f5c-e0b4-4229-a3f6-183091060aa4,0,1,bf967588-ea8f-49a3-9331-af2331ffa162,bf967588-ea8f-49a3-9331-af2331ffa162,0,1,5083530c-9a24-4def-99c1-6eb9514e9b33,5083530c-9a24-4def-99c1-6eb9514e9b33,0,1,d59c2725-5d98-495e-9f86-f5d38dbfad90,d59c2725-5d98-495e-9f86-f5d38dbfad90,0,1,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,176f8835-73d2-4fbe-9d2a-0a4c79d3b871,0,1,0ba68198-983d-409b-be27-96f1572b3f12,0ba68198-983d-409b-be27-96f1572b3f12,0,1,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,9cd1e8dd-e2be-48a9-b32d-43688e1748bc,0,1,decb27a8-7dd3-4601-a694-30429e638b39,decb27a8-7dd3-4601-a694-30429e638b39,0,1,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,922ac6c0-a6a8-444e-9aad-27dc0f49b32e,0,1,d7a128e4-f31f-4b09-8424-e816ab59d5c3,d7a128e4-f31f-4b09-8424-e816ab59d5c3,0,1,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0ce6e252-8d6e-4bfe-b8cc-daf3434fa51e,0,1,aa9513b4-f575-4030-a7f9-ac09aa319e98,aa9513b4-f575-4030-a7f9-ac09aa319e98,0,1,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,f01afc5e-91b8-4cc2-b63a-c245e5e36d01,0,1,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,028cbc0e-023d-40ad-86c3-5e6f8dc96c57,0,1,d03f66b1-48a3-434b-bb58-9fd53c183514,d03f66b1-48a3-434b-bb58-9fd53c183514,0,1,a469e55e-d7ca-4c27-b350-fafe7364c18f,a469e55e-d7ca-4c27-b350-fafe7364c18f,0,1,1a4991f8-7832-4ca9-8809-88a97de88749,1a4991f8-7832-4ca9-8809-88a97de88749,0,1,4f44c1c0-0480-415e-8058-41b28f2f43a0,4f44c1c0-0480-415e-8058-41b28f2f43a0,0,1,3b708ec7-6543-40ff-8ea2-16d4ddb7d56f,3b708ec7-6543-40ff-8ea2-16d4ddb7d56f,0,1,433e502d-ab5c-4e8e-a7c0-0fde1aa6f767,433e502d-ab5c-4e8e-a7c0-0fde1aa6f767,0,1,6bd65f02-9531-4dd4-bd4a-4132aa3c4787,6bd65f02-9531-4dd4-bd4a-4132aa3c4787,0,1,5d9863e6-aab7-4808-a516-8bc42dae5d01,5d9863e6-aab7-4808-a516-8bc42dae5d01,0,1,a2910bb8-fdd2-480c-8ae2-78661d7d18e0,a2910bb8-fdd2-480c-8ae2-78661d7d18e0,0,1,218302fa-674d-45e1-a7e2-2cce2d011342,218302fa-674d-45e1-a7e2-2cce2d011342,0,1,70264a0a-95c5-426f-a1bf-0f57b86d4030,70264a0a-95c5-426f-a1bf-0f57b86d4030,0,1,ba3ba1ac-e7c6-4bab-9771-4ef522011c52,ba3ba1ac-e7c6-4bab-9771-4ef522011c52,0,1,3291428e-6727-43cc-a1f8-c62f90320e90,3291428e-6727-43cc-a1f8-c62f90320e90,0,1,d867720c-c937-4689-b241-0afda05ef993,d867720c-c937-4689-b241-0afda05ef993,0,1,1390da8f-bac6-44ee-8413-1438f1f66074,1390da8f-bac6-44ee-8413-1438f1f66074,0,1,9616956d-a537-44fd-9d3f-5071fb5f4883,9616956d-a537-44fd-9d3f-5071fb5f4883,0,1,4ad1eed9-89ff-4086-b0ff-4eadcebcdce9,4ad1eed9-89ff-4086-b0ff-4eadcebcdce9,0,1,41d31712-6181-4cfe-9aa4-02b7a50150b0,41d31712-6181-4cfe-9aa4-02b7a50150b0,0,1,3ad5d8a7-3071-46aa-aebf-306bdb67983b,3ad5d8a7-3071-46aa-aebf-306bdb67983b,0,1,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,ab7ef662-71c1-4d51-9f0f-ea8c5ea3df8a,0,1,cb954476-c551-4a06-9bcd-18d67ba47dc8,cb954476-c551-4a06-9bcd-18d67ba47dc8,0,1,79201015-bfae-463e-81f1-0ae2d3066f3f,79201015-bfae-463e-81f1-0ae2d3066f3f,0,1,1ea3178b-73dd-4063-9140-c61687a4b1b8,1ea3178b-73dd-4063-9140-c61687a4b1b8,0,1,6b02f5e0-2b50-492d-ada4-d8fe43b0a748,6b02f5e0-2b50-492d-ada4-d8fe43b0a748,0,1,bbfc7a9c-ac22-47b1-bb18-74993b7ec5b0,bbfc7a9c-ac22-47b1-bb18-74993b7ec5b0,0,1,17dcf8bc-6830-4623-b1b2-9084c5495e20,17dcf8bc-6830-4623-b1b2-9084c5495e20,0,1,a3114825-cf97-4051-907d-9a31e1ac88eb,a3114825-cf97-4051-907d-9a31e1ac88eb,0,1,9886143e-70dd-4c1e-8b00-dc5587403246,9886143e-70dd-4c1e-8b00-dc5587403246,0,1,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,85fd7ef4-2886-4e2c-a6eb-63d0b0b9cd55,0,1,696723be-7b4f-4321-956e-eff07ea9f5fa,696723be-7b4f-4321-956e-eff07ea9f5fa,0,1,616c27dc-5c59-4469-97a7-27e0752bd3a7,616c27dc-5c59-4469-97a7-27e0752bd3a7,0,1,f7323121-74bc-441c-a3e9-dd5cb4f0accd,f7323121-74bc-441c-a3e9-dd5cb4f0accd,0,1,bb264e83-49f4-4b7a-8be2-094712fc0640,bb264e83-49f4-4b7a-8be2-094712fc0640,0,1,07bf650d-e61e-44f3-9643-6ffc95b913fb,07bf650d-e61e-44f3-9643-6ffc95b913fb,0,1,6b90ed05-813c-4324-8a69-02c2268856b2,6b90ed05-813c-4324-8a69-02c2268856b2,0,1,081ed48d-cb87-459d-97d6-9af121edbabb,081ed48d-cb87-459d-97d6-9af121edbabb,0,1,6c4074b2-f631-451d-b412-1c8c096a71b1,6c4074b2-f631-451d-b412-1c8c096a71b1,0,1,f9931a20-8391-4b13-8c6d-1836f2492e53,f9931a20-8391-4b13-8c6d-1836f2492e53,0,1,c6eec20b-13b9-44a0-968f-1325680c399b,c6eec20b-13b9-44a0-968f-1325680c399b,0,1,02fbf083-1bdd-4900-9dc1-62f415b792a4,02fbf083-1bdd-4900-9dc1-62f415b792a4,0,1,35454c2d-7088-487b-abb3-f95f2dfdcffa,35454c2d-7088-487b-abb3-f95f2dfdcffa,0,1,2178ab47-1bb1-4fe0-940d-6876b66333c1,2178ab47-1bb1-4fe0-940d-6876b66333c1,0,1,8cc09f48-2ef2-434b-b33e-ab9b021816de,8cc09f48-2ef2-434b-b33e-ab9b021816de,0,1,2ca1741b-1e65-4a54-a4a5-489e73cfb4f3,2ca1741b-1e65-4a54-a4a5-489e73cfb4f3,0,1,360b086c-53e3-4514-a4f5-9379ab368b76,360b086c-53e3-4514-a4f5-9379ab368b76,0,1,e6feefa1-7298-4ab0-85d3-9abee571a627,e6feefa1-7298-4ab0-85d3-9abee571a627,0,1,063ef64f-97ec-451e-8470-d3cdf6d08947,063ef64f-97ec-451e-8470-d3cdf6d08947,0,1,b76492d0-17f3-49c0-b23b-6a140122f20f,b76492d0-17f3-49c0-b23b-6a140122f20f,0,1,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,1c1e01f2-b2b3-480d-ae51-2db27b82dedd,0,1,df459525-4e4d-4819-b996-5a6379b22a88,df459525-4e4d-4819-b996-5a6379b22a88,0,1,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,ed1d69f4-b09f-430a-bb2e-a23fe4dedf6b,0,1,e67b4a32-4bac-450e-be6d-88c262383f31,e67b4a32-4bac-450e-be6d-88c262383f31,0,1,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,8b83bb54-4c23-4bd8-bd00-374a7a101cfa,0,1,6c4c3eca-8b02-451b-af52-93073c3da146,6c4c3eca-8b02-451b-af52-93073c3da146,0,1,095c281c-3903-465d-baea-af1e6abf8019,095c281c-3903-465d-baea-af1e6abf8019,0,1,440d115d-a769-427e-891a-88d65fba2057,440d115d-a769-427e-891a-88d65fba2057,0,1,f7932210-027e-4fad-b7f7-3530789ce803,f7932210-027e-4fad-b7f7-3530789ce803,0,1,7bbfd95e-39a1-485b-930f-c9210c18dcd0,7bbfd95e-39a1-485b-930f-c9210c18dcd0,0,1,4975d3d6-b5a2-41c6-973b-6817013a388d,4975d3d6-b5a2-41c6-973b-6817013a388d,0,1,18ebc799-9724-4ffb-855e-b09a0723869e,18ebc799-9724-4ffb-855e-b09a0723869e,0,1,a06b8ef5-83e6-4fc6-91e1-256004134d69,a06b8ef5-83e6-4fc6-91e1-256004134d69,0,1,1d6a68ec-917f-4c3b-b970-797a6921cbc9,1d6a68ec-917f-4c3b-b970-797a6921cbc9,0,1,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,ae29eb40-5c8f-4ab4-8556-f98d45e8effe,0,1,5b663988-3599-46dc-8d59-4c82ceac537c,5b663988-3599-46dc-8d59-4c82ceac537c,0,1,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0f5f136c-688b-491e-a72b-3d9c2e609f0e,0,1,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,5573b405-6ac4-4632-b8d6-5d1cbdb63b97,0,1,679cc0df-df5c-4c33-8c64-c0b6cee39116,679cc0df-df5c-4c33-8c64-c0b6cee39116,0,1,b156752b-f25c-4f35-9474-8ac3636597f5,b156752b-f25c-4f35-9474-8ac3636597f5,0,1,2d279292-f9d6-4d5a-aaeb-f82f6485ac54,2d279292-f9d6-4d5a-aaeb-f82f6485ac54,0,1,f335aa38-4e9e-4653-9a76-b6d4ae178c93,f335aa38-4e9e-4653-9a76-b6d4ae178c93,0,1,a62894bc-fab4-4ed4-a57d-cbe725527198,a62894bc-fab4-4ed4-a57d-cbe725527198,0,1,17aadd5f-cda2-4785-a07f-3ab4b04434a6,17aadd5f-cda2-4785-a07f-3ab4b04434a6,0,1,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,71bc35e6-0fec-4e54-af2d-23d1357d1c3b,0,1,1832336e-32f6-42c4-9087-8614ead52bb3,1832336e-32f6-42c4-9087-8614ead52bb3,0,1,ff9f7b5c-70f4-4eed-8216-64448e7da76f,ff9f7b5c-70f4-4eed-8216-64448e7da76f,0,1,44ac2869-990d-4cac-a14b-c1a28854341e,44ac2869-990d-4cac-a14b-c1a28854341e,0,1,d5df31c3-89f9-469c-80a9-fb4706d30bc4,d5df31c3-89f9-469c-80a9-fb4706d30bc4,0,1,e73a6a9d-8ddd-4531-9f17-745117d9da9b,e73a6a9d-8ddd-4531-9f17-745117d9da9b,0,1,9dd4e17c-d10b-435e-8665-08997edc3e7e,9dd4e17c-d10b-435e-8665-08997edc3e7e,0,1,cafd44e1-8509-4550-8329-ff8cab0c31ae,cafd44e1-8509-4550-8329-ff8cab0c31ae,0,1,105cd740-1f60-45e1-871c-adeecd291b0d,105cd740-1f60-45e1-871c-adeecd291b0d,0,1,95aec7d2-179b-4ea3-a3df-3d737b713564,95aec7d2-179b-4ea3-a3df-3d737b713564,0,1,4bd1cae4-d5b5-444e-9cf5-67a969714293,4bd1cae4-d5b5-444e-9cf5-67a969714293,0,1,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,b1a330d7-9b88-44e9-aba6-41ce5e5e669c,0,1,f279a625-b88f-43b4-bce9-de1186fe7d7e,f279a625-b88f-43b4-bce9-de1186fe7d7e,0,1,99fc224a-2a61-441a-85e9-d69df6aa8b5e,99fc224a-2a61-441a-85e9-d69df6aa8b5e,0,1,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,a528c26f-3ceb-4ae4-8420-edfbdea6e1ac,0,1,d009782b-d73e-42d1-9979-2cbaf20ee98e,d009782b-d73e-42d1-9979-2cbaf20ee98e,0,1,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,1ef6282c-ae81-4d76-8e3e-99fec58fc7bd,0,1,88d8edf7-654f-4627-b68d-c7e929726da6,88d8edf7-654f-4627-b68d-c7e929726da6,0,1,01579044-5659-4a73-a989-c52cfabaae66,01579044-5659-4a73-a989-c52cfabaae66,0,1,9b8509e8-8262-4e6a-b2f3-a0df8f49e2c5,9b8509e8-8262-4e6a-b2f3-a0df8f49e2c5,0,1,6a798c80-459f-49ef-a8c2-83842ce4252c,6a798c80-459f-49ef-a8c2-83842ce4252c,0,1,911baaa1-a4de-4558-b00e-51644144a762,911baaa1-a4de-4558-b00e-51644144a762,0,1,d6400a59-6e02-4212-bb5a-9e49767aa8d6,d6400a59-6e02-4212-bb5a-9e49767aa8d6,0,1,6016d26e-fe39-4c16-b2b5-15f8c663125e,6016d26e-fe39-4c16-b2b5-15f8c663125e,0,1,6c19d9b0-1a41-4f82-a289-9fe05e272079,6c19d9b0-1a41-4f82-a289-9fe05e272079,0,1,df8063e2-47f1-4230-8e3c-eeee2143c72a,df8063e2-47f1-4230-8e3c-eeee2143c72a,0,1,89856ba2-f39a-41cd-be94-61243c6a0b96,89856ba2-f39a-41cd-be94-61243c6a0b96,0,1,8bdb0483-6ea9-4553-91ac-9cde267aae19,8bdb0483-6ea9-4553-91ac-9cde267aae19,0,1,56c9fa68-467b-4c1b-813e-6bc7ac0375cb,56c9fa68-467b-4c1b-813e-6bc7ac0375cb,0,1,bf30f5a1-6542-469f-b3fe-eee726110ffb,bf30f5a1-6542-469f-b3fe-eee726110ffb,0,1,13367a31-c2c9-43ea-b248-8a92e95ecd53,13367a31-c2c9-43ea-b248-8a92e95ecd53,0,1,8a8ad123-c01a-440a-bd01-1c0da72cf2eb,8a8ad123-c01a-440a-bd01-1c0da72cf2eb,0,1,ca4ef957-36c2-43b9-8ff7-e2b7ee58cde5,ca4ef957-36c2-43b9-8ff7-e2b7ee58cde5,0,1,4e036eff-92a8-4010-89b2-ed949c123311,4e036eff-92a8-4010-89b2-ed949c123311,0,1,38160114-dc22-4d0b-86a5-d650f4756932,38160114-dc22-4d0b-86a5-d650f4756932,0,1,50ee876f-6860-443b-9857-aca772d711ea,50ee876f-6860-443b-9857-aca772d711ea,0,1,6955edb2-d481-432c-b282-58dc07fd067b,6955edb2-d481-432c-b282-58dc07fd067b,0,1,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,77e5bd01-35f3-4072-bc7a-8730e6dcbab3,0,1,58b33683-1916-4aef-9b98-5569ef7782ed,58b33683-1916-4aef-9b98-5569ef7782ed,0,1,d3e1f622-f438-4cad-94ae-0272f51610f7,d3e1f622-f438-4cad-94ae-0272f51610f7,0,1,64ac2c2a-2726-4ab9-9a6a-3d08f3fc0618,64ac2c2a-2726-4ab9-9a6a-3d08f3fc0618,0,1,8569cd73-d40d-4d92-83e0-8ece0c03a86a,8569cd73-d40d-4d92-83e0-8ece0c03a86a,0,1,9ebe2809-be6b-4c91-9443-b237fb7ad43c,9ebe2809-be6b-4c91-9443-b237fb7ad43c,0,1,bf29c091-de15-4cd4-be0e-a9785f97d444,bf29c091-de15-4cd4-be0e-a9785f97d444,0,1,6a675752-fd31-46a5-8a62-2a1ede437c68,6a675752-fd31-46a5-8a62-2a1ede437c68,0,1,8ff109f7-db33-4713-92bf-000f70d2014a,8ff109f7-db33-4713-92bf-000f70d2014a,0,1,97a65f49-845f-4eed-ae81-61266ed3e05b,97a65f49-845f-4eed-ae81-61266ed3e05b,0,1,060b2bb4-ca03-4da9-930f-7f91f6299a35,060b2bb4-ca03-4da9-930f-7f91f6299a35,0,1,394b1a1c-a7ae-41b7-a346-4bac99fa567d,394b1a1c-a7ae-41b7-a346-4bac99fa567d,0,1,9a5fa511-59e8-4a1b-a101-f276f0b7b261,9a5fa511-59e8-4a1b-a101-f276f0b7b261,0,1,ccfe4e36-80b6-419f-8bb3-c1046203d023,ccfe4e36-80b6-419f-8bb3-c1046203d023,0,1,94b2e060-53b7-4b40-af05-30bea3520330,94b2e060-53b7-4b40-af05-30bea3520330,0,1,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0f634f7e-7d6b-43e4-8e5e-a31ed05898ea,0,1,41b0dabd-85a3-4819-84dd-371eaf4f996e,41b0dabd-85a3-4819-84dd-371eaf4f996e,0,1,86a5ba4d-0681-4ddc-a505-0f537528e1a3,86a5ba4d-0681-4ddc-a505-0f537528e1a3,0,1,12d936f5-932b-4561-b934-c8444808a450,12d936f5-932b-4561-b934-c8444808a450,0,1,2ccb06ca-9bb7-4b74-9a96-c109bb117984,2ccb06ca-9bb7-4b74-9a96-c109bb117984,0,1,ac1a661d-db18-4576-80a9-a19d4140c05e,ac1a661d-db18-4576-80a9-a19d4140c05e,0,1,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,acd89f6c-a25f-47b9-ac21-036bfafcc0fc,0,1,c3ffeb09-121b-4d77-9c15-def4648b4f3c,c3ffeb09-121b-4d77-9c15-def4648b4f3c,0,1,c2de0724-04c1-4adb-b62a-b7ba727dbe67,c2de0724-04c1-4adb-b62a-b7ba727dbe67,0,1,4ae26777-69ff-4a55-942b-0bad8ab7a70a,4ae26777-69ff-4a55-942b-0bad8ab7a70a,0,1,a0d8fb0a-0e90-4140-8687-e249b153dc66,a0d8fb0a-0e90-4140-8687-e249b153dc66,0,1,917c6f60-2a07-4587-9496-d393aff93953,917c6f60-2a07-4587-9496-d393aff93953,0,1,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,4bac50a2-762a-44e6-b8c5-3b09ef1a3f5e,0,1,9fe72d73-4c95-47e0-bf92-dcb714d747c6,9fe72d73-4c95-47e0-bf92-dcb714d747c6,0,1,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,fe00e64f-2fa9-44a7-9bd7-854ebb6c0185,0,1,b6f8bc3e-f0cd-43ef-b060-d701cd446197,b6f8bc3e-f0cd-43ef-b060-d701cd446197,0,1,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,4f10e5f9-6cfd-4fa9-9c72-d19a484a796c,0,1,b94e805f-e1ab-4870-b855-98aa401864b2,b94e805f-e1ab-4870-b855-98aa401864b2,0,1,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,ff8eedeb-fc3e-4bee-852b-6da6d59ff38c,0,1,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,a98bd18f-ccda-41a2-a1b2-8b37cc1f6c36,0,1,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,62f9fe19-3d64-4506-a0bc-dbfe47b4df64,0,1,60aaa289-1f07-438c-8f10-81058ac671c3,60aaa289-1f07-438c-8f10-81058ac671c3,0,1,7312a4ab-a269-4d85-a2c2-25bd5c5dc59c,7312a4ab-a269-4d85-a2c2-25bd5c5dc59c,0,1,c44b0868-bd7f-4230-973b-544ff4dd2afe,c44b0868-bd7f-4230-973b-544ff4dd2afe,0,1,51e6a6f9-ce9d-4cb0-a40c-384ede074e07,51e6a6f9-ce9d-4cb0-a40c-384ede074e07,0,1,6236ac73-5b9f-4fb5-bb2c-a5d8e205c5db,6236ac73-5b9f-4fb5-bb2c-a5d8e205c5db,0,1,5e22429f-9ec0-4943-bf80-1becc4b8e5cb,5e22429f-9ec0-4943-bf80-1becc4b8e5cb,0,1,0153e60e-daca-48ac-b1c6-adecc89f579e,0153e60e-daca-48ac-b1c6-adecc89f579e,0,1,1ed4cf25-19f0-49f5-96a0-0ffe13adfe35,1ed4cf25-19f0-49f5-96a0-0ffe13adfe35,0,1,a896bc34-30a6-48b6-acfc-786c24c186bd,a896bc34-30a6-48b6-acfc-786c24c186bd,0,1,3867f4cb-bf54-42fb-8ea6-ca51d7cd6c91,3867f4cb-bf54-42fb-8ea6-ca51d7cd6c91,0,1,da8ae00a-7207-4ceb-b739-9114888c5b27,da8ae00a-7207-4ceb-b739-9114888c5b27,0,1,ac028c56-b2a8-4a9b-a325-554c636f838e,ac028c56-b2a8-4a9b-a325-554c636f838e,0,1,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0ed85f4c-c002-49b6-99b9-0c3c4b7f940e,0,1,f99e98ac-cd94-4989-8c02-ef8b323c6815,f99e98ac-cd94-4989-8c02-ef8b323c6815,0,1,e2562347-4549-4111-862e-86c20a6daade,e2562347-4549-4111-862e-86c20a6daade,0,1,b270fc64-15c6-41ed-ad09-44c833ca7c41,b270fc64-15c6-41ed-ad09-44c833ca7c41,0,1,4c3312fd-5613-4e9b-ae7c-572fa1887ded,4c3312fd-5613-4e9b-ae7c-572fa1887ded,0,1,6c8c9618-287a-41ab-890c-60250925ad52,6c8c9618-287a-41ab-890c-60250925ad52,0,1,168fce48-2413-45fc-ad21-9b465121d81b,168fce48-2413-45fc-ad21-9b465121d81b,0,1,55b9650e-098b-4d44-9fb5-d525b46f014b,55b9650e-098b-4d44-9fb5-d525b46f014b,0,1,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,5b7b32ec-3d0e-42e9-bd13-5d2b8cc1942d,0,1,bc55dc06-a769-40be-9c99-0794bdd2dbea,bc55dc06-a769-40be-9c99-0794bdd2dbea,0,1,7861e179-96d2-422f-a7c2-b38b59074956,7861e179-96d2-422f-a7c2-b38b59074956,0,1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0b2416bc-f322-45b3-8c3f-2c8a206c55a1,0,1,3797b4c6-e336-4cbe-8d0b-0902e1247b42,3797b4c6-e336-4cbe-8d0b-0902e1247b42,0,1,67ebc493-d29a-4614-890a-feb8b5bd884b,67ebc493-d29a-4614-890a-feb8b5bd884b,0,1,d65c8992-aabc-4b67-9893-01862231ebe1,d65c8992-aabc-4b67-9893-01862231ebe1,0,1,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,dc79e5e2-37d1-4f19-9500-15c1d9be10eb,0,1,dba6cb38-79c6-4060-87c5-a993548f36c4,dba6cb38-79c6-4060-87c5-a993548f36c4,0,1,6b44227a-e226-4bcb-8638-06b49f830669,6b44227a-e226-4bcb-8638-06b49f830669,0,1,f2406400-87e9-4df2-bcd3-8f1e3ad62088,f2406400-87e9-4df2-bcd3-8f1e3ad62088,0,1,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,ecaacedb-bf2d-4736-a9e1-fa89cda85ee6,0,1,a5623e87-3102-4521-b4ab-c41bf2403a1a,a5623e87-3102-4521-b4ab-c41bf2403a1a,0,1,599b1692-5f4e-42ef-ae1a-822ff527a415,599b1692-5f4e-42ef-ae1a-822ff527a415,0,1,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,ee9abe8a-b3a2-48a9-9157-ea537e83b7e7,0,1,23f70675-6a05-4b50-ad68-c55ddc93e857,23f70675-6a05-4b50-ad68-c55ddc93e857,0,1,4bb7372a-87a9-426e-b09f-fc0110455b10,4bb7372a-87a9-426e-b09f-fc0110455b10,0,1,ac853a0f-c185-4cdb-9f09-c921770937b5,ac853a0f-c185-4cdb-9f09-c921770937b5,0,1,920a7940-4d12-476d-a909-2231787839a9,920a7940-4d12-476d-a909-2231787839a9,0,1,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,b3aeeb3c-622d-4e0c-8c13-199f0e431a7d,0,1,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,ad14c4d1-bc11-44b6-a32c-c00fb89a9ea5,0,1,32eb2a75-ff35-4795-bf0c-12b1328441ee,32eb2a75-ff35-4795-bf0c-12b1328441ee,0,1,8e877990-a64c-4c45-91f1-007d47618cc7,8e877990-a64c-4c45-91f1-007d47618cc7,0,1,73c6640e-2fe6-4132-9237-d6f28cbacc1c,73c6640e-2fe6-4132-9237-d6f28cbacc1c,0,1,46c3341c-352c-43fb-b338-15c8ad487fbf,46c3341c-352c-43fb-b338-15c8ad487fbf,0,1,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,a2a8b35e-04e5-4176-8d3b-2cd4dfb6d653,0,1,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,ea7ad7f5-e502-49a9-b4a6-e9adceb15057,0,1,f9450d6a-849c-4621-b528-9cafc4819b44,f9450d6a-849c-4621-b528-9cafc4819b44,0,1,5b7cac99-2fca-4dbb-8d49-b84f310a2496,5b7cac99-2fca-4dbb-8d49-b84f310a2496,0,1,bb11c22e-0fbd-4985-be67-0866df7f7e61,bb11c22e-0fbd-4985-be67-0866df7f7e61,0,1,a4673d5c-9dae-48f7-9c91-53c1302a266a,a4673d5c-9dae-48f7-9c91-53c1302a266a,0,1,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,1a2a0dd2-b0dc-41e1-8c4f-f275f025bad2,0,1,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,c255932e-fc34-402c-a6e9-2fda1ffbcdf2,0,1,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0d323d88-2823-493e-8c1e-b2b9f3dcdd3e,0,1,3f410b53-e762-41fe-9469-d538dfec3a9a,3f410b53-e762-41fe-9469-d538dfec3a9a,0,1,d08857b9-bc84-48f8-a7a1-09db961427c9,d08857b9-bc84-48f8-a7a1-09db961427c9,0,1,53ea8238-cae6-42c0-b92d-b4539c71c34a,53ea8238-cae6-42c0-b92d-b4539c71c34a,0,1,92ea60c0-1027-4337-9130-40028951f09b,92ea60c0-1027-4337-9130-40028951f09b,0,1,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,46710ce6-0f82-4c4c-91e8-f8ee726e00ce,0,1,d64f18a4-ff93-4284-9eca-085109eafd24,d64f18a4-ff93-4284-9eca-085109eafd24,0,1,bf428e7a-2970-4bab-8c8e-35ea16151c0e,bf428e7a-2970-4bab-8c8e-35ea16151c0e,0,1,232dbd5f-b7f1-4463-946c-b8fbf93ac466,232dbd5f-b7f1-4463-946c-b8fbf93ac466,0,1,a1a74b34-4174-4769-8f03-bd4a32e83418,a1a74b34-4174-4769-8f03-bd4a32e83418,0,1,84562495-1887-495e-8433-2649202684cc,84562495-1887-495e-8433-2649202684cc,0,1,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,32fd1fe7-34d3-43ed-baba-16ccd43aa25a,0,1,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,8f4d1259-abdc-4495-8e1e-8c8abcd336ca,0,1,1731708f-53cb-4b00-b90e-f581b4baa845,1731708f-53cb-4b00-b90e-f581b4baa845,0,1,d4b0feca-c00a-4d48-9f23-d92277ea6483,d4b0feca-c00a-4d48-9f23-d92277ea6483,0,1,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,00b2a0b3-6af8-4ea4-aa38-d1e078d5cbff,0,1,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,20f7fdd2-30f6-4a52-a63b-7d2c326c0e83,0,1,23cb5bc2-9638-4d1c-b4bc-d5297e271570,23cb5bc2-9638-4d1c-b4bc-d5297e271570,0,1,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,6e547ccb-6d5a-4f7c-aaf0-568c22d2c276,0,1,04b7389d-697d-4b0d-a239-ac8c674cc46f,04b7389d-697d-4b0d-a239-ac8c674cc46f,0,1,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,a1cf5173-2e86-4ed7-9a0b-1bd5e578326a,0,1,864cad61-8280-415d-8fe1-bcb39d56670a,864cad61-8280-415d-8fe1-bcb39d56670a,0,1,b106bd29-5dc7-44d7-94d0-00f61499392e,b106bd29-5dc7-44d7-94d0-00f61499392e,0,1,a4febff8-0566-4977-bf55-1d574568fe9f,a4febff8-0566-4977-bf55-1d574568fe9f,0,1,5199cc65-bed1-40b9-96fe-cf6d855a8b91,5199cc65-bed1-40b9-96fe-cf6d855a8b91,0,1,f518add9-5c26-4dac-ab2e-b30fe3fbd347,f518add9-5c26-4dac-ab2e-b30fe3fbd347,0,1,23f53317-7aa8-4816-8a69-3d39d5e76da0,23f53317-7aa8-4816-8a69-3d39d5e76da0,0,1,9ade5155-fa6d-4999-b019-a5e7e235a158,9ade5155-fa6d-4999-b019-a5e7e235a158,0,1,8b302c5e-b255-4cb5-94d9-0dfef4250097,8b302c5e-b255-4cb5-94d9-0dfef4250097,0,1,49d713b8-6a61-4bd1-9650-0de1869967d2,49d713b8-6a61-4bd1-9650-0de1869967d2,0,1,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,4738ffd0-3c3b-4e5f-8773-0c9a80efdfbf,0,1,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,3d1bae2a-4dfd-48e5-bfe9-b7e30c8475f6,0,1,8e07a76d-db30-491c-b296-181c8e689382,8e07a76d-db30-491c-b296-181c8e689382,0,1,4f1752ae-42d0-477d-854b-de143c428a85,4f1752ae-42d0-477d-854b-de143c428a85,0,1,1a41acdd-3503-4c69-b93b-eb1cb6749712,1a41acdd-3503-4c69-b93b-eb1cb6749712,0,1,0ddeed48-b98a-47c3-84a2-2eac065be06c,0ddeed48-b98a-47c3-84a2-2eac065be06c,0,1,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,7987fe2c-d7cc-4fd2-ac4e-610bfb1ab6d2,0,1,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,fc18d95e-a51d-45c0-83b0-09aeb2b5b03a,0,1,554b1360-d3cb-48c5-bfa6-ebcba5c9afc9,554b1360-d3cb-48c5-bfa6-ebcba5c9afc9,0,1,61b947a5-edca-43ca-82c4-5a7b529d8f82,61b947a5-edca-43ca-82c4-5a7b529d8f82,0,1,59eb6a7a-1d96-4985-8d8e-575162759415,59eb6a7a-1d96-4985-8d8e-575162759415,0,1,68564573-ed49-4519-a8b3-997865fe70a6,68564573-ed49-4519-a8b3-997865fe70a6,0,1,6c789969-d066-489d-ad88-92e2a5a6ec69,6c789969-d066-489d-ad88-92e2a5a6ec69,0,1,2a07d696-75d6-4a12-a310-30d6598b4a4c,2a07d696-75d6-4a12-a310-30d6598b4a4c,0,1,dde88f56-417c-4559-a893-85dc91e7e623,dde88f56-417c-4559-a893-85dc91e7e623,0,1,963eedab-6976-4a98-b9ad-b81f89239661,963eedab-6976-4a98-b9ad-b81f89239661,0,1,3370d43e-8e97-4411-8123-2bb2bcf60a75,3370d43e-8e97-4411-8123-2bb2bcf60a75,0,1,d9d377c9-406f-4bc9-8076-1f049348b816,d9d377c9-406f-4bc9-8076-1f049348b816,0,1,dcfcb108-3761-43d9-ad2a-29633bd1ae47,dcfcb108-3761-43d9-ad2a-29633bd1ae47,0,1,36baa776-83c4-413d-b70c-cbbc45e25662,36baa776-83c4-413d-b70c-cbbc45e25662,0,1,b65f9165-c20d-4053-8a0b-cff3f693b762,b65f9165-c20d-4053-8a0b-cff3f693b762,0,1,51af096b-687f-44f4-a0d8-306f670fc5ce,51af096b-687f-44f4-a0d8-306f670fc5ce,0,1,75972f88-aedd-4338-a3b5-320cd632a2e6,75972f88-aedd-4338-a3b5-320cd632a2e6,0,1,a720abc8-dcf0-4684-8d94-22d394a8e4df,a720abc8-dcf0-4684-8d94-22d394a8e4df,0,1,e40f53de-c27b-4e74-8241-f784d7ca5c84,e40f53de-c27b-4e74-8241-f784d7ca5c84,0,1,ef38b84d-277e-48c2-8826-330132eb6807,ef38b84d-277e-48c2-8826-330132eb6807,0,1,67a50910-059a-4724-84e0-c21bc3ac74c2,67a50910-059a-4724-84e0-c21bc3ac74c2,0,1,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,fdd83a89-a2fe-40d8-a531-a10bfeb36a1d,0,1,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,9e78a2b9-44fc-4971-801d-1ddd4bb09cfd,0,1,2c0d11fc-b927-4b5d-a16c-d60e69580824,2c0d11fc-b927-4b5d-a16c-d60e69580824,0,1,5251e744-666e-48a0-a5b4-9cef313c7631,5251e744-666e-48a0-a5b4-9cef313c7631,0,1,0b09cf2f-1759-4362-b997-29e09ac00445,0b09cf2f-1759-4362-b997-29e09ac00445,0,1,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,f6a9eb9c-a1c2-4114-b155-3ce94c7b7f20,0,1,828ddf5d-ca09-4baf-897f-77d569e02a6b,828ddf5d-ca09-4baf-897f-77d569e02a6b,0,1,8856015c-a695-4b1a-99ef-770263f9dc4a,8856015c-a695-4b1a-99ef-770263f9dc4a,0,1,183ec2b5-e173-4885-9e26-1098ffa15020,183ec2b5-e173-4885-9e26-1098ffa15020,0,1,74702fdf-bfc5-4658-ba58-e39bcfbaa647,74702fdf-bfc5-4658-ba58-e39bcfbaa647,0,1,2f436ec3-6a04-4d2c-998a-c60ea875ca86,2f436ec3-6a04-4d2c-998a-c60ea875ca86,0,1,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,6a947b2d-3e6b-42c8-a9fd-4c5a71d600a9,0,1,ae641a80-4ada-4592-ace9-29a82e6700e4,ae641a80-4ada-4592-ace9-29a82e6700e4,0,1,c6bf0d10-5406-44e8-b3f3-74b7db2b71e6,c6bf0d10-5406-44e8-b3f3-74b7db2b71e6,0,1,8d653af4-ac00-4ca9-a9e6-4e1a888c6dfb,8d653af4-ac00-4ca9-a9e6-4e1a888c6dfb,0,1,703453e8-cb49-491b-8e19-a17b89894d1e,703453e8-cb49-491b-8e19-a17b89894d1e,0,1,190bc52e-0d51-4dfc-9f16-99ed71ebfa75,190bc52e-0d51-4dfc-9f16-99ed71ebfa75,0,1,0c24858a-7e64-426f-9b59-392449aecaf5,0c24858a-7e64-426f-9b59-392449aecaf5,0,1,b1d61e28-f3dc-418b-b5df-f75622a4b980,b1d61e28-f3dc-418b-b5df-f75622a4b980,0,1,bec4c82f-4e76-4d16-bb4d-b6d9fa404c5d,bec4c82f-4e76-4d16-bb4d-b6d9fa404c5d,0,1,4033f86b-d250-475a-8837-071bf31664b0,4033f86b-d250-475a-8837-071bf31664b0,0,1,876e31ff-ab7b-4ea4-b491-161963727dd1,876e31ff-ab7b-4ea4-b491-161963727dd1,0,1,bb43995b-68b4-41a1-8458-e10a2d8925f1,bb43995b-68b4-41a1-8458-e10a2d8925f1,0,1,61730dd9-fed7-43ce-8f38-724cac8f3d08,61730dd9-fed7-43ce-8f38-724cac8f3d08,0,1,e6a494b8-27e7-46a6-9435-7be6e150a69e,e6a494b8-27e7-46a6-9435-7be6e150a69e,0,1,133dc852-59d3-4351-934d-8845f8a38431,133dc852-59d3-4351-934d-8845f8a38431,0,1,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,55dbaaf1-554d-46e2-b42a-ce6a8bf20dfb,0,1,b57eca91-04c2-4412-b5e2-f3c71f8ec602,b57eca91-04c2-4412-b5e2-f3c71f8ec602,0,1,b67914a8-d483-4bed-bd4d-a4aadd4998a4,b67914a8-d483-4bed-bd4d-a4aadd4998a4,0,1,744a52c8-6e4d-4356-a35a-3d2b01ad4a9f,744a52c8-6e4d-4356-a35a-3d2b01ad4a9f,0,1,707a8a49-fec5-454c-9e80-c3da829d395c,707a8a49-fec5-454c-9e80-c3da829d395c,0,1,6f630213-c16c-421c-a160-09e3c729ab26,6f630213-c16c-421c-a160-09e3c729ab26,0,1,878c638c-7c84-4914-896a-d4fdf0d759ef,878c638c-7c84-4914-896a-d4fdf0d759ef,0,1,6065653e-b7a9-4033-9617-f64430c57d89,6065653e-b7a9-4033-9617-f64430c57d89,0,1,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,9ec63da6-1f53-417f-9c7d-6879eaa56a7e,0,1,00d1d85b-c258-4f10-9d13-a99375a29fc1,00d1d85b-c258-4f10-9d13-a99375a29fc1,0,1,0544376f-461c-42c3-a102-e0ae65e3c0c6,0544376f-461c-42c3-a102-e0ae65e3c0c6,0,1,6df8d316-6ac3-4626-8951-1ad36d7049ed,6df8d316-6ac3-4626-8951-1ad36d7049ed,0,1,f211b418-899d-4220-a14b-4a7302183e46,f211b418-899d-4220-a14b-4a7302183e46,0,1,e499629a-69ed-46b4-be5d-7b1f2f6a11d4,e499629a-69ed-46b4-be5d-7b1f2f6a11d4,0,1,91af7a52-0825-4af5-94df-cc501e0123cd,91af7a52-0825-4af5-94df-cc501e0123cd,0,1,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,1c2cc78a-2ae6-4996-a743-7b55aecbe84c,0,1,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,9292bf81-5668-4d52-a4ec-a93bc4b0ad3b,0,1,c7b89521-f006-4749-b213-d7f7b0c8a004,c7b89521-f006-4749-b213-d7f7b0c8a004,0,1,401e8f3a-82a4-4f12-9ff1-27440d0a0ed6,401e8f3a-82a4-4f12-9ff1-27440d0a0ed6,0,1,7918eee4-7c9e-4a7a-808e-4ed0fd7bbe41,7918eee4-7c9e-4a7a-808e-4ed0fd7bbe41,0,1,81f8f558-c98b-4999-83f3-4ac06fb79dca,81f8f558-c98b-4999-83f3-4ac06fb79dca,0,1,7b8f082d-0a64-4fad-a33d-af7011a7f33d,7b8f082d-0a64-4fad-a33d-af7011a7f33d,0,1,49f61632-e899-425a-b16a-769f795bdf5f,49f61632-e899-425a-b16a-769f795bdf5f,0,1,c264a337-b573-408a-b77b-c6524ca1687b,c264a337-b573-408a-b77b-c6524ca1687b,0,1,92396874-0d4a-4d8e-b15b-01bc7504d5da,92396874-0d4a-4d8e-b15b-01bc7504d5da,0,1,3e58d607-b906-449f-b044-9c130a487b86,3e58d607-b906-449f-b044-9c130a487b86,0,1,7a911212-7fde-4ea8-a1fa-229116b60895,7a911212-7fde-4ea8-a1fa-229116b60895,0,1,f4580043-5bc2-4295-8523-909302009b44,f4580043-5bc2-4295-8523-909302009b44,0,1,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,dc8af632-a5a4-4270-ba5f-2d3ba506f7e3,0,1,81936ac2-32fe-4e14-897b-0aba92b90c05,81936ac2-32fe-4e14-897b-0aba92b90c05,0,1,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,9f88e355-3f8f-4fcd-b45f-39c3d45490f5,0,1,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,52ab6aea-e6a0-43f0-9cc8-f7c9126635cc,0,1,876b23bf-2f48-4916-ad0f-4de8306e1864,876b23bf-2f48-4916-ad0f-4de8306e1864,0,1,e983f539-e369-491e-9cee-510518187870,e983f539-e369-491e-9cee-510518187870,0,1,f8d8f958-bf7b-4070-9b5a-8410b9786cbf,f8d8f958-bf7b-4070-9b5a-8410b9786cbf,0,1,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,9a402a9c-a31f-4082-91d5-b4fe7576a5c2,0,1,e99a1b17-0e37-489a-bc39-3dd2e23b0861,e99a1b17-0e37-489a-bc39-3dd2e23b0861,0,1,e7c63a25-c804-4bc4-a6f1-81009dd889e2,e7c63a25-c804-4bc4-a6f1-81009dd889e2,0,1,1faacc47-680d-48ac-8933-daa76519f24f,1faacc47-680d-48ac-8933-daa76519f24f,0,1,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,7ccd86cd-4294-4f6c-84f4-98e25e479f4d,0,1,70e710c5-42df-465f-a9c5-8345c87e1f19,70e710c5-42df-465f-a9c5-8345c87e1f19,0,1,4c1576c4-b327-4ec1-87bc-662c5aba343b,4c1576c4-b327-4ec1-87bc-662c5aba343b,0,1,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0f694ef1-4a97-4aed-ab4b-0b2c18ea7e17,0,1,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,14facdfb-9835-4bb6-98a8-5a6ca9a5d2f8,0,1,4492ac73-eb91-41f8-98f1-54c2b3ad212a,4492ac73-eb91-41f8-98f1-54c2b3ad212a,0,1,869b43fb-968f-4fe0-b945-5030c90a38f2,869b43fb-968f-4fe0-b945-5030c90a38f2,0,1,af071a52-212b-4131-98e6-81f6048a70e6,af071a52-212b-4131-98e6-81f6048a70e6,0,1,64eff9f4-c57b-40a0-bd83-7e371fd010ce,64eff9f4-c57b-40a0-bd83-7e371fd010ce,0,1,0eee931a-57bb-4844-8e6e-eaca342640a0,0eee931a-57bb-4844-8e6e-eaca342640a0,0,1,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,3f289f67-dfc7-4f2d-90e4-b47aff76ecdb,0,1,37210dde-9a2f-475c-8341-578ac99f0e17,37210dde-9a2f-475c-8341-578ac99f0e17,0,1,3d662173-e19d-4077-9a08-8c8899226e24,3d662173-e19d-4077-9a08-8c8899226e24,0,1,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,706a3db0-9d4f-4c08-91cd-3ccaa6d06d3b,0,1,3a8fffb6-a732-440c-afb9-d1c699ea53b6,3a8fffb6-a732-440c-afb9-d1c699ea53b6,0,1,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,33dd6bba-0044-4e2f-ae9e-c8a26079ab2a,0,1,a1d91c5f-1acd-4b46-887e-d06e7260dd20,a1d91c5f-1acd-4b46-887e-d06e7260dd20,0,1,3fd26019-c464-4c73-b18e-0888740b1747,3fd26019-c464-4c73-b18e-0888740b1747,0,1,9aadad98-69f5-41ce-ad1c-0afd8c610d86,9aadad98-69f5-41ce-ad1c-0afd8c610d86,0,1,69fd1e6e-7302-4ca8-8419-ec567ae66bef,69fd1e6e-7302-4ca8-8419-ec567ae66bef,0,1,b0650787-8ff5-4407-b491-bcdc2f61fd58,b0650787-8ff5-4407-b491-bcdc2f61fd58,0,1,d792831c-698d-40c6-96c2-dd0ae6f30707,d792831c-698d-40c6-96c2-dd0ae6f30707,0,1,6f9a3d00-d935-4fa6-9fd2-14700226daff,6f9a3d00-d935-4fa6-9fd2-14700226daff,0,1,a21989bd-a57f-4969-be3b-d8b39ead4145,a21989bd-a57f-4969-be3b-d8b39ead4145,0,1,c4aee120-cdbb-4b48-a1c7-99cccbafb120,c4aee120-cdbb-4b48-a1c7-99cccbafb120,0,1,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,6b3e07d5-9299-4933-b3fa-c3cc5f5aa7c9,0,1,a3667b25-7c18-446d-a318-685a4fe4bf89,a3667b25-7c18-446d-a318-685a4fe4bf89,0,1,8103f12c-ed50-4052-8117-33b6d11ef620,8103f12c-ed50-4052-8117-33b6d11ef620,0,1,498b012b-bb63-490e-8100-1d33dc84b400,498b012b-bb63-490e-8100-1d33dc84b400,0,1,7c7857b6-90e8-4b3f-9902-fd81bf68d133,7c7857b6-90e8-4b3f-9902-fd81bf68d133,0,1,617de19c-bf01-4900-832a-c169e9faeb79,617de19c-bf01-4900-832a-c169e9faeb79,0,1,70b73fd0-f5dc-411e-9bbb-10a538e8281b,70b73fd0-f5dc-411e-9bbb-10a538e8281b,0,1,758f44ad-54da-4f72-accf-0afecc4f4827,758f44ad-54da-4f72-accf-0afecc4f4827,0,1,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,7c424a77-2a83-4a85-8b7d-e8bb6d013c77,0,1,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,ecaba9aa-fca7-42f5-a4fe-d8176cf875b9,0,1,4378ab20-5467-476b-8f04-4b6876efdee6,4378ab20-5467-476b-8f04-4b6876efdee6,0,1,55e47901-c79c-41c5-9d7f-6b6846ed2782,55e47901-c79c-41c5-9d7f-6b6846ed2782,0,1,53a5804c-e0a1-4cee-9840-d2042aac856a,53a5804c-e0a1-4cee-9840-d2042aac856a,0,1,11653320-6fe9-4c1a-82d0-448a22aec167,11653320-6fe9-4c1a-82d0-448a22aec167,0,1,0a7bad82-68a3-42c3-91d6-d9eec1a03e69,0a7bad82-68a3-42c3-91d6-d9eec1a03e69,0,1,2a304dc5-31a0-46a9-bb63-7ebdbfb810c0,2a304dc5-31a0-46a9-bb63-7ebdbfb810c0,0,1,3c429fe8-e663-4a58-817f-8f8382697dbb,3c429fe8-e663-4a58-817f-8f8382697dbb,0,1,c37be0c3-d2db-4e63-a8cb-7956a5396650,c37be0c3-d2db-4e63-a8cb-7956a5396650,0,1,83180e0d-fc4b-41ec-9a17-5af555a4776f,83180e0d-fc4b-41ec-9a17-5af555a4776f,0,1,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,7f68e4c1-c4f7-4c6c-8f0a-225e544e07ee,0,1,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,f03cdb56-ef3f-461f-91b1-cdcaed2786e8,0,1,3e8c6546-416c-4437-8c85-2cf591b4fc3f,3e8c6546-416c-4437-8c85-2cf591b4fc3f,0,1,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,038e5027-3cc5-4ea2-b0b5-28a7544ad53e,0,1,9a0b27db-e4ac-496b-b6de-876b90381527,9a0b27db-e4ac-496b-b6de-876b90381527,0,1,bac41d45-249f-40b4-a013-008e261369c8,bac41d45-249f-40b4-a013-008e261369c8,0,1,84e34b4a-02e8-4676-8b81-771ddf3c2931,84e34b4a-02e8-4676-8b81-771ddf3c2931,0,1,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0aa6a024-66ae-4592-87d6-f7cb2a59f906,0,1,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,734b4dc5-dc91-4945-a2d7-cefe56a6e0a6,0,1,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,bb2dcb37-410d-4a6c-9ace-1f04177d6e88,0,1,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,cb6ecc18-a14f-4c3c-a39d-2cd2d1ab4e03,0,1,f71ac535-74a5-4001-a613-455a9e1bf734,f71ac535-74a5-4001-a613-455a9e1bf734,0,1,55a42b83-b6d2-409b-a8ff-7849b08e07ed,55a42b83-b6d2-409b-a8ff-7849b08e07ed,0,1,61889399-ecc2-442c-a790-a8b27a7a540c,61889399-ecc2-442c-a790-a8b27a7a540c,0,1,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,ecd3a928-3e59-439c-8f58-ba360f2a8b3c,0,1,4ee2efbc-bc4a-4b47-bfdb-bb83f108c5bb,4ee2efbc-bc4a-4b47-bfdb-bb83f108c5bb,0,1,d6aed0fd-686c-430d-b884-74494177422e,d6aed0fd-686c-430d-b884-74494177422e,0,1,245ec4aa-ed65-41f7-b0f0-f8085cfc5bef,245ec4aa-ed65-41f7-b0f0-f8085cfc5bef,0,1,3ed64288-8bf0-4049-8d44-1b424f31d40f,3ed64288-8bf0-4049-8d44-1b424f31d40f,0,1,a21cf522-d657-49ba-a198-01ff1de5e3f0,a21cf522-d657-49ba-a198-01ff1de5e3f0,0,1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,4dc698da-8471-4b3f-816d-f1467cd2e5f1,0,1,7ceb2f18-4dae-4b13-a5be-e949be165b4e,7ceb2f18-4dae-4b13-a5be-e949be165b4e,0,1,c4f94f6d-e33f-4226-bf47-c4b544098082,c4f94f6d-e33f-4226-bf47-c4b544098082,0,1,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0abca5b8-4974-48aa-bf5d-dbbe2c2ea0e6,0,1,4e892154-3279-492c-9eae-124304225c5d,4e892154-3279-492c-9eae-124304225c5d,0,1,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,53a6ffa4-31f8-4717-9ecc-2852e6e4cce9,0,1,575a135a-6ffd-4ae8-a597-7e584df9bac4,575a135a-6ffd-4ae8-a597-7e584df9bac4,0,1,693a7196-f525-4bd2-a417-e902977f21cb,693a7196-f525-4bd2-a417-e902977f21cb,0,1,9bb39184-08b7-440e-a8f8-5caf0083ba0f,9bb39184-08b7-440e-a8f8-5caf0083ba0f,0,1,d48e817e-f6a4-47e5-a052-35d09e066490,d48e817e-f6a4-47e5-a052-35d09e066490,0,1,091cb921-c7e3-4a5f-97b7-34e625159b9c,091cb921-c7e3-4a5f-97b7-34e625159b9c,0,1,f6118cdd-1dcd-464e-a49d-e95c69466750,f6118cdd-1dcd-464e-a49d-e95c69466750,0,1,39932897-959b-41a6-94ad-61426abfdbd9,39932897-959b-41a6-94ad-61426abfdbd9,0,1,c56ea6f3-1032-4b7a-a20e-e912196da1cd,c56ea6f3-1032-4b7a-a20e-e912196da1cd,0,1,b69b611d-18d3-4e78-8a09-f010bcf9c261,b69b611d-18d3-4e78-8a09-f010bcf9c261,0,1,e8e087c1-9131-4037-8562-8bce8c38f78c,e8e087c1-9131-4037-8562-8bce8c38f78c,0,1,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,3b1c9126-9b9f-4658-967c-cc9ef5b1000f,0,1,6adaef8e-82b6-4664-9748-4f41b170d91a,6adaef8e-82b6-4664-9748-4f41b170d91a,0,1,20d655a7-788c-48bc-83ae-25003106bedb,20d655a7-788c-48bc-83ae-25003106bedb,0,1,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,7bfb78de-899f-4a4d-a8b2-ebadeccf3921,0,1,68a72014-4b2e-4347-aaa7-54d95b8eb919,68a72014-4b2e-4347-aaa7-54d95b8eb919,0,1,a71d9c41-7510-4d38-90df-1034977b8f45,a71d9c41-7510-4d38-90df-1034977b8f45,0,1,25830f5b-27e2-4eff-9728-b21eb498727d,25830f5b-27e2-4eff-9728-b21eb498727d,0,1,379c9295-d0d5-418d-82f3-5ae19985cc53,379c9295-d0d5-418d-82f3-5ae19985cc53,0,1,af02f534-8508-4f9f-bcc1-0c6f3d696971,af02f534-8508-4f9f-bcc1-0c6f3d696971,0,1,dd345cfb-ea0c-4ea8-9b35-22547b000275,dd345cfb-ea0c-4ea8-9b35-22547b000275,0,1,86a871da-3725-43a1-a7c3-98acd187011b,86a871da-3725-43a1-a7c3-98acd187011b,0,1,2447cfeb-d877-4222-8ac2-b0026b85f932,2447cfeb-d877-4222-8ac2-b0026b85f932,0,1,fb94e9cb-1f27-42a6-a701-18bbe5888e70,fb94e9cb-1f27-42a6-a701-18bbe5888e70,0,1,2e26e32e-a0c6-4460-99de-865622202166,2e26e32e-a0c6-4460-99de-865622202166,0,1,c9489a6e-45af-4877-9788-158071571a0a,c9489a6e-45af-4877-9788-158071571a0a,0,1,23959912-f8fc-42bc-9ec2-1d520ebc5dad,23959912-f8fc-42bc-9ec2-1d520ebc5dad,0,1,5ef026c2-2ef4-45d6-9792-5ba0d298714b,5ef026c2-2ef4-45d6-9792-5ba0d298714b,0,1,45d61391-4cf7-4f45-8775-ada582c42400,45d61391-4cf7-4f45-8775-ada582c42400,0,1,78b2a913-2ab9-455d-85a3-504f0f468468,78b2a913-2ab9-455d-85a3-504f0f468468,0,1,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,8c7e1080-fbb2-4a9c-b740-b3e9eb996565,0,1,560b5b12-4dee-4c69-ab6b-7680757a2797,560b5b12-4dee-4c69-ab6b-7680757a2797,0,1,3cfb1ce0-de42-4914-85c0-807d0c10f77e,3cfb1ce0-de42-4914-85c0-807d0c10f77e,0,1,a27244c2-ac65-423f-afce-42efd288a83d,a27244c2-ac65-423f-afce-42efd288a83d,0,1,d4002184-8e08-4dcc-9070-62f595e82e23,d4002184-8e08-4dcc-9070-62f595e82e23,0,1,62163fda-1a09-4d4f-b290-76ff324042ab,62163fda-1a09-4d4f-b290-76ff324042ab,0,1,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,f2816dd2-47dd-41e8-9709-6dac1e4f4d21,0,1,6e6a1557-06fa-45c0-ad98-c43809553cd7,6e6a1557-06fa-45c0-ad98-c43809553cd7,0,1,179f7436-e328-42b8-9382-19ee6f10c768,179f7436-e328-42b8-9382-19ee6f10c768,0,1,0333cd9e-392d-40b2-869d-ad47119e0384,0333cd9e-392d-40b2-869d-ad47119e0384,0,1,82cc8820-0b92-4bb7-b097-7ac79e922f01,82cc8820-0b92-4bb7-b097-7ac79e922f01,0,1,f2267d6c-6972-4621-b677-87798056363b,f2267d6c-6972-4621-b677-87798056363b,0,1,243d201b-3714-4700-b410-c74c9093e6f6,243d201b-3714-4700-b410-c74c9093e6f6,0,1,de3cb50c-ef99-419e-b922-c6a453da6a5b,de3cb50c-ef99-419e-b922-c6a453da6a5b,0,1,d4ca4802-756a-494c-bab3-e77e0777a3fa,d4ca4802-756a-494c-bab3-e77e0777a3fa,0,1,134c1054-8d65-405f-ba3b-5beeca803a72,134c1054-8d65-405f-ba3b-5beeca803a72,0,1,cfa1669b-5310-4171-83fd-4dff3c6ac345,cfa1669b-5310-4171-83fd-4dff3c6ac345,0,1,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,9ec26d14-b09d-4fd7-9c43-062c0120cf3d,0,1,aec7df6a-21a1-495d-b0a9-3769e1069888,aec7df6a-21a1-495d-b0a9-3769e1069888,0,1,463b98bf-b4d4-4edb-995d-0a75ff29b60d,463b98bf-b4d4-4edb-995d-0a75ff29b60d,0,1,317f88a7-12a4-4d21-b637-3050525406f4,317f88a7-12a4-4d21-b637-3050525406f4,0,1,2d9d2319-68fb-436d-b431-98858b88a75a,2d9d2319-68fb-436d-b431-98858b88a75a,0,1,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,8a0d4f7f-7a80-4e5d-8238-05fc169e0319,0,1,a8e14d2e-911d-4096-9027-deb7a08838e0,a8e14d2e-911d-4096-9027-deb7a08838e0,0,1,8e9f9baf-8d12-46cc-915f-f6f290af5512,8e9f9baf-8d12-46cc-915f-f6f290af5512,0,1,6200ebce-5189-473a-9824-db733d78fcb2,6200ebce-5189-473a-9824-db733d78fcb2,0,1,5808331f-9ab4-4a23-a592-1f65087f3214,5808331f-9ab4-4a23-a592-1f65087f3214,0,1,600092a5-0fc4-4ea1-91bd-8fadcc137d8a,600092a5-0fc4-4ea1-91bd-8fadcc137d8a,0,1,c6e65fa9-3077-43c2-aff7-61cc05760fac,c6e65fa9-3077-43c2-aff7-61cc05760fac,0,1,9316738d-3d38-4068-818e-a001355b19fb,9316738d-3d38-4068-818e-a001355b19fb,0,1,d86d766f-021a-4c11-b9e8-403af08918cc,d86d766f-021a-4c11-b9e8-403af08918cc,0,1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,2cedfef0-5d93-475a-b2dd-ee36e553e6e1,0,1,29200d04-d7da-435a-89e6-858c11a1a98c,29200d04-d7da-435a-89e6-858c11a1a98c,0,1,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,8e5f6c70-04b3-46a1-94ef-82c9f6019f8f,0,1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,6c119ef2-d24b-4c3d-ad07-611bed89cab1,0,1,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,13b1cb1f-88df-4ff8-b4cc-0473e4f96005,0,1,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0e861ad8-6fa3-4b0f-a9b0-6c91df1dfc6b,0,1,27df6c22-85d7-4cb6-be19-82af76c84bf9,27df6c22-85d7-4cb6-be19-82af76c84bf9,0,1,4ec242e0-75d1-4bf7-be18-783e7aa4f236,4ec242e0-75d1-4bf7-be18-783e7aa4f236,0,1,e02b1366-9d7a-462f-86a1-436bbf4532ff,e02b1366-9d7a-462f-86a1-436bbf4532ff,0,1,40ee729c-c317-4a1c-b985-5f7e4e1e20fb,40ee729c-c317-4a1c-b985-5f7e4e1e20fb,0,1,2feb35c0-b046-4086-a2ce-ccc462fc6e9c,2feb35c0-b046-4086-a2ce-ccc462fc6e9c,0,1,8811cc64-99d9-4f13-8309-c29965783f5a,8811cc64-99d9-4f13-8309-c29965783f5a,0,1,7c737071-e850-4a3f-8942-697ef52a8ecc,7c737071-e850-4a3f-8942-697ef52a8ecc,0,1,62eff222-7b74-4cab-9138-880db1f05147,62eff222-7b74-4cab-9138-880db1f05147,0,1,39c6c277-cfc6-4e8a-8e7f-afcff55f0511,39c6c277-cfc6-4e8a-8e7f-afcff55f0511,0,1,860f8893-22fe-4b13-adb1-24e1ea8c6544,860f8893-22fe-4b13-adb1-24e1ea8c6544,0,1,95266e9f-073f-4de3-83c6-cc0d9ee9334f,95266e9f-073f-4de3-83c6-cc0d9ee9334f,0,1,21b8ac8d-75ca-481c-8e85-01bc2029f0c0,21b8ac8d-75ca-481c-8e85-01bc2029f0c0,0,1,b6c94efd-5994-4c4c-a641-b062ecc38b65,b6c94efd-5994-4c4c-a641-b062ecc38b65,0,1,98501228-7f0e-45a3-b58f-4c654f393f80,98501228-7f0e-45a3-b58f-4c654f393f80,0,1,502384c9-edb7-451a-b7ea-de006f657a6e,502384c9-edb7-451a-b7ea-de006f657a6e,0,1,4e1a4fe0-dca4-40ba-9369-73be303a4aef,4e1a4fe0-dca4-40ba-9369-73be303a4aef,0,1,329906a0-0b61-4f3f-8cd0-f06a78e8fe5f,329906a0-0b61-4f3f-8cd0-f06a78e8fe5f,0,1,840e0b1b-a599-4c5f-8eaa-7f7e4f2e55a4,840e0b1b-a599-4c5f-8eaa-7f7e4f2e55a4,0,1,1d06a9e4-e637-4219-a81c-64f8ec1b91a4,1d06a9e4-e637-4219-a81c-64f8ec1b91a4,0,1,50968921-76f3-4108-835a-96b153671c8d,50968921-76f3-4108-835a-96b153671c8d,0,1,b773f510-1485-4886-9071-afcbf49ff856,b773f510-1485-4886-9071-afcbf49ff856,0,1,964403f2-0a87-49e1-b183-dbe3624e3805,964403f2-0a87-49e1-b183-dbe3624e3805,0,1,d49411b4-5f6d-48c5-b4f8-fdfbd1b73317,d49411b4-5f6d-48c5-b4f8-fdfbd1b73317,0,1,8b3da21b-ea3f-47cf-af48-15b886b21f20,8b3da21b-ea3f-47cf-af48-15b886b21f20,0,1,32c4750b-0096-4bbc-8dcd-c1f717734233,32c4750b-0096-4bbc-8dcd-c1f717734233,0,1,be6740b1-1f57-4c01-a67a-d48152931dc8,be6740b1-1f57-4c01-a67a-d48152931dc8,0,1,40fd038d-a93a-4be7-9221-d8ae83350ca0,40fd038d-a93a-4be7-9221-d8ae83350ca0,0,1,e9fcabef-5067-477b-8cb0-1bf3ab8161c5,e9fcabef-5067-477b-8cb0-1bf3ab8161c5,0,1,29adc9e5-a994-48ab-a5a1-919d01119c3a,29adc9e5-a994-48ab-a5a1-919d01119c3a,0,1,c47ffce7-c905-4e88-8b1f-156f47047ccd,c47ffce7-c905-4e88-8b1f-156f47047ccd,0,1,e1755eed-88cf-42c1-83e4-f9047f2c30bf,e1755eed-88cf-42c1-83e4-f9047f2c30bf,0,1,c6ec9d48-9131-4735-9cf7-b498705a57e4,c6ec9d48-9131-4735-9cf7-b498705a57e4,0,1,865d76f7-db4a-4fa2-8e1c-3ecbc2d8faf4,865d76f7-db4a-4fa2-8e1c-3ecbc2d8faf4,0,1,706c421a-74ce-4985-9443-b4a2032481f6,706c421a-74ce-4985-9443-b4a2032481f6,0,1,64da4c24-4aaf-42c8-8595-7f60ff3bc344,64da4c24-4aaf-42c8-8595-7f60ff3bc344,0,1,fb9577e1-00d9-4d52-8de9-23914929a683,fb9577e1-00d9-4d52-8de9-23914929a683,0,1,ffd62a16-f2b4-4e3a-8849-15b957a3d1a1,ffd62a16-f2b4-4e3a-8849-15b957a3d1a1,0,1,529253ae-9c92-4426-b150-8444ba622f89,529253ae-9c92-4426-b150-8444ba622f89,0,1,06a1955a-2ef0-4607-9dcb-a480a7951af7,06a1955a-2ef0-4607-9dcb-a480a7951af7,0,1,6f8fcc96-bfed-444a-908d-95c5b1c64972,6f8fcc96-bfed-444a-908d-95c5b1c64972,0,1,97ce4bf2-6580-4f27-8b5d-d60b66a09c9e,97ce4bf2-6580-4f27-8b5d-d60b66a09c9e,0,1,a84c89d9-2cfe-405f-9bb0-5392b3171695,a84c89d9-2cfe-405f-9bb0-5392b3171695,0,1,070ecbfe-88d6-4de8-b236-e7eedbc3ebc6,070ecbfe-88d6-4de8-b236-e7eedbc3ebc6,0,1,91e26e73-027f-4a10-9083-e5182e768723,91e26e73-027f-4a10-9083-e5182e768723,0,1,e55680f4-cb1a-4cdb-88f0-5d82f43c1d05,e55680f4-cb1a-4cdb-88f0-5d82f43c1d05,0,1,54433668-4391-4dea-8baf-43e9aa1d624e,54433668-4391-4dea-8baf-43e9aa1d624e,0,1,fc309616-060a-42c3-8401-dfef0f359bc5,fc309616-060a-42c3-8401-dfef0f359bc5,0,1,b968398d-973d-4643-95a5-16633d7e48bc,b968398d-973d-4643-95a5-16633d7e48bc,0,1,b9507495-2536-4895-b68b-62acd74343f6,b9507495-2536-4895-b68b-62acd74343f6,0,1,e05a14cc-9051-4c38-9725-19856e36d260,e05a14cc-9051-4c38-9725-19856e36d260,0,1,8154aa0f-ecd6-4ab0-9498-56ef25486a55,8154aa0f-ecd6-4ab0-9498-56ef25486a55,0,1,9d6429f7-23da-4596-822a-04818deb3088,9d6429f7-23da-4596-822a-04818deb3088,0,1,a1b67bd2-3220-497d-b2b4-bd0ea62d9111,a1b67bd2-3220-497d-b2b4-bd0ea62d9111,0,1,acb533e7-4610-4f92-b548-1a4ff1a423d4,acb533e7-4610-4f92-b548-1a4ff1a423d4,0,1,8697999d-9cdb-43d8-979b-3f283daffdd3,8697999d-9cdb-43d8-979b-3f283daffdd3,0,1,23378687-249c-4ec6-99b8-b13fb04b8643,23378687-249c-4ec6-99b8-b13fb04b8643,0,1,66315b12-7abf-46e0-a994-894b827b1301,66315b12-7abf-46e0-a994-894b827b1301,0,1,dba174fb-8392-4451-8069-ae8145658e34,dba174fb-8392-4451-8069-ae8145658e34,0,1,ff5dd4f8-8a16-4a41-875d-c4f7c37ae67a,ff5dd4f8-8a16-4a41-875d-c4f7c37ae67a,0,1,4435d99d-a1df-43e6-97ab-5e651017c61d,4435d99d-a1df-43e6-97ab-5e651017c61d,0,1,fb58d277-b2a5-4a72-8d45-170c6f6263f9,fb58d277-b2a5-4a72-8d45-170c6f6263f9,0,1,325ed391-8558-4f03-9784-cde1f2a32944,325ed391-8558-4f03-9784-cde1f2a32944,0,1,f6cda05a-0f8f-4aa2-9686-1735c4207db3,f6cda05a-0f8f-4aa2-9686-1735c4207db3,0,1,0761ea58-8358-49ba-8e2d-e6afe88f6899,0761ea58-8358-49ba-8e2d-e6afe88f6899,0,1,da09e340-7cc0-4830-917a-5a59c42bbbf7,da09e340-7cc0-4830-917a-5a59c42bbbf7,0,1,c325aa12-9564-4033-8d3e-3103df55427f,c325aa12-9564-4033-8d3e-3103df55427f,0,1,9f4d4834-6994-4573-b99d-a5051746e5f9,9f4d4834-6994-4573-b99d-a5051746e5f9,0,1,c8ef3db5-2562-4f80-a679-86c2ba288ebf,c8ef3db5-2562-4f80-a679-86c2ba288ebf,0,1,2398d69d-ecdd-4d34-bdae-34ed5507a61e,2398d69d-ecdd-4d34-bdae-34ed5507a61e,0,1,a707035a-0172-4b55-b589-fa4a8be9b596,a707035a-0172-4b55-b589-fa4a8be9b596,0,1,c4456e94-8c76-49b1-b85a-433e0f65bdb0,c4456e94-8c76-49b1-b85a-433e0f65bdb0,0,1,4a347209-3a07-48ea-b407-6ee37f1d69f2,4a347209-3a07-48ea-b407-6ee37f1d69f2,0,1,e0a3fab1-3fe9-4927-840e-f983f72bdfc1,e0a3fab1-3fe9-4927-840e-f983f72bdfc1,0,1,df31eee8-387d-40d1-98df-1f7d8176b50e,df31eee8-387d-40d1-98df-1f7d8176b50e,0,1,c8364283-5525-4bef-8e96-abced54c6a4a,c8364283-5525-4bef-8e96-abced54c6a4a,0,1,40e2fb30-bb03-4178-a8eb-ddf48337ef23,40e2fb30-bb03-4178-a8eb-ddf48337ef23,0,1,1026fbcb-acd8-40dc-b638-6e02c6378c55,1026fbcb-acd8-40dc-b638-6e02c6378c55,0,1,dc9e2ba6-f4f1-493f-9054-cac633f239dd,dc9e2ba6-f4f1-493f-9054-cac633f239dd,0,1,7b95d0b1-c7b2-43b4-9119-320cb8912032,7b95d0b1-c7b2-43b4-9119-320cb8912032,0,1,004582b7-00aa-405e-8e24-ce76c945edae,004582b7-00aa-405e-8e24-ce76c945edae,0,1,97a9b005-a836-4308-8e63-0e00f6890baa,97a9b005-a836-4308-8e63-0e00f6890baa,0,1,98c34ada-0b78-41db-9183-6d7b9e466bde,98c34ada-0b78-41db-9183-6d7b9e466bde,0,1,fb688339-918e-40a1-8721-a26f3077973e,fb688339-918e-40a1-8721-a26f3077973e,0,1,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,1f56de63-81eb-4de5-ad20-01cb6f84e5b0,0,1,079ba95c-8293-47e2-b8bd-7acf73c2d880,079ba95c-8293-47e2-b8bd-7acf73c2d880,0,1,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,fbe1dcf7-c11d-4395-ab3a-c2f986c25419,0,1,a5f264a8-a547-4653-abb1-eb1666d527dc,a5f264a8-a547-4653-abb1-eb1666d527dc,0,1,d1b6c5e8-7625-43aa-bb11-943c9bfa01b7,d1b6c5e8-7625-43aa-bb11-943c9bfa01b7,0,1,83d23220-0226-4efe-a81c-6809459443a2,83d23220-0226-4efe-a81c-6809459443a2,0,1,ee30252f-ea25-4d50-b49c-163514bee342,ee30252f-ea25-4d50-b49c-163514bee342,0,1,02afc219-6b86-4282-ab6f-2688203542b7,02afc219-6b86-4282-ab6f-2688203542b7,0,1,dabae379-6356-497a-aab5-cf102f16a72a,dabae379-6356-497a-aab5-cf102f16a72a,0,1,337370e0-1021-4887-9d38-6c3833c90a5b,337370e0-1021-4887-9d38-6c3833c90a5b,0,1,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0ff569eb-d5b8-4ab1-ac77-5e5afd6d44d0,0,1,d6f01f1c-801b-4776-ae11-48236103f76a,d6f01f1c-801b-4776-ae11-48236103f76a,0,1,b6fe68cf-657b-40e0-af2e-247607a86519,b6fe68cf-657b-40e0-af2e-247607a86519,0,1,9b0b8191-94b7-428f-be86-e9e4cd24a72f,9b0b8191-94b7-428f-be86-e9e4cd24a72f,0,1,a923dbcb-7146-4445-ad17-f4a32c16a837,a923dbcb-7146-4445-ad17-f4a32c16a837,0,1,41dec792-1d1a-4e06-a54b-a86193b98225,41dec792-1d1a-4e06-a54b-a86193b98225,0,1,52257beb-3e0c-4681-b430-9690398cd13a,52257beb-3e0c-4681-b430-9690398cd13a,0,1,f71bd0e8-8784-452e-bea9-3696c875d69d,f71bd0e8-8784-452e-bea9-3696c875d69d,0,1,135e637c-c28e-4547-8da2-d897dca54cb2,135e637c-c28e-4547-8da2-d897dca54cb2,0,1,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,245be006-6d0a-4c9e-97c5-f3c2ddd734f7,0,1,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,a0b74de9-06b5-416c-9dd0-2f9dc209fe91,0,1,5356543a-db9a-4265-b83f-31d45544c8e6,5356543a-db9a-4265-b83f-31d45544c8e6,0,1,857dd311-9c6d-4dba-82d8-283d7b05b09e,857dd311-9c6d-4dba-82d8-283d7b05b09e,0,1,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,1055d15b-8cb5-4ff0-a526-7fd20a08a96c,0,1,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,1a4ed7cf-3294-4a5c-9650-75b61d6b2531,0,1,81ef02df-498d-4af0-8254-dc6730cbf140,81ef02df-498d-4af0-8254-dc6730cbf140,0,1,872521e3-413c-45ac-a6ea-39fe1324bae8,872521e3-413c-45ac-a6ea-39fe1324bae8,0,1,c4968b4e-0715-43a5-92ad-c8cd276fbf7b,c4968b4e-0715-43a5-92ad-c8cd276fbf7b,0,1,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,402f2fe0-4d08-4701-9c8f-0c2bb75815ef,0,1,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,8cad6cfd-91d0-4563-800a-d60c8a1b6a03,0,1,2902460a-ed86-41cf-8e8f-895adab9a72f,2902460a-ed86-41cf-8e8f-895adab9a72f,0,1,f82d5bd6-4c74-4c23-978c-565aae3d752a,f82d5bd6-4c74-4c23-978c-565aae3d752a,0,1,403d4675-b80e-4e0a-8cc0-2876661d0c89,403d4675-b80e-4e0a-8cc0-2876661d0c89,0,1,7fba41a5-4faa-412b-b367-b30ced0314c0,7fba41a5-4faa-412b-b367-b30ced0314c0,0,1,98422d20-9a71-40e4-966e-6958d44eaefb,98422d20-9a71-40e4-966e-6958d44eaefb,0,1,37333d0b-3589-4b8b-bf6c-e605e0287b66,37333d0b-3589-4b8b-bf6c-e605e0287b66,0,1,d671bea8-51b2-4a93-9594-3ae6bb1ace52,d671bea8-51b2-4a93-9594-3ae6bb1ace52,0,1,ad083c26-7461-4e94-b524-0174242fbd91,ad083c26-7461-4e94-b524-0174242fbd91,0,1,5ce39370-f918-493f-bb24-53346b6fd836,5ce39370-f918-493f-bb24-53346b6fd836,0,1,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,84f22fd2-e0d0-42ce-8628-1b13c021a4cb,0,1,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0e3d2750-bb4c-42b9-9829-60f1480ced9c,0,1,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,dad11c2e-08fc-4a6b-8829-8be6c64c15fc,0,1,a76b1fd1-ba00-40e6-8756-f17fee449818,a76b1fd1-ba00-40e6-8756-f17fee449818,0,1,5c913626-48d1-4e0a-a423-64078ce59c7b,5c913626-48d1-4e0a-a423-64078ce59c7b,0,1,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0a4e6b7a-b380-4547-bc3c-5d6895a5d19a,0,1,7b0ec304-1904-413e-a9c6-ff62e87107dd,7b0ec304-1904-413e-a9c6-ff62e87107dd,0,1,d4dd8c96-914d-496f-b735-ef85ec473605,d4dd8c96-914d-496f-b735-ef85ec473605,0,1,62517db4-59e6-4945-bcd6-b3f1845572bf,62517db4-59e6-4945-bcd6-b3f1845572bf,0,1,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,a6a9dd40-24cd-4d40-a12d-44f94f8c05a7,0,1,f0f72149-0e7f-441a-b70d-8f47d4977927,f0f72149-0e7f-441a-b70d-8f47d4977927,0,1,776efc3e-ac27-4550-bafd-6e91aa987af2,776efc3e-ac27-4550-bafd-6e91aa987af2,0,1,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,9f478c85-b72c-40ae-aa08-7ddf73b5b15c,0,1,cc438366-85ea-48be-8b74-d05cddb1fc51,cc438366-85ea-48be-8b74-d05cddb1fc51,0,1,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,4688fd3b-4a92-4ed8-b111-0cf22a729b1c,0,1,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,92029d1f-0472-4aaa-8fd6-9fb3c3cf414e,0,1,3271b800-1825-422f-97bb-757baf403e90,3271b800-1825-422f-97bb-757baf403e90,0,1,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,6fd6efc1-facc-4ece-a5b3-3dce6acca81d,0,1,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,4ee82868-7a20-4c3a-91f9-42a6bf53ac37,0,1,a040c756-4687-4bfd-a690-b122d3c490e5,a040c756-4687-4bfd-a690-b122d3c490e5,0,1,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,bd5940d5-13fd-4f59-bb6c-614f93f9c8e4,0,1,961a9801-3956-4ea0-b0d3-908f09bf4929,961a9801-3956-4ea0-b0d3-908f09bf4929,0,1,6fac5c14-e126-4342-9078-edf1d0efcbf2,6fac5c14-e126-4342-9078-edf1d0efcbf2,0,1,0a3325a1-21c4-4997-882f-4ac2edc175f0,0a3325a1-21c4-4997-882f-4ac2edc175f0,0,1,f0620d5a-e1fe-419f-af37-e0f462f97e8d,f0620d5a-e1fe-419f-af37-e0f462f97e8d,0,1,3e2f2ae1-c809-43fc-8276-b0a16a92858c,3e2f2ae1-c809-43fc-8276-b0a16a92858c,0,1,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,b58942ca-1367-4e1d-b5b4-7d973d0fecd8,0,1,1a7c7427-bead-4655-9dd6-df6e722663c5,1a7c7427-bead-4655-9dd6-df6e722663c5,0,1,3ad08f4a-6202-4099-b6cc-bc116e6731a0,3ad08f4a-6202-4099-b6cc-bc116e6731a0,0,1,fd96c8ab-602a-4735-b168-52b501e80351,fd96c8ab-602a-4735-b168-52b501e80351,0,1,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,b1dc619d-8d91-4f7a-aa50-1d07ff9aebdc,0,1,370f0c75-d2c5-4be5-a633-4bcc77998ece,370f0c75-d2c5-4be5-a633-4bcc77998ece,0,1,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,f80b505f-b4ff-45fb-bd88-74b274ae9d2b,0,1,2139532c-f6cb-4393-936e-cc912e5adca9,2139532c-f6cb-4393-936e-cc912e5adca9,0,1,755c3eca-4956-4a44-9b38-c11dae00b87f,755c3eca-4956-4a44-9b38-c11dae00b87f,0,1,f57c558c-2c94-4b9d-8697-448d0548ab1a,f57c558c-2c94-4b9d-8697-448d0548ab1a,0,1,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,a310c09f-4d3a-4d3a-9ad5-7a5735a33a1d,0,1,c32db021-eca1-4b67-aa85-3d6e28c51b53,c32db021-eca1-4b67-aa85-3d6e28c51b53,0,1,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,e9ed0ee4-3fbe-4093-9078-cb265ed6842c,0,1,02466dcf-02a1-4853-814f-a913a9baba45,02466dcf-02a1-4853-814f-a913a9baba45,0,1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,c4a40dc9-b619-4219-9d9a-e11f49a14fb1,0,1,62b75eb2-42e1-4484-a77f-b676dd36f3d4,62b75eb2-42e1-4484-a77f-b676dd36f3d4,0,1,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,5e28e22a-dd6e-4703-92bd-13f5cb0dc023,0,1,856510ee-74f5-44e9-a3c0-1c60cfb7a787,856510ee-74f5-44e9-a3c0-1c60cfb7a787,0,1,28b761c6-c286-4125-a4ed-da602e49950f,28b761c6-c286-4125-a4ed-da602e49950f,0,1,4ac66a22-c736-4e06-a8aa-ef4a71788c65,4ac66a22-c736-4e06-a8aa-ef4a71788c65,0,1,9cfe9281-8840-4077-824d-a2c9cbb0b730,9cfe9281-8840-4077-824d-a2c9cbb0b730,0,1,76389fa9-b9e0-492e-9c93-24b5f3bf094c,76389fa9-b9e0-492e-9c93-24b5f3bf094c,0,1,23e3de37-9315-45e6-bbfd-60aae28c25ae,23e3de37-9315-45e6-bbfd-60aae28c25ae,0,1,a9957f43-8b6f-4d98-a2d8-77b78047494c,a9957f43-8b6f-4d98-a2d8-77b78047494c,0,1,e470e15d-1b06-43cb-a9f9-ba489e2f596f,e470e15d-1b06-43cb-a9f9-ba489e2f596f,0,1,0408002c-9255-43a2-8022-82f02ee0e8f4,0408002c-9255-43a2-8022-82f02ee0e8f4,0,1,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,88f44c9b-216d-4d7e-bc88-1e6b253ed01e,0,1,1851afd4-5324-45c1-b754-54e65943f945,1851afd4-5324-45c1-b754-54e65943f945,0,1,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,bc5eca9b-32d8-44e0-a127-8ad1f47d7957,0,1,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,6e5307ea-8fbf-4177-bcc8-f163a6ce1b40,0,1,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0fa77ef7-a836-4459-9bca-6010d0bdfc7f,0,1,c322dc4a-30f3-4d23-9824-4a01c496408d,c322dc4a-30f3-4d23-9824-4a01c496408d,0,1,dcff004c-1b61-4a19-b977-ea21bf688614,dcff004c-1b61-4a19-b977-ea21bf688614,0,0,0,1,0,0,0,1,0,1,0,1,1,1,1} \ No newline at end of file diff --git a/SSL/src/Constants/АдресВебСервисаОбменаДанными/АдресВебСервисаОбменаДанными.mdo b/SSL/src/Constants/АдресВебСервисаОбменаДанными/АдресВебСервисаОбменаДанными.mdo deleted file mode 100644 index fb7ccf9d6..000000000 --- a/SSL/src/Constants/АдресВебСервисаОбменаДанными/АдресВебСервисаОбменаДанными.mdo +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c6c2fa57-a3c2-4f2a-bc02-4436f570cc78"> - <producedTypes> - <managerType typeId="c0f55589-96d9-47ea-94dd-663d026efcff" valueTypeId="f24ef974-426b-4643-b9a3-a414da28c45b"/> - <valueManagerType typeId="42404bea-aef6-447f-b221-80a139ce689b" valueTypeId="18841c76-aed2-4bb0-99bd-f2e2608862d6"/> - <valueKeyType typeId="9c058201-de5c-5f5f-a174-4410de673a68" valueTypeId="a2f87ee1-ec18-5ef5-b1b6-6ae4bc76618d"/> - </producedTypes> - <name>АдресВебСервисаОбменаДанными</name> - <synonym> - <key>ru</key> - <value>Адрес веб-сервиса обмена данными</value> - </synonym> - <type> - <types>String</types> - <stringQualifiers/> - </type> - <minValue xsi:type="core:UndefinedValue"/> - <maxValue xsi:type="core:UndefinedValue"/> - <dataLockControlMode>Managed</dataLockControlMode> -</mdclass:Constant> diff --git a/SSL/src/Constants/АдресПубликацииИнформационнойБазыВИнтернете/АдресПубликацииИнформационнойБазыВИнтернете.mdo b/SSL/src/Constants/АдресПубликацииИнформационнойБазыВИнтернете/АдресПубликацииИнформационнойБазыВИнтернете.mdo new file mode 100644 index 000000000..006b6aa63 --- /dev/null +++ b/SSL/src/Constants/АдресПубликацииИнформационнойБазыВИнтернете/АдресПубликацииИнформационнойБазыВИнтернете.mdo @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="16392cf6-dd83-4df0-a54b-6efc29778a89"> + <producedTypes> + <managerType typeId="14939209-1d43-4e41-a5f2-1c5409bc0e8e" valueTypeId="38fdf64a-a7ec-4134-94a2-de6c563b04e2"/> + <valueManagerType typeId="9276932e-0fbc-43b0-adef-6576700e7747" valueTypeId="aae57248-bf0c-42d1-9b3b-69323f095fc5"/> + <valueKeyType typeId="29986738-9dc2-54a8-b219-7d2e4fb0f994" valueTypeId="37fdb0ca-3664-5824-95b6-7a8e24bafd7f"/> + </producedTypes> + <name>АдресПубликацииИнформационнойБазыВИнтернете</name> + <synonym> + <key>ru</key> + <value>Адрес публикации информационной базы в интернете</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers> + <length>250</length> + </stringQualifiers> + </type> + <useStandardCommands>true</useStandardCommands> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <dataLockControlMode>Managed</dataLockControlMode> +</mdclass:Constant> diff --git a/SSL/src/Constants/АдресУправленияКонференцией/АдресУправленияКонференцией.mdo b/SSL/src/Constants/АдресУправленияКонференцией/АдресУправленияКонференцией.mdo new file mode 100644 index 000000000..63a251b3b --- /dev/null +++ b/SSL/src/Constants/АдресУправленияКонференцией/АдресУправленияКонференцией.mdo @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="bc96a131-9e79-4ea2-9294-84b3bd1cc85f"> + <producedTypes> + <managerType typeId="8eb80b43-d8f9-4300-a43d-c2c8ad2337bd" valueTypeId="115a2cb1-de7d-441b-8f21-0de460e30a35"/> + <valueManagerType typeId="a7cfa4eb-26cb-4441-9ecf-dd7deefe1a33" valueTypeId="20bff7ad-d5d7-434e-aaf0-f769ed3ae69d"/> + <valueKeyType typeId="6a400ab7-51a0-550e-9b7a-576128e9ad81" valueTypeId="c5cc226b-5d8e-5aa0-b207-80b4b98eef05"/> + </producedTypes> + <name>АдресУправленияКонференцией</name> + <synonym> + <key>ru</key> + <value>Адрес управления конференцией</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers/> + </type> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <dataLockControlMode>Managed</dataLockControlMode> +</mdclass:Constant> diff --git a/SSL/src/Constants/ДатаПоследнегоСтартаКлиентскогоСеанса/ДатаПоследнегоСтартаКлиентскогоСеанса.mdo b/SSL/src/Constants/ДатаПоследнегоСтартаКлиентскогоСеанса/ДатаПоследнегоСтартаКлиентскогоСеанса.mdo new file mode 100644 index 000000000..bdf8d1ae8 --- /dev/null +++ b/SSL/src/Constants/ДатаПоследнегоСтартаКлиентскогоСеанса/ДатаПоследнегоСтартаКлиентскогоСеанса.mdo @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="405c52c4-25fe-45ff-abab-bf01041e768d"> + <producedTypes> + <managerType typeId="f446d597-aa36-4413-ad99-8a4543322d2b" valueTypeId="aa1f5f75-d5bb-4d5f-b08d-79db6afd4c35"/> + <valueManagerType typeId="4cb96295-4ce7-4150-b14f-89f4f93477e9" valueTypeId="dc023fe1-6d0a-405f-b431-3a76fca6668d"/> + <valueKeyType typeId="5c524220-09de-5f42-b744-affff8bb365b" valueTypeId="b57b2191-92ec-59df-b713-75b5782a0a73"/> + </producedTypes> + <name>ДатаПоследнегоСтартаКлиентскогоСеанса</name> + <synonym> + <key>ru</key> + <value>Дата последнего старта клиентского сеанса</value> + </synonym> + <type> + <types>Date</types> + <dateQualifiers> + <dateFractions>Date</dateFractions> + </dateQualifiers> + </type> + <toolTip> + <key>ru</key> + <value>Универсальная дата последнего запуска клиентского сеанса</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <dataLockControlMode>Managed</dataLockControlMode> +</mdclass:Constant> diff --git a/SSL/src/Constants/ЗапуститьОбновлениеИнформационнойБазы/ЗапуститьОбновлениеИнформационнойБазы.mdo b/SSL/src/Constants/ЗагрузитьСообщениеОбменаДанными/ЗагрузитьСообщениеОбменаДанными.mdo similarity index 63% rename from SSL/src/Constants/ЗапуститьОбновлениеИнформационнойБазы/ЗапуститьОбновлениеИнформационнойБазы.mdo rename to SSL/src/Constants/ЗагрузитьСообщениеОбменаДанными/ЗагрузитьСообщениеОбменаДанными.mdo index 9c04b3a19..32f5e6f31 100644 --- a/SSL/src/Constants/ЗапуститьОбновлениеИнформационнойБазы/ЗапуститьОбновлениеИнформационнойБазы.mdo +++ b/SSL/src/Constants/ЗагрузитьСообщениеОбменаДанными/ЗагрузитьСообщениеОбменаДанными.mdo @@ -5,14 +5,18 @@ <valueManagerType typeId="ed469db1-1658-47f7-a5e0-c1420e4fae24" valueTypeId="b34ce38b-71ca-4b7d-8805-67a7bbe61a30"/> <valueKeyType typeId="9756958d-5ca2-53ed-ae0d-1d372041b129" valueTypeId="d9a595ed-42a0-5519-9901-678a255561ae"/> </producedTypes> - <name>ЗапуститьОбновлениеИнформационнойБазы</name> + <name>ЗагрузитьСообщениеОбменаДанными</name> <synonym> <key>ru</key> - <value>Запустить обновление информационной базы</value> + <value>Загрузить сообщение обмена данными</value> </synonym> <type> <types>Boolean</types> </type> + <toolTip> + <key>ru</key> + <value>В подчиненном узле РИБ указывает необходимость загрузки сообщения обмена после получения изменений конфигурации, но до запуска обновления информационной базы.</value> + </toolTip> <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> <dataLockControlMode>Managed</dataLockControlMode> diff --git a/SSL/src/Constants/ИмяПользователяКонференцииИнформационногоЦентра/ИмяПользователяКонференцииИнформационногоЦентра.mdo b/SSL/src/Constants/ИмяПользователяКонференцииИнформационногоЦентра/ИмяПользователяКонференцииИнформационногоЦентра.mdo new file mode 100644 index 000000000..84958dbc8 --- /dev/null +++ b/SSL/src/Constants/ИмяПользователяКонференцииИнформационногоЦентра/ИмяПользователяКонференцииИнформационногоЦентра.mdo @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="0a07041a-159c-4b15-9b5f-c7982a8a245a"> + <producedTypes> + <managerType typeId="66dbeb2c-08a1-4c8b-b494-a11ba48ae48b" valueTypeId="c8583ec6-5ccb-4854-8dc1-ac354a5dcd49"/> + <valueManagerType typeId="67317609-5747-4bff-bb67-81bce0673521" valueTypeId="b9b6feaa-7a48-4315-ab85-8d2e6aca055e"/> + <valueKeyType typeId="f20d7a36-1c3a-5134-a132-a7297fa311e4" valueTypeId="84c80cb2-4950-5f24-8fb4-27bc3ef05433"/> + </producedTypes> + <name>ИмяПользователяКонференцииИнформационногоЦентра</name> + <synonym> + <key>ru</key> + <value>Имя пользователя конференции информационного центра</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers/> + </type> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <dataLockControlMode>Managed</dataLockControlMode> +</mdclass:Constant> diff --git a/SSL/src/Constants/ИспользоватьВнешнихПользователей/ValueManagerModule.bsl b/SSL/src/Constants/ИспользоватьВнешнихПользователей/ValueManagerModule.bsl index 805bdd842..422ae5fe9 100644 --- a/SSL/src/Constants/ИспользоватьВнешнихПользователей/ValueManagerModule.bsl +++ b/SSL/src/Constants/ИспользоватьВнешнихПользователей/ValueManagerModule.bsl @@ -16,8 +16,8 @@ Если ЗначениеИзменено Тогда ПользователиСлужебный.ОбновитьРолиВнешнихПользователей(); Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); - Модуль.ОбновитьРолиПользователей(Тип("СправочникСсылка.ВнешниеПользователи")); + МодульУправлениеДоступом = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступом"); + МодульУправлениеДоступом.ОбновитьРолиПользователей(Тип("СправочникСсылка.ВнешниеПользователи")); КонецЕсли; КонецЕсли; diff --git a/SSL/src/Constants/ИспользоватьРазделениеПоОбластямДанных/ValueManagerModule.bsl b/SSL/src/Constants/ИспользоватьРазделениеПоОбластямДанных/ValueManagerModule.bsl index 6c6cf9d16..69568eb2b 100644 --- a/SSL/src/Constants/ИспользоватьРазделениеПоОбластямДанных/ValueManagerModule.bsl +++ b/SSL/src/Constants/ИспользоватьРазделениеПоОбластямДанных/ValueManagerModule.bsl @@ -9,6 +9,14 @@ Процедура ПриЗаписи(Отказ) + // Следующие константы взаимоисключающие, используются в отдельных функциональных опциях. + // + // Константа.ЭтоАвтономноеРабочееМесто -> ФО.РаботаВАвтономномРежиме + // Константа.НеИспользоватьРазделениеПоОбластямДанных -> ФО.РаботаВЛокальномРежиме + // Константа.ИспользоватьРазделениеПоОбластямДанных -> ФО.РаботаВМоделиСервиса + // + // Имена констант сохранены для обратной совместимости. + Если Значение Тогда Константы.НеИспользоватьРазделениеПоОбластямДанных.Установить(Ложь); diff --git a/SSL/src/Constants/ПараметрыРаботыПользователей/ValueManagerModule.bsl b/SSL/src/Constants/ПараметрыРаботыПользователей/ValueManagerModule.bsl index f8c169f99..058a5c4eb 100644 --- a/SSL/src/Constants/ПараметрыРаботыПользователей/ValueManagerModule.bsl +++ b/SSL/src/Constants/ПараметрыРаботыПользователей/ValueManagerModule.bsl @@ -225,8 +225,8 @@ Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервисаПовтИсп"); - МодельДанных = Модуль.ПолучитьМодельДанныхОбласти(); + МодульРаботаВМоделиСервисаПовтИсп = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РаботаВМоделиСервисаПовтИсп"); + МодельДанных = МодульРаботаВМоделиСервисаПовтИсп.ПолучитьМодельДанныхОбласти(); РазделенныеОбъектыМетаданных = Новый Соответствие(); Для Каждого ЭлементМоделиДанных Из МодельДанных Цикл diff --git a/SSL/src/Constants/ПарольПользователяКонференцииИнформационногоЦентра/ПарольПользователяКонференцииИнформационногоЦентра.mdo b/SSL/src/Constants/ПарольПользователяКонференцииИнформационногоЦентра/ПарольПользователяКонференцииИнформационногоЦентра.mdo new file mode 100644 index 000000000..fe7513317 --- /dev/null +++ b/SSL/src/Constants/ПарольПользователяКонференцииИнформационногоЦентра/ПарольПользователяКонференцииИнформационногоЦентра.mdo @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="4f8e3f81-7445-4e68-b773-b477a05aa6b3"> + <producedTypes> + <managerType typeId="943feb81-3b14-4412-93cc-1488de2661d2" valueTypeId="5807e76f-1cad-4d5d-b44a-675c6f1a2ba1"/> + <valueManagerType typeId="8269bd64-8bcb-40cc-8866-91f4828723aa" valueTypeId="d1f11e1b-ed0a-4922-83ce-731d6da1738e"/> + <valueKeyType typeId="72d45d3a-e0a7-518d-a751-01d23666386d" valueTypeId="bf7170a3-5a96-5ecb-a0f2-a59ec84a06ff"/> + </producedTypes> + <name>ПарольПользователяКонференцииИнформационногоЦентра</name> + <synonym> + <key>ru</key> + <value>Пароль пользователя конференции информационного центра</value> + </synonym> + <type> + <types>String</types> + <stringQualifiers/> + </type> + <passwordMode>true</passwordMode> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <dataLockControlMode>Managed</dataLockControlMode> +</mdclass:Constant> diff --git a/SSL/src/Constants/ВыполнитьЗагрузкуПараметровРаботыПрограммы/ВыполнитьЗагрузкуПараметровРаботыПрограммы.mdo b/SSL/src/Constants/ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском/ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском.mdo similarity index 78% rename from SSL/src/Constants/ВыполнитьЗагрузкуПараметровРаботыПрограммы/ВыполнитьЗагрузкуПараметровРаботыПрограммы.mdo rename to SSL/src/Constants/ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском/ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском.mdo index e5fc1047d..4f98dfcc9 100644 --- a/SSL/src/Constants/ВыполнитьЗагрузкуПараметровРаботыПрограммы/ВыполнитьЗагрузкуПараметровРаботыПрограммы.mdo +++ b/SSL/src/Constants/ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском/ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском.mdo @@ -5,10 +5,10 @@ <valueManagerType typeId="48071d35-f608-4b0e-b31f-eb160192ad73" valueTypeId="e5eff087-4e4c-4eb1-bd6c-464762bfe275"/> <valueKeyType typeId="20216445-a815-5149-ad7b-37aecca0eae1" valueTypeId="53a40aec-62e0-5a5c-a322-cf0071277703"/> </producedTypes> - <name>ВыполнитьЗагрузкуПараметровРаботыПрограммы</name> + <name>ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском</name> <synonym> <key>ru</key> - <value>Выполнить загрузку параметров работы программы</value> + <value>Повторить загрузку сообщения обмена данными перед запуском</value> </synonym> <type> <types>Boolean</types> diff --git a/SSL/src/Constants/ПрефиксУзлаРаспределеннойИнформационнойБазы/ПрефиксУзлаРаспределеннойИнформационнойБазы.mdo b/SSL/src/Constants/ПрефиксУзлаРаспределеннойИнформационнойБазы/ПрефиксУзлаРаспределеннойИнформационнойБазы.mdo index 089f055a7..1e49c3b13 100644 --- a/SSL/src/Constants/ПрефиксУзлаРаспределеннойИнформационнойБазы/ПрефиксУзлаРаспределеннойИнформационнойБазы.mdo +++ b/SSL/src/Constants/ПрефиксУзлаРаспределеннойИнформационнойБазы/ПрефиксУзлаРаспределеннойИнформационнойБазы.mdo @@ -8,7 +8,7 @@ <name>ПрефиксУзлаРаспределеннойИнформационнойБазы</name> <synonym> <key>ru</key> - <value>Префикс узла распределенной информационной базы</value> + <value>Префикс информационной базы</value> </synonym> <type> <types>String</types> diff --git a/SSL/src/Constants/РазделыОписанияИзмененийСистемы/РазделыОписанияИзмененийСистемы.mdo b/SSL/src/Constants/РазделыОписанияИзмененийСистемы/РазделыОписанияИзмененийСистемы.mdo index 0646c2f7f..7043f78ef 100644 --- a/SSL/src/Constants/РазделыОписанияИзмененийСистемы/РазделыОписанияИзмененийСистемы.mdo +++ b/SSL/src/Constants/РазделыОписанияИзмененийСистемы/РазделыОписанияИзмененийСистемы.mdo @@ -13,7 +13,6 @@ <type> <types>ValueStorage</types> </type> - <useStandardCommands>true</useStandardCommands> <toolTip> <key>ru</key> <value>Список всех версий, для которых есть описания изменений системы</value> diff --git a/SSL/src/Constants/СведенияОбОбновленииИБ/СведенияОбОбновленииИБ.mdo b/SSL/src/Constants/СведенияОбОбновленииИБ/СведенияОбОбновленииИБ.mdo new file mode 100644 index 000000000..1d4772aaa --- /dev/null +++ b/SSL/src/Constants/СведенияОбОбновленииИБ/СведенияОбОбновленииИБ.mdo @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ce6d1259-af90-482b-b19a-405512321bd9"> + <producedTypes> + <managerType typeId="3b532f50-1b1b-4f77-afe0-11d49576a526" valueTypeId="6f6253f4-07f0-4e64-a44f-b653c952e0d1"/> + <valueManagerType typeId="8e708227-a36d-4393-93bb-94123c92b084" valueTypeId="7d34e6e3-1b5e-415d-8d79-39b4738ca3eb"/> + <valueKeyType typeId="9e9c103a-515c-5b07-9d09-fba1b7f3b48f" valueTypeId="84510191-1507-5fe7-a3c4-6cd054af5aeb"/> + </producedTypes> + <name>СведенияОбОбновленииИБ</name> + <synonym> + <key>ru</key> + <value>Сведения об обновлении ИБ</value> + </synonym> + <type> + <types>ValueStorage</types> + </type> + <toolTip> + <key>ru</key> + <value>Содержит информацию об основном и отложенном циклах обновления.</value> + </toolTip> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <dataLockControlMode>Managed</dataLockControlMode> +</mdclass:Constant> diff --git a/SSL/src/Constants/УдалитьПоказыватьКомандуДополнительныеПечатныеФормы/УдалитьПоказыватьКомандуДополнительныеПечатныеФормы.mdo b/SSL/src/Constants/УдалитьПоказыватьКомандуДополнительныеПечатныеФормы/УдалитьПоказыватьКомандуДополнительныеПечатныеФормы.mdo new file mode 100644 index 000000000..7fcac80da --- /dev/null +++ b/SSL/src/Constants/УдалитьПоказыватьКомандуДополнительныеПечатныеФормы/УдалитьПоказыватьКомандуДополнительныеПечатныеФормы.mdo @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8"?> +<mdclass:Constant xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="5b7eb8bc-ad6b-4191-a6c1-92561bb944f2"> + <producedTypes> + <managerType typeId="a7fefa97-851f-45e3-945d-a03569a6ad38" valueTypeId="fa05ef78-decb-45aa-9fdc-55530516be10"/> + <valueManagerType typeId="40a95a42-aa47-44ab-ab27-eba39e5b24b5" valueTypeId="fc051903-1f61-40a2-913d-bded4722ff59"/> + <valueKeyType typeId="dfb8f6bd-c758-573d-adbd-a48be31460fe" valueTypeId="0961156e-a2f6-5f3a-8cde-e29f4d84fcc9"/> + </producedTypes> + <name>УдалитьПоказыватьКомандуДополнительныеПечатныеФормы</name> + <synonym> + <key>ru</key> + <value>Удалить показывать команду дополнительные печатные формы</value> + </synonym> + <comment>Переназначить ФО.ИспользоватьДополнительныеПечатныеФормы на эту константу после окончательного перевода команд печати на версию 2.1.4</comment> + <type> + <types>Boolean</types> + </type> + <minValue xsi:type="core:UndefinedValue"/> + <maxValue xsi:type="core:UndefinedValue"/> + <dataLockControlMode>Managed</dataLockControlMode> +</mdclass:Constant> diff --git a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Forms/Форма/Module.bsl index 04acdb673..acdd68291 100644 --- a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Forms/Форма/Module.bsl @@ -3,11 +3,14 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Или ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; // Отказ устанавливается в ПриОткрытии(). + КонецЕсли; + ВключеноИзвлечениеТекста = Ложь; ИнтервалВремениВыполнения = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("АвтоматическоеИзвлечениеТекстов", "ИнтервалВремениВыполнения"); @@ -34,11 +37,18 @@ &НаКлиенте Процедура ПриОткрытии(Отказ) -#Если ВебКлиент Тогда - Отказ = Истина; - Предупреждение(НСтр("ru = 'В Веб-клиенте извлечение текстов не поддерживается.'")); - Возврат; -#КонецЕсли + Если ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда + Отказ = Истина; + Предупреждение(НСтр("ru = 'Извлечение текстов не поддерживается в Веб-клиенте.'")); + Возврат; + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Извлечение текстов не поддерживается в клиенте под управлением ОС Linux.'"); + Предупреждение(ТекстСообщения); + Возврат; + КонецЕсли; КонецПроцедуры @@ -119,7 +129,8 @@ Процедура ЗаписьЖурналаРегистрацииСервер(ТекстСообщения) ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Извлечение текста'"), + НСтр("ru = 'Файлы.Извлечение текста'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -152,7 +163,7 @@ #Если НЕ ВебКлиент Тогда ИзвлечениеТекстовКлиент(); -#КонецЕсли +#КонецЕсли КонецПроцедуры diff --git a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Help/ru.html b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Help/ru.html index 3ef2d4f87..31236844f 100644 --- a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Help/ru.html +++ b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстов/Help/ru.html @@ -1,3 +1,3 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Если один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows нужно запустить тонкий или толстый клиент, и на нем открыть обработку «Автоматическое извлечение текстов». Эта обработка в автоматическом режиме будет извлекать текст из файлов. По умолчанию интервал времени выполнения равен 60 секундам.</p> <p>См. также: <a href="v8help://frame/form_common">Общая информация о формах</a>.</p></body></html> \ No newline at end of file diff --git a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Forms/Форма/Module.bsl index ed2795b86..37d2b3805 100644 --- a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Forms/Форма/Module.bsl @@ -4,27 +4,37 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Или ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; // Отказ устанавливается в ПриОткрытии(). + КонецЕсли; + ИнтервалВремениВыполнения = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("АвтоматическоеИзвлечениеТекстов", "ИнтервалВремениВыполнения"); Если ИнтервалВремениВыполнения = 0 Тогда ИнтервалВремениВыполнения = 60; ОбщегоНазначения.ХранилищеОбщихНастроекСохранить("АвтоматическоеИзвлечениеТекстов", "ИнтервалВремениВыполнения", ИнтервалВремениВыполнения); - КонецЕсли; + КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) -#Если ВебКлиент Тогда - Отказ = Истина; - Предупреждение(НСтр("ru = 'В Веб-клиенте извлечение текстов не поддерживается.'")); - Возврат; -#КонецЕсли + Если ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда + Отказ = Истина; + Предупреждение(НСтр("ru = 'Извлечение текстов не поддерживается в Веб-клиенте.'")); + Возврат; + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Извлечение текстов не поддерживается в клиенте под управлением ОС Linux.'"); + Предупреждение(ТекстСообщения); + Возврат; + КонецЕсли; // Здесь ТекущаяДата не пишется в базу, а используется только на клиенте // в информационных целях, поэтому заменять на ТекущаяДатаСеанса не надо. @@ -71,7 +81,8 @@ Процедура ЗаписьЖурналаРегистрацииСервер(ТекстСообщения) ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Извлечение текста'"), + НСтр("ru = 'Файлы.Извлечение текста'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , @@ -288,7 +299,7 @@ // если превысили нужное количество результатов, выходим Если КоличествоФайловВПорции <> 0 И Результат.Количество() >= КоличествоФайловВПорции Тогда Прервать; - КонецЕсли; + КонецЕсли; КонецЦикла; diff --git a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Help/ru.html b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Help/ru.html index 3ef2d4f87..31236844f 100644 --- a/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Help/ru.html +++ b/SSL/src/DataProcessors/АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных/Help/ru.html @@ -1,3 +1,3 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Если один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows нужно запустить тонкий или толстый клиент, и на нем открыть обработку «Автоматическое извлечение текстов». Эта обработка в автоматическом режиме будет извлекать текст из файлов. По умолчанию интервал времени выполнения равен 60 секундам.</p> <p>См. также: <a href="v8help://frame/form_common">Общая информация о формах</a>.</p></body></html> \ No newline at end of file diff --git a/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Form.form b/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Form.form index 22ec0955e..ebb85686e 100644 --- a/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Form.form +++ b/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Form.form @@ -288,6 +288,10 @@ <items xsi:type="form:FormField"> <name>СписокПользователейРазделениеДанных</name> <id>34</id> + <title> + <key>ru</key> + <value>Область данных</value> + true true @@ -881,6 +885,10 @@ OnCreateAtServer ПриСозданииНаСервере + + OnClose + ПриЗакрытии + Abort Cancel Ignore @@ -888,7 +896,7 @@ OK Retry Yes - DontBlock + LockOwner true true true @@ -1031,7 +1039,7 @@ Number - 7 + 8 true @@ -1199,6 +1207,23 @@ true + + ОповещатьОЗакрытии + + <key>ru</key> + <value>Оповещать о закрытии</value> + + 7 + + Boolean + + + true + + + true + + ЖурналРегистрации diff --git a/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Help/ru.html b/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Help/ru.html index 6b3b3bc76..ade7739ad 100644 --- a/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Help/ru.html +++ b/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Активные пользователи - это пользователи, которые сейчас работают с информационной базой. В этом списке отображаются не только пользователи, работающие с информационной базой при помощи приложений "Тонкий клиент", "Веб-клиент" или "Конфигуратор", но и такие пользователи как "COM-соединение", "WS-соединение", "Фоновое задание" и т.п.</p> <p>Для анализа работы пользователя можно перейти к <a href="DataProcessor.ЖурналРегистрации.Form.ЖурналРегистрации/Help">журналу регистрации</a>, выбрав пользователя в списке и выполнив команду "Журнал регистрации".</p> <p>В клиент-серверном режиме работы также доступна команда "Завершить сеанс". Для того чтобы ею воспользоваться, может потребовать настроить дополнительные параметры подключения к серверу 1С:Предприятие (см. команду "Параметры администрирования информационной базы" в меню "Все действия").</p></body></html> \ No newline at end of file diff --git a/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Module.bsl b/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Module.bsl index ce2641b0c..f003b023a 100644 --- a/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Module.bsl +++ b/SSL/src/DataProcessors/АктивныеПользователи/Forms/ФормаСпискаАктивныхПользователей/Module.bsl @@ -8,6 +8,8 @@ Возврат; КонецЕсли; + Параметры.Свойство("ОповещатьОЗакрытии", ОповещатьОЗакрытии); + НомерСеансаИнформационнойБазы = НомерСеансаИнформационнойБазы(); УсловноеОформление.Элементы[0].Отбор.Элементы[0].ПравоеЗначение = НомерСеансаИнформационнойБазы; @@ -25,12 +27,23 @@ КонецЕсли; КонецЕсли; + Если ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Элементы.СписокПользователейРазделениеДанных.Видимость = Ложь; + КонецЕсли; + ИмяКолонкиСортировки = "НачалоРаботы"; НаправлениеСортировки = "Возр"; ЗаполнитьСписокПользователей(); КонецПроцедуры +&НаКлиенте +Процедура ПриЗакрытии() + Если ОповещатьОЗакрытии Тогда + ОповещатьОЗакрытии = Ложь; + ОповеститьОВыборе(Неопределено); + КонецЕсли; +КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -140,7 +153,7 @@ ЗаполнитьСписокПользователей(); - // Восстанавливаем текущую строку по запомненному сеансу + // Восстанавливаем текущую строку по сохраненному сеансу Если ТекущийСеанс <> Неопределено Тогда СтруктураПоиска = Новый Структура; СтруктураПоиска.Вставить("Сеанс", ТекущийСеанс); @@ -279,7 +292,7 @@ ШаблонТекстаЗапроса, "Справочник.Пользователи"); - ТекстЗапросаПоВнешниемПользователям = + ТекстЗапросаПоВнешнимПользователям = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ШаблонТекстаЗапроса, "Справочник.ВнешниеПользователи"); @@ -294,7 +307,7 @@ Возврат Выборка.Ссылка; КонецЕсли; - Запрос.Текст = ТекстЗапросаПоВнешниемПользователям; + Запрос.Текст = ТекстЗапросаПоВнешнимПользователям; Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда diff --git a/SSL/src/DataProcessors/АктивныеПользователи/Help/ru.html b/SSL/src/DataProcessors/АктивныеПользователи/Help/ru.html index d68d359de..c75b8b651 100644 --- a/SSL/src/DataProcessors/АктивныеПользователи/Help/ru.html +++ b/SSL/src/DataProcessors/АктивныеПользователи/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Список содержит список пользователей, работающих в данный момент времени в системе. </p> <p>Для удобства просмотра списка можно использовать сортировку по любой колонке. Полужирным шрифтом выделена строка, соответствующая тому сеансу работы пользователя, из которого открыт список активных пользователей. </p> <p>С помощью команд меню <strong>Все действия</strong> можно настроить форму и вывести данные списка в табличный и текстовый документ. По команде <strong>Журнал регистрации</strong> можно перейти к <a href="DataProcessor.ЖурналРегистрации/Help">журналу регистрации</a> с установленным фильтром по выбранному пользователю. </p> diff --git a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/ОшибкаУстановкиМонопольногоРежима/Module.bsl b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/ОшибкаУстановкиМонопольногоРежима/Module.bsl index 7762f90c5..85c874e68 100644 --- a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/ОшибкаУстановкиМонопольногоРежима/Module.bsl +++ b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/ОшибкаУстановкиМонопольногоРежима/Module.bsl @@ -4,6 +4,10 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + АктивныеПользователиШаблон = НСтр("ru = 'Активные пользователи (%1)'"); КоличествоАктивныхСеансов = ПолучитьСеансыИнформационнойБазы().Количество(); @@ -142,7 +146,7 @@ Попытка РеквизитФормыВЗначение("Объект").ВыполнитьУстановку(); Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Завершение работы пользователей'"), + ЗаписьЖурналаРегистрации(СоединенияИБКлиентСервер.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеОписаниеОшибки(ОписаниеОшибки()), , ); diff --git a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Form.form b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Form.form index ec3b8b2e2..1e133d1f2 100644 --- a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Form.form @@ -580,7 +580,6 @@ <contextMenu> <name>КодДляРазблокировкиКонтекстноеМеню</name> <id>11</id> - <autoFill>true</autoFill> </contextMenu> <type>InputField</type> <editMode>Enter</editMode> diff --git a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Module.bsl index a326ced83..61b39ae1a 100644 --- a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Forms/Форма/Module.bsl @@ -17,6 +17,12 @@ Элементы.ГруппаПараметры.Видимость = Ложь; КонецЕсли; + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + + Элементы.КодДляРазблокировки.Видимость = Ложь; + + КонецЕсли; + ПолучитьПараметрыБлокировки(); УстановитьНачальныйСтатусЗапретаРаботыПользователей(); ОбновитьСтраницуНастройки(); @@ -253,7 +259,7 @@ РеквизитФормыВЗначение("Объект").ВыполнитьУстановку(); Элементы.ГруппаОшибка.Видимость = Ложь; Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Завершение работы пользователей'"), + ЗаписьЖурналаРегистрации(СоединенияИБКлиентСервер.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда @@ -275,7 +281,7 @@ Попытка РеквизитФормыВЗначение("Объект").ОтменитьБлокировку(); Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Завершение работы пользователей'"), + ЗаписьЖурналаРегистрации(СоединенияИБКлиентСервер.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда @@ -331,7 +337,7 @@ Обработка.ПолучитьПараметрыБлокировки(); Элементы.ГруппаОшибка.Видимость = Ложь; Исключение - ЗаписьЖурналаРегистрации(НСтр("ru = 'Завершение работы пользователей'"), + ЗаписьЖурналаРегистрации(СоединенияИБКлиентСервер.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда diff --git a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Help/ru.html b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Help/ru.html index 6d86e738f..ecefaaf99 100644 --- a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Help/ru.html +++ b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Имеется возможность временно запретить работу пользователей с программой, предварительно завершив работу всех активных пользователей (включая пользователя, инициировавшего блокировку). Эта возможность полезна, например, когда для выполнения административных действий требуется, чтобы текущие пользователи завершили свои сеансы работы, и в то же время новые пользователи не могли войти в программу.</p> <p class="Usual">При установке блокировки можно задать следующие параметры: </p> <ul><li>Период (время) начала действия и окончания действия блокировки; @@ -9,7 +9,7 @@ <p class="Usual">Для снятия блокировки до истечения срока блокировки нужно:</p> <ul><li> <p class="Usual">войти в приложение и открыть эту форму, выполнив команду "Снять блокировку";</p> -</li><li>открыть приложение, используя параметры запуска "/С РазрешитьРаботуПользователей" и "/UC" с кодом разрешения доступа, который был указан при установке блокировки.</li></ul><h3>Действия по завершению работы в клиентском приложении</h3> +</li><li>открыть приложение, используя параметры запуска "/С РазрешитьРаботуПользователей" и "/UC" с кодом разрешения доступа, который был указан при установке блокировки.<br>Примечание: запуск клиентского приложения с параметром "РазрешитьРаботуПользователей" предназначен только для снятия блокировки и не предназначен для работы с программой. </li></ul><h3>Действия по завершению работы в клиентском приложении</h3> <li> <p class="Usual">Примерно за 15 минут до начала действия блокировки, всем активным пользователем выдаются предупреждения о планируемом времени начала блокировки соединений и заданный текст сообщения блокировки.</p> </li><li> diff --git a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/БлокировкаРаботыПользователей.mdo b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/БлокировкаРаботыПользователей.mdo index 64fbac8c2..369322bd3 100644 --- a/SSL/src/DataProcessors/БлокировкаРаботыПользователей/БлокировкаРаботыПользователей.mdo +++ b/SSL/src/DataProcessors/БлокировкаРаботыПользователей/БлокировкаРаботыПользователей.mdo @@ -113,7 +113,7 @@ </type> <toolTip> <key>ru</key> - <value>Причина блокировки, которая выводится пользователю при попытке войти в заблокированную ИБ</value> + <value>Сообщение о причине блокировки, которое выводится пользователю при попытке войти в заблокированную ИБ</value> </toolTip> <multiLine>true</multiLine> <minValue xsi:type="core:UndefinedValue"/> diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Form.form b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Form.form index a54298016..3fe857698 100644 --- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Form.form +++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Form.form @@ -21,13 +21,17 @@ <dataPath xsi:type="form:DataPath"> <segments>Страна</segments> </dataPath> + <toolTip> + <key>ru</key> + <value>Страна адреса</value> + </toolTip> <handlers> <event>OnChange</event> <name>СтранаПриИзменении</name> </handlers> <extendedTooltip> <name>СтранаРасширеннаяПодсказка</name> - <id>103</id> + <id>107</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -47,18 +51,46 @@ <headerHorizontalAlign>Left</headerHorizontalAlign> <showInFooter>true</showInFooter> <extInfo xsi:type="form:InputFieldExtInfo"> + <handlers> + <event>AutoComplete</event> + <name>СтранаАвтоПодбор</name> + </handlers> <handlers> <event>Clearing</event> <name>СтранаОчистка</name> </handlers> + <handlers> + <event>TextEditEnd</event> + <name>СтранаОкончаниеВводаТекста</name> + </handlers> + <handlers> + <event>ChoiceProcessing</event> + <name>СтранаОбработкаВыбора</name> + </handlers> <width>15</width> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> <wrap>true</wrap> + <choiceButton>true</choiceButton> <openButton>false</openButton> - <chooseType>true</chooseType> <typeDomainEnabled>true</typeDomainEnabled> <textEdit>true</textEdit> + <choiceParameters> + <name>ТолькоДанныеКлассификатора</name> + <value xsi:type="form:FormChoiceListDesTimeValue"> + <value xsi:type="core:BooleanValue"> + <value>true</value> + </value> + </value> + </choiceParameters> + <choiceParameters> + <name>РазрешитьДанныеКлассификатора</name> + <value xsi:type="form:FormChoiceListDesTimeValue"> + <value xsi:type="core:BooleanValue"> + <value>true</value> + </value> + </value> + </choiceParameters> <backColor xsi:type="core:ColorRef"> <color>Style.ФонУправляющегоПоля</color> </backColor> @@ -67,19 +99,19 @@ </items> <items xsi:type="form:FormField"> <name>КодСтраны</name> - <id>42</id> + <id>103</id> <visible>true</visible> <enabled>false</enabled> <userVisible> <common>true</common> </userVisible> <dataPath xsi:type="form:DataPath"> - <segments>Страна.Code</segments> + <segments>КодСтраны</segments> </dataPath> <titleLocation>None</titleLocation> <extendedTooltip> <name>КодСтраныРасширеннаяПодсказка</name> - <id>105</id> + <id>109</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -89,7 +121,7 @@ </extendedTooltip> <contextMenu> <name>КодСтраныКонтекстноеМеню</name> - <id>43</id> + <id>104</id> <autoFill>true</autoFill> </contextMenu> <type>LabelField</type> @@ -98,8 +130,10 @@ <headerHorizontalAlign>Left</headerHorizontalAlign> <showInFooter>true</showInFooter> <extInfo xsi:type="form:LabelFieldExtInfo"> + <width>3</width> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> + <horizontalStretch>false</horizontalStretch> <font xsi:type="core:FontRef"> <font>System.DefaultGUIFont</font> <bold>true</bold> @@ -124,7 +158,7 @@ </toolTip> <extendedTooltip> <name>ГруппаСтраныРасширеннаяПодсказка</name> - <id>102</id> + <id>106</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -155,13 +189,17 @@ <dataPath xsi:type="form:DataPath"> <segments>Индекс</segments> </dataPath> + <toolTip> + <key>ru</key> + <value>Почтовый индекс российского адреса</value> + </toolTip> <handlers> <event>OnChange</event> <name>ИндексПриИзменении</name> </handlers> <extendedTooltip> <name>ИндексРасширеннаяПодсказка</name> - <id>108</id> + <id>112</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -205,7 +243,7 @@ </toolTip> <extendedTooltip> <name>ГруппаИндексаРасширеннаяПодсказка</name> - <id>107</id> + <id>111</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -239,7 +277,7 @@ <horizontalStretch>true</horizontalStretch> <extendedTooltip> <name>СтранаАдресаРасширеннаяПодсказка</name> - <id>101</id> + <id>105</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -275,13 +313,17 @@ <segments>НаселенныйПункт</segments> </dataPath> <titleLocation>Top</titleLocation> + <toolTip> + <key>ru</key> + <value>Город, населенный пункт адреса</value> + </toolTip> <handlers> <event>OnChange</event> <name>НаселенныйПунктПриИзменении</name> </handlers> <extendedTooltip> <name>НаселенныйПунктРасширеннаяПодсказка</name> - <id>112</id> + <id>116</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -338,13 +380,17 @@ <segments>Улица</segments> </dataPath> <titleLocation>Top</titleLocation> + <toolTip> + <key>ru</key> + <value>Улица адреса</value> + </toolTip> <handlers> <event>OnChange</event> <name>УлицаПриИзменении</name> </handlers> <extendedTooltip> <name>УлицаРасширеннаяПодсказка</name> - <id>114</id> + <id>118</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -404,13 +450,17 @@ <segments>ТипДома</segments> </dataPath> <titleLocation>None</titleLocation> + <toolTip> + <key>ru</key> + <value>Тип дома: дом, владение и т. п.</value> + </toolTip> <handlers> <event>OnChange</event> <name>ТипДомаПриИзменении</name> </handlers> <extendedTooltip> <name>ТипДомаРасширеннаяПодсказка</name> - <id>117</id> + <id>121</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -452,13 +502,17 @@ <segments>Дом</segments> </dataPath> <titleLocation>None</titleLocation> + <toolTip> + <key>ru</key> + <value>Номер дома, владения</value> + </toolTip> <handlers> <event>OnChange</event> <name>ДомПриИзменении</name> </handlers> <extendedTooltip> <name>ДомРасширеннаяПодсказка</name> - <id>119</id> + <id>123</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -505,7 +559,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаДомРасширеннаяПодсказка</name> - <id>116</id> + <id>120</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -540,13 +594,17 @@ <segments>ТипСтроения</segments> </dataPath> <titleLocation>None</titleLocation> + <toolTip> + <key>ru</key> + <value>Дополнительный тип здания: корпус, строение и т. п.</value> + </toolTip> <handlers> <event>OnChange</event> <name>ТипСтроенияПриИзменении</name> </handlers> <extendedTooltip> <name>ТипСтроенияРасширеннаяПодсказка</name> - <id>123</id> + <id>127</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -588,13 +646,17 @@ <segments>Строение</segments> </dataPath> <titleLocation>None</titleLocation> + <toolTip> + <key>ru</key> + <value>Номер здания</value> + </toolTip> <handlers> <event>OnChange</event> <name>СтроениеПриИзменении</name> </handlers> <extendedTooltip> <name>СтроениеРасширеннаяПодсказка</name> - <id>125</id> + <id>129</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -641,7 +703,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаСтроениеНачальноеРасширеннаяПодсказка</name> - <id>122</id> + <id>126</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -677,7 +739,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаСтроенияДополнительноРасширеннаяПодсказка</name> - <id>127</id> + <id>131</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -712,7 +774,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаСтроенияРасширеннаяПодсказка</name> - <id>121</id> + <id>125</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -748,13 +810,17 @@ <segments>ТипПомещения</segments> </dataPath> <titleLocation>None</titleLocation> + <toolTip> + <key>ru</key> + <value>Тип помещения: квартира, офис и т. п.</value> + </toolTip> <handlers> <event>OnChange</event> <name>ТипПомещенияПриИзменении</name> </handlers> <extendedTooltip> <name>ТипПомещенияРасширеннаяПодсказка</name> - <id>130</id> + <id>134</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -796,13 +862,17 @@ <segments>Помещение</segments> </dataPath> <titleLocation>None</titleLocation> + <toolTip> + <key>ru</key> + <value>Значение помещения</value> + </toolTip> <handlers> <event>OnChange</event> <name>ПомещениеПриИзменении</name> </handlers> <extendedTooltip> <name>ПомещениеРасширеннаяПодсказка</name> - <id>132</id> + <id>136</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -847,7 +917,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаПомещениеНачальноеРасширеннаяПодсказка</name> - <id>129</id> + <id>133</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -883,7 +953,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаПомещенияДополнительноРасширеннаяПодсказка</name> - <id>134</id> + <id>138</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -918,7 +988,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаПомещениеРасширеннаяПодсказка</name> - <id>128</id> + <id>132</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -946,7 +1016,7 @@ </userVisible> <extendedTooltip> <name>ДобавитьОбъектРасширеннаяПодсказка</name> - <id>135</id> + <id>139</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -979,9 +1049,17 @@ </dataPath> <skipOnInput>true</skipOnInput> <titleLocation>None</titleLocation> + <toolTip> + <key>ru</key> + <value>Представление адреса</value> + </toolTip> + <handlers> + <event>OnChange</event> + <name>ПредставлениеАдресаПриИзменении</name> + </handlers> <extendedTooltip> <name>ПредставлениеАдресаРасширеннаяПодсказка</name> - <id>137</id> + <id>141</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -995,7 +1073,6 @@ <autoFill>true</autoFill> </contextMenu> <type>InputField</type> - <readOnly>true</readOnly> <editMode>Enter</editMode> <showInHeader>true</showInHeader> <headerHorizontalAlign>Left</headerHorizontalAlign> @@ -1003,6 +1080,7 @@ <extInfo xsi:type="form:InputFieldExtInfo"> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> + <horizontalStretch>true</horizontalStretch> <wrap>true</wrap> <multiLine>true</multiLine> <chooseType>true</chooseType> @@ -1030,7 +1108,7 @@ <verticalStretch>true</verticalStretch> <extendedTooltip> <name>ГруппаПредставленияРасширеннаяПодсказка</name> - <id>136</id> + <id>140</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1064,7 +1142,7 @@ </toolTip> <extendedTooltip> <name>РоссийскийАдресРасширеннаяПодсказка</name> - <id>111</id> + <id>115</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1094,7 +1172,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ПредставлениеИностранногоАдресаРасширеннаяПодсказка</name> - <id>140</id> + <id>144</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1138,7 +1216,7 @@ </toolTip> <extendedTooltip> <name>ИностранныйАдресРасширеннаяПодсказка</name> - <id>139</id> + <id>143</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1167,7 +1245,7 @@ <verticalStretch>true</verticalStretch> <extendedTooltip> <name>ТипАдресаРасширеннаяПодсказка</name> - <id>110</id> + <id>114</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1204,7 +1282,7 @@ <verticalStretch>true</verticalStretch> <extendedTooltip> <name>ГруппаДополнительныхПолейРасширеннаяПодсказка</name> - <id>143</id> + <id>147</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1235,9 +1313,13 @@ <segments>Комментарий</segments> </dataPath> <titleLocation>Left</titleLocation> + <toolTip> + <key>ru</key> + <value>Дополнительный комментарий, не включаемый в представление адреса</value> + </toolTip> <extendedTooltip> <name>КомментарийРасширеннаяПодсказка</name> - <id>144</id> + <id>148</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1288,7 +1370,7 @@ </toolTip> <extendedTooltip> <name>ОбщиеДанныеРасширеннаяПодсказка</name> - <id>142</id> + <id>146</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1323,7 +1405,7 @@ </userVisible> <extendedTooltip> <name>ПроверитьЗаполнениеАдресаРасширеннаяПодсказка</name> - <id>148</id> + <id>152</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1347,7 +1429,7 @@ <enableContentChange>true</enableContentChange> <extendedTooltip> <name>Группа2РасширеннаяПодсказка</name> - <id>147</id> + <id>151</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1373,7 +1455,7 @@ </userVisible> <extendedTooltip> <name>ФормаКомандаОКРасширеннаяПодсказка</name> - <id>150</id> + <id>154</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1399,7 +1481,7 @@ </userVisible> <extendedTooltip> <name>ФормаОтменаРасширеннаяПодсказка</name> - <id>151</id> + <id>155</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1428,7 +1510,7 @@ </userVisible> <extendedTooltip> <name>ФормаОчиститьАдресРасширеннаяПодсказка</name> - <id>153</id> + <id>157</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1445,17 +1527,51 @@ <representationInContextMenu>Auto</representationInContextMenu> <locationInCommandBar>InCommandBarAndInAdditionalSubmenu</locationInCommandBar> </items> - <items xsi:type="form:Button"> - <name>ФормаЗагрузитьКлассификатор</name> - <id>91</id> + <items xsi:type="form:FormGroup"> + <name>ФормаВводАдресаВСвободнойФорме</name> + <id>101</id> + <items xsi:type="form:Button"> + <name>ВвестиАдресВСвободнойФорме</name> + <id>102</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ВвестиАдресВСвободнойФормеРасширеннаяПодсказка</name> + <id>159</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.Command.ВвестиАдресВСвободнойФорме</commandName> + <buttonImportance>Normal</buttonImportance> + <representation>Auto</representation> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <representationInContextMenu>Auto</representationInContextMenu> + </items> <visible>true</visible> <enabled>true</enabled> <userVisible> <common>true</common> </userVisible> + <title> + <key>ru</key> + <value>Форма ввод адреса в свободной форме</value> + + + ru + Форма ввод адреса в свободной форме + - ФормаЗагрузитьКлассификаторРасширеннаяПодсказка - 154 + ФормаВводАдресаВСвободнойФормеРасширеннаяПодсказка + 158 Label true true @@ -1463,14 +1579,7 @@ Left - Form.Command.ЗагрузитьКлассификатор - Normal - Auto - true - true - UserCmds - Auto - InCommandBarAndInAdditionalSubmenu + ФормаСтандартныеДействия @@ -1485,7 +1594,7 @@ ИзменитьФормуРасширеннаяПодсказка - 156 + 161 Label true true @@ -1512,7 +1621,7 @@ СправкаРасширеннаяПодсказка - 157 + 162 Label true true @@ -1544,7 +1653,7 @@ ФормаСтандартныеДействияРасширеннаяПодсказка - 155 + 160 Label true true @@ -1569,7 +1678,7 @@ ФормаВсеДействияРасширеннаяПодсказка - 152 + 156 Label true true @@ -1596,7 +1705,7 @@ ФормаСправкаРасширеннаяПодсказка - 158 + 163 Label true true @@ -1627,7 +1736,7 @@ ПанельКомандФормыРасширеннаяПодсказка - 149 + 153 Label true true @@ -1655,7 +1764,7 @@ ПанельКомандРасширеннаяПодсказка - 146 + 150 Label true true @@ -1691,7 +1800,7 @@ OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner Use UseList true @@ -2186,9 +2295,7 @@ Вид контактной информации 22 - - CatalogRef.ВидыКонтактнойИнформации - + true @@ -2369,6 +2476,162 @@ true + + РазрешитьВводАдресаВСвободнойФорме + + <key>ru</key> + <value>Разрешить ввод адреса в свободной форме</value> + + 24 + + Boolean + + + true + + + true + + + + ЦветФонаФормы + + <key>ru</key> + <value>Цвет фона формы</value> + + 33 + + Color + + + true + + + true + + + + ПредставлениеАдресаИзменено + + <key>ru</key> + <value>Представление адреса изменено</value> + + 34 + + Boolean + + + true + + + true + + + + ЦветФонаУправляющегоПоля + + <key>ru</key> + <value>Цвет фона управляющего поля</value> + + 35 + + Color + + + true + + + true + + + + КодСтраны + + <key>ru</key> + <value>Код страны</value> + + 36 + + String + + + + true + + + true + + + + ТекстПредупрежденияПриОткрытии + + <key>ru</key> + <value>Текст предупреждения при открытии</value> + + 37 + + String + + + + true + + + true + + + + ПолеПредупрежденияПриОткрытии + + <key>ru</key> + <value>Поле предупреждения при открытии</value> + + 39 + + String + + + + true + + + true + + + + ВозвращатьСписокЗначений + + <key>ru</key> + <value>Возвращать список значений</value> + + 38 + + Boolean + + + true + + + true + + + + ЭтоПлатформа83 + + <key>ru</key> + <value>Это платформа83</value> + + 40 + + Boolean + + + true + + + true + + КомандаОК @@ -2378,7 +2641,7 @@ <id>1</id> <toolTip> <key>ru</key> - <value>Команда ОК</value> + <value>Подвердить изменения и закрыть форму</value> </toolTip> <use> <common>true</common> @@ -2490,11 +2753,31 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>ВвестиАдресВСвободнойФорме</name> + <title> + <key>ru</key> + <value>Ввести адрес в свободной форме</value> + + 5 + + ru + Ввести адрес в свободной форме + + + true + + + + ВвестиАдресВСвободнойФорме + + + Auto + Auto + ВидКонтактнойИнформации - - CatalogRef.ВидыКонтактнойИнформации - + ЗначенияПолей diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Help/ru.html b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Help/ru.html index d5ab90494..780c32f7f 100644 --- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Help/ru.html +++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Help/ru.html @@ -1,3 +1,22 @@ - -

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

            -

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

            \ No newline at end of file + +

            Форма предназначена для ввода адреса по шаблону. При заполнении формы возможно использование адресного классификатора.

            +
            • Поле "Страна" позволяет выбрать страну адреса. Редактирование адресов за пределами России производится в общем поле, без учета частей адреса +
            • Поле "Индекс" предназначено для ввода почтового индекса, соответствующего данному адресу.Если адрес найден а вдресном классификаторе, то индекс может быть проставлен автоматически. +
            • Поле "Город, населенный пункт" предназначено для ввода региона, города и т.п. При необходимости можно выбрать или ввести части адреса детально, нажав на кнопку выбора. +
            • Поле "Улица" предназначено для выбора или ввода улицы адреса. +
            • Поля "Дом", "Корпус", "Квартира" позволяют ввести соответствующие части адреса. Можно изменить эти варианты, выбрав значения из выпадающего списка или добавить дополнительные поля для ввода других предопределенных частей адреса, таких как "Строение", "Литера", "Сооружение", "Участок", "Офис", "Бокс", "Помещение", "Комната". Для этого необходимо воспользоваться кнопкой "Добавить".

            Например, для ввода адреса "Санкт-Петербург, Пискаревский проспект, дом 2, корпус 2, литер Щ, офис 12345" необходимо ввести:

            +
            1. В поле "Город, населенный пункт" - Санкт-Петербург г. +
            2. В поле "Улица" - Пискаревский пр-кт. +
            3. В поле значения "Дом" указать 2. +
            4. В поле значения "Корпус" - 2. +
            5. Для ввода литеры необходимо добавить поле кнопкой "Добавить", выбрать из выпадающего списка значение "Литера" и проставить в поле значение Щ. +
            6. Вместо "Квартира" выбрать из выпадающего списка значение "Офис" и ввести в поле значения 12345.

            Аналогично, для ввода адреса, содержащего другие значения полей, например "Москва, улица Адмирала Лазарева, домовладение 89, корпус 16, строение 1 необходимо:

            +
            1. В поле "Город, населенный пункт" ввести Москва г. +
            2. В поле "Улица" - Адмирала Лазарева ул. +
            3. Вместо "Дом" выбрать из выпадающего списка значение "Домовладение", ввести в поле значения 89. +
            4. В поле значения "Корпус" указать 16. +
            5. Добавить поле кнопкой "Добавить", выбрать из выпадающего списка значение "Строение", проставить в поле значение 1.
            • Поле "Комментарий" позволяет указать произвольный комментарий к адресу, который не будет включаться в его представление и выводится на печать. +
            • Кнопка "Проверить заполнение" анализирует корректность заполнения адреса и выводит список ошибок.

            Из меню "Все действия" также доступны команды "Очистить адрес" и "Загрузить классификатор"

            +

            \ No newline at end of file diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl index 8e5a56536..af16d9922 100644 --- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl +++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводАдреса/Module.bsl @@ -5,11 +5,14 @@ // ввода нового // Представление (строка) - представление адреса (используется только при работе со старыми данными) // ВидКонтактнойИнформации - ссылка на справочник ВидыКонтактнойИнформации, описывающий то, что мы -// редактируем +// редактируем или структура, совместимая по полям со справочником. // Комментарий (строка) - необязательный комментарий, для подстановки в поле "Комментарий" // +// ВозвращатьСписокЗначений (булево) - необязательный флаг того, что возвращаемое значение поля +// КонтактнаяИнформация будет иметь тип СписокЗначений (совместимость) +// // Результатом выбора является структура с полями: -// "КонтактнаяИнформация, Представление, Комментарий" +// "КонтактнаяИнформация, Представление, Комментарий, ВведеноВСвободнойФорме" // // ------------------------------------------------------------------------------------------------- @@ -24,45 +27,86 @@ Возврат; КонецЕсли; + Если Не Параметры.Свойство("ОткрытаПоСценарию") Тогда + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + КонецЕсли; + + ЭтоПлатформа83 = ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83(); + + Параметры.Свойство("ВозвращатьСписокЗначений", ВозвращатьСписокЗначений); + // Внутренняя инициализация - ЦветКорректногоПоля = Новый Цвет; // (243, 255, 243); - АвтоЦвет = Новый Цвет; - СтранаРоссия = Справочники.СтраныМира.Россия; + ЦветФонаУправляющегоПоля = ЦветаСтиля.ФонУправляющегоПоля; + ЦветФонаФормы = ЦветаСтиля.ЦветФонаФормы; + ЦветКорректногоПоля = Новый Цвет; // (243, 255, 243); + АвтоЦвет = Новый Цвет; - ВидКонтактнойИнформации = Параметры.ВидКонтактнойИнформации; + СтранаРоссия = Справочники.СтраныМира.Россия; - ПроверятьКорректность = ВидКонтактнойИнформации.ПроверятьКорректность; - ЗапрещатьВводНекорректного = ВидКонтактнойИнформации.ЗапрещатьВводНекорректного; - - МожноЗагружатьКлассификатор = КонтактнаяИнформацияСлужебный.ЕстьВозможностьИзмененияАдресногоКлассификатора(); + ВидКонтактнойИнформации = УправлениеКонтактнойИнформацией.СтруктураВидаКонтактнойИнформации(); + ЗаполнитьЗначенияСвойств(ВидКонтактнойИнформации, Параметры.ВидКонтактнойИнформации); // Заголовок - Заголовок = ?(ПустаяСтрока(Параметры.Заголовок), Строка(ВидКонтактнойИнформации), Параметры.Заголовок); + Если ПустаяСтрока(Параметры.Заголовок) Тогда + Если ТипЗнч(ВидКонтактнойИнформации)=Тип("СправочникСсылка.ВидыКонтактнойИнформации") Тогда + Заголовок = Строка(ВидКонтактнойИнформации); + // Иначе останется заголовок, заданный в форме + КонецЕсли; + Иначе + Заголовок = Параметры.Заголовок; + КонецЕсли; // Режимы - СкрыватьНеактуальныеАдреса = ВидКонтактнойИнформации.СкрыватьНеактуальныеАдреса; + ПроверятьКорректность = ВидКонтактнойИнформации.ПроверятьКорректность; + ЗапрещатьВводНекорректного = ВидКонтактнойИнформации.ЗапрещатьВводНекорректного; + МожноЗагружатьКлассификатор = КонтактнаяИнформацияСлужебный.ЕстьВозможностьИзмененияАдресногоКлассификатора(); + СкрыватьНеактуальныеАдреса = ВидКонтактнойИнформации.СкрыватьНеактуальныеАдреса; + + АдресТолькоРоссийский = ВидКонтактнойИнформации.АдресТолькоРоссийский; + ТипКонтактнойИнформации = ВидКонтактнойИнформации.Тип; // Возможные варианты дома, строения, квартиры УстановитьСписокВыбораЭлемента(Элементы.ТипДома, Элементы.Дом, КонтактнаяИнформацияСлужебный.ВариантыДанныхДом()); УстановитьСписокВыбораЭлемента(Элементы.ТипСтроения, Элементы.Строение, КонтактнаяИнформацияСлужебный.ВариантыДанныхСтроение()); УстановитьСписокВыбораЭлемента(Элементы.ТипПомещения, Элементы.Помещение, КонтактнаяИнформацияСлужебный.ВариантыДанныхПомещение()); - АдресТолькоРоссийский = ВидКонтактнойИнформации.АдресТолькоРоссийский; + // Пытаемся заполнить из параметров + Если КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(Параметры.ЗначенияПолей) + И ТипКонтактнойИнформации=Перечисления.ТипыКонтактнойИнформации.Адрес + Тогда + РезультатыЧтения = Новый Структура; + XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияКонтактнойИнформации(Параметры.ЗначенияПолей, ТипКонтактнойИнформации, РезультатыЧтения); + Если РезультатыЧтения.Свойство("ТекстОшибки") Тогда + // Распознали с ошибками, сообщим при открытии + ТекстПредупрежденияПриОткрытии = РезультатыЧтения.ТекстОшибки; + XDTOКонтактная.Представление = Параметры.Представление; + XDTOКонтактная.Состав.Страна = Строка(СтранаРоссия); + КонецЕсли; + Иначе + XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияАдреса(Параметры.ЗначенияПолей, Параметры.Представление, ); + КонецЕсли; - // Пытаемся заполнить из параметра - XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияАдреса(Параметры.ЗначенияПолей, Параметры.Представление, ВидКонтактнойИнформации.Тип); Если Параметры.Комментарий<>Неопределено Тогда // Ставим новый комментарий, иначе он придет из информации КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(XDTOКонтактная, Параметры.Комментарий); КонецЕсли; ЗначениеРеквизитовПоКонтактнойИнформации(ЭтаФорма, XDTOКонтактная); - ОтрисоватьДополнительныеЗданияИПомещения(); - - // По умолчанию все русские - Если Не ЗначениеЗаполнено(Страна) Тогда - Страна = СтранаРоссия; + Если ЗначениеЗаполнено(Страна) Тогда + // Нашли в справочнике стран + ИсходноеПредставлениеСтраны = ""; + + ИначеЕсли ПустаяСтрока(КодСтраны) Тогда + // Нашли в классификаторе, но не нашли в справочнике, возможно стоит завести? + ИсходноеПредставлениеСтраны = СокрЛП(XDTOКонтактная.Состав.Страна); + + Иначе + // Не нашли ни в классификаторе ни в справочнике + ИсходноеПредставлениеСтраны = СокрЛП(XDTOКонтактная.Состав.Страна); + КонецЕсли; + + ОтрисоватьДополнительныеЗданияИПомещения(); // Возможно пустые значения, чтобы не смущали Если ПустаяСтрока(Дом) И ПустаяСтрока(ТипДома) Тогда @@ -75,19 +119,56 @@ ТипПомещения = КонтактнаяИнформацияКлиентСервер.ПервыйИлиПустой(Элементы.ТипПомещения); КонецЕсли; - // Проверяем на вменяемость + // Проверяем на корректность Если АдресТолькоРоссийский Тогда + Элементы.Страна.Доступность = Ложь; + Элементы.Страна.ЦветФона = АвтоЦвет; Если Страна<>СтранаРоссия Тогда - // От нас хотят российский адрес, но выдают странную страну, сваливаемся только на просмотр - УстановитьТолькоПросмотр(); - Иначе - Элементы.Страна.Доступность = Ложь; - Элементы.Страна.ЦветФона = АвтоЦвет; + Если Не ПустаяСтрока(Параметры.ЗначенияПолей) Тогда + // Считаем адрес российским, но введенным в свободной форме. + ПредставлениеАдреса = СокрЛП( + СокрЛП(Страна) + " " + СокрЛП(ПредставлениеАдреса) + " " + СокрЛП(ПредставлениеИностранногоАдреса) + ); + РазрешитьВводАдресаВСвободнойФорме = Истина; + ПредставлениеАдресаИзменено = Истина; + КонецЕсли; + Страна = СтранаРоссия; КонецЕсли; КонецЕсли; + // По умолчанию все русские + Если Не ЗначениеЗаполнено(Страна) Тогда + Если ПустаяСтрока(ИсходноеПредставлениеСтраны) Тогда + Страна = СтранаРоссия; + Иначе + // Не определили страну, но точно не Россия + Если ПустаяСтрока(ТекстПредупрежденияПриОткрытии) Тогда + ПолеПредупрежденияПриОткрытии = "Страна"; + КонецЕсли; + ТекстПредупрежденияПриОткрытии = ТекстПредупрежденияПриОткрытии + + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru='Страна ""%1"" не найдена в справочнике стран мира.'"), ИсходноеПредставлениеСтраны + ); + КонецЕсли; + КонецЕсли; + + // Инициализируем элементы Если Страна=СтранаРоссия Тогда + Элементы.ТипАдреса.ТекущаяСтраница = Элементы.РоссийскийАдрес; ТекущийЭлемент = Элементы.НаселенныйПункт; + Иначе + Элементы.ТипАдреса.ТекущаяСтраница = Элементы.ИностранныйАдрес; + ТекущийЭлемент = Элементы.ПредставлениеИностранногоАдреса; + КонецЕсли; + + // Обход особенности платформы 8.3 + Если ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент() Тогда + МожноЗагружатьКлассификатор = Ложь; + Иначе + КнопкаПанели = Элементы.Добавить("ФормаЗагрузитьКлассификатор", Тип("КнопкаФормы")); + КнопкаПанели.ИмяКоманды = "ЗагрузитьКлассификатор"; + Элементы.Переместить(КнопкаПанели, Элементы.ФормаВсеДействия, Элементы.ФормаВводАдресаВСвободнойФорме); + Элементы.ФормаЗагрузитьКлассификатор.Видимость = МожноЗагружатьКлассификатор; КонецЕсли; УстановитьКлючИспользованияФормы(); @@ -95,20 +176,27 @@ &НаКлиенте Процедура ПриОткрытии(Отказ) - -#Если ВебКлиент Тогда - МожноЗагружатьКлассификатор = Ложь; -#КонецЕсли - Элементы.ФормаЗагрузитьКлассификатор.Видимость = МожноЗагружатьКлассификатор; + Элементы.ДобавитьОбъект.Доступность = МожноДобавлятьДополнительныеОбъекты(); ОбработкаИзмененияСтраныКлиент(); + СостояниеВводаПредставленияАдреса(РазрешитьВводАдресаВСвободнойФорме, Ложь); ВизуализироватьКорректностьВыбора(); + + Если Не ПустаяСтрока(ТекстПредупрежденияПриОткрытии) Тогда + ПодключитьОбработчикОжидания("Подключаемый_ПредупредитьПослеОткрытияФормы", 0.1, Истина); + КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) - УстановитьКлючИспользованияФормы(); - СохраняемыеВНастройкахДанныеМодифицированы = Истина; + + ОбщегоНазначенияКлиент.ЗапроситьПодтверждениеЗакрытияФормы(Отказ, + МодифицированностьПриВыборе(), ВыбраноДействиеВыбора() ); + + Если Не Отказ Тогда + УстановитьКлючИспользованияФормы(); + СохраняемыеВНастройкахДанныеМодифицированы = Истина; + КонецЕсли; КонецПроцедуры //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -122,17 +210,66 @@ Контекст = КонтекстФормыКлиент(); ЗаполнитьПредставлениеАдреса(Контекст); КонтекстФормыКлиент(Контекст); + +#Если ВебКлиент Тогда + // Обход особенности платформы + Элемент.ОбновитьТекстРедактирования(); +#КонецЕсли + КонецПроцедуры + &НаКлиенте Процедура СтранаОчистка(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КонецПроцедуры + +&НаКлиенте +Процедура СтранаАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) + +#Если ВебКлиент Тогда + // Обход особенности платформы + СтандартнаяОбработка = Ложь; + ДанныеВыбора = Новый СписокЗначений; + Возврат; +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура СтранаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) + +#Если ВебКлиент Тогда + // Обход особенности платформы + СтандартнаяОбработка = Ложь; + ДанныеВыбора = Новый СписокЗначений; + ДанныеВыбора.Добавить(Страна); + Возврат; +#КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура СтранаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + +#Если ВебКлиент Тогда + // Обход особенности платформы + Если ТипЗнч(ВыбранноеЗначение)<>Тип("СправочникСсылка.СтраныМира") Тогда + СтандартнаяОбработка = Ложь; + ВыбранноеЗначение = Неопределено; + Возврат; + КонецЕсли; +#КонецЕсли + + УправлениеКонтактнойИнформациейКлиент.СтранаМираОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка); +КонецПроцедуры + &НаКлиенте Процедура ИндексПриИзменении(Элемент) Контекст = КонтекстФормыКлиент(); ЗаполнитьПредставлениеАдреса(Контекст); КонтекстФормыКлиент(Контекст); КонецПроцедуры + &НаКлиенте Процедура ТипДомаПриИзменении(Элемент) Контекст = КонтекстФормыКлиент(); @@ -141,6 +278,7 @@ ВизуализироватьКорректностьВыбора(); КонецПроцедуры + &НаКлиенте Процедура ДомПриИзменении(Элемент) Контекст = КонтекстФормыКлиент(); @@ -149,6 +287,7 @@ ВизуализироватьКорректностьВыбора(); КонецПроцедуры + &НаКлиенте Процедура ТипСтроенияПриИзменении(Элемент) Контекст = КонтекстФормыКлиент(); @@ -157,12 +296,14 @@ ВизуализироватьКорректностьВыбора(); КонецПроцедуры + &НаКлиенте Процедура СтроениеПриИзменении(Элемент) Контекст = КонтекстФормыКлиент(); ОбновитьИндексИПредставление(Контекст); КонтекстФормыКлиент(Контекст); КонецПроцедуры + &НаКлиенте Процедура ТипПомещенияПриИзменении(Элемент) Контекст = КонтекстФормыКлиент(); @@ -171,6 +312,7 @@ ВизуализироватьКорректностьВыбора(); КонецПроцедуры + &НаКлиенте Процедура ПомещениеПриИзменении(Элемент) Контекст = КонтекстФормыКлиент(); @@ -188,6 +330,7 @@ ВизуализироватьКорректностьВыбора(); КонецПроцедуры + &НаКлиенте Процедура НаселенныйПунктНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; @@ -211,10 +354,10 @@ ОткрытьФорму("Обработка.ВводКонтактнойИнформации.Форма.НаселенныйПунктАдреса", Новый Структура("НаселенныйПунктДетально, СкрыватьНеактуальныеАдреса", НаселенныйПунктДетально, СкрыватьНеактуальныеАдреса - ), Элемент - ); + ), Элемент); КонецПроцедуры + &НаКлиенте Процедура НаселенныйПунктОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Перем МожноЗагружатьРегион; @@ -242,15 +385,13 @@ РегионНеЗагружен = ВыбранноеЗначение.Свойство("МожноЗагружатьРегион") И ВыбранноеЗначение.МожноЗагружатьРегион; Если МожноЗагружатьКлассификатор И РегионНеЗагружен Тогда // Предлагаем загрузить классификатор - КонтактнаяИнформацияКлиент.ПредложениеЗагрузкиКлассификатора( + УправлениеКонтактнойИнформациейКлиент.ПредложениеЗагрузкиКлассификатора( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru='Данные для ""%1"" не загружены.'"), ВыбранноеЗначение.Представление - ) - ); + НСтр("ru='Данные для ""%1"" не загружены.'"), ВыбранноеЗначение.Представление)); КонецЕсли; Иначе - // Иной источник, будет попытка репарсить + // Иной источник, будет попытка разобрать КодКлассификатораНаселенногоПункта = 0; НаселенныйПункт = Строка(ВыбранноеЗначение); @@ -259,13 +400,15 @@ ДомНайденТочно = Ложь; КонецЕсли; - // Если город был выбран точно, то по коду будет восстановлен детальный населенный пункт, иначе сохранится введенная детальная инфа + // Если город был выбран точно, то по коду будет восстановлен детальный населенный пункт, иначе сохранится введенная + // детальная информация Контекст = КонтекстФормыКлиент(); ОбработкаИзмененияНаселенногоПунктаСервер(Контекст, ФормироватьДетально); КонтекстФормыКлиент(Контекст); ВизуализироватьКорректностьВыбора(); КонецПроцедуры + &НаКлиенте Процедура НаселенныйПунктАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) @@ -287,6 +430,7 @@ ДанныеВыбора = АнализКлассификатора.ДанныеВыбора; КонецПроцедуры + &НаКлиенте Процедура НаселенныйПунктОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) // Выход из поля с текстом, измененным руками @@ -306,7 +450,7 @@ КодКлассификатораУлицы = 0; УлицаНайденаТочно = Ложь; - // Дом становится недостовернвм + // Дом становится недостоверным ДомНайденТочно = Ложь; Контекст = КонтекстФормыКлиент(); @@ -324,6 +468,7 @@ ВизуализироватьКорректностьВыбора(); КонецПроцедуры + &НаКлиенте Процедура УлицаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; @@ -335,12 +480,15 @@ Если КодКлассификатораНаселенногоПункта>0 Тогда ПараметрыФормы = Новый Структура("СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица", - СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица - ); - КонтактнаяИнформацияКлиент.НачалоВыбораУлицы(Элемент, КодКлассификатораНаселенногоПункта, Улица, ПараметрыФормы); + СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица); + Иначе + // Родитель улицы неопределен, открываем форму в которой ничего нет + ПараметрыФормы = Новый Структура("СкрыватьНеактуальныеАдреса, КодКлассификатораНаселенногоПункта, Улица, Заголовок", + СкрыватьНеактуальныеАдреса, -1, Улица, НаселенныйПункт + " (не найден)"); КонецЕсли; - + УправлениеКонтактнойИнформациейКлиент.НачалоВыбораУлицы(Элемент, КодКлассификатораНаселенногоПункта, Улица, ПараметрыФормы); КонецПроцедуры + &НаКлиенте Процедура УлицаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; @@ -357,7 +505,7 @@ Улица = ВыбранноеЗначение.Представление; УлицаНайденаТочно = Истина; Иначе - // Иной источник, будет попытка репарсить + // Иной источник, будет попытка разобрать КодКлассификатораУлицы = 0; Улица = Строка(ВыбранноеЗначение); @@ -371,6 +519,7 @@ ВизуализироватьКорректностьВыбора(); КонецПроцедуры + &НаКлиенте Процедура УлицаАвтоПодбор(Элемент, Текст, ДанныеВыбора, Ожидание, СтандартнаяОбработка) @@ -391,15 +540,15 @@ АнализКлассификатора = РезультатыАвтоПодбораУлицы(КодКлассификатораНаселенногоПункта, Текст, СкрыватьНеактуальныеАдреса, ПредупреждатьОНеактуальных); ДанныеВыбора = АнализКлассификатора.ДанныеВыбора; КонецПроцедуры + &НаКлиенте Процедура УлицаОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) // Выход из поля с текстом, измененным руками - СтандартнаяОбработка = Ложь; - Модифицированность = Истина; ДанныеВыбора = Новый СписокЗначений; ДанныеВыбора.Добавить(Текст); + Улица = Текст; // Улица становится непроверенной КодКлассификатораУлицы = 0; @@ -407,8 +556,12 @@ // Дом становится непроверенным ДомНайденТочно = Ложь; - - ВизуализироватьКорректностьВыбора(); +КонецПроцедуры + +&НаКлиенте +Процедура ПредставлениеАдресаПриИзменении(Элемент) + ПредставлениеАдресаИзменено = Истина; + ПредставлениеАдресаПриИзмененииСервер(); КонецПроцедуры &НаКлиенте @@ -428,8 +581,8 @@ // Изменено значение адреса Контекст = КонтекстФормыКлиент(); - Результат = РезультатВыбора(Контекст); - Если ПроверятьКорректность И Результат.ОшибкиЗаполнения.Количество()>0 Тогда + Результат = РезультатВыбора(Контекст, ВозвращатьСписокЗначений); + Если ПроверятьКорректность И (Не РазрешитьВводАдресаВСвободнойФорме) И Результат.ОшибкиЗаполнения.Количество()>0 Тогда СообщитьОбОшибкахЗаполнения(Результат.ОшибкиЗаполнения, Ложь); Если ЗапрещатьВводНекорректного Тогда Возврат; @@ -437,6 +590,8 @@ КонецЕсли; Результат = Результат.ДанныеВыбора; + + СброситьМодифицированностьПриВыборе(); #Если ВебКлиент Тогда ФлагЗакрытия = ЗакрыватьПриВыборе; ЗакрыватьПриВыборе = Ложь; @@ -450,6 +605,8 @@ // Изменен только комментарий, пробуем вернуть обновленное Результат = РезультатВыбораТолькоКомментария(Параметры.ЗначенияПолей, Параметры.Представление, Комментарий); Результат = Результат.ДанныеВыбора; + + СброситьМодифицированностьПриВыборе(); #Если ВебКлиент Тогда ФлагЗакрытия = ЗакрыватьПриВыборе; ЗакрыватьПриВыборе = Ложь; @@ -464,12 +621,19 @@ КонецЕсли; Если (МодальныйРежим Или ЗакрыватьПриВыборе) И Открыта() Тогда + СброситьМодифицированностьПриВыборе(); Закрыть(Результат); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПроверитьЗаполнениеАдреса(Команда) + + Если РазрешитьВводАдресаВСвободнойФорме Тогда + Предупреждение(НСтр("ru='Адрес не может быть проверен, так как он введен в свободной форме.'")); + Возврат; + КонецЕсли; + Контекст = КонтекстФормыКлиент(); СписокОшибок = СписокОшибокЗаполнения(Контекст); СообщитьОбОшибкахЗаполнения(СписокОшибок, Истина); @@ -482,7 +646,7 @@ &НаКлиенте Процедура ЗагрузитьКлассификатор(Команда) - КонтактнаяИнформацияКлиент.ЗагрузитьАдресныйКлассификатор(); + УправлениеКонтактнойИнформациейКлиент.ЗагрузитьАдресныйКлассификатор(); КонецПроцедуры &НаКлиенте @@ -526,25 +690,77 @@ КонецПроцедуры +&НаКлиенте +Процедура ВвестиАдресВСвободнойФорме(Команда) + + Если РазрешитьВводАдресаВСвободнойФорме Тогда + ТекстВопроса = НСтр("ru='Изменения, введенные вручную, будут потеряны. + |Продолжить?'"); + Иначе + ТекстВопроса = НСтр("ru='Ввести адрес в свободной форме? + |Адреса, введенные в свободной форме, могут не пройти проверку по адресному классификатору.'"); + КонецЕсли; + + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, , , НСтр("ru='Подтверждение'")); + Если Ответ<>КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + РазрешитьВводАдресаВСвободнойФорме = Не РазрешитьВводАдресаВСвободнойФорме; + СостояниеВводаПредставленияАдреса(РазрешитьВводАдресаВСвободнойФорме); + + Модифицированность = Истина; +КонецПроцедуры + /////////////////////////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ // +&НаКлиенте +Функция МодифицированностьПриВыборе() + Возврат Модифицированность Или Комментарий<>КопияКомментария; +КонецФункции + +&НаКлиенте +Функция ВыбраноДействиеВыбора() + Возврат Не (Модифицированность Или Комментарий<>КопияКомментария); +КонецФункции + +&НаКлиенте +Процедура СброситьМодифицированностьПриВыборе() + Модифицированность = Ложь; + КопияКомментария = Комментарий; +КонецПроцедуры + +&НаКлиенте +Процедура Подключаемый_ПредупредитьПослеОткрытияФормы() + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстПредупрежденияПриОткрытии,, ПолеПредупрежденияПриОткрытии); +КонецПроцедуры + &НаСервереБезКонтекста -Функция РезультатВыбора(Контекст) +Функция РезультатВыбора(Контекст, ВозвращатьСписокЗначений=Ложь) XDTOИнформация = КонтактнаяИнформацияПоЗначениюРеквизитов(Контекст); Результат = Новый Структура("ДанныеВыбора, ОшибкиЗаполнения"); - Результат.ДанныеВыбора = Новый Структура("КонтактнаяИнформация, Представление, Комментарий", - КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(XDTOИнформация), + Если ВозвращатьСписокЗначений Тогда + ДанныеВыбора = КонтактнаяИнформацияСлужебный.КонтактнаяИнформацияВСтаруюСтруктуру(XDTOИнформация); + ДанныеВыбора = ДанныеВыбора.ЗначенияПолей; + ИначеЕсли Контекст.Страна<>Контекст.СтранаРоссия И ПустаяСтрока(Контекст.ПредставлениеИностранногоАдреса) Тогда + // Иностранный адрес с пустой страной, вернем чистый адрес + ДанныеВыбора = ""; + Иначе + ДанныеВыбора = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(XDTOИнформация); + КонецЕсли; + + Результат.ДанныеВыбора = Новый Структура("КонтактнаяИнформация, Представление, Комментарий, ВведеноВСвободнойФорме", + ДанныеВыбора, XDTOИнформация.Представление, - XDTOИнформация.Комментарий - ); + XDTOИнформация.Комментарий, + КонтактнаяИнформацияСлужебный.АдресВведенВСвободнойФорме(XDTOИнформация)); Результат.ОшибкиЗаполнения = КонтактнаяИнформацияСлужебный.ОшибкиЗаполненияАдреса( XDTOИнформация.Состав, - Контекст.ВидКонтактнойИнформации - ); + Контекст.ВидКонтактнойИнформации); Возврат Результат; КонецФункции @@ -554,39 +770,46 @@ XDTOИнформация = КонтактнаяИнформацияПоЗначениюРеквизитов(Контекст); Возврат КонтактнаяИнформацияСлужебный.ОшибкиЗаполненияАдреса( XDTOИнформация.Состав, - Контекст.ВидКонтактнойИнформации - ); + Контекст.ВидКонтактнойИнформации); КонецФункции &НаСервере Функция РезультатВыбораТолькоКомментария(КонтактнаяИнфо, Представление, Комментарий) Если ПустаяСтрока(КонтактнаяИнфо) Тогда - НоваяКонтакная = КонтактнаяИнформацияСлужебный.ДесериализацияАдреса(""); - КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(НоваяКонтакная, Комментарий); - НоваяКонтакная = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(НоваяКонтакная); - ИначеЕсли КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(КонтактнаяИнфо) Тогда - НоваяКонтакная = КонтактнаяИнфо; - // Модифицируем строку с КИ - КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(НоваяКонтакная, Комментарий); + НоваяКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияАдреса(""); + // Модифицируем значение "НоваяКонтактная" + КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(НоваяКонтактная, Комментарий); + НоваяКонтактная = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(НоваяКонтактная); + АдресВведенВСвободнойФорме = Ложь; + + ИначеЕсли КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(КонтактнаяИнфо) Тогда + // Копия + НоваяКонтактная = КонтактнаяИнфо; + // Модифицируем значение "НоваяКонтактная" + КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(НоваяКонтактная, Комментарий); + АдресВведенВСвободнойФорме = КонтактнаяИнформацияСлужебный.АдресВведенВСвободнойФорме(КонтактнаяИнфо); + Иначе - НоваяКонтакная = КонтактнаяИнфо; + НоваяКонтактная = КонтактнаяИнфо; + АдресВведенВСвободнойФорме = Ложь; КонецЕсли; - Возврат Новый Структура("ДанныеВыбора, ОшибкиЗаполнения", - Новый Структура("КонтактнаяИнформация, Представление, Комментарий", НоваяКонтакная, Представление, Комментарий), - Новый СписокЗначений - ); + Результат = Новый Структура("ДанныеВыбора, ОшибкиЗаполнения", Новый Структура, Новый СписокЗначений); + Результат.ДанныеВыбора.Вставить("КонтактнаяИнформация", НоваяКонтактная); + Результат.ДанныеВыбора.Вставить("Представление", Представление); + Результат.ДанныеВыбора.Вставить("Комментарий", Комментарий); + Результат.ДанныеВыбора.Вставить("ВведеноВСвободнойФорме", АдресВведенВСвободнойФорме); + Возврат Результат; КонецФункции &НаСервереБезКонтекста Процедура ОбработкаИзмененияНаселенногоПунктаСервер(Контекст, ПереформироватьДетально=Истина) Если Контекст.КодКлассификатораНаселенногоПункта<=0 Тогда - // Данные вводились вручную, пробуем репарсинг введенной строки + // Данные вводились вручную, пробуем разбор введенной строки АнализКлассификатора = НаселенныеПунктыПоПредставлению( - Контекст.НаселенныйПункт, Контекст.СкрыватьНеактуальныеАдреса - ); + Контекст.НаселенныйПункт, Контекст.СкрыватьНеактуальныеАдреса); Контекст.НаселенныйПунктНайденТочно = АнализКлассификатора.ДанныеВыбора.Количество()=1; Если Контекст.НаселенныйПунктНайденТочно Тогда ВыбранноеЗначение = АнализКлассификатора.ДанныеВыбора[0].Значение.Значение; @@ -603,7 +826,7 @@ СформироватьДетальныйНаселенныйПункт(Контекст); КонецЕсли; - // Перепроверяем улицу, индекс и представление обновлятся там + // Перепроверяем улицу, индекс и представление обновятся там ОбработкаИзмененияУлицыСервер(Контекст); КонецПроцедуры @@ -611,10 +834,9 @@ Процедура ОбработкаИзмененияУлицыСервер(Контекст) Если Контекст.КодКлассификатораУлицы<=0 Тогда - // Данные вводились вручную, пробуем репарсинг введенной строки + // Данные вводились вручную, пробуем разбор введенной строки АнализКлассификатора = УлицыПоПредставлению( - Контекст.КодКлассификатораНаселенногоПункта, Контекст.Улица, Контекст.СкрыватьНеактуальныеАдреса - ); + Контекст.КодКлассификатораНаселенногоПункта, Контекст.Улица, Контекст.СкрыватьНеактуальныеАдреса); Контекст.УлицаНайденаТочно = АнализКлассификатора.ДанныеВыбора.Количество()=1; Если Контекст.УлицаНайденаТочно Тогда ВыбранноеЗначение = АнализКлассификатора.ДанныеВыбора[0].Значение.Значение; @@ -627,7 +849,7 @@ Контекст.УлицаНайденаТочно = ЯвляетсяПотомком(Контекст.КодКлассификатораУлицы, Контекст.КодКлассификатораНаселенногоПункта); КонецЕсли; - // Перепроверяем дом, индекс и представление обновлятся там + // Перепроверяем дом, индекс и представление обновятся там ОбработкаИзмененияДомаСервер(Контекст); КонецПроцедуры @@ -641,7 +863,7 @@ &НаКлиенте Процедура ОбработкаИзмененияСтраныКлиент() ЭтоРоссийскийАдрес = Страна=СтранаРоссия; - Элементы.Индекс.Видимость = ЭтоРоссийскийАдрес; + Элементы.Индекс.Видимость = ЭтоРоссийскийАдрес; Элементы.ТипАдреса.ТекущаяСтраница = ?(ЭтоРоссийскийАдрес, Элементы.РоссийскийАдрес, Элементы.ИностранныйАдрес); // Проверять можем только российские адреса @@ -649,8 +871,14 @@ // Загружать можем только российские адреса Если МожноЗагружатьКлассификатор Тогда - Элементы.ФормаЗагрузитьКлассификатор.Доступность = ЭтоРоссийскийАдрес; + КнопкаПанели = Элементы.Найти("ФормаЗагрузитьКлассификатор"); + Если КнопкаПанели<>Неопределено Тогда + Элементы.ФормаЗагрузитьКлассификатор.Доступность = ЭтоРоссийскийАдрес; + КонецЕсли; КонецЕсли; + + // Вводить в свободной форме можем только российские адреса + Элементы.ВвестиАдресВСвободнойФорме.Доступность = ЭтоРоссийскийАдрес; КонецПроцедуры &НаСервере @@ -704,6 +932,7 @@ УстановитьЗначениеИндекса(Контекст, Инфо); ЗаполнитьПредставлениеАдреса(Контекст, Инфо); КонецПроцедуры + &НаСервереБезКонтекста Процедура УстановитьЗначениеИндекса(Контекст, XDTOКонтактная=Неопределено) Инфо = ?(XDTOКонтактная=Неопределено, КонтактнаяИнформацияПоЗначениюРеквизитов(Контекст), XDTOКонтактная); @@ -713,10 +942,22 @@ Контекст.Индекс = ИндексПоКлассификатору; КонецЕсли; КонецПроцедуры + &НаСервереБезКонтекста Процедура ЗаполнитьПредставлениеАдреса(Контекст, XDTOКонтактная=Неопределено) - Инфо = ?(XDTOКонтактная=Неопределено, КонтактнаяИнформацияПоЗначениюРеквизитов(Контекст), XDTOКонтактная); + // Код страны ставим всегда + Если ТипЗнч(Контекст.Страна)=Тип("СправочникСсылка.СтраныМира") Тогда + Контекст.КодСтраны = Контекст.Страна.Код + Иначе + Контекст.КодСтраны = ""; + КонецЕсли; + + Если Контекст.РазрешитьВводАдресаВСвободнойФорме И Контекст.ПредставлениеАдресаИзменено Тогда + Возврат; + КонецЕсли; + + Инфо = ?(XDTOКонтактная=Неопределено, КонтактнаяИнформацияПоЗначениюРеквизитов(Контекст), XDTOКонтактная); Контекст.ПредставлениеАдреса = Инфо.Представление; КонецПроцедуры @@ -733,17 +974,43 @@ Контекст.КопияКомментария = Контекст.Комментарий; // Страна по наименованию - Если ПустаяСтрока(ДанныеАдреса.Страна) Тогда + НаименованиеСтраны = СокрЛП(ДанныеАдреса.Страна); + Если ПустаяСтрока(НаименованиеСтраны) Тогда Контекст.Страна = Справочники.СтраныМира.ПустаяСсылка(); Иначе - СтранаАдреса = Справочники.СтраныМира.НайтиПоНаименованию(ДанныеАдреса.Страна); - Если ЗначениеЗаполнено(СтранаАдреса) Тогда - Контекст.Страна = СтранаАдреса; + СсылкаНаРоссию = Справочники.СтраныМира.Россия; + Если ВРЕГ(НаименованиеСтраны)=ВРЕГ(СокрЛП(СсылкаНаРоссию.Наименование)) Тогда + Контекст.Страна = СсылкаНаРоссию; + Контекст.КодСтраны = СсылкаНаРоссию.Код; + Иначе + ДанныеСтраны = Справочники.СтраныМира.ДанныеСтраныМира(, НаименованиеСтраны); + Если ДанныеСтраны=Неопределено Тогда + // Не нашли ни в справочнике, ни в классификаторе + Контекст.Страна = Неопределено; + Контекст.КодСтраны = Неопределено; + Иначе + Контекст.Страна = ДанныеСтраны.Ссылка; + Контекст.КодСтраны = ДанныеСтраны.Код; + КонецЕсли; КонецЕсли; КонецЕсли; - // Представление иностранного адреса сохраняем - Если Не КонтактнаяИнформацияСлужебный.ЭтоРоссийскийАдрес(ДанныеАдреса) Тогда + ВычисленноеПредставление = КонтактнаяИнформацияСлужебный.СформироватьПредставлениеКонтактнойИнформации( + РедактируемаяИнформация, Контекст.ВидКонтактнойИнформации); + + Если КонтактнаяИнформацияСлужебный.ЭтоРоссийскийАдрес(ДанныеАдреса) Тогда + Контекст.РазрешитьВводАдресаВСвободнойФорме = Не ПустаяСтрока(ДанныеАдреса.Состав.Адрес_по_документу); + + // Дополнительно проверяем случай, когда представление по документу равно вычисленному + Если Контекст.РазрешитьВводАдресаВСвободнойФорме Тогда + Если ПредставленияАдресаОдинаковы(ВычисленноеПредставление, ДанныеАдреса.Состав.Адрес_по_документу, Истина) + И ПредставленияАдресаОдинаковы(РедактируемаяИнформация.Представление, ДанныеАдреса.Состав.Адрес_по_документу, Истина) + Тогда + Контекст.РазрешитьВводАдресаВСвободнойФорме = Ложь; + ДанныеАдреса.Состав.Адрес_по_документу = ""; + КонецЕсли; + КонецЕсли; + Иначе Контекст.ПредставлениеИностранногоАдреса = Строка(ДанныеАдреса.Состав); КонецЕсли; @@ -804,8 +1071,10 @@ ТаблицаДанных.Удалить(СтрокаДома); КонецЕсли; - Для Каждого СтрокаДома Из ТаблицаДанных Цикл - ЗаполнитьЗначенияСвойств(Контекст.ДополнительныеЗдания.Вставить(0), СтрокаДома); + НомерСтроки = ТаблицаДанных.Количество(); + Пока НомерСтроки>0 Цикл + НомерСтроки = НомерСтроки - 1; + ЗаполнитьЗначенияСвойств(Контекст.ДополнительныеЗдания.Вставить(0), ТаблицаДанных[НомерСтроки]); КонецЦикла; // Первое помещение указываем отдельно, остальные в списке @@ -821,10 +1090,7 @@ КонецЦикла; // Если переданное представление отличается от вычисленного, то адрес изменен - ВычисленноеПредставление = КонтактнаяИнформацияСлужебный.СформироватьПредставлениеКонтактнойИнформации( - РедактируемаяИнформация, Контекст.ВидКонтактнойИнформации - ); - Если Контекст.ПредставлениеАдреса<>ВычисленноеПредставление Тогда + Если Не Контекст.РазрешитьВводАдресаВСвободнойФорме И Не ПредставленияАдресаОдинаковы(Контекст.ПредставлениеАдреса, ВычисленноеПредставление) Тогда Контекст.Модифицированность = Истина; КонецЕсли; @@ -841,7 +1107,7 @@ Адрес = Результат.Состав; Адрес.Страна = Строка(Контекст.Страна); - Если Контекст.Страна<>Контекст.СтранаРоссия Тогда + Если ВРег(Контекст.Страна)<>ВРег(Контекст.СтранаРоссия.Наименование) Тогда Адрес.Состав = Контекст.ПредставлениеИностранногоАдреса; Результат.Представление = КонтактнаяИнформацияСлужебный.ПредставлениеАдреса(Адрес, Контекст.ВидКонтактнойИнформации); Возврат Результат; @@ -853,8 +1119,7 @@ // Населенный пункт Если Контекст.КодКлассификатораНаселенногоПункта>0 Тогда КонтактнаяИнформацияСлужебный.УстановитьНаселенныйПунктАдресаПоКоду( - АдресРФ, Контекст.КодКлассификатораНаселенногоПункта - ); + АдресРФ, Контекст.КодКлассификатораНаселенногоПункта); // Добавляем возможно непустые данные Для Каждого КлючЗначение Из Контекст.НаселенныйПунктДетально Цикл ЧастьПункта = КлючЗначение.Значение; @@ -916,14 +1181,26 @@ КонецЕсли; КонтактнаяИнформацияСлужебный.ЗданияИПомещенияАдреса(АдресРФ, - Новый Структура("Здания, Помещения", ТаблицаЗданий, ТаблицаПомещений) - ); + Новый Структура("Здания, Помещения", ТаблицаЗданий, ТаблицаПомещений)); // Индекс КонтактнаяИнформацияСлужебный.ПочтовыйИндексАдреса(АдресРФ, Контекст.Индекс); - // Представление - Результат.Представление = КонтактнаяИнформацияСлужебный.ПредставлениеАдреса(Адрес, Контекст.ВидКонтактнойИнформации); + // Представление и свободный ввод адреса + РасчетноеПредставление = КонтактнаяИнформацияСлужебный.ПредставлениеАдреса(Адрес, Контекст.ВидКонтактнойИнформации); + ВведенноеПредставление = СокрЛП(Контекст.ПредставлениеАдреса); + Если Контекст.РазрешитьВводАдресаВСвободнойФорме И Контекст.ПредставлениеАдресаИзменено Тогда + Если ПредставленияАдресаОдинаковы(ВведенноеПредставление, РасчетноеПредставление) Тогда + Результат.Представление = РасчетноеПредставление; + АдресРФ.Сбросить("Адрес_по_документу"); + Иначе + Результат.Представление = ВведенноеПредставление; + АдресРФ.Адрес_по_документу = ВведенноеПредставление; + КонецЕсли; + Иначе + АдресРФ.Сбросить("Адрес_по_документу"); + Результат.Представление = РасчетноеПредставление; + КонецЕсли; Возврат Результат; КонецФункции @@ -935,8 +1212,7 @@ Если XDTOДанныеАдреса=Неопределено И Контекст.КодКлассификатораНаселенногоПункта>0 Тогда // Перезаполняем Контекст.НаселенныйПунктДетально = КонтактнаяИнформацияСлужебный.СписокРеквизитовНаселенныйПункт( - Контекст.КодКлассификатораНаселенногоПункта - ); + Контекст.КодКлассификатораНаселенногоПункта); Возврат; ИначеЕсли ТипЗнч(XDTOДанныеАдреса)=Тип("Строка") Тогда // Попытка разбора @@ -978,10 +1254,6 @@ КонецПроцедуры -&НаСервере -Процедура УстановитьТолькоПросмотр() - ЭтаФорма.ТолькоПросмотр = Истина; -КонецПроцедуры &НаСервере Процедура УдалитьГруппуЭлементов(Группа) Пока Группа.ПодчиненныеЭлементы.Количество()>0 Цикл @@ -998,10 +1270,10 @@ Функция ОтрисоватьДополнительныеЗданияИПомещения() Возврат Новый Структура("ИмяЗдания, ИмяПомещения", ОтрисоватьДополнительныеЗдания(), - ОтрисоватьДополнительныеПомещения() - ); + ОтрисоватьДополнительныеПомещения()); КонецФункции +&НаСервере Функция ОтрисоватьДополнительныеЗдания() Удалять = Новый Массив; @@ -1063,6 +1335,7 @@ Возврат Результат; КонецФункции + &НаКлиенте Процедура Подключаемый_ТипСтроенияПриИзменении(Элемент) НомерСтроки = Сред(Элемент.Имя, 1 + СтрДлина("ТипСтроения")); @@ -1077,6 +1350,7 @@ ВизуализироватьКорректностьВыбора(); Модифицированность = Истина; КонецПроцедуры + &НаКлиенте Процедура Подключаемый_СтроениеПриИзменении(Элемент) НомерСтроки = Сред(Элемент.Имя, 1 + СтрДлина("Строение")); @@ -1168,6 +1442,7 @@ ВизуализироватьКорректностьВыбора(); Модифицированность = Истина; КонецПроцедуры + &НаКлиенте Процедура Подключаемый_ПомещениеПриИзменении(Элемент) НомерСтроки = Сред(Элемент.Имя, 1 + СтрДлина("Помещение")); @@ -1194,8 +1469,7 @@ Для Каждого Элемент Из СписокОшибок Цикл ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Элемент.Представление,,, - ПутьКДаннымФормыПоПутиXPath(Элемент.Значение) - ); + ПутьКДаннымФормыПоПутиXPath(Элемент.Значение)); КонецЦикла; КонецПроцедуры @@ -1302,6 +1576,9 @@ СформироватьДетальныйНаселенныйПункт(Контекст, XDTOКонтактнаяИнфо.Состав); ЗаполнитьПредставлениеАдреса(Контекст, XDTOКонтактнаяИнфо); + // Очищаем непосредственно на форме, в контексте уже очищено + ДополнительныеЗдания.Очистить(); + ДополнительныеПомещения.Очистить(); ОтрисоватьДополнительныеЗданияИПомещения(); КонецПроцедуры @@ -1323,10 +1600,16 @@ Возврат Результат; КонецФункции +&НаКлиенте +Функция МожноДобавлятьДополнительныеОбъекты() + ВариантыСтроения = НеиспользованныеЭлементыДополнительнойТаблицы(ДополнительныеЗдания, Элементы.ТипСтроения, 1); + ВариантыПомещения = НеиспользованныеЭлементыДополнительнойТаблицы(ДополнительныеПомещения, Элементы.ТипПомещения, 2); + Возврат ВариантыСтроения.Количество() + ВариантыПомещения.Количество() > 0 +КонецФункции + &НаСервере Процедура УстановитьКлючИспользованияФормы() - - КлючНазначенияИспользования = Строка(Страна); + КлючСохраненияПоложенияОкна = Строка(Страна); Количество = 0; Для Каждого Строка Из ДополнительныеЗдания Цикл @@ -1334,44 +1617,44 @@ Количество = Количество + 1; КонецЕсли; КонецЦикла; - КлючНазначенияИспользования = КлючНазначенияИспользования + "/" + Формат(Количество, "ЧН=; ЧГ="); + КлючСохраненияПоложенияОкна = КлючСохраненияПоложенияОкна + "/" + Формат(Количество, "ЧН=; ЧГ="); Количество = 0; Для Каждого Строка Из ДополнительныеПомещения Цикл Если Не ПустаяСтрока(Строка.Значение) Тогда Количество = Количество + 1; КонецЕсли; - КонецЦикла; - КлючНазначенияИспользования = КлючНазначенияИспользования + "/" + Формат(Количество, "ЧН=; ЧГ="); + КонецЦикла; - Параметры.КлючНазначенияИспользования = КлючНазначенияИспользования; + КлючСохраненияПоложенияОкна = КлючСохраненияПоложенияОкна + "/" + Формат(Количество, "ЧН=; ЧГ="); КонецПроцедуры -// ------------------------------------------------------------------------------------------------- +//////////////////////////////////////////////////////////////////////////////////////////////////// + &НаСервереБезКонтекста Функция РезультатыАвтоПодбораНаселенногоПункта(Текст, СкрыватьНеактуальныеАдреса=Ложь, ПредупреждатьОНеактуальных=Истина) Возврат КонтактнаяИнформацияСлужебный.РезультатыАвтоПодбораНаселенногоПункта( - Текст, СкрыватьНеактуальныеАдреса, ПредупреждатьОНеактуальных - ); + Текст, СкрыватьНеактуальныеАдреса, ПредупреждатьОНеактуальных); КонецФункции + &НаСервереБезКонтекста Функция НаселенныеПунктыПоПредставлению(Текст, СкрыватьНеактуальныеАдреса=Ложь, ВыбиратьСтрок=50) Возврат КонтактнаяИнформацияСлужебный.НаселенныеПунктыПоПредставлению( - Текст, СкрыватьНеактуальныеАдреса, ВыбиратьСтрок - ); + Текст, СкрыватьНеактуальныеАдреса, ВыбиратьСтрок); КонецФункции + &НаСервереБезКонтекста Функция РезультатыАвтоПодбораУлицы(КодНаселенногоПункта, Текст, СкрыватьНеактуальныеАдреса=Ложь, ПредупреждатьОНеактуальных=Истина) Возврат КонтактнаяИнформацияСлужебный.РезультатыАвтоПодбораУлицы( - КодНаселенногоПункта, Текст, СкрыватьНеактуальныеАдреса, ПредупреждатьОНеактуальных - ); + КодНаселенногоПункта, Текст, СкрыватьНеактуальныеАдреса, ПредупреждатьОНеактуальных); КонецФункции + &НаСервереБезКонтекста Функция УлицыПоПредставлению(КодНаселенногоПункта, Текст, СкрыватьНеактуальныеАдреса=Ложь, ВыбиратьСтрок=50) Возврат КонтактнаяИнформацияСлужебный.УлицыПоПредставлению( - КодНаселенногоПункта, Текст, СкрыватьНеактуальныеАдреса, ВыбиратьСтрок - ); + КодНаселенногоПункта, Текст, СкрыватьНеактуальныеАдреса, ВыбиратьСтрок); КонецФункции + &НаСервереБезКонтекста Функция ЯвляетсяПотомком(КодКлассификатораУлицы, КодКлассификатораНаселенногоПункта) Возврат КонтактнаяИнформацияСлужебный.ЯвляетсяПотомком(КодКлассификатораУлицы, КодКлассификатораНаселенногоПункта); @@ -1382,11 +1665,12 @@ Функция КонтекстФормыКлиент(НовыеДанные=Неопределено) СписокРеквизитов = " |ВидКонтактнойИнформации, - |Страна, СтранаРоссия, СкрыватьНеактуальныеАдреса, + |Страна, КодСтраны, СтранаРоссия, СкрыватьНеактуальныеАдреса, |Индекс, ПредставлениеАдреса, ПредставлениеИностранногоАдреса, Комментарий, |НаселенныйПункт, КодКлассификатораНаселенногоПункта, НаселенныйПунктДетально, НаселенныйПунктНайденТочно, |Улица, КодКлассификатораУлицы, УлицаНайденаТочно, - |ТипДома, Дом, ДомНайденТочно, ТипСтроения, Строение, ТипПомещения, Помещение + |ТипДома, Дом, ДомНайденТочно, ТипСтроения, Строение, ТипПомещения, Помещение, + |РазрешитьВводАдресаВСвободнойФорме, ПредставлениеАдресаИзменено |"; СписокКоллекций = "ДополнительныеЗдания, ДополнительныеПомещения"; @@ -1414,4 +1698,153 @@ ЗаполнитьЗначенияСвойств(СвойствоПриемник.Добавить(), Значение); КонецЦикла; КонецЦикла; -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + +// Разрешение элементов для ввода в свободном формате +// +// Параметры: +// - Режим - Истина - можно редактировать представление адреса, Ложь - нельзя +// - ФормироватьПредставление - необязательный флаг. По умолчанию установлен. +// +&НаКлиенте +Процедура СостояниеВводаПредставленияАдреса(Режим, ФормироватьПредставление=Истина) + Элемент = Элементы.ПредставлениеАдреса; + + Элемент.РедактированиеТекста = Режим; + Если Режим Тогда + Элемент.РедактированиеТекста = Истина; + Элемент.ЦветФона = АвтоЦвет; + Иначе + Элемент.РедактированиеТекста = Ложь; + Элемент.ЦветФона = ЦветФонаФормы; + + Если ФормироватьПредставление Тогда + Контекст = КонтекстФормыКлиент(); + ЗаполнитьПредставлениеАдреса(Контекст); + КонтекстФормыКлиент(Контекст); + КонецЕсли; + КонецЕсли; + + // Остальные поля ввода + СостояниеГруппыВвода(Элементы.СтранаАдреса, Не Режим); + СостояниеГруппыВвода(Элементы.ТипАдреса, Не Режим); + + Элементы.ВвестиАдресВСвободнойФорме.Пометка = Режим; + + // Проверять адрес, введенный вручную нельзя + Если Страна=СтранаРоссия Тогда + Элементы.ПроверитьЗаполнениеАдреса.Доступность = Не Режим; + КонецЕсли; + + // Страна - по прежнему управляющее поле + Если Элементы.Страна.Доступность Тогда + Элементы.Страна.ЦветФона = ЦветФонаУправляющегоПоля; + КонецЕсли; + + // Переключаем заголовок представления и текущий элемент ввода для индикации режима + Если Режим Тогда + Элементы.ПредставлениеАдреса.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Верх; + Элементы.ПредставлениеАдреса.Заголовок = НСтр("ru='Адрес в свободной форме'"); + + Элементы.ГруппаПредставления.Отображение = ОтображениеОбычнойГруппы.Нет; + Элементы.СтранаАдреса.Отображение = Элементы.ГруппаПредставления.Отображение; + + ТекущийЭлемент = Элементы.ПредставлениеАдреса; + Иначе + Элементы.ПредставлениеАдреса.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; + Элементы.ПредставлениеАдреса.Заголовок = ""; + + Элементы.ГруппаПредставления.Отображение = ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыОтступ(); + Элементы.СтранаАдреса.Отображение = Элементы.ГруппаПредставления.Отображение; + + ТекущийЭлемент = Элементы.НаселенныйПункт; + КонецЕсли; + +КонецПроцедуры + +// Установка доступности элементов в группе +// +// Параметры: +// - Группа - ГруппаФормы - Контейнер для элементов. +// - Режим - Булево - Флаг разрешения элементов. Истина - разрешены, Ложь - нет +// +&НаКлиенте +Процедура СостояниеГруппыВвода(Группа, Режим) + + Для Каждого Элемент Из Группа.ПодчиненныеЭлементы Цикл + ТипЭлемента = ТипЗнч(Элемент); + Если ТипЭлемента=Тип("ГруппаФормы") Тогда + Если Элемент<>Элементы.ГруппаПредставления И Элемент<>Элементы.ИностранныйАдрес Тогда + СостояниеГруппыВвода(Элемент, Режим); + КонецЕсли; + + ИначеЕсли ТипЭлемента=Тип("КнопкаФормы") Тогда + Если Элемент=Элементы.ДобавитьОбъект Тогда + Элемент.Доступность = Режим И МожноДобавлятьДополнительныеОбъекты(); + Иначе + Элемент.Доступность = Режим; + КонецЕсли; + + ИначеЕсли ТипЭлемента=Тип("ПолеФормы") И Элемент.Вид=ВидПоляФормы.ПолеВвода Тогда + Элемент.ТолькоПросмотр = Не Режим; + Элемент.ЦветФона = ?(Режим, АвтоЦвет, ЦветФонаФормы); + + Иначе + Элемент.Доступность = Режим; + + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +// Представление разрешено менять только при вводе в режиме ввода в свободной форме +// Поэтому необходимо привести остальные поля к измененному представлению +// Страну не трогаем, режим свободного ввода возможен только в России +// +&НаСервере +Процедура ПредставлениеАдресаПриИзмененииСервер() + + // Пытаемся разобрать заново + XDTOКонтактная = КонтактнаяИнформацияСлужебный.ПарсингКонтактнойИнформации(ПредставлениеАдреса, ВидКонтактнойИнформации); + + // Представление + КонтактнаяИнформацияСлужебный.ПредставлениеКонтактнойИнформации(XDTOКонтактная, ПредставлениеАдреса); + + // Комментарий + КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(XDTOКонтактная, Комментарий); + + // И проставляем в реквизиты, кроме страны и представления + ТекущееПредставление = ПредставлениеАдреса; + ТекущаяСтрана = Страна; + + ОчиститьАдресСервер(ЭтаФорма); + + // Возможно будет отключен свободного ввода + ЗначениеРеквизитовПоКонтактнойИнформации(ЭтаФорма, XDTOКонтактная); + + ПредставлениеАдреса = ТекущееПредставление; + Страна = ТекущаяСтрана; + + ОтрисоватьДополнительныеЗданияИПомещения(); + + // Включаем режим свободного ввода принудительно + РазрешитьВводАдресаВСвободнойФорме = Истина; + Модифицированность = Истина; +КонецПроцедуры + +// Сравниваем два представления на эквивалентность +&НаСервереБезКонтекста +Функция ПредставленияАдресаОдинаковы(Знач Представление1, Знач Представление2, Знач ИгнорироватьЗнакНомера=Ложь) + Возврат ХешПредставления(Представление1, ИгнорироватьЗнакНомера)=ХешПредставления(Представление2, ИгнорироватьЗнакНомера); +КонецФункции + +&НаСервереБезКонтекста +Функция ХешПредставления(Знач Представление, Знач ИгнорироватьЗнакНомера=Ложь) + Результат = СтрЗаменить(Представление, Символы.ПС, ""); + Результат = СтрЗаменить(Результат, " ", ""); + Если ИгнорироватьЗнакНомера Тогда + Результат = СтрЗаменить(Результат, "№", ""); + КонецЕсли; + Возврат ВРег(Результат); +КонецФункции + diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Form.form b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Form.form index 963f397de..369777bf9 100644 --- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Form.form +++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Form.form @@ -22,6 +22,10 @@ КодСтраны Top + + ru + Код страны в телефонном номере + OnChange КодСтраныПриИзменении @@ -70,6 +74,10 @@ КодГорода Top + + ru + Код города в телефонном номере + OnChange КодГородаПриИзменении @@ -118,6 +126,10 @@ НомерТелефона Top + + ru + Номер телефона в телефонном номере + OnChange НомерТелефонаПриИзменении @@ -166,6 +178,10 @@ Добавочный Top + + ru + Добавочный номер + OnChange ДобавочныйПриИзменении @@ -285,6 +301,10 @@ Комментарий Left + + ru + Дополнительный комментарий, не попадающий в представление + КомментарийРасширеннаяПодсказка 52 @@ -638,11 +658,15 @@ -1 Left + + BeforeClose + ПередЗакрытием + OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner true true Vertical @@ -873,6 +897,23 @@ true + + ВозвращатьСписокЗначений + + <key>ru</key> + <value>Возвращать список значений</value> + + 13 + + Boolean + + + true + + + true + + КомандаОК diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Module.bsl b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Module.bsl index aa242eee9..e885d3725 100644 --- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Module.bsl +++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/ВводТелефона/Module.bsl @@ -1,18 +1,18 @@ // Форма параметризуется: // -// Заголовок (строка) - заголовок формы -// ЗначенияПолей (строка) - сериализованное значение контактной информации или пустая строка для -// ввода нового -// Представление (строка) - представление телефона (используется только при работе со старыми данными) -// ВидКонтактнойИнформации - ссылка на справочник ВидыКонтактнойИнформации, описывающий то, что мы -// редактируем +// Заголовок - Строка - заголовок формы +// ЗначенияПолей - Строка - сериализованное значение контактной информации или пустая строка для +// ввода нового +// Представление - Строка - представление телефона (используется только при работе со старыми данными) +// ВидКонтактнойИнформации - СправочникСсылка.ВидыКонтактнойИнформации, Структура - описание редактируемого +// Комментарий - Строка - необязательный комментарий, для подстановки в поле "Комментарий" // -// Комментарий (строка) - необязательный комментарий, для подстановки в поле "Комментарий" +// ВозвращатьСписокЗначений - Булево - необязательный флаг того, что возвращаемое значение поля +// КонтактнаяИнформация будет иметь тип СписокЗначений (совместимость) // // Результатом выбора является структура с полями: // "КонтактнаяИнформация, Представление, Комментарий" // -// ------------------------------------------------------------------------------------------------- //////////////////////////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -25,6 +25,8 @@ Возврат; КонецЕсли; + Параметры.Свойство("ВозвращатьСписокЗначений", ВозвращатьСписокЗначений); + // Разбор параметров в реквизиты ВидКонтактнойИнформации = Параметры.ВидКонтактнойИнформации; ТипКонтактнойИнформации = ВидКонтактнойИнформации.Тип; @@ -36,12 +38,10 @@ Если ТипКонтактнойИнформации=Перечисления.ТипыКонтактнойИнформации.Телефон Тогда XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияТелефона( - Параметры.ЗначенияПолей, Параметры.Представление, ТипКонтактнойИнформации - ); + Параметры.ЗначенияПолей, Параметры.Представление, ТипКонтактнойИнформации); Иначе XDTOКонтактная = КонтактнаяИнформацияСлужебный.ДесериализацияФакса( - Параметры.ЗначенияПолей, Параметры.Представление, ТипКонтактнойИнформации - ); + Параметры.ЗначенияПолей, Параметры.Представление, ТипКонтактнойИнформации); КонецЕсли; Если Параметры.Комментарий<>Неопределено Тогда @@ -51,6 +51,11 @@ ЗначениеРеквизитовПоКонтактнойИнформации(XDTOКонтактная); КонецПроцедуры +&НаКлиенте +Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) + ОбщегоНазначенияКлиент.ЗапроситьПодтверждениеЗакрытияФормы(Отказ, Модифицированность, ВыбраноДействиеВыбора()); +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ // @@ -78,8 +83,7 @@ &НаКлиенте Процедура КомментарийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) ОбщегоНазначенияКлиент.ОткрытьФормуРедактированияКомментария( - Элемент.ТекстРедактирования, Комментарий, Модифицированность - ); + Элемент.ТекстРедактирования, Комментарий, Модифицированность); КонецПроцедуры /////////////////////////////////////////////////////////////////////////////////////////////////// @@ -106,18 +110,24 @@ КонецЕсли; КонецЕсли; Результат = РезультатВыбора(); + + СброситьМодифицированностьПриВыборе(); ОповеститьОВыборе(Результат); ИначеЕсли Комментарий<>КопияКомментария Тогда // Изменен только комментарий, пробуем вернуть обновленное Результат = РезультатВыбораТолькоКомментария(); + + СброситьМодифицированностьПриВыборе(); ОповеститьОВыборе(Результат); + Иначе Результат = Неопределено; КонецЕсли; Если (МодальныйРежим Или ЗакрыватьПриВыборе) И Открыта() Тогда + СброситьМодифицированностьПриВыборе(); Закрыть(Результат); КонецЕсли; @@ -132,16 +142,34 @@ // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ // +&НаКлиенте +Функция ВыбраноДействиеВыбора() + Возврат Не (Модифицированность Или Комментарий<>КопияКомментария); +КонецФункции + +&НаКлиенте +Процедура СброситьМодифицированностьПриВыборе() + Модифицированность = Ложь; + КопияКомментария = Комментарий; +КонецПроцедуры + &НаСервере Функция РезультатВыбора() XDTOИнформация = КонтактнаяИнформацияПоЗначениюРеквизитов(); + Если ВозвращатьСписокЗначений Тогда + ДанныеВыбора = КонтактнаяИнформацияСлужебный.КонтактнаяИнформацияВСтаруюСтруктуру(XDTOИнформация); + ДанныеВыбора = ДанныеВыбора.ЗначенияПолей; + Иначе + ДанныеВыбора = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(XDTOИнформация); + КонецЕсли; + Возврат Новый Структура("КонтактнаяИнформация, Представление, Комментарий", - КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(XDTOИнформация), + ДанныеВыбора, XDTOИнформация.Представление, - XDTOИнформация.Комментарий - ); + XDTOИнформация.Комментарий); КонецФункции + &НаСервере Функция РезультатВыбораТолькоКомментария() @@ -155,14 +183,13 @@ КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(КонтактнаяИнфо, Комментарий); КонтактнаяИнфо = КонтактнаяИнформацияСлужебный.СериализацияКонтактнойИнформации(КонтактнаяИнфо); - ИначеЕсли КонтактнаяИнформацияКлиентСервер.ЭтоСтрокаXML(КонтактнаяИнфо) Тогда + ИначеЕсли КонтактнаяИнформацияКлиентСервер.ЭтоКонтактнаяИнформацияВXML(КонтактнаяИнфо) Тогда КонтактнаяИнформацияСлужебный.КомментарийКонтактнойИнформации(КонтактнаяИнфо, Комментарий); КонецЕсли; Возврат Новый Структура("КонтактнаяИнформация, Представление, Комментарий", - КонтактнаяИнфо, Параметры.Представление, Комментарий - ); -КонецФункции + КонтактнаяИнфо, Параметры.Представление, Комментарий); +КонецФункции // Заполняет реквизиты формы из XTDO объекта типа "Контактная информация" &НаСервере @@ -219,7 +246,7 @@ Представление = Инфо.Представление; КонецПроцедуры -// Возвращает список ошибок заполнения в виде списка значений +// Возвращает список ошибок заполнения в виде списка значений: // Представление - описание ошибки // Значение - XPath для поля &НаСервере @@ -237,11 +264,11 @@ КонецЕсли; ОчиститьСообщения(); + // Значение - XPath, представление - описание ошибки Для Каждого Элемент Из СписокОшибок Цикл ОбщегоНазначенияКлиентСервер.СообщитьПользователю(Элемент.Представление,,, - ПутьКДаннымФормыПоПутиXPath(Элемент.Значение) - ); + ПутьКДаннымФормыПоПутиXPath(Элемент.Значение)); КонецЦикла; КонецПроцедуры diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl index 14c30a1d0..c621b1746 100644 --- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl +++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/НаселенныйПунктАдреса/Module.bsl @@ -1,7 +1,7 @@ // Форма параметризуется при помощи: // // КодНаселенногоПункта (число) - если указано, то код текущего адресного классификатора для -// опредения и редактирования частей формы. +// определения и редактирования частей формы. // // НаселенныйПунктДетально - структура, зависящая от адресного классификатора с // описанием частей населенного пункта. Используется, только если @@ -52,9 +52,8 @@ Если Модифицированность Тогда Результат = Новый Структура("Код, Представление, НаселенныйПунктДетально", КодНаселенногоПунктаПоЧастямАдреса(ЧастиАдреса), - КонтактнаяИнформацияКлиент.НаименованиеНаселенногоПунктаПоЧастямАдреса(ЧастиАдреса), - ЧастиАдреса - ); + УправлениеКонтактнойИнформациейКлиент.НаименованиеНаселенногоПунктаПоЧастямАдреса(ЧастиАдреса), + ЧастиАдреса); #Если ВебКлиент Тогда ФлагЗакрытия = ЗакрыватьПриВыборе; @@ -99,6 +98,11 @@ Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.КнопкаВыбора = Истина; + Часть.Свойство("Подсказка", Элемент.Подсказка); + Если ПустаяСтрока(Элемент.Подсказка) Тогда + Элемент.Подсказка = Часть.Заголовок; + КонецЕсли; + Элемент.УстановитьДействие("ПриИзменении", "Подключаемый_ПолеПриИзменении"); Элемент.УстановитьДействие("НачалоВыбора", "Подключаемый_ПолеНачалоВыбора"); Элемент.УстановитьДействие("Очистка", "Подключаемый_Очистка"); @@ -140,7 +144,7 @@ ЧастьАдреса.Сокращение = Части.Сокращение; КонецЕсли; - // Ставим в форму, автогенерированые имена элементов и реквизитов совпадают + // Ставим в форму, автоматически сгенерированные имена элементов и реквизитов совпадают ЭтаФорма[Элемент.Имя] = ЧастьАдреса.Значение; Возврат ЧастьАдреса.Значение; @@ -156,9 +160,8 @@ Процедура Подключаемый_ПолеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ПараметрыФормы = Новый Структура("СкрыватьНеактуальныеАдреса", СкрыватьНеактуальныеАдреса); - КонтактнаяИнформацияКлиент.НачалоВыбораЭлементаАдреса( - Элемент, ИмяЧастиАдресаЭлемента(Элемент), ЧастиАдреса, ПараметрыФормы - ); + УправлениеКонтактнойИнформациейКлиент.НачалоВыбораЭлементаАдреса( + Элемент, ИмяЧастиАдресаЭлемента(Элемент), ЧастиАдреса, ПараметрыФормы); КонецПроцедуры &НаКлиенте Процедура Подключаемый_Очистка(Элемент, СтандартнаяОбработка) @@ -169,14 +172,15 @@ Перем МожноЗагружатьРегион; Если ТипЗнч(ВыбранноеЗначение)=Тип("Структура") Тогда - РегионНеЗагружен = ВыбранноеЗначение.Свойство("МожноЗагружатьРегион") И ВыбранноеЗначение.МожноЗагружатьРегион; + + РегионНеЗагружен = (ВыбранноеЗначение.Свойство("МожноЗагружатьРегион") И ВыбранноеЗначение.МожноЗагружатьРегион) + Или (ВыбранноеЗначение.Свойство("СтруктураАдреса") И ВыбранноеЗначение.СтруктураАдреса.МожноЗагружатьРегион); + Если МожноЗагружатьКлассификатор И РегионНеЗагружен Тогда // Предлагаем загрузить классификатор - КонтактнаяИнформацияКлиент.ПредложениеЗагрузкиКлассификатора( + УправлениеКонтактнойИнформациейКлиент.ПредложениеЗагрузкиКлассификатора( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru='Данные для ""%1"" не загружены.'"), ВыбранноеЗначение.Представление - ) - ); + НСтр("ru='Данные для ""%1"" не загружены.'"), ВыбранноеЗначение.Представление)); КонецЕсли; ВыбранноеЗначение = УстановитьЗначениеЧастиАдреса(Элемент, ВыбранноеЗначение); @@ -203,8 +207,7 @@ #КонецЕсли ДанныеВыбора = СписокАвтоПодбораЭлементаАдреса( - Текст, ИмяЧастиАдресаЭлемента(Элемент), ЧастиАдреса, ПредупреждатьОНеактуальных - ); + Текст, ИмяЧастиАдресаЭлемента(Элемент), ЧастиАдреса, ПредупреждатьОНеактуальных); КонецПроцедуры &НаКлиенте Процедура Подключаемый_ПолеОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) @@ -230,12 +233,10 @@ &НаСервереБезКонтекста Функция СписокАвтоПодбораЭлементаАдреса(Текст, КодЧастиАдреса, Знач ЧастиАдреса, ПредупреждатьОНеактуальных) Возврат КонтактнаяИнформацияСлужебный.СписокАвтоПодбораЭлементаАдреса( - Текст, КодЧастиАдреса, ЧастиАдреса, ПредупреждатьОНеактуальных - ); + Текст, КодЧастиАдреса, ЧастиАдреса, ПредупреждатьОНеактуальных); КонецФункции &НаСервереБезКонтекста Функция СписокВариантовЭлементаАдресаПоТексту(Текст, КодЧастиАдреса, ЧастиАдреса, ВыбиратьСтрок) Возврат КонтактнаяИнформацияСлужебный.СписокВариантовЭлементаАдресаПоТексту( - Текст, КодЧастиАдреса, ЧастиАдреса, ВыбиратьСтрок - ); + Текст, КодЧастиАдреса, ЧастиАдреса, ВыбиратьСтрок); КонецФункции diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/Форма/Form.form b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/Форма/Form.form deleted file mode 100644 index 238e97d14..000000000 --- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/Форма/Form.form +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form"> - <autoCommandBar> - <name>ФормаКоманднаяПанель</name> - <id>-1</id> - <horizontalAlign>Left</horizontalAlign> - <autoFill>true</autoFill> - </autoCommandBar> - <handlers> - <event>OnOpen</event> - <name>ПриОткрытии</name> - </handlers> - <handlers> - <event>OnCreateAtServer</event> - <name>ПриСозданииНаСервере</name> - </handlers> - <windowOpeningMode>DontBlock</windowOpeningMode> - <saveWindowSettings>true</saveWindowSettings> - <autoTitle>true</autoTitle> - <autoUrl>true</autoUrl> - <group>Vertical</group> - <autoFillCheck>true</autoFillCheck> - <allowFormCustomize>true</allowFormCustomize> - <enabled>true</enabled> - <verticalScroll>UseIfNecessary</verticalScroll> - <showTitle>auto</showTitle> - <showCloseButton>true</showCloseButton> - <attributes> - <name>Объект</name> - <id>1</id> - <valueType> - <types>DataProcessorObject.ВводКонтактнойИнформации</types> - </valueType> - <view> - <common>true</common> - </view> - <edit> - <common>true</common> - </edit> - <main>true</main> - </attributes> - <attributes> - <name>ИмяОткрываемойФормы</name> - <title> - <key>ru</key> - <value>Имя открываемой формы</value> - - 2 - - String - - - - true - - - true - - - - ПараметрыОткрываемойФормы - - <key>ru</key> - <value>Параметры открываемой формы</value> - - 3 - - - true - - - true - - - - Заголовок - - String - - - - - ЗначенияПолей - - String - - - - - Представление - - String - - - - - ВидКонтактнойИнформации - - CatalogRef.ВидыКонтактнойИнформации - - - - - - - - diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/Форма/Module.bsl deleted file mode 100644 index 88aa08661..000000000 --- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/Forms/Форма/Module.bsl +++ /dev/null @@ -1,42 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ -// - -&НаСервере -Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. - Возврат; - КонецЕсли; - - ТипИнформации = Параметры.ВидКонтактнойИнформации.Тип; - ИмяФормыВидаКонтактнойИнформации = КонтактнаяИнформацияКлиентСерверПовтИсп.ИмяФормыВводаКонтактнойИнформации( - ТипИнформации - ); - - Если ИмяФормыВидаКонтактнойИнформации=Неопределено Тогда - Ошибка = НСтр("ru='Вид информации : ""%1""' нельзя открыть в диалоге"); - ВызватьИсключение СтрЗаменить(Ошибка, "%1", ТипИнформации); - КонецЕсли; - - // Транслируем параметры - ПараметрыОткрываемойФормы = Новый Структура; - ПараметрыОткрываемойФормы.Вставить("ВидКонтактнойИнформации", Параметры.ВидКонтактнойИнформации); - ПараметрыОткрываемойФормы.Вставить("Заголовок", Параметры.Заголовок); - ПараметрыОткрываемойФормы.Вставить("ЗначенияПолей", Параметры.ЗначенияПолей); - ПараметрыОткрываемойФормы.Вставить("Представление", Параметры.Представление); - - ПараметрыОткрываемойФормы.Вставить("ЗакрыватьПриВыборе", ЗакрыватьПриВыборе); - ПараметрыОткрываемойФормы.Вставить("ЗакрыватьПриЗакрытииВладельца", ЗакрыватьПриЗакрытииВладельца); -КонецПроцедуры - -&НаКлиенте -Процедура ПриОткрытии(Отказ) - Отказ = Истина; - Если МодальныйРежим Тогда - Закрыть( ОткрытьФормуМодально(ИмяОткрываемойФормы, ПараметрыОткрываемойФормы, ВладелецФормы) ); - Иначе - ОткрытьФорму(ИмяОткрываемойФормы, ПараметрыОткрываемойФормы, ВладелецФормы, ,Окно); - КонецЕсли; -КонецПроцедуры - diff --git a/SSL/src/DataProcessors/ВводКонтактнойИнформации/ВводКонтактнойИнформации.mdo b/SSL/src/DataProcessors/ВводКонтактнойИнформации/ВводКонтактнойИнформации.mdo index 1613ec1d5..a515b1f7d 100644 --- a/SSL/src/DataProcessors/ВводКонтактнойИнформации/ВводКонтактнойИнформации.mdo +++ b/SSL/src/DataProcessors/ВводКонтактнойИнформации/ВводКонтактнойИнформации.mdo @@ -9,8 +9,7 @@ ru Ввод контактной информации - true - DataProcessor.ВводКонтактнойИнформации.Form.Форма + DataProcessor.ВводКонтактнойИнформации.Form.ВводАдреса ВводАдреса @@ -25,24 +24,6 @@ PersonalComputer MobileDevice - - НаселенныйПунктАдреса - - ru - Населенный пункт адреса - - PersonalComputer - MobileDevice - - - Форма - - ru - Форма - - PersonalComputer - MobileDevice - ВводТелефона @@ -52,4 +33,13 @@ PersonalComputer MobileDevice + + НаселенныйПунктАдреса + + ru + Населенный пункт адреса + + PersonalComputer + MobileDevice + diff --git a/SSL/src/DataProcessors/ВыполнениеОбменаДанными/Forms/Форма/Form.form b/SSL/src/DataProcessors/ВыполнениеОбменаДанными/Forms/Форма/Form.form index bdefe658a..2ec798ae8 100644 --- a/SSL/src/DataProcessors/ВыполнениеОбменаДанными/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ВыполнениеОбменаДанными/Forms/Форма/Form.form @@ -11,7 +11,7 @@ 63 <key>ru</key> - <value>Для того чтобы синхронизировать данные необходимо указать пароль.</value> + <value>Введите пароль для входа в приложение в Интернете</value> true true @@ -141,40 +141,6 @@ Auto
            - - ЗапомнитьПароль - 56 - true - true - - true - - - WSЗапомнитьПароль - - Right - - ЗапомнитьПарольРасширеннаяПодсказка - 95 - Label - true - true - - Left - - - - ЗапомнитьПарольКонтекстноеМеню - 57 - true - - CheckBoxField - Enter - true - Left - true - - КоманднаяПанельВыполненияОбмена 60 @@ -189,7 +155,7 @@ true ВыполнитьОбменРасширеннаяПодсказка - 98 + 96 Label true true @@ -215,7 +181,7 @@ ФормаЗакрыть2РасширеннаяПодсказка - 99 + 97 Label true true @@ -241,7 +207,7 @@ КоманднаяПанельВыполненияОбменаРасширеннаяПодсказка - 97 + 95 Label true true @@ -259,6 +225,10 @@ true + + <key>ru</key> + <value>Запрос пароля пользователя</value> + ru Загрузка данных @@ -296,7 +266,7 @@ ДлительнаяОперацияРасширеннаяПодсказка - 101 + 99 Label true true @@ -334,7 +304,7 @@ СтатусЗагрузкиДанныхРасширеннаяПодсказка - 102 + 100 Label true true @@ -371,7 +341,7 @@ ОжиданиеСинхронизацииДанныхРасширеннаяПодсказка - 100 + 98 Label true true @@ -407,7 +377,7 @@ КартинкаОбменЗавершенУспешноРасширеннаяПодсказка - 106 + 104 Label true true @@ -422,7 +392,7 @@ 7 true - 3 + 2 true @@ -444,7 +414,7 @@ СтатусОбменЗавершенУспешноРасширеннаяПодсказка - 107 + 105 Label true true @@ -459,7 +429,7 @@ Label true - 3 + 2 true Left @@ -481,7 +451,7 @@ ОбменЗавершенУспешноРасширеннаяПодсказка - 105 + 103 Label true true @@ -511,7 +481,7 @@ КартинкаОбменЗавершенСОшибкойРасширеннаяПодсказка - 109 + 107 Label true true @@ -526,7 +496,7 @@ 7 true - 3 + 2 true @@ -549,7 +519,7 @@ СтатусОбменЗавершенСОшибкойРасширеннаяПодсказка - 110 + 108 Label true true @@ -564,7 +534,6 @@ Label true - 3 true Left @@ -586,7 +555,7 @@ ОбменЗавершенСОшибкойРасширеннаяПодсказка - 108 + 106 Label true true @@ -616,7 +585,7 @@ КартинкаОбменЗавершенСОшибкой1РасширеннаяПодсказка - 112 + 110 Label true true @@ -631,7 +600,7 @@ 7 true - 3 + 2 true @@ -656,7 +625,7 @@ СтатусОбменЗавершенСОшибкойДляАдминистратораРасширеннаяПодсказка - 114 + 112 Label true true @@ -671,7 +640,6 @@ Label true - 2 true false @@ -689,7 +657,7 @@ ПерейтиВЖурналРегистрацииРасширеннаяПодсказка - 115 + 113 Label true true @@ -721,7 +689,7 @@ СтатусноеСообщениеРасширеннаяПодсказка - 113 + 111 Label true true @@ -754,7 +722,7 @@ ОбменЗавершенСОшибкойДляАдминистратораРасширеннаяПодсказка - 111 + 109 Label true true @@ -784,7 +752,7 @@ КартинкаОбменЗавершенСОшибкой2РасширеннаяПодсказка - 117 + 115 Label true true @@ -799,7 +767,7 @@ 7 true - 3 + 2 true @@ -821,7 +789,7 @@ None СообщениеОбОшибкеПользователюРасширеннаяПодсказка - 118 + 116 Label true true @@ -866,7 +834,7 @@ ОбменЗавершенСОшибкойПодключенияРасширеннаяПодсказка - 116 + 114 Label true true @@ -896,7 +864,7 @@ КартинкаТребуетсяОбновлениеРасширеннаяПодсказка - 121 + 119 Label true true @@ -911,7 +879,7 @@ 5 true - 3 + 2 true false @@ -927,7 +895,7 @@ ТребуетсяОбновлениеОграниченныеПрава 39 - ТекстТребуетсяОбновлениеОрганиченныеПрава + ТекстТребуетсяОбновлениеОграниченныеПрава 40 <key>ru</key> @@ -940,8 +908,8 @@ <common>true</common> </userVisible> <extendedTooltip> - <name>ТекстТребуетсяОбновлениеОрганиченныеПраваРасширеннаяПодсказка</name> - <id>124</id> + <name>ТекстТребуетсяОбновлениеОграниченныеПраваРасширеннаяПодсказка</name> + <id>122</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -950,7 +918,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>ТекстТребуетсяОбновлениеОрганиченныеПраваКонтекстноеМеню</name> + <name>ТекстТребуетсяОбновлениеОграниченныеПраваКонтекстноеМеню</name> <id>41</id> <autoFill>true</autoFill> </contextMenu> @@ -978,7 +946,7 @@ </toolTip> <extendedTooltip> <name>ТребуетсяОбновлениеОграниченныеПраваРасширеннаяПодсказка</name> - <id>123</id> + <id>121</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1010,7 +978,7 @@ </userVisible> <extendedTooltip> <name>ТекстТребуетсяОбновлениеПолныеПраваРасширеннаяПодсказка</name> - <id>126</id> + <id>124</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1047,7 +1015,7 @@ </toolTip> <extendedTooltip> <name>ТребуетсяОбновлениеПолныеПраваРасширеннаяПодсказка</name> - <id>125</id> + <id>123</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1077,7 +1045,7 @@ <height>1</height> <extendedTooltip> <name>ПанельТребуетсяОбновлениеРасширеннаяПодсказка</name> - <id>122</id> + <id>120</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1105,7 +1073,7 @@ </toolTip> <extendedTooltip> <name>ТребуетсяОбновлениеРасширеннаяПодсказка</name> - <id>120</id> + <id>118</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1133,7 +1101,7 @@ </toolTip> <extendedTooltip> <name>СтатусЗавершенияОбменаРасширеннаяПодсказка</name> - <id>104</id> + <id>102</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1165,7 +1133,7 @@ </userVisible> <extendedTooltip> <name>ФормаЗакрытьРасширеннаяПодсказка</name> - <id>130</id> + <id>128</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1195,7 +1163,7 @@ </toolTip> <extendedTooltip> <name>КоманднаяПанельЗакрытьРасширеннаяПодсказка</name> - <id>129</id> + <id>127</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1223,7 +1191,7 @@ </toolTip> <extendedTooltip> <name>ДействияЗакрытьРасширеннаяПодсказка</name> - <id>128</id> + <id>126</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1253,7 +1221,7 @@ </userVisible> <extendedTooltip> <name>УстановитьОбновлениеРасширеннаяПодсказка</name> - <id>133</id> + <id>131</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1279,7 +1247,7 @@ </userVisible> <extendedTooltip> <name>ФормаЗакрыть1РасширеннаяПодсказка</name> - <id>134</id> + <id>132</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1309,7 +1277,7 @@ </toolTip> <extendedTooltip> <name>КоманднаяПанельУстановитьЗакрытьРасширеннаяПодсказка</name> - <id>132</id> + <id>130</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1337,7 +1305,7 @@ </toolTip> <extendedTooltip> <name>ДействияУстановитьЗакрытьРасширеннаяПодсказка</name> - <id>131</id> + <id>129</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1366,7 +1334,7 @@ </toolTip> <extendedTooltip> <name>ПанельДействийРасширеннаяПодсказка</name> - <id>127</id> + <id>125</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1394,7 +1362,7 @@ </toolTip> <extendedTooltip> <name>ЗавершениеОбменаРасширеннаяПодсказка</name> - <id>103</id> + <id>101</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1777,42 +1745,6 @@ <common>true</common> </edit> </attributes> - <attributes> - <name>WSURLВебСервиса</name> - <title> - <key>ru</key> - <value>WSURLВеб сервиса</value> - - 9 - - String - - - - true - - - true - - - - WSИмяПользователя - - <key>ru</key> - <value>WSИмя пользователя</value> - - 10 - - String - - - - true - - - true - - WSПароль @@ -1953,23 +1885,6 @@ <common>true</common> </edit> </attributes> - <attributes> - <name>WSЗапомнитьПароль</name> - <title> - <key>ru</key> - <value>Запомнить пароль</value> - - 20 - - Boolean - - - true - - - true - - АдресДляВосстановленияПароляУчетнойЗаписи @@ -2019,6 +1934,91 @@ <common>true</common> </edit> </attributes> + <attributes> + <name>ИспользоватьТекущегоПользователяДляАутентификации</name> + <title> + <key>ru</key> + <value>Использовать текущего пользователя для аутентификации</value> + + 23 + + 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> + + 20 + + Boolean + + + true + + + true + + + + ЗавершениеРаботыСистемы + + <key>ru</key> + <value>Завершение работы системы</value> + + 25 + + Boolean + + + true + + + true + + ПерейтиВЖурналРегистрации @@ -2120,6 +2120,18 @@ <stringQualifiers/> </valueType> </parameters> + <parameters> + <name>ЗакрытьПриУспешнойСинхронизации</name> + <valueType> + <types>Boolean</types> + </valueType> + </parameters> + <parameters> + <name>ЗавершениеРаботыСистемы</name> + <valueType> + <types>Boolean</types> + </valueType> + </parameters> <commandInterface> <navigationPanel/> <commandBar/> diff --git a/SSL/src/DataProcessors/ВыполнениеОбменаДанными/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ВыполнениеОбменаДанными/Forms/Форма/Module.bsl index 0e3e9e683..214d1fcfa 100644 --- a/SSL/src/DataProcessors/ВыполнениеОбменаДанными/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ВыполнениеОбменаДанными/Forms/Форма/Module.bsl @@ -11,13 +11,16 @@ УстановитьПривилегированныйРежим(Истина); - УзелИнформационнойБазы = Параметры.УзелИнформационнойБазы; + АдресДляВосстановленияПароляУчетнойЗаписи = Параметры.АдресДляВосстановленияПароляУчетнойЗаписи; + ЗакрытьПриУспешнойСинхронизации = Параметры.ЗакрытьПриУспешнойСинхронизации; + УзелИнформационнойБазы = Параметры.УзелИнформационнойБазы; + ЗавершениеРаботыСистемы = Параметры.ЗавершениеРаботыСистемы; Если Не ЗначениеЗаполнено(УзелИнформационнойБазы) Тогда Если ОбменДаннымиСервер.ЭтоПодчиненныйУзелРИБ() Тогда - УзелИнформационнойБазы = ПланыОбмена.ГлавныйУзел(); + УзелИнформационнойБазы = ОбменДаннымиСервер.ГлавныйУзел(); Иначе @@ -27,7 +30,7 @@ КонецЕсли; - ЕстьОшибки = КонфигурацияИзменена() И ПланыОбмена.ГлавныйУзел() = УзелИнформационнойБазы; + ЕстьОшибки = ((ОбменДаннымиСервер.ГлавныйУзел() = УзелИнформационнойБазы) И КонфигурацияИзменена()); // устанавливаем заголовок формы Заголовок = НСтр("ru = 'Синхронизация данных с ""%1""'"); @@ -37,26 +40,26 @@ ВидТранспортаСообщений = РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(УзелИнформационнойБазы); - Если ВидТранспортаСообщений = Перечисления.ВидыТранспортаСообщенийОбмена.WS Тогда - - НастройкиТранспортаWS = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаWS(УзелИнформационнойБазы); - - ЗаполнитьЗначенияСвойств(ЭтаФорма, НастройкиТранспортаWS); - - КонецЕсли; + // При обмене в распределенной информационной базе через веб-сервис всегда переопределяем параметры аутентификации + // (пользователь и пароль), сохраненные в информационной базе. + // При обмене через веб-сервис для не-РИБ обменов параметры аутентификации (пароль) переопределяем (запрашиваем) только, + // если пароль не сохранен в информационной базе. + ИспользоватьТекущегоПользователяДляАутентификации = ОбменДаннымиПовтИсп.ЭтоУзелРаспределеннойИнформационнойБазы(УзелИнформационнойБазы); + ПарольСинхронизацииЗадан = ОбменДаннымиСервер.ПарольСинхронизацииДанныхЗадан(УзелИнформационнойБазы); + ПарольСинхронизацииСохранен = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаWS(УзелИнформационнойБазы).WSЗапомнитьПароль; + ИспользоватьСохраненныеПараметрыАутентификации = Не ОбменДаннымиПовтИсп.ЭтоУзелРаспределеннойИнформационнойБазы(УзелИнформационнойБазы) И ПарольСинхронизацииСохранен; РольДоступнаДобавлениеИзменениеОбменовДанными = Пользователи.РолиДоступны("НастройкаСинхронизацииДанных"); РольДоступнаПолныеПрава = Пользователи.РолиДоступны("ПолныеПрава"); Элементы.ПанельТребуетсяОбновление.ТекущаяСтраница = ?(РольДоступнаПолныеПрава, Элементы.ТребуетсяОбновлениеПолныеПрава, Элементы.ТребуетсяОбновлениеОграниченныеПрава); Элементы.ТекстТребуетсяОбновлениеПолныеПрава.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ТекстТребуетсяОбновлениеПолныеПрава.Заголовок, УзелИнформационнойБазы); - Элементы.ТекстТребуетсяОбновлениеОрганиченныеПрава.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ТекстТребуетсяОбновлениеОрганиченныеПрава.Заголовок, УзелИнформационнойБазы); - - АдресДляВосстановленияПароляУчетнойЗаписи = Параметры.АдресДляВосстановленияПароляУчетнойЗаписи; + Элементы.ТекстТребуетсяОбновлениеОграниченныеПрава.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Элементы.ТекстТребуетсяОбновлениеОграниченныеПрава.Заголовок, УзелИнформационнойБазы); Элементы.ЗабылиПароль.Видимость = Не ПустаяСтрока(АдресДляВосстановленияПароляУчетнойЗаписи); СинхронизацияДанныхОтключена = Ложь; + ВыполнитьОтправкуДанных = Ложь; // Устанавливаем текущий сценарий работы обмена Если ЕстьОшибки Тогда @@ -65,13 +68,64 @@ ИначеЕсли ВидТранспортаСообщений = Перечисления.ВидыТранспортаСообщенийОбмена.WS Тогда - Если WSЗапомнитьПароль Тогда + ВыполнитьОтправкуДанных = РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ВыполнитьОтправкуДанных(УзелИнформационнойБазы); + + Если ИспользоватьСохраненныеПараметрыАутентификации Тогда - СценарийОбменаЧерезВебСервис(); + Если ПарольСинхронизацииСохранен Тогда + + Если ВыполнитьОтправкуДанных Тогда + + СценарийОбменаЧерезВебСервис_ОтправкаПолучениеОтправка(); + + Иначе + + СценарийОбменаЧерезВебСервис(); + + КонецЕсли; + + Иначе + + Если ВыполнитьОтправкуДанных Тогда + + СценарийОбменаЧерезВебСервисСЗапросомПароля_ОтправкаПолучениеОтправка(); + + Иначе + + СценарийОбменаЧерезВебСервисСЗапросомПароля(); + + КонецЕсли; + + КонецЕсли; Иначе - СценарийОбменаЧерезВебСервисСЗапросомПароля(); + Если ПарольСинхронизацииЗадан Тогда + + Если ВыполнитьОтправкуДанных Тогда + + СценарийОбменаЧерезВебСервис_ОтправкаПолучениеОтправка(); + + Иначе + + СценарийОбменаЧерезВебСервис(); + + + КонецЕсли; + + Иначе + + Если ВыполнитьОтправкуДанных Тогда + + СценарийОбменаЧерезВебСервисСЗапросомПароля_ОтправкаПолучениеОтправка(); + + Иначе + + СценарийОбменаЧерезВебСервисСЗапросомПароля(); + + КонецЕсли; + + КонецЕсли; КонецЕсли; @@ -96,20 +150,21 @@ &НаКлиенте Процедура ПерейтиВЖурналРегистрации(Команда) - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма", ПолучитьСтруктуруДанныхОтбораЖурналаРегистрации(УзелИнформационнойБазы), ЭтаФорма); + ПараметрыФормы = ПолучитьСтруктуруДанныхОтбораЖурналаРегистрации(УзелИнформационнойБазы); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура УстановитьОбновление(Команда) Закрыть(); - ОбменДаннымиКлиент.ВыполнитьОбновлениеИнформационнойБазы(); + ОбменДаннымиКлиент.ВыполнитьОбновлениеИнформационнойБазы(ЗавершениеРаботыСистемы); КонецПроцедуры &НаКлиенте Процедура ЗабылиПароль(Команда) - ОбменДаннымиКлиент.ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных(); + ОбменДаннымиКлиент.ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных(АдресДляВосстановленияПароляУчетнойЗаписи); КонецПроцедуры @@ -373,8 +428,7 @@ ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", ДлительнаяОперация = Ложь, - ИмяОбработчикаДлительнойОперации = "" - ) + ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; @@ -436,12 +490,15 @@ ДлительнаяОперацияЗавершенаСОшибкой = Ложь; СообщениеОбОшибке = ""; - СостояниеОперации = ОбменДаннымиВызовСервера.СостояниеДлительнойОперации(ИдентификаторДлительнойОперации, - WSURLВебСервиса, - WSИмяПользователя, - WSПароль, - СообщениеОбОшибке - ); + ПараметрыАутентификации = ?(ИспользоватьСохраненныеПараметрыАутентификации, + Неопределено, + Новый Структура("ИспользоватьТекущегоПользователя", ИспользоватьТекущегоПользователяДляАутентификации)); + + СостояниеОперации = ОбменДаннымиВызовСервера.СостояниеДлительнойОперацииДляУзлаИнформационнойБазы( + ИдентификаторДлительнойОперации, + УзелИнформационнойБазы, + ПараметрыАутентификации, + СообщениеОбОшибке); Если СостояниеОперации = "Active" Тогда @@ -501,7 +558,7 @@ КонецФункции &НаСервереБезКонтекста -Процедура ОбычнаяЗагрузкаДанных_ОбработкаДлительнойОперации(Отказ, УзелИнформационнойБазы, ВидТранспортаСообщений) +Процедура ОбычнаяЗагрузкаДанных_ОбработкаДлительнойОперации(Отказ, Знач УзелИнформационнойБазы, Знач ВидТранспортаСообщений) // запускаем выполнение обмена ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы( @@ -509,8 +566,7 @@ УзелИнформационнойБазы, Истина, Ложь, - ВидТранспортаСообщений - ); + ВидТранспортаСообщений); КонецПроцедуры @@ -526,7 +582,7 @@ КонецФункции &НаСервереБезКонтекста -Процедура ОбычнаяВыгрузкаДанных_ОбработкаДлительнойОперации(Отказ, УзелИнформационнойБазы, ВидТранспортаСообщений) +Процедура ОбычнаяВыгрузкаДанных_ОбработкаДлительнойОперации(Отказ, Знач УзелИнформационнойБазы, Знач ВидТранспортаСообщений) // запускаем выполнение обмена ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы( @@ -534,8 +590,7 @@ УзелИнформационнойБазы, Ложь, Истина, - ВидТранспортаСообщений - ); + ВидТранспортаСообщений); КонецПроцедуры @@ -563,65 +618,23 @@ &НаКлиенте Функция Подключаемый_ОжиданиеПроверкиПодключения_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) - ПроверитьПодключениеИСохранитьНастройки(Отказ); - - Если Отказ Тогда - - Предупреждение(НСтр("ru = 'Не удалось выполнить операцию.'")); - - КонецЕсли; - -КонецФункции - -&НаКлиенте -Функция Подключаемый_ОжиданиеПроверкиПодключенияПарольЗадан_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) - ПроверитьПодключение(); КонецФункции -&НаСервере -Процедура ПроверитьПодключениеИСохранитьНастройки(Отказ) - - ПараметрыПодключения = ОбменДаннымиСервер.СтруктураПараметровWS(); - ЗаполнитьЗначенияСвойств(ПараметрыПодключения, ЭтаФорма); - - СообщениеПользователю = ""; - Если Не ОбменДаннымиСервер.ЕстьПодключениеККорреспонденту(УзелИнформационнойБазы, ПараметрыПодключения, СообщениеПользователю) Тогда - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю,,,, Отказ); - Возврат; - КонецЕсли; - - Если WSЗапомнитьПароль Тогда - - Попытка - - УстановитьПривилегированныйРежим(Истина); - - // обновляем запись в РС - СтруктураЗаписи = Новый Структура; - СтруктураЗаписи.Вставить("Узел", УзелИнформационнойБазы); - СтруктураЗаписи.Вставить("WSЗапомнитьПароль", Истина); - СтруктураЗаписи.Вставить("WSПароль", WSПароль); - РегистрыСведений.НастройкиТранспортаОбмена.ОбновитьЗапись(СтруктураЗаписи); - - Исключение - ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),,,, Отказ); - Возврат; - КонецПопытки; - - КонецЕсли; - -КонецПроцедуры - &НаСервере Процедура ПроверитьПодключение() - ПараметрыПодключения = ОбменДаннымиСервер.СтруктураПараметровWS(); - ЗаполнитьЗначенияСвойств(ПараметрыПодключения, ЭтаФорма); + УстановитьПривилегированныйРежим(Истина); + + ПараметрыАутентификации = ?(ИспользоватьСохраненныеПараметрыАутентификации, + Неопределено, + Новый Структура("ИспользоватьТекущегоПользователя, Пароль", + ИспользоватьТекущегоПользователяДляАутентификации, ?(ПарольСинхронизацииЗадан, Неопределено, WSПароль))); + + WSПароль = ""; // Сбрасываем пароль после проверки подключения + + ПараметрыПодключения = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспортаWS(УзелИнформационнойБазы, ПараметрыАутентификации); Если Не ОбменДаннымиСервер.ЕстьПодключениеККорреспонденту(УзелИнформационнойБазы, ПараметрыПодключения, СообщениеОбОшибкеПользователю) Тогда СинхронизацияДанныхОтключена = Истина; @@ -639,6 +652,10 @@ Если Не СинхронизацияДанныхОтключена Тогда + ПараметрыАутентификации = ?(ИспользоватьСохраненныеПараметрыАутентификации, + Неопределено, + Новый Структура("ИспользоватьТекущегоПользователя", ИспользоватьТекущегоПользователяДляАутентификации)); + ЗагрузкаДанных_ОбработкаДлительнойОперации( Отказ, УзелИнформационнойБазы, @@ -646,8 +663,7 @@ ИдентификаторДлительнойОперации, ИдентификаторФайлаСообщенияВСервисе, ДатаНачалаОперации, - WSПароль - ); + ПараметрыАутентификации); КонецЕсли; @@ -660,13 +676,12 @@ &НаСервереБезКонтекста Процедура ЗагрузкаДанных_ОбработкаДлительнойОперации( Отказ, - УзелИнформационнойБазы, + Знач УзелИнформационнойБазы, ДлительнаяОперация, ИдентификаторОперации, ИдентификаторФайла, ДатаНачалаОперации, - Пароль - ) + Знач ПараметрыАутентификации) ДатаНачалаОперации = ТекущаяДатаСеанса(); @@ -681,8 +696,7 @@ ИдентификаторОперации, ИдентификаторФайла, Истина, - Пароль - ); + ПараметрыАутентификации); КонецПроцедуры @@ -710,18 +724,20 @@ УзелИнформационнойБазы, "ЗагрузкаДанных", ДатаНачалаОперации, - СообщениеОбОшибке - ); + СообщениеОбОшибке); Иначе + ПараметрыАутентификации = ?(ИспользоватьСохраненныеПараметрыАутентификации, + Неопределено, + Новый Структура("ИспользоватьТекущегоПользователя", ИспользоватьТекущегоПользователяДляАутентификации)); + ОбменДаннымиВызовСервера.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазыЗавершениеДлительнойОперации( Ложь, УзелИнформационнойБазы, ИдентификаторФайлаСообщенияВСервисе, ДатаНачалаОперации, - WSПароль - ); + ПараметрыАутентификации); КонецЕсли; @@ -739,6 +755,10 @@ Если Не СинхронизацияДанныхОтключена Тогда + ПараметрыАутентификации = ?(ИспользоватьСохраненныеПараметрыАутентификации, + Неопределено, + Новый Структура("ИспользоватьТекущегоПользователя", ИспользоватьТекущегоПользователяДляАутентификации)); + ВыгрузкаДанных_ОбработкаДлительнойОперации( Отказ, УзелИнформационнойБазы, @@ -746,8 +766,7 @@ ИдентификаторДлительнойОперации, ИдентификаторФайлаСообщенияВСервисе, ДатаНачалаОперации, - WSПароль - ); + ПараметрыАутентификации); КонецЕсли; @@ -760,13 +779,12 @@ &НаСервереБезКонтекста Процедура ВыгрузкаДанных_ОбработкаДлительнойОперации( Отказ, - УзелИнформационнойБазы, + Знач УзелИнформационнойБазы, ДлительнаяОперация, ИдентификаторОперации, ИдентификаторФайла, ДатаНачалаОперации, - Пароль - ) + Знач ПараметрыАутентификации) ДатаНачалаОперации = ТекущаяДатаСеанса(); @@ -781,8 +799,7 @@ ИдентификаторОперации, ИдентификаторФайла, Истина, - Пароль - ); + ПараметрыАутентификации); КонецПроцедуры @@ -810,15 +827,13 @@ УзелИнформационнойБазы, "ВыгрузкаДанных", ДатаНачалаОперации, - СообщениеОбОшибке - ); + СообщениеОбОшибке); Иначе ОбменДаннымиВызовСервера.ЗафиксироватьВыполнениеВыгрузкиДанныхВРежимеДлительнойОперации( УзелИнформационнойБазы, - ДатаНачалаОперации - ); + ДатаНачалаОперации); КонецЕсли; @@ -836,8 +851,7 @@ СтраницаОбменЗавершенСОшибкой = ?(РольДоступнаДобавлениеИзменениеОбменовДанными, Элементы.ОбменЗавершенСОшибкойДляАдминистратора, - Элементы.ОбменЗавершенСОшибкой - ); + Элементы.ОбменЗавершенСОшибкой); Если СинхронизацияДанныхОтключена Тогда @@ -873,15 +887,11 @@ Оповестить("ВыполненОбменДанными"); -КонецФункции - -&НаКлиенте -Функция Подключаемый_НачалоВыполненияОбмена_ПриОткрытии(Отказ, ПропуститьСтраницу, ЭтоПереходДалее) - - Если ЭтоПереходДалее Тогда - - ПропуститьСтраницу = Истина; + Если ЗакрытьПриУспешнойСинхронизации + И Не СинхронизацияДанныхОтключена + И Не ЕстьОшибки Тогда + Закрыть(); КонецЕсли; КонецФункции @@ -905,7 +915,7 @@ ТаблицаПереходов.Очистить(); - ТаблицаПереходовНоваяСтрока(1, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ОжиданиеПроверкиПодключенияПарольЗадан_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(1, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ОжиданиеПроверкиПодключения_ОбработкаДлительнойОперации"); ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации"); ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ЗагрузкаДанныхДлительнаяОперация_ОбработкаДлительнойОперации"); ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ЗагрузкаДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); @@ -916,6 +926,32 @@ КонецПроцедуры +&НаСервере +Процедура СценарийОбменаЧерезВебСервис_ОтправкаПолучениеОтправка() + + ТаблицаПереходов.Очистить(); + + ТаблицаПереходовНоваяСтрока(1, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ОжиданиеПроверкиПодключения_ОбработкаДлительнойОперации"); + + // Отправка + ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанныхДлительнаяОперация_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); + + // Получение + ТаблицаПереходовНоваяСтрока(5, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(6, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ЗагрузкаДанныхДлительнаяОперация_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(7, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ЗагрузкаДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); + + // Отправка + ТаблицаПереходовНоваяСтрока(8, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(9, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанныхДлительнаяОперация_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(10, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); + + ТаблицаПереходовНоваяСтрока(11, "ЗавершениеОбмена",,, "ЗавершениеОбмена_ПриОткрытии",,, Истина, "ЗавершениеОбмена_ОбработкаДлительнойОперации"); + +КонецПроцедуры + &НаСервере Процедура СценарийОбменаЧерезВебСервисСЗапросомПароля() @@ -933,6 +969,33 @@ КонецПроцедуры +&НаСервере +Процедура СценарийОбменаЧерезВебСервисСЗапросомПароля_ОтправкаПолучениеОтправка() + + ТаблицаПереходов.Очистить(); + + ТаблицаПереходовНоваяСтрока(1, "ЗапросПароляПользователя",,, "ЗапросПароляПользователя_ПриОткрытии", "ЗапросПароляПользователя_ПриПереходеДалее"); + ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ОжиданиеПроверкиПодключения_ОбработкаДлительнойОперации"); + + // Отправка + ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанныхДлительнаяОперация_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(5, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); + + // Получение + ТаблицаПереходовНоваяСтрока(6, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ЗагрузкаДанных_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(7, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ЗагрузкаДанныхДлительнаяОперация_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(8, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ЗагрузкаДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); + + // Отправка + ТаблицаПереходовНоваяСтрока(9, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанных_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(10, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанныхДлительнаяОперация_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(11, "ОжиданиеСинхронизацииДанных",,,,,, Истина, "ВыгрузкаДанныхДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); + + ТаблицаПереходовНоваяСтрока(12, "ЗавершениеОбмена",,, "ЗавершениеОбмена_ПриОткрытии",,, Истина, "ЗавершениеОбмена_ОбработкаДлительнойОперации"); + +КонецПроцедуры + &НаСервере Процедура СценарийКогдаЕстьОшибкиПриНачалеРаботы() diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Form.form b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Form.form index 04d66efe9..3ab22c685 100644 --- a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Form.form +++ b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Form.form @@ -756,7 +756,7 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoUrl>true</autoUrl> <group>Vertical</group> diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Help/ru.html b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Help/ru.html index 1e760fad7..8e71ee94a 100644 --- a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Help/ru.html +++ b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> -<p>Если в процессе записи при установленном флажке <strong>Изменять в транзакции </strong>не удается записать один из элементов (например, потому что он редактируется другим пользователем), то будут отменены изменения во всех элементах. По умолчанию флажок не установлен. </p> -<p>Если изменение элементов выполняется не в транзакции, то рекомендуется выполнять ее с установленным флажком <strong>Прерывать по ошибке</strong>. В этом случае, если запись элементов по каким-либо причинам не возможна, система выдаст предупреждение и предложит продолжить изменение оставшихся элементов, либо прервать для выяснения причин проблемы. Если флажок не установлен, а элемент записать нельзя, то он будет пропущен и продолжится изменение оставшихся элементов.</p> -<p>Установка флажка <strong>Обрабатывать дочерние элементы</strong> (по умолчанию флажок не установлен) позволяет изменять дочерние элементы выбранных групп и родительских элементов без необходимости установки флажков у всех элементов групп и дочерних элементах. Если флажок снят, то система обрабатывает саму группу, а не ее дочерние элементы.</p></body></html> \ No newline at end of file +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> +<p>Дополнительно <a href="DataProcessor.ГрупповоеИзменениеОбъектов/Help">на первой странице помощника</a> можно задать особые настройки с помощью команды <strong>Настроить параметры изменения</strong>. Система позволяет обрабатывать объекты в транзакции. Если в процессе записи при установленном флажке <strong>Изменять в транзакции </strong>не удается записать один из объектов (например, потому что объект редактируется другим пользователем), то будут отменены изменения во всех объектах. По умолчанию флажок не установлен. </p> +<p>Если изменение объектов выполняется не в транзакции, то рекомендуется выполнять ее с установленным флажком <strong>Прерывать по ошибке</strong>. В этом случае, если запись объекта по каким-либо причинам не возможна, система выдаст предупреждение и предложит продолжить изменение оставшихся объектов, либо прервать для выяснения причин проблемы. Если флажок не установлен, а объект записать нельзя, то обработка пропустит такой объект и продолжит изменение оставшихся объектов.</p> +<p>Установка флажка <strong>Обрабатывать дочерние элементы</strong> (по умолчанию флажок не установлен) позволяет изменять дочерние элементы выбранных групп и родительских объектов без необходимости установки флажков у всех элементов групп и дочерних объектов. Если флажок снят, то система обрабатывает саму группу, а не ее дочерние элементы.</p></body></html> \ No newline at end of file diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Module.bsl b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Module.bsl index f74260370..ff33fc76c 100644 --- a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Module.bsl +++ b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Настройка/Module.bsl @@ -3,17 +3,16 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; - ИзменятьВТранзакции = Параметры.ИзменятьВТранзакции; - ОбрабатыватьРекурсивно = Параметры.ОбрабатыватьРекурсивно; - НастройкаПорции = Параметры.НастройкаПорции; - ПроцентОбъектовВПорции = Параметры.ПроцентОбъектовВПорции; - ЧислоОбъектовВПорции = Параметры.ЧислоОбъектовВПорции; - ПрерыватьПриОшибке = Параметры.ПрерыватьПриОшибке; + Параметры.Свойство("ИзменятьВТранзакции", ИзменятьВТранзакции); + Параметры.Свойство("ОбрабатыватьРекурсивно", ОбрабатыватьРекурсивно); + Параметры.Свойство("НастройкаПорции", НастройкаПорции); + Параметры.Свойство("ПроцентОбъектовВПорции", ПроцентОбъектовВПорции); + Параметры.Свойство("ЧислоОбъектовВПорции", ЧислоОбъектовВПорции); + Параметры.Свойство("ПрерыватьПриОшибке", ПрерыватьПриОшибке); Если НЕ Параметры.УчитыватьИерархию Тогда Элементы.ОбрабатыватьГруппыРекурсивно.Доступность = Ложь; @@ -51,15 +50,15 @@ &НаКлиенте Процедура ОК(Команда) - Настройки = Новый Структура; - Настройки.Вставить("ИзменятьВТранзакции", ИзменятьВТранзакции); - Настройки.Вставить("ОбрабатыватьРекурсивно", ОбрабатыватьРекурсивно); - Настройки.Вставить("НастройкаПорции", НастройкаПорции); - Настройки.Вставить("ПроцентОбъектовВПорции", ПроцентОбъектовВПорции); - Настройки.Вставить("ЧислоОбъектовВПорции", ЧислоОбъектовВПорции); - Настройки.Вставить("ПрерыватьПриОшибке", ИзменятьВТранзакции Или ПрерыватьПриОшибке); + РезультатВыбора = Новый Структура; + РезультатВыбора.Вставить("ИзменятьВТранзакции", ИзменятьВТранзакции); + РезультатВыбора.Вставить("ОбрабатыватьРекурсивно", ОбрабатыватьРекурсивно); + РезультатВыбора.Вставить("НастройкаПорции", НастройкаПорции); + РезультатВыбора.Вставить("ПроцентОбъектовВПорции", ПроцентОбъектовВПорции); + РезультатВыбора.Вставить("ЧислоОбъектовВПорции", ЧислоОбъектовВПорции); + РезультатВыбора.Вставить("ПрерыватьПриОшибке", ИзменятьВТранзакции Или ПрерыватьПриОшибке); - Закрыть(Настройки); + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Форма/Form.form b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Форма/Form.form index 79f2c6348..bd56bad6f 100644 --- a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Форма/Form.form @@ -303,12 +303,6 @@ <chooseType>true</chooseType> <typeDomainEnabled>true</typeDomainEnabled> <textEdit>true</textEdit> - <choiceParameterLinks> - <name>Отбор._Владелец</name> - <datapath xsi:type="form:DataPath"> - <segments>Items.ТаблицаОпераций.CurrentData.Свойство</segments> - </datapath> - </choiceParameterLinks> <textSize>Normal</textSize> </extInfo> </items> @@ -542,6 +536,10 @@ <items xsi:type="form:FormField"> <name>ОбъектыДляИзмененияИзменять</name> <id>53</id> + <title> + <key>ru</key> + <value> </value> + true true @@ -1399,6 +1397,10 @@ Right + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Форма/Module.bsl index 02fb67581..7d7077ee5 100644 --- a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Forms/Форма/Module.bsl @@ -19,7 +19,7 @@ // с блокируемыми реквизитами (ФормаРаботыСБлокируемымиРеквизитами). // // ПолноеИмяФормыРаботыСБлокируемымиРеквизитами - строка - полное имя формы для использования -// в функции ОткрытьФормуМодально, Например, +// в функции ОткрытьФорму, Например, // "Справочник.Номенклатура.Форма.ФормаРаботыСБлокируемымиРеквизитами" // ------------------------------------------------------------------------------ //////////////////////////////////////////////////////////////////////////////// @@ -34,6 +34,11 @@ Возврат; КонецЕсли; + НекорректныйВызовОбработки = ТипЗнч(Параметры.МассивОбъектов) <> Тип("Массив"); + Если НекорректныйВызовОбработки Тогда + Возврат; + КонецЕсли; + ТипПереданногоОбъекта = ТипЗнч(Параметры.МассивОбъектов[0]); КоличествоОбъектов = Параметры.МассивОбъектов.Количество(); ШаблонЗаголовка = НСтр("ru = 'Изменение выделенных элементов ""%1"" (%2)'"); @@ -46,13 +51,6 @@ // При отсутствии права сохранения настроек необходимо спрятать весь функционал работы с настройками Элементы.ИсторияОпераций.Видимость = ПравоДоступа("СохранениеДанныхПользователя", Метаданные); - НекорректныйВызовОбработки = Ложь; - - Если ТипЗнч(Параметры.МассивОбъектов) <> Тип("Массив") Тогда - НекорректныйВызовОбработки = Истина; - Возврат; - КонецЕсли; - // Оптимизация, для того, что бы не переформировывать таблицу // изменяемых объектов при простом перелистывании ИзменитьТаблицуОбъектов = Ложь; @@ -109,6 +107,33 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.ГрупповоеИзменениеОбъектов.Форма.Настройка") Тогда + + ПереформироватьСоставОперацийИДеревоОбъектов = Ложь; + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + Если УчитыватьИерархию И ОбрабатыватьРекурсивно <> ВыбранноеЗначение.ОбрабатыватьРекурсивно Тогда + ОбрабатыватьРекурсивно = ВыбранноеЗначение.ОбрабатыватьРекурсивно; + ПереформироватьСоставОперацийИДеревоОбъектов = Истина; + КонецЕсли; + Объект.ИзменятьВТранзакции = ВыбранноеЗначение.ИзменятьВТранзакции; + Объект.ПрерыватьПриОшибке = ВыбранноеЗначение.ПрерыватьПриОшибке; + ТОНастройкаПорции = ВыбранноеЗначение.НастройкаПорции; + ТОПроцентОбъектовВПорции = ВыбранноеЗначение.ПроцентОбъектовВПорции; + ТОЧислоОбъектовВПорции = ВыбранноеЗначение.ЧислоОбъектовВПорции; + КонецЕсли; + + Если ПереформироватьСоставОперацийИДеревоОбъектов Тогда + ЗаполнитьДеревоОбъектовИОпераций(); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПриЗакрытии() @@ -261,35 +286,17 @@ &НаКлиенте Процедура НастроитьПараметрыИзменения(Команда) - Настройки = Новый Структура; + ПараметрыФормы = Новый Структура; - Настройки.Вставить("ИзменятьВТранзакции", Объект.ИзменятьВТранзакции); - Настройки.Вставить("ОбрабатыватьРекурсивно", ОбрабатыватьРекурсивно); - Настройки.Вставить("ПрерыватьПриОшибке", Объект.ПрерыватьПриОшибке); - Настройки.Вставить("НастройкаПорции", ТОНастройкаПорции); - Настройки.Вставить("ПроцентОбъектовВПорции", ТОПроцентОбъектовВПорции); - Настройки.Вставить("ЧислоОбъектовВПорции", ТОЧислоОбъектовВПорции); - Настройки.Вставить("УчитыватьИерархию", УчитыватьИерархию); + ПараметрыФормы.Вставить("ИзменятьВТранзакции", Объект.ИзменятьВТранзакции); + ПараметрыФормы.Вставить("ОбрабатыватьРекурсивно", ОбрабатыватьРекурсивно); + ПараметрыФормы.Вставить("ПрерыватьПриОшибке", Объект.ПрерыватьПриОшибке); + ПараметрыФормы.Вставить("НастройкаПорции", ТОНастройкаПорции); + ПараметрыФормы.Вставить("ПроцентОбъектовВПорции", ТОПроцентОбъектовВПорции); + ПараметрыФормы.Вставить("ЧислоОбъектовВПорции", ТОЧислоОбъектовВПорции); + ПараметрыФормы.Вставить("УчитыватьИерархию", УчитыватьИерархию); - Результат = ОткрытьФормуМодально("Обработка.ГрупповоеИзменениеОбъектов.Форма.Настройка", Настройки); - - ПереформироватьСоставОперацийИДеревоОбъектов = Ложь; - - Если ТипЗнч(Результат) = Тип("Структура") Тогда - Если УчитыватьИерархию И ОбрабатыватьРекурсивно <> Результат.ОбрабатыватьРекурсивно Тогда - ОбрабатыватьРекурсивно = Результат.ОбрабатыватьРекурсивно; - ПереформироватьСоставОперацийИДеревоОбъектов = Истина; - КонецЕсли; - Объект.ИзменятьВТранзакции = Результат.ИзменятьВТранзакции; - Объект.ПрерыватьПриОшибке = Результат.ПрерыватьПриОшибке; - ТОНастройкаПорции = Результат.НастройкаПорции; - ТОПроцентОбъектовВПорции = Результат.ПроцентОбъектовВПорции; - ТОЧислоОбъектовВПорции = Результат.ЧислоОбъектовВПорции; - КонецЕсли; - - Если ПереформироватьСоставОперацийИДеревоОбъектов Тогда - ЗаполнитьДеревоОбъектовИОпераций(); - КонецЕсли; + ОткрытьФорму("Обработка.ГрупповоеИзменениеОбъектов.Форма.Настройка", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -303,9 +310,9 @@ &НаКлиенте Процедура ПерейтиВЖурналРегистрации(Команда) - ПараметрыЖР = Новый Структура("Пользователь", ТекущийПользователь); + ПараметрыФормы = Новый Структура("Пользователь", ТекущийПользователь); - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма", ПараметрыЖР, ЭтаФорма); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -345,8 +352,7 @@ // Представление - представление настройки пользователю Настройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ГрупповоеИзменениеОбъектов", - "ИсторияИзменений/"+ПолноеИмя - ); + "ИсторияИзменений/"+ПолноеИмя); Если Настройки = Неопределено Тогда Настройки = Новый Массив; @@ -368,8 +374,7 @@ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( "ГрупповоеИзменениеОбъектов", "ИсторияИзменений/"+ПолноеИмя, - Настройки - ); + Настройки); ЗагрузитьИсториюОпераций(); @@ -380,8 +385,7 @@ ИсторияОпераций = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ГрупповоеИзменениеОбъектов", - "ИсторияИзменений/"+ПолноеИмя - ); + "ИсторияИзменений/"+ПолноеИмя); Если ИсторияОпераций = Неопределено Тогда Возврат; @@ -527,6 +531,10 @@ КонецЕсли; + Если ЗначениеЗаполнено(Элемент.ТекущиеДанные.Свойство) Тогда + ПараметрыВыбораМассив.Добавить(Новый ПараметрВыбора("Отбор.Владелец", Элемент.ТекущиеДанные.Свойство)); + КонецЕсли; + Поле.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораМассив); ВыборГруппИЭлементов = Элемент.ТекущиеДанные.ВыборГруппИЭлементов; @@ -576,8 +584,7 @@ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( "Обработка.ГрупповоеИзменениеОбъектов", ПолноеИмя, - СтруктураНастроек - ); + СтруктураНастроек); КонецПроцедуры @@ -586,8 +593,7 @@ СтруктураНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "Обработка.ГрупповоеИзменениеОбъектов", - ПолноеИмя - ); + ПолноеИмя); Если СтруктураНастроек <> Неопределено Тогда Объект.ИзменятьВТранзакции = СтруктураНастроек.ИзменятьВТранзакции; @@ -690,10 +696,12 @@ Если ЕстьФормаРазблокированияРеквизитов Тогда - РазрешенныеРеквизиты = ОткрытьФормуМодально(ПолноеИмяФормыРаботыСБлокируемымиРеквизитами); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + РазрешенныеРеквизиты = ОткрытьФормуМодально(ПолноеИмяФормыРаботыСБлокируемымиРеквизитами, ПараметрыФормы, ЭтаФорма); Если ТипЗнч(РазрешенныеРеквизиты) = Тип("Массив") - И РазрешенныеРеквизиты.Количество() > 0 Тогда + И РазрешенныеРеквизиты.Количество() > 0 Тогда Для Каждого ОписаниеОперацииСтрока Из ЗаблокированныеРеквизитыСтроки Цикл Если ОписаниеОперацииСтрока.ЗаблокированныйРеквизит @@ -709,6 +717,8 @@ КонецЕсли; КонецЕсли; + + Иначе МассивСсылок = Новый Массив; @@ -930,7 +940,7 @@ Возврат; // досрочный выход из цикла и процедуры КонецЕсли; - ТекстВопроса = НСтр("ru = 'При изменении элеметнов (группы элементов) возникли ошибки. + ТекстВопроса = НСтр("ru = 'При изменении элементов (группы элементов) возникли ошибки. |Прервать изменение элементов и перейти к просмотру ошибок? |'"); Кнопки = Новый СписокЗначений; @@ -1036,13 +1046,13 @@ КонецЕсли; - КоллекцияОпраций = Объект.Операции.НайтиСтроки(Новый Структура("Изменять", Истина)); + КоллекцияОпераций = Объект.Операции.НайтиСтроки(Новый Структура("Изменять", Истина)); ОписаниеИзменения = Новый Массив; ШаблонПредставления = "[Поле]=<Значение>"; ПредставлениеИзменения = ""; - Для Каждого ОписаниеОперации Из КоллекцияОпраций Цикл + Для Каждого ОписаниеОперации Из КоллекцияОпераций Цикл СтруктураИзменения = Новый Структура; СтруктураИзменения.Вставить("ВидОперации", ОписаниеОперации.ВидОперации); @@ -1673,3 +1683,4 @@ Процедура ОтменитьВыполнениеЗадания(ИдентификаторЗадания); ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания); КонецПроцедуры + diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Help/ru.html b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Help/ru.html index 8b12eeaf6..aaa548d0b 100644 --- a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Help/ru.html +++ b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/Help/ru.html @@ -1,4 +1,4 @@ - +

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

            Для очистки значения реквизита, нужно проставить напротив него флажок и, оставив колонку Новое значение пустой, нажать на кнопку Изменить.

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

            diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/ManagerModule.bsl b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/ManagerModule.bsl index 0141cc412..98046280e 100644 --- a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/ManagerModule.bsl +++ b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/ManagerModule.bsl @@ -263,7 +263,7 @@ Возврат Ложь; КонецЕсли; - СтрокаИзменяемогоОбъекта = ОбъектыДляИзменения.Найти(Ссылка, "Ссылка"); + СтрокаИзменяемогоОбъекта = ОбъектыДляИзменения.Найти(Ссылка, "СсылкаНаОбъект"); Если СтрокаИзменяемогоОбъекта = Неопределено Тогда Если НЕ УправлениеСвойствамиМодуль.ПроверитьСвойствоУОбъекта(Ссылка, Свойство) Тогда diff --git a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo index 08187b7b8..4797e48e1 100644 --- a/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo +++ b/SSL/src/DataProcessors/ГрупповоеИзменениеОбъектов/ГрупповоеИзменениеОбъектов.mdo @@ -7,7 +7,7 @@ ГрупповоеИзменениеОбъектов ru - Изменение выделенных элементов + Групповое изменение объектов true DataProcessor.ГрупповоеИзменениеОбъектов.Form.Форма diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Form.form b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Form.form index cead9531b..277903bec 100644 --- a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Form.form +++ b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Form.form @@ -1982,7 +1982,7 @@ Retry SaveValues Yes - DontBlock + LockOwner true true Vertical diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Module.bsl b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Module.bsl index 5d52cae82..a336f31db 100644 --- a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Module.bsl +++ b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ЖурналРегистрации/Module.bsl @@ -108,8 +108,7 @@ Элементы.Журнал.ТекущиеДанные, Поле, ИнтервалДат, - ОтборЖурналаРегистрации - ); + ОтборЖурналаРегистрации); КонецПроцедуры @@ -202,8 +201,7 @@ ОткрытьФорму( "Обработка.ЖурналРегистрации.Форма.ОтборЖурналаРегистрации", Новый Структура("Отбор, СобытияПоУмолчанию", ОтборФормы, ОтборЖурналаРегистрацииПоУмолчанию.Событие), - ЭтаФорма - ); + ЭтаФорма); КонецПроцедуры @@ -311,12 +309,14 @@ КонецФункции &НаСервере -Процедура ЗагрузитьПодготовленныеДанные() +Процедура ЗагрузитьПодготовленныеДанные() РезультатВыполнения = ПолучитьИзВременногоХранилища(АдресХранилища); СобытияЖурнала = РезультатВыполнения.СобытияЖурнала; - ЗначениеВДанныеФормы(СобытияЖурнала, Журнал); - ИдентификаторЗадания = Неопределено; + ЖурналРегистрации.ПоместитьДанныеВоВременноеХранилище(СобытияЖурнала, УникальныйИдентификатор); + + ЗначениеВДанныеФормы(СобытияЖурнала, Журнал); + ИдентификаторЗадания = Неопределено; КонецПроцедуры &НаКлиенте diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ОтборЖурналаРегистрации/Module.bsl b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ОтборЖурналаРегистрации/Module.bsl index d4b299b87..e4ba86e6b 100644 --- a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ОтборЖурналаРегистрации/Module.bsl +++ b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ОтборЖурналаРегистрации/Module.bsl @@ -145,9 +145,7 @@ ОповеститьОВыборе( Новый Структура("Событие, Отбор", "УстановленОтборЖурналаРегистрации", - ПолучитьОтборЖурналаРегистрации() - ) - ); + ПолучитьОтборЖурналаРегистрации())); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/РедакторСоставаСвойства/Module.bsl b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/РедакторСоставаСвойства/Module.bsl index ee562c7e6..f21189a3c 100644 --- a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/РедакторСоставаСвойства/Module.bsl +++ b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/РедакторСоставаСвойства/Module.bsl @@ -317,7 +317,7 @@ Если ЕстьИстина Тогда Если ЕстьЛожь Тогда - // есть и помеченные и непомеченные, у себя при необходимости ставим непомечено и проверяем родителя + // есть и помеченные и непомеченные, у себя при необходимости ставим не помечено и проверяем родителя Если Ветвь.Пометка Тогда Ветвь.Пометка = Ложь; ПроверитьСостояниеПометкиВетви(Ветвь.ПолучитьРодителя()); @@ -330,7 +330,7 @@ КонецЕсли; КонецЕсли; Иначе - // все подчиненные непомечены + // все подчиненные не помечены Если Ветвь.Пометка Тогда Ветвь.Пометка = Ложь; ПроверитьСостояниеПометкиВетви(Ветвь.ПолучитьРодителя()); diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ФормаСобытия/Help/ru.html b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ФормаСобытия/Help/ru.html index 248e6a5b4..76f49a76c 100644 --- a/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ФормаСобытия/Help/ru.html +++ b/SSL/src/DataProcessors/ЖурналРегистрации/Forms/ФормаСобытия/Help/ru.html @@ -1,3 +1,3 @@ - +

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

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

            \ No newline at end of file diff --git a/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html b/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html index 8310b13e7..3a3d78c9a 100644 --- a/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html +++ b/SSL/src/DataProcessors/ЖурналРегистрации/Help/ru.html @@ -1,4 +1,4 @@ - +

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

            Список событий не является динамическим списком. Для того, чтобы увидеть события, которые попали в журнал регистрации после открытия формы, необходимо выполнить команду Обновить текущий список. Журнал отображает фиксированное количество записей, которое указывается в поле Количество отбираемых событий. Кроме предопределенных значений (200, 500, 1000 и 10000 событий) можно ввести произвольное количество событий, которое будет запомнено.

            Для того, чтобы отобрать события по некоторому критерию, служит команда Установить отбор, которая позволяет задать отбор записей журнала регистрации. Будут отображены записи, удовлетворяющие заданному отбору в количестве, не большем, чем значение поля Количество отбираемых событий. Для того, чтобы отключить отбор, служит команда Отключить отбор.

            diff --git a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Module.bsl index 0c050aaa9..6cebca866 100644 --- a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Forms/Форма/Module.bsl @@ -74,8 +74,7 @@ ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Не задана дата начала периода загрузки.'"), , - "Объект.НачалоПериодаЗагрузки" - ); + "Объект.НачалоПериодаЗагрузки"); Возврат; КонецЕсли; @@ -83,8 +82,7 @@ ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Не задана дата окончания периода загрузки.'"), , - "Объект.ОкончаниеПериодаЗагрузки" - ); + "Объект.ОкончаниеПериодаЗагрузки"); Возврат; КонецЕсли; @@ -140,8 +138,7 @@ Результат = РаботаСКурсамиВалютКлиентСервер.ЗагрузитьКурсыВалютПоПараметрам( СписокВалют, Объект.НачалоПериодаЗагрузки, - Объект.ОкончаниеПериодаЗагрузки - ); + Объект.ОкончаниеПериодаЗагрузки); ЕстьУспешноЗагруженныеКурсы = Ложь; БезОшибок = Истина; diff --git a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Help/ru.html b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Help/ru.html index e62b1a8c2..d0cbe379b 100644 --- a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Help/ru.html +++ b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/Help/ru.html @@ -1,4 +1,4 @@ - +

            Предназначен для загрузки курсов валют с сайта РБК.

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

            Реквизиты:

            diff --git a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/ObjectModule.bsl b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/ObjectModule.bsl index 98161bca5..34c3db2a6 100644 --- a/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ЗагрузкаКурсовВалют/ObjectModule.bsl @@ -29,9 +29,8 @@ СписокВалют, НачалоПериодаЗагрузки, ОкончаниеПериодаЗагрузки, - ПриЗагрузкеВозниклиОшибки - ); + ПриЗагрузкеВозниклиОшибки); КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/Forms/Форма/Form.form b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/Forms/Форма/Form.form new file mode 100644 index 000000000..643681dc9 --- /dev/null +++ b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/Forms/Форма/Form.form @@ -0,0 +1,43 @@ + + + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + String + + + + true + + + true + +
            true
            +
            + + + + +
            diff --git a/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/Forms/Форма/Module.bsl new file mode 100644 index 000000000..60eabfdab --- /dev/null +++ b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/Forms/Форма/Module.bsl @@ -0,0 +1,11 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ЗагрузкаПравилРегистрацииОбъектов.mdo b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ЗагрузкаПравилРегистрацииОбъектов.mdo index ab60c59b1..8e27ff84e 100644 --- a/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ЗагрузкаПравилРегистрацииОбъектов.mdo +++ b/SSL/src/DataProcessors/ЗагрузкаПравилРегистрацииОбъектов/ЗагрузкаПравилРегистрацииОбъектов.mdo @@ -9,6 +9,7 @@ ru Загрузка правил регистрации объектов + DataProcessor.ЗагрузкаПравилРегистрацииОбъектов.Form.Форма ИмяПланаОбменаДляЗагрузки @@ -24,4 +25,13 @@ + + Форма + + ru + Форма + + PersonalComputer + MobileDevice + diff --git a/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Forms/Форма/Module.bsl index ce1d576c1..68cb7f2cd 100644 --- a/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ЗащитаПерсональныхДанных/Forms/Форма/Module.bsl @@ -239,7 +239,9 @@ РезультатВыполнения = ПолучитьИзВременногоХранилища(АдресХранилища); СобытияЖурнала = РезультатВыполнения.СобытияЖурнала; - ЗначениеВДанныеФормы(СобытияЖурнала, Журнал); + ЖурналРегистрации.ПоместитьДанныеВоВременноеХранилище(СобытияЖурнала, УникальныйИдентификатор); + + ЗначениеВДанныеФормы(СобытияЖурнала, Журнал); ИдентификаторЗадания = Неопределено; КонецПроцедуры diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/ВыборВидаОбъектаСоставаУзла/Form.form b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/ВыборВидаОбъектаСоставаУзла/Form.form index dd400164b..3efa0c734 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/ВыборВидаОбъектаСоставаУзла/Form.form +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/ВыборВидаОбъектаСоставаУзла/Form.form @@ -162,6 +162,8 @@ AutoUse true true + false + false false true Auto diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/ВыборВидаОбъектаСоставаУзла/Module.bsl b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/ВыборВидаОбъектаСоставаУзла/Module.bsl index 5b3258de1..a04419943 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/ВыборВидаОбъектаСоставаУзла/Module.bsl +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/ВыборВидаОбъектаСоставаУзла/Module.bsl @@ -103,12 +103,12 @@ ЭтаОбработка = ЭтотОбъект(); ГруппаДокументы = СтрокиПриемника.Добавить(); - ГруппаДокументы.ПредставлениеСписка = НСтр("ru='Все документы'"); + ГруппаДокументы.ПредставлениеСписка = ЭтаОбработка.ЗаголовокГруппыОтбораВсехДокументов(); ГруппаДокументы.ПолноеИмяМетаданных = ЭтаОбработка.ИдентификаторВсехДокументов(); ГруппаДокументы.ИндексКартинки = 7; ГруппаСправочники = СтрокиПриемника.Добавить(); - ГруппаСправочники.ПредставлениеСписка = НСтр("ru='Все справочники'"); + ГруппаСправочники.ПредставлениеСписка = ЭтаОбработка.ЗаголовокГруппыОтбораВсехСправочников(); ГруппаСправочники.ПолноеИмяМетаданных = ЭтаОбработка.ИдентификаторВсехСправочников(); ГруппаСправочники.ИндексКартинки = 3; diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеПериодаИОтбора/Form.form b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеПериодаИОтбора/Form.form index b9d3caed6..88f5254e3 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеПериодаИОтбора/Form.form +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеПериодаИОтбора/Form.form @@ -12,7 +12,7 @@ 12 <key>ru</key> - <value>За период</value> + <value>За период:</value> true true @@ -23,6 +23,10 @@ ВыгружатьЗаПериод Right + + ru + Использовать общий отбор по периоду для всех документов + OnChange ВыгружатьЗаПериодПриИзменении @@ -65,6 +69,10 @@ ПериодДанных None + + ru + Общий отбор по периоду, применяется для всех документов + ПериодДанныхРасширеннаяПодсказка 23 @@ -406,6 +414,10 @@
            Right + + OnOpen + ПриОткрытии + OnCreateAtServer ПриСозданииНаСервере diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеПериодаИОтбора/Module.bsl b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеПериодаИОтбора/Module.bsl index b8d1594f2..86f9786a0 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеПериодаИОтбора/Module.bsl +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеПериодаИОтбора/Module.bsl @@ -20,9 +20,14 @@ Иначе ВыгружатьЗаПериод = Ложь; Элементы.ВыгружатьЗаПериод.Видимость = Ложь; + Элементы.ПериодДанных.Видимость = Ложь; КонецЕсли; - УстановитьВидимостьПериодаОтбора(); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + УстановитьДоступностьПериодаОтбора(); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -31,7 +36,7 @@ &НаКлиенте Процедура ВыгружатьЗаПериодПриИзменении(Элемент) - УстановитьВидимостьПериодаОтбора(); + УстановитьДоступностьПериодаОтбора(); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -44,8 +49,7 @@ ОповеститьОВыборе(Новый Структура( "ДействиеВыбора, КомпоновщикНастроек, ПериодДанных", Параметры.ДействиеВыбора, - КомпоновщикНастроек, ?(ВыгружатьЗаПериод, ПериодДанных, Новый СтандартныйПериод) - )); + КомпоновщикНастроек, ?(ВыгружатьЗаПериод, ПериодДанных, Новый СтандартныйПериод))); КонецПроцедуры @@ -53,20 +57,9 @@ // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ // -&НаСервере -Процедура УстановитьВидимостьПериодаОтбора() - Элементы.ПериодДанных.Видимость = ВыгружатьЗаПериод; - - Текст = СокрЛП(Элементы.ВыгружатьЗаПериод.Заголовок); - Если Элементы.ПериодДанных.Видимость Тогда - Если Прав(Текст, 1)<>":" Тогда - Элементы.ВыгружатьЗаПериод.Заголовок = Текст + ":"; - КонецЕсли; - Иначе - Если Прав(Текст, 1)=":" Тогда - Элементы.ВыгружатьЗаПериод.Заголовок = Лев(Текст, СтрДлина(Текст)-1); - КонецЕсли; - КонецЕсли; - +&НаКлиенте +Процедура УстановитьДоступностьПериодаОтбора() + Элементы.ПериодДанных.Доступность = ВыгружатьЗаПериод; КонецПроцедуры + diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеСоставаНастроек/Form.form b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеСоставаНастроек/Form.form index 8f70d61ca..32fcd2cea 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеСоставаНастроек/Form.form +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеСоставаНастроек/Form.form @@ -218,6 +218,10 @@ true Top + + ru + Имя, под которым будут сохранены текущие настройки + ПредставлениеНастройкиРасширеннаяПодсказка 37 @@ -234,6 +238,7 @@ true InputField + true Enter true Left @@ -242,6 +247,7 @@ true true true + true true true true diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеСоставаНастроек/Module.bsl b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеСоставаНастроек/Module.bsl index ae2aba885..6bd69c496 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеСоставаНастроек/Module.bsl +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/РедактированиеСоставаНастроек/Module.bsl @@ -80,8 +80,7 @@ КонецЕсли; ОбщегоНазначенияКлиентСервер.СообщитьПользователю( - НСтр("ru='Не заполнено имя для текущей настройки.'"), , "ПредставлениеТекущейНастройки" - ); + НСтр("ru='Не заполнено имя для текущей настройки.'"), , "ПредставлениеТекущейНастройки"); КонецПроцедуры &НаКлиенте diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/СоставВыгрузки/Module.bsl b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/СоставВыгрузки/Module.bsl index c52b0b81d..3fe14fe0b 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/СоставВыгрузки/Module.bsl +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/СоставВыгрузки/Module.bsl @@ -51,8 +51,7 @@ Если ПараметрыРасшифровки<>Неопределено Тогда Если ПараметрыРасшифровки.ИмяМетаданныхОбъектаРегистрации=ПараметрыРасшифровки.ПолноеИмяМетаданных Тогда ОткрытьФорму(ПараметрыРасшифровки.ПолноеИмяМетаданных + ".ФормаОбъекта", - Новый Структура("Ключ", ПараметрыРасшифровки.ОбъектРегистрации) - ); + Новый Структура("Ключ", ПараметрыРасшифровки.ОбъектРегистрации)); ИначеЕсли Не ПустаяСтрока(ПараметрыРасшифровки.ПредставлениеСписка) Тогда ПараметрыРасшифровки.Вставить("АдресОбъекта", АдресЭтогоОбъекта()); ОткрытьФорму(БазовоеИмяДляФормы + "Форма.СоставВыгрузки", ПараметрыРасшифровки); @@ -193,8 +192,7 @@ ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных( АдресДанныхРасшифровки, - Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыКомпоновки) - ); + Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемыКомпоновки)); ПолеИмяМетаданных = Новый ПолеКомпоновкиДанных("ПолноеИмяМетаданных"); Настройки = ОбработкаРасшифровки.Расшифровать(Расшифровка, ПолеИмяМетаданных); diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/Форма/Form.form b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/Форма/Form.form index 79f3b5859..fcc2803eb 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/Форма/Form.form @@ -276,6 +276,9 @@ true true + + Web.Blue + @@ -539,6 +542,7 @@ true + true ОбновитьКоличествоРасширеннаяПодсказка 88 diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/Форма/Module.bsl index 9f0875d2d..074844737 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/Forms/Форма/Module.bsl @@ -9,6 +9,10 @@ Возврат; КонецЕсли; + Если НЕ Параметры.Свойство("ОткрытаПоСценарию") Тогда + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + КонецЕсли; + ЭтаОбработка = ЭтотОбъект(); Если Не ПустаяСтрока(Параметры.АдресОбъекта) Тогда ЭтотОбъект( ЭтаОбработка.ИнициализироватьЭтотОбъект(Параметры.АдресОбъекта) ); @@ -58,8 +62,7 @@ КомпоновщикНастроекПоИмениТаблицы(ТекущиеДанные.ПолноеИмяМетаданных, ТекущиеДанные.Представление, ТекущиеДанные.Отбор), ТекущиеДанные.Период ), - Элементы.ДополнительнаяРегистрация - ); + Элементы.ДополнительнаяРегистрация); КонецЕсли; КонецПроцедуры @@ -73,8 +76,7 @@ ОткрытьФорму(БазовоеИмяДляФормы + "Форма.ВыборВидаОбъектаСоставаУзла", Новый Структура("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы), - Элементы.ДополнительнаяРегистрация - ); + Элементы.ДополнительнаяРегистрация); КонецПроцедуры &НаКлиенте @@ -146,26 +148,19 @@ &НаКлиенте Процедура ПодтвердитьВыбор(Команда) - - ОповеститьОВыборе(Новый Структура( - "ДействиеВыбора, АдресОбъекта", - Параметры.ДействиеВыбора, ПоместитьВоВременноеХранилище(Объект, УникальныйИдентификатор) - )); - + ОповеститьОВыборе( РезультатВыбораСервер() ); КонецПроцедуры &НаКлиенте Процедура ПоказатьТекстОбщихПараметров(Команда) ОткрытьФорму(БазовоеИмяДляФормы + "Форма.ОбщиеПараметрыСинхронизации", - Новый Структура("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы) - ); + Новый Структура("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы)); КонецПроцедуры &НаКлиенте Процедура СоставВыгрузки(Команда) ОткрытьФорму(БазовоеИмяДляФормы + "Форма.СоставВыгрузки", - Новый Структура("АдресОбъекта", АдресОбъектаДополнительнойВыгрузки() ) - ); + Новый Структура("АдресОбъекта", АдресОбъектаДополнительнойВыгрузки() )); КонецПроцедуры &НаКлиенте @@ -187,12 +182,12 @@ Текст = НСтр("ru='Сохранить текущую настройку...'"); СписокВариантов.Добавить(1, Текст, , БиблиотекаКартинок.СохранитьНастройкиОтчета); - ВыбраныйВариант = ВыбратьИзМеню(СписокВариантов, Элементы.НастройкиОтборов); - Если ВыбраныйВариант=Неопределено Тогда + ВыбранныйВариант = ВыбратьИзМеню(СписокВариантов, Элементы.НастройкиОтборов); + Если ВыбранныйВариант=Неопределено Тогда Возврат; КонецЕсли; - ПредставлениеНастройки = ВыбраныйВариант.Значение; + ПредставлениеНастройки = ВыбранныйВариант.Значение; Если ТипЗнч(ПредставлениеНастройки)=Тип("Строка") Тогда ТекстЗаголовка = НСтр("ru='Подтверждение'"); ТекстВопроса = НСтр("ru='Восстановить настройки ""%1""?'"); @@ -209,8 +204,7 @@ Новый Структура("ЗакрыватьПриВыборе, ДействиеВыбора, Объект, ПредставлениеТекущейНастройки", Истина, 3, Объект, ПредставлениеТекущейНастройки - ), Элементы.ДополнительнаяРегистрация - ); + ), Элементы.ДополнительнаяРегистрация); КонецЕсли; КонецПроцедуры @@ -218,6 +212,18 @@ // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ // +&НаСервере +Функция РезультатВыбораСервер() + ОбъектРезультат = Новый Структура("УзелИнформационнойБазы, ВариантВыгрузки, КомпоновщикОтбораВсехДокументов, ПериодОтбораВсехДокументов"); + ЗаполнитьЗначенияСвойств(ОбъектРезультат, Объект); + + ОбъектРезультат.Вставить("ДополнительнаяРегистрация", РеквизитФормыВЗначение("Объект.ДополнительнаяРегистрация")); + + Возврат Новый Структура("ДействиеВыбора, АдресОбъекта", + Параметры.ДействиеВыбора, ПоместитьВоВременноеХранилище(ОбъектРезультат, УникальныйИдентификатор) + ); +КонецФункции + &НаКлиенте Процедура Подключаемый_ОжиданиеРасчетаКоличества() Если ЗагрузитьЗначенияКоличеств() Тогда @@ -276,8 +282,7 @@ Функция ДобавитьВДополнительныйСоставВыгрузки(Элемент) СуществующиеСтроки = Объект.ДополнительнаяРегистрация.НайтиСтроки( - Новый Структура("ПолноеИмяМетаданных", Элемент.ПолноеИмяМетаданных) - ); + Новый Структура("ПолноеИмяМетаданных", Элемент.ПолноеИмяМетаданных)); Если СуществующиеСтроки.Количество()>0 Тогда Строка = СуществующиеСтроки[0]; Иначе @@ -445,4 +450,3 @@ Функция АдресОбъектаДополнительнойВыгрузки() Возврат ПоместитьВоВременноеХранилище(ЭтотОбъект(), УникальныйИдентификатор); КонецФункции - diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ObjectModule.bsl b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ObjectModule.bsl index 0dcf9ede1..2d4d555c7 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ObjectModule.bsl @@ -46,8 +46,7 @@ Возврат ОбменДаннымиСервер.ЗапуститьФоновоеЗадание( "ОбменДаннымиСервер.ИнтерактивноеИзменениеВыгрузки_ЗарегистрироватьДополнительныеИзменения", - ПараметрыЗадания, НСтр("ru='Регистрация дополнительных данных для отправки при синхронизации'") - ); + ПараметрыЗадания, НСтр("ru='Регистрация дополнительных данных для отправки при синхронизации'")); КонецФункции @@ -64,8 +63,7 @@ Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда АдресРезультата = ПоместитьВоВременноеХранилище( - СформироватьТабличныйДокументПользователя(ПолноеИмяМетаданных, Представление) - ); + СформироватьТабличныйДокументПользователя(ПолноеИмяМетаданных, Представление)); Возврат Неопределено; КонецЕсли; @@ -77,8 +75,7 @@ Возврат ОбменДаннымиСервер.ЗапуститьФоновоеЗадание( "ОбменДаннымиСервер.ИнтерактивноеИзменениеВыгрузки_СформироватьТабличныйДокументПользователя", - ПараметрыЗадания, НСтр("ru='Формирование отчета по составу данных для отправки при синхронизации'") - ); + ПараметрыЗадания, НСтр("ru='Формирование отчета по составу данных для отправки при синхронизации'")); КонецФункции // Запускает фоновое задание для формирования дерева значений с данными. @@ -103,8 +100,7 @@ Возврат ОбменДаннымиСервер.ЗапуститьФоновоеЗадание( "ОбменДаннымиСервер.ИнтерактивноеИзменениеВыгрузки_СформироватьДеревоЗначений", - ПараметрыЗадания, НСтр("ru='Расчет количества объектов для отправки при синхронизации'") - ); + ПараметрыЗадания, НСтр("ru='Расчет количества объектов для отправки при синхронизации'")); КонецФункции @@ -129,14 +125,12 @@ // Нужный вариант ДанныеКомпоновки.КомпоновщикНастроек.ЗагрузитьНастройки( - ДанныеКомпоновки.СхемаКомпоновки.ВариантыНастроек[ИмяВарианта].Настройки - ); + ДанныеКомпоновки.СхемаКомпоновки.ВариантыНастроек[ИмяВарианта].Настройки); // восстанавливаем отборы ДобавитьЗначенияОтбораКомпоновки( ДанныеКомпоновки.КомпоновщикНастроек.Настройки.Отбор.Элементы, - НастройкиОтборов.Отбор.Элементы - ); + НастройкиОтборов.Отбор.Элементы); Параметры = ДанныеКомпоновки.СхемаКомпоновки.Параметры; Параметры.Найти("ДатаФормирования").Значение = ТекущаяДатаСеанса(); @@ -168,8 +162,7 @@ Вывод.УстановитьДокумент(Новый ТабличныйДокумент); Возврат Новый Структура("ТабличныйДокумент, Расшифровка, СхемаКомпоновки", - Вывод.Вывести(Процессор), ДанныеРасшифровки, ДанныеКомпоновки.СхемаКомпоновки - ); + Вывод.Вывести(Процессор), ДанныеРасшифровки, ДанныеКомпоновки.СхемаКомпоновки); КонецФункции // Возвращает данные в виде двухуровневого дерева, первый уровень-вид метаданных, второй-объекты @@ -255,8 +248,7 @@ Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных; Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных( - ПоместитьВоВременноеХранилище(СхемаКомпоновки, АдресСохраненияСхемы) - )); + ПоместитьВоВременноеХранилище(СхемаКомпоновки, АдресСохраненияСхемы))); Если Отбор<>Неопределено Тогда ДобавитьЗначенияОтбораКомпоновки(Компоновщик.Настройки.Отбор.Элементы, Отбор.Элементы); @@ -272,6 +264,16 @@ Возврат Метаданные().ПолноеИмя() + "." КонецФункции +// Возвращает заголовок для формирования представления отбора по всем документам +Функция ЗаголовокГруппыОтбораВсехДокументов() Экспорт + Возврат НСтр("ru='Все документы'"); +КонецФункции + +// Возвращает заголовок для формирования представления отбора по всем справочникам +Функция ЗаголовокГруппыОтбораВсехСправочников() Экспорт + Возврат НСтр("ru='Все справочники'"); +КонецФункции + // Возвращает описание периода и отбора строкой // // Параметры: @@ -309,7 +311,7 @@ Функция ПредставлениеОтбораВсехДокументов(Знач ОписаниеПустогоОтбора=Неопределено) Экспорт Если ОписаниеПустогоОтбора=Неопределено Тогда - ОписаниеПустогоОтбора = НСтр("ru='Все документы'"); + ОписаниеПустогоОтбора = ЗаголовокГруппыОтбораВсехДокументов(); КонецЕсли; Возврат ПредставлениеОтбора("", КомпоновщикОтбораВсехДокументов, ОписаниеПустогоОтбора); @@ -377,7 +379,6 @@ ИначеЕсли СоответствиеПолей<>Неопределено Тогда ИсходноеПолеСтрокой = Элемент.ЛевоеЗначение; - ИсходноеПолеНРег = НРег(ИсходноеПолеСтрокой); Для Каждого КлючЗначение Из СоответствиеПолей Цикл КонтрольНовое = НРег(КлючЗначение.Ключ); ДлинаКонтроля = 1 + СтрДлина(КонтрольНовое); @@ -385,7 +386,7 @@ Если КонтрольИсходного=КонтрольНовое Тогда ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(КлючЗначение.Значение); Прервать; - ИначеЕсли КонтрольИсходного=КонтрольНовое+"." Тогда + ИначеЕсли КонтрольИсходного=КонтрольНовое + "." Тогда ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(КлючЗначение.Значение + Сред(ИсходноеПолеСтрокой, ДлинаКонтроля)); Прервать; КонецЕсли; @@ -447,8 +448,7 @@ УстановитьПривилегированныйРежим(Истина); СписокВариантов = ХранилищеОбщихНастроек.Загрузить( ПараметрыНастроек.КлючОбъекта, ПараметрыНастроек.КлючНастроек, - ПараметрыНастроек, ПараметрыНастроек.Пользователь - ); + ПараметрыНастроек, ПараметрыНастроек.Пользователь); СписокПредставлений = Новый СписокЗначений; Если СписокВариантов<>Неопределено Тогда @@ -494,8 +494,7 @@ ЭлементСписка.Значение.Вставить("_НастройкиКомпоновщикаОтбораВсехДокументов", // Без фиксированных настроек! - КомпоновщикОтбораВсехДокументов.Настройки - ); + КомпоновщикОтбораВсехДокументов.Настройки); ПараметрыНастроек = СтруктураПараметровНастроек(); @@ -503,8 +502,7 @@ ХранилищеОбщихНастроек.Сохранить( ПараметрыНастроек.КлючОбъекта, ПараметрыНастроек.КлючНастроек, СписокВариантов, - ПараметрыНастроек, ПараметрыНастроек.Пользователь - ); + ПараметрыНастроек, ПараметрыНастроек.Пользователь); КонецПроцедуры // Удаляет вариант настроек из списка @@ -754,7 +752,7 @@ // Без дополнительных изменений вообще ТаблицаДополнительныхИзменений = Новый ТаблицаЗначений; - КонецЕсли; + КонецЕсли; // Дополнительные изменения Для Каждого Строка Из ТаблицаДополнительныхИзменений Цикл @@ -770,9 +768,10 @@ КонецЕсли; Набор = ЭлементыНабораИзменения.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); - Набор.АвтоЗаполнениеДоступныхПолей = Истина; Набор.ИсточникДанных = ИсточникДанных; - Набор.Имя = "Дополнительно" + Формат(ЭлементыНабораИзменения.Количество()-1, "ЧН=; ЧГ="); + Набор.АвтоЗаполнениеДоступныхПолей = Истина; + Набор.Имя = "Дополнительно_" + СтрЗаменить(ИмяДобавляемойТаблицы, ".", "_"); + Набор.Запрос = " |ВЫБРАТЬ РАЗРЕШЕННЫЕ | Ссылка КАК ОбъектРегистрации, @@ -781,6 +780,13 @@ |ИЗ | " + ИмяДобавляемойТаблицы + " |"; + + // Добавляем дополнительные наборы для получения данных их табличных частей отбора + ПараметрыДобавления = Новый Структура; + ПараметрыДобавления.Вставить("ИмяДобавляемойТаблицы", ИмяДобавляемойТаблицы); + ПараметрыДобавления.Вставить("СхемаКомпоновки", СхемаКомпоновки); + ДобавитьДополнительныеНаборыКомпоновкиТабличныхЧастей(Строка.Отбор.Элементы, ПараметрыДобавления) + КонецЦикла; КонецЦикла; @@ -817,8 +823,7 @@ КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных( - ПоместитьВоВременноеХранилище(СхемаКомпоновки, АдресСохраненияСхемы) - )); + ПоместитьВоВременноеХранилище(СхемаКомпоновки, АдресСохраненияСхемы))); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию); Если ТаблицаДополнительныхИзменений.Количество()>0 Тогда @@ -870,8 +875,12 @@ КонецЕсли; // Добавляем элементы отбора с коррекцией полей "Ссылка" -> "ОбъектРегистрации" - ДобавитьЗначенияОтбораКомпоновки(ГруппаОтбора.Элементы, Строка.Отбор.Элементы, - Новый Структура("Ссылка", "ОбъектРегистрации") + ПараметрыДобавления = Новый Структура; + ПараметрыДобавления.Вставить("ИмяДобавляемойТаблицы", ИмяДобавляемойТаблицы); + + ДобавитьДополнительныеОтборыКомпоновкиТабличныхЧастей( + ГруппаОтбора.Элементы, Строка.Отбор.Элементы, ЭлементыНабораИзменения, + ПараметрыДобавления ); КонецЦикла; КонецЦикла; @@ -879,8 +888,171 @@ КонецЕсли; Возврат Новый Структура("ТаблицаМетаданныхСоставаУзла, СхемаКомпоновки, КомпоновщикНастроек", - ТаблицаМетаданныхСоставаУзла, СхемаКомпоновки, КомпоновщикНастроек - ); + ТаблицаМетаданныхСоставаУзла, СхемаКомпоновки, КомпоновщикНастроек); +КонецФункции + +Процедура ДобавитьДополнительныеНаборыКомпоновкиТабличныхЧастей(ЭлементыИсточника, ПараметрыДобавления) + + ИмяДобавляемойТаблицы = ПараметрыДобавления.ИмяДобавляемойТаблицы; + СхемаКомпоновки = ПараметрыДобавления.СхемаКомпоновки; + + ОбщийНабор = СхемаКомпоновки.НаборыДанных.РегистрацияИзменений; + ИсточникДанных = СхемаКомпоновки.ИсточникиДанных[0].Имя; + + МетаОбъекта = Метаданные.НайтиПоПолномуИмени(ИмяДобавляемойТаблицы); + + Для Каждого Элемент Из ЭлементыИсточника Цикл + // Ветка разбора аналогична ветке в ДобавитьДополнительныеНаборыКомпоновкиТабличныхЧастей + + Если ТипЗнч(Элемент)=Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда + ДобавитьДополнительныеНаборыКомпоновкиТабличныхЧастей(ЭлементыИсточника, ПараметрыДобавления) + КонецЕсли; + + // Это элемент, смотрим чтобы попало на нашу табличку + ИмяПоля = Элемент.ЛевоеЗначение; + Если Лев(ИмяПоля, 7)="Ссылка." Тогда + ИмяПоля = Сред(ИмяПоля, 8); + ИначеЕсли Лев(ИмяПоля, 18)="ОбъектРегистрации." Тогда + ИмяПоля = Сред(ИмяПоля, 19); + Иначе + Продолжить; + КонецЕсли; + + Позиция = Найти(ИмяПоля, "."); + ИмяТаблицы = Лев(ИмяПоля, Позиция-1); + МетаТабличнаяЧасть = МетаОбъекта.ТабличныеЧасти.Найти(ИмяТаблицы); + + Если Позиция=0 Тогда + // Отбор к шапке, получим через ссылку + Продолжить; + ИначеЕсли МетаТабличнаяЧасть=Неопределено Тогда + // Табличная часть есть, но не наша + Продолжить; + КонецЕсли; + + // Наша табличная часть + ПутьКДанным = Сред(ИмяПоля, Позиция + 1); + Если Лев(ПутьКДанным + ".", 7)="Ссылка." Тогда + // Переадресуем на головную таблицу + Продолжить; + Иначе + Псевдоним = СтрЗаменить(ИмяДобавляемойТаблицы, ".", "") + ИмяТаблицы; + ИмяНабора = "Дополнительно_" + Псевдоним; + Набор = ОбщийНабор.Элементы.Найти(ИмяНабора); + Если Набор=Неопределено Тогда + Набор = ОбщийНабор.Элементы.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); + Набор.АвтоЗаполнениеДоступныхПолей = Истина; + Набор.ИсточникДанных = ИсточникДанных; + Набор.Имя = ИмяНабора; + Набор.Запрос = " + |ВЫБРАТЬ РАЗРЕШЕННЫЕ + | Ссылка КАК ОбъектРегистрации, + | ТИП(" + ИмяДобавляемойТаблицы + ") КАК ОбъектРегистрацииТип, + | &ПричинаРегистрацииДополнительно КАК ПричинаРегистрации + | " + РеквизитыТабличнойЧастиДляЗапроса(МетаТабличнаяЧасть, Псевдоним) + " + |ИЗ + | " + ИмяДобавляемойТаблицы + "." + ИмяТаблицы + " + |"; + КонецЕсли; + + ПутьКДанным = Псевдоним + ПутьКДанным; + Поле = Набор.Поля.Найти(ПутьКДанным); + Если Поле=Неопределено Тогда + Поле = Набор.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных")); + Поле.ПутьКДанным = ПутьКДанным; + Поле.Поле = ПутьКДанным; + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьДополнительныеОтборыКомпоновкиТабличныхЧастей(ЭлементыПриемника, ЭлементыИсточника, ЭлементыНабора, ПараметрыДобавления) + + ИмяДобавляемойТаблицы = ПараметрыДобавления.ИмяДобавляемойТаблицы; + МетаОбъекта = Метаданные.НайтиПоПолномуИмени(ИмяДобавляемойТаблицы); + + Для Каждого Элемент Из ЭлементыИсточника Цикл + // Ветка разбора аналогична ветке в ДобавитьДополнительныеНаборыКомпоновкиТабличныхЧастей + + Тип=ТипЗнч(Элемент); + Если Тип=Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда + // Группу копируем + ЭлементОтбора = ЭлементыПриемника.Добавить(Тип); + ЗаполнитьЗначенияСвойств(ЭлементОтбора, Элемент); + + ДобавитьДополнительныеОтборыКомпоновкиТабличныхЧастей( + ЭлементОтбора.Элементы, Элемент.Элементы, ЭлементыНабора, + ПараметрыДобавления + ); + Продолжить; + КонецЕсли; + + // Это элемент, смотрим чтобы попало на нашу табличку + ИмяПоля = Строка(Элемент.ЛевоеЗначение); + Если ИмяПоля="Ссылка" Тогда + ЭлементОтбора = ЭлементыПриемника.Добавить(Тип); + ЗаполнитьЗначенияСвойств(ЭлементОтбора, Элемент); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбъектРегистрации"); + Продолжить; + + ИначеЕсли Лев(ИмяПоля, 7)="Ссылка." Тогда + ИмяПоля = Сред(ИмяПоля, 8); + + ИначеЕсли Лев(ИмяПоля, 18)="ОбъектРегистрации." Тогда + ИмяПоля = Сред(ИмяПоля, 19); + + Иначе + ЭлементОтбора = ЭлементыПриемника.Добавить(Тип); + ЗаполнитьЗначенияСвойств(ЭлементОтбора, Элемент); + Продолжить; + + КонецЕсли; + + Позиция = Найти(ИмяПоля, "."); + ИмяТаблицы = Лев(ИмяПоля, Позиция-1); + МетаТабличнаяЧасть = МетаОбъекта.ТабличныеЧасти.Найти(ИмяТаблицы); + + Если Позиция=0 Тогда + // Отбор к шапке, получим через ссылку + ЭлементОтбора = ЭлементыПриемника.Добавить(Тип); + ЗаполнитьЗначенияСвойств(ЭлементОтбора, Элемент); + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбъектРегистрации." + ИмяПоля); + Продолжить; + ИначеЕсли МетаТабличнаяЧасть=Неопределено Тогда + // Табличная часть есть, но не наша + Продолжить; + КонецЕсли; + + // Отбор к табличной части + ЭлементОтбора = ЭлементыПриемника.Добавить(Тип); + ЗаполнитьЗначенияСвойств(ЭлементОтбора, Элемент); + + ПутьКДанным = Сред(ИмяПоля, Позиция + 1); + Если Лев(ПутьКДанным + ".", 7)="Ссылка." Тогда + // Переадресуем на головную таблицу + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбъектРегистрации." + Сред(ПутьКДанным, 8)); + Иначе + // Корректируем имя + ПутьКДанным = СтрЗаменить(ИмяДобавляемойТаблицы + ИмяТаблицы, ".", "") + ПутьКДанным; + ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ПутьКДанным); + КонецЕсли; + КонецЦикла; + +КонецПроцедуры + +Функция РеквизитыТабличнойЧастиДляЗапроса(Знач МетаТабличнаяЧасть, Знач Префикс="") + Результат = ""; + Для Каждого МетаРеквизит Из МетаТабличнаяЧасть.Реквизиты Цикл + Имя = МетаРеквизит.Имя; + Псевдоним = Префикс + Имя; + + Результат = Результат + "," + Символы.ПС + Имя + " КАК " + Псевдоним; + КонецЦикла; + + Возврат Результат; КонецФункции // Возвращает параметры-ключи для сохранения настроек в разрезе плана обмена для всех пользователей @@ -919,8 +1091,7 @@ УстановитьПривилегированныйРежим(Истина); СписокВариантов = ХранилищеОбщихНастроек.Загрузить( ПараметрыНастроек.КлючОбъекта, ПараметрыНастроек.КлючНастроек, - ПараметрыНастроек, ПараметрыНастроек.Пользователь - ); + ПараметрыНастроек, ПараметрыНастроек.Пользователь); Возврат ?(СписокВариантов=Неопределено, Новый СписокЗначений, СписокВариантов); КонецФункции @@ -936,14 +1107,12 @@ УстановитьПривилегированныйРежим(Истина); Если СписокВариантов.Количество()=0 Тогда ХранилищеОбщихНастроек.Удалить( - ПараметрыНастроек.КлючОбъекта, ПараметрыНастроек.КлючНастроек, ПараметрыНастроек.Пользователь - ); + ПараметрыНастроек.КлючОбъекта, ПараметрыНастроек.КлючНастроек, ПараметрыНастроек.Пользователь); Иначе ХранилищеОбщихНастроек.Сохранить( ПараметрыНастроек.КлючОбъекта, ПараметрыНастроек.КлючНастроек, СписокВариантов, - ПараметрыНастроек, ПараметрыНастроек.Пользователь - ); + ПараметрыНастроек, ПараметрыНастроек.Пользователь); КонецЕсли; КонецПроцедуры @@ -956,10 +1125,11 @@ Возврат НСтр("ru='Без дополнительных данных.'"); ИначеЕсли ВариантВыгрузки=1 Тогда - ОписаниеПустогоОтбора = НСтр("ru='Все документы'"); - Возврат ПредставлениеОтбора(ПериодОтбораВсехДокументов, КомпоновщикОтбораВсехДокументов, ОписаниеПустогоОтбора); + ТекстВсеДокументы = ЗаголовокГруппыОтбораВсехДокументов(); + Результат = ПредставлениеОтбора(ПериодОтбораВсехДокументов, КомпоновщикОтбораВсехДокументов, ТекстВсеДокументы); + Возврат СтрЗаменить(Результат, "ОбъектРегистрации.", ТекстВсеДокументы + ".") - ИначеЕсли ВариантВыгрузки=2 Тогда + ИначеЕсли ВариантВыгрузки=2 Тогда Возврат ПредставлениеДетальногоОтбора(); КонецЕсли; @@ -982,4 +1152,4 @@ Возврат СтруктураРезультата; КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ИнтерактивноеИзменениеВыгрузки.mdo b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ИнтерактивноеИзменениеВыгрузки.mdo index 728df5b44..236836b18 100644 --- a/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ИнтерактивноеИзменениеВыгрузки.mdo +++ b/SSL/src/DataProcessors/ИнтерактивноеИзменениеВыгрузки/ИнтерактивноеИзменениеВыгрузки.mdo @@ -9,7 +9,6 @@ ru Интерактивное изменение выгрузки - true DataProcessor.ИнтерактивноеИзменениеВыгрузки.Form.Форма УзелИнформационнойБазы diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ВзаимодействияПоОбращению/Form.form b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ВзаимодействияПоОбращению/Form.form new file mode 100644 index 000000000..b64044b42 --- /dev/null +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ВзаимодействияПоОбращению/Form.form @@ -0,0 +1,1112 @@ + + + + ГруппаКоманд + 12 + + Обновить + 17 + true + true + + true + + + ОбновитьРасширеннаяПодсказка + 28 + Label + true + true + + Left + + + UsualButton + Form.Command.Обновить + Normal + Auto + 10 + true + true + UserCmds + Auto + + + Предыдущие + 13 + true + true + + true + + + ПредыдущиеРасширеннаяПодсказка + 29 + Label + true + true + + Left + + + UsualButton + Form.Command.Предыдущие + Normal + Auto + true + true + UserCmds + Auto + + + Диапазон + 14 + true + true + + true + + + ДиапазонРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + ДиапазонКонтекстноеМеню + 15 + true + + Label + true + true + + 128 + + + Left + + + + Следующие + 16 + true + true + + true + + + СледующиеРасширеннаяПодсказка + 31 + Label + true + true + + Left + + + UsualButton + Form.Command.Следующие + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Группа команд</value> + + + ГруппаКомандРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ТаблицаВзаимодействий + 1 + true + true + + true + + + СписокВзаимодействий + + None + 2 + + ТаблицаВзаимодействийКартинкаТипаСообщения + 6 + true + true + + true + + + СписокВзаимодействий.КартинкаТипаСообщения + + + ТаблицаВзаимодействийКартинкаТипаСообщенияРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + + ТаблицаВзаимодействийКартинкаТипаСообщенияКонтекстноеМеню + 7 + true + + PictureField + Center + Auto + true + Left + true + + true + true + true + true + true + + + 1 + + + + + ТаблицаВзаимодействийДатаСообщения + 8 + true + true + + true + + + СписокВзаимодействий.ДатаСообщения + + + ТаблицаВзаимодействийДатаСообщенияРасширеннаяПодсказка + 44 + Label + true + true + + Left + + + + ТаблицаВзаимодействийДатаСообщенияКонтекстноеМеню + 9 + true + + InputField + Auto + true + Left + true + + true + 2 + true + true + + ru + ДФ='ддд дд.ММ.гггг ЧЧ:мм' + + + ru + ДФ='ддд дд.ММ.гггг ЧЧ:мм' + + true + true + true + Normal + + + + ТаблицаВзаимодействийТекстСообщения + 4 + true + true + + true + + + СписокВзаимодействий.ТекстСообщения + + + ТаблицаВзаимодействийТекстСообщенияРасширеннаяПодсказка + 46 + Label + true + true + + Left + + + + ТаблицаВзаимодействийТекстСообщенияКонтекстноеМеню + 5 + true + + InputField + Auto + true + Left + true + + true + 2 + true + true + true + true + true + Normal + + + + ТаблицаВзаимодействийКоманднаяПанель + 3 + Left + + + OnActivateRow + ТаблицаВзаимодействийПриАктивизацииСтроки + + + ТаблицаВзаимодействийСтрокаПоиска + 33 + + ТаблицаВзаимодействийСтрокаПоискаРасширеннаяПодсказка + 35 + Label + true + true + + Left + + + + ТаблицаВзаимодействийСтрокаПоискаКонтекстноеМеню + 34 + true + + ТаблицаВзаимодействий + + true + + + + ТаблицаВзаимодействийСостояниеПросмотра + 36 + + ТаблицаВзаимодействийСостояниеПросмотраРасширеннаяПодсказка + 38 + Label + true + true + + Left + + + + ТаблицаВзаимодействийСостояниеПросмотраКонтекстноеМеню + 37 + true + + ViewStatusAddition + ТаблицаВзаимодействий + + true + + + + ТаблицаВзаимодействийУправлениеПоиском + 39 + + ТаблицаВзаимодействийУправлениеПоискомРасширеннаяПодсказка + 41 + Label + true + true + + Left + + + + ТаблицаВзаимодействийУправлениеПоискомКонтекстноеМеню + 40 + true + + SearchControlAddition + ТаблицаВзаимодействий + + true + + + + ТаблицаВзаимодействийРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + + ТаблицаВзаимодействийКонтекстноеМеню + 2 + true + + true + true + true + true + 7 + true + true + Row +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + true + None + None + None + true + +
            + + ГруппаСодержания + 19 + + СодержаниеТекущегоСообщения + 10 + true + true + + true + + + СодержаниеТекущегоСообщения + + None + + СодержаниеТекущегоСообщенияРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + + СодержаниеТекущегоСообщенияКонтекстноеМеню + 11 + true + + FormattedDocumentField + true + Enter + true + Left + true + + 60 + true + 15 + true + true + true + + + + ТаблицаВзаимодействийВложения + 20 + true + true + + true + + + Items.ТаблицаВзаимодействий.CurrentData.Вложения + + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + OutputList + SelectAll + SortListAsc + SortListDesc + + ТаблицаВзаимодействийВложенияИмя + 23 + true + true + + true + + + Items.ТаблицаВзаимодействий.CurrentData.Вложения.Имя + + + ТаблицаВзаимодействийВложенияИмяРасширеннаяПодсказка + 70 + Label + true + true + + Left + + + + ТаблицаВзаимодействийВложенияИмяКонтекстноеМеню + 24 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаВзаимодействийВложенияКоманднаяПанель + 22 + Left + + + ТаблицаВзаимодействийВложенияСтрокаПоиска + 61 + + ТаблицаВзаимодействийВложенияСтрокаПоискаРасширеннаяПодсказка + 63 + Label + true + true + + Left + + + + ТаблицаВзаимодействийВложенияСтрокаПоискаКонтекстноеМеню + 62 + true + + ТаблицаВзаимодействийВложения + + true + + + + ТаблицаВзаимодействийВложенияСостояниеПросмотра + 64 + + ТаблицаВзаимодействийВложенияСостояниеПросмотраРасширеннаяПодсказка + 66 + Label + true + true + + Left + + + + ТаблицаВзаимодействийВложенияСостояниеПросмотраКонтекстноеМеню + 65 + true + + ViewStatusAddition + ТаблицаВзаимодействийВложения + + true + + + + ТаблицаВзаимодействийВложенияУправлениеПоиском + 67 + + ТаблицаВзаимодействийВложенияУправлениеПоискомРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + + ТаблицаВзаимодействийВложенияУправлениеПоискомКонтекстноеМеню + 68 + true + + SearchControlAddition + ТаблицаВзаимодействийВложения + + true + + + + ТаблицаВзаимодействийВложенияРасширеннаяПодсказка + 60 + Label + true + true + + Left + + + + ТаблицаВзаимодействийВложенияКонтекстноеМеню + 21 + + СохранитьФайл + 25 + true + true + + true + + + СохранитьФайлРасширеннаяПодсказка + 59 + Label + true + true + + Left + + + Form.Command.СохранитьФайл + Normal + Auto + true + true + UserCmds + Auto + + true + + true + true + true + 25 + true + true + true + MultiRow +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + false + true + Auto + Auto + true + true + true + true + None + None + None + true + +
            + true + true + + true + + + <key>ru</key> + <value>Группа содержания</value> + + + ГруппаСодержанияРасширеннаяПодсказка + 56 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + +
            + + ФормаКоманднаяПанель + -1 + + ФормаДобавитьНовоеСообщение + 18 + true + true + + true + + + ФормаДобавитьНовоеСообщениеРасширеннаяПодсказка + 26 + Label + true + true + + Left + + + Form.Command.ДобавитьНовоеСообщение + Auto + true + true + true + UserCmds + Auto + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + СписокВзаимодействий + + <key>ru</key> + <value>Список взаимодействий</value> + + 2 + + ValueTable + + + true + + + true + + + ТекстСообщения + + <key>ru</key> + <value>Текст</value> + + 1 + + String + + + + true + + + true + + + + КартинкаТипаСообщения + + <key>ru</key> + <value> </value> + + 2 + + Picture + + + true + + + true + + + + ДатаСообщения + + <key>ru</key> + <value>Дата</value> + + 3 + + Date + + + + true + + + true + + + + ТекстHTML + + <key>ru</key> + <value>Текст HTML</value> + + 4 + + String + + + + true + + + true + + + + ВложенияHTML + + <key>ru</key> + <value>Вложения HTML</value> + + 5 + + ValueList + + + true + + + true + + + + Идентификатор + + <key>ru</key> + <value>Идентификатор</value> + + 6 + + UUID + + + true + + + true + + + + Вложения + + <key>ru</key> + <value>Вложения</value> + + 7 + + ValueTable + + + true + + + true + + + + + СписокВзаимодействий.Вложения + + + Имя + + <key>ru</key> + <value>Вложенные файлы</value> + + 1 + + String + + + + true + + + true + + + + Идентификатор + + <key>ru</key> + <value>Идентификатор</value> + + 2 + + UUID + + + true + + + true + + + + + + СодержаниеТекущегоСообщения + 3 + + FormattedDocument + + + true + + + true + + + + ИдентификаторОбращения + + <key>ru</key> + <value>Идентификатор обращения</value> + + 4 + + UUID + + + true + + + true + + + + ТекущийНомерСтраницы + + <key>ru</key> + <value>Текущий номер страницы</value> + + 1 + + Number + + 10 + + + + true + + + true + + + + Предыдущие + + <key>ru</key> + <value><< Предыдущие</value> + + 1 + + ru + Предыдущие + + + true + + + + Предыдущие + + + Text + Auto + Auto + + + Следующие + + <key>ru</key> + <value>Следующие >></value> + + 2 + + ru + Следующие + + + true + + + StdPicture.Forward + + + + Следующие + + + Text + Auto + Auto + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 3 + + ru + Обновить список сообщений + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + TextPicture + Auto + Auto + + + ДобавитьНовоеСообщение + + <key>ru</key> + <value>Добавить новое сообщение</value> + + 4 + + ru + Добавить новое сообщение + + + true + + + CommonPicture.СообщениеВТехПоддержку + + + + ДобавитьНовоеСообщение + + + TextPicture + Auto + Auto + + + СохранитьФайл + + <key>ru</key> + <value>Сохранить файл</value> + + 5 + + ru + Сохранить файл + + + true + + + CommonPicture.СохранитьФайлКак + + + + СохранитьФайл + + + TextPicture + Auto + Auto + + + + + +
            diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ВзаимодействияПоОбращению/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ВзаимодействияПоОбращению/Module.bsl new file mode 100644 index 000000000..3ecb22db4 --- /dev/null +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ВзаимодействияПоОбращению/Module.bsl @@ -0,0 +1,284 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест". + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ИдентификаторОбращения = Неопределено; + Если Параметры.Свойство("ИдентификаторОбращения") Тогда + ИдентификаторОбращения = Параметры.ИдентификаторОбращения; + КонецЕсли; + + Если Параметры.Свойство("Наименование") Тогда + Заголовок = Параметры.Наименование; + КонецЕсли; + + ТекущийНомерСтраницы = 1; + + ОбновитьСодержимоеФормы(); + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ "ТаблицаВзаимодействий" + +&НаКлиенте +Процедура ТаблицаВзаимодействийПриАктивизацииСтроки(Элемент) + + ОбновитьОтображениеСодержания(Элемент.ТекущиеДанные.Идентификатор); + +КонецПроцедуры + +&НаКлиенте +Процедура СохранитьФайл(Команда) + + Структура = ПолучитьАдресХранилищаФайла(Элементы.ТаблицаВзаимодействийВложения.ТекущиеДанные.Идентификатор); + Если Структура.Адрес <> Неопределено Тогда + ПолучитьФайл(Структура.Адрес, Структура.Имя, Истина); + КонецЕсли; + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + +&НаКлиенте +Процедура Предыдущие(Команда) + + ОбновитьСодержимоеФормы(-1); + +КонецПроцедуры + +&НаКлиенте +Процедура Следующие(Команда) + + ОбновитьСодержимоеФормы(-1); + +КонецПроцедуры + +&НаКлиенте +Процедура Обновить(Команда) + + ОбновитьСодержимоеФормы(); + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьНовоеСообщение(Команда) + + ПараметрыСообщения = СформироватьПараметрыСообщения(); + ИнформационныйЦентрКлиент.ОткрытьФормуОтправкиСообщенияВТехподдержку(ПараметрыСообщения); + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Процедура ОбновитьСодержимоеФормы(СмещениеСтраницы = 0) + + ТекущийНомерСтраницы = ТекущийНомерСтраницы + СмещениеСтраницы; + + Если ИдентификаторОбращения = Неопределено Тогда + ВызватьИсключениеСервисаОтображенияОбращений(); + КонецЕсли; + + Результат = ПолучитьСписокИКоличествоСообщенийПоОбращениюПользователя(); + Если Результат = Неопределено Тогда + ВызватьИсключениеСервисаОтображенияОбращений(); + КонецЕсли; + + ОтобразитьЭлементыШапки(Результат); + + ВывестиСписокСообщений(Результат); + +КонецПроцедуры + +&НаСервере +Процедура ВызватьИсключениеСервисаОтображенияОбращений() + + Если ИдентификаторОбращения = Неопределено Тогда + ВызватьИсключение НСтр("ru = 'Сервис по отображению обращений в техподдержку временно недоступен. + |Пожалуйста, повторите попытку позже'"); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ПолучитьСписокИКоличествоСообщенийПоОбращениюПользователя() + + Попытка + Прокси = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); + Возврат Прокси.GetMessagesSupportService(ИдентификаторОбращения, ТекущийНомерСтраницы); + Исключение + ИмяСобытия = ИнформационныйЦентрСервер.ПолучитьИмяСобытияДляЖурналаРегистрации(); + ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Возврат Неопределено; + КонецПопытки; + +КонецФункции + +&НаСервере +Функция ПолучитьАдресХранилищаФайла(ИдентификаторФайла) + + Попытка + Прокси = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); + Структура = Прокси.GetAttachmaent(ИдентификаторФайла); + Адрес = ПоместитьВоВременноеХранилище(Структура.binData); + Возврат Новый Структура("Адрес, Имя", Адрес, Структура.name) + Исключение + ИмяСобытия = ИнформационныйЦентрСервер.ПолучитьИмяСобытияДляЖурналаРегистрации(); + ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Возврат Неопределено; + КонецПопытки; + +КонецФункции + +&НаСервере +Процедура ОтобразитьЭлементыШапки(Результат) + + КоличествоСообщений = Результат.count; + КоличествоСообщенийНаСтранице = Результат.countOnPage; + + Если КоличествоСообщений = 0 Тогда + Возврат; + КонецЕсли; + + Диапазон = ПолучитьДиапазон(КоличествоСообщенийНаСтранице, КоличествоСообщений); + Элементы.Диапазон.Заголовок = ПолучитьШаблонДиапазона(Диапазон); + + ОтобразитьДоступностьКоманд(КоличествоСообщенийНаСтранице, КоличествоСообщений); + +КонецПроцедуры + +&НаСервере +Функция ПолучитьДиапазон(КоличествоСообщенийНаСтранице, КоличествоСообщений) + + Начало = (ТекущийНомерСтраницы - 1) * КоличествоСообщенийНаСтранице + 1; + Конец = ТекущийНомерСтраницы * КоличествоСообщенийНаСтранице; + Конец = ?(Конец > КоличествоСообщений, КоличествоСообщений, Конец); + + Возврат Новый Структура("Начало, Конец", Начало, Конец); + +КонецФункции + +&НаСервере +Функция ПолучитьШаблонДиапазона(Диапазон) + + Шаблон = "%1 - %2"; + Шаблон = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Диапазон.Начало, Диапазон.Конец); + + Возврат Шаблон; + +КонецФункции + +&НаСервере +Процедура ОтобразитьДоступностьКоманд(КоличествоОбращенийНаСтранице, КоличествоОбращений) + + Элементы.Следующие.Доступность = ?(ТекущийНомерСтраницы * КоличествоОбращенийНаСтранице < КоличествоОбращений, Истина, Ложь); + Элементы.Предыдущие.Доступность = ?(ТекущийНомерСтраницы > 1, Истина, Ложь); + +КонецПроцедуры + +&НаСервере +Процедура ВывестиСписокСообщений(Результат) + + Если Результат.messageList.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + СписокВзаимодействий.Очистить(); + + Для Итерация = 0 По Результат.messageList.Количество() - 1 Цикл + + Сообщение = Результат.messageList.Получить(Итерация); + + Элемент = СписокВзаимодействий.Добавить(); + + Элемент.ТекстСообщения = Сообщение.text; + Элемент.КартинкаТипаСообщения = ?(Сообщение.ingoing, БиблиотекаКартинок.ВходящееСообщение, БиблиотекаКартинок.ИсходящееСообщение); + Элемент.ДатаСообщения = Сообщение.date; + Элемент.ТекстHTML = Сообщение.textHTML; + Элемент.Идентификатор = Сообщение.ID; + Элемент.ВложенияHTML.Добавить(ПолучитьСтруктуруФайловКартинок(Сообщение.filesHTML)); + ЗаполнитьСписокВложений(Элемент, Сообщение.attachments); + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьСписокВложений(СтрокаТаблицы, Вложения) + + Для Каждого Вложение Из Вложения Цикл + НовыйЭлемент = СтрокаТаблицы.Вложения.Добавить(); + НовыйЭлемент.Имя = Вложение.name; + НовыйЭлемент.Идентификатор = Вложение.id; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ПолучитьСтруктуруФайловКартинок(Файлы) + + Структура = Новый Структура; + + Для Каждого СтруктураФайла из Файлы Цикл + Структура.Вставить(СтруктураФайла.name, Новый Картинка(СтруктураФайла.binData)); + КонецЦикла; + + Возврат Структура; + +КонецФункции + +&НаСервере +Процедура ОбновитьОтображениеСодержания(Идентификатор) + + Фильтр = Новый Структура("Идентификатор", Идентификатор); + МассивСтрок = СписокВзаимодействий.НайтиСтроки(Фильтр); + Если МассивСтрок.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + СтрокаТаблицы = МассивСтрок.Получить(0); + + СодержаниеТекущегоСообщения.УстановитьHTML(СтрокаТаблицы.ТекстHTML, СтрокаТаблицы.ВложенияHTML.Получить(0).Значение); + + Элементы.ТаблицаВзаимодействийВложения.Видимость = ?(СтрокаТаблицы.Вложения.Количество() = 0, Ложь, Истина); + +КонецПроцедуры + +&НаСервере +Функция СформироватьПараметрыСообщения() + + УстановитьПривилегированныйРежим(Истина); + + ДополнительныеПараметры = Новый Структура; + ДополнительныеПараметры.Вставить("ИдентификаторОбращения", ИдентификаторОбращения); + + ПараметрыСообщения = Новый Структура; + ПараметрыСообщения.Вставить("ОтКого", ИнформационныйЦентрСервер.ОпределитьАдресЭлектроннойПочтыПользователя()); + ПараметрыСообщения.Вставить("Вложения", ИнформационныйЦентрСервер.СформироватьXMLСТехническимиПараметрами(ДополнительныеПараметры)); + ПараметрыСообщения.Вставить("ОтображатьТему", Ложь); + + Возврат ПараметрыСообщения; + +КонецФункции + + + + + + diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ДобавлениеКомментария/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ДобавлениеКомментария/Module.bsl index a1ad45865..aae3229e5 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ДобавлениеКомментария/Module.bsl +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ДобавлениеКомментария/Module.bsl @@ -36,7 +36,7 @@ КонецЕсли; - Результат = ДобавитьКомментрий(); + Результат = ДобавитьКомментарий(); Если Результат Тогда ПоказатьОповещениеПользователя(НСтр("ru = 'Комментарий добавлен.'")); Иначе @@ -52,9 +52,9 @@ // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ &НаСервере -Функция ДобавитьКомментрий() +Функция ДобавитьКомментарий() - ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра(); + ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); ФабрикаXDTOВебСервиса = ПроксиИнформационногоЦентра.ФабрикаXDTO; ОписаниеКомментария = ПривестиКОбъектуXDTOКомментарийПользователя(ФабрикаXDTOВебСервиса); @@ -65,7 +65,7 @@ &НаСервере Функция ПривестиКОбъектуXDTOКомментарийПользователя(ФабрикаXDTOВебСервиса) - ТипКомментария = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter", "CommentListElement"); + ТипКомментария = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter_1_0_1_2", "CommentListElement"); ОписаниеКомментария = ФабрикаXDTOВебСервиса.Создать(ТипКомментария); ОписаниеКомментария.Text = Комментарий; diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ДобавлениеПожелания/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ДобавлениеПожелания/Module.bsl index f21dfb84d..f9198d66a 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ДобавлениеПожелания/Module.bsl +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ДобавлениеПожелания/Module.bsl @@ -53,7 +53,7 @@ Функция ОтправитьПожелание() Попытка - Прокси = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра(); + Прокси = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); СообщениеПользователя = ПривестиКОбъектуXDTOСообщениеПользователя(Прокси.ФабрикаXDTO); Возврат Прокси.AddUserMessage(СообщениеПользователя); Исключение @@ -67,7 +67,7 @@ &НаСервере Функция ПривестиКОбъектуXDTOСообщениеПользователя(ФабрикаXDTOВебСервиса) - ТипСообщения = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter", "UserMessage"); + ТипСообщения = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter_1_0_1_2", "UserMessage"); ОписаниеСообщения = ФабрикаXDTOВебСервиса.Создать(ТипСообщения); ОписаниеСообщения.Content = ПолучитьСодержаниеСообщенияПользователя(ФабрикаXDTOВебСервиса); @@ -84,7 +84,7 @@ &НаСервере Функция ПолучитьСодержаниеСообщенияПользователя(ФабрикаXDTOВебСервиса) - ТипСодержания = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter", "HTMLContent"); + ТипСодержания = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter_1_0_1_2", "HTMLContent"); ОписаниеСодержания = ФабрикаXDTOВебСервиса.Создать(ТипСодержания); СписокВложений = Неопределено; @@ -101,8 +101,8 @@ &НаСервере Функция ПривестиСписокФайловСодержанияСообщенияПользователя(СписокВложений, ФабрикаXDTOВебСервиса) - ТипСпискаКартинок = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter", "FileList"); - ТипСтруктурыКартинки = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter", "FileListElement"); + ТипСпискаКартинок = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter_1_0_1_2", "FileList"); + ТипСтруктурыКартинки = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter_1_0_1_2", "FileListElement"); СписокКартинок = ФабрикаXDTOВебСервиса.Создать(ТипСпискаКартинок); diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныеСсылкиВКонтексте/Form.form b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныеСсылкиВКонтексте/Form.form index 17a4908f1..574d3e43f 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныеСсылкиВКонтексте/Form.form +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныеСсылкиВКонтексте/Form.form @@ -72,13 +72,6 @@
            true
            - - ПутьКФорме - - String - - - diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныеСсылкиВКонтексте/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныеСсылкиВКонтексте/Module.bsl index 91e59e88c..45bb1fddc 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныеСсылкиВКонтексте/Module.bsl +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныеСсылкиВКонтексте/Module.bsl @@ -4,16 +4,22 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест". + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; - Если ПустаяСтрока(Параметры.ПутьКФорме) Тогда + Если Не Параметры.Свойство("ПутьКФорме") Тогда Отказ = Истина; Возврат; КонецЕсли; - ИнформационныйЦентрСервер.ВывестиКонтекстныеСсылки(ЭтаФорма, Элементы.ИнформационныеСсылки, 1, 20, Ложь, Параметры.ПутьКФорме); + ИнформационныйЦентрСервер.ВывестиКонтекстныеСсылки(ЭтаФорма, + Элементы.ИнформационныеСсылки, + 1, + 20, + Ложь, + Параметры.ПутьКФорме); КонецПроцедуры @@ -26,4 +32,15 @@ ИнформационныйЦентрКлиент.НажатиеНаИнформационнуюСсылку(ЭтаФорма, Элемент); -КонецПроцедуры \ No newline at end of file +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + + + diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныйЦентр/Form.form b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныйЦентр/Form.form index 491ad8f22..d846f94b3 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныйЦентр/Form.form +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныйЦентр/Form.form @@ -95,7 +95,7 @@ 58 <key>ru</key> - <value>Написать в техподдержку...</value> + <value>Обращения в поддержку</value> true true @@ -203,7 +203,7 @@ 62 <key>ru</key> - <value>Подать идею...</value> + <value>Центр идей</value> true true @@ -311,7 +311,7 @@ 74 <key>ru</key> - <value>Обсудить на форуме...</value> + <value>Обсуждения на форуме</value> true true @@ -334,6 +334,7 @@ true Label + 16 true true @@ -714,10 +715,11 @@ Label true true + true Click - ДомашняяСтраницаНажатие1 + ДомашняяСтраницаНажатие true Left @@ -914,10 +916,27 @@ true - Наименование + СсылкаНаДанные <key>ru</key> - <value>Наименование</value> + <value>Ссылка на данные</value> + + 7 + + CatalogRef.ОбщиеДанныеИнформационногоЦентра + + + true + + + true + + + + ИмяЭлементаФормы + + <key>ru</key> + <value>Имя элемента формы</value> 1 @@ -931,53 +950,33 @@ true + + ТипИнформации + + <key>ru</key> + <value>Тип информации</value> + + 2 + + String + + + + true + + + true + + Идентификатор <key>ru</key> <value>Идентификатор</value> - 2 - - UUID - - - true - - - true - - - - Критичность - - <key>ru</key> - <value>Критичность</value> - 3 - Number - - 10 - - - - true - - - true - - - - ИмяНовости - - <key>ru</key> - <value>Имя новости</value> - - 4 - - String - + UUID true @@ -992,7 +991,7 @@ ru Внешняя ссылка - 5 + 4 String @@ -1020,17 +1019,6 @@ true - - Форум - 4 - - - true - - - true - - НайтиОтветНаВопрос diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныйЦентр/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныйЦентр/Module.bsl index ed57926b1..fd37a7fd6 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныйЦентр/Module.bsl +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ИнформационныйЦентр/Module.bsl @@ -7,6 +7,10 @@ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; + + Если ОбщегоНазначения.ПриСозданииФормыНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ) Тогда + Возврат; + КонецЕсли; ИспользоватьРазделениеПоОбластямДанных = ОбщегоНазначенияПовтИсп.РазделениеВключено() И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных(); @@ -21,12 +25,6 @@ Элементы.ДомашняяСтраница.Заголовок = ДомашняяСтраница.Имя; Элементы.ДомашняяСтраница.Видимость = ?(ПустаяСтрока(ДомашняяСтраница.Адрес), Ложь, Истина); - // Форум - ФорумСсылка = Справочники.ИнформационныеСсылкиДляФорм.Форум; - Форум = Новый Структура("Имя, Адрес", ФорумСсылка.Наименование, ФорумСсылка.Адрес); - Элементы.ГруппаФорума.Видимость = ?(ПустаяСтрока(ФорумСсылка.Адрес), Ложь, Истина); - - // Поиск информации ИнформационныйЦентрСерверПереопределяемый.ОпределитьСсылкуПоискаИнформации(СсылкаПоискаИнформации); Иначе // для локального режима @@ -49,14 +47,35 @@ &НаКлиенте Процедура НажатиеНаНовость(Элемент) - МассивНовостей = ТаблицаНовостей.НайтиСтроки(Новый Структура("ИмяНовости", Элемент.Имя)); - Если МассивНовостей.Количество() = 0 Тогда + Фильтр = Новый Структура; + Фильтр.Вставить("ИмяЭлементаФормы", Элемент.Имя); + + МассивСтрок = ТаблицаНовостей.НайтиСтроки(Фильтр); + Если МассивСтрок.Количество() = 0 Тогда Возврат; КонецЕсли; - Идентификатор = МассивНовостей.Получить(0).Идентификатор; - ВнешняяСсылка = МассивНовостей.Получить(0).ВнешняяСсылка; - ИнформационныйЦентрКлиент.ПоказатьНовость(ВнешняяСсылка, Идентификатор); + ТекущееСообщение = МассивСтрок.Получить(0); + + Если ТекущееСообщение.ТипИнформации = "Недоступность" Тогда + + Идентификатор = ТекущееСообщение.Идентификатор; + ВнешняяСсылка = ТекущееСообщение.ВнешняяСсылка; + + Если Не ПустаяСтрока(ВнешняяСсылка) Тогда + ПерейтиПоНавигационнойСсылке(ВнешняяСсылка); + Возврат; + КонецЕсли; + + ИнформационныйЦентрКлиент.ПоказатьНовость(Идентификатор); + + ИначеЕсли ТекущееСообщение.ТипИнформации = "УведомлениеОПожелании" Тогда + + ИдентификаторПожелания = Строка(ТекущееСообщение.Идентификатор); + + ИнформационныйЦентрКлиент.ПоказатьПожелание(ИдентификаторПожелания); + + КонецЕсли; КонецПроцедуры @@ -70,8 +89,7 @@ &НаКлиенте Процедура НаписатьВТехПоддержкуНажатие(Элемент) - ПараметрыСообщения = СформироватьПараметрыСообщения(); - ИнформационныйЦентрКлиент.ОткрытьФормуОтправкиСообщенияВТехподдержку(ИспользоватьРазделениеПоОбластямДанных, ПараметрыСообщения); + ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.ОбращенияПользователя"); КонецПроцедуры @@ -83,7 +101,7 @@ КонецПроцедуры &НаКлиенте -Процедура ДомашняяСтраницаНажатие1(Элемент) +Процедура ДомашняяСтраницаНажатие(Элемент) Если Не ДомашняяСтраница.Свойство("Адрес") Тогда Возврат; @@ -96,11 +114,7 @@ &НаКлиенте Процедура ФорумНажатие(Элемент) - Если Не Форум.Свойство("Адрес") Тогда - Возврат; - КонецЕсли; - - ПерейтиПоНавигационнойСсылке(Форум.Адрес); + ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.ОбсужденияНаФоруме"); КонецПроцедуры @@ -134,14 +148,19 @@ Если ТаблицаНовостей.Количество() = 0 Тогда Возврат; - КонецЕсли; + КонецЕсли; ГруппаНовостей = Элементы.ГруппаНовостей; Для Итерация = 0 По ТаблицаНовостей.Количество() - 1 Цикл - Критичность = ТаблицаНовостей.Получить(Итерация).Критичность; - Наименование = ТаблицаНовостей.Получить(Итерация).Наименование; + Наименование = ТаблицаНовостей.Получить(Итерация).СсылкаНаДанные.Наименование; + + Если ПустаяСтрока(Наименование) Тогда + Продолжить; + КонецЕсли; + + Критичность = ТаблицаНовостей.Получить(Итерация).СсылкаНаДанные.Критичность; Картинка = ?(Критичность > 5, БиблиотекаКартинок.УведомлениеСервиса, БиблиотекаКартинок.СообщениеСервиса); ГруппаНовости = Элементы.Добавить("ГруппаНовости" + Строка(Итерация), Тип("ГруппаФормы"), ГруппаНовостей); @@ -166,12 +185,11 @@ ИмяНовости.Гиперссылка = Истина; ИмяНовости.УстановитьДействие("Нажатие", "НажатиеНаНовость"); - Если Критичность = 10 Тогда - ИмяНовости.Шрифт = Новый Шрифт(, , Истина, , , ); - КонецЕсли; + ТаблицаНовостей.Получить(Итерация).ИмяЭлементаФормы = ИмяНовости.Имя; + ТаблицаНовостей.Получить(Итерация).ТипИнформации = ТаблицаНовостей.Получить(Итерация).СсылкаНаДанные.ТипИнформации.Наименование; + ТаблицаНовостей.Получить(Итерация).Идентификатор = ТаблицаНовостей.Получить(Итерация).СсылкаНаДанные.Идентификатор; + ТаблицаНовостей.Получить(Итерация).ВнешняяСсылка = ТаблицаНовостей.Получить(Итерация).СсылкаНаДанные.ВнешняяСсылка; - ТаблицаНовостей.Получить(Итерация).ИмяНовости = "ИмяНовости" + Строка(Итерация); - КонецЦикла; ЕщеСообщения = Элементы.Добавить("ЕщеСообщения", Тип("ДекорацияФормы"), ГруппаНовостей); @@ -184,21 +202,6 @@ КонецПроцедуры -&НаСервере -Функция СформироватьПараметрыСообщения() - - УстановитьПривилегированныйРежим(Истина); - - ПараметрыСообщения = Новый Структура; - ПараметрыСообщения.Вставить("ОтКого", ИнформационныйЦентрСервер.ОпределитьАдресЭлектроннойПочтыПользователя()); - ПараметрыСообщения.Вставить("Тема", НСтр("ru = 'Обращение в техподдержку'") + " (" + Формат(ТекущаяДатаСеанса(),"ДЛФ=DT") + ")"); - ПараметрыСообщения.Вставить("Текст", ИнформационныйЦентрСервер.СформироватьШаблонТекстаВТехПоддержку()); - ПараметрыСообщения.Вставить("Вложения", ИнформационныйЦентрСервер.СформироватьXMLСТехническимиПараметрами()); - - Возврат ПараметрыСообщения; - -КонецФункции - &НаКлиенте Процедура ПоискОтветаНаВопрос() diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбращенияПользователя/ConditionalAppearance.dcssca b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбращенияПользователя/ConditionalAppearance.dcssca new file mode 100644 index 000000000..c8eed0ab5 --- /dev/null +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбращенияПользователя/ConditionalAppearance.dcssca @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ConditionalAppearance xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows"> + <item> + <selection> + <item> + <field>СписокОбращений</field> + </item> + </selection> + <filter> + <item xsi:type="FilterItemComparison"> + <left xsi:type="dcscor:Field">СписокОбращений.ИмеетНовыеСообщения</left> + <comparisonType>Equal</comparisonType> + <right xsi:type="xs:boolean">true</right> + </item> + </filter> + <appearance> + <dcscor:item xsi:type="SettingsParameterValue"> + <dcscor:parameter>Шрифт</dcscor:parameter> + <dcscor:value xsi:type="v8ui:Font" ref="sys:DefaultGUIFont" bold="true" italic="false" underline="false" strikeout="false" kind="WindowsFont"/> + </dcscor:item> + </appearance> + </item> +</ConditionalAppearance> diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбращенияПользователя/Form.form b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбращенияПользователя/Form.form new file mode 100644 index 000000000..365b92c57 --- /dev/null +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбращенияПользователя/Form.form @@ -0,0 +1,883 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <title> + <key>ru</key> + <value>Мои обращения в поддержку сервиса</value> + + + Шапка + 19 + + Обновить + 21 + true + true + + true + + + ОбновитьРасширеннаяПодсказка + 28 + Label + true + true + + Left + + + UsualButton + Form.Command.Обновить + Normal + Auto + 10 + true + true + UserCmds + Auto + + + Предыдущие + 12 + true + false + + true + + + ПредыдущиеРасширеннаяПодсказка + 29 + Label + true + true + + Left + + + UsualButton + Form.Command.Предыдущие + Normal + Auto + true + true + UserCmds + Auto + + + Диапазон + 17 + true + true + + true + + + ДиапазонРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + ДиапазонКонтекстноеМеню + 18 + true + + Label + true + true + + 51 + 153 + 102 + + + System.DefaultGUIFont + true + false + false + false + + + Left + + + + Следующие + 14 + true + false + + true + + + СледующиеРасширеннаяПодсказка + 31 + Label + true + true + + Left + + + UsualButton + Form.Command.Следующие + Normal + Auto + true + true + UserCmds + Auto + + + ФильтрОбращений + 24 + true + true + + true + + + ФильтрОбращений + + + OnChange + ФильтрОбращенийПриИзменении + + + ФильтрОбращенийРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + + ФильтрОбращенийКонтекстноеМеню + 25 + true + + InputField + Enter + true + Left + true + + true + true + false + true + true + true + true + + + ru + Все + + + Все + + + + + ru + Не закрытые + + + Не закрытые + + + Normal + + + true + true + + true + + + <key>ru</key> + <value>Шапка</value> + + + ru + Шапка + + + ШапкаРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + СписокОбращений + 1 + true + true + + true + + + СписокОбращений + + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + OutputList + SortListAsc + SortListDesc + + ТаблицаСтатус + 4 + true + true + + true + + + СписокОбращений.Статус + + + ТаблицаСтатусРасширеннаяПодсказка + 44 + Label + true + true + + Left + + + + ТаблицаСтатусКонтекстноеМеню + 5 + true + + InputField + Auto + true + Left + true + + 12 + true + true + true + true + true + true + Normal + + + + ТаблицаНаименование + 8 + + <key>ru</key> + <value>Тема</value> + + true + true + + true + + + СписокОбращений.Наименование + + + ТаблицаНаименованиеРасширеннаяПодсказка + 46 + Label + true + true + + Left + + + + ТаблицаНаименованиеКонтекстноеМеню + 9 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаНомер + 10 + true + true + + true + + + СписокОбращений.Код + + + ТаблицаНомерРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + + ТаблицаНомерКонтекстноеМеню + 11 + true + + InputField + Auto + true + Left + true + + 7 + true + true + true + true + true + true + Normal + + + + ТаблицаДата + 6 + true + true + + true + + + СписокОбращений.Дата + + + ТаблицаДатаРасширеннаяПодсказка + 50 + Label + true + true + + Left + + + + ТаблицаДатаКонтекстноеМеню + 7 + true + + InputField + Auto + true + Left + true + + 12 + true + true + true + + ru + ДФ='ддд дд.ММ.гггг ЧЧ:мм' + + + ru + ДФ='ддд дд.ММ.гггг ЧЧ:мм' + + true + true + true + Normal + + + + СписокОбращенийКоманднаяПанель + 3 + Left + true + + + Selection + СписокОбращенийВыбор + + + СписокОбращенийСтрокаПоиска + 35 + + СписокОбращенийСтрокаПоискаРасширеннаяПодсказка + 37 + Label + true + true + + Left + + + + СписокОбращенийСтрокаПоискаКонтекстноеМеню + 36 + true + + СписокОбращений + + true + + + + СписокОбращенийСостояниеПросмотра + 38 + + СписокОбращенийСостояниеПросмотраРасширеннаяПодсказка + 40 + Label + true + true + + Left + + + + СписокОбращенийСостояниеПросмотраКонтекстноеМеню + 39 + true + + ViewStatusAddition + СписокОбращений + + true + + + + СписокОбращенийУправлениеПоиском + 41 + + СписокОбращенийУправлениеПоискомРасширеннаяПодсказка + 43 + Label + true + true + + Left + + + + СписокОбращенийУправлениеПоискомКонтекстноеМеню + 42 + true + + SearchControlAddition + СписокОбращений + + true + + + + СписокОбращенийРасширеннаяПодсказка + 34 + Label + true + true + + Left + + + + СписокОбращенийКонтекстноеМеню + 2 + true + + true + true + true + true + Row +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + None + None + None + true + +
            + + ФормаКоманднаяПанель + -1 + + ОбратитьсяВСлужбуПоддержки + 20 + true + true + + true + + + ОбратитьсяВСлужбуПоддержкиРасширеннаяПодсказка + 26 + Label + true + true + + Left + + + Form.Command.ОбратитьсяВСлужбуПоддержки + Auto + true + true + true + UserCmds + Auto + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + 90 + DontBlock + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + СписокОбращений + + <key>ru</key> + <value>Список обращений</value> + + 2 + + ValueTable + + + true + + + true + + + Статус + + <key>ru</key> + <value>Статус</value> + + 1 + + String + + + + true + + + true + + + + Дата + + <key>ru</key> + <value>Дата</value> + + 2 + + Date + + + + 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 + + UUID + + + true + + + true + + + + ИмеетНовыеСообщения + + <key>ru</key> + <value>Имеет новые сообщения</value> + + 6 + + Boolean + + + true + + + true + + + + + ИдентификаторПользователя + + <key>ru</key> + <value>Идентификатор пользователя</value> + + 3 + + UUID + + + true + + + true + + + + ТекущийНомерСтраницы + + <key>ru</key> + <value>Текущий номер страницы</value> + + 1 + + Number + + 10 + true + + + + true + + + true + + + + ФильтрОбращений + + <key>ru</key> + <value>Показать обращения</value> + + 5 + + String + + + + true + + + true + + + + Следующие + + <key>ru</key> + <value>Следующие >></value> + + 1 + + ru + Следующие + + + true + + + + Следующие + + + Text + Auto + Auto + + + Предыдущие + + <key>ru</key> + <value><< Предыдущие</value> + + 2 + + ru + Предыдущие + + + true + + + + Предыдущие + + + Text + Auto + Auto + + + ОбратитьсяВСлужбуПоддержки + + <key>ru</key> + <value>Обратиться в службу поддержки</value> + + 3 + + ru + Обратиться в службу поддержки + + + true + + + CommonPicture.СообщениеВТехПоддержку + + + + ОбратитьсяВСлужбуПоддержки + + + TextPicture + Auto + Auto + + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 4 + + ru + Обновить список обращений + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + TextPicture + Auto + Auto + + + + + + diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбращенияПользователя/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбращенияПользователя/Module.bsl new file mode 100644 index 000000000..9f21ad12e --- /dev/null +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбращенияПользователя/Module.bsl @@ -0,0 +1,223 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест". + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + УстановитьПривилегированныйРежим(Истина); + ИдентификаторПользователя = ПараметрыСеанса.ТекущийПользователь.ИдентификаторПользователяСервиса; + УстановитьПривилегированныйРежим(Ложь); + + ТекущийНомерСтраницы = 1; + + ЗначениеФильтраПоУмолчанию = Элементы.ФильтрОбращений.СписокВыбора.Получить(0).Значение; + ФильтрОбращений = ЗначениеФильтраПоУмолчанию; + + ОбновитьСодержимоеФормы(); + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + +&НаКлиенте +Процедура ФильтрОбращенийПриИзменении(Элемент) + + ОбновитьСодержимоеФормы(); + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ "Список обращений" + +&НаКлиенте +Процедура СписокОбращенийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + ПараметрыФормы = Новый Структура(); + ПараметрыФормы.Вставить("ИдентификаторОбращения", Элемент.ТекущиеДанные.Идентификатор); + ПараметрыФормы.Вставить("Наименование", Элемент.ТекущиеДанные.Наименование); + + ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.ВзаимодействияПоОбращению", ПараметрыФормы); + + УстановитьПризнакПросмотра(Элемент.ТекущиеДанные.Идентификатор); + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + +&НаКлиенте +Процедура Следующие(Команда) + + ОбновитьСодержимоеФормы(+1); + +КонецПроцедуры + +&НаКлиенте +Процедура Предыдущие(Команда) + + ОбновитьСодержимоеФормы(-1); + +КонецПроцедуры + +&НаКлиенте +Процедура ОбратитьсяВСлужбуПоддержки(Команда) + + ПараметрыСообщения = СформироватьПараметрыСообщения(); + ИнформационныйЦентрКлиент.ОткрытьФормуОтправкиСообщенияВТехподдержку(ПараметрыСообщения); + +КонецПроцедуры + +&НаКлиенте +Процедура Обновить(Команда) + + ОбновитьСодержимоеФормы(); + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Процедура ОбновитьСодержимоеФормы(СмещениеСтраницы = 0) + + ТекущийНомерСтраницы = ТекущийНомерСтраницы + СмещениеСтраницы; + + Результат = ПолучитьСписокИКоличествоОбращенийПользователя(); + Если Результат = Неопределено Тогда + ВызватьИсключение НСтр("ru = 'Сервис по отображению обращений в техподдержку временно недоступен. + |Пожалуйста, повторите попытку позже'"); + КонецЕсли; + + ОтобразитьЭлементыШапки(Результат); + + ВывестиСписокОбращений(Результат); + +КонецПроцедуры + +&НаСервере +Функция ПолучитьСписокИКоличествоОбращенийПользователя() + + ПоказатьВсеОбращения = ?(ФильтрОбращений = Элементы.ФильтрОбращений.СписокВыбора.Получить(0).Значение, Истина, Ложь); + + Попытка + Прокси = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); + Возврат Прокси.GetTicketsSupportService(ИдентификаторПользователя, ТекущийНомерСтраницы, ПоказатьВсеОбращения); + Исключение + ИмяСобытия = ИнформационныйЦентрСервер.ПолучитьИмяСобытияДляЖурналаРегистрации(); + ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Возврат Неопределено; + КонецПопытки; + +КонецФункции + +&НаСервере +Процедура ОтобразитьЭлементыШапки(Результат) + + КоличествоОбращений = Результат.count; + КоличествоОбращенийНаСтранице = Результат.countOnPage; + + Если КоличествоОбращений = 0 Тогда + Возврат; + КонецЕсли; + + Диапазон = ПолучитьДиапазонОбращений(КоличествоОбращенийНаСтранице, КоличествоОбращений); + Элементы.Диапазон.Заголовок = ПолучитьШаблонДиапазонаОбращений(Диапазон); + + ОтобразитьДоступностьКоманд(КоличествоОбращенийНаСтранице, КоличествоОбращений); + +КонецПроцедуры + +&НаСервере +Функция ПолучитьДиапазонОбращений(КоличествоОбращенийНаСтранице, КоличествоОбращений) + + Начало = (ТекущийНомерСтраницы - 1) * КоличествоОбращенийНаСтранице + 1; + Конец = ТекущийНомерСтраницы * КоличествоОбращенийНаСтранице; + Конец = ?(Конец > КоличествоОбращений, КоличествоОбращений, Конец); + + Возврат Новый Структура("Начало, Конец", Начало, Конец); + +КонецФункции + +&НаСервере +Функция ПолучитьШаблонДиапазонаОбращений(Диапазон) + + Шаблон = "%1 - %2"; + Шаблон = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Шаблон, Диапазон.Начало, Диапазон.Конец); + + Возврат Шаблон; + +КонецФункции + +&НаСервере +Процедура ОтобразитьДоступностьКоманд(КоличествоОбращенийНаСтранице, КоличествоОбращений) + + Элементы.Следующие.Доступность = ?(ТекущийНомерСтраницы * КоличествоОбращенийНаСтранице < КоличествоОбращений, Истина, Ложь); + Элементы.Предыдущие.Доступность = ?(ТекущийНомерСтраницы > 1, Истина, Ложь); + +КонецПроцедуры + +&НаСервере +Процедура ВывестиСписокОбращений(Результат) + + Если Результат.ticketList.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + СписокОбращений.Очистить(); + + Для Итерация = 0 По Результат.ticketList.Количество() - 1 Цикл + + Обращение = Результат.ticketList.Получить(Итерация); + + Элемент = СписокОбращений.Добавить(); + + Элемент.Статус = Обращение.stage; + Элемент.Дата = Обращение.date; + Элемент.Наименование = Обращение.name; + Элемент.Код = Обращение.number; + Элемент.Идентификатор = Обращение.id; + Элемент.ИмеетНовыеСообщения = Обращение.havingNewMessages; + + КонецЦикла; + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПризнакПросмотра(Идентификатор) + + Фильтр = Новый Структура("Идентификатор", Идентификатор); + МассивСтрок = СписокОбращений.НайтиСтроки(Фильтр); + Если МассивСтрок = 0 Тогда + Возврат; + КонецЕсли; + + МассивСтрок.Получить(0).ИмеетНовыеСообщения = Ложь; + +КонецПроцедуры + +&НаСервере +Функция СформироватьПараметрыСообщения() + + УстановитьПривилегированныйРежим(Истина); + + ПараметрыСообщения = Новый Структура; + ПараметрыСообщения.Вставить("ОтКого", ИнформационныйЦентрСервер.ОпределитьАдресЭлектроннойПочтыПользователя()); + ПараметрыСообщения.Вставить("Текст", ИнформационныйЦентрСервер.СформироватьШаблонТекстаВТехПоддержку()); + ПараметрыСообщения.Вставить("Вложения", ИнформационныйЦентрСервер.СформироватьXMLСТехническимиПараметрами()); + + Возврат ПараметрыСообщения; + +КонецФункции + diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбсужденияНаФоруме/Form.form b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбсужденияНаФоруме/Form.form new file mode 100644 index 000000000..7f8128ef1 --- /dev/null +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбсужденияНаФоруме/Form.form @@ -0,0 +1,376 @@ + + + + <key>ru</key> + <value>Мои обсуждения на форуме</value> + + + НовыеКомментарии + 1 + true + true + + true + + + <key>ru</key> + <value>Новые комментарии пользователей</value> + + + ru + Новые комментарии + + + НовыеКомментарииРасширеннаяПодсказка + 8 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + auto + Auto + Auto + + + + НовыеТемы + 2 + true + true + + true + + + <key>ru</key> + <value>Новые темы</value> + + + ru + Новые темы + + + НовыеТемыРасширеннаяПодсказка + 9 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + auto + Auto + Auto + + + + ГруппаПодвала + 3 + + ИконкаФорума + 6 + + <key>ru</key> + <value>Иконка форума</value> + + true + true + + true + + + ИконкаФорумаРасширеннаяПодсказка + 11 + Label + true + true + + Left + + + + ИконкаФорумаКонтекстноеМеню + 7 + true + + 2 + true + 1 + true + + + CommonPicture.ФорумСервиса + + + + + НадписьФорума + 4 + + <key>ru</key> + <value>Форум</value> + + true + true + + true + + + НадписьФорумаРасширеннаяПодсказка + 12 + Label + true + true + + Left + + + + НадписьФорумаКонтекстноеМеню + 5 + true + + Label + true + true + true + + + Click + НадписьФорумаНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Группа подвала</value> + + + ГруппаПодвалаРасширеннаяПодсказка + 10 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + ИдентификаторПользователя + + <key>ru</key> + <value>Идентификатор пользователя</value> + + 2 + + UUID + + + true + + + true + + + + АдресФорума + + <key>ru</key> + <value>Адрес форума</value> + + 1 + + String + + + + true + + + true + + + + ПоказыватьФорму + + <key>ru</key> + <value>Показывать форму</value> + + 3 + + Boolean + + + 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> + + 5 + + ValueTable + + + true + + + true + + + ИмяЭлементаФормы + + <key>ru</key> + <value>Имя элемента формы</value> + + 1 + + String + + + + true + + + true + + + + Адрес + + <key>ru</key> + <value>Адрес</value> + + 2 + + String + + + + true + + + true + + + + + + + + diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбсужденияНаФоруме/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбсужденияНаФоруме/Module.bsl new file mode 100644 index 000000000..8d5a952f2 --- /dev/null +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОбсужденияНаФоруме/Module.bsl @@ -0,0 +1,188 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + АдресФорума = Справочники.ИнформационныеСсылкиДляФорм.Форум.Адрес; + + Элементы.ГруппаПодвала.Видимость = Не ПустаяСтрока(АдресФорума); + + УстановитьПривилегированныйРежим(Истина); + ИдентификаторПользователя = ПараметрыСеанса.ТекущийПользователь.ИдентификаторПользователяСервиса; + УстановитьПривилегированныйРежим(Ложь); + + Результат = ПолучитьСписокТем(); + Если Результат = Неопределено Тогда + Возврат; + КонецЕсли; + + ПоказыватьФорму = Истина; + + СформироватьЭлементыСтраницы(Результат); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Не ПоказыватьФорму Тогда + + Если Не ПустаяСтрока(АдресФорума) Тогда + ПерейтиПоНавигационнойСсылке(АдресФорума); + КонецЕсли; + + Отказ = Истина; + + КонецЕсли; + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + +&НаКлиенте +Процедура НажатиеНаТемуСНовымиКомментариями(Элемент) + + Фильтр = Новый Структура("ИмяЭлементаФормы", Элемент.Имя); + НайденныеСтроки = ТаблицаДляНовыхКомментариев.НайтиСтроки(Фильтр); + Если НайденныеСтроки.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + АдресТемы = НайденныеСтроки.Получить(0).Адрес; + + ПерейтиПоНавигационнойСсылке(АдресТемы); + +КонецПроцедуры + +&НаКлиенте +Процедура НажатиеНаНовуюТему(Элемент) + + Фильтр = Новый Структура("ИмяЭлементаФормы", Элемент.Имя); + НайденныеСтроки = ТаблицаДляНовыхТем.НайтиСтроки(Фильтр); + Если НайденныеСтроки.Количество() = 0 Тогда + Возврат; + КонецЕсли; + + АдресТемы = НайденныеСтроки.Получить(0).Адрес; + + ПерейтиПоНавигационнойСсылке(АдресТемы); + +КонецПроцедуры + +&НаКлиенте +Процедура НадписьФорумаНажатие(Элемент) + + Если Не ПустаяСтрока(АдресФорума) Тогда + ПерейтиПоНавигационнойСсылке(АдресФорума); + КонецЕсли; + +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Функция ПолучитьСписокТем() + + Попытка + Прокси = ИнформационныйЦентрСервер.ПолучитьПроксиУправленияКонференцией(); + Возврат Прокси.getForumTopics(Строка(ИдентификаторПользователя)); + Исключение + ИмяСобытия = ИнформационныйЦентрСервер.ПолучитьИмяСобытияДляЖурналаРегистрации(); + ЗаписьЖурналаРегистрации(ИмяСобытия, УровеньЖурналаРегистрации.Ошибка, , , ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + Возврат Неопределено; + КонецПопытки; + +КонецФункции + +&НаСервере +Процедура СформироватьЭлементыСтраницы(Результат) + + Если Результат.commentTopics.topicDescriptionCollection.Количество() <> 0 Тогда + СформироватьЭлементыНовыхКомментариев(Результат.commentTopics.topicDescriptionCollection); + КонецЕсли; + + Если Результат.mainTopics.topicDescriptionCollection.Количество() <> 0 Тогда + СформироватьЭлементыНовыхТем(Результат.mainTopics.topicDescriptionCollection); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура СформироватьЭлементыНовыхКомментариев(НовыеКомментарии) + + ШаблонТемыСНовымиКомментариями = "%1 (%2)"; + + Итерация = 0; + Для Каждого Комментарий Из НовыеКомментарии Цикл + + ИмяНовогоЭлемента = "ТемаСНовымиКомментариями" + Строка(Итерация); + НовыйЭлемент = Элементы.Добавить(ИмяНовогоЭлемента, Тип("ДекорацияФормы"), Элементы.НовыеКомментарии); + НовыйЭлемент.Вид = ВидДекорацииФормы.Надпись; + НовыйЭлемент.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонТемыСНовымиКомментариями, Комментарий.subject, Строка(Комментарий.messageCount)); + НовыйЭлемент.Гиперссылка = Истина; + НовыйЭлемент.РастягиватьПоГоризонтали = Истина; + НовыйЭлемент.УстановитьДействие("Нажатие", "НажатиеНаТемуСНовымиКомментариями"); + + ЭлементТаблицы = ТаблицаДляНовыхКомментариев.Добавить(); + ЭлементТаблицы.ИмяЭлементаФормы = ИмяНовогоЭлемента; + ЭлементТаблицы.Адрес = Комментарий.url; + + Итерация = Итерация + 1; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура СформироватьЭлементыНовыхТем(НовыеТемы) + + Итерация = 0; + Для Каждого Тема Из НовыеТемы Цикл + + ИмяЭлементаГруппыНовойТемы = "ГруппаНовойТемы" + Строка(Итерация); + ГруппаНовойТемы = Элементы.Добавить(ИмяЭлементаГруппыНовойТемы, Тип("ГруппаФормы"), Элементы.НовыеТемы); + ГруппаНовойТемы.Вид = ВидГруппыФормы.ОбычнаяГруппа; + ГруппаНовойТемы.ОтображатьЗаголовок = Ложь; + ГруппаНовойТемы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; + ГруппаНовойТемы.Отображение = ?(Итерация = 0, ОтображениеОбычнойГруппы.Нет, ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыЛиния()); + + ИмяЭлементаНовойТемы = "НоваяТема" + Строка(Итерация); + ЭлементНовойТемы = Элементы.Добавить(ИмяЭлементаНовойТемы, Тип("ДекорацияФормы"), ГруппаНовойТемы); + ЭлементНовойТемы.Вид = ВидДекорацииФормы.Надпись; + ЭлементНовойТемы.Заголовок = Тема.subject; + ЭлементНовойТемы.Гиперссылка = Истина; + ЭлементНовойТемы.РастягиватьПоГоризонтали = Истина; + ЭлементНовойТемы.УстановитьДействие("Нажатие", "НажатиеНаНовуюТему"); + + ИмяЭлементаПредмета = "Предмет" + Строка(Итерация); + ЭлементПредмета = Элементы.Добавить(ИмяЭлементаПредмета, Тип("ДекорацияФормы"), ГруппаНовойТемы); + ЭлементПредмета.Вид = ВидДекорацииФормы.Надпись; + ЭлементПредмета.Заголовок = Тема.topicName; + ЭлементПредмета.РастягиватьПоГоризонтали = Истина; + ЭлементПредмета.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Право; + + ЭлементТаблицы = ТаблицаДляНовыхТем.Добавить(); + ЭлементТаблицы.ИмяЭлементаФормы = ИмяЭлементаНовойТемы; + ЭлементТаблицы.Адрес = Тема.url; + + Итерация = Итерация + 1; + + КонецЦикла; + +КонецПроцедуры + + + diff --git a/SSL/src/CommonForms/ОтображениеНовостей/Form.form b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтображениеСообщений/Form.form similarity index 92% rename from SSL/src/CommonForms/ОтображениеНовостей/Form.form rename to SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтображениеСообщений/Form.form index 31e824c2f..0501b895c 100644 --- a/SSL/src/CommonForms/ОтображениеНовостей/Form.form +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтображениеСообщений/Form.form @@ -75,11 +75,11 @@ ГруппаНовости 5 - ВсеНовости + ВсеСообщения 7 <key>ru</key> - <value>Все новости</value> + <value>Все сообщения</value> true true @@ -87,7 +87,7 @@ true - ВсеНовостиРасширеннаяПодсказка + ВсеСообщенияРасширеннаяПодсказка 15 Label true @@ -97,7 +97,7 @@
            - ВсеНовостиКонтекстноеМеню + ВсеСообщенияКонтекстноеМеню 8 true @@ -108,7 +108,7 @@ Click - ВсеНовостиНажатие + ВсеСообщенияНажатие true Right @@ -323,10 +323,10 @@ - ИмяНовости + ИмяЭлементаФормы <key>ru</key> - <value>Имя новости</value> + <value>Имя элемента формы</value> 4 @@ -358,6 +358,24 @@ true + + ТипИнформации + + <key>ru</key> + <value>Тип информации</value> + + 6 + + String + + + + true + + + true + + diff --git a/SSL/src/CommonForms/ОтображениеНовостей/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтображениеСообщений/Module.bsl similarity index 50% rename from SSL/src/CommonForms/ОтображениеНовостей/Module.bsl rename to SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтображениеСообщений/Module.bsl index 2d68d5e08..38304cdf8 100644 --- a/SSL/src/CommonForms/ОтображениеНовостей/Module.bsl +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтображениеСообщений/Module.bsl @@ -8,8 +8,8 @@ Возврат; КонецЕсли; - Если Параметры.Свойство("ОткрытьВсеНовости") Тогда - ОткрытьВсеНовости(); + Если Параметры.Свойство("ОткрытьВсеСообщения") Тогда + ОткрытьВсеСообщения(); ИначеЕсли Параметры.Свойство("ОткрытьНовость") Тогда Если Параметры.Свойство("Идентификатор") Тогда ОткрытьНовость(Параметры.Идентификатор); @@ -24,24 +24,33 @@ &НаКлиенте Процедура НажатиеНаНовость(Элемент) - МассивНовостей = ТаблицаВсехНовостей.НайтиСтроки(Новый Структура("ИмяНовости", Элемент.Имя)); - Если МассивНовостей.Количество() = 0 Тогда + Фильтр = Новый Структура; + Фильтр.Вставить("ИмяЭлементаФормы", Элемент.Имя); + + МассивСтрок = ТаблицаВсехНовостей.НайтиСтроки(Фильтр); + Если МассивСтрок.Количество() = 0 Тогда Возврат; КонецЕсли; - Идентификатор = МассивНовостей.Получить(0).Идентификатор; - ВнешняяСсылка = МассивНовостей.Получить(0).ВнешняяСсылка; - Если Не ПустаяСтрока(ВнешняяСсылка) Тогда - ПерейтиПоНавигационнойСсылке(ВнешняяСсылка); - Возврат; + ТекущееСообщение = МассивСтрок.Получить(0); + + Если ТекущееСообщение.ТипИнформации = "Недоступность" Тогда + + ОткрытьНовость(ТекущееСообщение.Идентификатор); + + ИначеЕсли ТекущееСообщение.ТипИнформации = "УведомлениеОПожелании" Тогда + + ИдентификаторПожелания = Строка(ТекущееСообщение.Идентификатор); + + ИнформационныйЦентрКлиент.ПоказатьПожелание(ИдентификаторПожелания); + КонецЕсли; + - ОткрытьНовость(Идентификатор); - КонецПроцедуры &НаКлиенте -Процедура ВсеНовостиНажатие(Элемент) +Процедура ВсеСообщенияНажатие(Элемент) Закрыть(); ИнформационныйЦентрКлиент.ПоказатьВсеСообщения(); @@ -53,13 +62,13 @@ // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ &НаСервере -Процедура ОткрытьВсеНовости() +Процедура ОткрытьВсеСообщения() - Заголовок = НСтр("ru = 'Новости'"); + Заголовок = НСтр("ru = 'Сообщения'"); СформироватьСписокВсехНовостей(); Элементы.ОбщаяГруппа.ТекущаяСтраница = Элементы.ГруппаНовостей; -КонецПроцедуры +КонецПроцедуры &НаСервере Процедура ОткрытьНовость(Идентификатор) @@ -69,22 +78,22 @@ СсылкаНаДанные = Справочники.ОбщиеДанныеИнформационногоЦентра.НайтиПоРеквизиту("Идентификатор", Идентификатор); Если СсылкаНаДанные.Пустая() Тогда Возврат; - КонецЕсли; + КонецЕсли; - Заголовок = СсылкаНаДанные.Наименование; + Заголовок = СсылкаНаДанные.Наименование; - Вложения = СсылкаНаДанные.Вложения.Получить(); - ТекстHTML = СсылкаНаДанные.ТекстHTML; + Вложения = СсылкаНаДанные.Вложения.Получить(); + ТекстHTML = СсылкаНаДанные.ТекстHTML; Если ТипЗнч(Вложения) = Тип("Структура") Тогда - СтруктруаВложений = Вложения; - Иначе - СтруктруаВложений = Новый Структура; - КонецЕсли; + СтруктураВложений = Вложения; + Иначе + СтруктураВложений = Новый Структура; + КонецЕсли; - Содержание.УстановитьHTML(ТекстHTML, СтруктруаВложений); + Содержание.УстановитьHTML(ТекстHTML, СтруктураВложений); -КонецПроцедуры +КонецПроцедуры &НаСервере Процедура СформироватьСписокВсехНовостей() @@ -97,7 +106,7 @@ Если ВозвращаемаяТаблица.Количество() = 0 Тогда Возврат; - КонецЕсли; + КонецЕсли; ТаблицаВсехНовостей.Загрузить(ВозвращаемаяТаблица); @@ -105,41 +114,41 @@ Для Итерация = 0 По ТаблицаВсехНовостей.Количество() - 1 Цикл - Критичность = ТаблицаВсехНовостей.Получить(Итерация).Критичность; - Наименование = ТаблицаВсехНовостей.Получить(Итерация).Наименование; - Картинка = ?(Критичность > 5, БиблиотекаКартинок.СостояниеОбменаДаннымиОшибка, БиблиотекаКартинок.Информация); + Критичность = ТаблицаВсехНовостей.Получить(Итерация).Критичность; + Наименование = ТаблицаВсехНовостей.Получить(Итерация).Наименование; + Картинка = ?(Критичность > 5, БиблиотекаКартинок.УведомлениеСервиса, БиблиотекаКартинок.СообщениеСервиса); - ГруппаНовости = Элементы.Добавить("ГруппаНовости" + Строка(Итерация), Тип("ГруппаФормы"), ГруппаНовостей); - ГруппаНовости.Вид = ВидГруппыФормы.ОбычнаяГруппа; - ГруппаНовости.ОтображатьЗаголовок = Ложь; - ГруппаНовости.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; - ГруппаНовости.Отображение = ОтображениеОбычнойГруппы.Нет; + ГруппаНовости = Элементы.Добавить("ГруппаНовости" + Строка(Итерация), Тип("ГруппаФормы"), ГруппаНовостей); + ГруппаНовости.Вид = ВидГруппыФормы.ОбычнаяГруппа; + ГруппаНовости.ОтображатьЗаголовок = Ложь; + ГруппаНовости.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; + ГруппаНовости.Отображение = ОтображениеОбычнойГруппы.Нет; - КартинкаНовости = Элементы.Добавить("КартинкаНовости" + Строка(Итерация), Тип("ДекорацияФормы"), ГруппаНовости); - КартинкаНовости.Вид = ВидДекорацииФормы.Картинка; - КартинкаНовости.Картинка = Картинка; - КартинкаНовости.Ширина = 2; - КартинкаНовости.Высота = 1; - КартинкаНовости.РазмерКартинки = РазмерКартинки.Растянуть; + КартинкаНовости = Элементы.Добавить("КартинкаНовости" + Строка(Итерация), Тип("ДекорацияФормы"), ГруппаНовости); + КартинкаНовости.Вид = ВидДекорацииФормы.Картинка; + КартинкаНовости.Картинка = Картинка; + КартинкаНовости.Ширина = 2; + КартинкаНовости.Высота = 1; + КартинкаНовости.РазмерКартинки = РазмерКартинки.Растянуть; - ИмяНовости = Элементы.Добавить("ИмяНовости" + Строка(Итерация), Тип("ДекорацияФормы"), ГруппаНовости); - ИмяНовости.Вид = ВидДекорацииФормы.Надпись; - ИмяНовости.Заголовок = Наименование; - ИмяНовости.РастягиватьПоГоризонтали = Истина; - ИмяНовости.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Центр; - ИмяНовости.ВысотаЗаголовка = 1; + ИмяНовости = Элементы.Добавить("ИмяНовости" + Строка(Итерация), Тип("ДекорацияФормы"), ГруппаНовости); + ИмяНовости.Вид = ВидДекорацииФормы.Надпись; + ИмяНовости.Заголовок = Наименование; + ИмяНовости.РастягиватьПоГоризонтали = Истина; + ИмяНовости.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Центр; + ИмяНовости.ВысотаЗаголовка = 1; ИмяНовости.Гиперссылка = Истина; ИмяНовости.УстановитьДействие("Нажатие", "НажатиеНаНовость"); Если Критичность = 10 Тогда ИмяНовости.Шрифт = Новый Шрифт(, , Истина, , , ); - КонецЕсли; + КонецЕсли; - ТаблицаВсехНовостей.Получить(Итерация).ИмяНовости = "ИмяНовости" + Строка(Итерация); + ТаблицаВсехНовостей.Получить(Итерация).ИмяЭлементаФормы = "ИмяНовости" + Строка(Итерация); - КонецЦикла; + КонецЦикла; -КонецПроцедуры +КонецПроцедуры diff --git a/SSL/src/CommonForms/ОтправкаСообщенияВТехподдержку/Form.form b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтправкаСообщенияВПоддержку/Form.form similarity index 91% rename from SSL/src/CommonForms/ОтправкаСообщенияВТехподдержку/Form.form rename to SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтправкаСообщенияВПоддержку/Form.form index dd75d6bbd..971c96d73 100644 --- a/SSL/src/CommonForms/ОтправкаСообщенияВТехподдержку/Form.form +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтправкаСообщенияВПоддержку/Form.form @@ -4,6 +4,54 @@ ru Сообщение в техподдержку + + Тема + 35 + + System.DefaultGUIFont + true + false + false + false + + true + true + + true + + + Тема + + + ТемаРасширеннаяПодсказка + 39 + Label + true + true + + Left + + + + ТемаКонтекстноеМеню + 36 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + ГруппаКонтента 19 @@ -24,7 +72,7 @@ КоманднаяПанельТекстаРасширеннаяПодсказка - 39 + 43 Label true true @@ -54,7 +102,7 @@ Picture СодержаниеРасширеннаяПодсказка - 40 + 44 Label true true @@ -92,7 +140,7 @@ ГруппаТекстаСообщенияРасширеннаяПодсказка - 38 + 42 Label true true @@ -128,7 +176,7 @@ АдресВозвратаРасширеннаяПодсказка - 42 + 46 Label true true @@ -173,7 +221,7 @@ ГруппаПрикрепленныхФайловРасширеннаяПодсказка - 45 + 49 Label true true @@ -208,7 +256,7 @@ ДекорацияПрикрепитьФайлРасширеннаяПодсказка - 47 + 51 Label true true @@ -251,7 +299,7 @@ НадписьРасширеннаяПодсказка - 48 + 52 Label true true @@ -287,7 +335,7 @@ ГруппаСсылкиДляПрикрепленияФайлаРасширеннаяПодсказка - 46 + 50 Label true true @@ -315,7 +363,7 @@ ГруппаВложенийРасширеннаяПодсказка - 44 + 48 Label true true @@ -344,7 +392,7 @@ ГруппаКонтентаРасширеннаяПодсказка - 37 + 41 Label true true @@ -375,7 +423,7 @@ ФормаОтправитьРасширеннаяПодсказка - 35 + 37 Label true true @@ -401,7 +449,7 @@ ФормаЗакрытьРасширеннаяПодсказка - 36 + 38 Label true true @@ -691,11 +739,15 @@ true + + CommonPicture.СообщениеВТехПоддержку + Отправить + TextPicture Auto Auto
            diff --git a/SSL/src/CommonForms/ОтправкаСообщенияВТехподдержку/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтправкаСообщенияВПоддержку/Module.bsl similarity index 84% rename from SSL/src/CommonForms/ОтправкаСообщенияВТехподдержку/Module.bsl rename to SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтправкаСообщенияВПоддержку/Module.bsl index d747af2ca..d5845e7b2 100644 --- a/SSL/src/CommonForms/ОтправкаСообщенияВТехподдержку/Module.bsl +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ОтправкаСообщенияВПоддержку/Module.bsl @@ -28,11 +28,11 @@ КонецЕсли; КонецЕсли; - Если Параметры.Свойство("Тема") Тогда - Тема = Параметры.Тема; + Если Параметры.Свойство("ОтображатьТему") Тогда + Элементы.Тема.Видимость = Параметры.ОтображатьТему; КонецЕсли; - ИмяФайлаТехническихПараметров = ИнформационныйЦентрСервер.ПолучитьИмяФайлаТехническихПараметровДляСообщенияВтехПоддержку(); + ИмяФайлаТехническихПараметров = ИнформационныйЦентрСервер.ПолучитьИмяФайлаТехническихПараметровДляСообщенияВПоддержку(); КонецПроцедуры @@ -100,9 +100,8 @@ Закрыть(); Иначе ОчиститьСообщения(); - ТекстСообщения = НСтр("ru = 'К сожалению сообщение не было отправлено. - |Повторите попытку позже.'"); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); + ПоказатьСообщениеПользователю(НСтр("ru = 'К сожалению сообщение не было отправлено. + |Повторите попытку позже.'")); КонецЕсли; КонецПроцедуры @@ -144,15 +143,13 @@ Если Не ЗначениеЗаполнено(ОтКого) Тогда ОчиститьСообщения(); - ТекстСообщения = НСтр("ru = 'Адрес ответа не заполнен.'"); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); + ПоказатьСообщениеПользователю(НСтр("ru = 'Адрес ответа не заполнен.'")); Возврат Ложь; КонецЕсли; Если Найти(ОтКого, "@") = 0 Тогда ОчиститьСообщения(); - ТекстСообщения = НСтр("ru = 'Адрес ответа заполнен некорректно.'"); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); + ПоказатьСообщениеПользователю(НСтр("ru = 'Адрес ответа заполнен некорректно.'")); Возврат Ложь; КонецЕсли; @@ -185,10 +182,10 @@ // Проверка на корректность общего размера файлов. Если Не ОбщийРазмерФайловОптималенКлиент(МаксимальныйРазмерФайлов, ВыбранныеФайлы) Тогда - ТекстСообщения = НСтр("ru = 'Размер выбранных файлов превышает предел в %1 Мб'"); - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, МаксимальныйРазмерФайлов); + ТекстПредупреждения = НСтр("ru = 'Размер выбранных файлов превышает предел в %1 Мб'"); + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, МаксимальныйРазмерФайлов); ОчиститьСообщения(); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); + ПоказатьСообщениеПользователю(ТекстПредупреждения); Возврат; КонецЕсли; @@ -256,19 +253,19 @@ // Проверка на корректность общего размера файлов. Если Не ОбщийРазмерФайловОптималенСервер(МаксимальныйРазмерФайлов, НовыйФайл) Тогда - ТекстСообщения = НСтр("ru = 'Размер выбранных файлов превышает предел в %1 Мб'"); - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, МаксимальныйРазмерФайлов); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); + ТекстПредупреждения = НСтр("ru = 'Размер выбранных файлов превышает предел в %1 Мб'"); + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, МаксимальныйРазмерФайлов); + ПоказатьСообщениеПользователю(ТекстПредупреждения); УдалитьИзВременногоХранилища(АдресХранилища); Возврат; КонецЕсли; // Удаление файла "TechnicalParameters.xml", если он имеется Если ВРег(ИмяФайла) = ВРег(ИмяФайлаТехническихПараметров) Тогда - ТекстСообщения = НСтр("ru = 'Файл с именем ''%1'' нельзя прикладывать к сообщению. + ТекстПредупреждения = НСтр("ru = 'Файл с именем ''%1'' нельзя прикладывать к сообщению. |Переименуйте добавляемый файл.'"); - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ИмяФайла); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, ИмяФайла); + ПоказатьСообщениеПользователю(ТекстПредупреждения); УдалитьИзВременногоХранилища(АдресХранилища); Возврат; КонецЕсли; @@ -344,7 +341,7 @@ ОписаниеВызова.Добавить("ПоместитьФайлы"); ПомещаемыеФайлы = Новый Массив; - Описание = Новый ОписаниеПередаваемогоФайла(ВыбранныеФайлы.Получить(Итерация), ""); + Описание = Новый ОписаниеПередаваемогоФайла(ВыбранныеФайлы.Получить(Итерация)); ПомещаемыеФайлы.Добавить(Описание); ОписаниеВызова.Добавить(ПомещаемыеФайлы); @@ -359,17 +356,17 @@ Возврат; КонецЕсли; #КонецЕсли - + Для Итерация = 0 По ВыбранныеФайлы.Количество() - 1 Цикл ВыбранныйФайл = Новый Файл(ВыбранныеФайлы.Получить(Итерация)); // Удаление файла "TechnicalParameters.xml", если он имеется Если ВРег(ВыбранныйФайл.Имя) = ВРег(ИмяФайлаТехническихПараметров) Тогда - ТекстСообщения = НСтр("ru = 'Файл с именем ''%1'' нельзя прикладывать к сообщению. + ТекстПредупреждения = НСтр("ru = 'Файл с именем ''%1'' нельзя прикладывать к сообщению. |Переименуйте добавляемый файл.'"); - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ВыбранныйФайл.Имя); + ТекстПредупреждения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстПредупреждения, ВыбранныйФайл.Имя); ОчиститьСообщения(); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); + ПоказатьСообщениеПользователю(ТекстПредупреждения); Продолжить; КонецЕсли; @@ -379,15 +376,21 @@ СтрокаТаблицы.Размер = ВыбранныйФайл.Размер() / 1024; ПомещаемыеФайлы = Новый Массив; - Описание = Новый ОписаниеПередаваемогоФайла(ВыбранныйФайл.ПолноеИмя, ""); + Описание = Новый ОписаниеПередаваемогоФайла(ВыбранныйФайл.ПолноеИмя); ПомещаемыеФайлы.Добавить(Описание); ПомещенныеФайлы = Новый Массив; - Если Не ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, УникальныйИдентификатор) Тогда + Попытка + Результат = ПоместитьФайлы(ПомещаемыеФайлы, ПомещенныеФайлы, , Ложь, УникальныйИдентификатор); + Исключение + Результат = Ложь; + КонецПопытки; + + Если Не Результат Тогда - ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Ошибка при загрузке файла %1'"), ВыбранныйФайл.Имя); + СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Ошибка при загрузке файла %1'"), ВыбранныйФайл.Имя); ОчиститьСообщения(); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения); + ПоказатьСообщениеПользователю(СообщениеОбОшибке); ВыбираемыеФайлы.Удалить(ВыбираемыеФайлы.Индекс(СтрокаТаблицы)); Продолжить; @@ -426,7 +429,7 @@ ПараметрыСообщения = Новый Структура(); ПараметрыСообщения.Вставить("ОтКого", ОтКого); - ПараметрыСообщения.Вставить("Тема", Тема); + ПараметрыСообщения.Вставить("Тема", ОпределитьТему()); ПараметрыСообщения.Вставить("Текст", Текст); ПараметрыСообщения.Вставить("Вложения", Вложения); ПараметрыСообщения.Вставить("ТипТекста", "HTML"); @@ -438,6 +441,20 @@ КонецФункции +&НаСервере +Функция ОпределитьТему() + + Если Не ПустаяСтрока(Тема) Тогда + Возврат Тема; + КонецЕсли; + + ТекстСообщения = Содержание.ПолучитьТекст(); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "Здравствуйте!", ""); + + Возврат СокрЛП(ТекстСообщения); + +КонецФункции + &НаКлиенте Процедура УстановитьКурсорВШаблонеТекста() @@ -498,3 +515,12 @@ ДобавитьФайлыВСписокОтправляемых(); КонецФункции + +&НаСервере +Функция ПоказатьСообщениеПользователю(Текст) + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = Текст; + Сообщение.Сообщить(); + +КонецФункции \ No newline at end of file diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/Пожелание/Form.form b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/Пожелание/Form.form index 5c765e28a..0b7c39090 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/Пожелание/Form.form +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/Пожелание/Form.form @@ -16,7 +16,7 @@ РейтингРасширеннаяПодсказка - 38 + 41 Label true true @@ -50,7 +50,7 @@ ПроголосоватьРасширеннаяПодсказка - 39 + 42 Label true true @@ -93,7 +93,7 @@ СВашимРасширеннаяПодсказка - 40 + 43 Label true true @@ -134,7 +134,7 @@ СделаноРасширеннаяПодсказка - 41 + 44 Label true true @@ -166,7 +166,7 @@ ГруппаРейтингаРасширеннаяПодсказка - 37 + 40 Label true true @@ -200,7 +200,7 @@ ЗаголовокПожеланияРасширеннаяПодсказка - 44 + 47 Label true true @@ -236,7 +236,7 @@ ПредметРасширеннаяПодсказка - 45 + 48 Label true true @@ -269,7 +269,7 @@ ГруппаЗаголовкаПожеланияРасширеннаяПодсказка - 43 + 46 Label true true @@ -300,7 +300,7 @@ None СодержаниеРасширеннаяПодсказка - 46 + 49 Label true true @@ -341,7 +341,7 @@ ГруппаЗаголовкаИСодержанияРасширеннаяПодсказка - 42 + 45 Label true true @@ -370,7 +370,7 @@ ГруппаЗаголовкаРасширеннаяПодсказка - 36 + 39 Label true true @@ -387,6 +387,90 @@ Auto + + ГруппаОтветаСлужбыПоддержки + 36 + + КомментарийРазработчика + 37 + true + true + + true + + + КомментарийРазработчика + + None + + КомментарийРазработчикаРасширеннаяПодсказка + 52 + Label + true + true + + Left + + + + КомментарийРазработчикаКонтекстноеМеню + 38 + true + + InputField + Enter + true + Left + true + + true + 3 + true + true + true + true + true + + Style.FormBackColor + + + Style.FormBackColor + + Normal + + + true + true + + true + + + <key>ru</key> + <value>Комментарий разработчиков</value> + + true + + ГруппаОтветаСлужбыПоддержкиРасширеннаяПодсказка + 51 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + auto + Auto + Auto + + ГруппаКомментариев 6 @@ -404,10 +488,11 @@ НовыйКомментарий + true None НовыйКомментарийРасширеннаяПодсказка - 50 + 56 Label true true @@ -454,7 +539,7 @@ ДобавитьКомментарийРасширеннаяПодсказка - 54 + 60 Label true true @@ -481,7 +566,7 @@ КоманднаяПанельКомментарияРасширеннаяПодсказка - 53 + 59 Label true true @@ -505,7 +590,7 @@ ГруппаПодвалаДобавленияКомментарияРасширеннаяПодсказка - 52 + 58 Label true true @@ -533,7 +618,7 @@ ГруппаНовогоКомментарияРасширеннаяПодсказка - 49 + 55 Label true true @@ -565,7 +650,7 @@ ГруппаВсехКомментариевРасширеннаяПодсказка - 55 + 61 Label true true @@ -590,7 +675,7 @@ ГруппаКомментариевРасширеннаяПодсказка - 48 + 54 Label true true @@ -622,7 +707,7 @@ ПодвалРасширеннаяПодсказка - 56 + 62 Label true true @@ -740,40 +825,6 @@ true - - ЦветНадписиНравится - - <key>ru</key> - <value>Цвет надписи нравится</value> - - 6 - - Color - - - true - - - true - - - - ЦветНадписиНеНравится - - <key>ru</key> - <value>Цвет надписи не нравится</value> - - 7 - - Color - - - true - - - true - - ИдентификаторПожелания @@ -870,6 +921,24 @@ <itemValueType/> </extInfo> </attributes> + <attributes> + <name>КомментарийРазработчика</name> + <title> + <key>ru</key> + <value>Комментарий разработчика</value> + + 6 + + String + + + + true + + + true + + ДобавитьКомментарий diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/Пожелание/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/Пожелание/Module.bsl index ba4ad79f9..dc092267f 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/Пожелание/Module.bsl +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/Пожелание/Module.bsl @@ -14,10 +14,6 @@ Логин = Строка(ПараметрыСеанса.ТекущийПользователь.ИдентификаторПользователяСервиса); УстановитьПривилегированныйРежим(Ложь); - // Определение цвета - ЦветНадписиНравится = Новый Цвет( 51, 153, 102); - ЦветНадписиНеНравится = Новый Цвет(255, 0, 0); - // Определение идентификатора пожелания Если Не Параметры.Свойство("ИдентификаторПожелания") Тогда Возврат; @@ -32,6 +28,8 @@ Возврат; КонецЕсли; + УстановитьПризнакПросмотраПожелания(); + КонецПроцедуры @@ -79,7 +77,7 @@ Возврат; КонецЕсли; - Результат = ДобавитьКомментрийСервер(); + Результат = ДобавитьКомментарийСервер(); Если Результат Тогда НовыйКомментарий = ""; ПоказатьОповещениеПользователя(НСтр("ru = 'Комментарий добавлен.'")); @@ -118,11 +116,42 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +&НаСервере +Процедура УстановитьПризнакПросмотраПожелания() + + УстановитьПривилегированныйРежим(Истина); + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Идентификатор", Новый УникальныйИдентификатор(ИдентификаторПожелания)); + Запрос.Текст = + "ВЫБРАТЬ + | ОбщиеДанныеИнформационногоЦентра.Ссылка КАК Ссылка + |ИЗ + | Справочник.ОбщиеДанныеИнформационногоЦентра КАК ОбщиеДанныеИнформационногоЦентра + |ГДЕ + | ОбщиеДанныеИнформационногоЦентра.Идентификатор = &Идентификатор"; + Результат = Запрос.Выполнить(); + + Если Результат.Пустой() Тогда + Возврат; + КонецЕсли; + + Выборка = Результат.Выбрать(); + + Пока Выборка.Следующий() Цикл + Запись = РегистрыСведений.ПросмотренныеДанныеИнформационногоЦентра.СоздатьМенеджерЗаписи(); + Запись.Пользователь = ПараметрыСеанса.ТекущийПользователь; + Запись.ДанныеИнформационногоЦентра = Выборка.Ссылка; + Запись.Просмотрены = Истина; + Запись.Записать(); + КонецЦикла; + +КонецПроцедуры + &НаСервере Функция ПроголосоватьЗаПожеланиеСервер(Голос, Идентификатор) Попытка - ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра(); + ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); Возврат ПроксиИнформационногоЦентра.AddVote(Идентификатор, Логин, Голос); Исключение Возврат Ложь @@ -231,7 +260,7 @@ Функция СформироватьЭлементыСтраницы(НомерСтраницы) // Получение объектов пожелания - ОбъектыПожелания = ПолучитьОбъкетыПожелания(); + ОбъектыПожелания = ПолучитьОбъектыПожелания(); Если ОбъектыПожелания = Неопределено Тогда Возврат Ложь; КонецЕсли; @@ -258,10 +287,10 @@ КонецФункции &НаСервере -Функция ПолучитьОбъкетыПожелания() +Функция ПолучитьОбъектыПожелания() Попытка - ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра(); + ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); Результат = ПроксиИнформационногоЦентра.GetContentSuggestion(Логин, ИдентификаторПожелания); Возврат Результат; Исключение @@ -291,15 +320,16 @@ СтруктураПараметров = Новый Структура; - СтруктураПараметров.Вставить("ДатаЗакрытия", ПараметрыПожелания.ClosingDate); - СтруктураПараметров.Вставить("Идентификатор", ПараметрыПожелания.Ref); - СтруктураПараметров.Вставить("ДатаСоздания", ПараметрыПожелания.GenerationDate); - СтруктураПараметров.Вставить("ДатаПлановойРеализации", ПараметрыПожелания.PlanMadeDate); - СтруктураПараметров.Вставить("Рейтинг", ПараметрыПожелания.Rating); - СтруктураПараметров.Вставить("ГолосПользователя", ПараметрыПожелания.Vote); - СтруктураПараметров.Вставить("Статус", ПараметрыПожелания.Status); - СтруктураПараметров.Вставить("Предмет", ПараметрыПожелания.Subject); - СтруктураПараметров.Вставить("Заголовок", ПараметрыПожелания.Title); + СтруктураПараметров.Вставить("ДатаЗакрытия", ПараметрыПожелания.ClosingDate); + СтруктураПараметров.Вставить("Идентификатор", ПараметрыПожелания.Ref); + СтруктураПараметров.Вставить("ДатаСоздания", ПараметрыПожелания.GenerationDate); + СтруктураПараметров.Вставить("ДатаПлановойРеализации", ПараметрыПожелания.PlanMadeDate); + СтруктураПараметров.Вставить("Рейтинг", ПараметрыПожелания.Rating); + СтруктураПараметров.Вставить("ГолосПользователя", ПараметрыПожелания.Vote); + СтруктураПараметров.Вставить("Статус", ПараметрыПожелания.Status); + СтруктураПараметров.Вставить("Предмет", ПараметрыПожелания.Subject); + СтруктураПараметров.Вставить("Заголовок", ПараметрыПожелания.Title); + СтруктураПараметров.Вставить("КомментарийРазработчика", ПараметрыПожелания.developerComment); Возврат СтруктураПараметров; @@ -341,6 +371,11 @@ Элементы.Предмет.Заголовок = СтруктураПожелания.Параметры.Предмет; Элементы.ЗаголовокПожелания.Заголовок = СтруктураПожелания.Параметры.Заголовок; + КомментарийРазработчика = СтруктураПожелания.Параметры.КомментарийРазработчика; + Если ПустаяСтрока(КомментарийРазработчика) Тогда + Элементы.ГруппаОтветаСлужбыПоддержки.Видимость = Ложь; + КонецЕсли; + Если СтруктураПожелания.Параметры.ДатаЗакрытия <> '00010101' Тогда Элементы.Сделано.Видимость = Истина; Элементы.Сделано.Заголовок = "сделано @@ -357,9 +392,9 @@ КонецПроцедуры &НаСервере -Функция ДобавитьКомментрийСервер() +Функция ДобавитьКомментарийСервер() - ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра(); + ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); ФабрикаXDTOВебСервиса = ПроксиИнформационногоЦентра.ФабрикаXDTO; ОписаниеКомментария = ПривестиКОбъектуXDTOКомментарийПользователя(ФабрикаXDTOВебСервиса); @@ -370,7 +405,7 @@ &НаСервере Функция ПривестиКОбъектуXDTOКомментарийПользователя(ФабрикаXDTOВебСервиса) - ТипКомментария = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter", "CommentListElement"); + ТипКомментария = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter_1_0_1_2", "CommentListElement"); ОписаниеКомментария = ФабрикаXDTOВебСервиса.Создать(ТипКомментария); ОписаниеКомментария.Text = НовыйКомментарий; @@ -388,7 +423,7 @@ &НаСервере Процедура СформироватьЭлементыКомментариев(МаксимальноеЧислоНаСтранице, Комментарии) - // Удаление старых эелементов + // Удаление старых элементов УдалитьЭлементы(); ОсновнаяГруппа = Элементы.ГруппаВсехКомментариев; @@ -468,7 +503,7 @@ Функция ПолучитьКомментарии(НомерСтраницы) Попытка - ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра(); + ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); Возврат ПроксиИнформационногоЦентра.GetCommentsSuggestion(ИдентификаторПожелания, НомерСтраницы); Исключение ИмяСобытия = ИнформационныйЦентрСервер.ПолучитьИмяСобытияДляЖурналаРегистрации(); diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ПожеланияПользователей/Form.form b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ПожеланияПользователей/Form.form index 3dbd7b890..abc1db4a3 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ПожеланияПользователей/Form.form +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ПожеланияПользователей/Form.form @@ -2,17 +2,17 @@ <form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:form="http://g5.1c.ru/v8/dt/form"> <title> <key>ru</key> - <value>Предложения, идеи, пожелания</value> + <value>Идеи, пожелания, предложения</value> ГруппаЗаголовковГруппПожеланий 36 - Обсуждаемые - 37 + Новые + 52 <key>ru</key> - <value>Обсуждаемые</value> + <value>Новые</value> true true @@ -20,8 +20,8 @@ true - ОбсуждаемыеРасширеннаяПодсказка - 53 + НовыеРасширеннаяПодсказка + 61 Label true true @@ -30,8 +30,8 @@ - ОбсуждаемыеКонтекстноеМеню - 38 + НовыеКонтекстноеМеню + 53 true Label @@ -43,20 +43,24 @@ НажатиеНаГруппуПожелания true - Right + Left - КоличествоОбсуждаемых - 39 + Популярные + 37 + + <key>ru</key> + <value>Популярные</value> + true true true - КоличествоОбсуждаемыхРасширеннаяПодсказка - 54 + ПопулярныеРасширеннаяПодсказка + 62 Label true true @@ -65,20 +69,20 @@ - КоличествоОбсуждаемыхКонтекстноеМеню - 40 + ПопулярныеКонтекстноеМеню + 38 true Label + 10 true true - - Style.FieldSelectionBackColor - - - true - + + Click + НажатиеНаГруппуПожелания + + true Left @@ -96,7 +100,7 @@ ВыполненныеРасширеннаяПодсказка - 55 + 63 Label true true @@ -119,42 +123,6 @@ НажатиеНаГруппуПожелания true - Right - - - - КоличествоВыполненных - 43 - true - true - - true - - - КоличествоВыполненныхРасширеннаяПодсказка - 56 - Label - true - true - - Left - - - - КоличествоВыполненныхКонтекстноеМеню - 44 - true - - Label - true - true - - Style.FieldSelectionBackColor - - - true - - Left @@ -163,7 +131,7 @@ 45 <key>ru</key> - <value>Мои предложения</value> + <value>Мои идеи</value> true true @@ -172,7 +140,7 @@ МоиПредложенияРасширеннаяПодсказка - 57 + 64 Label true true @@ -186,51 +154,24 @@ true Label + 7 true true + + System.DefaultGUIFont + false + false + false + false + Click НажатиеНаГруппуПожелания true - Right - - - - КоличествоМоихПредложений - 47 - true - true - - true - - - КоличествоМоихПредложенийРасширеннаяПодсказка - 58 - Label - true - true - - Left - - - - КоличествоМоихПредложенийКонтекстноеМеню - 48 - true - - Label - true - true - - Style.FieldSelectionBackColor - - - true - - Left + Center true @@ -244,7 +185,7 @@ ГруппаЗаголовковГруппПожеланийРасширеннаяПодсказка - 52 + 60 Label true true @@ -282,7 +223,7 @@ ПоискРасширеннаяПодсказка - 60 + 66 Label true true @@ -320,7 +261,7 @@ НайтиРасширеннаяПодсказка - 62 + 68 Label true true @@ -347,7 +288,7 @@ ПустаяНадписьРасширеннаяПодсказка - 63 + 69 Label true true @@ -363,6 +304,7 @@ Label true true + true Left @@ -377,7 +319,7 @@ НаписатьПожеланиеРасширеннаяПодсказка - 64 + 70 Label true true @@ -389,7 +331,7 @@ Form.Command.НаписатьПожелание Normal Auto - 10 + 14 true true UserCmds @@ -406,7 +348,117 @@ ГруппаПоискаПожеланияРасширеннаяПодсказка - 59 + 65 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ГруппаКоманднойПанели + 54 + + ВыбратьВсе + 56 + true + true + + true + + + ВыбратьВсе + + None + + OnChange + ВыбратьВсеПриИзменении + + + ВыбратьВсеРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + + ВыбратьВсеКонтекстноеМеню + 57 + true + + CheckBoxField + Enter + true + Left + true + + + + НадписьВыбратьВсе + 58 + + <key>ru</key> + <value>Выбрать все</value> + + true + true + + true + + + НадписьВыбратьВсеРасширеннаяПодсказка + 74 + Label + true + true + + Left + + + + НадписьВыбратьВсеКонтекстноеМеню + 59 + true + + Label + true + true + + System.DefaultGUIFont + false + false + true + false + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Группа командной панели</value> + + + ГруппаКоманднойПанелиРасширеннаяПодсказка + 71 Label true true @@ -437,7 +489,7 @@ ГруппаФильтровРасширеннаяПодсказка - 65 + 75 Label true true @@ -468,7 +520,7 @@ ГруппаПожеланийРасширеннаяПодсказка - 66 + 76 Label true true @@ -499,7 +551,7 @@ ПустаяСтрокаРасширеннаяПодсказка - 68 + 78 Label true true @@ -536,7 +588,7 @@ ПодвалРасширеннаяПодсказка - 69 + 79 Label true true @@ -562,9 +614,10 @@ ru Общий подвал + true ОбщийПодвалРасширеннаяПодсказка - 67 + 77 Label true true @@ -595,7 +648,7 @@ OnCreateAtServer ПриСозданииНаСервере - 60 + 70 DontBlock true true @@ -673,95 +726,6 @@ - - ТаблицаСоответвияПожеланийИНравитсяНеНравится - - <key>ru</key> - <value>Таблица соответвия пожеланий и нравится не нравится</value> - - 6 - - 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 - - - Логин @@ -780,157 +744,6 @@ <common>true</common> </edit> </attributes> - <attributes> - <name>ПопулярныеПожелания</name> - <title> - <key>ru</key> - <value>Популярные пожелания</value> - - 10 - - ValueTable - - - true - - - true - - - Идентификатор - - <key>ru</key> - <value>Идентификатор</value> - - 1 - - String - - - - true - - - true - - - - ДатаСоздания - - <key>ru</key> - <value>Дата создания</value> - - 2 - - Date - - Date - - - - true - - - true - - - - Рейтинг - - <key>ru</key> - <value>Рейтинг</value> - - 3 - - Number - - 10 - - - - 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 - - ValueTree - - - true - - - true - - - - - ПопулярныеПожелания.ДеревоЭлементов - - - ИмяЭлементаФормы - - <key>ru</key> - <value>Имя элемента формы</value> - - 1 - - String - - - - true - - - true - - - - ДеревоЭлементовПожеланий @@ -1224,11 +1037,24 @@ <itemValueType/> </extInfo> </attributes> + <attributes> + <name>ВыбратьВсе</name> + <id>6</id> + <valueType> + <types>Boolean</types> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + </attributes> <formCommands> <name>НайтиПожелания</name> <title> <key>ru</key> - <value>Найти предложение</value> + <value>Найти</value> 2 @@ -1250,7 +1076,7 @@ НаписатьПожелание <key>ru</key> - <value>Написать</value> + <value>Добавить идею</value> 1 diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ПожеланияПользователей/Module.bsl b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ПожеланияПользователей/Module.bsl index 782f76346..4593a7323 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ПожеланияПользователей/Module.bsl +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/Forms/ПожеланияПользователей/Module.bsl @@ -14,10 +14,12 @@ Логин = Строка(ПараметрыСеанса.ТекущийПользователь.ИдентификаторПользователяСервиса); УстановитьПривилегированныйРежим(Ложь); + ВыбратьВсе = Истина; + ЦветГиперссылки = Новый Цвет(24, 52, 161); // Формирование элементов страницы - Результат = СформироватьЭлементыСтраницы("Popular", 1); + Результат = СформироватьЭлементыСтраницы("New", 1); Если Не Результат Тогда ВызватьИсключение НСтр("ru = 'Сервис по отображению пожеланий пользователей временно не доступен. |Пожалуйста, повторите попытку позже'"); @@ -94,6 +96,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ВыбратьВсеПриИзменении(Элемент) + + ПриИзмененииВыбратьВсе(); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ @@ -120,8 +129,8 @@ &НаКлиенте Процедура НаписатьПожелание(Команда) - Параметрыформы = Новый Структура("Логин", Логин); - ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.ДобавлениеПожелания", Параметрыформы); + ПараметрыФормы = Новый Структура("Логин", Логин); + ОткрытьФорму("Обработка.ИнформационныйЦентр.Форма.ДобавлениеПожелания", ПараметрыФормы); КонецПроцедуры @@ -129,6 +138,24 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +&НаСервере +Процедура ПриИзмененииВыбратьВсе() + + Для Каждого Фильтр из СписокФильтров Цикл + Фильтр.Выбран = ВыбратьВсе; + КонецЦикла; + + // Формирование элементов страницы + Результат = СформироватьЭлементыСтраницы(ТекущаяГруппа, 1, Ложь); + Если Не Результат Тогда + ВызватьИсключение НСтр("ru = 'Сервис по отображению пожеланий пользователей временно не доступен. + |Пожалуйста, повторите попытку позже'"); + Отказ = Истина; + Возврат; + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ВыполнитьДействиеПоГолосованию(ИмяКоманды) @@ -143,13 +170,11 @@ ГолосДобавлен = ПроголосоватьЗаПожеланиеСервер(1, ИдентификаторПожелания); Если Не ГолосДобавлен Тогда - // Отход от стандарта "Сообщения пользователю" Предупреждение(НСтр("ru = 'К сожалению Ваш голос не добавлен. |Попробуйте проголосовать позднее.")); Возврат; КонецЕсли; - // Отход от стандарта "Сообщения пользователю" ПоказатьОповещениеПользователя(НСтр("ru = 'Ваш голос принят.'")); ПараметрыФормы = Новый Структура("Логин, ИдентификаторПожелания", Логин, ИдентификаторПожелания); @@ -195,7 +220,7 @@ КонецЕсли; // Определение видимости гиперссылок фильтрации - СформироватьЗаголовкиГруппПожеланий(ГруппаПожеланий.ParametersForForm, ТипГруппы); + СформироватьЗаголовкиГруппПожеланий(ГруппаПожеланий, ТипГруппы); // Формирование фильтров СформироватьФильтры(ГруппаПожеланий.ParametersForForm.ObjectSuggestion.ObjectSuggestion, СбрасыватьФильтры); @@ -227,17 +252,17 @@ СброситьПараметрыДляЭлементовЗаголовковГрупп(); Если ТипГруппы = "Popular" Тогда - Элементы.Обсуждаемые.Гиперссылка = Ложь; - Элементы.Обсуждаемые.Шрифт = Новый Шрифт(,, Истина); - Элементы.КоличествоОбсуждаемых.ЦветТекста = Новый Цвет; + Элементы.Популярные.Гиперссылка = Ложь; + Элементы.Популярные.Шрифт = Новый Шрифт(,, Истина); ИначеЕсли ТипГруппы = "My" Тогда - Элементы.МоиПредложения.Гиперссылка = Ложь; - Элементы.МоиПредложения.Шрифт = Новый Шрифт(,, Истина); - Элементы.КоличествоМоихПредложений.ЦветТекста = Новый Цвет; + Элементы.МоиПредложения.Гиперссылка = Ложь; + Элементы.МоиПредложения.Шрифт = Новый Шрифт(,, Истина); + ИначеЕсли ТипГруппы = "New" Тогда + Элементы.Новые.Гиперссылка = Ложь; + Элементы.Новые.Шрифт = Новый Шрифт(,, Истина); ИначеЕсли ТипГруппы = "Made" Тогда - Элементы.Выполненные.Гиперссылка = Ложь; - Элементы.Выполненные.Шрифт = Новый Шрифт(,, Истина); - Элементы.КоличествоВыполненных.ЦветТекста = Новый Цвет; + Элементы.Выполненные.Гиперссылка = Ложь; + Элементы.Выполненные.Шрифт = Новый Шрифт(,, Истина); КонецЕсли; КонецПроцедуры @@ -245,21 +270,15 @@ &НаСервере Процедура СброситьПараметрыДляЭлементовЗаголовковГрупп() - Элементы.Обсуждаемые.Гиперссылка = Истина; - Элементы.Выполненные.Гиперссылка = Истина; - Элементы.МоиПредложения.Гиперссылка = Истина; + Элементы.Популярные.Гиперссылка = Истина; + Элементы.Выполненные.Гиперссылка = Истина; + Элементы.МоиПредложения.Гиперссылка = Истина; + Элементы.Новые.Гиперссылка = Истина; - Элементы.Обсуждаемые.Шрифт = Новый Шрифт(); - Элементы.Выполненные.Шрифт = Новый Шрифт(); - Элементы.МоиПредложения.Шрифт = Новый Шрифт(); - - Элементы.КоличествоОбсуждаемых.Заголовок = ""; - Элементы.КоличествоВыполненных.Заголовок = ""; - Элементы.КоличествоМоихПредложений.Заголовок = ""; - - Элементы.КоличествоОбсуждаемых.ЦветТекста = ЦветГиперссылки; - Элементы.КоличествоВыполненных.ЦветТекста = ЦветГиперссылки; - Элементы.КоличествоМоихПредложений.ЦветТекста = ЦветГиперссылки; + Элементы.Популярные.Шрифт = Новый Шрифт(); + Элементы.Выполненные.Шрифт = Новый Шрифт(); + Элементы.МоиПредложения.Шрифт = Новый Шрифт(); + Элементы.Новые.Шрифт = Новый Шрифт(); КонецПроцедуры @@ -469,15 +488,14 @@ Процедура СоздатьЭлементыПодвала(МассивИменСсылок) Если МассивИменСсылок.Количество() = 0 Тогда - ИмяОчередногоЭлемента = "пусто"; - Элемент = Элементы.Добавить(ИмяОчередногоЭлемента, Тип("ДекорацияФормы"), Элементы.Подвал); - Элемент.Вид = ВидДекорацииФормы.Надпись; - Элемент.Заголовок = ""; - Элемент.РастягиватьПоВертикали = Истина; - СписокЭлементовПодвала.Добавить(ИмяОчередногоЭлемента); + Элементы.Подвал.Видимость = Ложь; Возврат; КонецЕсли; + Элементы.Подвал.Видимость = Истина; + + Элементы.ОбщийПодвал.Отображение = ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыЛиния(); + ИмяОчередногоЭлемента = "Пусто1"; Элемент = Элементы.Добавить(ИмяОчередногоЭлемента, Тип("ДекорацияФормы"), Элементы.Подвал); Элемент.Вид = ВидДекорацииФормы.Надпись; @@ -497,6 +515,7 @@ Элемент = Элементы.Добавить(ИмяОчередногоЭлемента, Тип("ДекорацияФормы"), Элементы.Подвал); Элемент.Вид = ВидДекорацииФормы.Надпись; Элемент.Заголовок = Строка(ИмяСсылки); + Элемент.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Центр; СписокЭлементовПодвала.Добавить(ИмяОчередногоЭлемента); Продолжить; КонецЕсли; @@ -506,7 +525,9 @@ Элемент = Элементы.Добавить(ИмяОчередногоЭлемента, Тип("ДекорацияФормы"), Элементы.Подвал); Элемент.Вид = ВидДекорацииФормы.Надпись; Элемент.Заголовок = Строка(ИмяСсылки); - Элемент.Гиперссылка = Истина; + Элемент.Гиперссылка = Истина; + Элемент.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Центр; + Элемент.Шрифт = Новый Шрифт( , , , , Ложь); Элемент.УстановитьДействие("Нажатие", "НажатиеНаНомерСтраницы"); СписокЭлементовПодвала.Добавить(ИмяОчередногоЭлемента); Продолжить; @@ -516,6 +537,9 @@ Элемент = Элементы.Добавить(ИмяОчередногоЭлемента, Тип("ДекорацияФормы"), Элементы.Подвал); Элемент.Вид = ВидДекорацииФормы.Надпись; Элемент.Заголовок = Строка(ИмяСсылки); + Элемент.ВертикальноеПоложение = ВертикальноеПоложениеЭлемента.Центр; + Элемент.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; + Элемент.Шрифт = Новый Шрифт( , , , , Ложь); СписокЭлементовПодвала.Добавить(ИмяОчередногоЭлемента); Если Число(ИмяСсылки) = ТекущаяСтраница Тогда @@ -544,19 +568,29 @@ // Текущая страница пожеланий ТекущаяСтраница = ГруппаПожеланий.CurrentPage; + КоличествоПожеланий = ГруппаПожеланий.AmountSuggestion; + МаксимальноеКоличество = ГруппаПожеланий.MaxAmountOnPage; + + КоличествоСтраниц = Цел(КоличествоПожеланий / МаксимальноеКоличество) + ?((КоличествоПожеланий % МаксимальноеКоличество) > 0, 1, 0); + + КоличествоСтраницСбоку = 3; + + НачалоИтерации = ?((ТекущаяСтраница - КоличествоСтраницСбоку) >= 1, ТекущаяСтраница - КоличествоСтраницСбоку, 1); + КонецИтерации = ?((ТекущаяСтраница + КоличествоСтраницСбоку) >= КоличествоСтраниц, КоличествоСтраниц, ТекущаяСтраница + КоличествоСтраницСбоку); + Если ТекущаяСтраница > 1 Тогда МассивИменСсылок.Добавить(НСтр("ru = 'Предыдущие'")); КонецЕсли; - Если ТекущаяСтраница >=1 Тогда - МассивИменСсылок.Добавить(ТекущаяСтраница); - КонецЕсли; + Для Итерация = НачалоИтерации По КонецИтерации Цикл + МассивИменСсылок.Добавить(Строка(Итерация)); + КонецЦикла; - Если ГруппаПожеланий.Suggestions.Количество() > ГруппаПожеланий.MaxAmountOnPage Тогда + Если ТекущаяСтраница < КонецИтерации Тогда МассивИменСсылок.Добавить(НСтр("ru = 'Следующие'")); КонецЕсли; - Если МассивИменСсылок.Количество() = 1 Тогда + Если МассивИменСсылок.Количество() = 1 и ТекущаяСтраница = 1 Тогда МассивИменСсылок.Очистить(); КонецЕсли; @@ -567,10 +601,10 @@ &НаСервере Функция ПолучитьСписокПредметовПожеланий(ФабрикаXDTOВебСервиса) - ТипСпискаГрупп = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter", "ObjectSuggestionList"); + ТипСпискаГрупп = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter_1_0_1_2", "ObjectSuggestionList"); ОписаниеСпискаГрупп = ФабрикаXDTOВебСервиса.Создать(ТипСпискаГрупп); - ТипГруппы = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter", "ObjectSuggestionListElement"); + ТипГруппы = ФабрикаXDTOВебСервиса.Тип("http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter_1_0_1_2", "ObjectSuggestionListElement"); Для Каждого ЭлементСписка из СписокФильтров Цикл @@ -597,7 +631,7 @@ Функция ПолучитьГруппуПожеланий(ТипГруппы, НомерСтраницы, СбрасыватьФильтры) Попытка - Прокси = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра(); + Прокси = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); Предметы = ПолучитьСписокПредметовПожеланий(Прокси.ФабрикаXDTO); Возврат Прокси.GetGroupSuggestion(ТипГруппы, НомерСтраницы, Логин, Предметы, Поиск, СбрасыватьФильтры); Исключение @@ -630,7 +664,7 @@ КонецПроцедуры &НаСервере -Процедура СформироватьЭлементыДляПожеланий(МаксимальноеЧислоНастранице, Пожелания) +Процедура СформироватьЭлементыДляПожеланий(МаксимальноеЧислоНаСтранице, Пожелания) // Удаление старых элементов формы УдалитьЭлементы(); @@ -639,7 +673,6 @@ УдалитьКоманды(); ТаблицаПожеланий.Очистить(); - ТаблицаСоответвияПожеланийИНравитсяНеНравится.Очистить(); ОсновнаяГруппа = Элементы.ГруппаПожеланий; @@ -649,7 +682,7 @@ Итерация = Итерация + 1; - Если Итерация > МаксимальноеЧислоНастранице Тогда + Если Итерация > МаксимальноеЧислоНаСтранице Тогда Прервать; КонецЕсли; @@ -695,7 +728,7 @@ Функция ПроголосоватьЗаПожеланиеСервер(Голос, Идентификатор) Попытка - ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра(); + ПроксиИнформационногоЦентра = ИнформационныйЦентрСервер.ПолучитьПроксиИнформационногоЦентра_1_0_1_2(); Возврат ПроксиИнформационногоЦентра.AddVote(Идентификатор, Логин, Голос); Исключение Возврат Ложь @@ -711,7 +744,7 @@ ГруппаПожелания.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаПожелания.ОтображатьЗаголовок = Ложь; ГруппаПожелания.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; - ГруппаПожелания.Отображение = ОтображениеОбычнойГруппы.Линия; + ГруппаПожелания.Отображение = ОбщегоНазначенияКлиентСервер.ОтображениеОбычнойГруппыЛиния(); ГруппаПожелания.РастягиватьПоГоризонтали = Истина; СтрокаДерева = ДеревоЭлементов.Строки.Добавить(); @@ -754,16 +787,16 @@ Если Пожелание.ClosingDate <> '00010101' Тогда - ИмяЭлементаВыполненно = "Выполненно" + Строка(Итерация); - ИмяЭлементаВыполненно = Элементы.Добавить(ИмяЭлементаВыполненно, Тип("ДекорацияФормы"), ГруппаРейтинга); - ИмяЭлементаВыполненно.Заголовок = НСтр("ru = 'сделано + ИмяЭлементаВыполнено = "Выполнено" + Строка(Итерация); + ИмяЭлементаВыполнено = Элементы.Добавить(ИмяЭлементаВыполнено, Тип("ДекорацияФормы"), ГруппаРейтинга); + ИмяЭлементаВыполнено.Заголовок = НСтр("ru = 'сделано |'") + Строка(Формат(Пожелание.ClosingDate, "ДЛФ=D")); - ИмяЭлементаВыполненно.Высота = 2; - ИмяЭлементаВыполненно.Ширина = ШиринаЭлементовГруппы; - ИмяЭлементаВыполненно.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; + ИмяЭлементаВыполнено.Высота = 2; + ИмяЭлементаВыполнено.Ширина = ШиринаЭлементовГруппы; + ИмяЭлементаВыполнено.ГоризонтальноеПоложение = ГоризонтальноеПоложениеЭлемента.Центр; СтрокаДерева = СтрокаГруппы.Строки.Добавить(); - СтрокаДерева.ИмяЭлемента = ИмяЭлементаВыполненно; + СтрокаДерева.ИмяЭлемента = ИмяЭлементаВыполнено; Возврат; @@ -892,6 +925,8 @@ Если Элемент.Имя = "МоиПредложения" Тогда ТипГруппы = "My"; + ИначеЕсли Элемент.Имя = "Новые" Тогда + ТипГруппы = "New"; ИначеЕсли Элемент.Имя = "Выполненные" Тогда ТипГруппы = "Made"; Иначе @@ -899,7 +934,7 @@ КонецЕсли; - Результат = СформироватьЭлементыСтраницы(ТипГруппы, 1); + Результат = СформироватьЭлементыСтраницы(ТипГруппы, 1, Ложь); Если Не Результат Тогда Предупреждение(НСтр("ru = 'Сервис по отображению пожеланий пользователей временно не доступен. |Пожалуйста, повторите попытку позже'")); diff --git a/SSL/src/DataProcessors/ИнформационныйЦентр/ИнформационныйЦентр.mdo b/SSL/src/DataProcessors/ИнформационныйЦентр/ИнформационныйЦентр.mdo index e2ea06724..4a667044d 100644 --- a/SSL/src/DataProcessors/ИнформационныйЦентр/ИнформационныйЦентр.mdo +++ b/SSL/src/DataProcessors/ИнформационныйЦентр/ИнформационныйЦентр.mdo @@ -9,7 +9,16 @@ ru Информационный центр - DataProcessor.ИнформационныйЦентр.Form.ДобавлениеКомментария + DataProcessor.ИнформационныйЦентр.Form.ИнформационныйЦентр + + ВзаимодействияПоОбращению + + ru + Взаимодействия по обращению + + PersonalComputer + MobileDevice + ДобавлениеКомментария @@ -46,6 +55,42 @@ PersonalComputer MobileDevice + + ОбращенияПользователя + + ru + Обращения пользователя + + PersonalComputer + MobileDevice + + + ОбсужденияНаФоруме + + ru + Обсуждения на форуме + + PersonalComputer + MobileDevice + + + ОтображениеСообщений + + ru + Отображение сообщений + + PersonalComputer + MobileDevice + + + ОтправкаСообщенияВПоддержку + + ru + Отправка сообщения в поддержку + + PersonalComputer + MobileDevice + Пожелание diff --git a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Form.form b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Form.form index adaa0871f..addcd398e 100644 --- a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Form.form @@ -200,6 +200,10 @@ -1 Left + + OnOpen + ПриОткрытии + OnCreateAtServer ПриСозданииНаСервере @@ -747,6 +751,23 @@ + + ОтсутствуютДанныеДляОтображения + + <key>ru</key> + <value>Отсутствуют данные для отображения</value> + + 8 + + Boolean + + + true + + + true + + Назад diff --git a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Module.bsl index 99c219a37..1ec339217 100644 --- a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Forms/Форма/Module.bsl @@ -28,11 +28,24 @@ ПоказыватьПриНачалеРаботы = Истина; КонецЕсли; + ОтсутствуютДанныеДляОтображения = Ложь; + Если НЕ ЗаполнитьКоманды() ИЛИ НЕ ПодготовитьДанныеФормы() Тогда - Отказ = Истина; - Возврат; + + ОтсутствуютДанныеДляОтображения = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ОтсутствуютДанныеДляОтображения Тогда + Отказ = Истина; + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -338,12 +351,11 @@ ДвоичныеДанные.Записать(КаталогВременныхФайлов + "tmp.zip"); Исключение ЗаписьЖурналаРегистрации( - НСтр("ru = 'Стандартные подсистемы. Дополнительная информация'"), + НСтр("ru = 'Стандартные подсистемы. Дополнительная информация'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Ошибка, , , - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; diff --git a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Help/ru.html b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Help/ru.html index 7bd27b355..6b1a09ea9 100644 --- a/SSL/src/DataProcessors/ИнформацияПриЗапуске/Help/ru.html +++ b/SSL/src/DataProcessors/ИнформацияПриЗапуске/Help/ru.html @@ -1,7 +1,7 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В этой форме выводится справочная, нормативная и другая информация, поставляемая в составе программы.</p> <p>Для открытия формы откройте <strong>Рабочий стол</strong> и вызовите команду "<strong>Информация при запуске</strong>" из группы "<strong>Информация</strong>" панели действий. При открытии сразу показывается одна из страниц дополнительной информации.</p> <p>В командной панели формы размещены навигационные кнопки "<strong>Назад</strong>" и "<strong>Вперед</strong>", с помощью которых осуществляется переход по уже просмотренным страницам, а также пункты меню, соответствующие названиям разделов дополнительной информации. При выборе в командной панели раздела открывается список страниц дополнительной информации, относящихся к данному разделу. Страница показывается в форме при выборе пункта меню с названием страницы.</p> <p>Текст страницы может содержать ссылки на другие страницы дополнительной информации (внутренние ссылки), а также ссылки на разделы сайтов, размещенных в сети Интернет (внешние ссылки). Для перехода по внешним ссылкам необходимо, чтобы компьютер имел доступ в сеть Интернет.</p> -<p>Для пользователей конфигураций ПРОФ-версий доступна настройка показа дополнительной информации при начале работы программы. Если дополнительная информация показывается в режиме рабочего стола, то в командной панели размещается флажок "<strong>Показывать при начале работы</strong>". Если снять его установку, то дополнительная информация не будет показываться при начале работы.</p> +<p>Для пользователей конфигураций ПРОФ-версий доступна настройка показа дополнительной информации при начале работы программы. Если дополнительная информация показывается в режиме рабочего стола, то в командной панели размещается флажок "<strong>Показывать при начале работы</strong>". Если снять его установку, то дополнительная информация не будет показываться при начале работы. Флажок "<strong>Показывать при начале работы</strong>" автоматически сбрасывается два раза в месяц и после обновления версии программы.</p> <p>Для пользователей базовых версий конфигураций показ дополнительной информации при начале работы программы выполняется всегда.</p></body></html> \ No newline at end of file diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/Forms/Форма/Form.form b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/Forms/Форма/Form.form new file mode 100644 index 000000000..643681dc9 --- /dev/null +++ b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/Forms/Форма/Form.form @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:form="http://g5.1c.ru/v8/dt/form"> + <autoCommandBar> + <name>ФормаКоманднаяПанель</name> + <id>-1</id> + <horizontalAlign>Left</horizontalAlign> + <autoFill>true</autoFill> + </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> + <windowOpeningMode>DontBlock</windowOpeningMode> + <saveWindowSettings>true</saveWindowSettings> + <autoTitle>true</autoTitle> + <autoUrl>true</autoUrl> + <group>Vertical</group> + <autoFillCheck>true</autoFillCheck> + <allowFormCustomize>true</allowFormCustomize> + <enabled>true</enabled> + <verticalScroll>UseIfNecessary</verticalScroll> + <showTitle>auto</showTitle> + <showCloseButton>true</showCloseButton> + <attributes> + <name>Объект</name> + <id>1</id> + <valueType> + <types>String</types> + <stringQualifiers/> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <main>true</main> + </attributes> + <commandInterface> + <navigationPanel/> + <commandBar/> + </commandInterface> +</form:Form> diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/Forms/Форма/Module.bsl new file mode 100644 index 000000000..60eabfdab --- /dev/null +++ b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/Forms/Форма/Module.bsl @@ -0,0 +1,11 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl index 2845ef7b4..fb9f1d887 100644 --- a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl +++ b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/ObjectModule.bsl @@ -157,7 +157,7 @@ Перем ПолеВыгружаемыеПоСсылкеОбъектыМетаданных; // (кэш) Соответствие: Ключ - ОбъектМетаданных; Значение - признак выгрузки объекта по ссылке: Истина - надо выгружать объект по ссылке, Ложь - не надо. -Перем ПолеПравилаРегистрацииОбъектов; // (кэш) ТаблицаЗначений - содержит правила регистрации объектов (правила только с видом "ФРО" и для текущего плана обмена). +Перем ПолеПравилаРегистрацииОбъектов; // (кэш) ТаблицаЗначений - содержит правила регистрации объектов (правила только с видом "Фильтр разрешенных объектов" и для текущего плана обмена). Перем ПолеИмяПланаОбмена; @@ -165,8 +165,6 @@ Перем ПолеВерсияФорматаВходящегоСообщенияОбмена; -Перем ПолеИспользуетсяВерсионирование; - //////////////////////////////////////////////////////////////////////////////// // ЭКСПОРТНЫЕ СВОЙСТВА @@ -452,7 +450,6 @@ ПолеДокументыДляОтложенногоПроведения.Колонки.Добавить("ДокументСсылка"); ПолеДокументыДляОтложенногоПроведения.Колонки.Добавить("ДатаДокумента", одОписаниеТипа("Дата")); ПолеДокументыДляОтложенногоПроведения.Колонки.Добавить("ДокументПроведенУспешно", одОписаниеТипа("Булево")); - ПолеДокументыДляОтложенногоПроведения.Колонки.Добавить("ЭтоКоллизия", одОписаниеТипа("Число")); КонецЕсли; @@ -466,7 +463,6 @@ // инициализируем таблицу для отложенной записи объектов ПолеОбъектыДляОтложеннойЗаписи = Новый ТаблицаЗначений; ПолеОбъектыДляОтложеннойЗаписи.Колонки.Добавить("ОбъектСсылка"); - ПолеОбъектыДляОтложеннойЗаписи.Колонки.Добавить("ЭтоКоллизия", одОписаниеТипа("Число")); ПолеОбъектыДляОтложеннойЗаписи.Колонки.Добавить("ОбъектЗаписанУспешно", одОписаниеТипа("Булево")); КонецЕсли; @@ -631,23 +627,6 @@ Возврат ПолеВерсияФорматаВходящегоСообщенияОбмена; КонецФункции -// Функция-свойство: флаг использования версионирования -// -// Тип: Булево -// -Функция ИспользуетсяВерсионирование() - - Если ТипЗнч(ПолеИспользуетсяВерсионирование) <> Тип("Булево") Тогда - - ПолеИспользуетсяВерсионирование = Ложь; - ОбменДаннымиСервер.ПриОпределенииИспользованияВерсионирования(ПолеИспользуетсяВерсионирование); - - КонецЕсли; - - Возврат ПолеИспользуетсяВерсионирование; - -КонецФункции - //////////////////////////////////////////////////////////////////////////////// // ФУНКЦИИ КЕШИРОВАНИЯ @@ -798,6 +777,7 @@ ПолеСозданныеПриВыгрузкеОбъекты = Неопределено; ПолеВыгружаемыеПоСсылкеОбъектыМетаданных = Неопределено; ОбработкаВыгрузки = Неопределено; + ФайлОбмена = Неопределено; КонецПроцедуры @@ -810,180 +790,101 @@ // Процедура ВыполнитьЗагрузкуДанных() Экспорт - РежимЗагрузкиДанных = "ЗагрузкаВИнформационнуюБазу"; - - ПолеСтрокаСообщенияОбОшибке = ""; - ПолеСостояниеОбменаДанными = Неопределено; - ПолеРезультатВыполненияОбмена = Неопределено; - ПолеСоответствиеТиповДанныхДляЗагрузки = Неопределено; - ПолеСчетчикЗагруженныхОбъектов = Неопределено; - ПолеДокументыДляОтложенногоПроведения = Неопределено; - ПолеОбъектыДляОтложеннойЗаписи = Неопределено; - ПолеСвойстваУзлаПланаОбмена = Неопределено; - ПолеВерсияФорматаВходящегоСообщенияОбмена = Неопределено; - ПолеРежимСовместимостиСБСП20 = Неопределено; - - ГлобальныйСтекНеЗаписанныхОбъектов = Новый Соответствие; - НомерПоследнегоПоискаПоСсылке = 0; - - ИнициализироватьМенеджерыИСообщения(); - - УстановитьФлагОшибки(Ложь); - - ИнициализироватьКомментарииПриВыгрузкеИЗагрузкеДанных(); - - ИнициализироватьВедениеПротоколаОбмена(); - - ИнформацияОПользовательскихПоляхПоискаПриЗагрузкеДанных = Новый Соответствие; - - СоответствиеДопПараметровПоиска = Новый Соответствие; - СоответствиеПравилКонвертации = Новый Соответствие; - - КоличествоВыполненныхОтложенныхДвиженийДокументов = 0; - - Если ПустаяСтрока(ИмяФайлаОбмена) Тогда - ЗаписатьВПротоколВыполнения(15); - ЗавершитьВедениеПротоколаОбмена(); - Возврат; - КонецЕсли; - - Если ПродолжитьПриОшибке Тогда - ИспользоватьТранзакции = Ложь; - КонецЕсли; - - Если КоличествоОбработанныхОбъектовДляОбновленияСтатуса = 0 Тогда - КоличествоОбработанныхОбъектовДляОбновленияСтатуса = 100; - КонецЕсли; - - // выполняем очистку правил обмена - Правила.Очистить(); - ТаблицаПравилКонвертации.Очистить(); - - // открываем файл сообщения обмена - // зачитываем правила обмена - ОткрытьФайлОбмена(); - - Если ФлагОшибки() Тогда - ЗавершитьВедениеПротоколаОбмена(); - Возврат; - КонецЕсли; - - ИнициализироватьОбработки(); - - // {Обработчик: ПередЗагрузкойДанных} Начало - Отказ = Ложь; - - Если Не ПустаяСтрока(Конвертация.ПередЗагрузкойДанных) Тогда - - Попытка - - Если РежимСовместимостиСБСП20() Тогда - - Выполнить(Конвертация.ПередЗагрузкойДанных); - - Иначе - - ВыполнитьОбработчик_Конвертация_ПередЗагрузкойДанных(ФайлОбмена, Отказ); - - КонецЕсли; - - Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(22, ОписаниеОшибки(), НСтр("ru = 'ПередЗагрузкойДанных (конвертация)'")); - Отказ = Истина; - КонецПопытки; - - КонецЕсли; - - Если Отказ Тогда // Отказ от загрузки данных - ЗавершитьВедениеПротоколаОбмена(); - ФайлОбмена.Закрыть(); - Возврат; - КонецЕсли; - // {Обработчик: ПередЗагрузкойДанных} Окончание - - // отрабатываем правила очистки данных - ОбработатьПравилаОчистки(ТаблицаПравилОчистки.Строки); - - Если ИспользоватьТранзакции Тогда - НачатьТранзакцию(); - КонецЕсли; - + ЧтениеСообщения = Неопределено; Попытка - ПроизвестиЧтениеДанных(); - Исключение - СтрокаСообщения = НСтр("ru = 'Ошибка при загрузке данных: %1'"); - СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ОписаниеОшибки()); - ЗаписатьВПротоколВыполнения(СтрокаСообщения,,,,,Истина); - КонецПопытки; - - // отложенная запись того, что не записали - ПровестиЗаписьНеЗаписанныхОбъектов(); - - Если ИспользоватьТранзакции Тогда + РежимЗагрузкиДанных = "ЗагрузкаВИнформационнуюБазу"; - Если ФлагОшибки() Тогда - ОтменитьТранзакцию(); - Иначе - ЗафиксироватьТранзакцию(); - Конецесли; + ПолеСтрокаСообщенияОбОшибке = ""; + ПолеСостояниеОбменаДанными = Неопределено; + ПолеРезультатВыполненияОбмена = Неопределено; + ПолеСоответствиеТиповДанныхДляЗагрузки = Неопределено; + ПолеСчетчикЗагруженныхОбъектов = Неопределено; + ПолеДокументыДляОтложенногоПроведения = Неопределено; + ПолеОбъектыДляОтложеннойЗаписи = Неопределено; + ПолеСвойстваУзлаПланаОбмена = Неопределено; + ПолеВерсияФорматаВходящегоСообщенияОбмена = Неопределено; + ПолеРежимСовместимостиСБСП20 = Неопределено; + ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Ложь; + ЕстьИнформацияОРегистрацииОбъекта = Ложь; - КонецЕсли; - - ФайлОбмена.Закрыть(); - - // Обработчик ПослеЗагрузкиДанных - Если Не ФлагОшибки() Тогда + ГлобальныйСтекНеЗаписанныхОбъектов = Новый Соответствие; + НомерПоследнегоПоискаПоСсылке = 0; - Если Не ПустаяСтрока(Конвертация.ПослеЗагрузкиДанных) Тогда - - Попытка - - Если РежимСовместимостиСБСП20() Тогда - - Выполнить(Конвертация.ПослеЗагрузкиДанных); - - Иначе - - ВыполнитьОбработчик_Конвертация_ПослеЗагрузкиДанных(); - - КонецЕсли; - - Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(23, ОписаниеОшибки(), НСтр("ru = 'ПослеЗагрузкиДанных (конвертация)'")); - КонецПопытки; - + ИнициализироватьМенеджерыИСообщения(); + + УстановитьФлагОшибки(Ложь); + + ИнициализироватьКомментарииПриВыгрузкеИЗагрузкеДанных(); + + ИнициализироватьВедениеПротоколаОбмена(); + + ИнформацияОПользовательскихПоляхПоискаПриЗагрузкеДанных = Новый Соответствие; + + СоответствиеДопПараметровПоиска = Новый Соответствие; + СоответствиеПравилКонвертации = Новый Соответствие; + + КоличествоВыполненныхОтложенныхДвиженийДокументов = 0; + + Если ПродолжитьПриОшибке Тогда + ИспользоватьТранзакции = Ложь; КонецЕсли; - КонецЕсли; - - Если Не ФлагОшибки() Тогда + Если КоличествоОбработанныхОбъектовДляОбновленияСтатуса = 0 Тогда + КоличествоОбработанныхОбъектовДляОбновленияСтатуса = 100; + КонецЕсли; + + // выполняем очистку правил обмена + Правила.Очистить(); + ТаблицаПравилКонвертации.Очистить(); + + НачатьЧтениеСообщения(ЧтениеСообщения); + + Если ИспользоватьТранзакции Тогда + НачатьТранзакцию(); + КонецЕсли; + Попытка + + ПроизвестиЧтениеДанных(ЧтениеСообщения); + + Если ФлагОшибки() Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки при загрузке данных.'"); + КонецЕсли; + + // отложенная запись того, что не записали + ПровестиЗаписьНеЗаписанныхОбъектов(); + + Если ФлагОшибки() Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки при загрузке данных.'"); + КонецЕсли; + + ЗакончитьЧтениеСообщения(ЧтениеСообщения); + + Если ИспользоватьТранзакции Тогда + ЗафиксироватьТранзакцию(); + КонецЕсли; + Исключение + Если ИспользоватьТранзакции Тогда + ОтменитьТранзакцию(); + КонецЕсли; + ПрерватьЧтениеСообщения(ЧтениеСообщения); + ВызватьИсключение; + КонецПопытки; // выполняем проведение документов в очереди ВыполнитьОтложенноеПроведениеДокументов(); ВыполнитьОтложеннуюЗаписьОбъектов(); - // запишем информацию о номере входящего сообщения - ОбъектУзла = УзелОбменаЗагрузкаДанных.ПолучитьОбъект(); - ОбъектУзла.НомерПринятого = НомерСообщения(); - - ОбъектУзла.ДополнительныеСвойства.Вставить("ПолучениеСообщенияОбмена"); - - ОбъектУзла.Записать(); - - Если ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Истина Тогда - - РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ЗафиксироватьВыполнениеКорректировкиИнформацииСопоставленияБезусловно(УзелОбменаЗагрузкаДанных); - + Исключение + Если ЧтениеСообщения <> Неопределено + И ЧтениеСообщения.СообщениеБылоПринятоРанее Тогда + ЗаписатьВПротоколВыполнения(174,,,,,, + Перечисления.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято + ); + Иначе + ЗаписатьВПротоколВыполнения(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецЕсли; - - Если ЕстьИнформацияОРегистрацииОбъекта = Истина Тогда - - РегистрыСведений.СоответствияОбъектовИнформационныхБаз.УдалитьНеактуальныеЗаписиРежимаВыгрузкиПоСсылке(УзелОбменаЗагрузкаДанных); - - КонецЕсли; - - КонецЕсли; + КонецПопытки; ЗавершитьВедениеПротоколаОбмена(); @@ -992,7 +893,9 @@ ПолеОбъектыДляОтложеннойЗаписи = Неопределено; ПолеСоответствиеТиповДанныхДляЗагрузки = Неопределено; ГлобальныйСтекНеЗаписанныхОбъектов = Неопределено; + СоответствиеПравилКонвертации = Неопределено; ОбработкаЗагрузки = Неопределено; + ФайлОбмена = Неопределено; КонецПроцедуры @@ -1019,6 +922,10 @@ ПолеСвойстваУзлаПланаОбмена = Неопределено; ПолеВерсияФорматаВходящегоСообщенияОбмена = Неопределено; ПолеРежимСовместимостиСБСП20 = Неопределено; + ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Ложь; + ЕстьИнформацияОРегистрацииОбъекта = Ложь; + ГлобальныйСтекНеЗаписанныхОбъектов = Новый Соответствие; + СоответствиеПравилКонвертации = Новый Соответствие; // дата начала загрузки СостояниеОбменаДанными().ДатаНачала = ТекущаяДатаСеанса(); @@ -1028,7 +935,7 @@ СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Строка(УзелОбменаЗагрузкаДанных)); ЗаписьЖурналаРегистрацииОбменДанными(СтрокаСообщения, УровеньЖурналаРегистрации.Информация); - ВыполнитьЗагрузкуФайлаПакета(ТаблицыДляЗагрузки); + ВыполнитьВыборочноеЧтениеСообщения(ТаблицыДляЗагрузки); // дата окончания загрузки СостояниеОбменаДанными().ДатаОкончания = ТекущаяДатаСеанса(); @@ -1050,6 +957,8 @@ ПолеОбъектыДляОтложеннойЗаписи = Неопределено; ПолеСоответствиеТиповДанныхДляЗагрузки = Неопределено; ГлобальныйСтекНеЗаписанныхОбъектов = Неопределено; + СоответствиеПравилКонвертации = Неопределено; + ФайлОбмена = Неопределено; КонецПроцедуры @@ -1074,6 +983,10 @@ ПолеСвойстваУзлаПланаОбмена = Неопределено; ПолеВерсияФорматаВходящегоСообщенияОбмена = Неопределено; ПолеРежимСовместимостиСБСП20 = Неопределено; + ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Ложь; + ЕстьИнформацияОРегистрацииОбъекта = Ложь; + ГлобальныйСтекНеЗаписанныхОбъектов = Новый Соответствие; + СоответствиеПравилКонвертации = Новый Соответствие; ИспользоватьТранзакции = Ложь; @@ -1088,13 +1001,15 @@ КонецЦикла; - ВыполнитьЗагрузкуФайлаПакета(ТаблицыДляЗагрузки); + ВыполнитьВыборочноеЧтениеСообщения(ТаблицыДляЗагрузки); // сбрасываем модальные переменные перед помещением обработки в платформенный кэш ПолеДокументыДляОтложенногоПроведения = Неопределено; ПолеОбъектыДляОтложеннойЗаписи = Неопределено; ПолеСоответствиеТиповДанныхДляЗагрузки = Неопределено; ГлобальныйСтекНеЗаписанныхОбъектов = Неопределено; + СоответствиеПравилКонвертации = Неопределено; + ФайлОбмена = Неопределено; КонецПроцедуры @@ -1110,81 +1025,86 @@ // Процедура ВыполнитьАнализСообщенияОбмена() Экспорт - УстановитьФлагОшибки(Ложь); - - ИспользоватьТранзакции = Ложь; - - ПолеСтрокаСообщенияОбОшибке = ""; - ПолеСостояниеОбменаДанными = Неопределено; - ПолеРезультатВыполненияОбмена = Неопределено; - ПолеВерсияФорматаВходящегоСообщенияОбмена = Неопределено; - - ИнициализироватьВедениеПротоколаОбмена(); - - Если ПустаяСтрока(ИмяФайлаОбмена) Тогда - ЗаписатьВПротоколВыполнения(15); - ЗавершитьВедениеПротоколаОбмена(); - Возврат; - КонецЕсли; - - ИнициализироватьМенеджерыИСообщения(); - - // дата начала анализа - СостояниеОбменаДанными().ДатаНачала = ТекущаяДатаСеанса(); - - // открываем файл сообщения обмена - // зачитываем правила обмена (при необходимости) - ОткрытьФайлОбмена(); - - Если ФлагОшибки() Тогда - ЗавершитьВедениеПротоколаОбмена(); - Возврат; - КонецЕсли; - - ИнициализироватьОбработки(); - - // обнуляем значение модальной переменной - ПолеТаблицаДанныхЗаголовкаПакета = Неопределено; - + ЧтениеСообщения = Неопределено; Попытка - // зачитываем данные из сообщения обмена - ПроизвестиЧтениеДанныхВРежимеАнализа(); + УстановитьФлагОшибки(Ложь); - // формируем временную таблицу данных - ТаблицаДанныхЗаголовкаПакетаВременная = ТаблицаДанныхЗаголовкаПакета().Скопировать(, "ТипИсточникаСтрокой, ТипПриемникаСтрокой, ПоляПоиска, ПоляТаблицы"); - ТаблицаДанныхЗаголовкаПакетаВременная.Свернуть("ТипИсточникаСтрокой, ТипПриемникаСтрокой, ПоляПоиска, ПоляТаблицы"); + ИспользоватьТранзакции = Ложь; - // сворачиваем таблицу данных заголовка пакета - ТаблицаДанныхЗаголовкаПакета().Свернуть( - "ТипОбъектаСтрокой, ТипИсточникаСтрокой, ТипПриемникаСтрокой, СинхронизироватьПоИдентификатору, ЭтоКлассификатор, ЭтоУдалениеОбъекта, ИспользоватьПредварительныйПросмотр", - "КоличествоОбъектовВИсточнике" - ); - // - ТаблицаДанныхЗаголовкаПакета().Колонки.Добавить("ПоляПоиска", одОписаниеТипа("Строка")); - ТаблицаДанныхЗаголовкаПакета().Колонки.Добавить("ПоляТаблицы", одОписаниеТипа("Строка")); + ПолеСтрокаСообщенияОбОшибке = ""; + ПолеСостояниеОбменаДанными = Неопределено; + ПолеРезультатВыполненияОбмена = Неопределено; + ПолеВерсияФорматаВходящегоСообщенияОбмена = Неопределено; + ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Ложь; + ЕстьИнформацияОРегистрацииОбъекта = Ложь; + ГлобальныйСтекНеЗаписанныхОбъектов = Новый Соответствие; + СоответствиеПравилКонвертации = Новый Соответствие; - Для Каждого СтрокаТаблицы Из ТаблицаДанныхЗаголовкаПакета() Цикл + ИнициализироватьВедениеПротоколаОбмена(); + + ИнициализироватьМенеджерыИСообщения(); + + // дата начала анализа + СостояниеОбменаДанными().ДатаНачала = ТекущаяДатаСеанса(); + + // обнуляем значение модальной переменной + ПолеТаблицаДанныхЗаголовкаПакета = Неопределено; + + НачатьЧтениеСообщения(ЧтениеСообщения, Истина); + Попытка - Отбор = Новый Структура; - Отбор.Вставить("ТипИсточникаСтрокой", СтрокаТаблицы.ТипИсточникаСтрокой); - Отбор.Вставить("ТипПриемникаСтрокой", СтрокаТаблицы.ТипПриемникаСтрокой); + // зачитываем данные из сообщения обмена + ПроизвестиЧтениеДанныхВРежимеАнализа(ЧтениеСообщения); - СтрокиВременнойТаблицы = ТаблицаДанныхЗаголовкаПакетаВременная.НайтиСтроки(Отбор); + Если ФлагОшибки() Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки при анализе данных.'"); + КонецЕсли; - СтрокаТаблицы.ПоляПоиска = СтрокиВременнойТаблицы[0].ПоляПоиска; - СтрокаТаблицы.ПоляТаблицы = СтрокиВременнойТаблицы[0].ПоляТаблицы; + // формируем временную таблицу данных + ТаблицаДанныхЗаголовкаПакетаВременная = ТаблицаДанныхЗаголовкаПакета().Скопировать(, "ТипИсточникаСтрокой, ТипПриемникаСтрокой, ПоляПоиска, ПоляТаблицы"); + ТаблицаДанныхЗаголовкаПакетаВременная.Свернуть("ТипИсточникаСтрокой, ТипПриемникаСтрокой, ПоляПоиска, ПоляТаблицы"); - КонецЦикла; + // сворачиваем таблицу данных заголовка пакета + ТаблицаДанныхЗаголовкаПакета().Свернуть( + "ТипОбъектаСтрокой, ТипИсточникаСтрокой, ТипПриемникаСтрокой, СинхронизироватьПоИдентификатору, ЭтоКлассификатор, ЭтоУдалениеОбъекта, ИспользоватьПредварительныйПросмотр", + "КоличествоОбъектовВИсточнике"); + // + ТаблицаДанныхЗаголовкаПакета().Колонки.Добавить("ПоляПоиска", одОписаниеТипа("Строка")); + ТаблицаДанныхЗаголовкаПакета().Колонки.Добавить("ПоляТаблицы", одОписаниеТипа("Строка")); + + Для Каждого СтрокаТаблицы Из ТаблицаДанныхЗаголовкаПакета() Цикл + + Отбор = Новый Структура; + Отбор.Вставить("ТипИсточникаСтрокой", СтрокаТаблицы.ТипИсточникаСтрокой); + Отбор.Вставить("ТипПриемникаСтрокой", СтрокаТаблицы.ТипПриемникаСтрокой); + + СтрокиВременнойТаблицы = ТаблицаДанныхЗаголовкаПакетаВременная.НайтиСтроки(Отбор); + + СтрокаТаблицы.ПоляПоиска = СтрокиВременнойТаблицы[0].ПоляПоиска; + СтрокаТаблицы.ПоляТаблицы = СтрокиВременнойТаблицы[0].ПоляТаблицы; + + КонецЦикла; + + ЗакончитьЧтениеСообщения(ЧтениеСообщения); + + Исключение + ПрерватьЧтениеСообщения(ЧтениеСообщения); + ВызватьИсключение; + КонецПопытки; Исключение - СтрокаСообщения = НСтр("ru = 'Ошибка при анализе данных: %1'"); - СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ОписаниеОшибки()); - ЗаписатьВПротоколВыполнения(СтрокаСообщения,,,,,Истина); + Если ЧтениеСообщения <> Неопределено + И ЧтениеСообщения.СообщениеБылоПринятоРанее Тогда + ЗаписатьВПротоколВыполнения(174,,,,,, + Перечисления.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято + ); + Иначе + ЗаписатьВПротоколВыполнения(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецЕсли; + КонецПопытки; - ФайлОбмена.Закрыть(); - ЗавершитьВедениеПротоколаОбмена(); // дата окончания анализа @@ -1193,23 +1113,13 @@ // фиксируем завершение анализа данных в РС ЗафиксироватьЗавершениеЗагрузкиДанных(); - Если ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Истина Тогда - - РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ЗафиксироватьВыполнениеКорректировкиИнформацииСопоставленияБезусловно(УзелОбменаЗагрузкаДанных); - - КонецЕсли; - - Если ЕстьИнформацияОРегистрацииОбъекта = Истина Тогда - - РегистрыСведений.СоответствияОбъектовИнформационныхБаз.УдалитьНеактуальныеЗаписиРежимаВыгрузкиПоСсылке(УзелОбменаЗагрузкаДанных); - - КонецЕсли; - // сбрасываем модальные переменные перед помещением обработки в платформенный кэш ПолеДокументыДляОтложенногоПроведения = Неопределено; ПолеОбъектыДляОтложеннойЗаписи = Неопределено; ПолеСоответствиеТиповДанныхДляЗагрузки = Неопределено; ГлобальныйСтекНеЗаписанныхОбъектов = Неопределено; + СоответствиеПравилКонвертации = Неопределено; + ФайлОбмена = Неопределено; КонецПроцедуры @@ -1222,15 +1132,21 @@ ФайлОбмена.УстановитьСтроку(СтрокаXML); - ИнициализироватьОбработки(); - + ЧтениеСообщения = Неопределено; Попытка - ПроизвестиЧтениеДанных(); + + ПроизвестиЧтениеДанныхВРежимеВнешнегоСоединения(ЧтениеСообщения); + Исключение - СтрокаСообщения = НСтр("ru = 'Ошибка при загрузке данных: %1'"); - СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ОписаниеОшибки()); - ЗаписатьВПротоколВыполнения(СтрокаСообщения,,,,,Истина); + Если ЧтениеСообщения <> Неопределено + И ЧтениеСообщения.СообщениеБылоПринятоРанее Тогда + ЗаписатьВПротоколВыполнения(174,,,,,, + Перечисления.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято + ); + Иначе + ЗаписатьВПротоколВыполнения(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецЕсли; КонецПопытки; @@ -1267,9 +1183,6 @@ КонецЕсли; // {Обработчик: ПередЗагрузкойДанных} Окончание - // отрабатываем правила очистки данных - ОбработатьПравилаОчистки(ТаблицаПравилОчистки.Строки); - КонецПроцедуры // Процедура инициализации перед загрузкой данных через внешнее соединение @@ -1293,7 +1206,6 @@ НомерПоследнегоПоискаПоСсылке = 0; ИнициализироватьМенеджерыИСообщения(); - ИнициализироватьОбработки(); УстановитьФлагОшибки(Ложь); @@ -1318,6 +1230,9 @@ ФайлОбмена = Новый ЧтениеXML; + ЕстьИнформацияОРегистрацииОбъекта = Ложь; + ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Ложь; + КонецПроцедуры // Выполняет обработчик После загрузки данных. @@ -1362,8 +1277,7 @@ // запишем информацию о номере входящего сообщения ОбъектУзла = УзелОбменаЗагрузкаДанных.ПолучитьОбъект(); ОбъектУзла.НомерПринятого = НомерСообщения(); - - ОбъектУзла.ДополнительныеСвойства.Вставить("ПолучениеСообщенияОбмена"); + ОбъектУзла.ДополнительныеСвойства.Вставить("Загрузка"); ОбъектУзла.Записать(); @@ -1388,6 +1302,7 @@ ПолеОбъектыДляОтложеннойЗаписи = Неопределено; ПолеСоответствиеТиповДанныхДляЗагрузки = Неопределено; ГлобальныйСтекНеЗаписанныхОбъектов = Неопределено; + ФайлОбмена = Неопределено; КонецПроцедуры @@ -1515,7 +1430,7 @@ // Объект - Записываемый объект. // Тип - Строка - Тип объекта строкой. // -Процедура ЗаписатьОбъектВИБ(Объект, Тип, ЗаписатьОбъект = Ложь, Знач ОтправкаНазад = Ложь, УникальныйИдентификаторСтрокой = "") Экспорт +Процедура ЗаписатьОбъектВИБ(Объект, Тип, ЗаписатьОбъект = Ложь, Знач ОтправкаНазад = Ложь) Экспорт // в режиме загрузки в ТЗ объекты не записываем Если РежимЗагрузкиДанныхВТаблицуЗначений() Тогда @@ -1527,7 +1442,7 @@ И Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(Объект.Метаданные().ПолноеИмя(), ОбщегоНазначенияПовтИсп.РазделительОсновныхДанных()) И Не ОбщегоНазначенияПовтИсп.ЭтоРазделенныйОбъектМетаданных(Объект.Метаданные().ПолноеИмя(), ОбщегоНазначенияПовтИсп.РазделительВспомогательныхДанных()) Тогда - СтрокаСообщенияОбОшибке = НСтр("ru = 'Попытка изменение неразделенных данных (%1) в разделенном режиме.'"); + СтрокаСообщенияОбОшибке = НСтр("ru = 'Попытка изменения неразделенных данных (%1) в разделенном сеансе.'"); СтрокаСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, Объект.Метаданные().ПолноеИмя()); ЗаписатьВПротоколВыполнения(СтрокаСообщенияОбОшибке,, Ложь,,,, Перечисления.РезультатыВыполненияОбмена.ВыполненоСПредупреждениями); @@ -1542,45 +1457,6 @@ // выполняем проверку на пометку удаления предопределенного элемента СнятьПометкуУдаленияСПредопределенногоЭлемента(Объект, Тип); - // Проверка на коллизии дат запрета загрузки. - Отказ = Ложь; - СообщениеОбОшибке = ""; - ОбменДаннымиСервер.ПередЗаписьюДанныхИзСообщенияОбмена( - Объект, УзелОбменаЗагрузкаДанных, Отказ, СообщениеОбОшибке - ); - - Если Отказ Тогда - - // Если загрузка запрещена регистрируется ошибка и загрузка продолжается. - ЗП = ПолучитьСтруктуруЗаписиПротокола(84, "{}: " + Строка(СообщениеОбОшибке)); - ЗП.Объект = Объект; - ЗП.ТипОбъекта = Тип; - - ЗаписатьВПротоколВыполнения(84, ЗП, Ложь); - - МетаданныеОбъекта = Объект.Метаданные(); - - Если ИспользуетсяВерсионирование() И (ОбщегоНазначения.ЭтоДокумент(МетаданныеОбъекта) Или ОбщегоНазначения.ЭтоСправочник(МетаданныеОбъекта)) Тогда - - Если Объект.Ссылка.Пустая() Тогда - СтрокаСообщенияОбОшибке = Строка(Объект) + НСтр("ru = ' запрещено загружать в запрещенный период.'") + Символы.ПС + Символы.ПС + Строка(СообщениеОбОшибке); - Иначе - ОбъектВБазе = Объект.Ссылка.ПолучитьОбъект(); - ОбменДаннымиСервер.ПриСозданииВерсииОбъекта(ОбъектВБазе, , Перечисления["ТипыВерсийОбъекта"].ИзмененоПользователем,,,Истина); - СтрокаСообщенияОбОшибке = Строка(СообщениеОбОшибке); - КонецЕсли; - - ОбменДаннымиСервер.ПриСозданииВерсииОбъекта(Объект, УзелОбменаЗагрузкаДанных,Перечисления["ТипыВерсийОбъекта"].НепринятыеДанныеПоДатеЗапретаОбъектСуществует, - СтрокаСообщенияОбОшибке, УникальныйИдентификаторСтрокой, Истина); - - КонецЕсли; - - ЗаписатьОбъект = Ложь; - Возврат; - КонецЕсли; - - Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); - НачатьТранзакцию(); Попытка @@ -1617,49 +1493,11 @@ // Объект - Объект для отмены проведения. // Тип - Строка - Тип объекта строкой. // -Процедура ОтменитьПроведениеОбъектаВИБ(Объект, Тип, ЗаписатьОбъект = Ложь, УникальныйИдентификаторСтрокой = "") Экспорт +Процедура ОтменитьПроведениеОбъектаВИБ(Объект, Тип, ЗаписатьОбъект = Ложь) Экспорт // устанавливаем режим загрузки данных для объекта УстановитьОбменДаннымиЗагрузка(Объект); - // Проверка на коллизии дат запрета загрузки. - Отказ = Ложь; - СообщениеОбОшибке = ""; - ОбменДаннымиСервер.ПередЗаписьюДанныхИзСообщенияОбмена( - Объект, УзелОбменаЗагрузкаДанных, Отказ, СообщениеОбОшибке); - - Если Отказ Тогда - - // Если загрузка запрещена регистрируется ошибка и загрузка продолжается. - ЗП = ПолучитьСтруктуруЗаписиПротокола(84, "{}: " + Строка(СообщениеОбОшибке)); - ЗП.Объект = Объект; - ЗП.ТипОбъекта = Тип; - - ЗаписатьВПротоколВыполнения(84, ЗП, Ложь); - - МетаданныеОбъекта = Объект.Метаданные(); - - Если ИспользуетсяВерсионирование() И (ОбщегоНазначения.ЭтоДокумент(МетаданныеОбъекта) Или ОбщегоНазначения.ЭтоСправочник(МетаданныеОбъекта)) Тогда - - Если Объект.Ссылка.Пустая() Тогда - СтрокаСообщенияОбОшибке = Строка(Объект) + НСтр("ru = ' запрещено загружать в запрещенный период.'") + Символы.ПС + Символы.ПС + Строка(СообщениеОбОшибке); - Иначе - ОбъектВБазе = Объект.Ссылка.ПолучитьОбъект(); - ОбменДаннымиСервер.ПриСозданииВерсииОбъекта(ОбъектВБазе, , Перечисления["ТипыВерсийОбъекта"].ИзмененоПользователем,,,Истина); - СтрокаСообщенияОбОшибке = Строка(СообщениеОбОшибке); - КонецЕсли; - - ОбменДаннымиСервер.ПриСозданииВерсииОбъекта(Объект, УзелОбменаЗагрузкаДанных, Перечисления["ТипыВерсийОбъекта"].НепринятыеДанныеПоДатеЗапретаОбъектСуществует, - СтрокаСообщенияОбОшибке, УникальныйИдентификаторСтрокой, Истина); - - КонецЕсли; - - ЗаписатьОбъект = Ложь; - Возврат; - КонецЕсли; - - Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); - НачатьТранзакцию(); Попытка @@ -1676,7 +1514,7 @@ РегистрыСведений.СоответствияОбъектовИнформационныхБаз.ДобавитьЗапись(СоответствияОбъектовИнформационныхБаз); КонецЕсли; - УдалитьДвиженияУДокумента(Объект, Отказ); + УдалитьДвиженияУДокумента(Объект); ЗафиксироватьТранзакцию(); Исключение @@ -1854,8 +1692,7 @@ ВыполнитьОбработчик_Конвертация_ПередКонвертациейОбъекта(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО, ПКО, ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные, НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены,ТолькоПолучитьУзелСсылки, - Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден - ); + Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден); КонецЕсли; @@ -1887,8 +1724,7 @@ ВыполнитьОбработчик_ПКО_ПередВыгрузкойОбъекта(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО, ПКО, ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные, НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены, ТолькоПолучитьУзелСсылки, - Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден - ); + Приемник, РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден); КонецЕсли; @@ -1908,8 +1744,8 @@ НужноОбновитьЛокальныйКЭШВыгруженныхОбъектов = Ложь; ЗначениеСсылкиВДругойИБ = ""; - // Возможно такие данные уже выгружались - Если Не ВсеОбъектыВыгружены Тогда + // Возможно такие данные уже выгружались + Если Не ВсеОбъектыВыгружены Тогда Нпп = 0; @@ -2006,8 +1842,8 @@ КонецЕсли; КонецЕсли; - - СоответствиеЗначений = ПКО.Значения; + + СоответствиеЗначений = ПКО.ЗначенияПредопределенныхДанных; КоличествоЭлементовСоответствияЗначений = СоответствиеЗначений.Количество(); // Обработка соответствий предопределенных элементов @@ -2018,7 +1854,7 @@ И СтруктураСвойств.ВозможенПоискПоПредопределенным Тогда Попытка - ИмяПредопределенногоИсточник = СтруктураСвойств.Менеджер.ПолучитьИмяПредопределенного(СсылкаНаИсточник) + ИмяПредопределенногоИсточник = ОбщегоНазначения.ИмяПредопределенного(СсылкаНаИсточник) Исключение ИмяПредопределенногоИсточник = ""; КонецПопытки; @@ -2197,7 +2033,7 @@ КонецЕсли; - Если Приемник = Неопределено Тогда + Если Приемник = Неопределено Тогда Приемник = СоздатьУзел("Объект"); @@ -2261,8 +2097,7 @@ ВыполнитьОбработчик_ПКО_ПриВыгрузкеОбъекта(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО, ПКО, ВыгруженныеОбъекты, КлючВыгружаемыхДанных, Отказ, - СтандартнаяОбработка, Приемник, УзелСсылки - ); + СтандартнаяОбработка, Приемник, УзелСсылки); КонецЕсли; @@ -2320,8 +2155,7 @@ , // НеИспользоватьПравилаСГлобальнойВыгрузкойИНеЗапоминатьВыгруженные = Ложь ЗначениеСсылкиВДругойИБ, // ЗначениеСсылкиВДругойИБ СписокВременныхФайлов, // СписокВременныхФайлов = Неопределено - ВыгрузкаСтрокиНабораЗаписейРегистра // ВыгрузкаСтрокиНабораЗаписейРегистра = Ложь - ); + ВыгрузкаСтрокиНабораЗаписейРегистра); // ВыгрузкаСтрокиНабораЗаписейРегистра = Ложь КонецЕсли; @@ -2340,8 +2174,7 @@ Иначе ВыполнитьОбработчик_ПКО_ПослеВыгрузкиОбъекта(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО, ПКО, - ВыгруженныеОбъекты, КлючВыгружаемыхДанных, Отказ, Приемник, УзелСсылки - ); + ВыгруженныеОбъекты, КлючВыгружаемыхДанных, Отказ, Приемник, УзелСсылки); КонецЕсли; @@ -2445,8 +2278,7 @@ Иначе ВыполнитьОбработчик_ПКО_ПослеВыгрузкиОбъектаВФайлОбмена(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, - ИмяПКО, ПКО, ВыгруженныеОбъекты, Приемник, УзелСсылки - ); + ИмяПКО, ПКО, ВыгруженныеОбъекты, Приемник, УзелСсылки); КонецЕсли; @@ -2598,8 +2430,8 @@ // Процедура УстановитьПометкуУдаленияУОбъекта(Объект, ПометкаУдаления, ИмяТипаОбъекта) Экспорт - Если (ПометкаУдаления = Неопределено) - И (Объект.ПометкаУдаления <> Истина) Тогда + Если (ПометкаУдаления = Неопределено И Объект.ПометкаУдаления <> Истина) + Или Объект.ДополнительныеСвойства.Свойство("НайденЗапретЗагрузкиДанных") Тогда Возврат; КонецЕсли; @@ -2668,6 +2500,18 @@ КонецПроцедуры +Процедура ПолучитьЗначенияПредопределенныхДанных(Знач ПКО) + + ПКО.ЗначенияПредопределенныхДанных = Новый Соответствие; + + Для Каждого Элемент Из ПКО.ЗначенияПредопределенныхДанныхПрочитанные Цикл + + ПКО.ЗначенияПредопределенныхДанных.Вставить(одПолучитьЗначениеПоСтроке(Элемент.Ключ, ПКО.Источник), Элемент.Значение); + + КонецЦикла; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ ДЛЯ НАПИСАНИЯ АЛГОРИТМОВ @@ -4240,8 +4084,10 @@ КонецЕсли; КонецЦикла; - - Значения[одПолучитьЗначениеПоСтроке(Источник, ТипИсточника)] = Приемник; + + Если Не ПустаяСтрока(Источник) Тогда + Значения.Вставить(Источник, Приемник); + КонецЕсли; КонецПроцедуры @@ -4431,12 +4277,10 @@ // Значения ИначеЕсли ИмяУзла = "Значения" Тогда - - ЗагрузитьЗначения(ПравилаОбмена, НоваяСтрока.Значения, НоваяСтрока.Источник); - + + ЗагрузитьЗначения(ПравилаОбмена, НоваяСтрока.ЗначенияПредопределенныхДанныхПрочитанные, НоваяСтрока.Источник); // Обработчики событий - ИначеЕсли ИмяУзла = "ПередВыгрузкой" Тогда НоваяСтрока.ПередВыгрузкой = одЗначениеЭлемента(ПравилаОбмена, ТипСтрока); @@ -5468,9 +5312,17 @@ КонецЕсли; СтруктураПравил = СохраненныеНастройки.Получить(); - - Конвертация = СтруктураПравил.Конвертация; + // Выполняем проверку на версию формата хранения правил обмена + ВерсияФорматаХраненияПравил = Неопределено; + СтруктураПравил.Свойство("ВерсияФорматаХраненияПравил", ВерсияФорматаХраненияПравил); + Если ВерсияФорматаХраненияПравил <> ВерсияФорматаХраненияПравилОбмена() Тогда + ВызватьИсключение НСтр("ru = 'Версия формата хранения правил обмена не соответствует ожидаемой. + |Требуется выполнить загрузку правил обмена повторно.'" + ); + КонецЕсли; + + Конвертация = СтруктураПравил.Конвертация; ТаблицаПравилВыгрузки = СтруктураПравил.ТаблицаПравилВыгрузки; ТаблицаПравилКонвертации = СтруктураПравил.ТаблицаПравилКонвертации; ТаблицаНастройкиПараметров = СтруктураПравил.ТаблицаНастройкиПараметров; @@ -5494,16 +5346,19 @@ Запрос = Новый Запрос(ЭлементСтруктуры.Значение); Запросы.Вставить(ЭлементСтруктуры.Ключ, Запрос); КонецЦикла; - + ИнициализироватьМенеджерыИСообщения(); Правила.Очистить(); Если РежимОбмена = "Выгрузка" Тогда - + Для Каждого СтрокаТаблицы Из ТаблицаПравилКонвертации Цикл + + ПолучитьЗначенияПредопределенныхДанных(СтрокаТаблицы); + Правила.Вставить(СтрокаТаблицы.Имя, СтрокаТаблицы); - + Если СтрокаТаблицы.Источник <> Неопределено Тогда Попытка @@ -5511,17 +5366,17 @@ Менеджеры[Тип(СтрокаТаблицы.Источник)].ПКО = СтрокаТаблицы; Иначе Менеджеры[СтрокаТаблицы.Источник].ПКО = СтрокаТаблицы; - КонецЕсли; + КонецЕсли; Исключение ЗаписатьИнформациюОбОшибкеВПротокол(11, ОписаниеОшибки(), Строка(СтрокаТаблицы.Источник)); КонецПопытки; КонецЕсли; - + КонецЦикла; - + КонецЕсли; - + КонецПроцедуры // Устанавливает значения параметров в структуре Параметры @@ -5843,6 +5698,285 @@ //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ ЗАГРУЗКИ ДАННЫХ +Процедура НачатьЧтениеСообщения(ЧтениеСообщения, АнализДанных = Ложь) + + Если ПустаяСтрока(ИмяФайлаОбмена) Тогда + ВызватьИсключение ЗаписатьВПротоколВыполнения(15); + КонецЕсли; + + ФайлОбмена = Новый ЧтениеXML; + + ФайлОбмена.ОткрытьФайл(ИмяФайлаОбмена); + + ФайлОбмена.Прочитать(); // ФайлОбмена + + Если ФайлОбмена.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + Если ФайлОбмена.ЛокальноеИмя <> "ФайлОбмена" Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + ПолеВерсияФорматаВходящегоСообщенияОбмена = одАтрибут(ФайлОбмена, ТипСтрока, "ВерсияФормата"); + + ФайлОбмена.Прочитать(); // ПравилаОбмена + + Если ФайлОбмена.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + Если ФайлОбмена.ЛокальноеИмя <> "ПравилаОбмена" Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + Если ТаблицаПравилКонвертации.Количество() = 0 Тогда + ЗагрузитьПравилаОбмена(ФайлОбмена, "ЧтениеXML"); + Если ФлагОшибки() Тогда + ВызватьИсключение НСтр("ru = 'При загрузке правил обмена данными возникли ошибки.'"); + КонецЕсли; + Иначе + одПропустить(ФайлОбмена); + КонецЕсли; + + // {Обработчик: ПередЗагрузкойДанных} Начало + Если Не ПустаяСтрока(Конвертация.ПередЗагрузкойДанных) Тогда + + Отказ = Ложь; + + Попытка + + Если РежимСовместимостиСБСП20() Тогда + + Выполнить(Конвертация.ПередЗагрузкойДанных); + + Иначе + + ВыполнитьОбработчик_Конвертация_ПередЗагрузкойДанных(ФайлОбмена, Отказ); + + КонецЕсли; + + Исключение + ВызватьИсключение ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(22, ОписаниеОшибки(), НСтр("ru = 'ПередЗагрузкойДанных (конвертация)'")); + КонецПопытки; + + Если Отказ Тогда + ВызватьИсключение НСтр("ru = 'Отказ от загрузки сообщения обмена в обработчике ПередЗагрузкойДанных (конвертация).'"); + КонецЕсли; + + КонецЕсли; + // {Обработчик: ПередЗагрузкойДанных} Окончание + + ФайлОбмена.Прочитать(); + + Если ФайлОбмена.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + // НастройкаПользовательскогоПоиска (необязательный) + Если ФайлОбмена.ЛокальноеИмя = "НастройкаПользовательскогоПоиска" Тогда + ЗагрузитьИнформациюОПользовательскихПоляхПоиска(); + ФайлОбмена.Прочитать(); + КонецЕсли; + + // ИнформацияОТипахДанных (необязательный) + Если ФайлОбмена.ЛокальноеИмя = "ИнформацияОТипахДанных" Тогда + + Если ФайлОбмена.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + Если СоответствиеТиповДанныхДляЗагрузки().Количество() > 0 Тогда + одПропустить(ФайлОбмена); + Иначе + ЗагрузитьИнформациюОТипахДанных(); + Если ФлагОшибки() Тогда + ВызватьИсключение НСтр("ru = 'При загрузке информации о типах данных возникли ошибки.'"); + КонецЕсли; + КонецЕсли; + ФайлОбмена.Прочитать(); + КонецЕсли; + + // ЗначениеПараметра (необязательный) (несколько) + Если ФайлОбмена.ЛокальноеИмя = "ЗначениеПараметра" Тогда + + Если ФайлОбмена.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + ЗагрузитьЗначенияПараметровОбменаДанными(); + + Пока ФайлОбмена.Прочитать() Цикл + + Если ФайлОбмена.ЛокальноеИмя = "ЗначениеПараметра" Тогда + + Если ФайлОбмена.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + ЗагрузитьЗначенияПараметровОбменаДанными(); + Иначе + Прервать; + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + // АлгоритмПослеЗагрузкиПараметров (необязательный) + Если ФайлОбмена.ЛокальноеИмя = "АлгоритмПослеЗагрузкиПараметров" Тогда + + Если ФайлОбмена.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + ВыполнитьАлгоритмПослеЗагрузкиПараметров(одЗначениеЭлемента(ФайлОбмена, ТипСтрока)); + ФайлОбмена.Прочитать(); + КонецЕсли; + + // ДанныеПоОбмену (обязательный) + Если ФайлОбмена.ТипУзла <> ТипУзлаXML.НачалоЭлемента Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + Если ФайлОбмена.ЛокальноеИмя <> "ДанныеПоОбмену" Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + ПрочитатьДанныеПоОбмену(ЧтениеСообщения, АнализДанных); + ФайлОбмена.Прочитать(); + + Если ТранзакцияАктивна() Тогда + ВызватьИсключение НСтр("ru = 'Блокировка получения данных не может быть установлена в активной транзакции.'"); + КонецЕсли; + + // Устанавливаем блокировку на узел отправителя + Попытка + ЗаблокироватьДанныеДляРедактирования(ЧтениеСообщения.Отправитель); + Исключение + ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Ошибка установки блокировки на обмен данными. + |Возможно, обмен данными выполняется другим сеансом. + | + |Подробности: + |%1'"), + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + КонецПопытки; + +КонецПроцедуры + +Процедура ЗакончитьЧтениеСообщения(Знач ЧтениеСообщения) + + // {Обработчик: ПослеЗагрузкиДанных} Начало + Если Не ПустаяСтрока(Конвертация.ПослеЗагрузкиДанных) Тогда + + Попытка + + Если РежимСовместимостиСБСП20() Тогда + + Выполнить(Конвертация.ПослеЗагрузкиДанных); + + Иначе + + ВыполнитьОбработчик_Конвертация_ПослеЗагрузкиДанных(); + + КонецЕсли; + + Исключение + ВызватьИсключение ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(23, ОписаниеОшибки(), НСтр("ru = 'ПослеЗагрузкиДанных (конвертация)'")); + КонецПопытки; + + КонецЕсли; + // {Обработчик: ПослеЗагрузкиДанных} Окончание + + Если ФайлОбмена.ТипУзла <> ТипУзлаXML.КонецЭлемента Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + Если ФайлОбмена.ЛокальноеИмя <> "ФайлОбмена" Тогда + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + КонецЕсли; + + ФайлОбмена.Прочитать(); // ФайлОбмена + ФайлОбмена.Закрыть(); + + НачатьТранзакцию(); + Если Не ЧтениеСообщения.АнализДанных Тогда + ЧтениеСообщения.ОтправительОбъект.НомерПринятого = ЧтениеСообщения.НомерСообщения; + ЧтениеСообщения.ОтправительОбъект.ДополнительныеСвойства.Вставить("Загрузка"); + ЧтениеСообщения.ОтправительОбъект.Записать(); + КонецЕсли; + + Если ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Истина Тогда + РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ЗафиксироватьВыполнениеКорректировкиИнформацииСопоставленияБезусловно(УзелОбменаЗагрузкаДанных); + КонецЕсли; + + Если ЕстьИнформацияОРегистрацииОбъекта = Истина Тогда + РегистрыСведений.СоответствияОбъектовИнформационныхБаз.УдалитьНеактуальныеЗаписиРежимаВыгрузкиПоСсылке(УзелОбменаЗагрузкаДанных); + КонецЕсли; + ЗафиксироватьТранзакцию(); + + РазблокироватьДанныеДляРедактирования(ЧтениеСообщения.Отправитель); + +КонецПроцедуры + +Процедура ПрерватьЧтениеСообщения(Знач ЧтениеСообщения) + + ФайлОбмена.Закрыть(); + + РазблокироватьДанныеДляРедактирования(ЧтениеСообщения.Отправитель); + +КонецПроцедуры + +Процедура ВыполнитьАлгоритмПослеЗагрузкиПараметров(Знач ТекстАлгоритма) + + Если ПустаяСтрока(ТекстАлгоритма) Тогда + Возврат; + КонецЕсли; + + Отказ = Ложь; + ПричинаОтказа = ""; + + Попытка + + Если РежимСовместимостиСБСП20() Тогда + + Выполнить(ТекстАлгоритма); + + Иначе + + ВыполнитьОбработчик_Конвертация_ПослеЗагрузкиПараметров(ФайлОбмена, Отказ, ПричинаОтказа); + + КонецЕсли; + + Если Отказ = Истина Тогда + + Если Не ПустаяСтрока(ПричинаОтказа) Тогда + + СтрокаСообщения = НСтр("ru = 'Отказ от загрузки сообщения обмена в обработчике ПослеЗагрузкиПараметров (конвертация) по причине: %1'"); + СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ПричинаОтказа); + ВызватьИсключение СтрокаСообщения; + Иначе + ВызватьИсключение НСтр("ru = 'Отказ от загрузки сообщения обмена в обработчике ПослеЗагрузкиПараметров (конвертация).'"); + КонецЕсли; + + КонецЕсли; + + Исключение + + ЗП = ПолучитьСтруктуруЗаписиПротокола(78, ОписаниеОшибки()); + ЗП.Обработчик = "ПослеЗагрузкиПараметров"; + СтрокаСообщенияОбОшибке = ЗаписатьВПротоколВыполнения(78, ЗП); + + Если Не ПродолжитьПриОшибке Тогда + ВызватьИсключение СтрокаСообщенияОбОшибке; + КонецЕсли; + + КонецПопытки; + +КонецПроцедуры + Функция УстановитьСсылкуНового(Объект, Менеджер, СвойстваПоиска) УИ = СвойстваПоиска["{УникальныйИдентификатор}"]; @@ -5992,9 +6126,8 @@ КонецФункции - // Процедура удаления существующих движений документа при перепроведении (отмене проведения) -Процедура УдалитьДвиженияУДокумента(ДокументОбъект, Отказ) +Процедура УдалитьДвиженияУДокумента(ДокументОбъект) МассивОбрабатываемыхСтрокТаблицыДвижений = Новый Массив(); @@ -6275,8 +6408,7 @@ , ИмяПКО, СоответствияОбъектовИнформационныхБаз, - ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли - ); + ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли); Если НеСоздаватьОбъектЕслиНеНайден И НЕ ОбъектНайден Тогда @@ -6415,8 +6547,7 @@ ГНпп = 0, ПараметрыОбъекта = Неопределено, НеЗамещатьОбъектСозданныйВИнформационнойБазеПриемнике = Ложь, - ОбъектБылСозданВТекущейИнформационнойБазе = Неопределено - ) + ОбъектБылСозданВТекущейИнформационнойБазе = Неопределено) Объект = одНайтиОбъектПоСвойству(СтруктураСвойств.Менеджер, СвойствоПоиска, ЗначениеСвойстваПоиска, НайденныйИлиСозданныйОбъект, , , РежимПоискаОсновногоОбъекта, СтруктураСвойств.СтрокаПоиска); @@ -6591,8 +6722,7 @@ Знач ТипПриемникаСтрокой, Знач РежимПоискаОсновногоОбъекта, НайденоСоответствиеОбъекта = Ложь, - СоответствияОбъектовИнформационныхБаз = Неопределено - ) + СоответствияОбъектовИнформационныхБаз = Неопределено) // в режиме сопоставления для основных объектов замену не выполняем Если РежимПоискаОсновногоОбъекта И РежимЗагрузкиДанныхВТаблицуЗначений() Тогда @@ -6908,8 +7038,7 @@ СозданныйОбъект, ЗаписыватьНовыйОбъектВИнформационнуюБазу = Истина, НеЗамещатьОбъектСозданныйВИнформационнойБазеПриемнике = Ложь, - ОбъектБылСозданВТекущейИнформационнойБазе = Неопределено - ) + ОбъектБылСозданВТекущейИнформационнойБазе = Неопределено) Если УстанавливатьУОбъектаВсеСвойстваПоиска <> Истина Тогда Возврат; @@ -7027,8 +7156,7 @@ УникальныйИдентификаторСтрокой = "", ИмяПКО = "", СоответствияОбъектовИнформационныхБаз = Неопределено, - ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли = Неопределено - ) + ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли = Неопределено) // Идентификация объекта выполняется последовательно в пять этапов. // Переход к каждому последующему этапу выполняется в случае, @@ -7139,8 +7267,7 @@ НппСсылки, НППГлобальнойСсылки, ПараметрыОбъекта, НеЗамещатьОбъектСозданныйВИнформационнойБазеПриемнике, - ОбъектБылСозданВТекущейИнформационнойБазе - ); + ОбъектБылСозданВТекущейИнформационнойБазе); Если СсылкаНаОбъект <> Неопределено И СсылкаНаОбъект.Пустая() Тогда @@ -7185,8 +7312,7 @@ НППГлобальнойСсылки, ПараметрыОбъекта, НеЗамещатьОбъектСозданныйВИнформационнойБазеПриемнике, - ОбъектБылСозданВТекущейИнформационнойБазе - ); + ОбъектБылСозданВТекущейИнформационнойБазе); Если Не ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли Тогда Возврат СсылкаНаОбъект; @@ -7213,8 +7339,7 @@ НППГлобальнойСсылки, ПараметрыОбъекта, НеЗамещатьОбъектСозданныйВИнформационнойБазеПриемнике, - ОбъектБылСозданВТекущейИнформационнойБазе - ); + ОбъектБылСозданВТекущейИнформационнойБазе); Иначе @@ -7285,8 +7410,7 @@ ВыполнитьОбработчик_ПКО_ПоследовательностьПолейПоиска(НомерВариантаПоиска, СвойстваПоиска, ПараметрыОбъекта, ПрекратитьПоиск, СсылкаНаОбъект, УстанавливатьУОбъектаВсеСвойстваПоиска, СтрокаИменСвойствПоиска, - ПКО.ИмяОбработчикаПоследовательностьПолейПоиска - ); + ПКО.ИмяОбработчикаПоследовательностьПолейПоиска); КонецЕсли; @@ -7323,8 +7447,7 @@ СозданныйОбъект, НЕ РежимПоискаОсновногоОбъекта, НеЗамещатьОбъектСозданныйВИнформационнойБазеПриемнике, - ОбъектБылСозданВТекущейИнформационнойБазе - ); + ОбъектБылСозданВТекущейИнформационнойБазе); КонецЕсли; @@ -8395,8 +8518,7 @@ ВыполнитьОбработчик_Конвертация_ПередЗагрузкойОбъекта(ФайлОбмена, Отказ, Нпп, Источник, ИмяПравила, Правило, ГенерироватьНовыйНомерИлиКодЕслиНеУказан,ТипОбъектаСтрокой, - ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения - ); + ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения); КонецЕсли; @@ -8432,8 +8554,7 @@ ВыполнитьОбработчик_ПКО_ПередЗагрузкойОбъекта(ФайлОбмена, Отказ, Нпп, Источник, ИмяПравила, Правило, ГенерироватьНовыйНомерИлиКодЕслиНеУказан, ТипОбъектаСтрокой, - ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения - ); + ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения); КонецЕсли; @@ -8608,195 +8729,41 @@ Иначе ВыполнитьОбработчик_ПКО_ПослеЗагрузкиОбъекта(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, - ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден, Правило - ); + ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден, Правило); КонецЕсли; Исключение ЗаписатьИнформациюОбОшибкеЗагрузкиОбработчикаПКО(21, ОписаниеОшибки(), ИмяПравила, Источник, - ТипОбъекта, Объект, "ПослеЗагрузкиОбъекта"); + ТипОбъекта, Объект, "ПослеЗагрузкиОбъекта"); КонецПопытки; КонецЕсли; - Если Объект <> Неопределено тогда - ЕстьКоллизия = ПроверитьНаличиеКоллизийДляОбъекта(Объект, "РегистрСведений", ПриоритетОбъектаОбмена, ИмяРегистра); + ПолучениеЭлемента = ПолучениеЭлементаДанных.Авто; + ОтправкаНазад = Ложь; - // в случае наличия коллизии новая версия объекта записывается только при условии, что - // приоритет ее записи ВЫШЕ, во всех остальных случаях версия не записывается - Если ЕстьКоллизия Тогда - - Если ПриоритетОбъектаОбмена = Перечисления.ПриоритетыОбъектовОбмена.ПриоритетПоступившегоПриОбменеОбъектаВыше Тогда - ЗаписатьОбъектВИБ(Объект, ТипОбъекта); - КонецЕсли; - + Объект.ДополнительныеСвойства.Вставить("ОбменДанными", Новый Структура("АнализДанных", Не РежимЗагрузкиДанныхВИнформационнуюБазу())); + + Если ПриоритетОбъектаОбмена <> Перечисления.ПриоритетыОбъектовОбмена.ПриоритетПоступившегоПриОбменеОбъектаВыше Тогда + СтандартныеПодсистемыСервер.ПриПолученииДанныхОтПодчиненного(Объект, ПолучениеЭлемента, ОтправкаНазад, УзелОбменаЗагрузкаДанных); Иначе - - ЗаписатьОбъектВИБ(Объект, ТипОбъекта); - + СтандартныеПодсистемыСервер.ПриПолученииДанныхОтГлавного(Объект, ПолучениеЭлемента, ОтправкаНазад, УзелОбменаЗагрузкаДанных); КонецЕсли; + Если ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать Тогда + Возврат Неопределено; + КонецЕсли; + + ЗаписатьОбъектВИБ(Объект, ТипОбъекта); + КонецЕсли; - Возврат Объект; - -КонецФункции - -Функция ПолучитьДанныеОбъектаСтрокой(Объект) - - СтроковоеПредставлениеОбъекта = ""; - - ЗаписьXML = Новый ЗаписьXML; - ЗаписьXML.УстановитьСтроку(); - - ЗаписатьXML(ЗаписьXML, Объект, НазначениеТипаXML.Явное); - - СтроковоеПредставлениеОбъекта = ЗаписьXML.Закрыть(); - - Возврат СтроковоеПредставлениеОбъекта; - -КонецФункции - -//функция проверяет наличие коллизий при загрузке -// и выдает информацию есть ли коллизия при обмене -Функция ПроверитьНаличиеКоллизийДляОбъекта(Объект, ИмяТипаОбъекта, ПриоритетОбъектаОбмена, - ДополнительнаяИнформация = "", УникальныйИдентификаторСтрокой = "") - - Попытка - ЕстьКоллизия = ПланыОбмена.ИзменениеЗарегистрировано(УзелОбменаЗагрузкаДанных, Объект); - Исключение - ЕстьКоллизия = Ложь; - КонецПопытки; - - // выполняем дополнительную проверку на изменение объекта - // если объект до коллизии и после коллизии не изменен, - // то считаем, что коллизии нет - Если ЕстьКоллизия Тогда - - СтрокаОбъектаДоИзменения = ПолучитьДанныеОбъектаСтрокойДоИзменения(Объект, ДополнительнаяИнформация, ИмяТипаОбъекта); - СтрокаОбъектаПослеИзменения = ПолучитьДанныеОбъектаСтрокойПослеИзменения(Объект, ИмяТипаОбъекта); - - // если значения совпадают, то коллизии нет - Если СтрокаОбъектаДоИзменения = СтрокаОбъектаПослеИзменения Тогда - - ЕстьКоллизия = Ложь; - - КонецЕсли; - - КонецЕсли; - - // при наличии коллизии делаем запись в ЖР - Если ЕстьКоллизия Тогда - - КСообщенияОбОшибках = ?(ПриоритетОбъектаОбмена = Перечисления.ПриоритетыОбъектовОбмена.ПриоритетПоступившегоПриОбменеОбъектаВыше, 81, 82); - - ЗП = Новый Структура; - - Если ОбщегоНазначения.ЭтоСсылка(ТипЗнч(Объект)) Тогда - - ЗП.Вставить("Данные", ОбщегоНазначения.РасширенноеПредставлениеОбъекта(Объект.Ссылка)); - - КонецЕсли; - - ЗаписатьВПротоколВыполнения(КСообщенияОбОшибках, ЗП, Ложь); - - МетаданныеОбъекта = Объект.Метаданные(); - - Если ИспользуетсяВерсионирование() И (ОбщегоНазначения.ЭтоДокумент(МетаданныеОбъекта) Или ОбщегоНазначения.ЭтоСправочник(МетаданныеОбъекта)) Тогда - - Если ОбщегоНазначения.СсылкаСуществует(Объект.Ссылка) Тогда - - ОбъектВБазе = Объект.Ссылка.ПолучитьОбъект(); - ОбменДаннымиСервер.ПриСозданииВерсииОбъекта(ОбъектВБазе, , Перечисления["ТипыВерсийОбъекта"].ИзмененоПользователем,,,Истина); - - КонецЕсли; - - Если ПриоритетОбъектаОбмена <> Перечисления.ПриоритетыОбъектовОбмена.ПриоритетПоступившегоПриОбменеОбъектаВыше Тогда - - Комментарий = НСтр("ru = 'Непринятые данные (автоматическое разрешение коллизий).'"); - ОбменДаннымиСервер.ПриСозданииВерсииОбъекта(Объект, УзелОбменаЗагрузкаДанных, - Перечисления["ТипыВерсийОбъекта"].НепринятыеДанныеПоКоллизии, Комментарий, УникальныйИдентификаторСтрокой, Истина); - - КонецЕсли; - - КонецЕсли; - - КонецЕсли; - - Возврат ЕстьКоллизия; - -КонецФункции - -Функция ПолучитьДанныеОбъектаСтрокойДоИзменения(Объект, ДополнительнаяИнформация, ИмяТипаОбъекта) - - // возвращаемое значение функции - СтрокаОбъекта = ""; - - Если ИмяТипаОбъекта = "Константы" Тогда - - // получаем значение константы из ИБ - СтрокаОбъекта = XMLСтрока(Константы[ДополнительнаяИнформация].Получить()); - - ИначеЕсли ИмяТипаОбъекта = "РегистрСведений" Тогда - - СтарыйНаборЗаписей = РегистрыСведений[ДополнительнаяИнформация].СоздатьНаборЗаписей(); - - Для Каждого ЗначениеОтбора Из Объект.Отбор Цикл - - Если ЗначениеОтбора.Использование = Ложь Тогда - Продолжить; - КонецЕсли; - - СтрокаОтбора = СтарыйНаборЗаписей.Отбор.Найти(ЗначениеОтбора.Имя); - СтрокаОтбора.Значение = ЗначениеОтбора.Значение; - СтрокаОтбора.Использование = Истина; - - КонецЦикла; - - СтарыйНаборЗаписей.Прочитать(); - - // получаем набор записей регистра из ИБ с отбором как у Объекта - СтрокаОбъекта = ПолучитьДанныеОбъектаСтрокой(СтарыйНаборЗаписей); - - Иначе - - Если ОбщегоНазначения.СсылкаСуществует(Объект.Ссылка) Тогда - - // получаем представление объекта из ИБ по ссылке - СтрокаОбъекта = ПолучитьДанныеОбъектаСтрокой(Объект.Ссылка.ПолучитьОбъект()); - - Иначе - - СтрокаОбъекта = "Объект удален"; - - КонецЕсли; - - КонецЕсли; - - Возврат СтрокаОбъекта; -КонецФункции - -Функция ПолучитьДанныеОбъектаСтрокойПослеИзменения(Объект, ИмяТипаОбъекта) - - // возвращаемое значение функции - СтрокаОбъекта = ""; - - Если ИмяТипаОбъекта = "Константы" Тогда - - СтрокаОбъекта = XMLСтрока(Объект.Значение); - - Иначе - - СтрокаОбъекта = ПолучитьДанныеОбъектаСтрокой(Объект); - - КонецЕсли; - - Возврат СтрокаОбъекта + Возврат Объект; КонецФункции @@ -8970,8 +8937,7 @@ ВыполнитьОбработчик_Конвертация_ПередЗагрузкойОбъекта(ФайлОбмена, Отказ, Нпп, Источник, ИмяПравила, Правило, ГенерироватьНовыйНомерИлиКодЕслиНеУказан,ТипОбъектаСтрокой, - ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения - ); + ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения); КонецЕсли; @@ -9007,8 +8973,7 @@ ВыполнитьОбработчик_ПКО_ПередЗагрузкойОбъекта(ФайлОбмена, Отказ, Нпп, Источник, ИмяПравила, Правило, ГенерироватьНовыйНомерИлиКодЕслиНеУказан, ТипОбъектаСтрокой, - ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения - ); + ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения); КонецЕсли; @@ -9034,6 +8999,7 @@ НППГлобальнойСсылки = 0; НппСсылки = 0; ПараметрыОбъекта = Неопределено; + ЗаписатьОбъект = Истина; // флаг определяет был ли объект найден по полям поиска в режиме сопоставления объектов или нет; // если флаг установлен, то в регистр сопоставления добавляется информация о сопоставлении GUID ссылки источника и приемника @@ -9185,8 +9151,7 @@ РегистрироватьОбъектНаУзлеОтправителе, УникальныйИдентификаторСтрокой, ИмяПравила, - СоответствияОбъектовИнформационныхБаз - ); + СоответствияОбъектовИнформационныхБаз); Если ИмяТипаОбъекта = "Перечисление" Тогда @@ -9271,8 +9236,8 @@ Если Объект = Неопределено Тогда ОбъектНайден = Ложь; - - // Обработчик события ПриЗагрузкеОбъекта + + // Обработчик события ПриЗагрузкеОбъекта Если ЕстьОбработчикПриЗагрузке Тогда @@ -9295,12 +9260,11 @@ ТипОбъекта, Объект, "ПриЗагрузкеОбъекта"); КонецПопытки; - + КонецЕсли; КонецЕсли; - Имя = одАтрибут(ФайлОбмена, ТипСтрока, "Имя"); НеЗамещатьСвойство = одАтрибут(ФайлОбмена, ТипБулево, "НеЗамещать"); НеОчищать = одАтрибут(ФайлОбмена, ТипБулево, "НеОчищать"); @@ -9348,8 +9312,7 @@ Иначе ВыполнитьОбработчик_Конвертация_ПослеЗагрузкиОбъекта(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, - ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден - ); + ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден); КонецЕсли; @@ -9375,8 +9338,7 @@ Иначе ВыполнитьОбработчик_ПКО_ПослеЗагрузкиОбъекта(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, - ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден, Правило - ); + ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден, Правило); КонецЕсли; @@ -9392,7 +9354,15 @@ ПолучениеЭлемента = ПолучениеЭлементаДанных.Авто; ОтправкаНазад = Ложь; - СтандартныеПодсистемыСервер.ПриПолученииДанныхОтПодчиненного(Объект, ПолучениеЭлемента, ОтправкаНазад); + Если ИмяТипаОбъекта <> "Перечисление" Тогда + Объект.ДополнительныеСвойства.Вставить("ОбменДанными", Новый Структура("АнализДанных", Не РежимЗагрузкиДанныхВИнформационнуюБазу())); + КонецЕсли; + + Если ПриоритетОбъектаОбмена <> Перечисления.ПриоритетыОбъектовОбмена.ПриоритетПоступившегоПриОбменеОбъектаВыше Тогда + СтандартныеПодсистемыСервер.ПриПолученииДанныхОтПодчиненного(Объект, ПолучениеЭлемента, ОтправкаНазад, УзелОбменаЗагрузкаДанных); + Иначе + СтандартныеПодсистемыСервер.ПриПолученииДанныхОтГлавного(Объект, ПолучениеЭлемента, ОтправкаНазад, УзелОбменаЗагрузкаДанных); + КонецЕсли; Если ПолучениеЭлемента = ПолучениеЭлементаДанных.Игнорировать Тогда Отказ = Истина; @@ -9433,9 +9403,9 @@ КонецЕсли; - КонецЕсли; + КонецЕсли; - РежимПроведения = ?(РежимПроведения = "Оперативный", РежимПроведенияДокумента.Оперативный, РежимПроведенияДокумента.Неоперативный); + РежимПроведения = ?(РежимПроведения = "Оперативный", РежимПроведенияДокумента.Оперативный, РежимПроведенияДокумента.Неоперативный); // если хотим провести документ, помеченный на удаление, то пометку удаления снимаем ... Если Объект.ПометкаУдаления @@ -9453,60 +9423,34 @@ Попытка // записываем документ, информацию о необходимости его провести или отменить проведение отдельно фиксируем - - // записываем документ - проверяем наличие коллизий - ЕстьКоллизия = ПроверитьНаличиеКоллизийДляОбъекта(Объект, ТипОбъекта, ПриоритетОбъектаОбмена, ИмяКонстанты, УникальныйИдентификаторСтрокой); - - ЗаписатьОбъект = Истина; - КоллизияПринята = Ложь; - - Если ЕстьКоллизия Тогда + // документы которые просто нужно записать - так и записываем + Если РежимЗаписи = РежимЗаписиДокумента.Запись Тогда - Если ПриоритетОбъектаОбмена <> Перечисления.ПриоритетыОбъектовОбмена.ПриоритетПоступившегоПриОбменеОбъектаВыше Тогда - - ЗаписатьОбъект = Ложь; - - Иначе - - КоллизияПринята = Истина; - - КонецЕсли; + ЗаписатьОбъектВИБ(Объект, ТипОбъекта,, ОтправкаНазад); - КонецЕсли; - - Если ЗаписатьОбъект Тогда + ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда - // документы которые просто нужно записать - так и записываем - Если РежимЗаписи = РежимЗаписиДокумента.Запись Тогда + ОтменитьПроведениеОбъектаВИБ(Объект, ТипОбъекта, ЗаписатьОбъект); + + ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда + + // Отключаем механизм регистрации объектов при отмене проведения документа. + // Механизм регистрации будет выполнен при отложенном проведении документов + // (оптимизация производительности загрузки данных). + Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + + ОтменитьПроведениеОбъектаВИБ(Объект, ТипОбъекта, ЗаписатьОбъект); + + // Если документ был успешно записан и создана ссылка, + // то помещаем документ в очередь для проведения. + Если ЗаписатьОбъект + И Объект <> Неопределено + И Объект.Ссылка <> Неопределено Тогда - ЗаписатьОбъектВИБ(Объект, ТипОбъекта,, ОтправкаНазад, УникальныйИдентификаторСтрокой); - - ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда - - ОтменитьПроведениеОбъектаВИБ(Объект, ТипОбъекта, ЗаписатьОбъект); - - ИначеЕсли РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда - - // Отключаем механизм регистрации объектов при отмене проведения документа. - // Механизм регистрации будет выполнен при отложенном проведении документов - // (оптимизация производительности загрузки данных). - Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); - - ОтменитьПроведениеОбъектаВИБ(Объект, ТипОбъекта, ЗаписатьОбъект, УникальныйИдентификаторСтрокой); - - // Если документ был успешно записан и создана ссылка, - // то помещаем документ в очередь для проведения. - Если ЗаписатьОбъект - И Объект <> Неопределено - И Объект.Ссылка <> Неопределено Тогда - - СтрокаТаблицы = ДокументыДляОтложенногоПроведения().Добавить(); - СтрокаТаблицы.ДокументСсылка = Объект.Ссылка; - СтрокаТаблицы.ДатаДокумента = Объект.Дата; - СтрокаТаблицы.ЭтоКоллизия = КоллизияПринята; - - КонецЕсли; + СтрокаТаблицы = ДокументыДляОтложенногоПроведения().Добавить(); + СтрокаТаблицы.ДокументСсылка = Объект.Ссылка; + СтрокаТаблицы.ДатаДокумента = Объект.Дата; КонецЕсли; @@ -9567,46 +9511,21 @@ Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда - // если объект подлежит записи - проверим наличие коллизий - ЕстьКоллизия = ПроверитьНаличиеКоллизийДляОбъекта(Объект, ИмяТипаОбъекта, ПриоритетОбъектаОбмена, ИмяКонстанты, УникальныйИдентификаторСтрокой); + // Отключаем механизм регистрации объектов при отмене проведения документа. + // Механизм регистрации будет выполнен при отложенном проведении документов + // (оптимизация производительности загрузки данных). + Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); - ЗаписатьОбъект = Истина; - КоллизияПринята = Ложь; + ЗаписатьОбъектВИБ(Объект, ТипОбъекта, ЗаписатьОбъект, ОтправкаНазад); - Если ЕстьКоллизия Тогда + // Если объект был успешно записан и создана ссылка, + // то помещаем объект в очередь для записи. + Если ЗаписатьОбъект + И Объект <> Неопределено + И Объект.Ссылка <> Неопределено Тогда - Если ПриоритетОбъектаОбмена <> Перечисления.ПриоритетыОбъектовОбмена.ПриоритетПоступившегоПриОбменеОбъектаВыше Тогда - - ЗаписатьОбъект = Ложь; - - Иначе - - КоллизияПринята = Истина; - - КонецЕсли; - - КонецЕсли; - - Если ЗаписатьОбъект Тогда - - // Отключаем механизм регистрации объектов при отмене проведения документа. - // Механизм регистрации будет выполнен при отложенном проведении документов - // (оптимизация производительности загрузки данных). - Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); - - ЗаписатьОбъектВИБ(Объект, ТипОбъекта,, ОтправкаНазад, УникальныйИдентификаторСтрокой); - - // Если объект был успешно записан и создана ссылка, - // то помещаем объект в очередь для записи. - Если ЗаписатьОбъект - И Объект <> Неопределено - И Объект.Ссылка <> Неопределено Тогда - - СтрокаТаблицы = ОбъектыДляОтложеннойЗаписи().Добавить(); - СтрокаТаблицы.ОбъектСсылка = Объект.Ссылка; - СтрокаТаблицы.ЭтоКоллизия = КоллизияПринята; - - КонецЕсли; + СтрокаТаблицы = ОбъектыДляОтложеннойЗаписи().Добавить(); + СтрокаТаблицы.ОбъектСсылка = Объект.Ссылка; КонецЕсли; @@ -9622,7 +9541,7 @@ КонецЕсли; ЭтоСсылочныйТипОбъекта = НЕ(ИмяТипаОбъекта = "РегистрСведений" - ИЛИ ИмяТипаОбъекта = "Константы"); + ИЛИ ИмяТипаОбъекта = "Константы"); Прервать; @@ -9658,7 +9577,7 @@ Возврат Объект; -КонецФункции // ПрочитатьОбъект() +КонецФункции //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ ВЫГРУЗКИ ДАННЫХ ПО ПРАВИЛАМ ОБМЕНА @@ -9730,8 +9649,7 @@ Иначе ВыполнитьОбработчик_ПКГС_ПередОбработкойВыгрузки(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, - ПКГС, Отказ, КоллекцияОбъектов, НеЗамещать, УзелКоллекцииСвойств, НеОчищать - ); + ПКГС, Отказ, КоллекцияОбъектов, НеЗамещать, УзелКоллекцииСвойств, НеОчищать); КонецЕсли; @@ -9835,8 +9753,7 @@ Иначе ВыполнитьОбработчик_ПКГС_ПослеОбработкиВыгрузки(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, - ПКО, ПКГС, Отказ, УзелКоллекцииСвойств, УзелКоллекцииОбъектов - ); + ПКО, ПКГС, Отказ, УзелКоллекцииСвойств, УзелКоллекцииОбъектов); КонецЕсли; @@ -9982,8 +9899,7 @@ Иначе ВыполнитьОбработчик_ПКГС_ПередВыгрузкойСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, - ПКГС, Отказ, ОбъектКоллекции, УзелКоллекцииСвойств, УзелКоллекцииОбъектов - ); + ПКГС, Отказ, ОбъектКоллекции, УзелКоллекцииСвойств, УзелКоллекцииОбъектов); КонецЕсли; @@ -10030,8 +9946,7 @@ ВыполнитьОбработчик_ПКГС_ПриВыгрузкеСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКГС, ОбъектКоллекции, УзелКоллекцииОбъектов, УзелОбъектаКоллекции, - УзелКоллекцииСвойств, СтандартнаяОбработка - ); + УзелКоллекцииСвойств, СтандартнаяОбработка); КонецЕсли; @@ -10077,8 +9992,7 @@ ВыполнитьОбработчик_ПКГС_ПослеВыгрузкиСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКГС, Отказ, ОбъектКоллекции, УзелКоллекцииОбъектов, - УзелКоллекцииСвойств, УзелОбъектаКоллекции - ); + УзелКоллекцииСвойств, УзелОбъектаКоллекции); КонецЕсли; @@ -10138,8 +10052,7 @@ Иначе ВыполнитьОбработчик_ПКГС_ПослеОбработкиВыгрузки(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, - ПКО, ПКГС, Отказ, УзелКоллекцииСвойств, УзелКоллекцииОбъектов - ); + ПКО, ПКГС, Отказ, УзелКоллекцииСвойств, УзелКоллекцииОбъектов); КонецЕсли; @@ -10302,8 +10215,7 @@ ВыполнитьОбработчик_ПКС_ПередВыгрузкойСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, ТипПриемника, ИмяПКО, ИмяПКОВидСубконто, Пусто, Выражение, УзелКоллекцииСвойств, НеЗамещать, - ВыгрузитьОбъект - ); + ВыгрузитьОбъект); КонецЕсли; @@ -10356,8 +10268,7 @@ ВыполнитьОбработчик_ПКС_ПриВыгрузкеСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, КлючИЗначение, ВидСубконто, Субконто, Пусто, ИмяПКО, ПКОСвойств,УзелСвойства, УзелКоллекцииСвойств, - ИмяПКОВидСубконто, ВыгрузитьОбъект - ); + ИмяПКОВидСубконто, ВыгрузитьОбъект); КонецЕсли; @@ -10491,8 +10402,7 @@ ВыполнитьОбработчик_ПКС_ПослеВыгрузкиСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, КлючИЗначение, ВидСубконто, Субконто, ИмяПКО, ИмяПКОВидСубконто, ПКОСвойств, УзелСвойства, - УзелСсылки, УзелКоллекцииСвойств, УзелСубконто - ); + УзелСсылки, УзелКоллекцииСвойств, УзелСубконто); КонецЕсли; @@ -10952,8 +10862,7 @@ ВыгрузитьГруппуСвойств( Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКС, УзелКоллекцииСвойств, - ВыгрузитьТолькоСсылку, СписокВременныхФайлов, ВыгрузкаСтрокиНабораЗаписейРегистра - ); + ВыгрузитьТолькоСсылку, СписокВременныхФайлов, ВыгрузкаСтрокиНабораЗаписейРегистра); Продолжить; @@ -10988,8 +10897,7 @@ ВыполнитьОбработчик_ПКС_ПередВыгрузкойСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, ТипПриемника, ИмяПКО, ИмяПКОВидСубконто, Пусто, Выражение, УзелКоллекцииСвойств, НеЗамещать, - ВыгрузитьОбъект - ); + ВыгрузитьОбъект); КонецЕсли; @@ -11109,8 +11017,7 @@ ВыполнитьОбработчик_ПКС_ПриВыгрузкеСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, КлючИЗначение, ВидСубконто, Субконто, Пусто, ИмяПКО, ПКОСвойств,УзелСвойства, УзелКоллекцииСвойств, - ИмяПКОВидСубконто, ВыгрузитьОбъект - ); + ИмяПКОВидСубконто, ВыгрузитьОбъект); КонецЕсли; @@ -11307,8 +11214,7 @@ ВыполнитьОбработчик_ПКС_ПослеВыгрузкиСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, КлючИЗначение, ВидСубконто, Субконто, ИмяПКО, ИмяПКОВидСубконто, ПКОСвойств, УзелСвойства, - УзелСсылки, УзелКоллекцииСвойств, УзелСубконто - ); + УзелСсылки, УзелКоллекцииСвойств, УзелСубконто); КонецЕсли; @@ -12013,7 +11919,7 @@ Выборка = ПолучитьВыборкуДляВыгрузкиПоПроизвольномуАлгоритму(ВыборкаДанных); - Если Выборка <> Неопределено Тогда + Если Выборка <> Неопределено Тогда Пока Выборка.Следующий() Цикл @@ -12162,6 +12068,8 @@ СтруктураПравилОбмена = Новый Структура; + СтруктураПравилОбмена.Вставить("ВерсияФорматаХраненияПравил", ВерсияФорматаХраненияПравилОбмена()); + СтруктураПравилОбмена.Вставить("Конвертация", Конвертация); СтруктураПравилОбмена.Вставить("ТаблицаНастройкиПараметров", ТаблицаНастройкиПараметров); @@ -12256,8 +12164,7 @@ СтруктураРеквизитовРегистрации.Вставить(ПКС.Источник); Исключение ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными.Загрузка правил конвертации'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецЦикла; @@ -13180,7 +13087,7 @@ // Выход ИначеЕсли (ИмяУзла = "ПравилаОбмена") И (ПравилаОбмена.ТипУзла = ТипУзлаXMLКонецЭлемента) Тогда - Если РежимОбмена <> "Загрузка" Тогда + Если РежимОбмена <> "Загрузка" Тогда ПравилаОбмена.Закрыть(); КонецЕсли; Прервать; @@ -13339,180 +13246,92 @@ КонецПроцедуры -// Открывает файл сообщения обмена -// Проверяет файл сообщения на соответствие формату -// Зачитывает правила обмена (при необходимости) -// -// Параметры: -// Нет. -// -Процедура ОткрытьФайлОбмена() - - ФайлОбмена = Новый ЧтениеXML; - - Попытка - ФайлОбмена.ОткрытьФайл(ИмяФайлаОбмена); - ФайлОбмена.Прочитать(); - Исключение - СтрокаСообщенияОбОшибке = НСтр("ru = 'Ошибка при загрузке данных: %1'"); - СтрокаСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, ОписаниеОшибки()); - ЗаписатьВПротоколВыполнения(СтрокаСообщенияОбОшибке); - Возврат; - КонецПопытки; - - Если ФайлОбмена.ЛокальноеИмя <> "ФайлОбмена" Тогда - - ЗаписатьВПротоколВыполнения(9); - Возврат; - - КонецЕсли; - - ПолеВерсияФорматаВходящегоСообщенияОбмена = одАтрибут(ФайлОбмена, ТипСтрока, "ВерсияФормата"); - - ФайлОбмена.Прочитать(); - - Если ФайлОбмена.ЛокальноеИмя <> "ПравилаОбмена" Тогда - - ЗаписатьВПротоколВыполнения(9); - Возврат; - - КонецЕсли; - - Если ТаблицаПравилКонвертации.Количество() = 0 Тогда - ЗагрузитьПравилаОбмена(ФайлОбмена, "ЧтениеXML"); - Иначе - одПропустить(ФайлОбмена); - КонецЕсли; - -КонецПроцедуры - -Процедура ВыполнитьЗагрузкуФайлаПакета(ТаблицыДляЗагрузки) +Процедура ВыполнитьВыборочноеЧтениеСообщения(ТаблицыДляЗагрузки) Если ТаблицыДляЗагрузки.Количество() = 0 Тогда Возврат; КонецЕсли; - УстановитьФлагОшибки(Ложь); - - ИнициализироватьКомментарииПриВыгрузкеИЗагрузкеДанных(); - - ИнформацияОПользовательскихПоляхПоискаПриЗагрузкеДанных = Новый Соответствие; - СоответствиеДопПараметровПоиска = Новый Соответствие; - СоответствиеПравилКонвертации = Новый Соответствие; - - // инициализируем ведение протокола обмена - ИнициализироватьВедениеПротоколаОбмена(); - - Если ПустаяСтрока(ИмяФайлаОбмена) Тогда - СтрокаСообщенияОбОшибке = ЗаписатьВПротоколВыполнения(15); - ЗавершитьВедениеПротоколаОбмена(); - Возврат; - КонецЕсли; - - Если КоличествоОбработанныхОбъектовДляОбновленияСтатуса = 0 Тогда - КоличествоОбработанныхОбъектовДляОбновленияСтатуса = 100; - КонецЕсли; - - ГлобальныйСтекНеЗаписанныхОбъектов = Новый Соответствие; - - ПолеСчетчикЗагруженныхОбъектов = Неопределено; - НомерПоследнегоПоискаПоСсылке = 0; - - ИнициализироватьМенеджерыИСообщения(); - - // открываем файл сообщения обмена - // загружаем правила обмена данными (при необходимости) - ОткрытьФайлОбмена(); - - Если ФлагОшибки() Тогда - ЗавершитьВедениеПротоколаОбмена(); - Возврат; - КонецЕсли; - - ИнициализироватьОбработки(); - - // {Обработчик: ПередЗагрузкойДанных} Начало - Отказ = Ложь; - - Если Не ПустаяСтрока(Конвертация.ПередЗагрузкойДанных) Тогда - - Попытка - - Если РежимСовместимостиСБСП20() Тогда - - Выполнить(Конвертация.ПередЗагрузкойДанных); - - Иначе - - ВыполнитьОбработчик_Конвертация_ПередЗагрузкойДанных(ФайлОбмена, Отказ); - - КонецЕсли; - - Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(22, ОписаниеОшибки(), НСтр("ru = 'ПередЗагрузкойДанных (конвертация)'")); - Отказ = Истина; - КонецПопытки; - - КонецЕсли; - - Если Отказ Тогда // Отказ от загрузки данных - ЗавершитьВедениеПротоколаОбмена(); - ФайлОбмена.Закрыть(); - Возврат; - КонецЕсли; - // {Обработчик: ПередЗагрузкойДанных} Окончание - + ЧтениеСообщения = Неопределено; Попытка - ПроизвестиЧтениеДанныхДляТаблиц(ТаблицыДляЗагрузки); + УстановитьФлагОшибки(Ложь); - Исключение - СтрокаСообщенияОбОшибке = НСтр("ru = 'Ошибка при загрузке данных: %1'"); - СтрокаСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщенияОбОшибке, ОписаниеОшибки()); - ЗаписатьВПротоколВыполнения(СтрокаСообщенияОбОшибке,,,,,Истина); - КонецПопытки; - - ФайлОбмена.Закрыть(); - - // {Обработчик: ПослеЗагрузкиДанных} Начало - Если Не ФлагОшибки() Тогда + ИнициализироватьКомментарииПриВыгрузкеИЗагрузкеДанных(); - Если Не ПустаяСтрока(Конвертация.ПослеЗагрузкиДанных) Тогда - - Попытка - - Если РежимСовместимостиСБСП20() Тогда - - Выполнить(Конвертация.ПослеЗагрузкиДанных); - - Иначе - - ВыполнитьОбработчик_Конвертация_ПослеЗагрузкиДанных(); - - КонецЕсли; - - Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(23, ОписаниеОшибки(), НСтр("ru = 'ПослеЗагрузкиДанных (конвертация)'")); - КонецПопытки; - + ИнформацияОПользовательскихПоляхПоискаПриЗагрузкеДанных = Новый Соответствие; + СоответствиеДопПараметровПоиска = Новый Соответствие; + СоответствиеПравилКонвертации = Новый Соответствие; + + // инициализируем ведение протокола обмена + ИнициализироватьВедениеПротоколаОбмена(); + + Если КоличествоОбработанныхОбъектовДляОбновленияСтатуса = 0 Тогда + КоличествоОбработанныхОбъектовДляОбновленияСтатуса = 100; КонецЕсли; - КонецЕсли; - // {Обработчик: ПослеЗагрузкиДанных} Окончание - - Если Не ФлагОшибки() Тогда + ГлобальныйСтекНеЗаписанныхОбъектов = Новый Соответствие; + + ПолеСчетчикЗагруженныхОбъектов = Неопределено; + НомерПоследнегоПоискаПоСсылке = 0; + + ИнициализироватьМенеджерыИСообщения(); + + НачатьЧтениеСообщения(ЧтениеСообщения, Истина); + + Если ИспользоватьТранзакции Тогда + НачатьТранзакцию(); + КонецЕсли; + Попытка + + ПроизвестиЧтениеДанныхДляТаблиц(ТаблицыДляЗагрузки); + + Если ФлагОшибки() Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки при загрузке данных.'"); + КонецЕсли; + + // отложенная запись того, что не записали + ПровестиЗаписьНеЗаписанныхОбъектов(); + + Если ФлагОшибки() Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки при загрузке данных.'"); + КонецЕсли; + + ЗакончитьЧтениеСообщения(ЧтениеСообщения); + + Если ИспользоватьТранзакции Тогда + ЗафиксироватьТранзакцию(); + КонецЕсли; + Исключение + Если ИспользоватьТранзакции Тогда + ОтменитьТранзакцию(); + КонецЕсли; + ПрерватьЧтениеСообщения(ЧтениеСообщения); + ВызватьИсключение; + КонецПопытки; // выполняем проведение документов в очереди ВыполнитьОтложенноеПроведениеДокументов(); ВыполнитьОтложеннуюЗаписьОбъектов(); - КонецЕсли; + Исключение + Если ЧтениеСообщения <> Неопределено + И ЧтениеСообщения.СообщениеБылоПринятоРанее Тогда + ЗаписатьВПротоколВыполнения(174,,,,,, + Перечисления.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято + ); + Иначе + ЗаписатьВПротоколВыполнения(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); + КонецЕсли; + КонецПопытки; ЗавершитьВедениеПротоколаОбмена(); КонецПроцедуры -Процедура ПроизвестиЧтениеДанных(СтрокаСообщенияОбОшибке = "") +Процедура ПроизвестиЧтениеДанных(ЧтениеСообщения) + + СтрокаСообщенияОбОшибке = ""; Пока ФайлОбмена.Прочитать() Цикл @@ -13548,105 +13367,17 @@ ОбработатьОкончаниеЧтенияНовогоЭлемента(ПоследнийОбъектЗагрузки); - ИначеЕсли ИмяУзла = "ПравилаОбмена" Тогда - - Если ТаблицаПравилКонвертации.Количество() = 0 Тогда - ЗагрузитьПравилаОбмена(ФайлОбмена, "ЧтениеXML"); - Иначе - одПропустить(ФайлОбмена, ИмяУзла); - КонецЕсли; - - ИначеЕсли ИмяУзла = "НастройкаПользовательскогоПоиска" Тогда - - ЗагрузитьИнформациюОПользовательскихПоляхПоиска(); - - ИначеЕсли ИмяУзла = "ИнформацияОТипахДанных" Тогда - - Если СоответствиеТиповДанныхДляЗагрузки().Количество() > 0 Тогда - - одПропустить(ФайлОбмена, ИмяУзла); - - Иначе - ЗагрузитьИнформациюОТипахДанных(); - КонецЕсли; - - ИначеЕсли ИмяУзла = "ЗначениеПараметра" Тогда - - ЗагрузитьЗначенияПараметровОбменаДанными(); - - ИначеЕсли ИмяУзла = "АлгоритмПослеЗагрузкиПараметров" Тогда - - Отказ = Ложь; - ПричинаОтказа = ""; - - ТекстАлгоритма = одЗначениеЭлемента(ФайлОбмена, ТипСтрока); - - Если Не ПустаяСтрока(ТекстАлгоритма) Тогда - - Попытка - - Если РежимСовместимостиСБСП20() Тогда - - Выполнить(ТекстАлгоритма); - - Иначе - - ВыполнитьОбработчик_Конвертация_ПослеЗагрузкиПараметров(ФайлОбмена, Отказ, ПричинаОтказа); - - КонецЕсли; - - Если Отказ = Истина Тогда - - Если Не ПустаяСтрока(ПричинаОтказа) Тогда - - СтрокаСообщения = НСтр("ru = 'Загрузка данных отменена по причине: %1'"); - СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ПричинаОтказа); - ВызватьИсключение СтрокаСообщения; - Иначе - ВызватьИсключение НСтр("ru = 'Загрузка данных отменена'"); - КонецЕсли; - - КонецЕсли; - - Исключение - - ЗП = ПолучитьСтруктуруЗаписиПротокола(78, ОписаниеОшибки()); - ЗП.Обработчик = "ПослеЗагрузкиПараметров"; - СтрокаСообщенияОбОшибке = ЗаписатьВПротоколВыполнения(78, ЗП, Истина); - - Если Не ПродолжитьПриОшибке Тогда - ВызватьИсключение СтрокаСообщенияОбОшибке; - КонецЕсли; - - КонецПопытки; - - КонецЕсли; - - ИначеЕсли ИмяУзла = "ДанныеПоОбмену" Тогда - - ПрочитатьДанныеПоОбмену(); - - одПропустить(ФайлОбмена, ИмяУзла); - - Если ФлагОшибки() Тогда - Прервать; - КонецЕсли; - - ИначеЕсли ИмяУзла = "ОбщиеДанныеУзлов" Тогда - - ПрочитатьОбщиеДанныеУзлов(); - - одПропустить(ФайлОбмена, ИмяУзла); - - Если ФлагОшибки() Тогда - Прервать; - КонецЕсли; - ИначеЕсли ИмяУзла = "КорректировкаИнформацииОРегистрацииОбъекта" Тогда + ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Истина; + ПрочитатьКорректировкуИнформацииСопоставления(); - ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Истина; + одПропустить(ФайлОбмена, ИмяУзла); + + ИначеЕсли ИмяУзла = "ОбщиеДанныеУзлов" Тогда + + ПрочитатьОбщиеДанныеУзлов(ЧтениеСообщения); одПропустить(ФайлОбмена, ИмяУзла); @@ -13656,17 +13387,17 @@ Иначе - одПропустить(ФайлОбмена, ИмяУзла); + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); КонецЕсли; // прерываем цикл чтения файла в случае возникновения ошибки загрузки Если ФлагОшибки() Тогда - Прервать; + ВызватьИсключение НСтр("ru = 'Возникли ошибки при загрузке данных.'"); КонецЕсли; КонецЦикла; - + КонецПроцедуры Процедура ПроизвестиЧтениеДанныхДляТаблиц(ТаблицыДляЗагрузки) @@ -13742,20 +13473,28 @@ КонецЕсли; - ИначеЕсли ИмяУзла = "НаборЗаписейРегистра" И РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда + ИначеЕсли ИмяУзла = "НаборЗаписейРегистра" Тогда - ИмяПравила = одАтрибут(ФайлОбмена, ТипСтрока, "ИмяПравила"); - - ПКО = Правила[ИмяПравила]; - - ТипИсточникаСтрокой = ПКО.ТипИсточника; - ТипПриемникаСтрокой = ПКО.ТипПриемника; - - КлючТаблицыДанных = ОбменДаннымиСервер.КлючТаблицыДанных(ТипИсточникаСтрокой, ТипПриемникаСтрокой, Ложь); - - Если ТаблицыДляЗагрузки.Найти(КлючТаблицыДанных) <> Неопределено Тогда + Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда - ОбработатьОкончаниеЧтенияНовогоЭлемента(ПрочитатьНаборЗаписейРегистра()); + ИмяПравила = одАтрибут(ФайлОбмена, ТипСтрока, "ИмяПравила"); + + ПКО = Правила[ИмяПравила]; + + ТипИсточникаСтрокой = ПКО.ТипИсточника; + ТипПриемникаСтрокой = ПКО.ТипПриемника; + + КлючТаблицыДанных = ОбменДаннымиСервер.КлючТаблицыДанных(ТипИсточникаСтрокой, ТипПриемникаСтрокой, Ложь); + + Если ТаблицыДляЗагрузки.Найти(КлючТаблицыДанных) <> Неопределено Тогда + + ОбработатьОкончаниеЧтенияНовогоЭлемента(ПрочитатьНаборЗаписейРегистра()); + + Иначе + + одПропустить(ФайлОбмена, ИмяУзла); + + КонецЕсли; Иначе @@ -13828,37 +13567,17 @@ одПропустить(ФайлОбмена, ИмяУзла); - ИначеЕсли ИмяУзла = "ПравилаОбмена" Тогда + ИначеЕсли ИмяУзла = "ИнформацияОРегистрацииОбъекта" Тогда - Если ТаблицаПравилКонвертации.Количество() = 0 Тогда - ЗагрузитьПравилаОбмена(ФайлОбмена, "ЧтениеXML"); - Иначе - одПропустить(ФайлОбмена); - КонецЕсли; + одПропустить(ФайлОбмена, ИмяУзла); // В режиме выборочного чтения сообщения пропускаем элемент - ИначеЕсли ИмяУзла = "ДанныеПоОбмену" Тогда + ИначеЕсли ИмяУзла = "КорректировкаИнформацииОРегистрацииОбъекта" Тогда - ПрочитатьДанныеПоОбмену(); + одПропустить(ФайлОбмена, ИмяУзла); // В режиме выборочного чтения сообщения пропускаем элемент - одПропустить(ФайлОбмена, ИмяУзла); + ИначеЕсли ИмяУзла = "ОбщиеДанныеУзлов" Тогда - Если ФлагОшибки() Тогда - Прервать; - КонецЕсли; - - ИначеЕсли ИмяУзла = "ИнформацияОТипахДанных" Тогда - - Если СоответствиеТиповДанныхДляЗагрузки().Количество() > 0 Тогда - - одПропустить(ФайлОбмена, ИмяУзла); - - Иначе - ЗагрузитьИнформациюОТипахДанных(); - КонецЕсли; - - ИначеЕсли ИмяУзла = "ЗначениеПараметра" Тогда - - ЗагрузитьЗначенияПараметровОбменаДанными(); + одПропустить(ФайлОбмена, ИмяУзла); // В режиме выборочного чтения сообщения пропускаем элемент ИначеЕсли (ИмяУзла = "ФайлОбмена") И (ФайлОбмена.ТипУзла = ТипУзлаXMLКонецЭлемента) Тогда @@ -13866,15 +13585,20 @@ Иначе - одПропустить(ФайлОбмена, ИмяУзла); + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); КонецЕсли; - КонецЦикла; + // прерываем цикл чтения файла в случае возникновения ошибки + Если ФлагОшибки() Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки при загрузке данных.'"); + КонецЕсли; + КонецЦикла; + КонецПроцедуры -Процедура ПроизвестиЧтениеДанныхВРежимеАнализа() +Процедура ПроизвестиЧтениеДанныхВРежимеАнализа(ЧтениеСообщения) Пока ФайлОбмена.Прочитать() Цикл @@ -13967,23 +13691,102 @@ ИначеЕсли ИмяУзла = "ИнформацияОРегистрацииОбъекта" Тогда - ПрочитатьИнформациюОРегистрацииОбъекта(); - ЕстьИнформацияОРегистрацииОбъекта = Истина; + ПоследнийОбъектЗагрузки = ПрочитатьИнформациюОРегистрацииОбъекта(); + + ОбработатьОкончаниеЧтенияНовогоЭлемента(ПоследнийОбъектЗагрузки); + ИначеЕсли ИмяУзла = "КорректировкаИнформацииОРегистрацииОбъекта" Тогда + ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Истина; + ПрочитатьКорректировкуИнформацииСопоставления(); одПропустить(ФайлОбмена, ИмяУзла); - ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Истина; + ИначеЕсли ИмяУзла = "ОбщиеДанныеУзлов" Тогда - ИначеЕсли ИмяУзла = "ЗначениеПараметра" Тогда + ПрочитатьОбщиеДанныеУзлов(ЧтениеСообщения); + + одПропустить(ФайлОбмена, ИмяУзла); + + ИначеЕсли (ИмяУзла = "ФайлОбмена") И (ФайлОбмена.ТипУзла = ТипУзлаXML.КонецЭлемента) Тогда + + Прервать; // выход + + Иначе + + ВызватьИсключение НСтр("ru = 'Ошибка формата сообщения обмена.'"); + + КонецЕсли; + + // прерываем цикл чтения файла в случае возникновения ошибки + Если ФлагОшибки() Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки при анализе данных.'"); + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ПроизвестиЧтениеДанныхВРежимеВнешнегоСоединения(ЧтениеСообщения) + + СтрокаСообщенияОбОшибке = ""; + + Пока ФайлОбмена.Прочитать() Цикл + + ИмяУзла = ФайлОбмена.ЛокальноеИмя; + + Если ИмяУзла = "Объект" Тогда + + ПоследнийОбъектЗагрузки = ПрочитатьОбъект(); + + ОбработатьОкончаниеЧтенияНовогоЭлемента(ПоследнийОбъектЗагрузки); + + ИначеЕсли ИмяУзла = "НаборЗаписейРегистра" Тогда + + // набор записей регистра + ПоследнийОбъектЗагрузки = ПрочитатьНаборЗаписейРегистра(); + + ОбработатьОкончаниеЧтенияНовогоЭлемента(ПоследнийОбъектЗагрузки); + + ИначеЕсли ИмяУзла = "УдалениеОбъекта" Тогда + + // обработка удаления объекта из информационной базы + ПрочитатьУдалениеОбъекта(СтрокаСообщенияОбОшибке); + + одПропустить(ФайлОбмена, "УдалениеОбъекта"); + + ОбработатьОкончаниеЧтенияНовогоЭлемента("Удаление объекта"); + + ИначеЕсли ИмяУзла = "ИнформацияОРегистрацииОбъекта" Тогда + + ЕстьИнформацияОРегистрацииОбъекта = Истина; + + ПоследнийОбъектЗагрузки = ПрочитатьИнформациюОРегистрацииОбъекта(); + + ОбработатьОкончаниеЧтенияНовогоЭлемента(ПоследнийОбъектЗагрузки); + + ИначеЕсли ИмяУзла = "НастройкаПользовательскогоПоиска" Тогда + + ЗагрузитьИнформациюОПользовательскихПоляхПоиска(); + + ИначеЕсли ИмяУзла = "ИнформацияОТипахДанных" Тогда + + Если СоответствиеТиповДанныхДляЗагрузки().Количество() > 0 Тогда + + одПропустить(ФайлОбмена, ИмяУзла); + + Иначе + ЗагрузитьИнформациюОТипахДанных(); + КонецЕсли; + + ИначеЕсли ИмяУзла = "ЗначениеПараметра" Тогда ЗагрузитьЗначенияПараметровОбменаДанными(); - ИначеЕсли ИмяУзла = "АлгоритмПослеЗагрузкиПараметров" Тогда + ИначеЕсли ИмяУзла = "АлгоритмПослеЗагрузкиПараметров" Тогда Отказ = Ложь; ПричинаОтказа = ""; @@ -14031,22 +13834,9 @@ КонецЕсли; - ИначеЕсли ИмяУзла = "ПравилаОбмена" Тогда - - Если ТаблицаПравилКонвертации.Количество() = 0 Тогда - - // загружаем правила обмена - ЗагрузитьПравилаОбмена(ФайлОбмена, "ЧтениеXML"); - - Иначе - - одПропустить(ФайлОбмена, ИмяУзла); - - КонецЕсли; - ИначеЕсли ИмяУзла = "ДанныеПоОбмену" Тогда - ПрочитатьДанныеПоОбмену(); + ПрочитатьДанныеПоОбмену(ЧтениеСообщения, Ложь); одПропустить(ФайлОбмена, ИмяУзла); @@ -14056,7 +13846,7 @@ ИначеЕсли ИмяУзла = "ОбщиеДанныеУзлов" Тогда - ПрочитатьОбщиеДанныеУзлов(); + ПрочитатьОбщиеДанныеУзлов(Неопределено); одПропустить(ФайлОбмена, ИмяУзла); @@ -14064,9 +13854,17 @@ Прервать; КонецЕсли; - ИначеЕсли (ИмяУзла = "ФайлОбмена") И (ФайлОбмена.ТипУзла = ТипУзлаXML.КонецЭлемента) Тогда + ИначеЕсли ИмяУзла = "КорректировкаИнформацииОРегистрацииОбъекта" Тогда - Прервать; // выход + ПрочитатьКорректировкуИнформацииСопоставления(); + + ЕстьКорректировкаИнформацииОРегистрацииОбъекта = Истина; + + одПропустить(ФайлОбмена, ИмяУзла); + + ИначеЕсли (ИмяУзла = "ФайлОбмена") И (ФайлОбмена.ТипУзла = ТипУзлаXMLКонецЭлемента) Тогда + + Прервать; // выходим Иначе @@ -14074,11 +13872,16 @@ КонецЕсли; + // прерываем цикл чтения файла в случае возникновения ошибки загрузки + Если ФлагОшибки() Тогда + Прервать; + КонецЕсли; + КонецЦикла; - + КонецПроцедуры -Процедура ПрочитатьДанныеПоОбмену() +Процедура ПрочитатьДанныеПоОбмену(ЧтениеСообщения, АнализДанных) ПолеИмяПланаОбмена = одАтрибут(ФайлОбмена, ТипСтрока, "ПланОбмена"); КодОтКого = одАтрибут(ФайлОбмена, ТипСтрока, "ОтКого"); @@ -14096,57 +13899,94 @@ СтрокаСообщения = НСтр("ru = 'Не найден узел обмена для загрузки данных. План обмена: %1, Код: %2'"); СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ИмяПланаОбмена(), КодОтКого); ВызватьИсключение СтрокаСообщения; - КонецЕсли; - Если РежимЗагрузкиДанныхВИнформационнуюБазу() - И УзелОбменаЗагрузкаДанных.НомерПринятого >= НомерСообщения() Тогда - - // Номер сообщения меньше либо равен ранее принятому - ЗаписатьВПротоколВыполнения(174,,,,,Истина, Перечисления.РезультатыВыполненияОбмена.Предупреждение_СообщениеОбменаБылоРанееПринято); - Возврат; - КонецЕсли; + ЧтениеСообщения = Новый Структура("НомерСообщения, НомерПринятого, Отправитель, ОтправительОбъект, СообщениеБылоПринятоРанее, АнализДанных"); + ЧтениеСообщения.Отправитель = УзелОбменаПолучатель; + ЧтениеСообщения.ОтправительОбъект = УзелОбменаПолучатель.ПолучитьОбъект(); + ЧтениеСообщения.НомерСообщения = ПолеНомерСообщения; + ЧтениеСообщения.НомерПринятого = ПолеНомерПринятогоСообщения; + ЧтениеСообщения.СообщениеБылоПринятоРанее = Ложь; + ЧтениеСообщения.АнализДанных = АнализДанных; + ЧтениеСообщения = Новый ФиксированнаяСтруктура(ЧтениеСообщения); - // удаляем регистрацию изменений при необходимости - Если РежимЗагрузкиДанныхВИнформационнуюБазу() И УдалитьРегистрациюИзменений Тогда + ВосстановленаРезервнаяКопия = (ЧтениеСообщения.НомерПринятого > ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЧтениеСообщения.Отправитель, "НомерОтправленного")); + + Если РежимЗагрузкиДанныхВИнформационнуюБазу() Тогда - ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбменаЗагрузкаДанных, НомерПринятогоСообщения()); + НачатьТранзакцию(); + НомерПринятого = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЧтениеСообщения.Отправитель, "НомерПринятого"); + ЗафиксироватьТранзакцию(); - РегистрыСведений.ИзмененияОбщихДанныхУзлов.УдалитьРегистрациюИзменений(УзелОбменаЗагрузкаДанных, НомерПринятогоСообщения()); - - Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияФорматаВходящегоСообщенияОбмена(), "3.1.0.0") >= 0 Тогда + Если НомерПринятого >= ЧтениеСообщения.НомерСообщения Тогда // Номер сообщения меньше либо равен ранее принятому - РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ЗафиксироватьВыполнениеКорректировкиИнформацииСопоставления(УзелОбменаЗагрузкаДанных, НомерПринятогоСообщения()); + ЧтениеСообщенияВременное = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ЧтениеСообщения); + ЧтениеСообщенияВременное.СообщениеБылоПринятоРанее = Истина; + ЧтениеСообщения = Новый ФиксированнаяСтруктура(ЧтениеСообщенияВременное); + + ВызватьИсключение НСтр("ru = 'Сообщение обмена было принято ранее'"); + КонецЕсли; + + УдалитьРегистрациюИзменений = УдалитьРегистрациюИзменений И Не ВосстановленаРезервнаяКопия; + + Если УдалитьРегистрациюИзменений Тогда // удаляем регистрацию изменений + + Если ТранзакцияАктивна() Тогда + ВызватьИсключение НСтр("ru = 'Удаление регистрации изменений данных не может быть выполнено в активной транзакции.'"); + КонецЕсли; + + ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + + РегистрыСведений.ИзмененияОбщихДанныхУзлов.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + + Если ОбщегоНазначенияКлиентСервер.СравнитьВерсии(ВерсияФорматаВходящегоСообщенияОбмена(), "3.1.0.0") >= 0 Тогда + + РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ЗафиксироватьВыполнениеКорректировкиИнформацииСопоставления(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); + + КонецЕсли; + + РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.СнятьПризнакНачальнойВыгрузкиДанных(ЧтениеСообщения.Отправитель, ЧтениеСообщения.НомерПринятого); КонецЕсли; - РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.СнятьПризнакНачальнойВыгрузкиДанных(УзелОбменаЗагрузкаДанных, НомерПринятогоСообщения()); + Если ВосстановленаРезервнаяКопия Тогда + + ЧтениеСообщения.ОтправительОбъект.НомерОтправленного = ЧтениеСообщения.НомерПринятого; + ЧтениеСообщения.ОтправительОбъект.ДополнительныеСвойства.Вставить("Загрузка"); + ЧтениеСообщения.ОтправительОбъект.Записать(); + + ЧтениеСообщенияВременное = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ЧтениеСообщения); + ЧтениеСообщенияВременное.ОтправительОбъект = ЧтениеСообщения.Отправитель.ПолучитьОбъект(); + ЧтениеСообщения = Новый ФиксированнаяСтруктура(ЧтениеСообщенияВременное); + КонецЕсли; КонецЕсли; + // {Обработчик: ПослеПолученияИнформацииОбУзлахОбмена} Начало Если Не ПустаяСтрока(Конвертация.ПослеПолученияИнформацииОбУзлахОбмена) Тогда + + Попытка - Попытка + Если РежимСовместимостиСБСП20() Тогда - Если РежимСовместимостиСБСП20() Тогда - - Выполнить(Конвертация.ПослеПолученияИнформацииОбУзлахОбмена); - - Иначе - - ВыполнитьОбработчик_Конвертация_ПослеПолученияИнформацииОбУзлахОбмена(УзелОбменаЗагрузкаДанных); - - КонецЕсли; + Выполнить(Конвертация.ПослеПолученияИнформацииОбУзлахОбмена); - Исключение - ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(176, ОписаниеОшибки(), "ПослеПолученияИнформацииОбУзлахОбмена (конвертация)"); - КонецПопытки; + Иначе + + ВыполнитьОбработчик_Конвертация_ПослеПолученияИнформацииОбУзлахОбмена(ЧтениеСообщения.Отправитель); + + КонецЕсли; - КонецЕсли; + Исключение + ВызватьИсключение ЗаписатьИнформациюОбОшибкеОбработчикиКонвертации(176, ОписаниеОшибки(), "ПослеПолученияИнформацииОбУзлахОбмена (конвертация)"); + КонецПопытки; + + КонецЕсли; + // {Обработчик: ПослеПолученияИнформацииОбУзлахОбмена} Окончание КонецПроцедуры -Процедура ПрочитатьОбщиеДанныеУзлов() +Процедура ПрочитатьОбщиеДанныеУзлов(ЧтениеСообщения) ФайлОбмена.Прочитать(); @@ -14165,22 +14005,39 @@ НачатьТранзакцию(); Попытка - ОбщийУзел.ДополнительныеСвойства.Вставить("ПолучениеСообщенияОбмена"); - + ОбщийУзел.ДополнительныеСвойства.Вставить("Загрузка"); ОбщийУзел.Записать(); // Обновляем повторноиспользуемые значения механизма ОбменДаннымиВызовСервера.СброситьКэшМеханизмаРегистрацииОбъектов(); - // Удаляем регистрацию изменений на случай, если изменения были ранее зарегистрированы (в случае коллизии изменений) - РегистрыСведений.ИзмененияОбщихДанныхУзлов.УдалитьРегистрациюИзменений(ОбщийУзел.Ссылка); - ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ВызватьИсключение; КонецПопытки; + ОткрытьТранзакцию = Ложь; + Если ТранзакцияАктивна() Тогда + ЗафиксироватьТранзакцию(); + ОткрытьТранзакцию = Истина; + КонецЕсли; + + // Удаляем регистрацию изменений на случай, если изменения были ранее зарегистрированы (в случае коллизии изменений) + РегистрыСведений.ИзмененияОбщихДанныхУзлов.УдалитьРегистрациюИзменений(ОбщийУзел.Ссылка); + + Если ОткрытьТранзакцию Тогда + НачатьТранзакцию(); + КонецЕсли; + + Если ЧтениеСообщения <> Неопределено + И ОбщийУзел.Ссылка = ЧтениеСообщения.Отправитель Тогда + + ЧтениеСообщенияВременное = ОбщегоНазначенияКлиентСервер.СкопироватьСтруктуру(ЧтениеСообщения); + ЧтениеСообщенияВременное.ОтправительОбъект = ЧтениеСообщения.Отправитель.ПолучитьОбъект(); + ЧтениеСообщения = Новый ФиксированнаяСтруктура(ЧтениеСообщенияВременное); + КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -14192,7 +14049,7 @@ КонецЕсли; // сворачиваем таблицу по уникальным полям - ДокументыДляОтложенногоПроведения().Свернуть("ДокументСсылка, ДатаДокумента, ДокументПроведенУспешно", "ЭтоКоллизия"); + ДокументыДляОтложенногоПроведения().Свернуть("ДокументСсылка, ДатаДокумента, ДокументПроведенУспешно"); // сортируем документы по возрастанию даты документов ДокументыДляОтложенногоПроведения().Сортировать("ДатаДокумента"); @@ -14232,15 +14089,10 @@ Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); - Если СтрокаТаблицы.ЭтоКоллизия > 0 И ИспользуетсяВерсионирование() Тогда - - // Заполняем данные создаваемой версии - Объект.ДополнительныеСвойства.Вставить("ЭтоВерсияОбмена", Истина); - Объект.ДополнительныеСвойства.Вставить("ТипВерсииОбъекта", Перечисления["ТипыВерсийОбъекта"].ПринятыеДанныеПоКоллизии); - Объект.ДополнительныеСвойства.Вставить("АвторВерсии", УзелОбменаЗагрузкаДанных); - Объект.ДополнительныеСвойства.Вставить("Комментарий", НСтр("ru = 'Версия получена из другой программы.'")); - - КонецЕсли; + СведенияОВерсииОбъекта = Новый Структура; + СведенияОВерсииОбъекта.Вставить("ОтложеннаяОбработка", Истина); + СведенияОВерсииОбъекта.Вставить("ТипВерсииОбъекта", "ИзмененоПользователем"); + Объект.ДополнительныеСвойства.Вставить("СведенияОВерсииОбъекта", СведенияОВерсииОбъекта); // выполняем попытку проведения документа Объект.Записать(РежимЗаписиДокумента.Проведение); @@ -14266,19 +14118,7 @@ // если документ провести не удалось фиксируем ошибку в ЖР Если Не СтрокаТаблицы.ДокументПроведенУспешно Тогда - СтрокаСообщения = НСтр("ru = 'Ошибка при отложенном проведении документа: %1. Описание ошибки: %2'", - ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); - СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Строка(Объект), ОписаниеОшибки); - ЗаписьЖурналаРегистрацииОбменДанными(СтрокаСообщения, УровеньЖурналаРегистрации.Предупреждение); - - СообщенияПользователю = ПолучитьСообщенияПользователю(Истина); - ТекстОшибки = ""; - Для Каждого Сообщение Из СообщенияПользователю Цикл - ТекстОшибки = ТекстОшибки + Сообщение.Текст + Символы.ПС; - КонецЦикла; - - РегистрыСведений.РезультатыОбменаДанными.ЗарегистрироватьОшибкуПроверкиОбъекта(СтрокаТаблицы.ДокументСсылка, УзелОбменаЗагрузкаДанных, - Объект.Метаданные().Синоним, ТекстОшибки, Перечисления.ТипыПроблемОбменаДанными.НепроведенныйДокумент); + ОбменДаннымиСервер.ЗарегистрироватьОшибкуПроведенияДокумента(Объект, УзелОбменаЗагрузкаДанных, ОписаниеОшибки); КонецЕсли; @@ -14293,7 +14133,7 @@ КонецЕсли; // Сворачиваем таблицу по уникальным полям - ОбъектыДляОтложеннойЗаписи().Свернуть("ОбъектСсылка, ОбъектЗаписанУспешно", "ЭтоКоллизия"); + ОбъектыДляОтложеннойЗаписи().Свернуть("ОбъектСсылка, ОбъектЗаписанУспешно"); // Инициализируем колонку результата записи объекта ОбъектыДляОтложеннойЗаписи().ЗаполнитьЗначения(Ложь, "ОбъектЗаписанУспешно"); @@ -14330,15 +14170,10 @@ Объект.ДополнительныеСвойства.Вставить("ПропуститьПроверкуЗапретаИзменения"); - Если СтрокаТаблицы.ЭтоКоллизия > 0 И ИспользуетсяВерсионирование() Тогда - - // Заполняем данные создаваемой версии - Объект.ДополнительныеСвойства.Вставить("ЭтоВерсияОбмена", Истина); - Объект.ДополнительныеСвойства.Вставить("ТипВерсииОбъекта", Перечисления["ТипыВерсийОбъекта"].ПринятыеДанныеПоКоллизии); - Объект.ДополнительныеСвойства.Вставить("АвторВерсии", УзелОбменаЗагрузкаДанных); - Объект.ДополнительныеСвойства.Вставить("Комментарий", НСтр("ru = 'Версия получена из другой программы.'")); - - КонецЕсли; + СведенияОВерсииОбъекта = Новый Структура; + СведенияОВерсииОбъекта.Вставить("ОтложеннаяОбработка", Истина); + СведенияОВерсииОбъекта.Вставить("ТипВерсииОбъекта", "ИзмененоПользователем"); + Объект.ДополнительныеСвойства.Вставить("СведенияОВерсииОбъекта", СведенияОВерсииОбъекта); // выполняем попытку записи объекта Объект.Записать(); @@ -14364,19 +14199,7 @@ // если документ провести не удалось фиксируем ошибку в ЖР Если Не СтрокаТаблицы.ОбъектЗаписанУспешно Тогда - СтрокаСообщения = НСтр("ru = 'Ошибка при отложенной запись объекта: %1. Описание ошибки: %2'", - ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()); - СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, Строка(Объект), ОписаниеОшибки); - ЗаписьЖурналаРегистрацииОбменДанными(СтрокаСообщения, УровеньЖурналаРегистрации.Предупреждение); - - СообщенияПользователю = ПолучитьСообщенияПользователю(Истина); - ТекстОшибки = ""; - Для Каждого Сообщение Из СообщенияПользователю Цикл - ТекстОшибки = ТекстОшибки + Сообщение.Текст + Символы.ПС; - КонецЦикла; - - РегистрыСведений.РезультатыОбменаДанными.ЗарегистрироватьОшибкуПроверкиОбъекта(СтрокаТаблицы.ОбъектСсылка, УзелОбменаЗагрузкаДанных, - Объект.Метаданные().Синоним, ТекстОшибки, Перечисления.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты); + ОбменДаннымиСервер.ЗарегистрироватьОшибкуЗаписиОбъекта(Объект, УзелОбменаЗагрузкаДанных, ОписаниеОшибки); КонецЕсли; @@ -14840,14 +14663,14 @@ // назначаем номер отправленного сообщения для объектов, выгруженных по ссылке Если ВыгруженныеПоСсылкеОбъекты().Количество() > 0 Тогда - ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, ВыгруженныеПоСсылкеОбъекты()); + ОбменДаннымиСервер.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, ВыгруженныеПоСсылкеОбъекты()); КонецЕсли; // назначаем номер отправленного сообщения для объектов, созданных в текущей сессии выгрузки данных Если СозданныеПриВыгрузкеОбъекты().Количество() > 0 Тогда - ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, СозданныеПриВыгрузкеОбъекты()); + ОбменДаннымиСервер.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, СозданныеПриВыгрузкеОбъекты()); КонецЕсли; @@ -14887,7 +14710,7 @@ Процедура ВыполнитьВыгрузкуРегистраСопоставленияОбъектов(ЗаписьСообщения, СтрокаСообщенияОбОшибке) // выбираем изменения только для регистра сопоставления - ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, Метаданные.РегистрыСведений.СоответствияОбъектовИнформационныхБаз); + ВыборкаИзменений = ОбменДаннымиСервер.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, Метаданные.РегистрыСведений.СоответствияОбъектовИнформационныхБаз); Пока ВыборкаИзменений.Следующий() Цикл @@ -14978,7 +14801,7 @@ НачальнаяВыгрузкаДанных = ОбменДаннымиСервер.УстановленПризнакНачальнойВыгрузкиДанных(ЗаписьСообщения.Получатель); // ВЫБОРКА ИЗМЕНЕНИЙ - ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, МассивВыгружаемыхМетаданных); + ВыборкаИзменений = ОбменДаннымиСервер.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, МассивВыгружаемыхМетаданных); ОбъектМетаданныхПредыдущий = Неопределено; ПравилоВыгрузкиДанныхПредыдущее = Неопределено; @@ -15485,8 +15308,19 @@ Колонки.Добавить("СвойстваПоиска", одОписаниеТипа("ТаблицаЗначений")); Колонки.Добавить("СвойстваОтключенные", одОписаниеТипа("ТаблицаЗначений")); - Колонки.Добавить("Значения", одОписаниеТипа("Соответствие")); - + // Свойство "Значения" не используется + // Колонки.Добавить("Значения", одОписаниеТипа("Соответствие")); + + // Тип: Соответствие + // Ключ – значение предопределенного элемента в этой базе; + // Значение – строковое представление предопределенного значения в приемнике. + Колонки.Добавить("ЗначенияПредопределенныхДанных", одОписаниеТипа("Соответствие")); + + // Тип: Структура. + // Ключ – строковое представление предопределенного значения в этой базе; + // Значение – строковое представление предопределенного значения в приемнике. + Колонки.Добавить("ЗначенияПредопределенныхДанныхПрочитанные", одОписаниеТипа("Структура")); + Колонки.Добавить("Выгруженные", одОписаниеТипа("ТаблицаЗначений")); Колонки.Добавить("ВыгружатьПредставлениеИсточника", одОписаниеТипа("Булево")); @@ -15658,7 +15492,7 @@ ОбработкаВыгрузки.ПодключитьОбработкуДляОтладки(ЭтотОбъект); - ИначеЕсли РежимОбмена = "Загрузка" Или РежимОбмена = "" Тогда + ИначеЕсли РежимОбмена = "Загрузка" Тогда Если ОтладкаОбработчиковЗагрузки Тогда @@ -15778,12 +15612,6 @@ СообщенияОбОшибках.Вставить(80, НСтр("ru = 'Ошибка установки свойства предопределенного элемента. |Нельзя помечать на удаление предопределенный элемент. Пометка на удаление для объекта не установлена.'")); // - СообщенияОбОшибках.Вставить(81, НСтр("ru = 'Возникла коллизия изменений объектов. - |Объект этой информационной базы был заменен версией объекта из второй информационной базы.'")); - // - СообщенияОбОшибках.Вставить(82, НСтр("ru = 'Возникла коллизия изменений объектов. - |Объект из второй информационной базы не принят. Объект этой информационной базы не изменен.'")); - // СообщенияОбОшибках.Вставить(83, НСтр("ru = 'Ошибка обращения к табличной части объекта. Табличная часть объекта не может быть изменена.'")); СообщенияОбОшибках.Вставить(84, НСтр("ru = 'Коллизия дат запрета изменения.'")); @@ -16245,8 +16073,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_Конвертация_ПередВыгрузкойОбъекта(ФайлОбмена, Отказ, ИмяПКО, Правило, - ВходящиеДанные, ИсходящиеДанные, Объект - ) + ВходящиеДанные, ИсходящиеДанные, Объект) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = Конвертация.ИмяОбработчикаПередВыгрузкойОбъекта; @@ -16257,8 +16084,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_Конвертация_ПослеВыгрузкиОбъекта(ФайлОбмена, Объект, ИмяПКО, ВходящиеДанные, - ИсходящиеДанные, УзелСсылки - ) + ИсходящиеДанные, УзелСсылки) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = Конвертация.ИмяОбработчикаПослеВыгрузкиОбъекта; @@ -16272,8 +16098,7 @@ ИмяПКО, ПКО, ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные, НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены,ТолькоПолучитьУзелСсылки, Приемник, - РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден - ) + РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = Конвертация.ИмяОбработчикаПередКонвертациейОбъекта; @@ -16317,8 +16142,7 @@ Процедура ВыполнитьОбработчик_Конвертация_ПередЗагрузкойОбъекта(ФайлОбмена, Отказ, Нпп, Источник, ИмяПравила, Правило, ГенерироватьНовыйНомерИлиКодЕслиНеУказан,ТипОбъектаСтрокой, - ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения - ) + ТипОбъекта, НеЗамещатьОбъект, РежимЗаписи, РежимПроведения) ИмяОбработки = "ОбработкаЗагрузки"; ИмяОбработчика = Конвертация.ИмяОбработчикаПередЗагрузкойОбъекта; @@ -16330,8 +16154,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_Конвертация_ПослеЗагрузкиОбъекта(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, - ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден - ) + ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден) ИмяОбработки = "ОбработкаЗагрузки"; ИмяОбработчика = Конвертация.ИмяОбработчикаПослеЗагрузкиОбъекта; @@ -16361,7 +16184,7 @@ КонецПроцедуры -Процедура ВыполнитьОбработчик_Конвертация_ПослеПолученияИнформацииОбУзлахОбмена(УзелОбменаЗагрузкаДанных) +Процедура ВыполнитьОбработчик_Конвертация_ПослеПолученияИнформацииОбУзлахОбмена(Знач УзелОбменаЗагрузкаДанных) ИмяОбработки = "ОбработкаЗагрузки"; ИмяОбработчика = Конвертация.ИмяОбработчикаПослеПолученияИнформацииОбУзлахОбмена; @@ -16378,8 +16201,7 @@ ИмяПКО, ПКО, ВыгруженныеОбъекты, Отказ, КлючВыгружаемыхДанных, ЗапоминатьВыгруженные, НеЗамещатьОбъектПриЗагрузке, ВсеОбъектыВыгружены, ТолькоПолучитьУзелСсылки, Приемник, - РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден - ) + РежимЗаписи, РежимПроведения, НеСоздаватьЕслиНеНайден) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКО.ИмяОбработчикаПередВыгрузкой; @@ -16393,8 +16215,7 @@ Процедура ВыполнитьОбработчик_ПКО_ПриВыгрузкеОбъекта(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО, ПКО, ВыгруженныеОбъекты, КлючВыгружаемыхДанных, Отказ, СтандартнаяОбработка, - Приемник, УзелСсылки - ) + Приемник, УзелСсылки) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКО.ИмяОбработчикаПриВыгрузке; @@ -16406,8 +16227,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_ПКО_ПослеВыгрузкиОбъекта(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО, ПКО, - ВыгруженныеОбъекты, КлючВыгружаемыхДанных, Отказ, Приемник, УзелСсылки - ) + ВыгруженныеОбъекты, КлючВыгружаемыхДанных, Отказ, Приемник, УзелСсылки) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКО.ИмяОбработчикаПослеВыгрузки; @@ -16419,8 +16239,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_ПКО_ПослеВыгрузкиОбъектаВФайлОбмена(ФайлОбмена, Источник, ВходящиеДанные, ИсходящиеДанные, ИмяПКО, ПКО, - ВыгруженныеОбъекты, Приемник, УзелСсылки - ) + ВыгруженныеОбъекты, Приемник, УзелСсылки) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКО.ИмяОбработчикаПослеВыгрузкиВФайл; @@ -16433,8 +16252,7 @@ Процедура ВыполнитьОбработчик_ПКО_ПередЗагрузкойОбъекта(ФайлОбмена, Отказ, Нпп, Источник, ИмяПравила, Правило, ГенерироватьНовыйНомерИлиКодЕслиНеУказан, ТипОбъектаСтрокой, - ТипОбъекта,НеЗамещатьОбъект, РежимЗаписи, РежимПроведения - ) + ТипОбъекта,НеЗамещатьОбъект, РежимЗаписи, РежимПроведения) ИмяОбработки = "ОбработкаЗагрузки"; ИмяОбработчика = Правило.ИмяОбработчикаПередЗагрузкой; @@ -16456,8 +16274,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_ПКО_ПослеЗагрузкиОбъекта(ФайлОбмена, Отказ, Ссылка, Объект, ПараметрыОбъекта, - ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден, Правило - ) + ОбъектМодифицирован, ИмяТипаОбъекта, ОбъектНайден, Правило) ИмяОбработки = "ОбработкаЗагрузки"; @@ -16471,8 +16288,7 @@ Процедура ВыполнитьОбработчик_ПКО_ПоследовательностьПолейПоиска(НомерВариантаПоиска, СвойстваПоиска, ПараметрыОбъекта, ПрекратитьПоиск, СсылкаНаОбъект, УстанавливатьУОбъектаВсеСвойстваПоиска, - СтрокаИменСвойствПоиска, ИмяОбработчика - ) + СтрокаИменСвойствПоиска, ИмяОбработчика) ИмяОбработки = "ОбработкаЗагрузки"; ПараметрыОбработчика = "НомерВариантаПоиска, СвойстваПоиска, ПараметрыОбъекта, ПрекратитьПоиск, @@ -16488,8 +16304,7 @@ Процедура ВыполнитьОбработчик_ПКС_ПередВыгрузкойСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, ТипПриемника, ИмяПКО, ИмяПКОВидСубконто, Пусто, Выражение, УзелКоллекцииСвойств, НеЗамещать, - ВыгрузитьОбъект - ) + ВыгрузитьОбъект) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКС.ИмяОбработчикаПередВыгрузкой; @@ -16503,8 +16318,7 @@ Процедура ВыполнитьОбработчик_ПКС_ПриВыгрузкеСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, КлючИЗначение, ВидСубконто, Субконто, Пусто, ИмяПКО, ПКОСвойств,УзелСвойства, УзелКоллекцииСвойств, - ИмяПКОВидСубконто, ВыгрузитьОбъект - ) + ИмяПКОВидСубконто, ВыгрузитьОбъект) ИмяОбработки = "ОбработкаВыгрузки"; @@ -16520,8 +16334,7 @@ Процедура ВыполнитьОбработчик_ПКС_ПослеВыгрузкиСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКС, ПКО, ОбъектКоллекции, Отказ, Значение, КлючИЗначение, ВидСубконто, Субконто, ИмяПКО, ИмяПКОВидСубконто, ПКОСвойств, УзелСвойства, - УзелСсылки, УзелКоллекцииСвойств, УзелСубконто - ) + УзелСсылки, УзелКоллекцииСвойств, УзелСубконто) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКС.ИмяОбработчикаПослеВыгрузки; @@ -16537,8 +16350,7 @@ // Обработчики ПКГС Процедура ВыполнитьОбработчик_ПКГС_ПередОбработкойВыгрузки(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, - ПКГС, Отказ, КоллекцияОбъектов, НеЗамещать, УзелКоллекцииСвойств, НеОчищать - ) + ПКГС, Отказ, КоллекцияОбъектов, НеЗамещать, УзелКоллекцииСвойств, НеОчищать) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКГС.ИмяОбработчикаПередОбработкойВыгрузки; @@ -16550,8 +16362,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_ПКГС_ПередВыгрузкойСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, - ПКГС, Отказ, ОбъектКоллекции, УзелКоллекцииСвойств, УзелКоллекцииОбъектов - ) + ПКГС, Отказ, ОбъектКоллекции, УзелКоллекцииСвойств, УзелКоллекцииОбъектов) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКГС.ИмяОбработчикаПередВыгрузкой; @@ -16564,8 +16375,7 @@ Процедура ВыполнитьОбработчик_ПКГС_ПриВыгрузкеСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКГС, ОбъектКоллекции, УзелКоллекцииОбъектов, УзелОбъектаКоллекции, - УзелКоллекцииСвойств, СтандартнаяОбработка - ) + УзелКоллекцииСвойств, СтандартнаяОбработка) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКГС.ИмяОбработчикаПриВыгрузке; @@ -16578,8 +16388,7 @@ Процедура ВыполнитьОбработчик_ПКГС_ПослеВыгрузкиСвойства(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, ПКО, ПКГС, Отказ, ОбъектКоллекции, УзелКоллекцииОбъектов, - УзелКоллекцииСвойств, УзелОбъектаКоллекции - ) + УзелКоллекцииСвойств, УзелОбъектаКоллекции) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКГС.ИмяОбработчикаПослеВыгрузки; @@ -16591,8 +16400,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_ПКГС_ПослеОбработкиВыгрузки(ФайлОбмена, Источник, Приемник, ВходящиеДанные, ИсходящиеДанные, - ПКО, ПКГС, Отказ, УзелКоллекцииСвойств, УзелКоллекцииОбъектов - ) + ПКО, ПКГС, Отказ, УзелКоллекцииСвойств, УзелКоллекцииОбъектов) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = ПКГС.ИмяОбработчикаПослеОбработкиВыгрузки; @@ -16629,8 +16437,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_ПВД_ПередВыгрузкойОбъекта(ФайлОбмена, Отказ, ИмяПКО, Правило, - ВходящиеДанные, ИсходящиеДанные, Объект - ) + ВходящиеДанные, ИсходящиеДанные, Объект) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = Правило.ИмяОбработчикаПередВыгрузкой; @@ -16641,8 +16448,7 @@ КонецПроцедуры Процедура ВыполнитьОбработчик_ПВД_ПослеВыгрузкиОбъекта(ФайлОбмена, Объект, ИмяПКО, ВходящиеДанные, - ИсходящиеДанные, УзелСсылки, Правило - ) + ИсходящиеДанные, УзелСсылки, Правило) ИмяОбработки = "ОбработкаВыгрузки"; ИмяОбработчика = Правило.ИмяОбработчикаПослеВыгрузки; @@ -16707,6 +16513,18 @@ КонецФункции +// Версия формата хранения правил обмена (формат зачитанных правил), +// работу с которой поддерживает данная обработка. +// +// Правила обмена зачитываются из файла и сохраняются в информационной базе в формате хранения. +// Формат хранения правил может устаревать. В этом случае потребуется перечитать правила обмена повторно. +// +Функция ВерсияФорматаХраненияПравилОбмена() + + Возврат 1; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ @@ -16716,4 +16534,4 @@ ИнициализацияТаблицыПравилВыгрузки(); ИнициализацияТаблицыПравилОчистки(); ИнициализацияТаблицыНастройкиПараметров(); -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/КонвертацияОбъектовИнформационныхБаз.mdo b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/КонвертацияОбъектовИнформационныхБаз.mdo index 54ea8f90c..40361e489 100644 --- a/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/КонвертацияОбъектовИнформационныхБаз.mdo +++ b/SSL/src/DataProcessors/КонвертацияОбъектовИнформационныхБаз/КонвертацияОбъектовИнформационныхБаз.mdo @@ -9,6 +9,7 @@ <key>ru</key> <value>Конвертация объектов информационных баз</value> </synonym> + <defaultForm>DataProcessor.КонвертацияОбъектовИнформационныхБаз.Form.Форма</defaultForm> <attributes uuid="0a79ee40-e6d6-4dbf-8378-98c2ec1e8ef9"> <name>ВыводВОкноСообщенийИнформационныхСообщений</name> <synonym> @@ -513,4 +514,13 @@ <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> </attributes> + <forms uuid="bbaed1bd-0eb7-4f2b-b844-ab79c1d0a091"> + <name>Форма</name> + <synonym> + <key>ru</key> + <value>Форма</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> </mdclass:DataProcessor> diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/Forms/Форма/Form.form b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/Forms/Форма/Form.form new file mode 100644 index 000000000..643681dc9 --- /dev/null +++ b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/Forms/Форма/Form.form @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:form="http://g5.1c.ru/v8/dt/form"> + <autoCommandBar> + <name>ФормаКоманднаяПанель</name> + <id>-1</id> + <horizontalAlign>Left</horizontalAlign> + <autoFill>true</autoFill> + </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> + <windowOpeningMode>DontBlock</windowOpeningMode> + <saveWindowSettings>true</saveWindowSettings> + <autoTitle>true</autoTitle> + <autoUrl>true</autoUrl> + <group>Vertical</group> + <autoFillCheck>true</autoFillCheck> + <allowFormCustomize>true</allowFormCustomize> + <enabled>true</enabled> + <verticalScroll>UseIfNecessary</verticalScroll> + <showTitle>auto</showTitle> + <showCloseButton>true</showCloseButton> + <attributes> + <name>Объект</name> + <id>1</id> + <valueType> + <types>String</types> + <stringQualifiers/> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <main>true</main> + </attributes> + <commandInterface> + <navigationPanel/> + <commandBar/> + </commandInterface> +</form:Form> diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/Forms/Форма/Module.bsl new file mode 100644 index 000000000..60eabfdab --- /dev/null +++ b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/Forms/Форма/Module.bsl @@ -0,0 +1,11 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl index 0727bc410..07d26e2fc 100644 --- a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl +++ b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/ObjectModule.bsl @@ -22,7 +22,7 @@ ЗагрузитьМетаданные = ЗагрузитьТолькоПараметры И ОбменДаннымиСервер.ЭтоПодчиненныйУзелРИБ() - И ОбменДаннымиВызовСервера.ВыполнитьЗагрузкуПараметровРаботыПрограммы() + И ОбменДаннымиВызовСервера.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском() ; ОбменДаннымиСервер.УстановитьРежимЗагрузкиПараметровРаботыПрограммы(Ложь); @@ -123,7 +123,7 @@ ОбменДаннымиСервер.УстановитьРежимЗагрузкиПараметровРаботыПрограммы(Ложь); - ОбменДаннымиВызовСервера.ОтменитьЗагрузкуПараметровРаботыПрограммы(); + ОбменДаннымиВызовСервера.ОтключитьПовторениеЗагрузкиСообщенияОбменаДаннымиПередЗапуском(); Исключение ЧтениеСообщения.ПрерватьЧтение(); @@ -188,6 +188,8 @@ Попытка + ОбменДаннымиВызовСервера.ОчиститьПриоритетныеДанныеОбмена(); + // Записываем изменения конфигурации и изменения данных в сообщение обмена ПланыОбмена.ЗаписатьИзменения(ЗаписьСообщения, КоличествоЭлементовВТранзакции); @@ -210,26 +212,57 @@ Если ЗаписьСообщения.Получатель <> ПланыОбмена.ГлавныйУзел() Тогда - ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения( - ЗаписьСообщения.Получатель, - ЗаписьСообщения.НомерСообщения, - Метаданные.Справочники.ИдентификаторыОбъектовМетаданных - ); + // Выгружаем приоритетные данные обмена (предопределенные элементы) + ПриоритетныеДанныеОбмена = ОбменДаннымиВызовСервера.ПриоритетныеДанныеОбмена(); - НачатьТранзакцию(); - Попытка + Если ПриоритетныеДанныеОбмена.Количество() > 0 Тогда - Пока ВыборкаИзменений.Следующий() Цикл - - ЗаписатьXML(ЗаписьСообщения.ЗаписьXML, ВыборкаИзменений.Получить()); - - КонецЦикла; + ВыборкаИзменений = ОбменДаннымиСервер.ВыбратьИзменения( + ЗаписьСообщения.Получатель, + ЗаписьСообщения.НомерСообщения, + ПриоритетныеДанныеОбмена); - ЗафиксироватьТранзакцию(); - Исключение - ОтменитьТранзакцию(); - ВызватьИсключение; - КонецПопытки; + НачатьТранзакцию(); + Попытка + + Пока ВыборкаИзменений.Следующий() Цикл + + ЗаписатьXML(ЗаписьСообщения.ЗаписьXML, ВыборкаИзменений.Получить()); + + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + КонецЕсли; + + Если Не СтандартныеПодсистемыПовтИсп.ОтключитьСправочникИдентификаторыОбъектовМетаданных() Тогда + + // Выгружаем справочник идентификаторов объектов метаданных + ВыборкаИзменений = ОбменДаннымиСервер.ВыбратьИзменения( + ЗаписьСообщения.Получатель, + ЗаписьСообщения.НомерСообщения, + Метаданные.Справочники["ИдентификаторыОбъектовМетаданных"]); + + НачатьТранзакцию(); + Попытка + + Пока ВыборкаИзменений.Следующий() Цикл + + ЗаписатьXML(ЗаписьСообщения.ЗаписьXML, ВыборкаИзменений.Получить()); + + КонецЦикла; + + ЗафиксироватьТранзакцию(); + Исключение + ОтменитьТранзакцию(); + ВызватьИсключение; + КонецПопытки; + + КонецЕсли; КонецЕсли; @@ -251,7 +284,13 @@ Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML); Данные.ОбменДанными.Загрузка = Истина; Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; - Данные.ДополнительныеСвойства.Вставить("ЗагрузкаПараметровРаботыПрограммы"); + Данные.ОбменДанными.Получатели.АвтоЗаполнение = Ложь; + + Если ТипЗнч(Данные) <> Тип("УдалениеОбъекта") Тогда + Данные.ДополнительныеСвойства.Вставить("ЗагрузкаПараметровРаботыПрограммы"); + Данные.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов"); + КонецЕсли; + Данные.Записать(); КонецЦикла; diff --git a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/КонвертацияОбъектовРаспределенныхИнформационныхБаз.mdo b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/КонвертацияОбъектовРаспределенныхИнформационныхБаз.mdo index 0e24db737..46a7a7312 100644 --- a/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/КонвертацияОбъектовРаспределенныхИнформационныхБаз.mdo +++ b/SSL/src/DataProcessors/КонвертацияОбъектовРаспределенныхИнформационныхБаз/КонвертацияОбъектовРаспределенныхИнформационныхБаз.mdo @@ -10,6 +10,7 @@ <value>Конвертация объектов распределенных информационных баз</value> </synonym> <useStandardCommands>true</useStandardCommands> + <defaultForm>DataProcessor.КонвертацияОбъектовРаспределенныхИнформационныхБаз.Form.Форма</defaultForm> <attributes uuid="83ae9b22-20ff-4e94-9282-19daf2274328"> <name>УзелИнформационнойБазы</name> <synonym> @@ -64,4 +65,13 @@ <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> </attributes> + <forms uuid="d57a3300-0f9f-4fe5-b627-01c96b723053"> + <name>Форма</name> + <synonym> + <key>ru</key> + <value>Форма</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> </mdclass:DataProcessor> diff --git a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Forms/ПроверкаЛегальностиПолученияОбновления/Form.form b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Forms/ПроверкаЛегальностиПолученияОбновления/Form.form index be5a7da47..6fd609acf 100644 --- a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Forms/ПроверкаЛегальностиПолученияОбновления/Form.form +++ b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Forms/ПроверкаЛегальностиПолученияОбновления/Form.form @@ -168,8 +168,12 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> + <handlers> + <event>OnClose</event> + <name>ПриЗакрытии</name> + </handlers> <width>75</width> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> <autoUrl>true</autoUrl> @@ -233,6 +237,23 @@ <common>true</common> </edit> </attributes> + <attributes> + <name>Результат</name> + <title> + <key>ru</key> + <value>Результат</value> + + 4 + + Boolean + + + true + + + true + + Продолжить @@ -260,6 +281,7 @@ <valueType> <types>Boolean</types> </valueType> + <keyParameter>true</keyParameter> </parameters> <parameters> <name>ПринудительныйЗапуск</name> diff --git a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Forms/ПроверкаЛегальностиПолученияОбновления/Module.bsl b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Forms/ПроверкаЛегальностиПолученияОбновления/Module.bsl index 630bd9144..e63aa32cf 100644 --- a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Forms/ПроверкаЛегальностиПолученияОбновления/Module.bsl +++ b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Forms/ПроверкаЛегальностиПолученияОбновления/Module.bsl @@ -17,6 +17,10 @@ ПодтверждениеВыбора = 0; // пользователю требуется явно выбрать один из вариантов Элементы.Примечание.Видимость = Параметры.ПоказыватьПредупреждениеОПерезапуске; + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Выполнить("РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс"); + КонецЕсли; + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -25,7 +29,49 @@ &НаКлиенте Процедура ОсновныеДействияФормыПродолжить(Команда) - Закрыть(ПодтверждениеВыбора = 1); + Результат = ПодтверждениеВыбора = 1; + Если Результат <> Истина Тогда + Если Параметры.ПоказыватьПредупреждениеОПерезапуске Тогда + ПрекратитьРаботуСистемы(); + КонецЕсли; + Иначе + ЛегальностьПолученияОбновленийПодтверждена(); + КонецЕсли; + Закрыть(Результат); КонецПроцедуры +&НаКлиенте +Процедура ПриЗакрытии() + + Если Результат <> Истина Тогда + Если Параметры.ПоказыватьПредупреждениеОПерезапуске Тогда + ПрекратитьРаботуСистемы(); + КонецЕсли; + Иначе + ЛегальностьПолученияОбновленийПодтверждена(); + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + ОбновлениеИнформационнойБазыКлиент.ПодключитьОбработчикПроверкиСтатусаОтложенногоОбновления(); + КонецЕсли; + + Оповестить("ЛегальностьПолученияОбновлений", Результат); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Процедура ЛегальностьПолученияОбновленийПодтверждена() + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() И Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат; + КонецЕсли; + + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + СведенияОбОбновлении.ЛегальностьПолученияОбновленияПодтверждена = Истина; + ОбновлениеИнформационнойБазы.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Templates/УсловияРаспространенияОбновлений/ru.html b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Templates/УсловияРаспространенияОбновлений/ru.html index 8faba2257..013df553f 100644 --- a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Templates/УсловияРаспространенияОбновлений/ru.html +++ b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/Templates/УсловияРаспространенияОбновлений/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body scroll="auto"><font size="2" face="Verdana"> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body scroll="auto"><font size="2" face="Verdana"> <p align="center"><strong>УСЛОВИЯ РАСПРОСТРАНЕНИЯ ОБНОВЛЕНИЙ ПРОГРАММ "1С:ПРЕДПРИЯТИЕ"</strong></p> <p></p> <p>Обновления к программам производства фирмы "1С", также как и сами программы, являются объектами исключительного права фирмы "1С" и распространяются по правилам, установленным фирмой "1С" как правообладателем в соответствии со ст. 1225 Гражданского кодекса.</p> diff --git a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/ЛегальностьПолученияОбновлений.mdo b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/ЛегальностьПолученияОбновлений.mdo index a4ed6d020..e3345489b 100644 --- a/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/ЛегальностьПолученияОбновлений.mdo +++ b/SSL/src/DataProcessors/ЛегальностьПолученияОбновлений/ЛегальностьПолученияОбновлений.mdo @@ -9,7 +9,6 @@ <key>ru</key> <value>Легальность получения обновлений</value> </synonym> - <useStandardCommands>true</useStandardCommands> <defaultForm>DataProcessor.ЛегальностьПолученияОбновлений.Form.ПроверкаЛегальностиПолученияОбновления</defaultForm> <forms uuid="d375fac5-098c-42b5-a0bd-9a4ae7516ada"> <name>ПроверкаЛегальностиПолученияОбновления</name> diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/РезервноеКопированиеИнформационнойБазы/Form.form b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/РезервноеКопированиеИнформационнойБазы/Form.form index c3ae68a36..ed7547246 100644 --- a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/РезервноеКопированиеИнформационнойБазы/Form.form +++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/РезервноеКопированиеИнформационнойБазы/Form.form @@ -27,7 +27,7 @@ </userVisible> <extendedTooltip> <name>КартинкаВниманиеРасширеннаяПодсказка</name> - <id>266</id> + <id>271</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -60,7 +60,7 @@ </userVisible> <extendedTooltip> <name>НадписьВниманиеРасширеннаяПодсказка</name> - <id>267</id> + <id>272</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -100,7 +100,7 @@ </userVisible> <extendedTooltip> <name>Группа1РасширеннаяПодсказка</name> - <id>268</id> + <id>273</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -135,7 +135,7 @@ </toolTip> <extendedTooltip> <name>ГруппаОповещенияОбОпасностиРасширеннаяПодсказка</name> - <id>265</id> + <id>270</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -181,7 +181,7 @@ </handlers> <extendedTooltip> <name>ПереключательКодТипаРезервногоКопированияРасширеннаяПодсказка</name> - <id>269</id> + <id>274</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -213,7 +213,7 @@ <choiceList> <presentation> <key>ru</key> - <value>Резервное копирование выполняется сторонними средствами</value> + <value>Не требуется резервное копирование, так как оно выполняется средствами СУБД или другими сторонними программами</value> </presentation> <value xsi:type="core:NumberValue"> <value>2</value> @@ -247,7 +247,7 @@ </userVisible> <extendedTooltip> <name>ПустаяНадписьРасширеннаяПодсказка</name> - <id>273</id> + <id>278</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -282,7 +282,7 @@ </toolTip> <extendedTooltip> <name>ПустаяСтраницаРасширеннаяПодсказка</name> - <id>272</id> + <id>277</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -320,7 +320,7 @@ <titleLocation>Left</titleLocation> <extendedTooltip> <name>ПериодОповещения1РасширеннаяПодсказка</name> - <id>276</id> + <id>281</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -368,7 +368,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ЕдиницаИзмеренияПериодаОповещения2РасширеннаяПодсказка</name> - <id>278</id> + <id>283</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -451,7 +451,7 @@ </toolTip> <extendedTooltip> <name>ГруппаПараметровНапоминания1РасширеннаяПодсказка</name> - <id>275</id> + <id>280</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -483,7 +483,7 @@ </toolTip> <extendedTooltip> <name>СтраницаПараметровОтложенногоОповещенияРасширеннаяПодсказка</name> - <id>274</id> + <id>279</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -513,7 +513,7 @@ <verticalStretch>true</verticalStretch> <extendedTooltip> <name>СтраницыПараметровОтложенногоОповещенияРасширеннаяПодсказка</name> - <id>271</id> + <id>276</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -540,7 +540,7 @@ </userVisible> <extendedTooltip> <name>ИнформационнаяНадписьРасширеннаяПодсказка</name> - <id>280</id> + <id>285</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -577,7 +577,7 @@ </toolTip> <extendedTooltip> <name>СтраницаНачальногоОповещенияРасширеннаяПодсказка</name> - <id>264</id> + <id>269</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -618,7 +618,7 @@ </handlers> <extendedTooltip> <name>ВариантПроведенияРезервногоКопированияРасширеннаяПодсказка</name> - <id>283</id> + <id>288</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -674,7 +674,7 @@ </toolTip> <extendedTooltip> <name>ГруппаПриветствияПриНастройкеРасписанияРКРасширеннаяПодсказка</name> - <id>282</id> + <id>287</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -704,7 +704,7 @@ </userVisible> <extendedTooltip> <name>Декорация2РасширеннаяПодсказка</name> - <id>286</id> + <id>291</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -748,7 +748,7 @@ </handlers> <extendedTooltip> <name>ВариантРасписанияРезервногоКопированияРасширеннаяПодсказка</name> - <id>287</id> + <id>292</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -816,7 +816,7 @@ </userVisible> <extendedTooltip> <name>ИзменитьРасписаниеРасширеннаяПодсказка</name> - <id>289</id> + <id>294</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -849,7 +849,7 @@ <horizontalStretch>true</horizontalStretch> <extendedTooltip> <name>ГруппаНастройкиРасписанияКопированияРасширеннаяПодсказка</name> - <id>285</id> + <id>290</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -883,7 +883,7 @@ </userVisible> <extendedTooltip> <name>НадписьПутьКопирования1РасширеннаяПодсказка</name> - <id>291</id> + <id>296</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -922,7 +922,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ПутьККаталогуАрхивов2РасширеннаяПодсказка</name> - <id>292</id> + <id>297</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -971,7 +971,7 @@ </userVisible> <extendedTooltip> <name>НадписьРекомендацииПоВыборуПути2РасширеннаяПодсказка</name> - <id>294</id> + <id>299</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1012,7 +1012,7 @@ <horizontalStretch>true</horizontalStretch> <extendedTooltip> <name>ГруппаЗаведенияПутиКопирования1РасширеннаяПодсказка</name> - <id>290</id> + <id>295</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1047,7 +1047,7 @@ </dataPath> <extendedTooltip> <name>АдминистраторИБ1РасширеннаяПодсказка</name> - <id>296</id> + <id>301</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1089,7 +1089,7 @@ </dataPath> <extendedTooltip> <name>ПарольАдминистратораИБ1РасширеннаяПодсказка</name> - <id>298</id> + <id>303</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1134,7 +1134,7 @@ </toolTip> <extendedTooltip> <name>ГруппаАвторизацииРасширеннаяПодсказка</name> - <id>295</id> + <id>300</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1179,7 +1179,7 @@ </handlers> <extendedTooltip> <name>ОчисткаКаталогаСРезервнымиКопиямиПриПереполнении1РасширеннаяПодсказка</name> - <id>301</id> + <id>306</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1216,7 +1216,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ТипОграниченияКаталогаСРезервнымиКопиямиРасширеннаяПодсказка</name> - <id>304</id> + <id>309</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1282,7 +1282,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ДатаПоследнегоАктуальногоАрхива1РасширеннаяПодсказка</name> - <id>308</id> + <id>313</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1328,7 +1328,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ЕдиницаИзмеренияПериодаХраненияРезервныхКопийРасширеннаяПодсказка</name> - <id>310</id> + <id>315</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1400,7 +1400,7 @@ </userVisible> <extendedTooltip> <name>Группа4РасширеннаяПодсказка</name> - <id>307</id> + <id>312</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1435,7 +1435,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>КоличествоКопийВКаталоге1РасширеннаяПодсказка</name> - <id>312</id> + <id>317</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1473,7 +1473,7 @@ </userVisible> <extendedTooltip> <name>Группа5РасширеннаяПодсказка</name> - <id>306</id> + <id>311</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1506,7 +1506,7 @@ </toolTip> <extendedTooltip> <name>ГруппаВыбораТипаОчисткиРасширеннаяПодсказка</name> - <id>303</id> + <id>308</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1540,7 +1540,7 @@ <horizontalStretch>true</horizontalStretch> <extendedTooltip> <name>ГруппаВыбораОчисткиКаталогаОтСтарыхФайлов1РасширеннаяПодсказка</name> - <id>300</id> + <id>305</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1580,7 +1580,7 @@ <titleLocation>Right</titleLocation> <extendedTooltip> <name>ВыполнитьРезервноеКопированиеСейчасРасширеннаяПодсказка</name> - <id>315</id> + <id>320</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1616,7 +1616,7 @@ </toolTip> <extendedTooltip> <name>ГруппаФлажкаРасширеннаяПодсказка</name> - <id>314</id> + <id>319</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1649,7 +1649,7 @@ </toolTip> <extendedTooltip> <name>СтраницаНастройкиПараметровРезервногоКопированияРасширеннаяПодсказка</name> - <id>281</id> + <id>286</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1683,7 +1683,7 @@ </userVisible> <extendedTooltip> <name>КартинкаВнимание1РасширеннаяПодсказка</name> - <id>319</id> + <id>324</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1711,7 +1711,8 @@ <id>155</id> <title> <key>ru</key> - <value>Внимание! Данные информационной базы подвергаются риску, так как не выполняется их резервное копирование</value> + <value>Внимание! Данные информационной базы подвергаются риску, +так как не выполняется их резервное копирование.</value> true true @@ -1720,7 +1721,7 @@ НадписьВнимание1РасширеннаяПодсказка - 320 + 325 Label true true @@ -1764,7 +1765,7 @@ ГруппаОповещенияОбОпасности1РасширеннаяПодсказка - 318 + 323 Label true true @@ -1789,7 +1790,7 @@ 158 <key>ru</key> - <value>Недостаточно прав для выполнения операции резервного копирования данных. Пожалуйста, обратитесь к администратору.</value> + <value>Недостаточно прав для выполнения операции резервного копирования данных. Обратитесь к администратору.</value> true true @@ -1798,7 +1799,7 @@ НадписьНедостаточноПравРасширеннаяПодсказка - 322 + 327 Label true true @@ -1830,7 +1831,7 @@ ГруппаПоясненияДальнейшихДействийРасширеннаяПодсказка - 321 + 326 Label true true @@ -1859,7 +1860,7 @@ Декорация4РасширеннаяПодсказка - 323 + 328 Label true true @@ -1894,7 +1895,7 @@ НадписьГотовоРасширеннаяПодсказка - 324 + 329 Label true true @@ -1930,7 +1931,7 @@ СтраницаДляПользователяБезПравРасширеннаяПодсказка - 317 + 322 Label true true @@ -1964,7 +1965,7 @@ КартинкаВнимание2РасширеннаяПодсказка - 327 + 332 Label true true @@ -1992,7 +1993,8 @@ 164 <key>ru</key> - <value>Внимание! Данные информационной базы подвергаются риску, так как не выполняется их резервное копирование.</value> + <value>Внимание! Данные информационной базы подвергаются риску, +так как не выполняется их резервное копирование.</value> true true @@ -2001,7 +2003,7 @@ НадписьВнимание2РасширеннаяПодсказка - 328 + 333 Label true true @@ -2045,7 +2047,7 @@ ГруппаОповещенияОбОпасности2РасширеннаяПодсказка - 326 + 331 Label true true @@ -2091,7 +2093,7 @@ ПереключательКодТипаРезервногоКопированияКСРасширеннаяПодсказка - 329 + 334 Label true true @@ -2148,7 +2150,7 @@ ПустаяНадпись1РасширеннаяПодсказка - 333 + 338 Label true true @@ -2183,7 +2185,7 @@ ПустаяСтраница1РасширеннаяПодсказка - 332 + 337 Label true true @@ -2221,7 +2223,7 @@ Left ПериодОповещения2РасширеннаяПодсказка - 336 + 341 Label true true @@ -2266,7 +2268,7 @@ None ЕдиницаИзмеренияПериодаОповещения3РасширеннаяПодсказка - 338 + 343 Label true true @@ -2349,7 +2351,7 @@ ГруппаПараметровНапоминания2РасширеннаяПодсказка - 335 + 340 Label true true @@ -2381,7 +2383,7 @@ СтраницаПараметровОтложенногоОповещения1РасширеннаяПодсказка - 334 + 339 Label true true @@ -2410,7 +2412,7 @@ СтраницыПараметровОтложенногоОповещения1РасширеннаяПодсказка - 331 + 336 Label true true @@ -2433,7 +2435,7 @@ Декорация5РасширеннаяПодсказка - 340 + 345 Label true true @@ -2468,7 +2470,7 @@ ИнформационнаяНадпись1РасширеннаяПодсказка - 341 + 346 Label true true @@ -2505,7 +2507,7 @@ СтраницаНачальногоОповещенияКлиентСерверРасширеннаяПодсказка - 325 + 330 Label true true @@ -2536,7 +2538,7 @@ НадписьШапкаДополнительныеНастройкиРасширеннаяПодсказка - 343 + 348 Label true true @@ -2580,7 +2582,7 @@ Картинка12РасширеннаяПодсказка - 345 + 350 Label true true @@ -2625,7 +2627,7 @@ None ОбнаруженнаяОшибкаПодключения1РасширеннаяПодсказка - 347 + 352 Label true true @@ -2674,7 +2676,7 @@ НадписьПерейтиВЖурналРегистрации1РасширеннаяПодсказка - 349 + 354 Label true true @@ -2717,7 +2719,7 @@ ГруппаОшибкиРасширеннаяПодсказка - 346 + 351 Label true true @@ -2743,7 +2745,7 @@ false ГоризонтальнаяГруппаОшибкаПодключенияРасширеннаяПодсказка - 344 + 349 Label true true @@ -2780,7 +2782,7 @@ АдминистраторИБРасширеннаяПодсказка - 351 + 356 Label true true @@ -2825,7 +2827,7 @@ ПарольАдминистратораИБРасширеннаяПодсказка - 353 + 358 Label true true @@ -2870,7 +2872,7 @@ false АвторизацияАдминистратораИнформационнойБазыРасширеннаяПодсказка - 350 + 355 Label true true @@ -2911,7 +2913,7 @@ НадписьОбновитьВерсиюКомпоненты1РасширеннаяПодсказка - 356 + 361 Label true true @@ -2948,7 +2950,7 @@ false КнопкаОбновитьВерсиюКомпоненты1РасширеннаяПодсказка - 357 + 362 Label true true @@ -2972,7 +2974,7 @@ ГруппаComcntrФайловыйРежимРасширеннаяПодсказка - 355 + 360 Label true true @@ -3004,7 +3006,7 @@ false ВертикальнаяГруппаНадписиЖР3РасширеннаяПодсказка - 359 + 364 Label true true @@ -3030,7 +3032,7 @@ false ПанельЖурналРегистрации4РасширеннаяПодсказка - 358 + 363 Label true true @@ -3063,7 +3065,7 @@ ДополнительныеНастройкиРасширеннаяПодсказка - 342 + 347 Label true true @@ -3092,7 +3094,7 @@ СтраницыПомощникаРасширеннаяПодсказка - 263 + 268 Label true true @@ -3105,6 +3107,120 @@ Auto + + ГруппаПояснениеДляLinuxКлиента + 260 + + КартинкаИнформация + 261 + + <key>ru</key> + <value> </value> + + true + true + + true + + + КартинкаИнформацияРасширеннаяПодсказка + 366 + Label + true + true + + Left + + + + КартинкаИнформацияКонтекстноеМеню + 262 + true + + 2 + true + 1 + true + + + CommonPicture.Информация + + + + + ПояснениеДляLinuxКлиента + 263 + + <key>ru</key> + <value>Резервное копирование программы может запускаться +только на компьютере под управлением ОС Windows</value> + + true + true + + true + + + ПояснениеДляLinuxКлиентаРасширеннаяПодсказка + 367 + Label + true + true + + Left + + + + ПояснениеДляLinuxКлиентаКонтекстноеМеню + 264 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value> </value> + + + ru + + + true + 86 + false + + ГруппаПояснениеДляLinuxКлиентаРасширеннаяПодсказка + 365 + Label + true + true + + Left + + + UsualGroup + + Auto + StrongSeparation + true + true + Auto + Auto + + Bottom true @@ -3123,7 +3239,7 @@ НазадРасширеннаяПодсказка - 260 + 265 Label true true @@ -3153,7 +3269,7 @@ ДалееРасширеннаяПодсказка - 261 + 266 Label true true @@ -3183,7 +3299,7 @@ ОтменаРасширеннаяПодсказка - 262 + 267 Label true true @@ -3210,6 +3326,10 @@ OnCreateAtServer ПриСозданииНаСервере + + OnClose + ПриЗакрытии + 75 LockOwner Use diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/РезервноеКопированиеИнформационнойБазы/Module.bsl b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/РезервноеКопированиеИнформационнойБазы/Module.bsl index 5f245e288..9a2e389fd 100644 --- a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/РезервноеКопированиеИнформационнойБазы/Module.bsl +++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Forms/РезервноеКопированиеИнформационнойБазы/Module.bsl @@ -1,21 +1,24 @@ + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; + Элементы.ГруппаПояснениеДляLinuxКлиента.Видимость = ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент(); + Элементы.ВыполнитьРезервноеКопированиеСейчас.Видимость = ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент(); + НастройкиРезервногоКопирования = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); Объект.КодТипаРезервногоКопирования = НастройкиРезервногоКопирования.ВыборПунктаНастройки; Если НастройкиРезервногоКопирования.ПроводитьРезервноеКопированиеПриЗавершенииРаботы Тогда - Объект.ВариантПроведенияРезервногоКопирования = 2; + Объект.ВариантПроведенияРезервногоКопирования = 2; Иначе Объект.ВариантПроведенияРезервногоКопирования = 1; КонецЕсли; - Объект.КодТипаИнтерактивногоРезервногоКопирования = 1; + Объект.КодТипаИнтерактивногоРезервногоКопирования = 1; Объект.ОчисткаКаталогаСРезервнымиКопиямиПриПереполнении = НастройкиРезервногоКопирования.ПроизводитьУдаление; Объект.ПериодХраненияРезервныхКопий = 1; Объект.ЕдиницаИзмеренияПериодаХраненияРезервныхКопий = "Месяц"; @@ -59,7 +62,7 @@ Если НастройкиРезервногоКопирования.ПроизводитьУдаление Тогда Если НастройкиРезервногоКопирования.УдалятьПоПериоду Тогда НастройкиЗначенияПериода = РезервноеКопированиеИБСервер.ПолучитьПоИнтервалуВремениЗначениеПериода(НастройкиРезервногоКопирования.ЗначениеПараметра); - Объект.ТипОграниченияКаталогаСРезервнымиКопиями = Элементы.ТипОграниченияКаталогаСРезервнымиКопиями.СписокВыбора.НайтиПоЗначению("ПоПериоду").Значение; + Объект.ТипОграниченияКаталогаСРезервнымиКопиями = Элементы.ТипОграниченияКаталогаСРезервнымиКопиями.СписокВыбора.НайтиПоЗначению("ПоПериоду").Значение; Объект.ЕдиницаИзмеренияПериодаХраненияРезервныхКопий = НастройкиЗначенияПериода.ТипПериода; Объект.ПериодХраненияРезервныхКопий = НастройкиЗначенияПериода.ЗначениеПериода; Иначе @@ -69,7 +72,10 @@ КонецЕсли; // Определение надписи заголовка формы. - ОпределениеНадписиВнимание(НастройкиРезервногоКопирования); + Элементы.НадписьВнимание.Заголовок = РезервноеКопированиеИБСервер.ТекущаяНастройкаРезервногоКопирования( + Объект.КодТипаРезервногоКопирования, + НастройкиРезервногоКопирования.ПроводитьРезервноеКопированиеПриЗавершенииРаботы, + НастройкиРезервногоКопирования.РасписаниеКопирования); КонецПроцедуры @@ -92,24 +98,24 @@ КонецПроцедуры +&НаКлиенте +Процедура ПриЗакрытии() + + Оповестить("ЗакрытаФормаНастройкиРезервногоКопирования"); + +КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ -&НаСервере -Процедура ЗапомнитьПараметрыАдминистратора(АдминистраторИБ, ПарольАдминистратораИБ, ПараметрыРезервногоКопированияИБНаКлиенте) +&НаСервереБезКонтекста +Процедура ЗапомнитьПараметрыАдминистратора(АдминистраторИБ, ПарольАдминистратораИБ) - ПараметрыРезервногоКопирования = РезервноеКопированиеИБСервер.ПолучитьПараметрыРезервногоКопирования(); + ПараметрыРезервногоКопирования = РезервноеКопированиеИБСервер.ПолучитьПараметрыРезервногоКопирования(); - Если ПараметрыРезервногоКопирования.Свойство("АдминистраторИБ") Тогда - ПараметрыРезервногоКопирования.АдминистраторИБ = АдминистраторИБ; - ПараметрыРезервногоКопирования.ПарольАдминистратораИБ = ПарольАдминистратораИБ; - Иначе - ПараметрыРезервногоКопирования.Вставить("АдминистраторИБ", АдминистраторИБ); - ПараметрыРезервногоКопирования.Вставить("ПарольАдминистратораИБ", ПарольАдминистратораИБ); - КонецЕсли; + ПараметрыРезервногоКопирования.Вставить("АдминистраторИБ", АдминистраторИБ); + ПараметрыРезервногоКопирования.Вставить("ПарольАдминистратораИБ", ПарольАдминистратораИБ); - ПараметрыРезервногоКопированияИБНаКлиенте = ПараметрыРезервногоКопирования; РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(ПараметрыРезервногоКопирования); КонецПроцедуры @@ -127,7 +133,7 @@ // Обработчик перехода к журналу регистрации. &НаКлиенте Процедура НадписьПерейтиВЖурналРегистрации1Нажатие(Элемент) - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации"); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", , ЭтаФорма); КонецПроцедуры &НаКлиенте @@ -186,7 +192,11 @@ КонецЕсли; Объект.СтрокаРасписания = Строка(РасписаниеРезервногоКопирования); РасписаниеСтруктура = ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(РасписаниеРезервногоКопирования); - ПоместитьРасписаниеВНастройку(РасписаниеСтруктура, ПараметрыРезервногоКопированияИБ); + + ПараметрыРезервногоКопированияИБ.РасписаниеЗначение = РасписаниеРезервногоКопирования; + + ПоместитьРасписаниеВНастройку(РасписаниеСтруктура); + КонецПроцедуры &НаКлиенте @@ -206,43 +216,66 @@ &НаКлиенте Процедура Далее(Команда) - ОчиститьСообщения(); + ОчиститьСообщения(); ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ТекущаяСтраница; - Если ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаНачальногоОповещения - ИЛИ ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаНачальногоОповещенияКлиентСервер Тогда - ОбработатьНачальнуюНастройкуПомощника(); - ИначеЕсли ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаНастройкиПараметровРезервногоКопирования - ИЛИ ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.ДополнительныеНастройки Тогда - + Если ТекущаяСтраницаПомощника = Элементы.СтраницаНачальногоОповещения + ИЛИ ТекущаяСтраницаПомощника = Элементы.СтраницаНачальногоОповещенияКлиентСервер Тогда + + ПараметрыРезервногоКопированияИБ.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования = '29990101'; + ОстановитьАвтоматическоеРезервноеКопирование(Ложь); + КодПереключателя = Объект.КодТипаРезервногоКопирования; + УстановитьКодВыбора(КодПереключателя); + НоваяСтраницаПомощника = Неопределено; + + Если КодПереключателя = 1 Тогда // Настройка автоматического резервного копирования. + НоваяСтраницаПомощника = Элементы.СтраницаНастройкиПараметровРезервногоКопирования; + ИначеЕсли КодПереключателя = 2 Тогда // Копирование сторонними средствами. + ОповещениеПользователю(НСтр("ru ='Работа помощника завершена. С этого момента оповещения о резервном копировании поступать не будут.'")); + ОстановитьСервисОповещения(); + ИначеЕсли КодПереключателя = 3 Тогда // Отложенное копирование. + ПриИзмененииВремениОповещения(Объект.ПериодОповещения, Объект.ЕдиницаИзмеренияПериодаОповещения); + ОповещениеПользователю(НСтр("ru ='Был изменен период оповещений о резервном копировании.'")); + КонецЕсли; + ПриОткрытииНовойСтраницы(НоваяСтраницаПомощника); + + ИначеЕсли ТекущаяСтраницаПомощника = Элементы.СтраницаНастройкиПараметровРезервногоКопирования + ИЛИ ТекущаяСтраницаПомощника = Элементы.ДополнительныеНастройки Тогда + ИнформацияОбОшибке = ""; Если Не ПроверитьЗаполнениеРеквизитов(ИнформацияОбОшибке) и Не ПустаяСтрока(ИнформацияОбОшибке) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ИнформацияОбОшибке); Возврат; - КонецЕсли; + КонецЕсли; Если НЕ ПроверитьДоступКИБ() Тогда - НоваяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.ДополнительныеНастройки; + НоваяСтраницаПомощника = Элементы.ДополнительныеНастройки; ПриОткрытииНовойСтраницы(НоваяСтраницаПомощника); Возврат; КонецЕсли; - ЗапомнитьПараметрыАдминистратора(АдминистраторИБ, ПарольАдминистратораИБ, ПараметрыРезервногоКопированияИБ); + ЗапомнитьПараметрыАдминистратора(АдминистраторИБ, ПарольАдминистратораИБ); ПриПереходеНаАвтоматическийРежимКопирования(); - ПриИзмененииВремениОповещения(-1, "", ПараметрыРезервногоКопированияИБ); - УстановитьПутьАрхиваСКопиями(Объект.КаталогСРезервнымиКопиями, ПараметрыРезервногоКопированияИБ); + ПриИзмененииВремениОповещения(-1, ""); + УстановитьПутьАрхиваСКопиями(Объект.КаталогСРезервнымиКопиями); + + Если Объект.ВыполнитьРезервноеКопированиеСейчас И Не ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда - Если Объект.ВыполнитьРезервноеКопированиеСейчас Тогда + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ТипВызова", 1); + ПараметрыФормы.Вставить("ТекущаяСтраница", "СтраницаИнформацииИВыполненияРезервногоКопирования"); + ПараметрыФормы.Вставить("ЗаголовокНадписи", ""); - ПараметрыФормы = Новый Структура("ТипВызова, ТекущаяСтраница, ЗаголовокНадписи", - 1, "СтраницаИнформацииИВыполненияРезервногоКопирования", ""); - - ФормаОбработки = ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеИнформационнойБазы", ПараметрыФормы); + ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма.РезервноеКопированиеИнформационнойБазы", ПараметрыФормы); + + КонецЕсли; - КонецЕсли; Иначе + Закрыть(); + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -258,7 +291,7 @@ &НаКлиенте Процедура ИзменитьРасписание(Команда) - Расписание = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ПараметрыРезервногоКопированияИБ.РасписаниеКопирования; + Расписание = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().РезервноеКопированиеИБ.РасписаниеКопирования; Расписание = ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(Расписание); ДиалогРасписания = Новый ДиалогРасписанияРегламентногоЗадания(Расписание); Если НЕ ДиалогРасписания.ОткрытьМодально() Тогда @@ -273,7 +306,10 @@ Объект.ВариантРасписанияРезервногоКопирования = "0"; Объект.СтрокаРасписания = Строка(Расписание); РасписаниеСтруктура = ОбщегоНазначенияКлиентСервер.РасписаниеВСтруктуру(Расписание); - ПоместитьРасписаниеВНастройку(РасписаниеСтруктура, ПараметрыРезервногоКопированияИБ); + + ПоместитьРасписаниеВНастройку(РасписаниеСтруктура); + + ПараметрыРезервногоКопированияИБ.РасписаниеЗначение = Расписание; КонецПроцедуры @@ -281,12 +317,12 @@ Процедура Назад(Команда) ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ТекущаяСтраница; - Если ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаНастройкиПараметровРезервногоКопирования Тогда - ПриОткрытииНовойСтраницы(Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаНачальногоОповещения); - ИначеЕсли ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаНачальногоОповещения Тогда - ПриОткрытииНовойСтраницы(Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаВыполненияРезервногоКопирования); - ИначеЕсли ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.ДополнительныеНастройки Тогда - ПриОткрытииНовойСтраницы(Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаНастройкиПараметровРезервногоКопирования); + Если ТекущаяСтраницаПомощника = Элементы.СтраницаНастройкиПараметровРезервногоКопирования Тогда + ПриОткрытииНовойСтраницы(Элементы.СтраницаНачальногоОповещения); + ИначеЕсли ТекущаяСтраницаПомощника = Элементы.СтраницаНачальногоОповещения Тогда + ПриОткрытииНовойСтраницы(Элементы.СтраницаВыполненияРезервногоКопирования); + ИначеЕсли ТекущаяСтраницаПомощника = Элементы.ДополнительныеНастройки Тогда + ПриОткрытииНовойСтраницы(Элементы.СтраницаНастройкиПараметровРезервногоКопирования); КонецЕсли; КонецПроцедуры @@ -303,30 +339,6 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -&НаСервере -Процедура ОпределениеНадписиВнимание(НастройкиРезервногоКопирования) - - НадписьПоУмолчанию = НСтр("ru = 'Внимание! Данные информационной базы подвергаются риску, так как не выполняется их резервное копирование.'");; - - Если Объект.КодТипаРезервногоКопирования = 3 Тогда - Элементы.НадписьВнимание.Заголовок = НадписьПоУмолчанию; - ИначеЕсли Объект.КодТипаРезервногоКопирования = 2 Тогда - Элементы.НадписьВнимание.Заголовок = НСтр("ru = 'Резервное копирование настроено сторонними средствами.'"); - Иначе - Если НастройкиРезервногоКопирования.ПроводитьРезервноеКопированиеПриЗавершенииРаботы Тогда - Элементы.НадписьВнимание.Заголовок = НСтр("ru = 'Резервное копирование настроено по завершению работы'"); - Иначе - Расписание = ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(НастройкиРезервногоКопирования.РасписаниеКопирования); - Если Не ПустаяСтрока(Расписание) Тогда - Элементы.НадписьВнимание.Заголовок = НСтр("ru = 'Резервное копирование настроено:'") + " " + Строка(Расписание); - Иначе - Элементы.НадписьВнимание.Заголовок = НадписьПоУмолчанию; - КонецЕсли; - КонецЕсли; - КонецЕсли; - -КонецПроцедуры - &НаКлиенте Функция ПроверитьЗаполнениеРеквизитов(ИнформацияОбОшибке) @@ -361,7 +373,7 @@ // Возвращает страницу, которая должна быть показана пользователю при открытии окна помощника. // Если ПолныеПрава - тогда попадаем на функциональную страницу. -// Если нет - тогда на информационную страницу с просьбой обратиться к сис. администратору. +// Если нет - тогда на информационную страницу с просьбой обратиться к системному администратору. // Состав элементов функциональной страницы зависит от архитектуры информационной базы. &НаСервере Функция ОпределитьСтраницуПоПравамИАрхитектуре() @@ -375,7 +387,7 @@ ЭтоФайловаяБаза = ОбщегоНазначения.ИнформационнаяБазаФайловая(СтрокаСоединенияСБД); Если ЭтоФайловаяБаза Тогда - СтартоваяСтраница = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаНачальногоОповещения; + СтартоваяСтраница = Элементы.СтраницаНачальногоОповещения; Иначе СтартоваяСтраница = СтраницыПомощника.СтраницаНачальногоОповещенияКлиентСервер; @@ -456,74 +468,74 @@ // Устанавливает новые параметры резервного копирования при изменении времени оповещения. &НаСервереБезКонтекста -Процедура ПриИзмененииВремениОповещения(ПараметрКоличества, ПараметрТипа, ПараметрыРезервногоКопированияИБНаКлиенте) +Процедура ПриИзмененииВремениОповещения(ПериодОповещения, ЕдиницаИзмеренияПериодаОповещения) - ПараметрыОповещенияОРезервномКопировании = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); + НастройкиРезервногоКопирования = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); ТекущаяДата = ТекущаяДатаСеанса(); - Если ПараметрКоличества = -1 Тогда // если пользователь отказался от оповещений + Если ПериодОповещения = -1 Тогда // Пользователь отказался от оповещений. + + НастройкиРезервногоКопирования.ПериодОповещения = 0; + НастройкиРезервногоКопирования.НастроеноПользователем = Истина; + + ИначеЕсли ПериодОповещения = 0 Тогда // Пользователь хочет получать оповещения, но отказался от копирования. + + НастройкиРезервногоКопирования.ДатаПоследнегоОповещения = ТекущаяДата; + + Иначе + + Если ЕдиницаИзмеренияПериодаОповещения = "Месяц" Тогда + РазностьДат = ДобавитьМесяц(ТекущаяДата, ПериодОповещения) - ТекущаяДата; + Иначе + РазностьДат = РезервноеКопированиеИБСервер.ПолучитьВременнойПараметрПоСтроке(ЕдиницаИзмеренияПериодаОповещения); + КонецЕсли; + + НастройкиРезервногоКопирования.ДатаПоследнегоОповещения = ТекущаяДата; + НастройкиРезервногоКопирования.ПериодОповещения = ПериодОповещения * РазностьДат; - ОстановитьСервисОповещенияОРезервномКопировании(ПараметрыРезервногоКопированияИБНаКлиенте); - ПараметрыОповещенияОРезервномКопировании.НастроеноПользователем = Истина; - - ИначеЕсли ПараметрКоличества = 0 Тогда // если пользователь отказался от копирования, но хочет получать оповещения - ПараметрыОповещенияОРезервномКопировании.ДатаПоследнегоОповещения = ТекущаяДата; - Иначе - ПараметрыОповещенияОРезервномКопировании.ДатаПоследнегоОповещения = ТекущаяДата; - ПараметрыОповещенияОРезервномКопировании.ПериодОповещения = ПараметрКоличества * - ?(ПараметрТипа = "Месяц", - (ДобавитьМесяц(ТекущаяДата, ПараметрКоличества) - ТекущаяДата), - РезервноеКопированиеИБСервер.ПолучитьВременнойПараметрПоСтроке(ПараметрТипа)); КонецЕсли; - ПараметрыРезервногоКопированияИБНаКлиенте = ПараметрыОповещенияОРезервномКопировании; - РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(ПараметрыОповещенияОРезервномКопировании); + + РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(НастройкиРезервногоКопирования); КонецПроцедуры // Останавливает работу сервиса резервного копирования. &НаСервереБезКонтекста -Процедура ОстановитьСервисОповещенияОРезервномКопировании(ПараметрыРезервногоКопированияИБНаКлиенте) +Процедура ОстановитьСервисОповещенияОРезервномКопировании() - ПараметрыОповещенияОРезервномКопировании= РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); - ПараметрыОповещенияОРезервномКопировании.ДатаПоследнегоОповещения = Дата('00010101'); - ПараметрыОповещенияОРезервномКопировании.ПериодОповещения = 0; - ПараметрыРезервногоКопированияИБНаКлиенте = ПараметрыОповещенияОРезервномКопировании; - РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(ПараметрыОповещенияОРезервномКопировании); + НастройкиРезервногоКопирования = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); + НастройкиРезервногоКопирования.ДатаПоследнегоОповещения = Дата('00010101'); + НастройкиРезервногоКопирования.ПериодОповещения = 0; + + РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(НастройкиРезервногоКопирования); КонецПроцедуры // Записывает параметры настройки удаления резервных копий из каталога. &НаСервереБезКонтекста -Процедура УстановитьНастройкиУдаленияУстаревшихКопий(ТипУдаления, ПараметрЗначения, ПараметрыРезервногоКопированияИБНаКлиенте) +Процедура УстановитьНастройкиУдаленияУстаревшихКопий(ТипУдаления, ПараметрЗначения) СтруктураНастроек = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); СтруктураНастроек.ПроизводитьУдаление = Истина; СтруктураНастроек.УдалятьПоПериоду = ТипУдаления; СтруктураНастроек.ЗначениеПараметра = ПараметрЗначения; - ПараметрыРезервногоКопированияИБНаКлиенте = СтруктураНастроек; РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(СтруктураНастроек); КонецПроцедуры // Записывает настройку - путь к каталогу с резервными копиями. &НаСервереБезКонтекста -Процедура УстановитьПутьАрхиваСКопиями(Путь, ПараметрыРезервногоКопированияИБНаКлиенте) - - НастройкиПути = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); - НастройкиПути.КаталогХраненияРезервныхКопий = Путь; - ПараметрыРезервногоКопированияИБНаКлиенте = НастройкиПути; - РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(НастройкиПути); - +Процедура УстановитьПутьАрхиваСКопиями(КаталогХраненияРезервныхКопий) + РезервноеКопированиеИБСервер.УстановитьЗначениеНастройки("КаталогХраненияРезервныхКопий", КаталогХраненияРезервныхКопий); КонецПроцедуры // Записывает настройку - расписание проведения резервного копирования. &НаСервереБезКонтекста -Процедура ПоместитьРасписаниеВНастройку(НовоеРасписаниеКопирования, ПараметрыРезервногоКопированияИБНаКлиенте) +Процедура ПоместитьРасписаниеВНастройку(НовоеРасписаниеКопирования) Параметры = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); Параметры.РасписаниеКопирования = НовоеРасписаниеКопирования; - ПараметрыРезервногоКопированияИБНаКлиенте = Параметры; РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(Параметры); - ОбновитьПовторноИспользуемыеЗначения(); // сбрысываем кеш для применения настроек + ОбновитьПовторноИспользуемыеЗначения(); // сбрасываем кеш для применения настроек КонецПроцедуры @@ -544,28 +556,6 @@ КонецПроцедуры -// Обработчик значения переключателя "Код типа резервного копирования" при нажатии на кнопку "Далее". -&НаКлиенте -Процедура ОбработатьНачальнуюНастройкуПомощника() - - РезервноеКопированиеИБВызовСервера.ОстановитьАвтоматическоеРезервноеКопирование(ПараметрыРезервногоКопированияИБ); - КодПереключателя = Объект.КодТипаРезервногоКопирования; - РезервноеКопированиеИБВызовСервера.УстановитьКодВыбора(КодПереключателя, ПараметрыРезервногоКопированияИБ); - НоваяСтраницаПомощника = Неопределено; - - Если КодПереключателя = 1 Тогда // Настройка автоматического резервного копирования. - НоваяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаНастройкиПараметровРезервногоКопирования; - ИначеЕсли КодПереключателя = 2 Тогда // Копирование сторонними средствами. - ОповещениеПользователю(НСтр("ru ='Работа помощника завершена. С этого момента оповещения о резервном копировании поступать не будут.'")); - РезервноеКопированиеИБВызовСервера.ОстановитьСервисОповещения(ПараметрыРезервногоКопированияИБ); - ИначеЕсли КодПереключателя = 3 Тогда // Отложенное копирование. - ПриИзмененииВремениОповещения(Объект.ПериодОповещения, Объект.ЕдиницаИзмеренияПериодаОповещения, ПараметрыРезервногоКопированияИБ); - ОповещениеПользователю(НСтр("ru ='Был изменен период оповещений о резервном копировании.'")); - КонецЕсли; - ПриОткрытииНовойСтраницы(НоваяСтраницаПомощника); - -КонецПроцедуры - // Обработчик изменения страницы помощника. Открывает новую страницу и выполняет необходимые действия. // Параметры : // НоваяСтраницаПомощника - страница , которую необходимо открыть в данный момент. @@ -637,25 +627,27 @@ Если ПроверитьЗаполнение() Тогда - СохранитьНастройкиПоОчисткеКаталогаСРезервнымиКопиями(ПараметрыРезервногоКопированияИБ); + СохранитьНастройкиПоОчисткеКаталогаСРезервнымиКопиями(); - Если Объект.ВариантПроведенияРезервногоКопирования = 1 Тогда + Если Объект.ВариантПроведенияРезервногоКопирования = 1 Тогда ОповещатьОРезервномКопированииПриЗавершенииСеанса = Ложь; - РезервноеКопированиеИБВызовСервера.УстановитьДатуСледующегоАвтоматическогоКопирования(ПараметрыРезервногоКопированияИБ, Истина); + ДатыСледующегоАвтоматическогоКопирования = РезервноеКопированиеИБВызовСервера.СформироватьДатыСледующегоАвтоматическогоКопирования(Истина); + ЗаполнитьЗначенияСвойств(ПараметрыРезервногоКопированияИБ, ДатыСледующегоАвтоматическогоКопирования); Иначе ОповещатьОРезервномКопированииПриЗавершенииСеанса = Истина; - РезервноеКопированиеИБВызовСервера.ОстановитьАвтоматическоеРезервноеКопирование(ПараметрыРезервногоКопированияИБ, Истина); - КонецЕсли; + ПараметрыРезервногоКопированияИБ.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования = '29990101'; + ОстановитьАвтоматическоеРезервноеКопирование(Истина); + КонецЕсли; ПриЗавершенииРаботыПомощника(НСтр("ru = 'Настройка расписания резервного копирования прошла успешно.'")); - ОстановитьСервисОповещенияОРезервномКопировании(ПараметрыРезервногоКопированияИБ); + ОстановитьСервисОповещенияОРезервномКопировании(); КонецЕсли; КонецПроцедуры - &НаСервере -Процедура СохранитьНастройкиПоОчисткеКаталогаСРезервнымиКопиями(ПараметрыРезервногоКопированияИБНаКлиенте) +&НаСервере +Процедура СохранитьНастройкиПоОчисткеКаталогаСРезервнымиКопиями() - РезервноеКопированиеИБСервер.УстановитьЗначениеНастройки("ПроизводитьУдаление", Объект.ОчисткаКаталогаСРезервнымиКопиямиПриПереполнении, ПараметрыРезервногоКопированияИБНаКлиенте); + РезервноеКопированиеИБСервер.УстановитьЗначениеНастройки("ПроизводитьУдаление", Объект.ОчисткаКаталогаСРезервнымиКопиямиПриПереполнении); Если Объект.ОчисткаКаталогаСРезервнымиКопиямиПриПереполнении Тогда Если Объект.ТипОграниченияКаталогаСРезервнымиКопиями = "ПоПериоду" Тогда ЗаданныйПериод = Объект.ЕдиницаИзмеренияПериодаХраненияРезервныхКопий; @@ -669,15 +661,49 @@ ПараметрЗначенияОграничения = Объект.ПериодХраненияРезервныхКопий * ПериодВСекундах; Иначе ПараметрЗначенияОграничения = Объект.КоличествоКопийВКаталоге; - КонецЕсли; - УстановитьНастройкиУдаленияУстаревшихКопий(?(Объект.ТипОграниченияКаталогаСРезервнымиКопиями = "ПоПериоду", Истина, Ложь), ПараметрЗначенияОграничения, ПараметрыРезервногоКопированияИБНаКлиенте); - УстановитьПутьАрхиваСКопиями(Объект.КаталогСРезервнымиКопиями, ПараметрыРезервногоКопированияИБНаКлиенте); + КонецЕсли; + УстановитьНастройкиУдаленияУстаревшихКопий(?(Объект.ТипОграниченияКаталогаСРезервнымиКопиями = "ПоПериоду", Истина, Ложь), ПараметрЗначенияОграничения); + УстановитьПутьАрхиваСКопиями(Объект.КаталогСРезервнымиКопиями); Иначе ПараметрЗначенияОграничения = 0; - УстановитьНастройкиУдаленияУстаревшихКопий(Ложь, 0, ПараметрыРезервногоКопированияИБНаКлиенте); + УстановитьНастройкиУдаленияУстаревшихКопий(Ложь, 0); КонецЕсли; -КонецПроцедуры +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОстановитьАвтоматическоеРезервноеКопирование(ПроводитьРезервноеКопированиеПриЗавершенииРаботы) + // Останавливает механизм автоматического резервного копирования. + // Устанавливает пустое расписание и минимальную дату копирования в будущее время. + + НастройкиРезервногоКопирования = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); + НастройкиРезервногоКопирования.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования = '29990101'; + НастройкиРезервногоКопирования.ПроводитьРезервноеКопированиеПриЗавершенииРаботы = ПроводитьРезервноеКопированиеПриЗавершенииРаботы; + РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(НастройкиРезервногоКопирования); + +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура УстановитьКодВыбора(КодПереключателя) + // Устанавливает элемент "Код выбора" настроек резервного копирования. + НастройкиРезервногоКопирования = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); + НастройкиРезервногоКопирования.ВыборПунктаНастройки = КодПереключателя; + Если КодПереключателя = 3 Тогда + НастройкиРезервногоКопирования.НастроеноПользователем = Ложь; + КонецЕсли; + + РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(НастройкиРезервногоКопирования); +КонецПроцедуры + +&НаСервереБезКонтекста +Процедура ОстановитьСервисОповещения() + // Останавливает оповещения о резервном копировании. + НастройкиРезервногоКопирования = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); + НастройкиРезервногоКопирования.ПериодОповещения = 0; + НастройкиРезервногоКопирования.МинимальнаяДатаСледующегоАвтоматическогоРезервногоКопирования = '29990101'; + НастройкиРезервногоКопирования.НастроеноПользователем = Истина; + РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(НастройкиРезервногоКопирования); +КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // Процедуры и функции проведения резервного копирования diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Help/ru.html b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Help/ru.html index d0f9a0e38..0a7898d39 100644 --- a/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Help/ru.html +++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияИБ/Help/ru.html @@ -1,4 +1,4 @@ - +

            Форма настройки системы резервного копирования информационной базы.

            Предлагает следующие возможности:

            1) Выполнять резервное копирование автоматически.(Доступен только для файлового режима информационной базы). При выборе данного пункта, программа предложит выбрать расписание резервного копирования из нескольких наиболее часто используемых вариантов, а также возможность выбора своего собственного варианта расписания ( см. Расписание регламентного задания). Также необходимо  выбрать каталог, куда будут помещаться резервные копии, и, при необходимости, параметры очистки данного каталога от устаревших резервных копий. При завершении настройки система перейдет в режим автоматического резервного копирования.

            diff --git a/SSL/src/CommonForms/НастройкиРезервногоКопированияПриложений/Form.form b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаБезИнтервалов/Form.form similarity index 99% rename from SSL/src/CommonForms/НастройкиРезервногоКопированияПриложений/Form.form rename to SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаБезИнтервалов/Form.form index 75d7e3931..7d367c3b5 100644 --- a/SSL/src/CommonForms/НастройкиРезервногоКопированияПриложений/Form.form +++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаБезИнтервалов/Form.form @@ -1,5 +1,9 @@ + + <key>ru</key> + <value>Настройка резервного копирования приложения</value> + ФормаУстановитьНастройкиПоУмолчанию 25 @@ -1076,7 +1080,6 @@ LockOwner true - true true Vertical true diff --git a/SSL/src/CommonForms/НастройкиРезервногоКопированияПриложений/Module.bsl b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаБезИнтервалов/Module.bsl similarity index 91% rename from SSL/src/CommonForms/НастройкиРезервногоКопированияПриложений/Module.bsl rename to SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаБезИнтервалов/Module.bsl index d5f983994..0b9f8960e 100644 --- a/SSL/src/CommonForms/НастройкиРезервногоКопированияПриложений/Module.bsl +++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаБезИнтервалов/Module.bsl @@ -9,10 +9,6 @@ Возврат; КонецЕсли; - Если Не РезервноеКопированиеОбластейДанныхПовтИсп.МенеджерСервисаПоддерживаетРезервноеКопирование() Тогда - ВызватьИсключение(НСтр("ru = 'Менеджер сервиса не поддерживает резервное копирование приложений'")); - КонецЕсли; - НастройкиРезервногоКопирования = РезервноеКопированиеОбластейДанных.ПолучитьНастройкиРезервногоКопированияОбласти( РаботаВМоделиСервиса.ЗначениеРазделителяСеанса()); ЗаполнитьЗначенияСвойств(ЭтаФорма, НастройкиРезервногоКопирования); diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаСИнтервалами/Form.form b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаСИнтервалами/Form.form new file mode 100644 index 000000000..4ad1d5cd4 --- /dev/null +++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаСИнтервалами/Form.form @@ -0,0 +1,1663 @@ + + + + <key>ru</key> + <value>Настройка резервного копирования приложения</value> + + + ПредставлениеПриложения + 1 + true + true + + true + + + ПредставлениеПриложения + + + ПредставлениеПриложенияРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + + ПредставлениеПриложенияКонтекстноеМеню + 2 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ГруппаПараметрыФормирования + 7 + + ИнтервалФормированияКопий + 17 + + ИнтервалФормированияКопийСтраница + 18 + + НачалоИнтервалаФормированияКопий + 9 + + <key>ru</key> + <value>Формировать копии с</value> + + true + true + + true + + + НачалоИнтервалаФормированияКопий + + + НачалоИнтервалаФормированияКопийРасширеннаяПодсказка + 62 + Label + true + true + + Left + + + + НачалоИнтервалаФормированияКопийКонтекстноеМеню + 10 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ОкончаниеИнтервалаФормированияКопий + 11 + + <key>ru</key> + <value>по</value> + + true + true + + true + + + ОкончаниеИнтервалаФормированияКопий + + + ОкончаниеИнтервалаФормированияКопийРасширеннаяПодсказка + 64 + Label + true + true + + Left + + + + ОкончаниеИнтервалаФормированияКопийКонтекстноеМеню + 12 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ЧасовойПояс + 13 + true + true + + true + + + ЧасовойПояс + + None + + ЧасовойПоясРасширеннаяПодсказка + 66 + Label + true + true + + Left + + + + ЧасовойПоясКонтекстноеМеню + 14 + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Интервал формирования копий страница</value> + + + ИнтервалФормированияКопийСтраницаРасширеннаяПодсказка + 61 + Label + true + true + + Left + + + Page + + auto + + + true + true + + true + + + <key>ru</key> + <value>Интервал формирования копий</value> + + + ИнтервалФормированияКопийРасширеннаяПодсказка + 60 + Label + true + true + + Left + + + Pages + + Auto + + + + ГруппаПараметрыФормированияКолонки + 19 + + ГруппаПериодичность + 20 + + ФормироватьЕжедневныеКопии + 24 + true + true + + true + + + ФормироватьЕжедневныеКопии + + + ФормироватьЕжедневныеКопииРасширеннаяПодсказка + 70 + Label + true + true + + Left + + + + ФормироватьЕжедневныеКопииКонтекстноеМеню + 25 + true + + CheckBoxField + Enter + true + Left + true + + + + ГруппаЕжемесячныеКопии + 23 + + ФормироватьЕжемесячныеКопии + 26 + true + true + + true + + + ФормироватьЕжемесячныеКопии + + + ФормироватьЕжемесячныеКопииРасширеннаяПодсказка + 73 + Label + true + true + + Left + + + + ФормироватьЕжемесячныеКопииКонтекстноеМеню + 27 + true + + CheckBoxField + Enter + true + Left + true + + + + ЧислоМесяцаФормированияЕжемесячныхКопий + 31 + + <key>ru</key> + <value> числа месяца</value> + + true + true + + true + + + ЧислоМесяцаФормированияЕжемесячныхКопий + + Right + + ЧислоМесяцаФормированияЕжемесячныхКопийРасширеннаяПодсказка + 75 + Label + true + true + + Left + + + + ЧислоМесяцаФормированияЕжемесячныхКопийКонтекстноеМеню + 32 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 1 + + + 28 + + Normal + + + true + true + + true + + + <key>ru</key> + <value>Группа ежемесячные копии</value> + + + ru + Группа ежемесячные копии + + + ГруппаЕжемесячныеКопииРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ГруппаЕжегодныеКопии + 28 + + ФормироватьЕжегодныеКопии + 29 + true + true + + true + + + ФормироватьЕжегодныеКопии + + + ФормироватьЕжегодныеКопииРасширеннаяПодсказка + 78 + Label + true + true + + Left + + + + ФормироватьЕжегодныеКопииКонтекстноеМеню + 30 + true + + CheckBoxField + Enter + true + Left + true + + + + ЧислоМесяцаФормированияЕжегодныхКопий + 33 + true + true + + true + + + ЧислоМесяцаФормированияЕжегодныхКопий + + None + + ЧислоМесяцаФормированияЕжегодныхКопийРасширеннаяПодсказка + 80 + Label + true + true + + Left + + + + ЧислоМесяцаФормированияЕжегодныхКопийКонтекстноеМеню + 34 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + true + + 1 + + + 28 + + Normal + + + + МесяцФормированияЕжегодныхКопий + 35 + true + true + + true + + + МесяцФормированияЕжегодныхКопий + + None + + МесяцФормированияЕжегодныхКопийРасширеннаяПодсказка + 82 + Label + true + true + + Left + + + + МесяцФормированияЕжегодныхКопийКонтекстноеМеню + 36 + true + + InputField + Enter + true + Left + true + + 10 + true + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Группа ежегодные копии</value> + + + ГруппаЕжегодныеКопииРасширеннаяПодсказка + 77 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа периодичность</value> + + + ГруппаПериодичностьРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаКоличество + 37 + + ГруппаКоличествоЕжедневных + 44 + + КоличествоЕжедневныхКопий + 38 + + <key>ru</key> + <value>хранить</value> + + true + true + + true + + + КоличествоЕжедневныхКопий + + + OnChange + КоличествоЕжедневныхКопийПриИзменении + + + КоличествоЕжедневныхКопийРасширеннаяПодсказка + 86 + Label + true + true + + Left + + + + КоличествоЕжедневныхКопийКонтекстноеМеню + 39 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ПодписьКоличестваЕжедневных + 51 + true + true + + true + + + ПодписьКоличестваЕжедневных + + None + + ПодписьКоличестваЕжедневныхРасширеннаяПодсказка + 88 + Label + true + true + + Left + + + + ПодписьКоличестваЕжедневныхКонтекстноеМеню + 52 + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Группа количество ежедневных</value> + + + ГруппаКоличествоЕжедневныхРасширеннаяПодсказка + 85 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ГруппаКоличествоЕжемесячных + 45 + + КоличествоЕжемесячныхКопий + 40 + + <key>ru</key> + <value>хранить</value> + + true + true + + true + + + КоличествоЕжемесячныхКопий + + + OnChange + КоличествоЕжемесячныхКопийПриИзменении + + + КоличествоЕжемесячныхКопийРасширеннаяПодсказка + 91 + Label + true + true + + Left + + + + КоличествоЕжемесячныхКопийКонтекстноеМеню + 41 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ПодписьКоличестваЕжемесячных + 49 + true + true + + true + + + ПодписьКоличестваЕжемесячных + + None + + ПодписьКоличестваЕжемесячныхРасширеннаяПодсказка + 93 + Label + true + true + + Left + + + + ПодписьКоличестваЕжемесячныхКонтекстноеМеню + 50 + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Группа количество ежемесячных</value> + + + ГруппаКоличествоЕжемесячныхРасширеннаяПодсказка + 90 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ГруппаКоличествоЕжегодных + 46 + + КоличествоЕжегодныхКопий + 42 + + <key>ru</key> + <value>хранить</value> + + true + true + + true + + + КоличествоЕжегодныхКопий + + + OnChange + КоличествоЕжегодныхКопийПриИзменении + + + КоличествоЕжегодныхКопийРасширеннаяПодсказка + 96 + Label + true + true + + Left + + + + КоличествоЕжегодныхКопийКонтекстноеМеню + 43 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ПодписьКоличестваЕжегодных + 47 + true + true + + true + + + ПодписьКоличестваЕжегодных + + None + + ПодписьКоличестваЕжегодныхРасширеннаяПодсказка + 98 + Label + true + true + + Left + + + + ПодписьКоличестваЕжегодныхКонтекстноеМеню + 48 + true + + LabelField + Enter + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Группа количество ежегодных</value> + + + ru + Группа количество ежегодных + + + ГруппаКоличествоЕжегодныхРасширеннаяПодсказка + 95 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа количество</value> + + + ГруппаКоличествоРасширеннаяПодсказка + 84 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа параметры формирования колонки</value> + + + ГруппаПараметрыФормированияКолонкиРасширеннаяПодсказка + 68 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + + ФормироватьКопииТолькоПриАктивностиПользователей + 15 + + <key>ru</key> + <value>Формировать копии только в дни работы пользователей</value> + + true + true + + true + + + ФормироватьКопииТолькоПриАктивностиПользователей + + + ФормироватьКопииТолькоПриАктивностиПользователейРасширеннаяПодсказка + 100 + Label + true + true + + Left + + + + ФормироватьКопииТолькоПриАктивностиПользователейКонтекстноеМеню + 16 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Группа параметры формирования</value> + + + ГруппаПараметрыФормированияРасширеннаяПодсказка + 59 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ЗаписатьИЗакрыть + 4 + true + true + + true + + + ЗаписатьИЗакрытьРасширеннаяПодсказка + 53 + Label + true + true + + Left + + + Form.Command.ЗаписатьИЗакрыть + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписать + 6 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + Form.Command.Записать + Normal + Auto + true + true + UserCmds + Auto + + + ФормаПеречитать + 5 + true + true + + true + + + ФормаПеречитатьРасширеннаяПодсказка + 55 + Label + true + true + + Left + + + Form.Command.Перечитать + Normal + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьПоУмолчанию + 3 + true + true + + true + + + ФормаУстановитьПоУмолчаниюРасширеннаяПодсказка + 56 + Label + true + true + + Left + + + Form.Command.УстановитьСтандартныеНастройки + Normal + Auto + true + true + UserCmds + Auto + + Left + true + + + BeforeClose + ПередЗакрытием + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + Vertical + true + true + UseIfNecessary + auto + true + + ПредставлениеПриложения + + <key>ru</key> + <value>Приложение</value> + + 1 + + String + + + + true + + + true + + + + НачалоИнтервалаФормированияКопий + + <key>ru</key> + <value>Начало интервала формирования копий</value> + + 3 + + Date + + Time + + + + true + + + true + + true + + + ОкончаниеИнтервалаФормированияКопий + + <key>ru</key> + <value>Окончание интервала формирования копий</value> + + 4 + + Date + + Time + + + + true + + + true + + true + + + ЧасовойПояс + + <key>ru</key> + <value>Часовой пояс</value> + + 5 + + String + + + + true + + + true + + + + ФормироватьКопииТолькоПриАктивностиПользователей + + <key>ru</key> + <value>Формировать копии только при активности пользователей</value> + + 6 + + Boolean + + + true + + + true + + true + + + ФормироватьЕжедневныеКопии + + <key>ru</key> + <value>Формировать ежедневные копии</value> + + 7 + + Boolean + + + true + + + true + + true + + + ФормироватьЕжемесячныеКопии + + <key>ru</key> + <value>Формировать ежемесячные копии</value> + + 8 + + Boolean + + + true + + + true + + true + + + ФормироватьЕжегодныеКопии + + <key>ru</key> + <value>Формировать ежегодные копии</value> + + 9 + + Boolean + + + true + + + true + + true + + + ЧислоМесяцаФормированияЕжемесячныхКопий + + <key>ru</key> + <value>Число месяца формирования ежемесячных копий</value> + + 10 + + Number + + 2 + true + + + + true + + + true + + true + + + ЧислоМесяцаФормированияЕжегодныхКопий + + <key>ru</key> + <value>Число месяца формирования ежегодных копий</value> + + 11 + + Number + + 2 + true + + + + true + + + true + + true + + + МесяцФормированияЕжегодныхКопий + + <key>ru</key> + <value>Месяц формирования ежегодных копий</value> + + 12 + + Number + + 2 + true + + + + true + + + true + + true + + + КоличествоЕжедневныхКопий + + <key>ru</key> + <value>Количество ежедневных копий</value> + + 13 + + Number + + 2 + true + + + + true + + + true + + true + + + КоличествоЕжемесячныхКопий + + <key>ru</key> + <value>Количество ежемесячных копий</value> + + 14 + + Number + + 2 + true + + + + true + + + true + + true + + + КоличествоЕжегодныхКопий + + <key>ru</key> + <value>Количество ежегодных копий</value> + + 15 + + Number + + 2 + true + + + + true + + + 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> + + 18 + + String + + + + true + + + true + + + + ИсходныеНастройки + + <key>ru</key> + <value>Исходные настройки</value> + + 2 + + + true + + + true + + + + УстановитьСтандартныеНастройки + + <key>ru</key> + <value>Установить стандартные настройки</value> + + 1 + + ru + Установить стандартные настройки + + + true + + + + УстановитьСтандартныеНастройки + + + true + Auto + Auto + + + ЗаписатьИЗакрыть + + <key>ru</key> + <value>Записать и закрыть</value> + + 2 + + ru + Записать и закрыть + + + true + + + StdPicture.WriteAndClose + + + + ЗаписатьИЗакрыть + + + Text + true + Auto + Auto + + + Перечитать + + <key>ru</key> + <value>Перечитать</value> + + 3 + + ru + Перечитать + + + true + + + StdPicture.Reread + + + + Перечитать + + + Auto + Auto + + + Записать + + <key>ru</key> + <value>Записать</value> + + 4 + + ru + Записать + + + true + + + StdPicture.Write + + + + Записать + + + Auto + Auto + + + ДанныеНастроек + + + + ОбластьДанных + + Number + + 7 + true + + + true + + + ОграниченияНастроек + + + + + + + diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаСИнтервалами/Module.bsl b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаСИнтервалами/Module.bsl new file mode 100644 index 000000000..37728c2e8 --- /dev/null +++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/Forms/НастройкаСИнтервалами/Module.bsl @@ -0,0 +1,238 @@ + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + // Инициализация формы + Для НомерМесяца = 1 По 12 Цикл + Элементы.МесяцФормированияЕжегодныхКопий.СписокВыбора.Добавить(НомерМесяца, + Формат(Дата(2, НомерМесяца, 1), "ДФ=MMMM")); + КонецЦикла; + + УстановитьШиринуПодписей(); + + ПрименитьОграниченияНастроек(); + + ЗаполнитьФормуПоНастройкам(Параметры.ДанныеНастроек); + +КонецПроцедуры + +&НаКлиенте +Процедура КоличествоЕжедневныхКопийПриИзменении(Элемент) + + ПодписьКоличестваЕжедневных = ПодписьКоличестваКопий(КоличествоЕжедневныхКопий); + +КонецПроцедуры + +&НаКлиенте +Процедура КоличествоЕжемесячныхКопийПриИзменении(Элемент) + + ПодписьКоличестваЕжемесячных = ПодписьКоличестваКопий(КоличествоЕжемесячныхКопий); + +КонецПроцедуры + +&НаКлиенте +Процедура КоличествоЕжегодныхКопийПриИзменении(Элемент) + + ПодписьКоличестваЕжегодных = ПодписьКоличестваКопий(КоличествоЕжегодныхКопий); + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) + + Если Модифицированность Тогда + Ответ = Вопрос(НСтр("ru = 'Данные были изменены. Сохранить изменения?'"), + РежимДиалогаВопрос.ДаНетОтмена, , КодВозвратаДиалога.Да); + Если Ответ = КодВозвратаДиалога.Отмена Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + + Если Ответ = КодВозвратаДиалога.Да Тогда + ЗаписатьНовыеНастройки(); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + +&НаКлиенте +Процедура Перечитать(Команда) + + ПеречитатьНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура Записать(Команда) + + ЗаписатьНовыеНастройки(); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗаписатьИЗакрыть(Команда) + + ЗаписатьНовыеНастройки(); + Закрыть(); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьСтандартныеНастройки(Команда) + + УстановитьСтандартныеНастройкиНаСервере(); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Процедура ПеречитатьНаСервере() + + ЗаполнитьФормуПоНастройкам( + РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс.ПолучитьНастройкиОбласти(Параметры.ОбластьДанных)); + + Модифицированность = Ложь; + +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьФормуПоНастройкам(Знач ДанныеНастроек, Знач ОбновлятьИсходныеНастройки = Истина) + + ЗаполнитьЗначенияСвойств(ЭтаФорма, ДанныеНастроек); + + Если ОбновлятьИсходныеНастройки Тогда + ИсходныеНастройки = ДанныеНастроек; + КонецЕсли; + + УстановитьПодписиВсехКоличеств(); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьШиринуПодписей() + + МаксимальнаяШирина = 0; + + ЧислаДляПроверки = Новый Массив; + ЧислаДляПроверки.Добавить(1); + ЧислаДляПроверки.Добавить(2); + ЧислаДляПроверки.Добавить(5); + + Для Каждого Число Из ЧислаДляПроверки Цикл + ШиринаНадписи = СтрДлина(ПодписьКоличестваКопий(Число)); + Если ШиринаНадписи > МаксимальнаяШирина Тогда + МаксимальнаяШирина = ШиринаНадписи; + КонецЕсли; + КонецЦикла; + + ЭлементыПодписей = Новый Массив; + ЭлементыПодписей.Добавить(Элементы.ПодписьКоличестваЕжедневных); + ЭлементыПодписей.Добавить(Элементы.ПодписьКоличестваЕжемесячных); + ЭлементыПодписей.Добавить(Элементы.ПодписьКоличестваЕжегодных); + + Для каждого ЭлементПодписи Из ЭлементыПодписей Цикл + ЭлементПодписи.Ширина = МаксимальнаяШирина; + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ПрименитьОграниченияНастроек() + + ОграниченияНастроек = Параметры.ОграниченияНастроек; + + ШаблонПодсказки = НСтр("ru = 'Максимум %1'"); + + ЭлементыОграничений = Новый Структура; + ЭлементыОграничений.Вставить("КоличествоЕжедневныхКопий", "МаксимумЕжедневныхКопий"); + ЭлементыОграничений.Вставить("КоличествоЕжемесячныхКопий", "МаксимумЕжемесячныхКопий"); + ЭлементыОграничений.Вставить("КоличествоЕжегодныхКопий", "МаксимумЕжегодныхКопий"); + + Для каждого КлючИзначение Из ЭлементыОграничений Цикл + Элемент = Элементы[КлючИзначение.Ключ]; + Элемент.МаксимальноеЗначение = ОграниченияНастроек[КлючИзначение.Значение]; + Элемент.Подсказка = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ШаблонПодсказки, + ОграниченияНастроек[КлючИзначение.Значение]); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьПодписиВсехКоличеств() + + ПодписьКоличестваЕжедневных = ПодписьКоличестваКопий(КоличествоЕжедневныхКопий); + ПодписьКоличестваЕжемесячных = ПодписьКоличестваКопий(КоличествоЕжемесячныхКопий); + ПодписьКоличестваЕжегодных = ПодписьКоличестваКопий(КоличествоЕжегодныхКопий); + +КонецПроцедуры + +&НаКлиентеНаСервереБезКонтекста +Функция ПодписьКоличестваКопий(Знач Количество) + + МассивПредставлений = Новый Массив; + МассивПредставлений.Добавить(НСтр("ru = 'последнюю копию'")); + МассивПредставлений.Добавить(НСтр("ru = 'последние копии'")); + МассивПредставлений.Добавить(НСтр("ru = 'последних копий'")); + + Если Количество >= 100 Тогда + Количество = Количество - Цел(Количество / 100)*100; + КонецЕсли; + + Если Количество > 20 Тогда + Количество = Количество - Цел(Количество/10)*10; + КонецЕсли; + + Если Количество = 1 Тогда + Результат = МассивПредставлений[0]; + ИначеЕсли Количество > 1 и Количество < 5 Тогда + Результат = МассивПредставлений[1]; + Иначе + Результат = МассивПредставлений[2]; + КонецЕсли; + + Возврат Результат; + +КонецФункции + +&НаСервере +Процедура ЗаписатьНовыеНастройки() + + НовыеНастройки = Новый Структура; + Для каждого КлючИЗначение Из ИсходныеНастройки Цикл + НовыеНастройки.Вставить(КлючИЗначение.Ключ, ЭтаФорма[КлючИЗначение.Ключ]); + КонецЦикла; + + НовыеНастройки = Новый ФиксированнаяСтруктура(НовыеНастройки); + + РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс.УстановитьНастройкиОбласти( + Параметры.ОбластьДанных, + НовыеНастройки, + ИсходныеНастройки); + + Модифицированность = Ложь; + ИсходныеНастройки = НовыеНастройки; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьСтандартныеНастройкиНаСервере() + + ЗаполнитьФормуПоНастройкам( + РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс.ПолучитьСтандартныеНастройки(), + Ложь); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/ManagerModule.bsl b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/ManagerModule.bsl new file mode 100644 index 000000000..618432c63 --- /dev/null +++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/ManagerModule.bsl @@ -0,0 +1,45 @@ +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + + УстановитьПривилегированныйРежим(Истина); + + Версии = ПолучитьВерсииWebСервиса(); + + Если Версии.Найти("1.0.2.1") <> Неопределено Тогда + + ВыбраннаяФорма = "НастройкаСИнтервалами"; + + ОбластьДанных = ОбщегоНазначения.ЗначениеРазделителяСеанса(); + + ДополнительныеПараметры = РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс. + ПолучитьПараметрыФормыНастроек(ОбластьДанных); + Для каждого КлючИЗначение Из ДополнительныеПараметры Цикл + Параметры.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + КонецЦикла; + + ИначеЕсли РезервноеКопированиеОбластейДанныхПовтИсп.МенеджерСервисаПоддерживаетРезервноеКопирование() Тогда + + ВыбраннаяФорма = "НастройкаБезИнтервалов"; + + Иначе + + ВызватьИсключение(НСтр("ru = 'Менеджер сервиса не поддерживает резервное копирование приложений'")); + + КонецЕсли; + +КонецПроцедуры + +Функция ПолучитьВерсииWebСервиса() + + Возврат ОбщегоНазначения.ПолучитьВерсииИнтерфейса( + Константы.ВнутреннийАдресМенеджераСервиса.Получить(), + Константы.ИмяСлужебногоПользователяМенеджераСервиса.Получить(), + Константы.ПарольСлужебногоПользователяМенеджераСервиса.Получить(), + "ZoneBackupControl"); + +КонецФункции + +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/InformationRegisters/УдалитьКурсыВалютПоКлассификатору/RecordSetModule.bsl b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/ObjectModule.bsl similarity index 100% rename from SSL/src/InformationRegisters/УдалитьКурсыВалютПоКлассификатору/RecordSetModule.bsl rename to SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/ObjectModule.bsl diff --git a/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/НастройкаРезервногоКопированияПриложения.mdo b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/НастройкаРезервногоКопированияПриложения.mdo new file mode 100644 index 000000000..bfebede27 --- /dev/null +++ b/SSL/src/DataProcessors/НастройкаРезервногоКопированияПриложения/НастройкаРезервногоКопированияПриложения.mdo @@ -0,0 +1,31 @@ + + + + + + + НастройкаРезервногоКопированияПриложения + + ru + Настройка резервного копирования приложения + + true + + НастройкаБезИнтервалов + + ru + Настройка без интервалов + + PersonalComputer + MobileDevice + + + НастройкаСИнтервалами + + ru + Настройка с интервалами + + PersonalComputer + MobileDevice + + diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборНастроек/Help/ru.html b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборНастроек/Help/ru.html index 43353eb34..b1131860b 100644 --- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборНастроек/Help/ru.html +++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборНастроек/Help/ru.html @@ -1,4 +1,4 @@ - +

            Выбор пользовательских настроек, которые необходимо скопировать или очистить:

            1. Список пользовательских настроек отчетов сгруппирован по названиям вариантов отчетов.
            2. В списке Внешний вид выводятся настройки внешнего вида форм, рабочего стола и командного интерфейса программы. diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Form.form b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Form.form index 9bc736191..11b5872e1 100644 --- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Form.form +++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Form.form @@ -952,72 +952,6 @@ ГруппаПоказыватьПользователейДочернихГрупп 34 - - ГруппаНельзяУстановитьСвойство - 35 - - ВсеПользователи - 32 - - <key>ru</key> - <value>Все пользователи</value> - - true - true - - true - - - ВсеПользователиРасширеннаяПодсказка - 114 - Label - true - true - - Left - - - - ВсеПользователиКонтекстноеМеню - 33 - true - - Label - true - true - - Left - - - true - true - - true - - - <key>ru</key> - <value>Группа нельзя установить свойство</value> - - - ru - Группа нельзя установить свойство - - - ГруппаНельзяУстановитьСвойствоРасширеннаяПодсказка - 113 - Label - true - true - - Left - - - Page - - Vertical - auto - - ГруппаУстановитьСвойство 36 @@ -1047,7 +981,7 @@ ПоказыватьПользователейДочернихГруппРасширеннаяПодсказка - 116 + 114 Label true true @@ -1082,7 +1016,7 @@ ГруппаУстановитьСвойствоРасширеннаяПодсказка - 115 + 113 Label true true diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Help/ru.html b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Help/ru.html index 152795ede..b9b4f3fe8 100644 --- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Help/ru.html +++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Help/ru.html @@ -1,3 +1,3 @@ - +

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

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

              \ No newline at end of file diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Module.bsl b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Module.bsl index 6fea41cf3..01289af7d 100644 --- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Module.bsl +++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ВыборПользователей/Module.bsl @@ -84,13 +84,7 @@ ПрименитьФильтрГрупп(ВыбраннаяГруппа); Если ИспользоватьГруппы Тогда - - Если ВыбраннаяГруппа.Группа = ГруппаВсеПользователи Тогда - Элементы.ГруппаПоказыватьПользователейДочернихГрупп.ТекущаяСтраница = Элементы.ГруппаНельзяУстановитьСвойство; - Иначе - Элементы.ГруппаПоказыватьПользователейДочернихГрупп.ТекущаяСтраница = Элементы.ГруппаУстановитьСвойство; - КонецЕсли; - + Элементы.ГруппаПоказыватьПользователейДочернихГрупп.ТекущаяСтраница = Элементы.ГруппаУстановитьСвойство; Иначе Элементы.ГруппаПоказыватьПользователейДочернихГрупп.Видимость = Ложь; КонецЕсли; diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/КопированиеНастроекПользователей/Help/ru.html b/SSL/src/DataProcessors/НастройкиПользователей/Forms/КопированиеНастроекПользователей/Help/ru.html index 1a97fc5c2..e4ce16ed7 100644 --- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/КопированиеНастроекПользователей/Help/ru.html +++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/КопированиеНастроекПользователей/Help/ru.html @@ -1,4 +1,4 @@ - +

              Копирование настроек пользователей:

              1. "Скопировать настройки от пользователя" - пользователь (или внешний пользователь), чьи настройки будут использоваться для копирования другим пользователям.
              2. "Кому копировать" - выбираются пользователи, которым необходимо скопировать настройки. При отметке значения "Выбранным пользователям" становится доступен выбор пользователей. diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Form.form b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Form.form index 7a140bfe9..a816e04c5 100644 --- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Form.form +++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Form.form @@ -274,7 +274,7 @@ InAdditionalSubmenu - СкопироватьНастройкиотчетовИВнешнегоВида + СкопироватьНастройкиОтчетовИВнешнегоВида 97 true true @@ -282,7 +282,7 @@ true - СкопироватьНастройкиотчетовИВнешнегоВидаРасширеннаяПодсказка + СкопироватьНастройкиОтчетовИВнешнегоВидаРасширеннаяПодсказка 131 Label true @@ -291,7 +291,7 @@ Left - Form.Command.СкопироватьНастройкиотчетовИВнешнегоВида + Form.Command.СкопироватьНастройкиОтчетовИВнешнегоВида Normal Auto true @@ -3222,7 +3222,7 @@ Auto - СкопироватьНастройкиотчетовИВнешнегоВида + СкопироватьНастройкиОтчетовИВнешнегоВида <key>ru</key> <value>Настройки отчетов и внешнего вида...</value> @@ -3230,14 +3230,14 @@ <id>13</id> <toolTip> <key>ru</key> - <value>Скопировать настройкиотчетов и внешнего вида</value> + <value>Скопировать настройки отчетов и внешнего вида</value> </toolTip> <use> <common>true</common> </use> <action xsi:type="form:FormCommandHandlerContainer"> <handler> - <name>СкопироватьНастройкиотчетовИВнешнегоВида</name> + <name>СкопироватьНастройкиОтчетовИВнешнегоВида</name> </handler> </action> <representation>Text</representation> diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Help/ru.html b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Help/ru.html index 206561252..6334780bd 100644 --- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Help/ru.html +++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Просмотр, очистка и копирование пользовательских настроек отчетов, настроек внешнего вида программы и прочих настроек:</p> <ol><ol><li>Список пользовательских настроек отчетов сгруппирован по названиям вариантов отчетов. </li><li>В списке <strong>Внешний вид</strong> выводятся настройки внешнего вида форм, рабочего стола и командного интерфейса программы. diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Module.bsl b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Module.bsl index e6907d929..71d2d5f78 100644 --- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Module.bsl +++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/НастройкиПользователей/Module.bsl @@ -381,7 +381,7 @@ КонецПроцедуры &НаКлиенте -Процедура СкопироватьНастройкиотчетовИВнешнегоВида(Команда) +Процедура СкопироватьНастройкиОтчетовИВнешнегоВида(Команда) ТипПользователя = ТипЗнч(ПользовательСсылка); КопируемыеНастройки.Очистить(); @@ -641,7 +641,7 @@ КонецФункции //////////////////////////////////////////////////////////////////////////////// -// Процедуры и функции, отвечающие за копирование, удаление и очиству настроек +// Процедуры и функции, отвечающие за копирование, удаление и очистку настроек &НаСервере Процедура СкопироватьНаСервере(ПользователиПриемник, ЛичныхНастроекОтчетов, Отчет) diff --git a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ОчисткаНастроекПользователей/Help/ru.html b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ОчисткаНастроекПользователей/Help/ru.html index e1ab8ca7e..b5bd15f9c 100644 --- a/SSL/src/DataProcessors/НастройкиПользователей/Forms/ОчисткаНастроекПользователей/Help/ru.html +++ b/SSL/src/DataProcessors/НастройкиПользователей/Forms/ОчисткаНастроекПользователей/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Очистка настроек пользователей:</p> <ol><li><strong>"Очистить настройки"</strong> - выбираются пользователи, которым необходимо очистить настройки. При отметке значения "Выбранным пользователям" становится доступен выбор пользователей. </li><li><strong>"Что очистить"</strong> - выбирается, какие настройки очищать. Если в поле "Кому очистить" выбран один пользователь, то есть возможность выбора отдельных настроек. При выборе нескольких пользователей или всех пользователей возможна очистка только всех настроек каждого пользователя.</li></ol></body></html> \ No newline at end of file diff --git a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Forms/НерекомендуемаяВерсияПлатформы/Form.form b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Forms/НерекомендуемаяВерсияПлатформы/Form.form index 49ac8df51..ff2d287a3 100644 --- a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Forms/НерекомендуемаяВерсияПлатформы/Form.form +++ b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Forms/НерекомендуемаяВерсияПлатформы/Form.form @@ -190,7 +190,7 @@ </contextMenu> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> - <height>4</height> + <height>5</height> <autoMaxHeight>true</autoMaxHeight> <horizontalStretch>true</horizontalStretch> <verticalStretch>true</verticalStretch> @@ -390,12 +390,16 @@ </items> <horizontalAlign>Right</horizontalAlign> </autoCommandBar> + <handlers> + <event>BeforeClose</event> + <name>ПередЗакрытием</name> + </handlers> <handlers> <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> <width>75</width> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoUrl>true</autoUrl> <group>Vertical</group> @@ -441,6 +445,23 @@ <common>true</common> </edit> </attributes> + <attributes> + <name>ДействиеОпределено</name> + <title> + <key>ru</key> + <value>Действие определено</value> + + 1 + + Boolean + + + true + + + true + + Продолжить diff --git a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Forms/НерекомендуемаяВерсияПлатформы/Module.bsl b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Forms/НерекомендуемаяВерсияПлатформы/Module.bsl index e5dca7bfe..9219f2e09 100644 --- a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Forms/НерекомендуемаяВерсияПлатформы/Module.bsl +++ b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Forms/НерекомендуемаяВерсияПлатформы/Module.bsl @@ -8,6 +8,22 @@ Возврат; КонецЕсли; + Если НЕ Параметры.Свойство("ОткрытаПоСценарию") Тогда + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + КонецЕсли; + + ДатаПоследнегоПоказа = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("НерекомендуемаяВерсияПлатформы", "ДатаПоследнегоОтображения",,, ИмяПользователя()); + + ПоказатьСообщение = Истина; + Если ДатаПоследнегоПоказа <> Неопределено Тогда + ПоказатьСообщение = Формат(ДатаПоследнегоПоказа, "ДЛФ=D") <> Формат(ТекущаяДатаСеанса(), "ДЛФ=D"); + КонецЕсли; + + Если Не ПоказатьСообщение И Не ПараметрыСеанса.ВыполняетсяОбновлениеИБ Тогда + Отказ = Истина; + Возврат; + КонецЕсли; + Элементы.ТекстСообщения.Заголовок = Параметры.ТекстСообщения; Элементы.РекомендуемаяВерсияПлатформы.Заголовок = Параметры.РекомендуемаяВерсияПлатформы; СистемнаяИнформация = Новый СистемнаяИнформация; @@ -18,15 +34,23 @@ Элементы.ФормаНет.Видимость = Ложь; КонецЕсли; - БазаФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая(); - Если БазаФайловая Тогда - МакетПорядокОбновления = Обработки.НерекомендуемаяВерсияПлатформы.ПолучитьМакет("ПорядокОбновленияДляФайловойБазы"); - Иначе - МакетПорядокОбновления = Обработки.НерекомендуемаяВерсияПлатформы.ПолучитьМакет("ПорядокОбновленияДляКлиентСервернойБазы"); + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Выполнить("РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс"); КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) + + Если Не ДействиеОпределено Тогда + СтандартнаяОбработка = Ложь; + ДействиеОпределено = Истина; + ПрекратитьРаботуСистемы(); + Закрыть(КодВозвратаДиалога.ОК); + КонецЕсли; + +КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -43,14 +67,34 @@ &НаКлиенте Процедура ПродолжитьРаботу(Команда) + ДействиеОпределено = Истина; + СохранитьДатуПоследнегоПоказа(); Закрыть(КодВозвратаДиалога.Отмена); + // СтандартныеПодсистемы.ОбновлениеВерсииИБ + ОбновлениеИнформационнойБазыКлиент.ОбновитьИнформационнуюБазу(); + // Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ + КонецПроцедуры &НаКлиенте Процедура ЗавершитьРаботу(Команда) + ДействиеОпределено = Истина; + ПрекратитьРаботуСистемы(); Закрыть(КодВозвратаДиалога.ОК); КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Процедура СохранитьДатуПоследнегоПоказа() + + ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( + "НерекомендуемаяВерсияПлатформы", "ДатаПоследнегоОтображения", ТекущаяДатаСеанса(),, ИмяПользователя()); + +КонецПроцедуры + + diff --git a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Templates/ПорядокОбновленияДляКлиентСервернойБазы/ru.html b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Templates/ПорядокОбновленияДляКлиентСервернойБазы/ru.html index 1af87dd24..5865a71f0 100644 --- a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Templates/ПорядокОбновленияДляКлиентСервернойБазы/ru.html +++ b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Templates/ПорядокОбновленияДляКлиентСервернойБазы/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="__STYLE__"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta><style>H1 { +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="__STYLE__"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta><style>H1 { TEXT-ALIGN: left; FONT-FAMILY: Arial, Tahoma; COLOR: #003366; FONT-SIZE: 18pt; FONT-WEIGHT: bold } .Programtext { diff --git a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Templates/ПорядокОбновленияДляФайловойБазы/ru.html b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Templates/ПорядокОбновленияДляФайловойБазы/ru.html index 3fe02d79d..e81eebf9b 100644 --- a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Templates/ПорядокОбновленияДляФайловойБазы/ru.html +++ b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/Templates/ПорядокОбновленияДляФайловойБазы/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="__STYLE__"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta><style>H1 { +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="__STYLE__"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta><style>H1 { TEXT-ALIGN: left; FONT-FAMILY: Arial, Tahoma; COLOR: #003366; FONT-SIZE: 18pt; FONT-WEIGHT: bold } .Programtext { diff --git a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/НерекомендуемаяВерсияПлатформы.mdo b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/НерекомендуемаяВерсияПлатформы.mdo index bbee3947a..bc60f1544 100644 --- a/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/НерекомендуемаяВерсияПлатформы.mdo +++ b/SSL/src/DataProcessors/НерекомендуемаяВерсияПлатформы/НерекомендуемаяВерсияПлатформы.mdo @@ -9,7 +9,6 @@ <key>ru</key> <value>Нерекомендуемая версия платформы</value> </synonym> - <useStandardCommands>true</useStandardCommands> <defaultForm>DataProcessor.НерекомендуемаяВерсияПлатформы.Form.ПорядокОбновленияПлатформы</defaultForm> <forms uuid="3e5f5167-8978-4191-b0f6-6a262b848b95"> <name>НерекомендуемаяВерсияПлатформы</name> diff --git a/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОбновленияИБ/Form.form b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОбновленияИБ/Form.form new file mode 100644 index 000000000..fbc1cf173 --- /dev/null +++ b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОбновленияИБ/Form.form @@ -0,0 +1,338 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <title> + <key>ru</key> + <value>Обновление версии программы</value> + + + РежимЗапуска + 5 + + ОбновлениеПрограммы + 6 + + ТекстСообщенияОбновляемаяКонфигурация + 1 + + <key>ru</key> + <value>Выполняется обновление %1 на версию %2.</value> + + true + true + + true + + + ТекстСообщенияОбновляемаяКонфигурацияРасширеннаяПодсказка + 14 + Label + true + true + + Left + + + + ТекстСообщенияОбновляемаяКонфигурацияКонтекстноеМеню + 2 + true + + Label + true + true + + Left + + + + ТекстПояснения + 3 + + <key>ru</key> + <value>Это может занять длительное время (от пары минут до нескольких часов в зависимости от объема данных). +Пожалуйста, подождите...</value> + + true + true + + true + + + ТекстПоясненияРасширеннаяПодсказка + 15 + Label + true + true + + Left + + + + ТекстПоясненияКонтекстноеМеню + 4 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Обновление программы</value> + + + ОбновлениеПрограммыРасширеннаяПодсказка + 13 + Label + true + true + + Left + + + Page + + Vertical + + + + НачальноеЗаполнение + 7 + + ТекстПодготовкаКЗапуску + 8 + + <key>ru</key> + <value>Выполняется подготовка к запуску программы.</value> + + true + true + + true + + + ТекстПодготовкаКЗапускуРасширеннаяПодсказка + 17 + Label + true + true + + Left + + + + ТекстПодготовкаКЗапускуКонтекстноеМеню + 9 + true + + Label + true + true + + Left + + + + ТекстПоясненияПодготовкаКЗапуску + 10 + + <key>ru</key> + <value>Пожалуйста, подождите...</value> + + true + true + + true + + + ТекстПоясненияПодготовкаКЗапускуРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + ТекстПоясненияПодготовкаКЗапускуКонтекстноеМеню + 11 + true + + Label + true + true + + Left + + + true + true + + true + + + <key>ru</key> + <value>Начальное заполнение</value> + + + НачальноеЗаполнениеРасширеннаяПодсказка + 16 + Label + true + true + + Left + + + Page + + Vertical + + + true + true + + true + + + <key>ru</key> + <value>Режим запуска</value> + + + РежимЗапускаРасширеннаяПодсказка + 12 + Label + true + true + + Left + + + Pages + + Auto + + + + ФормаКоманднаяПанель + -1 + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Close + CustomizeForm + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwner + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DataProcessorObject.ОбновлениеИнформационнойБазы + + + true + + + true + +
                true
                +
                + + ПриЗапускеКлиентскогоПриложения + + <key>ru</key> + <value>При запуске клиентского приложения</value> + + 2 + + Boolean + + + true + + + true + + + + НовыйПараметрЗапуска + + <key>ru</key> + <value>Новый параметр запуска</value> + + 3 + + String + + + + true + + + true + + + + НачальноеЗаполнениеДанных + + <key>ru</key> + <value>Начальное заполнение данных</value> + + 4 + + Boolean + + + true + + + true + + + + ПриЗапускеКлиентскогоПриложения + + Boolean + + + + + + + + diff --git a/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl new file mode 100644 index 000000000..5f31f3380 --- /dev/null +++ b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОбновленияИБ/Module.bsl @@ -0,0 +1,166 @@ +/////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Выполнить("РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс"); + КонецЕсли; + + ПриЗапускеКлиентскогоПриложения = Параметры.ПриЗапускеКлиентскогоПриложения; + + НачальноеЗаполнениеДанных = ОбновлениеИнформационнойБазы.НачальноеЗаполнениеДанных(); + Если НачальноеЗаполнениеДанных Тогда + Заголовок = НСтр("ru = 'Начальное заполнение данных'"); + Элементы.РежимЗапуска.ТекущаяСтраница = Элементы.НачальноеЗаполнение; + Иначе + Элементы.ТекстСообщенияОбновляемаяКонфигурация.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Элементы.ТекстСообщенияОбновляемаяКонфигурация.Заголовок, Метаданные.Синоним, Метаданные.Версия); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ПодключитьОбработчикОжидания("ОбновитьИнформационнуюБазуПриЗапуске", 0.1, Истина); +КонецПроцедуры + +/////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаКлиенте +Процедура ОбновитьИнформационнуюБазуПриЗапуске() + + Отказ = Ложь; + + НовыйПараметрЗапуска = СтрЗаменить(ПараметрЗапуска, "ЗапуститьОбновлениеИнформационнойБазы", ""); + НовыйПараметрЗапуска = СтрЗаменить(НовыйПараметрЗапуска, """", """"""); + НовыйПараметрЗапуска = "/C """ + НовыйПараметрЗапуска + """"; + + ОбновитьИнформационнуюБазу(Отказ, ПриЗапускеКлиентскогоПриложения); + Если Отказ Тогда + ПрекратитьРаботуСистемы(); + Возврат; + КонецЕсли; + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() + И ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + СтандартныеПодсистемыКлиент.ЗавершающиеДействияПриНачалеРаботыСистемы(); + Закрыть(); + Возврат; + КонецЕсли; + + ПрекратитьРаботуСистемы(Истина, НовыйПараметрЗапуска); + Возврат; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьИнформационнуюБазу(Отказ, ПриЗапускеКлиентскогоПриложения = Ложь) + + Если Не НачальноеЗаполнениеДанных Тогда + ТекстСостояния = НСтр("ru = 'Пожалуйста, подождите, выполняется обновление информационной базы...'"); + КонецЕсли; + + Состояние(ТекстСостояния); + ДокументОписаниеОбновлений = Неопределено; + ИнформацияОбОшибке = Неопределено; + + ВремяНачалаОбновления = ОбщегоНазначенияКлиент.ДатаСеанса(); + + Попытка + ПризнакВыполненияОбработчиков = ОбновлениеИнформационнойБазыВызовСервера.ВыполнитьОбновлениеИнформационнойБазы( + Ложь, ПриЗапускеКлиентскогоПриложения); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + КонецПопытки; + + Если ИнформацияОбОшибке = Неопределено Тогда + ВремяОкончанияОбновления = ОбщегоНазначенияКлиент.ДатаСеанса(); + + Пока ПризнакВыполненияОбработчиков = "ОшибкаУстановкиМонопольногоРежима" Цикл + // Открытие формы для отключения активных сеансов + ПриОткрытииФормыОшибкиУстановкиМонопольногоРежима(Отказ); + Если Не Отказ Тогда + Состояние(ТекстСостояния); + + Попытка + ПризнакВыполненияОбработчиков = ОбновлениеИнформационнойБазыВызовСервера.ВыполнитьОбновлениеИнформационнойБазы( + Ложь, ПриЗапускеКлиентскогоПриложения); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + Прервать; + КонецПопытки; + + ВремяОкончанияОбновления = ОбщегоНазначенияКлиент.ДатаСеанса(); + Если ПризнакВыполненияОбработчиков <> "ОшибкаУстановкиМонопольногоРежима" Тогда + ОбновлениеИнформационнойБазыВызовСервера.СнятьБлокировкуФайловойБазы(); + КонецЕсли; + + Иначе + Возврат; + КонецЕсли; + + КонецЦикла; + КонецЕсли; + + Если ИнформацияОбОшибке <> Неопределено Тогда + ВремяОкончанияОбновления = ОбщегоНазначенияКлиент.ДатаСеанса(); + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("КраткоеСообщениеОбОшибке", КраткоеПредставлениеОшибки(ИнформацияОбОшибке)); + ПараметрыФормы.Вставить("ПодробноеСообщениеОбОшибке", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке)); + ПараметрыФормы.Вставить("ВремяНачалаОбновления", ВремяНачалаОбновления); + ПараметрыФормы.Вставить("ВремяОкончанияОбновления", ВремяОкончанияОбновления); + + ЗавершитьРаботу = ОткрытьФормуМодально("Обработка.ОбновлениеИнформационнойБазы.Форма.СообщениеОНеудачномОбновлении", ПараметрыФормы); + Если ЗавершитьРаботу = Неопределено + Или ЗавершитьРаботу Тогда + Отказ = Истина; + Возврат; + Иначе + ПрекратитьРаботуСистемы(Истина, НовыйПараметрЗапуска); + Отказ = Истина; + Возврат; + КонецЕсли; + КонецЕсли; + + Если Не НачальноеЗаполнениеДанных Тогда + Состояние(НСтр("ru = 'Обновление информационной базы выполнено успешно.'")); + КонецЕсли; + + ОбновлениеИнформационнойБазыВызовСервера.ЗаписатьВремяВыполненияОбновления(ВремяНачалаОбновления, ВремяОкончанияОбновления); + + Если ТипЗнч(ПараметрыРаботыКлиентаПриОбновлении) <> Тип("Структура") Тогда + ПараметрыРаботыКлиентаПриОбновлении = Новый Структура; + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики условных вызовов в другие подсистемы + +// Вызывается при неудачной попытке установить монопольный режим в файловой базе. +// +// Параметры: +// Отказ - булево - если Истина - завершает работу программы +// +&НаКлиенте +Процедура ПриОткрытииФормыОшибкиУстановкиМонопольногоРежима(Отказ) + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.ЗавершениеРаботыПользователей") Тогда + МодульСоединенияИБКлиент = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("СоединенияИБКлиент"); + МодульСоединенияИБКлиент.ПриОткрытииФормыОшибкиУстановкиМонопольногоРежима(Отказ); + КонецЕсли; + +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form new file mode 100644 index 000000000..e67abde30 --- /dev/null +++ b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Form.form @@ -0,0 +1,1729 @@ + + + + <key>ru</key> + <value>Обработка данных для новой версии программы</value> + + + ГруппаОбновлениеЗавершено + 82 + + КартинкаИнформация + 83 + + <key>ru</key> + <value>Картинка информация</value> + + true + true + + true + + + КартинкаИнформацияРасширеннаяПодсказка + 129 + Label + true + true + + Left + + + + КартинкаИнформацияКонтекстноеМеню + 84 + true + + 7 + true + 1 + true + + + CommonPicture.Успешно + + + + + ГруппаИнформацияОбОбновлении + 85 + + ИнформацияОбновлениеЗавершено + 86 + + <key>ru</key> + <value>Версия программы успешно обновлена на версию %1 +(завершено %2 в %3, продолжительность %4)</value> + + true + true + + true + + + ИнформацияОбновлениеЗавершеноРасширеннаяПодсказка + 131 + Label + true + true + + Left + + + + ИнформацияОбновлениеЗавершеноКонтекстноеМеню + 87 + true + + Label + true + true + false + + Left + + + + ГиперссылкаОсновноеОбновление + 88 + + <key>ru</key> + <value>Техническая информация о результатах обновления</value> + + true + true + + true + + + ГиперссылкаОсновноеОбновлениеРасширеннаяПодсказка + 132 + Label + true + true + + Left + + + + ГиперссылкаОсновноеОбновлениеКонтекстноеМеню + 89 + true + + Label + true + true + + + Click + ГиперссылкаОсновноеОбновлениеНажатие + + true + Left + + + true + true + + true + + + <key>ru</key> + <value>Группа информация об обновлении</value> + + + ru + Группа информация об обновлении + + + ГруппаИнформацияОбОбновленииРасширеннаяПодсказка + 130 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа обновление завершено</value> + + + ru + Группа обновление завершено + + false + + ГруппаОбновлениеЗавершеноРасширеннаяПодсказка + 128 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + + СтатусОбновления + 1 + + ОбновлениеВФайловойБазе + 30 + + ГруппаНеобходимыеДействия + 31 + + КартинкаИнформацияФайловаяБаза + 32 + + <key>ru</key> + <value>Картинка действие выполняется</value> + + true + true + + true + + + КартинкаИнформацияФайловаяБазаРасширеннаяПодсказка + 136 + Label + true + true + + Left + + + + КартинкаИнформацияФайловаяБазаКонтекстноеМеню + 33 + true + + 7 + true + 2 + true + + + CommonPicture.Предупреждение32 + + + + + ГруппаИнформацияФайловаяБаза + 34 + + Группа2 + 71 + + ЗаголовокИнформацииФайловаяБаза + 35 + + <key>ru</key> + <value>Необходимо выполнить дополнительные процедуры обработки данных. +Работа с этими данными в программе временно ограничена.</value> + + true + true + + true + + + ЗаголовокИнформацииФайловаяБазаРасширеннаяПодсказка + 139 + Label + true + true + + Left + + + + ЗаголовокИнформацииФайловаяБазаКонтекстноеМеню + 36 + true + + Label + true + true + + Left + Center + + + + ОткрытьСписокОтложенныхОбработчиков1 + 81 + + <key>ru</key> + <value>Список процедур обработки данных</value> + + true + true + + true + + + ОткрытьСписокОтложенныхОбработчиков1РасширеннаяПодсказка + 140 + Label + true + true + + Left + + + Hyperlink + Form.Command.ОткрытьСписокОтложенныхОбработчиков + Normal + Auto + true + true + UserCmds + Auto + + + Выполнить + 70 + true + true + + true + + + ВыполнитьРасширеннаяПодсказка + 141 + Label + true + true + + Left + + + UsualButton + Form.Command.ВыполнитьОбновление + Normal + PictureAndText + true + true + UserCmds + Auto + + + ИнформацияПодсказкаФайловаяБаза + 39 + + <key>ru</key> + <value>Обработка данных может занять длительное время +(от нескольких минут до нескольких часов в зависимости от объема введенных данных). +Во время обработки может наблюдаться существенное замедление работы пользователей. +Рекомендуется выполнять обработку в период наименьшей активности пользователей.</value> + + true + true + + true + + + ИнформацияПодсказкаФайловаяБазаРасширеннаяПодсказка + 142 + Label + true + true + + Left + + + + ИнформацияПодсказкаФайловаяБазаКонтекстноеМеню + 40 + true + + Label + true + true + + Left + 3 + + + true + true + + true + + + Группа2РасширеннаяПодсказка + 138 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + Группа3 + 72 + + ИнформацияПодсказка + 11 + + <key>ru</key> + <value>Сведения о ходе обновления версии программы можно также открыть из раздела "Администрирование" - "Поддержка и обслуживание".</value> + + true + true + + true + + + ИнформацияПодсказкаРасширеннаяПодсказка + 144 + Label + true + true + + Left + + + + ИнформацияПодсказкаКонтекстноеМеню + 12 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + 2 + + + true + true + + true + + + Группа3РасширеннаяПодсказка + 143 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа информация о прогрессе</value> + + + ru + Группа информация файловая база + + + ГруппаИнформацияФайловаяБазаРасширеннаяПодсказка + 137 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + ГруппаНеобходимыеДействияРасширеннаяПодсказка + 135 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + ОбновлениеВФайловойБазеРасширеннаяПодсказка + 134 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + СтатусОбновленияДляПользователя + 120 + + КартинкаИнформацияПользователю + 121 + + <key>ru</key> + <value>Картинка действие выполняется</value> + + true + true + + true + + + КартинкаИнформацияПользователюРасширеннаяПодсказка + 146 + Label + true + true + + Left + + + + КартинкаИнформацияПользователюКонтекстноеМеню + 122 + true + + 7 + true + 2 + true + + + CommonPicture.Предупреждение32 + + + + + ГруппаСодержаниеСтраницы + 123 + + ЗаголовокИнформацииДляПользователя + 124 + + <key>ru</key> + <value>Не выполнены дополнительные процедуры обработки данных. +Работа с этими данными в программе временно ограничена, обратитесь к администратору.</value> + + true + true + + true + + + ЗаголовокИнформацииДляПользователяРасширеннаяПодсказка + 148 + Label + true + true + + Left + + + + ЗаголовокИнформацииДляПользователяКонтекстноеМеню + 125 + true + + Label + true + true + + Left + Center + + + + ОткрытьСписокОтложенныхОбработчиков2 + 126 + + <key>ru</key> + <value>Список процедур обработки данных</value> + + true + true + + true + + + ОткрытьСписокОтложенныхОбработчиков2РасширеннаяПодсказка + 149 + Label + true + true + + Left + + + Hyperlink + Form.Command.ОткрытьСписокОтложенныхОбработчиков + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ГруппаСодержаниеСтраницыРасширеннаяПодсказка + 147 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + СтатусОбновленияДляПользователяРасширеннаяПодсказка + 145 + Label + true + true + + Left + + + Page + + + + ОбновлениеВыполняется + 2 + + ГруппаХодОбновления + 5 + + КартинкаДействиеВыполняется + 3 + + <key>ru</key> + <value>Картинка действие выполняется</value> + + true + true + + true + + + КартинкаДействиеВыполняетсяРасширеннаяПодсказка + 152 + Label + true + true + + Left + + + + КартинкаДействиеВыполняетсяКонтекстноеМеню + 4 + true + + 7 + true + 3 + true + false + + + CommonPicture.ДлительнаяОперация48 + + + + + ГруппаИнформацияОПрогрессе + 6 + + ЗаголовокИнформации + 7 + + <key>ru</key> + <value>Выполняются дополнительные процедуры обработки данных на версию xx.yy.zz +Работа с этими данными временно ограничена.</value> + + true + true + + true + + + ЗаголовокИнформацииРасширеннаяПодсказка + 154 + Label + true + true + + Left + + + + ЗаголовокИнформацииКонтекстноеМеню + 8 + true + + Label + true + true + + Left + + + + ИнформацияСтатусОбновления + 9 + + <key>ru</key> + <value>Выполнено: %1 из %2</value> + + true + true + + true + + + ИнформацияСтатусОбновленияРасширеннаяПодсказка + 155 + Label + true + true + + Left + + + + ИнформацияСтатусОбновленияКонтекстноеМеню + 10 + true + + Label + true + true + + + Click + ИнформацияСтатусОбновленияНажатие + + true + Left + + + + ИнформацияПодсказкаФайловаяБаза2 + 114 + + <key>ru</key> + <value>Обработка данных может занять длительное время +(от нескольких минут до нескольких часов в зависимости от объема введенных данных). +Во время обработки может наблюдаться существенное замедление работы пользователей.</value> + + true + true + + true + + + ИнформацияПодсказкаФайловаяБаза2РасширеннаяПодсказка + 156 + Label + true + true + + Left + + + + ИнформацияПодсказкаФайловаяБаза2КонтекстноеМеню + 115 + true + + Label + true + true + + Left + 3 + + + + ГруппаПодсказкаПроПериодНаименьшейАктивностиПользователей + 117 + + ПодсказкаПроПериодНаименьшейАктивностиПользователей + 100 + + <key>ru</key> + <value>Поэтому рекомендуется выполнять обработку в период наименьшей активности пользователей.</value> + + true + true + + true + + + ПодсказкаПроПериодНаименьшейАктивностиПользователейРасширеннаяПодсказка + 158 + Label + true + true + + Left + + + + ПодсказкаПроПериодНаименьшейАктивностиПользователейКонтекстноеМеню + 101 + true + + Label + true + true + false + + Left + 2 + + + + ИзменитьРасписание + 116 + + <key>ru</key> + <value>Настроить расписание</value> + + true + true + + true + + + ИзменитьРасписаниеРасширеннаяПодсказка + 159 + Label + true + true + + Left + + + Hyperlink + Form.Command.ИзменитьРасписание + Normal + Auto + true + 2 + true + UserCmds + Auto + + true + true + + true + + + ГруппаПодсказкаПроПериодНаименьшейАктивностиПользователейРасширеннаяПодсказка + 157 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ГруппаПодсказка + 76 + + Отступ + 110 + true + true + + true + + + ОтступРасширеннаяПодсказка + 161 + Label + true + true + + Left + + + + ОтступКонтекстноеМеню + 111 + true + + Label + true + true + true + + Left + + + + ПодсказкаГдеНайтиЭтуФорму + 77 + + <key>ru</key> + <value>Ход обработки данных версии программы можно также проконтролировать из раздела "Администрирование" - "Поддержка и обслуживание".</value> + + true + true + + true + + + ПодсказкаГдеНайтиЭтуФормуРасширеннаяПодсказка + 162 + Label + true + true + + Left + + + + ПодсказкаГдеНайтиЭтуФормуКонтекстноеМеню + 78 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + 2 + + + true + true + + true + + + ГруппаПодсказкаРасширеннаяПодсказка + 160 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа информация о прогрессе</value> + + + ГруппаИнформацияОПрогрессеРасширеннаяПодсказка + 153 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа ход обновления</value> + + + ГруппаХодОбновленияРасширеннаяПодсказка + 151 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Обновление выполняется</value> + + + ОбновлениеВыполняетсяРасширеннаяПодсказка + 150 + Label + true + true + + Left + + + Page + + Vertical + + + + ОбновлениеЗавершено + 13 + + ГруппаОтложенноеОбновлениеЗавершено + 42 + + КартинкаИнформация1 + 43 + + <key>ru</key> + <value>Картинка информация</value> + + true + true + + true + + + КартинкаИнформация1РасширеннаяПодсказка + 165 + Label + true + true + + Left + + + + КартинкаИнформация1КонтекстноеМеню + 44 + true + + 7 + true + 1 + true + + + StdPicture.Stop + + + + + ГруппаИнформацияОбОбновлении1 + 45 + + ИнформацияОтложенныеОбработчикиОтсутствуют + 118 + + <key>ru</key> + <value>Отложенные обработчики на данную версию отсутствуют.</value> + + true + + true + + + ИнформацияОтложенныеОбработчикиОтсутствуютРасширеннаяПодсказка + 167 + Label + true + true + + Left + + + + ИнформацияОтложенныеОбработчикиОтсутствуютКонтекстноеМеню + 119 + true + + Label + true + true + + Left + + + + ГруппаПереходКСпискуОтложенныхОбработчиков + 56 + + ИнформацияОтложенноеОбновлениеЗавершено1 + 50 + + <key>ru</key> + <value>Дополнительные процедуры обработки данных не выполнялись</value> + + true + true + + true + + + ИнформацияОтложенноеОбновлениеЗавершено1РасширеннаяПодсказка + 169 + Label + true + true + + Left + + + + ИнформацияОтложенноеОбновлениеЗавершено1КонтекстноеМеню + 51 + true + + Label + true + true + + Left + + + + ОткрытьСписокОтложенныхОбработчиков + 57 + + <key>ru</key> + <value>Необходимо выполнить процедуры обработки данных</value> + + true + true + + true + + + ОткрытьСписокОтложенныхОбработчиковРасширеннаяПодсказка + 170 + Label + true + true + + Left + + + Hyperlink + Form.Command.ОткрытьСписокОтложенныхОбработчиков + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Группа переход к списку отложенных обработчиков</value> + + + ГруппаПереходКСпискуОтложенныхОбработчиковРасширеннаяПодсказка + 168 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + Отступ1 + 112 + true + true + + true + + + Отступ1РасширеннаяПодсказка + 171 + Label + true + true + + Left + + + + Отступ1КонтекстноеМеню + 113 + true + + Label + true + true + true + + Left + + + + ИнформацияПодсказка1 + 74 + + <key>ru</key> + <value>Сведения о результатах обновления версии программы можно также открыть из раздела "Администрирование" - "Поддержка и обслуживание".</value> + + true + true + + true + + + ИнформацияПодсказка1РасширеннаяПодсказка + 172 + Label + true + true + + Left + + + + ИнформацияПодсказка1КонтекстноеМеню + 75 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + 2 + + + true + true + + true + + + <key>ru</key> + <value>Группа информация об обновлении</value> + + + ГруппаИнформацияОбОбновлении1РасширеннаяПодсказка + 166 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + ГруппаОтложенноеОбновлениеЗавершеноРасширеннаяПодсказка + 164 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Обновление завершено</value> + + + ОбновлениеЗавершеноРасширеннаяПодсказка + 163 + Label + true + true + + Left + + + Page + + Vertical + + + true + true + + true + + + <key>ru</key> + <value>Статус обновления</value> + + + СтатусОбновленияРасширеннаяПодсказка + 133 + Label + true + true + + Left + + + Pages + + Auto + + + Bottom + true + + ФормаКоманднаяПанель + -1 + + ФормаЗакрыть + 14 + + <key>ru</key> + <value>Закрыть</value> + + true + true + + true + + + ФормаЗакрытьРасширеннаяПодсказка + 127 + Label + true + true + + Left + + + Form.Command.ЗакрытьФорму + Auto + true + true + true + UserCmds + Auto + + Right + true + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Close + CustomizeForm + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + LockOwner + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DataProcessorObject.ОбновлениеИнформационнойБазы + + + true + + + true + +
                true
                +
                + + ИБФайловая + + <key>ru</key> + <value>ИБФайловая</value> + + 2 + + Boolean + + + true + + + true + + + + ВремяНачалаОбновления + + <key>ru</key> + <value>Время начала обновления</value> + + 3 + + Date + + + + true + + + true + + + + ВремяОкончанияОбновления + + <key>ru</key> + <value>Время окончания обновления</value> + + 4 + + Date + + + + true + + + true + + + + Расписание + + <key>ru</key> + <value>Расписание</value> + + 5 + + + true + + + true + + + + ЗакрытьФорму + + <key>ru</key> + <value>Закрыть</value> + + 1 + + true + + + + ЗакрытьФорму + + + Auto + Auto + + + ВыполнитьОбновление + + <key>ru</key> + <value>Выполнить</value> + + 3 + + ru + Выполнить дополнительные процеудры обновления + + + true + + + StdPicture.GenerateReport + + + + ВыполнитьОбновление + + + Auto + Auto + + + ОткрытьСписокОтложенныхОбработчиков + + <key>ru</key> + <value>Открыть список отложенных обработчиков</value> + + 4 + + ru + Открыть список отложенных обработчиков + + + true + + + + ОткрытьСписокОтложенныхОбработчиков + + + Auto + Auto + + + ИзменитьРасписание + + <key>ru</key> + <value>Изменить расписание</value> + + 2 + + true + + + StdPicture.ScheduledJob + + + + ИзменитьРасписание + + + Auto + Auto + + + ОткрытиеИзПанелиАдминистрирования + + Boolean + + + + + + + +
                diff --git a/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl new file mode 100644 index 000000000..65f83dbd5 --- /dev/null +++ b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ИндикацияХодаОтложенногоОбновленияИБ/Module.bsl @@ -0,0 +1,380 @@ +/////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + + Элементы.ГруппаПодсказкаПроПериодНаименьшейАктивностиПользователей.Видимость = Ложь; + Элементы.ПодсказкаГдеНайтиЭтуФорму.Заголовок = + НСтр("ru = 'Ход обработки данных версии программы можно также проконтролировать из раздела + |""Информация"" на рабочем столе, команда ""Описание изменений программы"".'"); + + КонецЕсли; + + // Зачитываем значение константы + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + ВремяНачалаОбновления = СведенияОбОбновлении.ВремяНачалаОбновления; + ВремяОкончанияОбновления = СведенияОбОбновлении.ВремяОкончанияОбновления; + + ИБФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая(); + + Если ЗначениеЗаполнено(ВремяОкончанияОбновления) Тогда + Элементы.ИнформацияОбновлениеЗавершено.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + Элементы.ИнформацияОбновлениеЗавершено.Заголовок, + Метаданные.Версия, + Формат(ВремяОкончанияОбновления, "ДЛФ=D"), + Формат(ВремяОкончанияОбновления, "ДЛФ=T"), + СведенияОбОбновлении.ПродолжительностьОбновления); + Иначе + ЗаголовокОбновлениеЗавершено = НСтр("ru = 'Версия программы успешно обновлена на версию %1'"); + Элементы.ИнформацияОбновлениеЗавершено.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ЗаголовокОбновлениеЗавершено, + Метаданные.Версия); + КонецЕсли; + + Если СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления = Неопределено Тогда + + Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.СтатусОбновленияДляПользователя; + Иначе + + Если Не ИБФайловая И СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Неопределено Тогда + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеВыполняется; + Иначе + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеВФайловойБазе; + КонецЕсли; + + КонецЕсли; + + Иначе + ТекстСообщения = СообщениеОРезультатахОбновления(СведенияОбОбновлении); + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеЗавершено; + + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + ШаблонЗаголовка = НСтр("ru = 'Дополнительные процедуры обработки данных завершены %1 в %2'"); + Элементы.ИнформацияОтложенноеОбновлениеЗавершено1.Заголовок = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, + Формат(СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления, "ДЛФ=D"), + Формат(СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления, "ДЛФ=T")); + + КонецЕсли; + + Если Не ИБФайловая Тогда + ОбновлениеЗавершено = Ложь; + ОбновитьИнформациюОХодеОбновления(СведенияОбОбновлении, ОбновлениеЗавершено); + + Если ОбновлениеЗавершено Тогда + ОбновитьСтраницуОбновлениеЗавершено(СведенияОбОбновлении); + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеЗавершено; + Возврат; + КонецЕсли; + + Иначе + Элементы.ИнформацияСтатусОбновления.Видимость = Ложь; + Элементы.ИзменитьРасписание.Видимость = Ложь; + КонецЕсли; + + Если Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + Элементы.ИзменитьРасписание.Видимость = Ложь; + Иначе + Расписание = РегламентныеЗадания.НайтиПредопределенное( + Метаданные.РегламентныеЗадания.ОтложенноеОбновлениеИБ).Расписание; + КонецЕсли; + + КонецЕсли; + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + Элементы.ГиперссылкаОсновноеОбновление.Видимость = Ложь; + КонецЕсли; + + СкрытьЛишниеГруппыНаФорме(Параметры.ОткрытиеИзПанелиАдминистрирования); + + Элементы.ОткрытьСписокОтложенныхОбработчиков.Заголовок = ТекстСообщения; + Элементы.ЗаголовокИнформации.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполняются дополнительные процедуры обработки данных на версию %1 + |Работа с этими данными временно ограничена'"), Метаданные.Версия); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + Если Не ИБФайловая Тогда + ПодключитьОбработчикОжидания("ПроверитьСтатусВыполненияОбработчиков", 15); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ОтложенноеОбновление" Тогда + + Если Не ИБФайловая Тогда + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеВыполняется; + КонецЕсли; + + ПодключитьОбработчикОжидания("ЗапуститьОтложенноеОбновление", 0.5, Истина); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ИнформацияСтатусОбновленияНажатие(Элемент) + ОткрытьФорму("Обработка.ОбновлениеИнформационнойБазы.Форма.ОтложенныеОбработчики"); +КонецПроцедуры + +&НаКлиенте +Процедура ГиперссылкаОсновноеОбновлениеНажатие(Элемент) + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ДатаНачала", ВремяНачалаОбновления); + ПараметрыФормы.Вставить("ДатаОкончания", ВремяОкончанияОбновления); + + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", ПараметрыФормы); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + +&НаКлиенте +Процедура ЗакрытьФорму(Команда) + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбновление(Команда) + + Если Не ИБФайловая Тогда + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеВыполняется; + КонецЕсли; + + ПодключитьОбработчикОжидания("ЗапуститьОтложенноеОбновление", 0.5, Истина); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьСписокОтложенныхОбработчиков(Команда) + ОткрытьФорму("Обработка.ОбновлениеИнформационнойБазы.Форма.ОтложенныеОбработчики"); +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРасписание(Команда) + + Диалог = Новый ДиалогРасписанияРегламентногоЗадания(Расписание); + + Если Диалог.ОткрытьМодально() Тогда + Расписание = Диалог.Расписание; + УстановитьРасписаниеОтложенногоОбновления(Расписание); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаСервере +Процедура СкрытьЛишниеГруппыНаФорме(ОткрытиеИзПанелиАдминистрирования) + + ЭтоПолноправныйПользователь = Пользователи.ЭтоПолноправныйПользователь(, Истина); + + Если Не ЭтоПолноправныйПользователь Или ОткрытиеИзПанелиАдминистрирования Тогда + ЭтаФорма.КлючСохраненияПоложенияОкна = "ФормаДляОбычногоПользователя"; + + Элементы.Группа3.Видимость = Ложь; + Элементы.ГруппаПодсказка.Видимость = Ложь; + Элементы.ИнформацияПодсказка1.Видимость = Ложь; + Элементы.Отступ1.Видимость = Ложь; + + Если Не ЭтоПолноправныйПользователь И Не РольДоступна("ПросмотрЖурналаРегистрации")Тогда + Элементы.ГиперссылкаОсновноеОбновление.Видимость = Ложь; + КонецЕсли; + + Иначе + ЭтаФорма.КлючСохраненияПоложенияОкна = "ФормаДляАдминистратора"; + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ЗапуститьОтложенноеОбновление() + + ВыполнитьОбновлениеНаСервере(); + Если Не ИБФайловая Тогда + ПодключитьОбработчикОжидания("ПроверитьСтатусВыполненияОбработчиков", 15); + Возврат; + КонецЕсли; + + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеЗавершено; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьСтатусВыполненияОбработчиков() + + ОбновлениеЗавершено = Ложь; + ПроверитьСтатусВыполненияОбработчиковНаСервере(ОбновлениеЗавершено); + Если ОбновлениеЗавершено Тогда + Элементы.СтатусОбновления.ТекущаяСтраница = Элементы.ОбновлениеЗавершено; + ОтключитьОбработчикОжидания("ПроверитьСтатусВыполненияОбработчиков") + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьСтатусВыполненияОбработчиковНаСервере(ОбновлениеЗавершено) + + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + Если СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления <> Неопределено Тогда + ОбновлениеЗавершено = Истина; + Иначе + ОбновитьИнформациюОХодеОбновления(СведенияОбОбновлении, ОбновлениеЗавершено); + КонецЕсли; + + Если ОбновлениеЗавершено = Истина Тогда + ОбновитьСтраницуОбновлениеЗавершено(СведенияОбОбновлении); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ВыполнитьОбновлениеНаСервере() + + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + + СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Неопределено; + СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления = Неопределено; + Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл + Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл + Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл + Обработчик.ЧислоПопыток = 0; + КонецЦикла; + КонецЦикла; + КонецЦикла; + ОбновлениеИнформационнойБазы.ЗаписатьСведенияОбОбновленииИнформационнойБазы(СведенияОбОбновлении); + + Если Не ИБФайловая Тогда + + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + ОбновлениеИнформационнойБазы.ПриВключенииОтложенногоОбновления(Истина); + Иначе + РегламентноеЗадание = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ОтложенноеОбновлениеИБ); + РегламентноеЗадание.Использование = Истина; + РегламентноеЗадание.Записать(); + КонецЕсли; + Возврат; + + КонецЕсли; + + ОбновлениеИнформационнойБазы.ВыполнитьОтложенноеОбновлениеСейчас(); + + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + ОбновитьСтраницуОбновлениеЗавершено(СведенияОбОбновлении); + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСтраницуОбновлениеЗавершено(СведенияОбОбновлении) + + ШаблонЗаголовка = НСтр("ru = 'Дополнительные процедуры обработки данных завершены %1 в %2'"); + ТекстСообщения = СообщениеОРезультатахОбновления(СведенияОбОбновлении); + + Элементы.ИнформацияОтложенноеОбновлениеЗавершено1.Заголовок = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗаголовка, + Формат(СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления, "ДЛФ=D"), + Формат(СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления, "ДЛФ=T")); + + Элементы.ОткрытьСписокОтложенныхОбработчиков.Заголовок = ТекстСообщения; + +КонецПроцедуры + +&НаСервере +Функция СообщениеОРезультатахОбновления(СведенияОбОбновлении) + + СписокОбработчиков = СведенияОбОбновлении.ДеревоОбработчиков; + УспешноВыполненоОбработчиков = 0; + ВсегоОбработчиков = 0; + Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл + Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл + ВсегоОбработчиков = ВсегоОбработчиков + СтрокаДереваВерсия.Строки.Количество(); + Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл + + Если Обработчик.Статус = "Выполнено" Тогда + УспешноВыполненоОбработчиков = УспешноВыполненоОбработчиков + 1; + КонецЕсли; + + КонецЦикла; + КонецЦикла; + КонецЦикла; + + Если ВсегоОбработчиков = УспешноВыполненоОбработчиков Тогда + + Если ВсегоОбработчиков = 0 Тогда + Элементы.ИнформацияОтложенныеОбработчикиОтсутствуют.Видимость = Истина; + Элементы.ГруппаПереходКСпискуОтложенныхОбработчиков.Видимость = Ложь; + Иначе + ТекстСообщения = НСтр("ru = 'Все процедуры обновления выполнены успешно (%1)'"); + КонецЕсли; + Элементы.КартинкаИнформация1.Картинка = БиблиотекаКартинок.Успешно; + Иначе + ТекстСообщения = НСтр("ru = 'Не все процедуры удалось выполнить (выполнено %1 из %2)'"); + Элементы.КартинкаИнформация1.Картинка = БиблиотекаКартинок.Остановить; + КонецЕсли; + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + ТекстСообщения, УспешноВыполненоОбработчиков, ВсегоОбработчиков); + +КонецФункции + +&НаСервере +Процедура ОбновитьИнформациюОХодеОбновления(СведенияОбОбновлении, ОбновлениеЗавершено = Ложь) + + ВыполненоОбработчиков = 0; + ВсегоОбработчиков = 0; + Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл + Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл + ВсегоОбработчиков = ВсегоОбработчиков + СтрокаДереваВерсия.Строки.Количество(); + Для Каждого Обработчик Из СтрокаДереваВерсия.Строки Цикл + + Если Обработчик.Статус = "Выполнено" Тогда + ВыполненоОбработчиков = ВыполненоОбработчиков + 1; + КонецЕсли; + + КонецЦикла; + КонецЦикла; + КонецЦикла; + + Если ВсегоОбработчиков = 0 Тогда + ОбновлениеЗавершено = Истина; + КонецЕсли; + + Элементы.ИнформацияСтатусОбновления.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Выполнено: %1 из %2'"), + ВыполненоОбработчиков, + ВсегоОбработчиков); + +КонецПроцедуры + +&НаСервере +Процедура УстановитьРасписаниеОтложенногоОбновления(Расписание) + + РегламентноеЗадание = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ОтложенноеОбновлениеИБ); + РегламентноеЗадание.Расписание = Расписание; + РегламентноеЗадание.Записать(); + +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ОтложенныеОбработчики/Form.form b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ОтложенныеОбработчики/Form.form new file mode 100644 index 000000000..af0f3d664 --- /dev/null +++ b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ОтложенныеОбработчики/Form.form @@ -0,0 +1,837 @@ + + + + <key>ru</key> + <value>Дополнительные процедуры обработки данных</value> + + + ОтложенныеОбработчики + 1 + true + true + + true + + + ОтложенныеОбработчики + + None + + ОтложенныеОбработчикиОбработчик + 4 + true + true + + true + + + ОтложенныеОбработчики.Обработчик + + + ОтложенныеОбработчикиОбработчикРасширеннаяПодсказка + 33 + Label + true + true + + Left + + + + ОтложенныеОбработчикиОбработчикКонтекстноеМеню + 5 + true + + InputField + Auto + true + Left + true + + 40 + true + true + true + true + true + true + Normal + + + + ГруппаСтатусКартинка + 19 + + ОтложенныеОбработчикиСтатусКартинка + 17 + true + true + + true + + + ОтложенныеОбработчики.СтатусКартинка + + None + + ОтложенныеОбработчикиСтатусКартинкаРасширеннаяПодсказка + 36 + Label + true + true + + Left + + + + ОтложенныеОбработчикиСтатусКартинкаКонтекстноеМеню + 18 + true + + PictureField + Auto + true + Left + true + + true + true + true + true + + + 1 + + + + + ОтложенныеОбработчикиСтатусОбработчика + 6 + true + true + + true + + + ОтложенныеОбработчики.СтатусОбработчика + + + ОтложенныеОбработчикиСтатусОбработчикаРасширеннаяПодсказка + 38 + Label + true + true + + Left + + + + ОтложенныеОбработчикиСтатусОбработчикаКонтекстноеМеню + 7 + true + + InputField + Auto + true + Left + true + + 15 + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Группа статус картинка</value> + + + ГруппаСтатусКартинкаРасширеннаяПодсказка + 35 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + ОтложенныеОбработчикиКоманднаяПанель + 3 + Left + + + ОтложенныеОбработчикиСтрокаПоиска + 24 + + ОтложенныеОбработчикиСтрокаПоискаРасширеннаяПодсказка + 26 + Label + true + true + + Left + + + + ОтложенныеОбработчикиСтрокаПоискаКонтекстноеМеню + 25 + true + + ОтложенныеОбработчики + + true + + + + ОтложенныеОбработчикиСостояниеПросмотра + 27 + + ОтложенныеОбработчикиСостояниеПросмотраРасширеннаяПодсказка + 29 + Label + true + true + + Left + + + + ОтложенныеОбработчикиСостояниеПросмотраКонтекстноеМеню + 28 + true + + ViewStatusAddition + ОтложенныеОбработчики + + true + + + + ОтложенныеОбработчикиУправлениеПоиском + 30 + + ОтложенныеОбработчикиУправлениеПоискомРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + + ОтложенныеОбработчикиУправлениеПоискомКонтекстноеМеню + 31 + true + + SearchControlAddition + ОтложенныеОбработчики + + true + + + + ОтложенныеОбработчикиРасширеннаяПодсказка + 23 + Label + true + true + + Left + + + + ОтложенныеОбработчикиКонтекстноеМеню + 2 + true + + true + true + true + true + true + true + MultiRow +
                true
                + 1 + 1 + AutoUse + AutoUse + true + true + false + true + Auto + Auto + true + true + true + true + None + None + None + true + +
                + + ОтложенныеОбработчикиИнформацияОПроцедуреОбновления + 15 + true + true + + true + + + Items.ОтложенныеОбработчики.CurrentData.ИнформацияОПроцедуреОбновления + + None + + ОтложенныеОбработчикиИнформацияОПроцедуреОбновленияРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + + ОтложенныеОбработчикиИнформацияОПроцедуреОбновленияКонтекстноеМеню + 16 + true + + InputField + true + Enter + true + Left + true + + true + 4 + true + false + true + true + true + true + true + Normal + + + + ГиперссылкаОтложенноеОбновление + 13 + + <key>ru</key> + <value>Техническая информация о результатах обработки данных</value> + + true + true + + true + + + ГиперссылкаОтложенноеОбновлениеРасширеннаяПодсказка + 50 + Label + true + true + + Left + + + + ГиперссылкаОтложенноеОбновлениеКонтекстноеМеню + 14 + true + + Label + true + true + true + + + Click + ГиперссылкаОтложенноеОбновлениеНажатие + + true + Left + + + + ОбновлениеВыполняется + 20 + + <key>ru</key> + <value>В данный момент выполняются дополнительные процедуры обновления</value> + + true + + true + + + ОбновлениеВыполняетсяРасширеннаяПодсказка + 51 + Label + true + true + + Left + + + + ОбновлениеВыполняетсяКонтекстноеМеню + 21 + true + + Label + true + 2 + true + true + + Style.ПоясняющийТекст + + + Left + Bottom + + + + ГруппаПовторныйЗапуск + 10 + + ТекстПояснения + 11 + + <key>ru</key> + <value>Невыполненные процедуры рекомендуется запустить повторно.</value> + + true + true + + true + + + ТекстПоясненияРасширеннаяПодсказка + 53 + Label + true + true + + Left + + + + ТекстПоясненияКонтекстноеМеню + 12 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + + ЗапуститьПовторно + 9 + true + true + + true + + + ЗапуститьПовторноРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + UsualButton + Form.Command.ЗапуститьПовторно + Normal + PictureAndText + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Группа повторный запуск</value> + + + ГруппаПовторныйЗапускРасширеннаяПодсказка + 52 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + NormalSeparation + true + true + Auto + Auto + + + Bottom + true + + ФормаКоманднаяПанель + -1 + + ФормаЗакрытьФорму + 8 + true + true + + true + + + ФормаЗакрытьФормуРасширеннаяПодсказка + 22 + Label + true + true + + Left + + + Form.Command.ЗакрытьФорму + Auto + true + true + true + UserCmds + Auto + + Right + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + Abort + Cancel + Close + CustomizeForm + Help + Ignore + No + OK + RestoreValues + Retry + SaveValues + Yes + 85 + LockOwner + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DataProcessorObject.ОбновлениеИнформационнойБазы + + + true + + + true + +
                true
                +
                + + ОтложенныеОбработчики + + <key>ru</key> + <value>Отложенные обработчики</value> + + 2 + + 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 + + + + СтатусКартинка + 4 + + Picture + + + true + + + true + + + + Вес + + <key>ru</key> + <value>Вес</value> + + 5 + + Number + + 10 + + + + true + + + true + + + + + ВремяНачалаОтложенногоОбновления + + <key>ru</key> + <value>Время начала отложенного обновления</value> + + 3 + + Date + + + + true + + + true + + + + ВремяОкончанияОтложенногоОбновления + + <key>ru</key> + <value>Время окончания отложенного обновления</value> + + 4 + + Date + + + + true + + + true + + + + НомерТекущегоСеанса + + <key>ru</key> + <value>Номер текущего сеанса</value> + + 5 + + ValueList + + + true + + + true + + + + + + + ОбновлениеВыполняется + + <key>ru</key> + <value>Обновление выполняется</value> + + 6 + + Boolean + + + true + + + true + + + + ИБФайловая + + <key>ru</key> + <value>ИБФайловая</value> + + 7 + + Boolean + + + true + + + true + + + + ЗакрытьФорму + + <key>ru</key> + <value>Закрыть</value> + + 1 + + true + + + + ЗакрытьФорму + + + Auto + Auto + + + ЗапуститьПовторно + + <key>ru</key> + <value>Запустить</value> + + 2 + + ru + Запустить повторно + + + true + + + StdPicture.GenerateReport + + + + ЗапуститьПовторно + + + Auto + Auto + + + + + + +
                diff --git a/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ОтложенныеОбработчики/Module.bsl b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ОтложенныеОбработчики/Module.bsl new file mode 100644 index 000000000..35a52f0e2 --- /dev/null +++ b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/ОтложенныеОбработчики/Module.bsl @@ -0,0 +1,137 @@ +/////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + ВремяНачалаОтложенногоОбновления = СведенияОбОбновлении.ВремяНачалаОтложенногоОбновления; + ВремяОкончанияОтложенногоОбновления = СведенияОбОбновлении.ВремяОкончаниеОтложенногоОбновления; + НомерТекущегоСеанса = СведенияОбОбновлении.НомерСеанса; + ИБФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая(); + + Если Не Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда + Элементы.ГруппаПовторныйЗапуск.Видимость = Ложь; + КонецЕсли; + + Если Не ИБФайловая Тогда + ОбновлениеВыполняется = (СведенияОбОбновлении.ОтложенноеОбновлениеЗавершеноУспешно = Неопределено); + КонецЕсли; + + Если Не РольДоступна("ПросмотрЖурналаРегистрации") Тогда + Элементы.ГиперссылкаОтложенноеОбновление.Видимость = Ложь; + КонецЕсли; + + ОбновитьТаблицуОтложенныхОбработчиков(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ОбновлениеВыполняется Тогда + ПодключитьОбработчикОжидания("ОбновитьТаблицуОбработчиков", 15); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + +&НаКлиенте +Процедура ЗакрытьФорму(Команда) + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура ЗапуститьПовторно(Команда) + Оповестить("ОтложенноеОбновление"); + Закрыть(); +КонецПроцедуры + +&НаКлиенте +Процедура ГиперссылкаОтложенноеОбновлениеНажатие(Элемент) + + Если ЗначениеЗаполнено(ВремяНачалаОтложенногоОбновления) И ЗначениеЗаполнено(ВремяОкончанияОтложенногоОбновления) Тогда + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ДатаНачала", ВремяНачалаОтложенногоОбновления); + ПараметрыФормы.Вставить("ДатаОкончания", ВремяОкончанияОтложенногоОбновления); + ПараметрыФормы.Вставить("Сеанс", НомерТекущегоСеанса); + + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", ПараметрыФормы); + Иначе + + Если ЗначениеЗаполнено(ВремяНачалаОтложенногоОбновления) Тогда + ТекстПредупреждения = НСтр("ru = 'Обработка данных еще не завершилась.'"); + Иначе + ТекстПредупреждения = НСтр("ru = 'Обработка данных еще не выполнялась.'"); + КонецЕсли; + + Предупреждение(ТекстПредупреждения); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаКлиенте +Процедура ОбновитьТаблицуОбработчиков() + + ВыполненыВсеОбработчики = Истина; + ОбновитьТаблицуОтложенныхОбработчиков(ВыполненыВсеОбработчики); + Если ВыполненыВсеОбработчики Тогда + ОтключитьОбработчикОжидания("ОбновитьТаблицуОбработчиков"); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ОбновитьТаблицуОтложенныхОбработчиков(ВыполненыВсеОбработчики = Истина) + + ОтложенныеОбработчики.Очистить(); + СведенияОбОбновлении = ОбновлениеИнформационнойБазы.СведенияОбОбновленииИнформационнойБазы(); + + Для Каждого СтрокаДереваБиблиотека Из СведенияОбОбновлении.ДеревоОбработчиков.Строки Цикл + Для Каждого СтрокаДереваВерсия Из СтрокаДереваБиблиотека.Строки Цикл + Для Каждого СтрокаОбработчика Из СтрокаДереваВерсия.Строки Цикл + + СтрокаСписка = ОтложенныеОбработчики.Добавить(); + СтрокаСписка.Обработчик = СтрокаОбработчика.ИмяОбработчика; + Если СтрокаОбработчика.Статус = "Выполнено" Тогда + СтрокаСписка.ИнформацияОПроцедуреОбновления = + НСтр("ru = 'Процедура обработки данных завершилась успешно.'") + Символы.ПС + Символы.ПС + СтрокаОбработчика.Комментарий; + СтрокаСписка.СтатусОбработчика = НСтр("ru = 'Выполнена'"); + СтрокаСписка.Вес = 1; + СтрокаСписка.СтатусКартинка = БиблиотекаКартинок.Успешно; + ИначеЕсли СтрокаОбработчика.Статус = "Ошибка" Тогда + ВыполненыВсеОбработчики = Ложь; + СтрокаСписка.ИнформацияОПроцедуреОбновления = СтрокаОбработчика.ИнформацияОбОшибке + Символы.ПС + Символы.ПС + СтрокаОбработчика.Комментарий; + СтрокаСписка.СтатусОбработчика = НСтр("ru = 'Ошибка'"); + СтрокаСписка.Вес = 3; + СтрокаСписка.СтатусКартинка = БиблиотекаКартинок.Остановить; + Иначе + ВыполненыВсеОбработчики = Ложь; + СтрокаСписка.СтатусОбработчика = НСтр("ru = 'Не выполнялась'"); + СтрокаСписка.Вес = 2; + СтрокаСписка.ИнформацияОПроцедуреОбновления = НСтр("ru = 'Процедура обработки данных еще не выполнялась.'") + + Символы.ПС + Символы.ПС + СтрокаОбработчика.Комментарий; + КонецЕсли; + + КонецЦикла; + КонецЦикла; + КонецЦикла; + + Если ВыполненыВсеОбработчики Или ОбновлениеВыполняется Тогда + Элементы.ГруппаПовторныйЗапуск.Видимость = Ложь; + КонецЕсли; + + ОтложенныеОбработчики.Сортировать("Вес Убыв"); + + Элементы.ОбновлениеВыполняется.Видимость = ОбновлениеВыполняется; + +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/CommonForms/СообщениеОНеудачномОбновлении/Form.form b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/СообщениеОНеудачномОбновлении/Form.form similarity index 98% rename from SSL/src/CommonForms/СообщениеОНеудачномОбновлении/Form.form rename to SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/СообщениеОНеудачномОбновлении/Form.form index 5f0886dbb..5518b2c74 100644 --- a/SSL/src/CommonForms/СообщениеОНеудачномОбновлении/Form.form +++ b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/СообщениеОНеудачномОбновлении/Form.form @@ -366,7 +366,7 @@ Auto
                - ТекстСообщенияОбОшибке + КраткоеСообщениеОбОшибке String @@ -386,6 +386,13 @@ + + ПодробноеСообщениеОбОшибке + + String + + + diff --git a/SSL/src/CommonForms/СообщениеОНеудачномОбновлении/Module.bsl b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/СообщениеОНеудачномОбновлении/Module.bsl similarity index 71% rename from SSL/src/CommonForms/СообщениеОНеудачномОбновлении/Module.bsl rename to SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/СообщениеОНеудачномОбновлении/Module.bsl index 8a3f75931..fa084cb52 100644 --- a/SSL/src/CommonForms/СообщениеОНеудачномОбновлении/Module.bsl +++ b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/Forms/СообщениеОНеудачномОбновлении/Module.bsl @@ -8,14 +8,22 @@ Возврат; КонецЕсли; - Элементы.ТекстСообщенияОбОшибке.Заголовок = Параметры.ТекстСообщенияОбОшибке; + ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка, + , , Параметры.ПодробноеСообщениеОбОшибке); + + ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'При обновлении версии программы возникла ошибка: + | + |%1'"), + Параметры.КраткоеСообщениеОбОшибке); + + Элементы.ТекстСообщенияОбОшибке.Заголовок = ТекстСообщенияОбОшибке; ВремяНачалаОбновления = Параметры.ВремяНачалаОбновления; ВремяОкончанияОбновления = Параметры.ВремяОкончанияОбновления; КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -41,5 +49,4 @@ &НаКлиенте Процедура ПерезагрузитьПрограмму(Команда) Закрыть(Ложь); -КонецПроцедуры - +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo new file mode 100644 index 000000000..162356908 --- /dev/null +++ b/SSL/src/DataProcessors/ОбновлениеИнформационнойБазы/ОбновлениеИнформационнойБазы.mdo @@ -0,0 +1,49 @@ + + + + + + + ОбновлениеИнформационнойБазы + + ru + Обновление информационной базы + + DataProcessor.ОбновлениеИнформационнойБазы.Form.ИндикацияХодаОтложенногоОбновленияИБ + + ИндикацияХодаОтложенногоОбновленияИБ + + ru + Индикация хода отложенного обновления ИБ + + PersonalComputer + MobileDevice + + + ОтложенныеОбработчики + + ru + Отложенные обработчики + + PersonalComputer + MobileDevice + + + ИндикацияХодаОбновленияИБ + + ru + Индикация хода обновления ИБ + + PersonalComputer + MobileDevice + + + СообщениеОНеудачномОбновлении + + ru + Сообщение о неудачном обновлении + + PersonalComputer + MobileDevice + + diff --git a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРасписания/Form.form b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРасписания/Form.form index 06eef3c48..d18c5624d 100644 --- a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРасписания/Form.form +++ b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРасписания/Form.form @@ -222,7 +222,7 @@ SaveValues Yes 60 - DontBlock + LockOwner true true Vertical diff --git a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРасписания/Module.bsl b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРасписания/Module.bsl index 01804f7c1..c7f17d677 100644 --- a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРасписания/Module.bsl +++ b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРасписания/Module.bsl @@ -61,9 +61,13 @@ ОбновлениеКонфигурацииКлиент.ПодключитьОтключитьПроверкуПоРасписанию(Объект.ПроверятьНаличиеОбновленияПриЗапуске = 1 И Объект.РасписаниеПроверкиНаличияОбновления <> Неопределено); КонецЕсли; - Закрыть(Новый Структура("ПроверятьНаличиеОбновленияПриЗапуске, РасписаниеПроверкиНаличияОбновления", - Объект.ПроверятьНаличиеОбновленияПриЗапуске, Объект.РасписаниеПроверкиНаличияОбновления)); - + + РезультатВыбора = Новый Структура; + РезультатВыбора.Вставить("ПроверятьНаличиеОбновленияПриЗапуске", Объект.ПроверятьНаличиеОбновленияПриЗапуске); + РезультатВыбора.Вставить("РасписаниеПроверкиНаличияОбновления", Объект.РасписаниеПроверкиНаличияОбновления); + + ОповеститьОВыборе(РезультатВыбора); + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -95,7 +99,7 @@ Функция ЗаписатьНастройки(НастройкиОбновленияКонфигурации) ОбновлениеКонфигурацииВызовСервера.ЗаписатьСтруктуруНастроекПомощника(НастройкиОбновленияКонфигурации); - ОбновитьПовторноИспользуемыеЗначения(); // сбрысываем кеш для применения настроек + ОбновитьПовторноИспользуемыеЗначения(); // сбрасываем кеш для применения настроек КонецФункции diff --git a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРезервнойКопии/Form.form b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРезервнойКопии/Form.form index 44d206da5..8874d570c 100644 --- a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРезервнойКопии/Form.form +++ b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРезервнойКопии/Form.form @@ -702,7 +702,7 @@ Retry SaveValues Yes - DontBlock + LockOwner Use true true diff --git a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРезервнойКопии/Module.bsl b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРезервнойКопии/Module.bsl index 49313550e..4a4c750dd 100644 --- a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРезервнойКопии/Module.bsl +++ b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/НастройкаРезервнойКопии/Module.bsl @@ -55,8 +55,11 @@ КонецЕсли; КонецЕсли; Если Не Отказ Тогда - Закрыть(Новый Структура("СоздаватьРезервнуюКопию, ИмяКаталогаРезервнойКопииИБ, ВосстанавливатьИнформационнуюБазу", - Объект.СоздаватьРезервнуюКопию, Объект.ИмяКаталогаРезервнойКопииИБ, Объект.ВосстанавливатьИнформационнуюБазу)); + РезультатВыбора = Новый Структура; + РезультатВыбора.Вставить("СоздаватьРезервнуюКопию", Объект.СоздаватьРезервнуюКопию); + РезультатВыбора.Вставить("ИмяКаталогаРезервнойКопииИБ", Объект.ИмяКаталогаРезервнойКопииИБ); + РезультатВыбора.Вставить("ВосстанавливатьИнформационнуюБазу", Объект.ВосстанавливатьИнформационнуюБазу); + ОповеститьОВыборе(РезультатВыбора); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/ПредупреждениеWMI/Form.form b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/ПредупреждениеWMI/Form.form index 21909c39b..bfa63f082 100644 --- a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/ПредупреждениеWMI/Form.form +++ b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/ПредупреждениеWMI/Form.form @@ -249,7 +249,7 @@ Retry SaveValues Yes - DontBlock + LockOwner true true true diff --git a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/Форма/Form.form b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/Форма/Form.form index b29101b42..d19b8bb8c 100644 --- a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/Форма/Form.form @@ -24,7 +24,7 @@ НадписьШапкаДоброПожаловатьРасширеннаяПодсказка - 646 + 648 Label true true @@ -69,7 +69,7 @@ Декорация3РасширеннаяПодсказка - 647 + 649 Label true true @@ -113,7 +113,7 @@ ДекорацияЧерезИнтернетРасширеннаяПодсказка - 651 + 653 Label true true @@ -153,7 +153,7 @@ ЕстьКартинкаРасширеннаяПодсказка - 650 + 652 Label true true @@ -179,7 +179,7 @@ ДекорацияПустаяКартинкаРасширеннаяПодсказка - 653 + 655 Label true true @@ -216,7 +216,7 @@ НетКартинкиРасширеннаяПодсказка - 652 + 654 Label true true @@ -236,7 +236,7 @@ СтраницыКартинкиИнтернетРасширеннаяПодсказка - 649 + 651 Label true true @@ -266,7 +266,7 @@ НадписьПользовательскийСайтРасширеннаяПодсказка - 655 + 657 Label true true @@ -306,7 +306,7 @@ Right ПропускатьПриветствиеРасширеннаяПодсказка - 656 + 658 Label true true @@ -336,7 +336,7 @@ false Группа8РасширеннаяПодсказка - 654 + 656 Label true true @@ -361,7 +361,7 @@ ГруппаИнтеренетРасширеннаяПодсказка - 648 + 650 Label true true @@ -398,7 +398,7 @@ ДекорацияЧерезИТСРасширеннаяПодсказка - 661 + 663 Label true true @@ -438,7 +438,7 @@ ЕстьКартинка1РасширеннаяПодсказка - 660 + 662 Label true true @@ -464,7 +464,7 @@ ДекорацияПустаяКартинка1РасширеннаяПодсказка - 663 + 665 Label true true @@ -501,7 +501,7 @@ НетКартинки1РасширеннаяПодсказка - 662 + 664 Label true true @@ -521,7 +521,7 @@ СтраницыКартинкиИТСРасширеннаяПодсказка - 659 + 661 Label true true @@ -551,7 +551,7 @@ НадписьИТСРасширеннаяПодсказка - 665 + 667 Label true true @@ -587,7 +587,7 @@ Декорация2РасширеннаяПодсказка - 666 + 668 Label true true @@ -619,7 +619,7 @@ false Группа19РасширеннаяПодсказка - 664 + 666 Label true true @@ -644,7 +644,7 @@ ГруппаИТСРасширеннаяПодсказка - 658 + 660 Label true true @@ -682,7 +682,7 @@ ДекорацияИзФайлаРасширеннаяПодсказка - 670 + 672 Label true true @@ -722,7 +722,7 @@ ЕстьКартинка2РасширеннаяПодсказка - 669 + 671 Label true true @@ -748,7 +748,7 @@ ДекорацияПустаяКартинка2РасширеннаяПодсказка - 672 + 674 Label true true @@ -785,7 +785,7 @@ НетКартинки2РасширеннаяПодсказка - 671 + 673 Label true true @@ -805,7 +805,7 @@ СтраницыКартинкиФайлРасширеннаяПодсказка - 668 + 670 Label true true @@ -835,7 +835,7 @@ НадписьЛокальныйКаталогРасширеннаяПодсказка - 674 + 676 Label true true @@ -871,7 +871,7 @@ Декорация18РасширеннаяПодсказка - 675 + 677 Label true true @@ -903,7 +903,7 @@ false Группа22РасширеннаяПодсказка - 673 + 675 Label true true @@ -928,7 +928,7 @@ ГруппаФайлРасширеннаяПодсказка - 667 + 669 Label true true @@ -957,7 +957,7 @@ ОтступТриРасширеннаяПодсказка - 676 + 678 Label true true @@ -996,7 +996,7 @@ НадписьПроверкиНаличияОбновленияРасширеннаяПодсказка - 678 + 680 Label true true @@ -1031,7 +1031,7 @@ ГиперссылкаПроверятьНаличиеОбновленияПриЗапускеРасширеннаяПодсказка - 679 + 681 Label true true @@ -1065,7 +1065,7 @@ ГруппаПроверкиНаличияОбновленияРасширеннаяПодсказка - 677 + 679 Label true true @@ -1097,7 +1097,7 @@ НадписьСообщениеДалееРасширеннаяПодсказка - 680 + 682 Label true true @@ -1129,7 +1129,7 @@ ДоброПожаловатьРасширеннаяПодсказка - 645 + 647 Label true true @@ -1160,7 +1160,7 @@ НадписьШапкаПодключениеКИнтернетРасширеннаяПодсказка - 682 + 684 Label true true @@ -1204,7 +1204,7 @@ ДекорацияКартинкаРасширеннаяПодсказка - 684 + 686 Label true true @@ -1251,7 +1251,7 @@ Декорация6РасширеннаяПодсказка - 686 + 688 Label true true @@ -1290,7 +1290,7 @@ Декорация7РасширеннаяПодсказка - 688 + 690 Label true true @@ -1326,7 +1326,7 @@ НадписьПерейтиВЖурналРегистрацииРасширеннаяПодсказка - 689 + 691 Label true true @@ -1360,7 +1360,7 @@ Группа4РасширеннаяПодсказка - 687 + 689 Label true true @@ -1385,7 +1385,7 @@ false ВертикальнаяГруппаНадписиЖР2РасширеннаяПодсказка - 685 + 687 Label true true @@ -1410,7 +1410,7 @@ Группа3РасширеннаяПодсказка - 683 + 685 Label true true @@ -1440,7 +1440,7 @@ НастроитьПараметрыПроксиСервераРасширеннаяПодсказка - 691 + 693 Label true true @@ -1464,7 +1464,7 @@ ГруппаНастроитьПараметрыПроксиСервераРасширеннаяПодсказка - 690 + 692 Label true true @@ -1493,7 +1493,7 @@ ОтступДевятьРасширеннаяПодсказка - 692 + 694 Label true true @@ -1529,7 +1529,7 @@ НадписьДалееРасширеннаяПодсказка - 693 + 695 Label true true @@ -1561,7 +1561,7 @@ ПодключениеКИнтернетРасширеннаяПодсказка - 681 + 683 Label true true @@ -1592,7 +1592,7 @@ Декорация9РасширеннаяПодсказка - 695 + 697 Label true true @@ -1638,7 +1638,7 @@ Декорация10РасширеннаяПодсказка - 696 + 698 Label true true @@ -1682,7 +1682,7 @@ КодПользователяСервераОбновленийРасширеннаяПодсказка - 699 + 701 Label true true @@ -1728,7 +1728,7 @@ ПарольСервераОбновленийРасширеннаяПодсказка - 701 + 703 Label true true @@ -1765,7 +1765,7 @@ Группа2РасширеннаяПодсказка - 698 + 700 Label true true @@ -1800,7 +1800,7 @@ НадписьИнформацияОПолученииДоступаРасширеннаяПодсказка - 704 + 706 Label true true @@ -1845,7 +1845,7 @@ Right ЗапомнитьПарольСервераОбновленийРасширеннаяПодсказка - 705 + 707 Label true true @@ -1872,7 +1872,7 @@ Группа5РасширеннаяПодсказка - 703 + 705 Label true true @@ -1901,7 +1901,7 @@ ГруппаДоступНаПользовательскийСайтРасширеннаяПодсказка - 697 + 699 Label true true @@ -1930,7 +1930,7 @@ НадписьТехническаяИнформацияОбОшибкеРасширеннаяПодсказка - 707 + 709 Label true true @@ -1964,7 +1964,7 @@ ДекорацияКартинка1РасширеннаяПодсказка - 709 + 711 Label true true @@ -2011,7 +2011,7 @@ Декорация11РасширеннаяПодсказка - 712 + 714 Label true true @@ -2046,7 +2046,7 @@ НадписьКакОформитьПодпискуИТСРасширеннаяПодсказка - 713 + 715 Label true true @@ -2083,7 +2083,7 @@ ПРОФРасширеннаяПодсказка - 711 + 713 Label true true @@ -2115,7 +2115,7 @@ Декорация15РасширеннаяПодсказка - 715 + 717 Label true true @@ -2152,7 +2152,7 @@ Декорация16РасширеннаяПодсказка - 716 + 718 Label true true @@ -2188,7 +2188,7 @@ НадписьПодробнееОбИТСРасширеннаяПодсказка - 717 + 719 Label true true @@ -2227,7 +2227,7 @@ БазоваяРасширеннаяПодсказка - 714 + 716 Label true true @@ -2252,7 +2252,7 @@ ГруппаДоступаНаСайтРасширеннаяПодсказка - 710 + 712 Label true true @@ -2276,7 +2276,7 @@ ПанельОшибкаПодключенияРасширеннаяПодсказка - 708 + 710 Label true true @@ -2310,7 +2310,7 @@ None ТехническаяИнформацияОбОшибкеРасширеннаяПодсказка - 719 + 721 Label true true @@ -2350,7 +2350,7 @@ НадписьИнфоЖРРасширеннаяПодсказка - 722 + 724 Label true true @@ -2386,7 +2386,7 @@ НадписьОткрытьЖурналРегистрации1РасширеннаяПодсказка - 723 + 725 Label true true @@ -2422,7 +2422,7 @@ Группа6РасширеннаяПодсказка - 721 + 723 Label true true @@ -2447,7 +2447,7 @@ false ПанельЖурналРегистрацииРасширеннаяПодсказка - 718 + 720 Label true true @@ -2475,7 +2475,7 @@ Декорация66РасширеннаяПодсказка - 724 + 726 Label true true @@ -2512,7 +2512,7 @@ НадписьДалее2РасширеннаяПодсказка - 725 + 727 Label true true @@ -2544,7 +2544,7 @@ ПодключениеКСайтуРасширеннаяПодсказка - 694 + 696 Label true true @@ -2575,7 +2575,7 @@ НадписьШапкаМестоположениеДискаИТСРасширеннаяПодсказка - 727 + 729 Label true true @@ -2627,7 +2627,7 @@ ИсточникДискаИТСРасширеннаяПодсказка - 728 + 730 Label true true @@ -2694,7 +2694,7 @@ ДискИТСРасширеннаяПодсказка - 733 + 735 Label true true @@ -2740,7 +2740,7 @@ УказаниеКаталогаРасширеннаяПодсказка - 732 + 734 Label true true @@ -2771,7 +2771,7 @@ Декорация21РасширеннаяПодсказка - 736 + 738 Label true true @@ -2801,7 +2801,7 @@ ИнфНадписьИТСРасширеннаяПодсказка - 735 + 737 Label true true @@ -2826,7 +2826,7 @@ СтраницыНаличияДискаИТСРасширеннаяПодсказка - 731 + 733 Label true true @@ -2846,7 +2846,7 @@ ОтступПятьРасширеннаяПодсказка - 730 + 732 Label true true @@ -2875,7 +2875,7 @@ ОтступШестьРасширеннаяПодсказка - 737 + 739 Label true true @@ -2911,7 +2911,7 @@ НадписьСообщениеДалее4РасширеннаяПодсказка - 738 + 740 Label true true @@ -2943,7 +2943,7 @@ МестоположениеДискаИТСРасширеннаяПодсказка - 726 + 728 Label true true @@ -2974,7 +2974,7 @@ НадписьШапкаФайлОбновленияРасширеннаяПодсказка - 740 + 742 Label true true @@ -3023,7 +3023,7 @@ ПереключательНуженФайлОбновленияРасширеннаяПодсказка - 741 + 743 Label true true @@ -3081,7 +3081,7 @@ None ПолеФайлОбновленияРасширеннаяПодсказка - 744 + 746 Label true true @@ -3127,7 +3127,7 @@ ОтступРасширеннаяПодсказка - 743 + 745 Label true true @@ -3159,7 +3159,7 @@ Картинка5РасширеннаяПодсказка - 747 + 749 Label true true @@ -3204,7 +3204,7 @@ НадписьКонфигурацияИзмененаРасширеннаяПодсказка - 750 + 752 Label true true @@ -3239,7 +3239,7 @@ true ЕстьИзмененияРасширеннаяПодсказка - 749 + 751 Label true true @@ -3270,7 +3270,7 @@ НадписьНетИзмененийРасширеннаяПодсказка - 752 + 754 Label true true @@ -3305,7 +3305,7 @@ true НетИзмененийРасширеннаяПодсказка - 751 + 753 Label true true @@ -3331,7 +3331,7 @@ true СтраницыНадписиИзмененнойКонфигурацииРасширеннаяПодсказка - 748 + 750 Label true true @@ -3356,7 +3356,7 @@ false ПанельОбновлениеИзОсновнойКонфигурацииРасширеннаяПодсказка - 746 + 748 Label true true @@ -3384,7 +3384,7 @@ НадписьОтступРасширеннаяПодсказка - 753 + 755 Label true true @@ -3420,7 +3420,7 @@ Декорация51РасширеннаяПодсказка - 754 + 756 Label true true @@ -3452,7 +3452,7 @@ ФайлОбновленияРасширеннаяПодсказка - 739 + 741 Label true true @@ -3483,7 +3483,7 @@ НадписьШапкаДоступноеОбновлениеРасширеннаяПодсказка - 756 + 758 Label true true @@ -3530,7 +3530,7 @@ ДекорацияКартинка2РасширеннаяПодсказка - 759 + 761 Label true true @@ -3571,7 +3571,7 @@ НадписьДоступноеОбновлениеРасширеннаяПодсказка - 761 + 763 Label true true @@ -3616,7 +3616,7 @@ НадписьИнформацияОбОбновленииРасширеннаяПодсказка - 762 + 764 Label true true @@ -3660,7 +3660,7 @@ Декорация19РасширеннаяПодсказка - 764 + 766 Label true true @@ -3695,7 +3695,7 @@ НадписьРазмерОбновленияРасширеннаяПодсказка - 765 + 767 Label true true @@ -3731,7 +3731,7 @@ Группа11РасширеннаяПодсказка - 763 + 765 Label true true @@ -3756,7 +3756,7 @@ false Группа10РасширеннаяПодсказка - 760 + 762 Label true true @@ -3786,7 +3786,7 @@ true ГруппаНомерВерсииРасширеннаяПодсказка - 758 + 760 Label true true @@ -3814,7 +3814,7 @@ ИнформацияОДоступномОбновленииРасширеннаяПодсказка - 757 + 759 Label true true @@ -3854,7 +3854,7 @@ Декорация20РасширеннаяПодсказка - 768 + 770 Label true true @@ -3889,7 +3889,7 @@ НадписьТекущаяКонфигурацияРасширеннаяПодсказка - 769 + 771 Label true true @@ -3917,7 +3917,7 @@ Группа12РасширеннаяПодсказка - 767 + 769 Label true true @@ -3948,7 +3948,7 @@ НадписьОписаниеКонфигурацииРасширеннаяПодсказка - 770 + 772 Label true true @@ -3976,7 +3976,7 @@ Группа1РасширеннаяПодсказка - 766 + 768 Label true true @@ -4008,7 +4008,7 @@ ДекорацияКартинка21РасширеннаяПодсказка - 772 + 774 Label true true @@ -4049,7 +4049,7 @@ Декорация22РасширеннаяПодсказка - 774 + 776 Label true true @@ -4084,7 +4084,7 @@ НадписьПорядокОбновленияРасширеннаяПодсказка - 775 + 777 Label true true @@ -4117,7 +4117,7 @@ Группа14РасширеннаяПодсказка - 773 + 775 Label true true @@ -4146,7 +4146,7 @@ ПанельПорядокОбновленияРасширеннаяПодсказка - 771 + 773 Label true true @@ -4174,7 +4174,7 @@ ОтступДесятьРасширеннаяПодсказка - 776 + 778 Label true true @@ -4213,7 +4213,7 @@ НадписьПроверкиНаличияОбновления1РасширеннаяПодсказка - 778 + 780 Label true true @@ -4248,7 +4248,7 @@ ГиперссылкаПроверятьНаличиеОбновленияПриЗапуске1РасширеннаяПодсказка - 779 + 781 Label true true @@ -4282,7 +4282,7 @@ ГруппаПроверкиНаличияОбновления1РасширеннаяПодсказка - 777 + 779 Label true true @@ -4320,7 +4320,7 @@ Декорация23РасширеннаяПодсказка - 782 + 784 Label true true @@ -4348,7 +4348,7 @@ Интернет1РасширеннаяПодсказка - 781 + 783 Label true true @@ -4379,7 +4379,7 @@ Декорация63РасширеннаяПодсказка - 784 + 786 Label true true @@ -4407,7 +4407,7 @@ ИТС1РасширеннаяПодсказка - 783 + 785 Label true true @@ -4432,7 +4432,7 @@ ПанельПереходаНаСледующийШагРасширеннаяПодсказка - 780 + 782 Label true true @@ -4456,7 +4456,7 @@ ДоступноеОбновлениеРасширеннаяПодсказка - 755 + 757 Label true true @@ -4487,7 +4487,7 @@ ЗаголовокОбновленияРасширеннаяПодсказка - 786 + 788 Label true true @@ -4540,7 +4540,7 @@ Картинка26РасширеннаяПодсказка - 791 + 793 Label true true @@ -4579,7 +4579,7 @@ НадписьУВасПоследняяВерсияРасширеннаяПодсказка - 792 + 794 Label true true @@ -4610,7 +4610,7 @@ false ГоризонтальнаяГруппа12РасширеннаяПодсказка - 790 + 792 Label true true @@ -4639,7 +4639,7 @@ false ОбновлениеНеТребуетсяРасширеннаяПодсказка - 789 + 791 Label true true @@ -4668,7 +4668,7 @@ Картинка24РасширеннаяПодсказка - 795 + 797 Label true true @@ -4709,7 +4709,7 @@ НадписьОбновлениеНеОбнаруженоРасширеннаяПодсказка - 797 + 799 Label true true @@ -4749,7 +4749,7 @@ НадписьНеобходимыеДискиИТСРасширеннаяПодсказка - 798 + 800 Label true true @@ -4796,7 +4796,7 @@ НадписьПереченьРелизовНаДискахИТСРасширеннаяПодсказка - 800 + 802 Label true true @@ -4835,7 +4835,7 @@ false ГруппаПодходящихОбновленийИТСРасширеннаяПодсказка - 796 + 798 Label true true @@ -4861,7 +4861,7 @@ false ГоризонтальнаяГруппа16РасширеннаяПодсказка - 794 + 796 Label true true @@ -4890,7 +4890,7 @@ false ОбновлениеНеОбнаруженоРасширеннаяПодсказка - 793 + 795 Label true true @@ -4920,7 +4920,7 @@ Картинка14РасширеннаяПодсказка - 803 + 805 Label true true @@ -4959,7 +4959,7 @@ НадписьВключенаВозможностьИзмененийРасширеннаяПодсказка - 804 + 806 Label true true @@ -4991,7 +4991,7 @@ false ГоризонтальнаяГруппа3РасширеннаяПодсказка - 802 + 804 Label true true @@ -5020,7 +5020,7 @@ false ВключенаВозможностьИзмененийРасширеннаяПодсказка - 801 + 803 Label true true @@ -5050,7 +5050,7 @@ Картинка27РасширеннаяПодсказка - 807 + 809 Label true true @@ -5089,7 +5089,7 @@ НадписьОбновлениеКонфигурацииВыполняетсяПриОбменеДаннымиСГлавнымУзломРасширеннаяПодсказка - 808 + 810 Label true true @@ -5120,7 +5120,7 @@ false ГоризонтальнаяГруппа13РасширеннаяПодсказка - 806 + 808 Label true true @@ -5145,7 +5145,7 @@ false ОбновлениеПроизводитсяВГлавномУзлеРасширеннаяПодсказка - 805 + 807 Label true true @@ -5171,7 +5171,7 @@ false ПанельИнформацияОбОбновленииРасширеннаяПодсказка - 788 + 790 Label true true @@ -5201,7 +5201,7 @@ Декорация30РасширеннаяПодсказка - 810 + 812 Label true true @@ -5236,7 +5236,7 @@ НадписьВерсияТекущейКонфигурацииРасширеннаяПодсказка - 811 + 813 Label true true @@ -5271,7 +5271,7 @@ НадписьВерсияДляОбновленияРасширеннаяПодсказка - 812 + 814 Label true true @@ -5304,7 +5304,7 @@ false ГруппаТекущаяВерсияРасширеннаяПодсказка - 809 + 811 Label true true @@ -5335,7 +5335,7 @@ НадписьОписаниеТекущейКонфигурацииРасширеннаяПодсказка - 813 + 815 Label true true @@ -5369,7 +5369,7 @@ false ГруппаРезультатПоискаОбновленияРасширеннаяПодсказка - 787 + 789 Label true true @@ -5406,7 +5406,7 @@ Декорация4РасширеннаяПодсказка - 815 + 817 Label true true @@ -5442,7 +5442,7 @@ false КнопкаПроверитьДискИТСРасширеннаяПодсказка - 816 + 818 Label true true @@ -5466,7 +5466,7 @@ ГруппаПроверкиДискаИТСРасширеннаяПодсказка - 814 + 816 Label true true @@ -5494,7 +5494,7 @@ ОтступСемьРасширеннаяПодсказка - 817 + 819 Label true true @@ -5531,7 +5531,7 @@ НадписьСообщениеДалее1РасширеннаяПодсказка - 818 + 820 Label true true @@ -5563,7 +5563,7 @@ ОбновленияНеОбнаруженоРасширеннаяПодсказка - 785 + 787 Label true true @@ -5594,7 +5594,7 @@ НадписьШапкаДлительнаяОперацияРасширеннаяПодсказка - 820 + 822 Label true true @@ -5644,7 +5644,7 @@ ДекорацияКартинка33РасширеннаяПодсказка - 824 + 826 Label true true @@ -5682,7 +5682,7 @@ Декорация34РасширеннаяПодсказка - 825 + 827 Label true true @@ -5715,7 +5715,7 @@ false Группа18РасширеннаяПодсказка - 823 + 825 Label true true @@ -5743,7 +5743,7 @@ ИнтернетРасширеннаяПодсказка - 822 + 824 Label true true @@ -5770,7 +5770,7 @@ ДекорацияКартинка35РасширеннаяПодсказка - 827 + 829 Label true true @@ -5808,7 +5808,7 @@ Декорация36РасширеннаяПодсказка - 828 + 830 Label true true @@ -5844,7 +5844,7 @@ false ИТСРасширеннаяПодсказка - 826 + 828 Label true true @@ -5870,7 +5870,7 @@ false ПанельОжиданиеДлительнойОперацииРасширеннаяПодсказка - 821 + 823 Label true true @@ -5900,7 +5900,7 @@ НадписьПрогрессРасширеннаяПодсказка - 830 + 832 Label true true @@ -5933,7 +5933,7 @@ ГруппаПрогрессРасширеннаяПодсказка - 829 + 831 Label true true @@ -5963,7 +5963,7 @@ ДлительнаяОперацияРасширеннаяПодсказка - 819 + 821 Label true true @@ -5994,7 +5994,7 @@ НадписьШапкаВыборРежимаОбнФайлРасширеннаяПодсказка - 832 + 834 Label true true @@ -6045,7 +6045,7 @@ НадписьДляОбновленияПотребуетсяПерезагрузкаРасширеннаяПодсказка - 835 + 837 Label true true @@ -6078,7 +6078,7 @@ ВсеГотовоРасширеннаяПодсказка - 834 + 836 Label true true @@ -6105,7 +6105,7 @@ Декорация8РасширеннаяПодсказка - 837 + 839 Label true true @@ -6146,7 +6146,7 @@ Декорация39РасширеннаяПодсказка - 839 + 841 Label true true @@ -6181,7 +6181,7 @@ НадписьПорядокОбновления1РасширеннаяПодсказка - 840 + 842 Label true true @@ -6214,7 +6214,7 @@ ВертикальнаяГруппа1РасширеннаяПодсказка - 838 + 840 Label true true @@ -6243,7 +6243,7 @@ ВсеГотовоПорядокОбновленияРасширеннаяПодсказка - 836 + 838 Label true true @@ -6267,7 +6267,7 @@ ПанельВсеГотовоФайлРасширеннаяПодсказка - 833 + 835 Label true true @@ -6280,6 +6280,40 @@ Auto
                + + НадписьПолученоОбновлениеИзПриложенияФайл + 641 + + <key>ru</key> + <value>Получено обновление из приложения в Интернете. Процесс обновления может занять длительное время. +Не выключайте питание компьютера до завершения процесса установки.</value> + + true + + true + + + НадписьПолученоОбновлениеИзПриложенияФайлРасширеннаяПодсказка + 843 + Label + true + true + + Left + + + + НадписьПолученоОбновлениеИзПриложенияФайлКонтекстноеМеню + 642 + true + + Label + true + true + + Left + + ПереключательОбновленияФайл 612 @@ -6298,7 +6332,7 @@ ПереключательОбновленияФайлРасширеннаяПодсказка - 841 + 844 Label true true @@ -6352,7 +6386,7 @@ Картинка1РасширеннаяПодсказка - 844 + 847 Label true true @@ -6396,7 +6430,7 @@ Надпись43РасширеннаяПодсказка - 847 + 850 Label true true @@ -6431,7 +6465,7 @@ НадписьСписокДействийРасширеннаяПодсказка - 848 + 851 Label true true @@ -6469,7 +6503,7 @@ АктивныеПользователиРасширеннаяПодсказка - 846 + 849 Label true true @@ -6500,7 +6534,7 @@ Надпись42РасширеннаяПодсказка - 850 + 853 Label true true @@ -6535,7 +6569,7 @@ НадписьСписокДействий1РасширеннаяПодсказка - 851 + 854 Label true true @@ -6573,7 +6607,7 @@ АктивныеСоединенияРасширеннаяПодсказка - 849 + 852 Label true true @@ -6604,7 +6638,7 @@ Надпись45РасширеннаяПодсказка - 853 + 856 Label true true @@ -6640,7 +6674,7 @@ НадписьСписокДействий3РасширеннаяПодсказка - 854 + 857 Label true true @@ -6679,7 +6713,7 @@ СоединениеКонфигуратораРасширеннаяПодсказка - 852 + 855 Label true true @@ -6706,7 +6740,7 @@ false ПанельАктивныеПользователиРасширеннаяПодсказка - 845 + 848 Label true true @@ -6730,7 +6764,7 @@ ГруппаСоединенийРасширеннаяПодсказка - 843 + 846 Label true true @@ -6763,7 +6797,7 @@ НадписьПроцессОбновленияМожетЗанятьМногоВремениРасширеннаяПодсказка - 855 + 858 Label true true @@ -6795,7 +6829,7 @@ НадписьОтступ3РасширеннаяПодсказка - 856 + 859 Label true true @@ -6834,7 +6868,7 @@ Надпись46РасширеннаяПодсказка - 858 + 861 Label true true @@ -6869,7 +6903,7 @@ НадписьРезервнаяКопияФайлРасширеннаяПодсказка - 859 + 862 Label true true @@ -6903,7 +6937,7 @@ ГруппаРезервнаяКопияРасширеннаяПодсказка - 857 + 860 Label true true @@ -6928,7 +6962,7 @@ Далее 334 - Декорация41 + НадписьДалееВыборРежимаОбновленияФайл 207 <key>ru</key> @@ -6940,8 +6974,8 @@ <common>true</common> </userVisible> <extendedTooltip> - <name>Декорация41РасширеннаяПодсказка</name> - <id>862</id> + <name>НадписьДалееВыборРежимаОбновленияФайлРасширеннаяПодсказка</name> + <id>865</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6950,7 +6984,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>Декорация41КонтекстноеМеню</name> + <name>НадписьДалееВыборРежимаОбновленияФайлКонтекстноеМеню</name> <id>208</id> <autoFill>true</autoFill> </contextMenu> @@ -6973,7 +7007,7 @@ ДалееРасширеннаяПодсказка - 861 + 864 Label true true @@ -7004,7 +7038,7 @@ Декорация56РасширеннаяПодсказка - 864 + 867 Label true true @@ -7036,7 +7070,7 @@ ГотовоРасширеннаяПодсказка - 863 + 866 Label true true @@ -7067,7 +7101,7 @@ Декорация57РасширеннаяПодсказка - 866 + 869 Label true true @@ -7095,7 +7129,7 @@ АктивныеСоединения2РасширеннаяПодсказка - 865 + 868 Label true true @@ -7126,7 +7160,7 @@ Декорация58РасширеннаяПодсказка - 868 + 871 Label true true @@ -7154,7 +7188,7 @@ СоединениеКонфигуратора2РасширеннаяПодсказка - 867 + 870 Label true true @@ -7179,7 +7213,7 @@ ПанельПереходаНаСледующийШагРежимаОбновленияФайлРасширеннаяПодсказка - 860 + 863 Label true true @@ -7203,7 +7237,7 @@ ВыборРежимаОбновленияФайлРасширеннаяПодсказка - 831 + 833 Label true true @@ -7234,7 +7268,7 @@ НадписьШапкаВыборРежимаОбнСерверРасширеннаяПодсказка - 870 + 873 Label true true @@ -7272,7 +7306,7 @@ ВсеГотово1 345 - Декорация43 + НадписьВыберитеСпособОбновленияСервер 212 <key>ru</key> @@ -7284,8 +7318,8 @@ <common>true</common> </userVisible> <extendedTooltip> - <name>Декорация43РасширеннаяПодсказка</name> - <id>873</id> + <name>НадписьВыберитеСпособОбновленияСерверРасширеннаяПодсказка</name> + <id>876</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7294,7 +7328,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>Декорация43КонтекстноеМеню</name> + <name>НадписьВыберитеСпособОбновленияСерверКонтекстноеМеню</name> <id>213</id> <autoFill>true</autoFill> </contextMenu> @@ -7315,7 +7349,7 @@ </userVisible> <extendedTooltip> <name>ВсеГотово1РасширеннаяПодсказка</name> - <id>872</id> + <id>875</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7342,7 +7376,7 @@ </userVisible> <extendedTooltip> <name>Декорация1РасширеннаяПодсказка</name> - <id>875</id> + <id>878</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7370,7 +7404,7 @@ <name>ВертикальнаяГруппа7</name> <id>347</id> <items xsi:type="form:Decoration"> - <name>Декорация59</name> + <name>НадписьПорядокОбновленияСервер</name> <id>348</id> <title> <key>ru</key> @@ -7382,8 +7416,8 @@ <common>true</common> </userVisible> <extendedTooltip> - <name>Декорация59РасширеннаяПодсказка</name> - <id>877</id> + <name>НадписьПорядокОбновленияСерверРасширеннаяПодсказка</name> + <id>880</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7392,7 +7426,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>Декорация59КонтекстноеМеню</name> + <name>НадписьПорядокОбновленияСерверКонтекстноеМеню</name> <id>349</id> <autoFill>true</autoFill> </contextMenu> @@ -7418,7 +7452,7 @@ </userVisible> <extendedTooltip> <name>НадписьПорядокОбновления3РасширеннаяПодсказка</name> - <id>878</id> + <id>881</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7451,7 +7485,7 @@ </userVisible> <extendedTooltip> <name>ВертикальнаяГруппа7РасширеннаяПодсказка</name> - <id>876</id> + <id>879</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7476,7 +7510,7 @@ </userVisible> <extendedTooltip> <name>ВсеГотовоПорядокОбновления1РасширеннаяПодсказка</name> - <id>874</id> + <id>877</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7500,7 +7534,7 @@ ПанельВсеГотовоСерверРасширеннаяПодсказка - 871 + 874 Label true true @@ -7534,7 +7568,7 @@ ПереключательОбновленияСерверРасширеннаяПодсказка - 880 + 883 Label true true @@ -7595,7 +7629,7 @@ ОтступЧетыреРасширеннаяПодсказка - 879 + 882 Label true true @@ -7637,7 +7671,7 @@ ПолеДатаВремяОбновленияРасширеннаяПодсказка - 884 + 887 Label true true @@ -7680,7 +7714,7 @@ Надпись51РасширеннаяПодсказка - 886 + 889 Label true true @@ -7729,7 +7763,7 @@ ВыслатьОтчетНаПочтуРасширеннаяПодсказка - 888 + 891 Label true true @@ -7763,7 +7797,7 @@ None АдресЭлектроннойПочтыРасширеннаяПодсказка - 890 + 893 Label true true @@ -7805,7 +7839,7 @@ false ПанельПочтаРасширеннаяПодсказка - 887 + 890 Label true true @@ -7833,7 +7867,7 @@ СтраницаЗапланированнойПерезагрузкиРасширеннаяПодсказка - 883 + 886 Label true true @@ -7851,7 +7885,7 @@ СтраницаПерезагрузкиСейчас1 217 - Надпись47 + НадписьБудетУстановленоОбновлениеСервер 218 <key>ru</key> @@ -7863,8 +7897,8 @@ <common>true</common> </userVisible> <extendedTooltip> - <name>Надпись47РасширеннаяПодсказка</name> - <id>893</id> + <name>НадписьБудетУстановленоОбновлениеСерверРасширеннаяПодсказка</name> + <id>896</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7873,7 +7907,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>Надпись47КонтекстноеМеню</name> + <name>НадписьБудетУстановленоОбновлениеСерверКонтекстноеМеню</name> <id>219</id> <autoFill>true</autoFill> </contextMenu> @@ -7901,7 +7935,7 @@ </userVisible> <extendedTooltip> <name>Картинка2РасширеннаяПодсказка</name> - <id>895</id> + <id>898</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7945,7 +7979,7 @@ </userVisible> <extendedTooltip> <name>Надпись48РасширеннаяПодсказка</name> - <id>898</id> + <id>901</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7981,7 +8015,7 @@ </userVisible> <extendedTooltip> <name>НадписьСписокДействий2РасширеннаяПодсказка</name> - <id>899</id> + <id>902</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8019,7 +8053,7 @@ АктивныеПользователи1РасширеннаяПодсказка - 897 + 900 Label true true @@ -8051,7 +8085,7 @@ Надпись49РасширеннаяПодсказка - 901 + 904 Label true true @@ -8087,7 +8121,7 @@ НадписьСписокДействий4РасширеннаяПодсказка - 902 + 905 Label true true @@ -8126,7 +8160,7 @@ АктивныеСоединения1РасширеннаяПодсказка - 900 + 903 Label true true @@ -8147,7 +8181,7 @@ ПанельАктивныеПользователи1РасширеннаяПодсказка - 896 + 899 Label true true @@ -8168,7 +8202,7 @@ false ГруппаСоединений1РасширеннаяПодсказка - 894 + 897 Label true true @@ -8196,7 +8230,7 @@ СтраницаПерезагрузкиСейчас1РасширеннаяПодсказка - 892 + 895 Label true true @@ -8221,7 +8255,7 @@ СтраницыИнформацииПерезагрузки1РасширеннаяПодсказка - 882 + 885 Label true true @@ -8244,7 +8278,7 @@ НадписьОтступ2РасширеннаяПодсказка - 903 + 906 Label true true @@ -8279,7 +8313,7 @@ Декорация13РасширеннаяПодсказка - 905 + 908 Label true true @@ -8317,7 +8351,7 @@ НадписьРезервнаяКопияСерверРасширеннаяПодсказка - 906 + 909 Label true true @@ -8351,7 +8385,7 @@ ГруппаРезервнаяКопияСерверРасширеннаяПодсказка - 904 + 907 Label true true @@ -8376,7 +8410,7 @@ Сейчас 353 - Декорация44 + НадписьДалееВыборРежимаОбновленияСервер 254 <key>ru</key> @@ -8388,8 +8422,8 @@ <common>true</common> </userVisible> <extendedTooltip> - <name>Декорация44РасширеннаяПодсказка</name> - <id>909</id> + <name>НадписьДалееВыборРежимаОбновленияСерверРасширеннаяПодсказка</name> + <id>912</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8398,7 +8432,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>Декорация44КонтекстноеМеню</name> + <name>НадписьДалееВыборРежимаОбновленияСерверКонтекстноеМеню</name> <id>255</id> <autoFill>true</autoFill> </contextMenu> @@ -8421,7 +8455,7 @@ СейчасРасширеннаяПодсказка - 908 + 911 Label true true @@ -8452,7 +8486,7 @@ Декорация60РасширеннаяПодсказка - 911 + 914 Label true true @@ -8484,7 +8518,7 @@ ОтложитьРасширеннаяПодсказка - 910 + 913 Label true true @@ -8515,7 +8549,7 @@ Декорация61РасширеннаяПодсказка - 913 + 916 Label true true @@ -8547,7 +8581,7 @@ ОтменаРасширеннаяПодсказка - 912 + 915 Label true true @@ -8572,7 +8606,7 @@ ПанельПереходаНаСледующийШагРежимаОбновленияСерверРасширеннаяПодсказка - 907 + 910 Label true true @@ -8596,7 +8630,7 @@ ВыборРежимаОбновленияСерверРасширеннаяПодсказка - 869 + 872 Label true true @@ -8627,7 +8661,7 @@ НадписьШапкаУспешноеОбновлениеРасширеннаяПодсказка - 915 + 918 Label true true @@ -8672,7 +8706,7 @@ Декорация46РасширеннаяПодсказка - 916 + 919 Label true true @@ -8707,7 +8741,7 @@ НадписьИнформацияОбОбновленииПриЗавершенииРасширеннаяПодсказка - 917 + 920 Label true true @@ -8747,7 +8781,7 @@ Картинка3РасширеннаяПодсказка - 919 + 922 Label true true @@ -8788,7 +8822,7 @@ Декорация47РасширеннаяПодсказка - 921 + 924 Label true true @@ -8823,7 +8857,7 @@ НадписьПорядокОбновления2РасширеннаяПодсказка - 922 + 925 Label true true @@ -8856,7 +8890,7 @@ Группа30РасширеннаяПодсказка - 920 + 923 Label true true @@ -8885,7 +8919,7 @@ ПанельПорядокОбновленияПриЗавершенииРасширеннаяПодсказка - 918 + 921 Label true true @@ -8913,7 +8947,7 @@ Отступ45РасширеннаяПодсказка - 923 + 926 Label true true @@ -8949,7 +8983,7 @@ НадписьСообщениеДалее2РасширеннаяПодсказка - 924 + 927 Label true true @@ -8981,7 +9015,7 @@ УспешноеОбновлениеРасширеннаяПодсказка - 914 + 917 Label true true @@ -9012,7 +9046,7 @@ НадписьШапкаНеудачноеОбновлениеРасширеннаяПодсказка - 926 + 929 Label true true @@ -9057,7 +9091,7 @@ Надпись54РасширеннаяПодсказка - 927 + 930 Label true true @@ -9094,7 +9128,7 @@ НадписьОткрытьЖурналРегистрацииРасширеннаяПодсказка - 928 + 931 Label true true @@ -9132,7 +9166,7 @@ ОтступНеуспешноеОбновлениеРасширеннаяПодсказка - 929 + 932 Label true true @@ -9169,7 +9203,7 @@ Надпись56РасширеннаяПодсказка - 930 + 933 Label true true @@ -9201,7 +9235,7 @@ НеуспешноеОбновлениеРасширеннаяПодсказка - 925 + 928 Label true true @@ -9232,7 +9266,7 @@ НадписьШапкаПараметрыАвторизацииРасширеннаяПодсказка - 932 + 935 Label true true @@ -9279,7 +9313,7 @@ Картинка6РасширеннаяПодсказка - 935 + 938 Label true true @@ -9318,7 +9352,7 @@ Декорация53РасширеннаяПодсказка - 936 + 939 Label true true @@ -9356,7 +9390,7 @@ ПочтиВсеГотовоРасширеннаяПодсказка - 934 + 937 Label true true @@ -9385,7 +9419,7 @@ Картинка7РасширеннаяПодсказка - 939 + 942 Label true true @@ -9427,7 +9461,7 @@ None ОбнаруженнаяОшибкаПодключенияРасширеннаяПодсказка - 940 + 943 Label true true @@ -9470,7 +9504,7 @@ false ГоризонтальнаяГруппа10РасширеннаяПодсказка - 938 + 941 Label true true @@ -9500,7 +9534,7 @@ Картинка9РасширеннаяПодсказка - 943 + 946 Label true true @@ -9537,7 +9571,7 @@ НадписьИнфоЖР2РасширеннаяПодсказка - 945 + 948 Label true true @@ -9573,7 +9607,7 @@ НадписьОткрытьЖурналРегистрации3РасширеннаяПодсказка - 946 + 949 Label true true @@ -9610,7 +9644,7 @@ false ВертикальнаяГруппаНадписиЖР1РасширеннаяПодсказка - 944 + 947 Label true true @@ -9635,7 +9669,7 @@ false ПанельЖурналРегистрации2РасширеннаяПодсказка - 942 + 945 Label true true @@ -9664,7 +9698,7 @@ true ОбнаруженаОшибкаПодключенияРасширеннаяПодсказка - 937 + 940 Label true true @@ -9690,7 +9724,7 @@ false СтраницыНадписиПроверкиПодключенияРасширеннаяПодсказка - 933 + 936 Label true true @@ -9720,7 +9754,7 @@ НадписьОбновитьВерсиюКомпоненты2РасширеннаяПодсказка - 948 + 951 Label true true @@ -9764,7 +9798,7 @@ ИмяАдминистратораИБРасширеннаяПодсказка - 951 + 954 Label true true @@ -9810,7 +9844,7 @@ ПарольАдминистратораИБСерверРасширеннаяПодсказка - 953 + 956 Label true true @@ -9847,7 +9881,7 @@ Группа36РасширеннаяПодсказка - 950 + 953 Label true true @@ -9882,7 +9916,7 @@ Декорация54РасширеннаяПодсказка - 956 + 959 Label true true @@ -9917,7 +9951,7 @@ true ПанельПредупреждениеОWindowsАвторизацииРасширеннаяПодсказка - 955 + 958 Label true true @@ -9942,7 +9976,7 @@ Группа7РасширеннаяПодсказка - 949 + 952 Label true true @@ -9970,7 +10004,7 @@ ПанельАвторизацияИБРасширеннаяПодсказка - 947 + 950 Label true true @@ -10018,7 +10052,7 @@ КластерТребуетАутентификацииРасширеннаяПодсказка - 959 + 962 Label true true @@ -10058,7 +10092,7 @@ ИмяАдминистратораКластераРасширеннаяПодсказка - 962 + 965 Label true true @@ -10104,7 +10138,7 @@ ПарольАдминистратораКластераРасширеннаяПодсказка - 964 + 967 Label true true @@ -10145,7 +10179,7 @@ ПанельДоступККластеруРасширеннаяПодсказка - 961 + 964 Label true true @@ -10175,7 +10209,7 @@ ПанельАдминистраторКластераСерверовРасширеннаяПодсказка - 958 + 961 Label true true @@ -10219,7 +10253,7 @@ НестандартныеПортыСервераРасширеннаяПодсказка - 967 + 970 Label true true @@ -10259,7 +10293,7 @@ ПортКластераСерверовРасширеннаяПодсказка - 970 + 973 Label true true @@ -10304,7 +10338,7 @@ ПортАгентаСервераРасширеннаяПодсказка - 972 + 975 Label true true @@ -10343,7 +10377,7 @@ ПанельНестандартныеПортыСервераРасширеннаяПодсказка - 969 + 972 Label true true @@ -10374,7 +10408,7 @@ false ПанельПортыСервераРасширеннаяПодсказка - 966 + 969 Label true true @@ -10404,7 +10438,7 @@ ПанельАвторизацияКластераСерверовРасширеннаяПодсказка - 957 + 960 Label true true @@ -10438,7 +10472,7 @@ НадписьОбновитьВерсиюКомпонентыРасширеннаяПодсказка - 975 + 978 Label true true @@ -10471,7 +10505,7 @@ false КнопкаОбновитьВерсиюКомпонентыРасширеннаяПодсказка - 976 + 979 Label true true @@ -10495,7 +10529,7 @@ ГруппаComcntrРасширеннаяПодсказка - 974 + 977 Label true true @@ -10522,7 +10556,7 @@ НадписьОтступ1РасширеннаяПодсказка - 977 + 980 Label true true @@ -10558,7 +10592,7 @@ НадписьСообщениеДалее3РасширеннаяПодсказка - 978 + 981 Label true true @@ -10590,7 +10624,7 @@ ПараметрыАвторизацииРасширеннаяПодсказка - 931 + 934 Label true true @@ -10621,7 +10655,7 @@ НадписьШапкаДополнительныеНастройкиРасширеннаяПодсказка - 980 + 983 Label true true @@ -10665,7 +10699,7 @@ Картинка12РасширеннаяПодсказка - 982 + 985 Label true true @@ -10707,7 +10741,7 @@ None ОбнаруженнаяОшибкаПодключения1РасширеннаяПодсказка - 983 + 986 Label true true @@ -10750,7 +10784,7 @@ false ГоризонтальнаяГруппаОшибкаПодключенияРасширеннаяПодсказка - 981 + 984 Label true true @@ -10780,7 +10814,7 @@ Картинка10РасширеннаяПодсказка - 986 + 989 Label true true @@ -10817,7 +10851,7 @@ НадписьИнфоЖР3РасширеннаяПодсказка - 988 + 991 Label true true @@ -10853,7 +10887,7 @@ НадписьОткрытьЖурналРегистрации4РасширеннаяПодсказка - 989 + 992 Label true true @@ -10890,7 +10924,7 @@ false ВертикальнаяГруппаНадписиЖР3РасширеннаяПодсказка - 987 + 990 Label true true @@ -10915,7 +10949,7 @@ false ПанельЖурналРегистрации3РасширеннаяПодсказка - 985 + 988 Label true true @@ -10949,7 +10983,7 @@ НадписьОбновитьВерсиюКомпоненты3РасширеннаяПодсказка - 991 + 994 Label true true @@ -10993,7 +11027,7 @@ ИмяАдминистратораИБФайлРасширеннаяПодсказка - 994 + 997 Label true true @@ -11039,7 +11073,7 @@ ПарольАдминистратораИБФайлРасширеннаяПодсказка - 996 + 999 Label true true @@ -11076,7 +11110,7 @@ Группа38РасширеннаяПодсказка - 993 + 996 Label true true @@ -11111,7 +11145,7 @@ Декорация55РасширеннаяПодсказка - 999 + 1002 Label true true @@ -11142,7 +11176,7 @@ true ПредупреждениеОWindowsАвторизацииФайлРасширеннаяПодсказка - 998 + 1001 Label true true @@ -11167,7 +11201,7 @@ Группа37РасширеннаяПодсказка - 992 + 995 Label true true @@ -11195,7 +11229,7 @@ ПанельАвторизацияИБ1РасширеннаяПодсказка - 990 + 993 Label true true @@ -11232,7 +11266,7 @@ НадписьОбновитьВерсиюКомпоненты1РасширеннаяПодсказка - 1001 + 1004 Label true true @@ -11265,7 +11299,7 @@ false КнопкаОбновитьВерсиюКомпоненты1РасширеннаяПодсказка - 1002 + 1005 Label true true @@ -11289,7 +11323,7 @@ ГруппаComcntrФайловыйРежимРасширеннаяПодсказка - 1000 + 1003 Label true true @@ -11317,7 +11351,7 @@ НадписьОтступ4РасширеннаяПодсказка - 1003 + 1006 Label true true @@ -11353,7 +11387,7 @@ НадписьСообщениеДалее5РасширеннаяПодсказка - 1004 + 1007 Label true true @@ -11385,7 +11419,7 @@ ДополнительныеНастройкиРасширеннаяПодсказка - 979 + 982 Label true true @@ -11410,7 +11444,7 @@ СтраницыПомощникаРасширеннаяПодсказка - 644 + 646 Label true true @@ -11439,7 +11473,7 @@ false КнопкаНазадРасширеннаяПодсказка - 641 + 643 Label true true @@ -11466,7 +11500,7 @@ false КнопкаДалееРасширеннаяПодсказка - 642 + 644 Label true true @@ -11493,7 +11527,7 @@ false КнопкаЗакрытьРасширеннаяПодсказка - 643 + 645 Label true true @@ -11511,6 +11545,14 @@ Right true + + ChoiceProcessing + ОбработкаВыбора + + + NotificationProcessing + ОбработкаОповещения + OnOpen ПриОткрытии @@ -12012,6 +12054,13 @@ true + + ПолученоОбновлениеКонфигурации + + Boolean + + true + diff --git a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/Форма/Module.bsl index 85768055b..649125792 100644 --- a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Forms/Форма/Module.bsl @@ -1,13 +1,17 @@ + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; // Отказ устанавливается в ПриОткрытии(). + КонецЕсли; + ЗаписьЖурналаРегистрации(ОбновлениеКонфигурации.СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Информация,,, НСтр("ru = 'Открытие помощника обновления конфигурации...'")); ОбновлениеКонфигурации.ПрерватьВыполнениеЕслиАвторизованВнешнийПользователь(); @@ -29,6 +33,17 @@ Элементы.ПереключательОбновленияСервер.Видимость = Ложь; КонецЕсли; + Если Параметры.ПолученоОбновлениеКонфигурации Тогда + Элементы.ПереключательОбновленияФайл.Видимость = Ложь; + Элементы.НадписьПолученоОбновлениеИзПриложенияФайл.Видимость = Истина; + Элементы.НадписьДалееВыборРежимаОбновленияФайл.Заголовок = Нстр("ru = 'Нажмите ""Далее"" для установки обновления.'"); + Элементы.НадписьДалееВыборРежимаОбновленияСервер.Заголовок = Нстр("ru = 'Нажмите ""Далее"" для установки обновления.'"); + Элементы.НадписьБудетУстановленоОбновлениеСервер.Заголовок = Нстр("ru = 'Получено обновление из приложения в Интернете. Процесс обновления может занять длительное время. + |Не выключайте питание компьютера до завершения процесса установки.'"); + Элементы.НадписьВыберитеСпособОбновленияСервер.Видимость = Ложь; + Элементы.НадписьПорядокОбновленияСервер.Заголовок = Нстр("ru = 'Для продолжения необходимо ознакомиться с порядком обновления.'"); + КонецЕсли; + ИнформацияОНаличииСоединений = ПолучитьИнформациюОНаличииСоединений(Неопределено); Параметры.ВыполнитьОбновление = ?(ИнформацияОНаличииСоединений.НаличиеАктивныхСоединений, Ложь, Параметры.ВыполнитьОбновление); @@ -41,13 +56,26 @@ Процедура ПриОткрытии(Отказ) #Если ВебКлиент Тогда Отказ = Истина; - ТекстСообщения = НСтр("ru = 'Обновление конфигурации информационной базы недоступно в веб-клиенте.'"); + ТекстСообщения = НСтр("ru = 'Обновление программы недоступно в веб-клиенте.'"); ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ОбновлениеКонфигурацииКлиент.СобытиеЖурналаРегистрации(),, ТекстСообщения,,Истина); Предупреждение(ТекстСообщения); Возврат; #КонецЕсли + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Обновление программы недоступно в клиенте под управлением ОС Linux.'"); + Предупреждение(ТекстСообщения); + ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации( + ОбновлениеКонфигурацииКлиент.СобытиеЖурналаРегистрации(), + , + ТекстСообщения, + , + Истина); + Возврат; + КонецЕсли; + ВосстановитьНастройкиОбновленияКонфигурации(); Если Параметры.ВыполнитьОбновление Тогда @@ -80,8 +108,8 @@ Если Объект.КодЗадачиПланировщика <> 0 Тогда Если ПолучитьЗадачуПланировщика(Объект.КодЗадачиПланировщика) = Неопределено Тогда Объект.КодЗадачиПланировщика = 0; - КонецЕсли; - КонецЕсли; + КонецЕсли; + КонецЕсли; // Если форма открывается при запуске программы после обновления Если Объект.РезультатОбновления <> Неопределено Тогда @@ -137,6 +165,45 @@ Элементы.СтраницыПомощника.ТекущаяСтраница = Страницы[ИмяСтраницы]; КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.ОбновлениеКонфигурации.Форма.НастройкаРасписания") Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение); + КонецЕсли; + + ПередОткрытиемСтраницы(); + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей") Тогда + + ПередОткрытиемСтраницы(); + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.ОбновлениеКонфигурации.Форма.НастройкаРезервнойКопии") Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Структура") Тогда + ЗаполнитьЗначенияСвойств(Объект, ВыбранноеЗначение); + КонецЕсли; + + ПередОткрытиемСтраницы(); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия = "ЛегальностьПолученияОбновлений" И Не Параметр + И ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + + ОтработатьНажатиеКнопкиНазад(); + + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПриЗакрытии() @@ -284,15 +351,13 @@ &НаКлиенте Процедура ГиперссылкаПроверятьНаличиеОбновленияПриЗапускеНажатие(Элемент) - ПараметрыФормы = Новый Структура("ПроверятьНаличиеОбновленияПриЗапуске, РасписаниеПроверкиНаличияОбновления", - Объект.ПроверятьНаличиеОбновленияПриЗапуске, Объект.РасписаниеПроверкиНаличияОбновления); - Результат = ОткрытьФормуМодально("Обработка.ОбновлениеКонфигурации.Форма.НастройкаРасписания", ПараметрыФормы, ЭтаФорма); - Если ТипЗнч(Результат) = Тип("Структура") Тогда - ЗаполнитьЗначенияСвойств(Объект, Результат); - КонецЕсли; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ПроверятьНаличиеОбновленияПриЗапуске", Объект.ПроверятьНаличиеОбновленияПриЗапуске); + ПараметрыФормы.Вставить("РасписаниеПроверкиНаличияОбновления", Объект.РасписаниеПроверкиНаличияОбновления); + + ОткрытьФорму("Обработка.ОбновлениеКонфигурации.Форма.НастройкаРасписания", ПараметрыФормы, ЭтаФорма); - ПередОткрытиемСтраницы(); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -316,35 +381,32 @@ &НаКлиенте Процедура НадписьСписокДействийНажатие(Элемент) - ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); - ПередОткрытиемСтраницы(); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОповещатьОЗакрытии", Истина); + ОткрытьФорму("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей", , ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура НадписьСписокДействий1Нажатие(Элемент) - ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); - ПередОткрытиемСтраницы(); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОповещатьОЗакрытии", Истина); + ОткрытьФорму("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей", , ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура НадписьСписокДействий3Нажатие(Элемент) - ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); - ПередОткрытиемСтраницы(); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОповещатьОЗакрытии", Истина); + ОткрытьФорму("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей", , ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура НадписьРезервнаяКопияНажатие(Элемент) - ПараметрыФормы = Новый Структура("СоздаватьРезервнуюКопию, ИмяКаталогаРезервнойКопииИБ, ВосстанавливатьИнформационнуюБазу", - Объект.СоздаватьРезервнуюКопию, - Объект.ИмяКаталогаРезервнойКопииИБ, - Объект.ВосстанавливатьИнформационнуюБазу); - Результат = ОткрытьФормуМодально("Обработка.ОбновлениеКонфигурации.Форма.НастройкаРезервнойКопии", ПараметрыФормы, ЭтаФорма); - - Если ТипЗнч(Результат) = Тип("Структура") Тогда - ЗаполнитьЗначенияСвойств(Объект, Результат); - КонецЕсли; - - ПередОткрытиемСтраницы(); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("СоздаватьРезервнуюКопию", Объект.СоздаватьРезервнуюКопию); + ПараметрыФормы.Вставить("ИмяКаталогаРезервнойКопииИБ", Объект.ИмяКаталогаРезервнойКопииИБ); + ПараметрыФормы.Вставить("ВосстанавливатьИнформационнуюБазу", Объект.ВосстанавливатьИнформационнуюБазу); + ОткрытьФорму("Обработка.ОбновлениеКонфигурации.Форма.НастройкаРезервнойКопии", ПараметрыФормы, ЭтаФорма); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -396,63 +458,8 @@ &НаКлиенте Процедура КнопкаНазадНажатие(Команда) - Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы; - ТекущаяСтраница = Элементы.СтраницыПомощника.ТекущаяСтраница; - НоваяТекущаяСтраница = ТекущаяСтраница; - Если ТекущаяСтраница = Страницы.ДоброПожаловать Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - ИначеЕсли ТекущаяСтраница = Страницы.ПодключениеКИнтернет Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - ИначеЕсли ТекущаяСтраница = Страницы.ПодключениеКСайту Тогда - НоваяТекущаяСтраница = Страницы.ДоступноеОбновление; - ИначеЕсли ТекущаяСтраница = Страницы.ДоступноеОбновление Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС - НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; - КонецЕсли; - ИначеЕсли ТекущаяСтраница = Страницы.ОбновленияНеОбнаружено Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС - НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; - КонецЕсли; - ИначеЕсли ТекущаяСтраница = Страницы.ДлительнаяОперация Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - ИначеЕсли ТекущаяСтраница = Страницы.ВыборРежимаОбновленияФайл ИЛИ - ТекущаяСтраница = Страницы.ВыборРежимаОбновленияСервер ИЛИ - ТекущаяСтраница = Страницы.ПараметрыАвторизации ИЛИ - ТекущаяСтраница = Страницы.ДополнительныеНастройки Тогда - Если Объект.ИсточникОбновления = 0 Тогда // Интернет - НоваяТекущаяСтраница = Страницы.ДоступноеОбновление; - ИначеЕсли Объект.ИсточникОбновления = 1 Тогда // диск ИТС - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - Иначе // файл - НоваяТекущаяСтраница = Страницы.ФайлОбновления; - КонецЕсли; - ИначеЕсли ТекущаяСтраница = Страницы.УспешноеОбновление Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС - НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; - КонецЕсли; - ИначеЕсли ТекущаяСтраница = Страницы.НеуспешноеОбновление Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС - НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; - КонецЕсли; - Если Не СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ЭтоГлавныйУзел Тогда - НоваяТекущаяСтраница = Страницы[ПерейтиКВыборуРежимаОбновления()]; - КонецЕсли; - ИначеЕсли ТекущаяСтраница = Страницы.ФайлОбновления Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - ИначеЕсли ТекущаяСтраница = Страницы.ДоступноеОбновление Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - ИначеЕсли ТекущаяСтраница = Страницы.МестоположениеДискаИТС Тогда - НоваяТекущаяСтраница = Страницы.ДоброПожаловать; - КонецЕсли; - - ПередОткрытиемСтраницы(НоваяТекущаяСтраница); - - Элементы.СтраницыПомощника.ТекущаяСтраница = НоваяТекущаяСтраница; + ОтработатьНажатиеКнопкиНазад(); КонецПроцедуры @@ -484,7 +491,7 @@ &НаКлиенте Процедура НастроитьПараметрыПроксиСервера(Команда) - ОткрытьФормуМодально("ОбщаяФорма.ПараметрыПроксиСервера"); + ОткрытьФорму("ОбщаяФорма.ПараметрыПроксиСервера", , ЭтаФорма); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -561,7 +568,7 @@ ИменаФайловОбновления = ""; Для Каждого Обновление Из Объект.ДоступныеОбновления Цикл - ИменаФайловОбновления = ИменаФайловОбновления + Подг(Обновление.ПутьКЛокальномуФайлуОбновления) + ","; + ИменаФайловОбновления = ИменаФайловОбновления + Форматировать(Обновление.ПутьКЛокальномуФайлуОбновления) + ","; КонецЦикла; Если СтрДлина(ИменаФайловОбновления) > 0 Тогда ИменаФайловОбновления = Лев(ИменаФайловОбновления, СтрДлина(ИменаФайловОбновления) - 1); @@ -587,25 +594,25 @@ СтрокаПутиКИнформационнойБазе = ?(ПризнакФайловогоРежима, ПутьКИнформационнойБазе, ""); Результат = СтрЗаменить(Результат, "[ИменаФайловОбновления]" , ИменаФайловОбновления); - Результат = СтрЗаменить(Результат, "[ИмяИсполняемогоФайлаКонфигуратора]" , Подг(ИмяИсполняемогоФайлаКонфигуратора)); - Результат = СтрЗаменить(Результат, "[ИмяИсполняемогоФайлаКлиента]" , Подг(ИмяИсполняемогоФайлаКлиента)); - Результат = СтрЗаменить(Результат, "[ПараметрПутиКИнформационнойБазе]" , Подг(ПараметрПутиКИнформационнойБазе)); - Результат = СтрЗаменить(Результат, "[СтрокаПутиКФайлуИнформационнойБазы]" , Подг(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрЗаменить(СтрокаПутиКИнформационнойБазе, """", "")) + + Результат = СтрЗаменить(Результат, "[ИмяИсполняемогоФайлаКонфигуратора]" , Форматировать(ИмяИсполняемогоФайлаКонфигуратора)); + Результат = СтрЗаменить(Результат, "[ИмяИсполняемогоФайлаКлиента]" , Форматировать(ИмяИсполняемогоФайлаКлиента)); + Результат = СтрЗаменить(Результат, "[ПараметрПутиКИнформационнойБазе]" , Форматировать(ПараметрПутиКИнформационнойБазе)); + Результат = СтрЗаменить(Результат, "[СтрокаПутиКФайлуИнформационнойБазы]" , Форматировать(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(СтрЗаменить(СтрокаПутиКИнформационнойБазе, """", "")) + "1Cv8.1CD")); - Результат = СтрЗаменить(Результат, "[СтрокаСоединенияИнформационнойБазы]" , Подг(СтрокаСоединенияИнформационнойБазы)); - Результат = СтрЗаменить(Результат, "[ПараметрыАутентификацииПользователя]" , Подг(СтруктураПараметров.ПараметрыСкрипта.ПараметрыАутентификации)); - Результат = СтрЗаменить(Результат, "[СобытиеЖурналаРегистрации]" , Подг(СтруктураПараметров.СобытиеЖурналаРегистрации)); + Результат = СтрЗаменить(Результат, "[СтрокаСоединенияИнформационнойБазы]" , Форматировать(СтрокаСоединенияИнформационнойБазы)); + Результат = СтрЗаменить(Результат, "[ПараметрыАутентификацииПользователя]" , Форматировать(СтруктураПараметров.ПараметрыСкрипта.ПараметрыАутентификации)); + Результат = СтрЗаменить(Результат, "[СобытиеЖурналаРегистрации]" , Форматировать(СтруктураПараметров.СобытиеЖурналаРегистрации)); Результат = СтрЗаменить(Результат, "[АдресЭлектроннойПочты]", - Подг(?(Объект.РежимОбновления = 2 И Объект.ВыслатьОтчетНаПочту, Объект.АдресЭлектроннойПочты, ""))); - Результат = СтрЗаменить(Результат, "[ИмяАдминистратораОбновления]" , Подг(ИмяПользователя())); + Форматировать(?(Объект.РежимОбновления = 2 И Объект.ВыслатьОтчетНаПочту, Объект.АдресЭлектроннойПочты, ""))); + Результат = СтрЗаменить(Результат, "[ИмяАдминистратораОбновления]" , Форматировать(ИмяПользователя())); Результат = СтрЗаменить(Результат, "[СоздаватьРезервнуюКопию]" , ?(ПризнакФайловогоРежима И Объект.СоздаватьРезервнуюКопию <> 0, "true", "false")); Результат = СтрЗаменить(Результат, "[КаталогРезервнойКопии]" , - Подг(?(Объект.СоздаватьРезервнуюКопию = 2, ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Объект.ИмяКаталогаРезервнойКопииИБ), ""))); + Форматировать(?(Объект.СоздаватьРезервнуюКопию = 2, ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Объект.ИмяКаталогаРезервнойКопииИБ), ""))); Результат = СтрЗаменить(Результат, "[ВосстанавливатьИнформационнуюБазу]" , ?(Объект.ВосстанавливатьИнформационнуюБазу, "true", "false")); БлокироватьСоединенияИБ = НЕ СтруктураПараметров.ИнформационнаяБазаФайловая ИЛИ РежимИмитацииКлиентСервернойИБ(); Результат = СтрЗаменить(Результат, "[БлокироватьСоединенияИБ]" , ?(БлокироватьСоединенияИБ, "true", "false")); - Результат = СтрЗаменить(Результат, "[ИмяCOMСоединителя]" , Подг(СтруктураПараметров.ИмяCOMСоединителя)); + Результат = СтрЗаменить(Результат, "[ИмяCOMСоединителя]" , Форматировать(СтруктураПараметров.ИмяCOMСоединителя)); Результат = СтрЗаменить(Результат, "[ИспользоватьCOMСоединитель]" , ?(СтруктураПараметров.ЭтоБазоваяВерсияКонфигурации, "false", "true")); Результат = СтрЗаменить(Результат, "[ЗапускСеансаПослеОбновления]" , ?(Параметры.ЗавершениеРаботыСистемы, "false", "true")); @@ -614,7 +621,7 @@ КонецФункции &НаСервереБезКонтекста -Функция Подг(Знач Текст) +Функция Форматировать(Знач Текст) Текст = СтрЗаменить(Текст, "\", "\\"); Текст = СтрЗаменить(Текст, """", "\"""); @@ -835,8 +842,8 @@ Пока ЧтениеXML.Прочитать() Цикл Если ЧтениеXML.Имя = "v8u:updateList" Тогда - Прервать; - КонецЕсли; + Прервать; + КонецЕсли; Поставщик = ""; Версия = ""; ПутьКФайлуОбновления = ""; @@ -848,8 +855,8 @@ МассивВерсийДляОбновления = Новый Массив; Пока ЧтениеXML.Прочитать() Цикл Если ЧтениеXML.Имя = "v8u:update" Тогда - Прервать; - КонецЕсли; + Прервать; + КонецЕсли; Если ЧтениеXML.Имя = "v8u:vendor" Тогда ЧтениеXML.Прочитать(); Поставщик = СтроковыеФункцииКлиентСервер.СократитьДвойныеКавычки(СокрЛП(ЧтениеXML.Значение)); @@ -885,7 +892,7 @@ НоваяСтрока.НомерДискаИТС = НомерДискаИТС; НоваяСтрока.РазмерФайлаОбновления = РазмерФайлаОбновления; - КонецЦикла; + КонецЦикла; КонецЦикла; ЧтениеXML.Закрыть(); @@ -951,27 +958,25 @@ &НаСервереБезКонтекста Функция РежимОтладкиСкрипта() - Результат = Ложь; + Результат = Ложь; СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ОбновлениеКонфигурации", - "НастройкиОбновленияКонфигурации" - ); + "НастройкиОбновленияКонфигурации"); Если СтруктураНастройки <> Неопределено Тогда СтруктураНастройки.Свойство("РежимОтладкиСкрипта", Результат); - КонецЕсли; + КонецЕсли; Возврат Результат = Истина; КонецФункции &НаСервереБезКонтекста Функция РежимИмитацииКлиентСервернойИБ() - Результат = Ложь; + Результат = Ложь; СтруктураНастройки = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "ОбновлениеКонфигурации", - "НастройкиОбновленияКонфигурации" - ); + "НастройкиОбновленияКонфигурации"); Если СтруктураНастройки <> Неопределено Тогда СтруктураНастройки.Свойство("РежимИмитацииКлиентСервернойИБ", Результат); - КонецЕсли; + КонецЕсли; Возврат Результат = Истина; КонецФункции @@ -1062,12 +1067,12 @@ Если НастройкиОбновленияКонфигурации = Неопределено Тогда НастройкиОбновленияКонфигурации = ОбновлениеКонфигурацииВызовСервера.ПолучитьСтруктуруНастроекПомощника(); ОбновлениеКонфигурацииКлиентСервер.ПолучитьОбновленныеНастройкиОбновленияКонфигурации(НастройкиОбновленияКонфигурации); - КонецЕсли; + КонецЕсли; ЗаполнитьЗначенияСвойств(Объект, НастройкиОбновленияКонфигурации); Объект.РасписаниеПроверкиНаличияОбновления = ОбщегоНазначенияКлиентСервер.СтруктураВРасписание(Объект.РасписаниеПроверкиНаличияОбновления); ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента(); Если ПараметрыРаботыКлиента.ИнформационнаяБазаФайловая И Объект.РежимОбновления > 1 Тогда - Объект.РежимОбновления = 0; + Объект.РежимОбновления = 0; КонецЕсли; Если КонфигурацияИзменена Тогда @@ -1183,7 +1188,7 @@ ИначеЕсли НоваяТекущаяСтраница = Страницы.ДоступноеОбновление Тогда - СтруктураДоступногоОбновления = ПолучитьСтруктуруДостуступногоОбновления(Истина); + СтруктураДоступногоОбновления = ПолучитьСтруктуруДоступногоОбновления(Истина); Если СтруктураДоступногоОбновления <> Неопределено Тогда Элементы.НадписьИнформацияОбОбновлении.Видимость = НЕ ПустаяСтрока(ИмяФайлаИнформацияОбОбновлении); Элементы.НадписьОписаниеКонфигурации.Заголовок = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().СинонимКонфигурации; @@ -1199,7 +1204,7 @@ ИначеЕсли НоваяТекущаяСтраница = Страницы.ОбновленияНеОбнаружено Тогда - СтруктураДоступногоОбновления = ПолучитьСтруктуруДостуступногоОбновления(); + СтруктураДоступногоОбновления = ПолучитьСтруктуруДоступногоОбновления(); ФункцияКнопкиДалее = Ложь; ДоступностьКнопкиДалее = Ложь; Элементы.НадписьОписаниеТекущейКонфигурации.Заголовок = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().СинонимКонфигурации; @@ -1245,7 +1250,7 @@ ИначеЕсли НоваяТекущаяСтраница = Страницы.ВыборРежимаОбновленияФайл Тогда - ФункцияКнопкиДалее = (Объект.РежимОбновления = 0); // Если НЕ обновляем сейчас, то "готово". + ФункцияКнопкиДалее = (Объект.РежимОбновления = 0);// Если НЕ обновляем сейчас, то "готово". СтраницыПанельВсеГотово = Элементы.ПанельВсеГотовоФайл.ПодчиненныеЭлементы; Элементы.ПанельВсеГотовоФайл.ТекущаяСтраница = ?(ПустаяСтрока(ИмяФайлаПорядокОбновления), @@ -1285,11 +1290,17 @@ ДатаВремяОбновленияУстановлена = Истина; КонецЕсли; - ФункцияКнопкиДалее = (Объект.РежимОбновления = 0); // Если НЕ обновляем сейчас, то "готово". + ФункцияКнопкиДалее = (Объект.РежимОбновления = 0);// Если НЕ обновляем сейчас, то "готово". СтраницыПанельВсеГотово = Элементы.ПанельВсеГотовоСервер.ПодчиненныеЭлементы; Элементы.ПанельВсеГотовоСервер.ТекущаяСтраница = ?(ПустаяСтрока(ИмяФайлаПорядокОбновления), СтраницыПанельВсеГотово.ВсеГотово1, СтраницыПанельВсеГотово.ВсеГотовоПорядокОбновления1); + + Если ПустаяСтрока(ИмяФайлаПорядокОбновления) И Элементы.НадписьВыберитеСпособОбновленияСервер.Видимость = Ложь Тогда + + Элементы.ПанельВсеГотовоСервер.Видимость = Ложь; + + КонецЕсли; СтраницыПанелиИнформацииПерезагрузки1 = Элементы.СтраницыИнформацииПерезагрузки1.ПодчиненныеЭлементы; Элементы.СтраницыИнформацииПерезагрузки1.ТекущаяСтраница = ?(Объект.РежимОбновления = 0, @@ -1325,10 +1336,12 @@ Элементы.ПанельПорядокОбновленияПриЗавершении.Видимость = НЕ ПустаяСтрока(ИмяФайлаПорядокОбновления); ФункцияКнопкиДалее = Ложь; ДоступностьКнопкиНазад = Ложь; + ДоступностьКнопкиЗакрыть = Ложь; ИначеЕсли НоваяТекущаяСтраница = Страницы.НеуспешноеОбновление Тогда ФункцияКнопкиДалее = Ложь; + ДоступностьКнопкиЗакрыть = Ложь; ИначеЕсли НоваяТекущаяСтраница = Страницы.ФайлОбновления Тогда @@ -1465,7 +1478,7 @@ Возврат ПерейтиНаСтраницуМестоположениеДискаИТС(); ИначеЕсли Объект.ИсточникОбновления = 2 Тогда Возврат ПроверитьОбновлениеФайл(ВыдаватьСообщения); - КонецЕсли; + КонецЕсли; Возврат Неопределено; КонецФункции @@ -1489,7 +1502,7 @@ Возврат Страницы.ДоступноеОбновление.Имя; КонецЕсли; - Возврат ?(Объект.ДоступныеОбновления.Количество() = 0, ПроверитьОбновлениеИнтернет(ВыдаватьСообщения), Страницы.ПодключениеКСайту.Имя); + Возврат ?(Объект.ДоступныеОбновления.Количество() = 0, ПроверитьОбновлениеИнтернет(ВыдаватьСообщения), Страницы.ПодключениеКСайту.Имя); КонецФункции &НаКлиенте @@ -1499,7 +1512,7 @@ Если НЕ ЗначениеЗаполнено(Объект.КодПользователяСервераОбновлений) Тогда Если ВыдаватьСообщения Тогда Предупреждение(НСтр("ru = 'Укажите код пользователя сервера обновлений.'")); - КонецЕсли; + КонецЕсли; ТекущийЭлемент = Элементы.КодПользователяСервераОбновлений; Возврат Страницы.ПодключениеКСайту.Имя; КонецЕсли; @@ -1518,7 +1531,7 @@ Возврат Страницы.ДоступноеОбновление.Имя; КонецЕсли; - Возврат ПроверитьОбновлениеИнтернет(ВыдаватьСообщения); + Возврат ПроверитьОбновлениеИнтернет(ВыдаватьСообщения); КонецФункции &НаКлиенте @@ -1541,7 +1554,7 @@ КонецЕсли; КонецЕсли; ВыполнитьОбновление = Истина; - ФлагЗавершенияРаботы = Истина; + ФлагЗавершенияРаботы = Истина; Возврат ТекущаяСтраница.Имя; ИначеЕсли Объект.РежимОбновления = 1 Тогда // При завершении работы @@ -1549,7 +1562,7 @@ Если НЕ ПроверитьДопустимуюДатуОбновления(Объект.ДатаВремяОбновления, ВыдаватьСообщения) Тогда ТекущийЭлемент = Элементы.ПолеДатаВремяОбновления; Возврат ТекущаяСтраница.Имя; - КонецЕсли; + КонецЕсли; Если Объект.ВыслатьОтчетНаПочту Тогда ИмяНовойСтраницы = ПроверитьНастройкиЭлектроннойПочты(ТекущаяСтраница.Имя, ВыдаватьСообщения); Если НЕ ПустаяСтрока(ИмяНовойСтраницы) Тогда @@ -1559,7 +1572,7 @@ Если НЕ УстановленWMI(ВыдаватьСообщения) Тогда Возврат ТекущаяСтраница.Имя; - КонецЕсли; + КонецЕсли; Если НЕ ЗапланироватьОбновлениеКонфигурации() Тогда Предупреждение(НСтр("ru = 'Невозможно запланировать обновление конфигурации. Сведения об ошибке сохранены в журнал регистрации.'")); @@ -1570,13 +1583,12 @@ Возврат ТекущаяСтраница.Имя; КонецЕсли; - // Емец ПредлагатьОбновлениеИнформационнойБазыПриЗавершенииСеанса = Объект.РежимОбновления = 1; Сообщение = НСтр("ru = 'Выбран режим обновления:'") + " "; Если Объект.РежимОбновления = 0 Тогда // Обновить сейчас Сообщение = Сообщение + НСтр("ru = 'сейчас'"); - ИначеЕсли Объект.РежимОбновления = 1 Тогда // при завершении работы // Емец + ИначеЕсли Объект.РежимОбновления = 1 Тогда // при завершении работы Сообщение = Сообщение + НСтр("ru = 'при завершении работы'"); ИначеЕсли Объект.РежимОбновления = 2 Тогда // Запланировать обновление Сообщение = Сообщение + НСтр("ru = 'запланировать'"); @@ -1637,8 +1649,7 @@ Отказ = Ложь; - ОбновлениеКонфигурацииКлиентПереопределяемый.ПриПереходеНаСтраницуПомощника(ТекущаяСтраница.Имя, - НоваяТекущаяСтраница.Имя, Отказ); + ПриПереходеНаСтраницуПомощника(ТекущаяСтраница.Имя, НоваяТекущаяСтраница.Имя, Отказ); ТекущаяСтраница.Доступность = Истина; @@ -1656,12 +1667,89 @@ Предупреждение(НСтр("ru = 'Недостаточно прав для выполнения обновления конфигурации.'")); КонецЕсли; - Если НЕ Отказ Тогда + Если Отказ Тогда + ОтработатьНажатиеКнопкиНазад(); + Иначе ПередОткрытиемСтраницы(НоваяТекущаяСтраница); Элементы.СтраницыПомощника.ТекущаяСтраница = НоваяТекущаяСтраница; КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура ОтработатьНажатиеКнопкиНазад() + + Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы; + ТекущаяСтраница = Элементы.СтраницыПомощника.ТекущаяСтраница; + НоваяТекущаяСтраница = ТекущаяСтраница; + + Если ТекущаяСтраница = Страницы.ДоброПожаловать Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + ИначеЕсли ТекущаяСтраница = Страницы.ПодключениеКИнтернет Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + ИначеЕсли ТекущаяСтраница = Страницы.ПодключениеКСайту Тогда + НоваяТекущаяСтраница = Страницы.ДоступноеОбновление; + ИначеЕсли ТекущаяСтраница = Страницы.ДоступноеОбновление Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС + НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; + КонецЕсли; + ИначеЕсли ТекущаяСтраница = Страницы.ОбновленияНеОбнаружено Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС + НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; + КонецЕсли; + ИначеЕсли ТекущаяСтраница = Страницы.ДлительнаяОперация Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + ИначеЕсли ТекущаяСтраница = Страницы.ВыборРежимаОбновленияФайл ИЛИ + ТекущаяСтраница = Страницы.ВыборРежимаОбновленияСервер ИЛИ + ТекущаяСтраница = Страницы.ПараметрыАвторизации ИЛИ + ТекущаяСтраница = Страницы.ДополнительныеНастройки Тогда + Если Объект.ИсточникОбновления = 0 Тогда // Интернет + НоваяТекущаяСтраница = Страницы.ДоступноеОбновление; + ИначеЕсли Объект.ИсточникОбновления = 1 Тогда // диск ИТС + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + Иначе // файл + НоваяТекущаяСтраница = Страницы.ФайлОбновления; + КонецЕсли; + ИначеЕсли ТекущаяСтраница = Страницы.УспешноеОбновление Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС + НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; + КонецЕсли; + ИначеЕсли ТекущаяСтраница = Страницы.НеуспешноеОбновление Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + Если Объект.ИсточникОбновления = 1 Тогда // диск ИТС + НоваяТекущаяСтраница = Страницы.МестоположениеДискаИТС; + КонецЕсли; + Если Не СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ЭтоГлавныйУзел Тогда + НоваяТекущаяСтраница = Страницы[ПерейтиКВыборуРежимаОбновления()]; + КонецЕсли; + ИначеЕсли ТекущаяСтраница = Страницы.ФайлОбновления Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + ИначеЕсли ТекущаяСтраница = Страницы.ДоступноеОбновление Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + ИначеЕсли ТекущаяСтраница = Страницы.МестоположениеДискаИТС Тогда + НоваяТекущаяСтраница = Страницы.ДоброПожаловать; + КонецЕсли; + + ПередОткрытиемСтраницы(НоваяТекущаяСтраница); + + Элементы.СтраницыПомощника.ТекущаяСтраница = НоваяТекущаяСтраница; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриПереходеНаСтраницуПомощника(ПредыдущаяСтраница, СледующаяСтраница, Отказ) + + Если ПредыдущаяСтраница = "ФайлОбновления" И СледующаяСтраница <> "ФайлОбновления" + И Не ОбновлениеКонфигурацииКлиент.ПроверитьЛегальностьПолученияОбновления() Тогда + Отказ = Истина; + КонецЕсли; + + ОбновлениеКонфигурацииКлиентПереопределяемый.ПриПереходеНаСтраницуПомощника(ПредыдущаяСтраница, СледующаяСтраница, Отказ); + +КонецПроцедуры + &НаКлиенте Функция ОбработатьСтраницуДоступноеОбновление(ВыдаватьСообщения = Истина) Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы; @@ -1669,8 +1757,8 @@ Если НЕ СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().НастройкиОбновления.ЕстьДоступДляОбновления Тогда Предупреждение(НСтр("ru = 'Недостаточно прав для выполнения обновления конфигурации.'")); - Возврат Страницы.ДоступноеОбновление.Имя; - КонецЕсли; + Возврат Страницы.ДоступноеОбновление.Имя; + КонецЕсли; СписокФайловДляПолучения.ЗагрузитьЗначения(СоздатьСписокФайловДляПолучения()); Если ПроверитьФайлыОбновленияПолучены() Тогда @@ -1678,7 +1766,7 @@ ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытияЖурнала, "Информация", НСтр("ru = 'Обнаружено, что файлы обновления конфигурации уже были получены и сохранены локально.'")); Возврат ПерейтиКВыборуРежимаОбновления(Ложь); - КонецЕсли; + КонецЕсли; Возврат Страницы.ДлительнаяОперация.Имя; КонецФункции @@ -1694,7 +1782,7 @@ Функция ОбработатьСтраницуУспешноеОбновление(ВыдаватьСообщения = Истина) Страницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы; Закрыть(); - Возврат Страницы.УспешноеОбновление.Имя; + Возврат Страницы.УспешноеОбновление.Имя; КонецФункции &НаКлиенте @@ -1738,7 +1826,7 @@ КонецПопытки; КонецЕсли; ПолучитьДоступноеОбновлениеИзФайла(?(Объект.НуженФайлОбновления = 1, Объект.ИмяФайлаОбновления, Неопределено),Истина); - Возврат ПерейтиКВыборуРежимаОбновления(Истина); + Возврат ПерейтиКВыборуРежимаОбновления(Истина); КонецФункции @@ -1776,12 +1864,12 @@ Возврат Страницы.ПараметрыАвторизации.Имя; КонецЕсли; - Возврат ПерейтиКВыборуРежимаОбновления(ВыдаватьСообщения); + Возврат ПерейтиКВыборуРежимаОбновления(ВыдаватьСообщения); КонецФункции &НаКлиенте Функция ОбработатьСтраницуДополнительныеНастройки(ВыдаватьСообщения = Истина) - Возврат ПерейтиКВыборуРежимаОбновления(ВыдаватьСообщения); + Возврат ПерейтиКВыборуРежимаОбновления(ВыдаватьСообщения); КонецФункции &НаКлиенте @@ -1804,7 +1892,7 @@ КонецФункции &НаКлиенте -Функция ПолучитьСтруктуруДостуступногоОбновления(ПолучатьРазмерОбновления = Ложь) +Функция ПолучитьСтруктуруДоступногоОбновления(ПолучатьРазмерОбновления = Ложь) Если Объект.ДоступныеОбновления.Количество() = 0 Тогда Возврат Неопределено; @@ -1908,12 +1996,12 @@ Для Каждого Привод Из Приводы Цикл Если Привод.DriveType <> 4 Тогда Продолжить; - КонецЕсли; + КонецЕсли; Если Привод.IsReady Тогда // 4 = CD-ROM drive, http://www.microsoft.com/technet/scriptcenter/guide/sas_scr_czxq.mspx?mfr=true Диск = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Привод.Path); Файл = Новый Файл(Диск + ИмяФайлаАдресовРелизовИТС); Если Файл.Существует() Тогда - Возврат Диск; + Возврат Диск; КонецЕсли; КонецЕсли; Если НЕ ПустаяСтрока(ПутиДискаИТС) Тогда @@ -1926,20 +2014,20 @@ ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытияЖурнала, "Ошибка", НСтр("ru = 'Ошибка при поиске диска 1С:ИТС:'") + " " + ОписаниеОшибки()); - Возврат ""; + Возврат ""; КонецПопытки; Возврат ""; КонецФункции -// Проверка, что файл является дистибутивом обновления. +// Проверка, что файл является дистрибутивом обновления. // // Параметр: // ПутьКФайлу - Строка - путь к файлу. // // Возвращаемое значение: -// Булево - Истина, если файл является дистибутивом обновления. +// Булево - Истина, если файл является дистрибутивом обновления. // &НаКлиенте Функция ЭтоДистрибутивОбновления(Знач ПутьКФайлу) @@ -1953,7 +2041,7 @@ ЭтоФайловаяБаза = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИнформационнаяБазаФайловая; Если ПроверитьДоступКИБ() Тогда Возврат ?(ЭтоФайловаяБаза И НЕ РежимИмитацииКлиентСервернойИБ(), Страницы.ВыборРежимаОбновленияФайл.Имя, - Страницы.ВыборРежимаОбновленияСервер.Имя); + Страницы.ВыборРежимаОбновленияСервер.Имя); Иначе Возврат ?(ЭтоФайловаяБаза, Страницы.ДополнительныеНастройки.Имя, Страницы.ПараметрыАвторизации.Имя); КонецЕсли; @@ -2026,7 +2114,7 @@ ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытияЖурнала, "Ошибка", ТекстСообщения + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ОбнаруженнаяОшибкаПодключения = ТекстСообщения + КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); - КонецПопытки; + КонецПопытки; Если Результат И НЕ ПараметрыРаботыКлиента.ИнформационнаяБазаФайловая Тогда ОбнаруженнаяОшибкаПодключения = ПроверитьДоступККластеру(ПараметрыПодключения); @@ -2074,10 +2162,10 @@ Если Найти(Объект.АдресЭлектроннойПочты, "@") = 0 ИЛИ Найти(Объект.АдресЭлектроннойПочты, ".") = 0 Тогда Если ВыдаватьСообщения Тогда Предупреждение(НСтр("ru = 'Укажите допустимый адрес электронной почты.'")); - КонецЕсли; + КонецЕсли; ТекущийЭлемент = Элементы.ПолеАдресЭлектроннойПочты; Возврат ИмяТекущейСтраницы; - КонецЕсли; + КонецЕсли; Возврат ""; КонецФункции @@ -2131,13 +2219,13 @@ , // DaysOfWeek Pow(2, День(ДатаВремя) - 1), // DaysOfMonth Ложь, // InteractWithDesktop - КодЗадачи); // out JobId + КодЗадачи);// out JobId Если КодОшибки <> 0 Тогда // Коды ошибок: http://msdn2.microsoft.com/en-us/library/aa389389(VS.85).aspx ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытияЖурнала, "Ошибка", НСтр("ru = 'Ошибка при создании задачи планировщика:'") + " " + КодОшибки); Возврат 0; - КонецЕсли; + КонецЕсли; ТекстСообщения = НСтр("ru = 'Задача планировщика успешно запланирована (команда: %1; дата: %2; код задачи: %3).'"); ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытияЖурнала, @@ -2239,20 +2327,20 @@ ФайлСкрипта.Записать(ИмяГлавногоФайлаСкрипта, КодировкаТекста.UTF16); КонецЕсли; - Возврат ИмяГлавногоФайлаСкрипта; + Возврат ИмяГлавногоФайлаСкрипта; КонецФункции &НаКлиенте Функция УстановленWMI(Знач ВыдаватьСообщения = Истина) Попытка - Возврат ОбъектWMI() <> Неопределено; + Возврат ОбъектWMI() <> Неопределено; Исключение ИмяСобытияЖурнала = ОбновлениеКонфигурацииКлиент.СобытиеЖурналаРегистрации(); ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытияЖурнала, "Ошибка", ОписаниеОшибки()); Если ВыдаватьСообщения Тогда - ОткрытьФормуМодально("Обработка.ОбновлениеКонфигурации.Форма.ПредупреждениеWMI"); + ОткрытьФорму("Обработка.ОбновлениеКонфигурации.Форма.ПредупреждениеWMI", , ЭтаФорма); КонецЕсли; - Возврат Ложь; + Возврат Ложь; КонецПопытки; КонецФункции @@ -2304,7 +2392,7 @@ НСтр("ru = 'Ошибка при удалении задачи планировщика:'") + " " + КодОшибки); Возврат Результат; - КонецЕсли; + КонецЕсли; ТекстСообщения = НСтр("ru = 'Задача планировщика успешно удалена (код задачи: %1).'"); ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытияЖурнала, "Информация", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, КодЗадачи)); @@ -2392,7 +2480,7 @@ Новый Структура("ПутьДляСохранения", ? (ПустаяСтрока(ИмяФайла), Неопределено, ИмяФайла))); Если Результат.Статус Тогда Возврат ИмяФайла; - КонецЕсли; + КонецЕсли; Попытка УдалитьФайлы(ИмяФайла); @@ -2446,14 +2534,14 @@ Новый Структура("ПутьДляСохранения", ? (ПустаяСтрока(ИмяФайла), Неопределено, ИмяФайла))); Если Результат.Статус Тогда Возврат ИмяФайла; - КонецЕсли; + КонецЕсли; Попытка УдалитьФайлы(ИмяФайла); Исключение ТекстСообщения = НСтр("ru = 'Ошибка при удалении временного файла %1 |%2'"); - ИмяСобытияЖурнала = ОбновлениеКонфигурацииКлиент.СобытиеЖурналаРегистрации(); + ИмяСобытияЖурнала = ОбновлениеКонфигурацииКлиент.СобытиеЖурналаРегистрации(); ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(ИмяСобытияЖурнала, "Ошибка", СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, ИмяФайла, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()))); @@ -2471,7 +2559,7 @@ ИмяФайла); Если Результат Тогда Возврат ИмяФайла; - КонецЕсли; + КонецЕсли; Попытка УдалитьФайлы(ИмяФайла); @@ -2531,14 +2619,14 @@ КонецЕсли; КороткоеИмяКонфигурации = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().НастройкиОбновления.КороткоеИмяКонфигурации; - КороткоеИмяКонфигурации = СтрЗаменить(КороткоеИмяКонфигурации, "/", "\"); + КороткоеИмяКонфигурации = СтрЗаменить(КороткоеИмяКонфигурации, "/", "\"); КороткоеИмяКонфигурации = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КороткоеИмяКонфигурации); Результат = СтрЗаменить(ДоступноеОбновление.ПутьКФайлуОбновления, "/", "\"); Результат = ОбновлениеКонфигурацииКлиент.ПолучитьКаталогФайла(Результат); Результат = СтрЗаменить(Результат, "_", "."); Если Объект.ИсточникОбновления = 1 Тогда Результат = "ITS\" + КороткоеИмяКонфигурации + Результат; - КонецЕсли; + КонецЕсли; Результат = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Результат); Возврат Результат; @@ -2557,7 +2645,7 @@ Если НЕ ЭтоДистрибутивОбновления(Обновление.ПутьКЛокальномуФайлу) Тогда Обновление.ПутьКЛокальномуФайлуОбновления = ?(ПустаяСтрока(Обновление.ПутьКЛокальномуФайлуОбновления), Обновление.ПутьКЛокальномуФайлу, Обновление.ПутьКЛокальномуФайлуОбновления); - Продолжить; + Продолжить; КонецЕсли; Попытка @@ -2626,9 +2714,9 @@ ВерсияКонфигурации, АдресФайлаВоВремХранилище, СообщенияДляЖурналаРегистрации); Исключение Если ВыдаватьСообщения Тогда - Предупреждение(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + Предупреждение(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); КонецЕсли; - КонецПопытки; + КонецПопытки; КонецПроцедуры @@ -2657,7 +2745,7 @@ Предупреждение(ТекстОшибки); КонецЕсли; Возврат ТекстОшибки; - КонецЕсли; + КонецЕсли; Если НЕ ФайлСуществуетНаКлиенте(ПутьКФайлуСпискаШаблонов) Тогда Возврат НСтр("ru = 'Файл не существует:'") + " " + ПутьКФайлуСпискаШаблонов; @@ -2751,7 +2839,7 @@ Если НЕ Файл.Значение.Получен И Файл.Значение.Обязательный Тогда Возврат Страницы.ПодключениеКСайту.Имя; - КонецЕсли; + КонецЕсли; Иначе // Вывод сообщения в журнал регистрации о копировании файла. Сообщение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -2762,7 +2850,7 @@ Файл.Значение.Получен = ОбновлениеКонфигурацииКлиент.СкопироватьФайл( Файл.Значение.Адрес, Файл.Значение.ЛокальныйПуть, Файл.Значение.Обязательный И ВыдаватьСообщения); КонецЕсли; - КонецЕсли; + КонецЕсли; НомерФайла = НомерФайла + 1; КонецЦикла; @@ -2858,7 +2946,7 @@ Возврат Страницы.МестоположениеДискаИТС.Имя; КонецЕсли; ТекущийДискИТС = ДискИТС; - КонецЕсли; + КонецЕсли; ПутьКФайламОбновленияНаДискеИТС = ""; ПереченьРелизовНаДискахИТС = ""; @@ -2937,7 +3025,7 @@ Возврат Страницы.ОбновленияНеОбнаружено.Имя; КонецЕсли; - // Получение файла описания обновлений выполняется только ести вставлен последний в цепочке диск ИТС + // Получение файла описания обновлений выполняется только если вставлен последний в цепочке диск ИТС Если Объект.ДоступныеОбновления.Количество() > 0 И ПоследняяВерсияКонфигурации = Объект.ДоступныеОбновления[Объект.ДоступныеОбновления.Количество()-1].Версия Тогда ИмяФайлаИнформацияОбОбновлении = ПолучитьФайлОписанияОбновленияИТС(); @@ -2990,7 +3078,7 @@ КонецЕсли; ПолучитьДоступноеОбновлениеИзФайла(?(Объект.НуженФайлОбновления = 1, Объект.ИмяФайлаОбновления, Неопределено)); - Возврат ПерейтиКВыборуРежимаОбновления(Ложь); + Возврат ПерейтиКВыборуРежимаОбновления(Ложь); КонецФункции @@ -3048,8 +3136,7 @@ ОбновлениеЗапланировано, ОбновлениеВыполнено, РезультатОбновления, - СообщенияДляЖурналаРегистрации - ); + СообщенияДляЖурналаРегистрации); КонецПроцедуры @@ -3072,4 +3159,3 @@ Возврат Неопределено; КонецПопытки; КонецФункции - diff --git a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Help/ru.html b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Help/ru.html index 070ffadda..03cc2608e 100644 --- a/SSL/src/DataProcessors/ОбновлениеКонфигурации/Help/ru.html +++ b/SSL/src/DataProcessors/ОбновлениеКонфигурации/Help/ru.html @@ -1,4 +1,4 @@ - +

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

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

                Получение обновлений через Интернет

                diff --git a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/АвтоматическийЭкспортЗамеровПроизводительности/Module.bsl b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/АвтоматическийЭкспортЗамеровПроизводительности/Module.bsl index 913a00892..e164ae536 100644 --- a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/АвтоматическийЭкспортЗамеровПроизводительности/Module.bsl +++ b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/АвтоматическийЭкспортЗамеровПроизводительности/Module.bsl @@ -95,8 +95,7 @@ СообщениеТекст, , ПутьЭлемент.Имя, - ПутьЭлемент.ПутьКДанным - ); + ПутьЭлемент.ПутьКДанным); ОшибокНет = Ложь; КонецЕсли; КонецЦикла; @@ -145,7 +144,7 @@ &НаСервереБезКонтекста Функция КаталогиЭкспортаОценкиПроизводительности() - Задание = РегламетноеЗаданиеЭкспортаОценкиПроизводительности(); + Задание = РегламентноеЗаданиеЭкспортаОценкиПроизводительности(); Каталоги = Новый Структура; Если Задание.Параметры.Количество() > 0 Тогда Каталоги = Задание.Параметры[0]; @@ -163,7 +162,7 @@ &НаСервереБезКонтекста Процедура УстановитьКаталогЭкспорта(ВыполнятьЛокальныйКаталогЭкспорта, ВыполнятьFTPКаталогЭкспорта) - Задание = РегламетноеЗаданиеЭкспортаОценкиПроизводительности(); + Задание = РегламентноеЗаданиеЭкспортаОценкиПроизводительности(); Каталоги = Новый Структура(); @@ -188,7 +187,7 @@ &НаСервереБезКонтекста Функция ВыполнятьРегламентноеЗадание() - Задание = РегламетноеЗаданиеЭкспортаОценкиПроизводительности(); + Задание = РегламентноеЗаданиеЭкспортаОценкиПроизводительности(); Возврат Задание.Использование; КонецФункции @@ -204,7 +203,7 @@ &НаСервереБезКонтекста Функция УстановитьИспользованиеРегламентногоЗадания(НовоеЗначение) - Задание = РегламетноеЗаданиеЭкспортаОценкиПроизводительности(); + Задание = РегламентноеЗаданиеЭкспортаОценкиПроизводительности(); ТекущееСостояние = Задание.Использование; Если ТекущееСостояние <> НовоеЗначение Тогда Задание.Использование = НовоеЗначение; @@ -223,7 +222,7 @@ &НаСервереБезКонтекста Функция РасписаниеЭкспортаОценкиПроизводительности() - Задание = РегламетноеЗаданиеЭкспортаОценкиПроизводительности(); + Задание = РегламентноеЗаданиеЭкспортаОценкиПроизводительности(); Возврат Задание.Расписание; КонецФункции @@ -231,12 +230,12 @@ // Устанавливает новое расписание регламентному заданию // // Параметры: -// НовоеРасписание - РасписаниеРегламентногоЗадания, которе надо установить +// НовоеРасписание - РасписаниеРегламентногоЗадания, которое надо установить // &НаСервереБезКонтекста Процедура УстановитьРасписание(Знач НовоеРасписание) - Задание = РегламетноеЗаданиеЭкспортаОценкиПроизводительности(); + Задание = РегламентноеЗаданиеЭкспортаОценкиПроизводительности(); Задание.Расписание = НовоеРасписание; ЗафиксироватьРегламентноеЗадание(Задание); @@ -248,16 +247,14 @@ // РегламентноеЗадание - РегламентноеЗадание.ЭкспортОценкиПроизводительности, найденное задание // &НаСервереБезКонтекста -Функция РегламетноеЗаданиеЭкспортаОценкиПроизводительности() +Функция РегламентноеЗаданиеЭкспортаОценкиПроизводительности() УстановитьПривилегированныйРежим(Истина); Задания = РегламентныеЗадания.ПолучитьРегламентныеЗадания( - Новый Структура("Метаданные", "ЭкспортОценкиПроизводительности") - ); + Новый Структура("Метаданные", "ЭкспортОценкиПроизводительности")); Если Задания.Количество() = 0 Тогда Задание = РегламентныеЗадания.СоздатьРегламентноеЗадание( - Метаданные.РегламентныеЗадания.ЭкспортОценкиПроизводительности - ); + Метаданные.РегламентныеЗадания.ЭкспортОценкиПроизводительности); Задание.Записать(); Возврат Задание; Иначе diff --git a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ИсторияВыполнения/Form.form b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ИсторияВыполнения/Form.form index 9910b07f4..46fbbce48 100644 --- a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ИсторияВыполнения/Form.form +++ b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ИсторияВыполнения/Form.form @@ -648,7 +648,7 @@ OnCreateAtServer ПриСозданииНаСервере
                - DontBlock + LockOwner true true Vertical diff --git a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/Форма/Form.form b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/Форма/Form.form index d1185efe5..a8dc37c54 100644 --- a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/Форма/Form.form @@ -802,6 +802,10 @@ Left true + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии diff --git a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/Форма/Module.bsl index 0223fa1ec..d91a5e2e9 100644 --- a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/Форма/Module.bsl @@ -1,4 +1,3 @@ - /////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -29,6 +28,47 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.ОценкаПроизводительности.Форма.ФормаОтбора") Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + ОбновитьПоказатели(ВыбранноеЗначение); + КонецЕсли; + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.КлючевыеОперации.Форма.ФормаВыбора") Тогда + + ТЧ = Объект.Производительность; + + ТекущаяСтрока = Элементы.Производительность.ТекущиеДанные; + Если ВыбранноеЗначение = Неопределено Тогда + Если ТекущаяСтрока = Неопределено ИЛИ ЗначениеЗаполнено(ТекущаяСтрока.КлючеваяОперация) Тогда + Возврат; + КонецЕсли; + ТЧ.Удалить(ТекущаяСтрока.НомерСтроки - 1); + Возврат; + КонецЕсли; + + ПредопределенныйЭлемент = ПредопределенноеЗначение("Справочник.КлючевыеОперации.ОбщаяПроизводительностьСистемы"); + ТекущаяСтрока.КлючеваяОперация = ВыбранноеЗначение.КлючеваяОперация; + ТекущаяСтрока.ЦелевоеВремя = ВыбранноеЗначение.ЦелевоеВремя; + ТекущаяСтрока.Приоритет = ВыбранноеЗначение.Приоритет; + + ТЧ.Сортировать("Приоритет"); + МассивСтрок = ТЧ.НайтиСтроки(Новый Структура("КлючеваяОперация", ПредопределенныйЭлемент)); + Если МассивСтрок.Количество() > 0 Тогда + ТекущийИндекс = ТЧ.Индекс(МассивСтрок[0]); + ТЧ.Сдвинуть(ТекущийИндекс, ТЧ.Количество() - 1 - ТекущийИндекс); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + &НаКлиенте Процедура ПроизводительностьПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) @@ -109,11 +149,10 @@ НастройкиИстории = Новый Структура("КлючеваяОперация, ДатаНачала, ДатаОкончания", СтрокаТЧ.КлючеваяОперация, НачалоПериода, ОкончаниеПериода); ПараметрыОткрытия = Новый Структура("НастройкиИстории", НастройкиИстории); - ОткрытьФормуМодально("Обработка.ОценкаПроизводительности.Форма.ИсторияВыполнения", ПараметрыОткрытия); + ОткрытьФорму("Обработка.ОценкаПроизводительности.Форма.ИсторияВыполнения", ПараметрыОткрытия, ЭтаФорма); КонецПроцедуры - /////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ @@ -196,7 +235,7 @@ &НаКлиенте Процедура Настройка(Команда) - ОткрытьФормуМодально("Обработка.ОценкаПроизводительности.Форма.АвтоматическийЭкспортЗамеровПроизводительности"); + ОткрытьФорму("Обработка.ОценкаПроизводительности.Форма.АвтоматическийЭкспортЗамеровПроизводительности", , ЭтаФорма); КонецПроцедуры @@ -243,13 +282,7 @@ &НаКлиенте Процедура УстановитьОтбор(Команда) - ЗначенияОтбора = ОткрытьФормуМодально("Обработка.ОценкаПроизводительности.Форма.ФормаОтбора"); - - Если ЗначенияОтбора = Неопределено Тогда - Возврат; - КонецЕсли; - - ОбновитьПоказатели(ЗначенияОтбора); + ОткрытьФорму("Обработка.ОценкаПроизводительности.Форма.ФормаОтбора", , ЭтаФорма); КонецПроцедуры @@ -307,7 +340,7 @@ // Вычисляет целевое время для указанного значения APDEX // // Параметры: -// КлючеваяОперация - СправочникСсылка.КлючевыеОперации, ключевая операция, для которой следует рассчетать целевое время +// КлючеваяОперация - СправочникСсылка.КлючевыеОперации, ключевая операция, для которой следует рассчитать целевое время // ЗначениеAPDEX - Число, APDEX, для которого необходимо подобрать целевое время // ИндексПериода - Число, индекс периода, для которого будет вычислено целевое время // @@ -341,7 +374,7 @@ ПараметрыВычисления.ВыводитьИтоги = Ложь; ЦелевоеВремя = 0.01; - ПредыдущеецелевоеВремя = ЦелевоеВремя; + ПредыдущееЦелевоеВремя = ЦелевоеВремя; ШагСекунд = 1; Пока Истина Цикл @@ -353,7 +386,7 @@ Если ЗначениеAPDEXРассчитанное < ЗначениеAPDEX Тогда - ПредыдущеецелевоеВремя = ЦелевоеВремя; + ПредыдущееЦелевоеВремя = ЦелевоеВремя; ЦелевоеВремя = ЦелевоеВремя + ШагСекунд; ИначеЕсли ЗначениеAPDEXРассчитанное > ЗначениеAPDEX Тогда @@ -476,7 +509,7 @@ // КолонкиТаблицаКлючевыхОпераций - КоллекцияКолонокТаблицыЗначений, список колонок, которые необходимо создать // // Возвращаемое значение: -// Массив - Массив реквизтов формы +// Массив - Массив реквизитов формы // &НаСервереБезКонтекста Функция ДобавляемыеРеквизиты(КолонкиТаблицаКлючевыхОпераций) @@ -503,7 +536,7 @@ // и удаляет элементы формы связанные с реквизитами // // Возвращаемое значение: -// Массив - Массив реквизтов формы +// Массив - Массив реквизитов формы // &НаСервереБезКонтекста Функция УдаляемыеРеквизиты(РеквизитыОбъекта) @@ -887,8 +920,8 @@ // // Параметры: // ИмяФайлаОписания - Строка, имя файла для размещения описания -// Начало - ДатаВермя, начало периода экспорта -// Конец - ДатаВремя, конец периода экспорта +// Начало - Дата и время, начало периода экспорта +// Конец - Дата и время, конец периода экспорта // &НаСервереБезКонтекста Процедура ЗаполнитьОписание(ИмяФайлаОписания, Начало, Конец, МассивКлючевыхОпераций) @@ -963,7 +996,7 @@ Приоритет1 = Врем[ТекущийИндекс].Приоритет; Приоритет2 = Врем[ТекущийИндекс + НаправлениеСдвига].Приоритет; - ОбментятьПриоритеты( + ОбменятьПриоритеты( Врем[ТекущийИндекс].КлючеваяОперация, Приоритет1, Врем[ТекущийИндекс + НаправлениеСдвига].КлючеваяОперация, @@ -1038,7 +1071,7 @@ // Приоритет2 - Число, будет присвоен КлючеваяОперация1 // &НаСервере -Процедура ОбментятьПриоритеты(КлючеваяОперация1, Приоритет1, КлючеваяОперация2, Приоритет2) +Процедура ОбменятьПриоритеты(КлючеваяОперация1, Приоритет1, КлючеваяОперация2, Приоритет2) НачатьТранзакцию(); @@ -1056,7 +1089,7 @@ КонецПроцедуры // Процедура открывает форму выбора справочника КлючевыеОперации -// и устанавливает отбор, чтобы в списке небыло операций которые уже выбраны +// и устанавливает отбор, чтобы в списке не было операций которые уже выбраны // &НаКлиенте Процедура ОткрытьФормуВыбора() @@ -1068,31 +1101,11 @@ Отбор.Добавить(ТЧ[а].КлючеваяОперация); КонецЦикла; - Структура = Новый Структура("Отбор"); - Структура.Отбор = Отбор; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Отбор", Отбор); + ПараметрыФормы.Вставить("РежимВыбора", Истина); - РезультатВыбора = ОткрытьФормуМодально("Справочник.КлючевыеОперации.ФормаВыбора", Структура, ЭтаФорма); - - ТекущаяСтрока = Элементы.Производительность.ТекущиеДанные; - Если РезультатВыбора = Неопределено Тогда - Если ТекущаяСтрока = Неопределено ИЛИ ЗначениеЗаполнено(ТекущаяСтрока.КлючеваяОперация) Тогда - Возврат; - КонецЕсли; - ТЧ.Удалить(ТекущаяСтрока.НомерСтроки - 1); - Возврат; - КонецЕсли; - - ПредопределенныйЭлемент = ПредопределенноеЗначение("Справочник.КлючевыеОперации.ОбщаяПроизводительностьСистемы"); - ТекущаяСтрока.КлючеваяОперация = РезультатВыбора.КлючеваяОперация; - ТекущаяСтрока.ЦелевоеВремя = РезультатВыбора.ЦелевоеВремя; - ТекущаяСтрока.Приоритет = РезультатВыбора.Приоритет; - - ТЧ.Сортировать("Приоритет"); - МассивСтрок = ТЧ.НайтиСтроки(Новый Структура("КлючеваяОперация", ПредопределенныйЭлемент)); - Если МассивСтрок.Количество() > 0 Тогда - ТекущийИндекс = ТЧ.Индекс(МассивСтрок[0]); - ТЧ.Сдвинуть(ТекущийИндекс, ТЧ.Количество() - 1 - ТекущийИндекс); - КонецЕсли; + ОткрытьФорму("Справочник.КлючевыеОперации.ФормаВыбора", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -1124,7 +1137,7 @@ КонецПроцедуры -// Вычисляет точные дату начала и окончания на выбранном отрезкпе +// Вычисляет точные дату начала и окончания на выбранном отрезке // // Параметры: // ДатаНачала [OUT] - Дата, дата начала выбранного периода @@ -1158,10 +1171,10 @@ КонецФункции -// Создает таблицу значения, которая необходима для рассчета APDEX +// Создает таблицу значения, которая необходима для расчета APDEX // // Возвращаемое значение: -// ТаблицаЗначений - таблица значений со структурой необходимой для рассчета APDEX +// ТаблицаЗначений - таблица значений со структурой необходимой для расчета APDEX // &НаСервереБезКонтекста Функция ТаблицаКлючевыхОперацийДляВычисленияAPDEX() @@ -1169,16 +1182,13 @@ ТаблицаКлючевыхОпераций = Новый ТаблицаЗначений; ТаблицаКлючевыхОпераций.Колонки.Добавить( "КлючеваяОперация", - Новый ОписаниеТипов("СправочникСсылка.КлючевыеОперации") - ); + Новый ОписаниеТипов("СправочникСсылка.КлючевыеОперации")); ТаблицаКлючевыхОпераций.Колонки.Добавить( "Приоритет", - Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 0, ДопустимыйЗнак.Неотрицательный)) - ); + Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 0, ДопустимыйЗнак.Неотрицательный))); ТаблицаКлючевыхОпераций.Колонки.Добавить( "ЦелевоеВремя", - Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Неотрицательный)) - ); + Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Неотрицательный))); Возврат ТаблицаКлючевыхОпераций; @@ -1188,13 +1198,13 @@ /////////////////////////////////////////////////////////////////////// // ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ (ОФОРМЛЕНИЕ, НАСТРОЙКИ) -// Функция возвращает цвет значения Неприемлимо +// Функция возвращает цвет значения Неприемлемо // // Возвращаемое значение: // Цвет - цвет значения // &НаСервереБезКонтекста -Функция ЦветНеприемлимо() +Функция ЦветНеприемлемо() Возврат Новый Цвет(187, 187, 187); @@ -1263,8 +1273,8 @@ Значения = Новый Структура("От, До, Цвет"); Значения.От = 0.001; // 0 означает что операция не выполнялась вообще Значения.До = 0.5; - Значения.Цвет = ЦветНеприемлимо(); - Соответствие.Вставить("Неприемлимо", Значения); + Значения.Цвет = ЦветНеприемлемо(); + Соответствие.Вставить("Неприемлемо", Значения); Значения = Новый Структура("От, До, Цвет"); Значения.От = 0.5; @@ -1296,7 +1306,7 @@ // Функция проверяет правильность настроек формы // -// Возварщаемое значение: +// Возвращаемое значение: // Истина - настройки верны // Ложь - Настройки не верны // @@ -1314,8 +1324,7 @@ НСтр("ru = 'Целевое время обязательно должно быть заполнено.'"), , "Производительность[" + Объект.Производительность.Индекс(СтрокаТЧ) + "].ЦелевоеВремя", - "Объект" - ); + "Объект"); Выполнена = Ложь; Прервать; @@ -1327,7 +1336,7 @@ КонецФункции -// Процедура при первом открытии офрмы обработки заполняет +// Процедура при первом открытии формы обработки заполняет // ТЧ "Производительность" из справочника "КлючевыеОперации" // &НаСервереБезКонтекста @@ -1364,7 +1373,7 @@ // Меняет целевое время ключевой операции // // Параметры: -// КлючеваяОперация - СправочникСсылка.КлючевыеОперации, операция, у которой необходимо изменить целеове время +// КлючеваяОперация - СправочникСсылка.КлючевыеОперации, операция, у которой необходимо изменить целевое время // ЦелевоеВремя - Число, новое целевое время // &НаСервере @@ -1438,4 +1447,3 @@ КонецЦикла; КонецПроцедуры - diff --git a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ФормаОтбора/Form.form b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ФормаОтбора/Form.form index aeb618e26..ea23888d6 100644 --- a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ФормаОтбора/Form.form +++ b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ФормаОтбора/Form.form @@ -20,7 +20,7 @@ Надпись1РасширеннаяПодсказка - 25 + 27 Label true true @@ -61,7 +61,7 @@ НаправлениеРасширеннаяПодсказка - 27 + 29 Label true true @@ -119,7 +119,7 @@ Надпись2РасширеннаяПодсказка - 29 + 31 Label true true @@ -160,7 +160,7 @@ СостояниеРасширеннаяПодсказка - 31 + 33 Label true true @@ -217,7 +217,7 @@ Группа1РасширеннаяПодсказка - 24 + 26 Label true true @@ -247,7 +247,7 @@ УсловиеРасширеннаяПодсказка - 33 + 35 Label true true @@ -276,6 +276,8 @@ Normal
                + Bottom + true ФормаКоманднаяПанель -1 @@ -289,7 +291,7 @@ ОКРасширеннаяПодсказка - 23 + 24 Label true true @@ -305,9 +307,35 @@ UserCmds Auto
                - Left + + ФормаОтмена + 23 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 25 + Label + true + true + + Left + + + Form.StandardCommand.Cancel + Normal + Auto + true + true + UserCmds + Auto + + Right - DontBlock + LockOwner true true true diff --git a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ФормаОтбора/Module.bsl b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ФормаОтбора/Module.bsl index ec432a92a..54f4b4c50 100644 --- a/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ФормаОтбора/Module.bsl +++ b/SSL/src/DataProcessors/ОценкаПроизводительности/Forms/ФормаОтбора/Module.bsl @@ -1,21 +1,5 @@ - -/////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ СОБЫТИЙ КОМАНД - -&НаКлиенте -Процедура ОК(Команда) - - Структура = Новый Структура("Направление, Состояние"); - Структура.Направление = Направление; - Структура.Состояние = Состояние; - - ЭтаФорма.Закрыть(Структура); - -КонецПроцедуры - - -/////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ &НаКлиенте Процедура НаправлениеПриИзменении(Элемент) @@ -31,9 +15,22 @@ КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ -/////////////////////////////////////////////////////////////////////// -// ВСПОМОГАТЕЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +&НаКлиенте +Процедура ОК(Команда) + + РезультатВыбора = Новый Структура("Направление, Состояние"); + РезультатВыбора.Направление = Направление; + РезультатВыбора.Состояние = Состояние; + + ОповеститьОВыборе(РезультатВыбора); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ &НаКлиенте Процедура СформироватьУсловие() @@ -59,4 +56,3 @@ КонецЕсли; КонецПроцедуры - diff --git a/SSL/src/DataProcessors/ОценкаПроизводительности/Help/ru.html b/SSL/src/DataProcessors/ОценкаПроизводительности/Help/ru.html index aa83b61e1..6b981c211 100644 --- a/SSL/src/DataProcessors/ОценкаПроизводительности/Help/ru.html +++ b/SSL/src/DataProcessors/ОценкаПроизводительности/Help/ru.html @@ -1,4 +1,4 @@ - +

                Интерпретация полученных значений APDEX:

            Настройка

            Шкала APDEX

            diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/НастройкиПользователейИПрав/CommandModule.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/НастройкиПользователейИПрав/CommandModule.bsl index fa5f2f88f..51476f1d6 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/НастройкиПользователейИПрав/CommandModule.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/НастройкиПользователейИПрав/CommandModule.bsl @@ -9,7 +9,6 @@ Новый Структура, ПараметрыВыполненияКоманды.Источник, "Обработка.ПанельАдминистрированияБСП.Форма.НастройкиПользователейИПрав" + ?(ПараметрыВыполненияКоманды.Окно = Неопределено, ".ОтдельноеОкно", ""), - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/НастройкиРаботыСФайлами/CommandModule.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/НастройкиРаботыСФайлами/CommandModule.bsl index e4cd97f83..df4d259d0 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/НастройкиРаботыСФайлами/CommandModule.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/НастройкиРаботыСФайлами/CommandModule.bsl @@ -9,7 +9,6 @@ Новый Структура, ПараметрыВыполненияКоманды.Источник, "Обработка.ПанельАдминистрированияБСП.Форма.НастройкиРаботыСФайлами" + ?(ПараметрыВыполненияКоманды.Окно = Неопределено, ".ОтдельноеОкно", ""), - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ОбщиеНастройки/CommandModule.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ОбщиеНастройки/CommandModule.bsl index 1d89d7331..a42afd8e2 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ОбщиеНастройки/CommandModule.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ОбщиеНастройки/CommandModule.bsl @@ -9,7 +9,6 @@ Новый Структура, ПараметрыВыполненияКоманды.Источник, "Обработка.ПанельАдминистрированияБСП.Форма.ОбщиеНастройки" + ?(ПараметрыВыполненияКоманды.Окно = Неопределено, ".ОтдельноеОкно", ""), - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/Органайзер/CommandModule.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/Органайзер/CommandModule.bsl index 4d6b1d6e3..3b1f9fa52 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/Органайзер/CommandModule.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/Органайзер/CommandModule.bsl @@ -9,7 +9,6 @@ Новый Структура, ПараметрыВыполненияКоманды.Источник, "Обработка.ПанельАдминистрированияБСП.Форма.Органайзер" + ?(ПараметрыВыполненияКоманды.Окно = Неопределено, ".ОтдельноеОкно", ""), - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ПечатныеФормыОтчетыИОбработки/CommandModule.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ПечатныеФормыОтчетыИОбработки/CommandModule.bsl index fc404a437..1e279c3fe 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ПечатныеФормыОтчетыИОбработки/CommandModule.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ПечатныеФормыОтчетыИОбработки/CommandModule.bsl @@ -9,7 +9,6 @@ Новый Структура, ПараметрыВыполненияКоманды.Источник, "Обработка.ПанельАдминистрированияБСП.Форма.ПечатныеФормыОтчетыИОбработки" + ?(ПараметрыВыполненияКоманды.Окно = Неопределено, ".ОтдельноеОкно", ""), - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ПоддержкаИОбслуживание/CommandModule.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ПоддержкаИОбслуживание/CommandModule.bsl index 7c6187d87..8e866e38f 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ПоддержкаИОбслуживание/CommandModule.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/ПоддержкаИОбслуживание/CommandModule.bsl @@ -9,7 +9,6 @@ Новый Структура, ПараметрыВыполненияКоманды.Источник, "Обработка.ПанельАдминистрированияБСП.Форма.ПоддержкаИОбслуживание" + ?(ПараметрыВыполненияКоманды.Окно = Неопределено, ".ОтдельноеОкно", ""), - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/СинхронизацияДанных/CommandModule.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/СинхронизацияДанных/CommandModule.bsl index 665333ff0..e5fcef071 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/СинхронизацияДанных/CommandModule.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/СинхронизацияДанных/CommandModule.bsl @@ -9,7 +9,6 @@ Новый Структура, ПараметрыВыполненияКоманды.Источник, "Обработка.ПанельАдминистрированияБСП.Форма.СинхронизацияДанных" + ?(ПараметрыВыполненияКоманды.Окно = Неопределено, ".ОтдельноеОкно", ""), - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/СинхронизацияДанныхВМоделиСервиса/CommandModule.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/СинхронизацияДанныхВМоделиСервиса/CommandModule.bsl index a2be73791..5044fe5f9 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/СинхронизацияДанныхВМоделиСервиса/CommandModule.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Commands/СинхронизацияДанныхВМоделиСервиса/CommandModule.bsl @@ -11,8 +11,7 @@ Новый Структура, ПараметрыВыполненияКоманды.Источник, "Обработка.ПанельАдминистрированияБСП.Форма.СинхронизацияДанныхДляАдминистратораАбонента" + ?(ПараметрыВыполненияКоманды.Окно = Неопределено, ".ОтдельноеОкно", ""), - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); Иначе ОткрытьФорму( @@ -20,8 +19,7 @@ Новый Структура, ПараметрыВыполненияКоманды.Источник, "Обработка.ПанельАдминистрированияБСП.Форма.СинхронизацияДанныхДляАдминистратораСервиса" + ?(ПараметрыВыполненияКоманды.Окно = Неопределено, ".ОтдельноеОкно", ""), - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецЕсли; diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Form.form b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Form.form index 7b9b11ca8..1e2c6b994 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Form.form +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Form.form @@ -17,7 +17,7 @@ ОписаниеРазделаРасширеннаяПодсказка - 2031 + 2038 Label true true @@ -59,7 +59,7 @@ Декорация1РасширеннаяПодсказка - 2032 + 2039 Label true true @@ -93,7 +93,7 @@ СправкаРасширеннаяПодсказка - 2034 + 2041 Label true true @@ -126,7 +126,7 @@ false ГруппаСправкаРасширеннаяПодсказка - 2033 + 2040 Label true true @@ -154,7 +154,7 @@ ГруппаЗаголовокРасширеннаяПодсказка - 2030 + 2037 Label true true @@ -187,7 +187,7 @@ ОткрытьПользователиРасширеннаяПодсказка - 2037 + 2044 Label true true @@ -218,7 +218,7 @@ ПояснениеПользователиРасширеннаяПодсказка - 2038 + 2045 Label true true @@ -258,7 +258,7 @@ false ГруппаПользователиРасширеннаяПодсказка - 2036 + 2043 Label true true @@ -301,7 +301,7 @@ ИспользоватьГруппыПользователейРасширеннаяПодсказка - 2040 + 2047 Label true true @@ -335,7 +335,7 @@ ПояснениеИспользоватьГруппыПользователейРасширеннаяПодсказка - 2042 + 2049 Label true true @@ -375,7 +375,7 @@ false ГруппаГруппыПользователейРасширеннаяПодсказка - 2039 + 2046 Label true true @@ -410,7 +410,7 @@ false Группа3РасширеннаяПодсказка - 2035 + 2042 Label true true @@ -448,7 +448,7 @@ ОткрытьГруппыДоступаРасширеннаяПодсказка - 2046 + 2053 Label true true @@ -479,7 +479,7 @@ ПояснениеГруппыДоступаРасширеннаяПодсказка - 2047 + 2054 Label true true @@ -519,7 +519,7 @@ false ГруппаГруппыДоступаРасширеннаяПодсказка - 2045 + 2052 Label true true @@ -550,7 +550,7 @@ ОткрытьПрофилиГруппДоступаРасширеннаяПодсказка - 2049 + 2056 Label true true @@ -581,7 +581,7 @@ ПояснениеПрофилиГруппДоступаРасширеннаяПодсказка - 2050 + 2057 Label true true @@ -621,7 +621,7 @@ false ГруппаПрофилиГруппДоступаРасширеннаяПодсказка - 2048 + 2055 Label true true @@ -655,7 +655,7 @@ Группа7РасширеннаяПодсказка - 2044 + 2051 Label true true @@ -698,7 +698,7 @@ ОграничиватьДоступНаУровнеЗаписейРасширеннаяПодсказка - 2052 + 2059 Label true true @@ -732,7 +732,7 @@ ПояснениеОграничиватьДоступНаУровнеЗаписейРасширеннаяПодсказка - 2054 + 2061 Label true true @@ -773,7 +773,7 @@ false ГруппаОграничиватьДоступНаУровнеЗаписейРасширеннаяПодсказка - 2051 + 2058 Label true true @@ -808,7 +808,7 @@ false Группа4РасширеннаяПодсказка - 2043 + 2050 Label true true @@ -843,7 +843,7 @@ КопированиеНастроекПользователейРасширеннаяПодсказка - 2057 + 2064 Label true true @@ -874,7 +874,7 @@ ПояснениеКопированиеНастроекПользователейРасширеннаяПодсказка - 2058 + 2065 Label true true @@ -906,7 +906,7 @@ false ГруппаКопированиеНастроекПользователейРасширеннаяПодсказка - 2056 + 2063 Label true true @@ -937,7 +937,7 @@ НастройкиПользователейРасширеннаяПодсказка - 2060 + 2067 Label true true @@ -968,7 +968,7 @@ ПояснениеНастройкиПользователейРасширеннаяПодсказка - 2061 + 2068 Label true true @@ -1000,7 +1000,7 @@ false ГруппаНастройкиПользователейРасширеннаяПодсказка - 2059 + 2066 Label true true @@ -1035,7 +1035,7 @@ false Группа5РасширеннаяПодсказка - 2055 + 2062 Label true true @@ -1066,7 +1066,7 @@ ОчисткаНастроекПользователейРасширеннаяПодсказка - 2063 + 2070 Label true true @@ -1097,7 +1097,7 @@ ПояснениеОчисткаНастроекПользователейРасширеннаяПодсказка - 2064 + 2071 Label true true @@ -1129,7 +1129,7 @@ false ГруппаОчисткаНастроекПользователейРасширеннаяПодсказка - 2062 + 2069 Label true true @@ -1176,7 +1176,7 @@ ИспользоватьВнешнихПользователейРасширеннаяПодсказка - 2067 + 2074 Label true true @@ -1210,7 +1210,7 @@ ПояснениеИспользоватьВнешнихПользователейРасширеннаяПодсказка - 2069 + 2076 Label true true @@ -1250,7 +1250,7 @@ false ГруппаИспользоватьВнешнихПользователейРасширеннаяПодсказка - 2066 + 2073 Label true true @@ -1273,7 +1273,7 @@ 855 СправочникВнешниеПользователи - 2021 + 2031 true true @@ -1281,7 +1281,7 @@ СправочникВнешниеПользователиРасширеннаяПодсказка - 2071 + 2078 Label true true @@ -1312,7 +1312,7 @@ ПояснениеСправочникВнешниеПользователиРасширеннаяПодсказка - 2072 + 2079 Label true true @@ -1352,7 +1352,7 @@ false ГруппаСправочникВнешниеПользователиРасширеннаяПодсказка - 2070 + 2077 Label true true @@ -1387,7 +1387,7 @@ false Группа6РасширеннаяПодсказка - 2065 + 2072 Label true true @@ -1406,6 +1406,132 @@ Auto + + ГруппаПубликацияБазы + 2032 + + АдресПубликацииИнформационнойБазыВИнтернете + 2033 + true + true + + true + + + НаборКонстант.АдресПубликацииИнформационнойБазыВИнтернете + + Top + + OnChange + АдресПубликацииИнформационнойБазыВИнтернетеПриИзменении + + + АдресПубликацииИнформационнойБазыВИнтернетеРасширеннаяПодсказка + 2081 + Label + true + true + + Left + + + + АдресПубликацииИнформационнойБазыВИнтернетеКонтекстноеМеню + 2034 + true + + InputField + Enter + true + Left + true + + 42 + true + true + false + true + true + true + true + Normal + + + + ПояснениеАдресПубликацииИнфомационнойБазыВИнтернете + 2035 + + <key>ru</key> + <value>Используется для формирования ссылок на объекты информационной базы при отправке электронных писем партнерам.</value> + + true + true + + true + + + ПояснениеАдресПубликацииИнфомационнойБазыВИнтернетеРасширеннаяПодсказка + 2083 + Label + true + true + + Left + + + + ПояснениеАдресПубликацииИнфомационнойБазыВИнтернетеКонтекстноеМеню + 2036 + true + + Label + 43 + true + true + false + + Style.ПоясняющийТекст + + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Группа публикация базы</value> + + + ru + Группа публикация базы + + 86 + false + + ГруппаПубликацияБазыРасширеннаяПодсказка + 2080 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + ФормаКоманднаяПанель -1 diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Help/ru.html index 58137340d..1ec05fe66 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Help/ru.html @@ -4,7 +4,7 @@ TD { VERTICAL-ALIGN: top } - +

            В данной панели осуществляется администрирование пользователей и настройка прав доступа.

            diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Module.bsl index 012994f82..7ab59b8f9 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиПользователейИПрав/Module.bsl @@ -15,10 +15,12 @@ РежимРаботы = Новый ФиксированнаяСтруктура(РежимРаботы); // Настройки видимости при запуске - Если УправлениеДоступомПереопределяемый.УпрощенныйИнтерфейсНастройкиПравДоступа() Тогда - Элементы.ГруппаГруппыДоступа.Видимость = Ложь; - Элементы.ГруппаПрофилиГруппДоступа.Видимость = Ложь; - КонецЕсли; + + // СтандартныеПодсистемы.УправлениеДоступом + УпрощенныйИнтерфейс = УправлениеДоступомПереопределяемый.УпрощенныйИнтерфейсНастройкиПравДоступа(); + Элементы.ГруппаГруппыДоступа.Видимость = НЕ УпрощенныйИнтерфейс; + Элементы.ГруппаПрофилиГруппДоступа.Видимость = НЕ УпрощенныйИнтерфейс; + // Конец СтандартныеПодсистемы.УправлениеДоступом // Обновление состояния элементов УстановитьДоступность(); @@ -32,28 +34,45 @@ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ +// СтандартныеПодсистемы.УправлениеДоступом &НаКлиенте Процедура ИспользоватьГруппыПользователейПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.УправлениеДоступом +// СтандартныеПодсистемы.УправлениеДоступом &НаКлиенте Процедура ОграничиватьДоступНаУровнеЗаписейПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.УправлениеДоступом +// СтандартныеПодсистемы.Пользователи &НаКлиенте Процедура ИспользоватьВнешнихПользователейПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.Пользователи + +// СтандартныеПодсистемы.Взаимодействия +&НаКлиенте +Процедура АдресПубликацииИнформационнойБазыВИнтернетеПриИзменении(Элемент) + + Подключаемый_ПриИзмененииРеквизита(Элемент); + +КонецПроцедуры +// Конец СтандартныеПодсистемы.Взаимодействия //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// СтандартныеПодсистемы.Пользователи &НаКлиенте Процедура СправочникВнешниеПользователи(Команда) ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаСписка", , ЭтаФорма); КонецПроцедуры +// Конец СтандартныеПодсистемы.Пользователи //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -64,20 +83,46 @@ &НаКлиенте Процедура Подключаемый_ПриИзмененииРеквизита(Элемент, ОбновлятьИнтерфейс = Истина) + // СтандартныеПодсистемы.УправлениеДоступом + Если Элемент.Имя = "ОграничиватьДоступНаУровнеЗаписей" + И НаборКонстант.ОграничиватьДоступНаУровнеЗаписей Тогда + + ТекстВопроса = + НСтр("ru = 'Включить ограничение доступа на уровне записей? + | + |Потребуется заполнение данных, которое будет выполняться частями + |регламентным заданием ""Заполнение данных для ограничения доступа"" + |(ход выполнения в журнале регистрации). + | + |Выполнение может сильно замедлить работу программы и выполняться + |от нескольких секунд до многих часов (в зависимости от объема данных).'"); + + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет); + Если Ответ = КодВозвратаДиалога.Нет Тогда + НаборКонстант.ОграничиватьДоступНаУровнеЗаписей = Ложь; + Возврат; + КонецЕсли; + КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом + Результат = ПриИзмененииРеквизитаСервер(Элемент.Имя); - Если Элемент.Имя = "ОграничиватьДоступНаУровнеЗаписей" И НаборКонстант.ОграничиватьДоступНаУровнеЗаписей Тогда - Предупреждение(НСтр("ru = 'Включено ограничение доступа на уровне записей. - |Требуется заполнение данных, которое будет выполняться частями - |регламентным заданием ""Заполнение данных для ограничения доступа"" - |(ход выполнения в журнале регистрации).'")); + // СтандартныеПодсистемы.УправлениеДоступом + Если Элемент.Имя = "ОграничиватьДоступНаУровнеЗаписей" + И НаборКонстант.ОграничиватьДоступНаУровнеЗаписей Тогда + Если СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИнформационнаяБазаФайловая Тогда - Предупреждение(НСтр("ru = 'В режиме файловой информационной базы регламентное задание - |""Заполнение данных для ограничения доступа"" - |необходимо выполнить вручную через консоль регламентных заданий.'")); + ПоказатьОповещениеПользователя( + НСтр("ru = 'В режиме файловой информационной базы регламентное задание + |""Заполнение данных для ограничения доступа"" + |необходимо выполнить вручную через консоль регламентных заданий.'"), + "e1cib/app/Обработка.РегламентныеИФоновыеЗадания", + НСтр("ru = 'Заполнить данные для ограничения доступа'"), + БиблиотекаКартинок.РегламентныеЗадания); КонецЕсли; КонецЕсли; + // Конец СтандартныеПодсистемы.УправлениеДоступом Если ОбновлятьИнтерфейс Тогда #Если НЕ ВебКлиент Тогда ПодключитьОбработчикОжидания("ОбновитьИнтерфейсПрограммы", 1, Истина); @@ -85,9 +130,7 @@ #КонецЕсли КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -153,8 +196,10 @@ КонстантаМенеджер.Установить(КонстантаЗначение); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов КонецЕсли; КонецПроцедуры @@ -162,8 +207,16 @@ &НаСервере Процедура УстановитьДоступность(РеквизитПутьКДанным = "") + // СтандартныеПодсистемы.Пользователи Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьВнешнихПользователей" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СправочникВнешниеПользователи", "Доступность", НаборКонстант.ИспользоватьВнешнихПользователей); + Элементы.СправочникВнешниеПользователи.Доступность = НаборКонстант.ИспользоватьВнешнихПользователей; КонецЕсли; + // Конец СтандартныеПодсистемы.Пользователи + + // СтандартныеПодсистемы.Взаимодействия + Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьВнешнихПользователей" ИЛИ РеквизитПутьКДанным = "" Тогда + ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "АдресПубликацииИнформационнойБазыВИнтернете", "Доступность", НаборКонстант.ИспользоватьВнешнихПользователей); + КонецЕсли; + // Конец СтандартныеПодсистемы.Взаимодействия КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиРаботыСФайлами/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиРаботыСФайлами/Help/ru.html index 236d55679..32b82d55d 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиРаботыСФайлами/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиРаботыСФайлами/Help/ru.html @@ -4,7 +4,7 @@ TD { VERTICAL-ALIGN: top } - +

            В данной панели осуществляется настройка параметров загрузки, хранения и обработки файлов.

          • Пользователи
          • diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиРаботыСФайлами/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиРаботыСФайлами/Module.bsl index 86c75afb9..e508a725d 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиРаботыСФайлами/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/НастройкиРаботыСФайлами/Module.bsl @@ -14,16 +14,21 @@ РежимРаботы = ОбщегоНазначенияПовтИсп.РежимРаботыПрограммы(); РежимРаботы = Новый ФиксированнаяСтруктура(РежимРаботы); + // СтандартныеПодсистемы.ФайловыеФункции МаксимальныйРазмерФайла = ФайловыеФункции.МаксимальныйРазмерФайлаОбщий() / (1024*1024); МаксимальныйРазмерФайлаОбластиДанных = ФайловыеФункции.МаксимальныйРазмерФайла() / (1024*1024); Если РежимРаботы.МодельСервиса Тогда Элементы.МаксимальныйРазмерФайла.МаксимальноеЗначение = МаксимальныйРазмерФайла; КонецЕсли; + // Конец СтандартныеПодсистемы.ФайловыеФункции // Настройки видимости при запуске + + // СтандартныеПодсистемы.ФайловыеФункции Элементы.ГруппаХранитьФайлыВТомахНаДиске.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; Элементы.ГруппаСправочникТомаХраненияФайлов.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; Элементы.ОбщиеПараметрыДляВсехОбластейДанных.Видимость = РежимРаботы.МодельСервиса И РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.ФайловыеФункции // Обновление состояния элементов УстановитьДоступность(); @@ -37,6 +42,7 @@ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ +// СтандартныеПодсистемы.ФайловыеФункции &НаКлиенте Процедура ХранитьФайлыВТомахНаДискеПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); @@ -66,15 +72,19 @@ Процедура СписокРасширенийТекстовыхФайловПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.ФайловыеФункции +// СтандартныеПодсистемы.ЭлектроннаяЦифроваяПодпись &НаКлиенте Процедура ИспользоватьЭлектронныеЦифровыеПодписиПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.ЭлектроннаяЦифроваяПодпись //////////////////////////////////////////////////////////////////////////////// // Общие параметры для всех областей данных +// СтандартныеПодсистемы.ФайловыеФункции &НаКлиенте Процедура МаксимальныйРазмерФайлаПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); @@ -89,19 +99,24 @@ Процедура СписокРасширенийФайловOpenDocumentПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.ФайловыеФункции //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// СтандартныеПодсистемы.ФайловыеФункции &НаКлиенте Процедура СправочникТомаХраненияФайлов(Команда) ОткрытьФорму("Справочник.ТомаХраненияФайлов.ФормаСписка", , ЭтаФорма); КонецПроцедуры +// Конец СтандартныеПодсистемы.ФайловыеФункции +// СтандартныеПодсистемы.ЭлектроннаяЦифроваяПодпись &НаКлиенте Процедура ОбщаяФормаНастройкиЭЦП(Команда) ОткрытьФорму("ОбщаяФорма.НастройкиЭЦП", , ЭтаФорма); КонецПроцедуры +// Конец СтандартныеПодсистемы.ЭлектроннаяЦифроваяПодпись //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -123,9 +138,7 @@ #КонецЕсли КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -180,11 +193,13 @@ Иначе // Определение имени и запись значения реквизита в соответствующей константе из "НаборКонстант". // Используется для тех реквизитов формы, которые связаны с константами напрямую (в отношении один-к-одному). + + // СтандартныеПодсистемы.ФайловыеФункции Если РеквизитПутьКДанным = "МаксимальныйРазмерФайла" Тогда НаборКонстант.МаксимальныйРазмерФайла = МаксимальныйРазмерФайла * (1024*1024); КонстантаИмя = "МаксимальныйРазмерФайла"; ИначеЕсли РеквизитПутьКДанным = "МаксимальныйРазмерФайлаОбластиДанных" Тогда - Если РежимРаботы.Локальный Тогда + Если РежимРаботы.Локальный Или РежимРаботы.Автономный Тогда НаборКонстант.МаксимальныйРазмерФайла = МаксимальныйРазмерФайлаОбластиДанных * (1024*1024); КонстантаИмя = "МаксимальныйРазмерФайла"; Иначе @@ -192,6 +207,8 @@ КонстантаИмя = "МаксимальныйРазмерФайлаОбластиДанных"; КонецЕсли; КонецЕсли; + // Конец СтандартныеПодсистемы.ФайловыеФункции + КонецЕсли; // Сохранения значения константы. @@ -203,8 +220,10 @@ КонстантаМенеджер.Установить(КонстантаЗначение); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов КонецЕсли; КонецПроцедуры @@ -212,16 +231,22 @@ &НаСервере Процедура УстановитьДоступность(РеквизитПутьКДанным = "") + // СтандартныеПодсистемы.ФайловыеФункции Если РеквизитПутьКДанным = "НаборКонстант.ХранитьФайлыВТомахНаДиске" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СправочникТомаХраненияФайлов", "Доступность", НаборКонстант.ХранитьФайлыВТомахНаДиске); - КонецЕсли; - - Если РеквизитПутьКДанным = "НаборКонстант.ЗапрещатьЗагрузкуФайловПоРасширению" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СписокЗапрещенныхРасширенийОбластиДанных", "Доступность", НаборКонстант.ЗапрещатьЗагрузкуФайловПоРасширению); + Элементы.СправочникТомаХраненияФайлов.Доступность = НаборКонстант.ХранитьФайлыВТомахНаДиске; КонецЕсли; + // Конец СтандартныеПодсистемы.ФайловыеФункции - Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьЭлектронныеЦифровыеПодписи" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОбщаяФормаНастройкиЭЦП", "Доступность", НаборКонстант.ИспользоватьЭлектронныеЦифровыеПодписи); + // СтандартныеПодсистемы.ФайловыеФункции + Если РеквизитПутьКДанным = "НаборКонстант.ЗапрещатьЗагрузкуФайловПоРасширению" ИЛИ РеквизитПутьКДанным = "" Тогда + Элементы.СписокЗапрещенныхРасширенийОбластиДанных.Доступность = НаборКонстант.ЗапрещатьЗагрузкуФайловПоРасширению; КонецЕсли; + // Конец СтандартныеПодсистемы.ФайловыеФункции + + // СтандартныеПодсистемы.ЭлектроннаяЦифроваяПодпись + Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьЭлектронныеЦифровыеПодписи" ИЛИ РеквизитПутьКДанным = "" Тогда + Элементы.ОбщаяФормаНастройкиЭЦП.Доступность = НаборКонстант.ИспользоватьЭлектронныеЦифровыеПодписи; + КонецЕсли; + // Конец СтандартныеПодсистемы.ЭлектроннаяЦифроваяПодпись КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Form.form b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Form.form index 1e0ecbf38..de594f49f 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Form.form +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Form.form @@ -18,7 +18,7 @@ ОписаниеРазделаРасширеннаяПодсказка - 1796 + 1803 Label true true @@ -60,7 +60,7 @@ Декорация1РасширеннаяПодсказка - 1797 + 1804 Label true true @@ -94,7 +94,7 @@ СправкаРасширеннаяПодсказка - 1799 + 1806 Label true true @@ -127,7 +127,7 @@ false ГруппаСправкаРасширеннаяПодсказка - 1798 + 1805 Label true true @@ -155,7 +155,7 @@ ГруппаЗаголовокРасширеннаяПодсказка - 1795 + 1802 Label true true @@ -176,7 +176,7 @@ Группа9 612 - ЗаголовокСистемы + ЗаголовокПрограммы 1785 <key>ru</key> @@ -193,11 +193,11 @@ <titleLocation>Left</titleLocation> <handlers> <event>OnChange</event> - <name>ЗаголовокСистемыПриИзменении</name> + <name>ЗаголовокПрограммыПриИзменении</name> </handlers> <extendedTooltip> - <name>ЗаголовокСистемыРасширеннаяПодсказка</name> - <id>1801</id> + <name>ЗаголовокПрограммыРасширеннаяПодсказка</name> + <id>1808</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -206,7 +206,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>ЗаголовокСистемыКонтекстноеМеню</name> + <name>ЗаголовокПрограммыКонтекстноеМеню</name> <id>1786</id> <autoFill>true</autoFill> </contextMenu> @@ -245,7 +245,7 @@ </handlers> <extendedTooltip> <name>ЧасовойПоясПрограммыРасширеннаяПодсказка</name> - <id>1804</id> + <id>1811</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -291,7 +291,7 @@ </userVisible> <extendedTooltip> <name>ВремяТекущегоСеансаРасширеннаяПодсказка</name> - <id>1806</id> + <id>1813</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -323,7 +323,7 @@ </toolTip> <extendedTooltip> <name>ГруппаЧасовойПоясПрограммыРасширеннаяПодсказка</name> - <id>1803</id> + <id>1810</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -357,7 +357,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>Группа9РасширеннаяПодсказка</name> - <id>1800</id> + <id>1807</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -403,7 +403,7 @@ </handlers> <extendedTooltip> <name>ИспользоватьВерсионированиеОбъектовРасширеннаяПодсказка</name> - <id>1809</id> + <id>1816</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -437,7 +437,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеИспользоватьВерсионированиеРасширеннаяПодсказка</name> - <id>1811</id> + <id>1818</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -475,7 +475,7 @@ </toolTip> <extendedTooltip> <name>ГруппаИспользоватьВерсионированиеОбъектовРасширеннаяПодсказка</name> - <id>1808</id> + <id>1815</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -498,7 +498,7 @@ <id>884</id> <items xsi:type="form:Button"> <name>РегистрСведенийНастройкиВерсионированияОбъектов</name> - <id>1581</id> + <id>1800</id> <visible>true</visible> <enabled>true</enabled> <userVisible> @@ -506,7 +506,7 @@ </userVisible> <extendedTooltip> <name>РегистрСведенийНастройкиВерсионированияОбъектовРасширеннаяПодсказка</name> - <id>1813</id> + <id>1820</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -537,7 +537,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеРегистрСведенийНастройкиВерсионированияОбъектовРасширеннаяПодсказка</name> - <id>1814</id> + <id>1821</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -575,7 +575,7 @@ </toolTip> <extendedTooltip> <name>ГруппаРегистрСведенийНастройкиВерсионированияОбъектовРасширеннаяПодсказка</name> - <id>1812</id> + <id>1819</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -610,7 +610,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>Группа3РасширеннаяПодсказка</name> - <id>1807</id> + <id>1814</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -657,7 +657,7 @@ </handlers> <extendedTooltip> <name>ИспользоватьДополнительныеРеквизитыИСведенияРасширеннаяПодсказка</name> - <id>1817</id> + <id>1824</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -691,7 +691,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеИспользоватьДополнительныеРеквизитыИСведенияРасширеннаяПодсказка</name> - <id>1819</id> + <id>1826</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -729,7 +729,7 @@ </toolTip> <extendedTooltip> <name>ГруппаИспользоватьДополнительныеРеквизитыИСведенияРасширеннаяПодсказка</name> - <id>1816</id> + <id>1823</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -752,7 +752,7 @@ <id>888</id> <items xsi:type="form:Button"> <name>СправочникНаборыДополнительныхРеквизитовИСведений</name> - <id>1582</id> + <id>1801</id> <visible>true</visible> <enabled>true</enabled> <userVisible> @@ -760,7 +760,7 @@ </userVisible> <extendedTooltip> <name>СправочникНаборыДополнительныхРеквизитовИСведенийРасширеннаяПодсказка</name> - <id>1821</id> + <id>1828</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -791,7 +791,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеНаборыДополнительныхРеквизитовИСведенийРасширеннаяПодсказка</name> - <id>1822</id> + <id>1829</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -829,7 +829,7 @@ </toolTip> <extendedTooltip> <name>ГруппаСправочникНаборыДополнительныхРеквизитовИСведенийРасширеннаяПодсказка</name> - <id>1820</id> + <id>1827</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -864,7 +864,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>Группа4РасширеннаяПодсказка</name> - <id>1815</id> + <id>1822</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -896,7 +896,7 @@ </userVisible> <extendedTooltip> <name>ОткрытьВидыКонтактнойИнформацииРасширеннаяПодсказка</name> - <id>1824</id> + <id>1831</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -927,7 +927,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеОткрытьВидыКонтактнойИнформацииРасширеннаяПодсказка</name> - <id>1825</id> + <id>1832</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -969,7 +969,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаОткрытьВидыКонтактнойИнформацииРасширеннаяПодсказка</name> - <id>1823</id> + <id>1830</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1008,7 +1008,7 @@ </userVisible> <extendedTooltip> <name>ОткрытьПараметрыПроксиСервераРасширеннаяПодсказка</name> - <id>1828</id> + <id>1835</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1039,7 +1039,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеОткрытьПараметрыПроксиСервераРасширеннаяПодсказка</name> - <id>1829</id> + <id>1836</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1077,7 +1077,7 @@ </toolTip> <extendedTooltip> <name>ГруппаОткрытьПараметрыПроксиСервераРасширеннаяПодсказка</name> - <id>1827</id> + <id>1834</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1109,7 +1109,7 @@ <skipOnInput>false</skipOnInput> <extendedTooltip> <name>ПараметрыАдминистрированияИБРасширеннаяПодсказка</name> - <id>1831</id> + <id>1838</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1141,7 +1141,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеПараметрыАдминистрированияИБРасширеннаяПодсказка</name> - <id>1832</id> + <id>1839</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1179,7 +1179,7 @@ </toolTip> <extendedTooltip> <name>ГруппаПараметрыАдминистрированияИБРасширеннаяПодсказка</name> - <id>1830</id> + <id>1837</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1222,7 +1222,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>Группа6РасширеннаяПодсказка</name> - <id>1826</id> + <id>1833</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1265,7 +1265,7 @@ </handlers> <extendedTooltip> <name>КаталогВременныхФайловДляWindowsРасширеннаяПодсказка</name> - <id>1834</id> + <id>1841</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1314,7 +1314,7 @@ </handlers> <extendedTooltip> <name>КаталогВременныхФайловДляLinuxРасширеннаяПодсказка</name> - <id>1836</id> + <id>1843</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1356,7 +1356,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеВременныеКаталогиРасширеннаяПодсказка</name> - <id>1838</id> + <id>1845</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1396,7 +1396,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаВременныеКаталогиКластераСерверовРасширеннаяПодсказка</name> - <id>1833</id> + <id>1840</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1428,7 +1428,7 @@ </userVisible> <extendedTooltip> <name>ОткрытьНастройкиАгентаСервисаРасширеннаяПодсказка</name> - <id>1840</id> + <id>1847</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1459,7 +1459,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеОткрытьНастройкиАгентаСервисаРасширеннаяПодсказка</name> - <id>1841</id> + <id>1848</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1493,7 +1493,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаОткрытьНастройкиАгентаСервисаРасширеннаяПодсказка</name> - <id>1839</id> + <id>1846</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1597,50 +1597,6 @@ <common>true</common> </edit> </attributes> - <formCommands> - <name>РегистрСведенийНастройкиВерсионированияОбъектов</name> - <title> - <key>ru</key> - <value>Версионируемые объекты</value> - - 46 - - ru - Регистр сведений "Настройки версионирования объектов" - - - true - - - - РегистрСведенийНастройкиВерсионированияОбъектов - - - Auto - Auto - - - СправочникНаборыДополнительныхРеквизитовИСведений - - <key>ru</key> - <value>Наборы дополнительных реквизитов и сведений</value> - - 47 - - ru - Справочник наборы дополнительных реквизитов и сведений - - - true - - - - СправочникНаборыДополнительныхРеквизитовИСведений - - - Auto - Auto - ВремяТекущегоСеанса @@ -1663,6 +1619,50 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>РегистрСведенийНастройкиВерсионированияОбъектов</name> + <title> + <key>ru</key> + <value>Версионируемые объекты</value> + + 2 + + ru + Регистр сведений "Настройки версионирования объектов" + + + true + + + + РегистрСведенийНастройкиВерсионированияОбъектов + + + Auto + Auto + + + СправочникНаборыДополнительныхРеквизитовИСведений + + <key>ru</key> + <value>Наборы дополнительных реквизитов и сведений</value> + + 3 + + ru + Справочник наборы дополнительных реквизитов и сведений + + + true + + + + СправочникНаборыДополнительныхРеквизитовИСведений + + + Auto + Auto + diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Help/ru.html index 4a2576353..0ea11a919 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Help/ru.html @@ -4,7 +4,7 @@ TD { VERTICAL-ALIGN: top } - +

            В данной панели осуществляется настройка основных параметров программы.

          • Хранить файлы в томах на диске
          • diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl index ed981d031..d83fd7363 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ОбщиеНастройки/Module.bsl @@ -18,10 +18,22 @@ Элементы.ЧасовойПоясПрограммы.СписокВыбора.Добавить(ЧасовойПоясПрограммы); // Настройки видимости при запуске - Элементы.ГруппаОткрытьПараметрыПроксиСервера.Видимость = РежимРаботы.КлиентСерверный И РежимРаботы.ЭтоАдминистраторСистемы; - Элементы.ГруппаПараметрыАдминистрированияИБ.Видимость = РежимРаботы.КлиентСерверный И РежимРаботы.ЭтоАдминистраторСистемы; + + // СтандартныеПодсистемы.ПолучениеФайловИзИнтернета + Элементы.ГруппаОткрытьПараметрыПроксиСервера.Видимость = РежимРаботы.КлиентСерверный И РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.ПолучениеФайловИзИнтернета + + // СтандартныеПодсистемы.ЗавершениеРаботыПользователей + Элементы.ГруппаПараметрыАдминистрированияИБ.Видимость = РежимРаботы.КлиентСерверный И РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.ЗавершениеРаботыПользователей + + // СтандартныеПодсистемы.БазоваяФункциональность Элементы.ГруппаВременныеКаталогиКластераСерверов.Видимость = РежимРаботы.КлиентСерверный И РежимРаботы.ЭтоАдминистраторСистемы; - Элементы.ГруппаОткрытьНастройкиАгентаСервиса.Видимость = РежимРаботы.МодельСервиса И РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.БазоваяФункциональность + + // СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса + Элементы.ГруппаОткрытьНастройкиАгентаСервиса.Видимость = РежимРаботы.МодельСервиса И РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.БазоваяФункциональностьВМоделиСервиса // Обновление состояния элементов УстановитьДоступность(); @@ -36,7 +48,7 @@ // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ &НаКлиенте -Процедура ЗаголовокСистемыПриИзменении(Элемент) +Процедура ЗаголовокПрограммыПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); СтандартныеПодсистемыКлиент.УстановитьРасширенныйЗаголовокПриложения(); КонецПроцедуры @@ -53,15 +65,19 @@ КонецЕсли; КонецПроцедуры +// СтандартныеПодсистемы.ВерсионированиеОбъектов &НаКлиенте Процедура ИспользоватьВерсионированиеОбъектовПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов +// СтандартныеПодсистемы.Свойства &НаКлиенте Процедура ИспользоватьДополнительныеРеквизитыИСведенияПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.Свойства &НаКлиенте Процедура КаталогВременныхФайловДляWindowsПриИзменении(Элемент) @@ -76,19 +92,23 @@ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// СтандартныеПодсистемы.ВерсионированиеОбъектов &НаКлиенте Процедура РегистрСведенийНастройкиВерсионированияОбъектов(Команда) ОткрытьФорму("РегистрСведений.НастройкиВерсионированияОбъектов.ФормаСписка", , ЭтаФорма); КонецПроцедуры +// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов +// СтандартныеПодсистемы.Свойства &НаКлиенте Процедура СправочникНаборыДополнительныхРеквизитовИСведений(Команда) ОткрытьФорму("Справочник.НаборыДополнительныхРеквизитовИСведений.ФормаСписка", , ЭтаФорма); КонецПроцедуры +// Конец СтандартныеПодсистемы.Свойства &НаКлиенте Процедура ПоказатьВремяТекущегоСеанса(Команда) @@ -103,9 +123,7 @@ |приведенное к часовому поясу клиента.'"), Формат(ОбщегоНазначенияКлиент.ДатаСеанса(), "ДЛФ=T"), Формат(ДатаСервера(), "ДЛФ=T"), - Формат(ТекущаяДата(), "ДЛФ=T") - ) - ); + Формат(ТекущаяДата(), "ДЛФ=T"))); КонецПроцедуры @@ -127,9 +145,7 @@ #КонецЕсли КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -222,8 +238,10 @@ КонстантаМенеджер.Установить(КонстантаЗначение); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов КонецЕсли; КонецПроцедуры @@ -231,12 +249,16 @@ &НаСервере Процедура УстановитьДоступность(РеквизитПутьКДанным = "") + // СтандартныеПодсистемы.ВерсионированиеОбъектов Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьВерсионированиеОбъектов" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "РегистрСведенийНастройкиВерсионированияОбъектов", "Доступность", НаборКонстант.ИспользоватьВерсионированиеОбъектов); + Элементы.РегистрСведенийНастройкиВерсионированияОбъектов.Доступность = НаборКонстант.ИспользоватьВерсионированиеОбъектов; КонецЕсли; + // Конец СтандартныеПодсистемы.ВерсионированиеОбъектов + // СтандартныеПодсистемы.Свойства Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьДополнительныеРеквизитыИСведения" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СправочникНаборыДополнительныхРеквизитовИСведений", "Доступность", НаборКонстант.ИспользоватьДополнительныеРеквизитыИСведения); + Элементы.СправочникНаборыДополнительныхРеквизитовИСведений.Доступность = НаборКонстант.ИспользоватьДополнительныеРеквизитыИСведения; КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Form.form b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Form.form index a33116b6f..a45bd158b 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Form.form +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Form.form @@ -451,7 +451,7 @@ 705 <key>ru</key> - <value>Звонки, встречи и запланированные взаимодействия</value> + <value>Звонки, SMS, встречи и запланированные взаимодействия</value> truetrue @@ -493,7 +493,7 @@ 1314 <key>ru</key> - <value>Регистрация звонков, встреч и запланированных взаимодействий с клиентами в программе.</value> + <value>Отправка SMS, регистрация звонков, встреч и запланированных взаимодействий с клиентами в программе.</value> truetrue diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Help/ru.html index d3fd5e664..dd6b7cad3 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Help/ru.html @@ -4,7 +4,7 @@ TD { VERTICAL-ALIGN: top } - +

            В данной панели осуществляется настройка электронной почты, заметок, напоминаний и бизнес-процессов.

          • Заголовок программы
          • diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Module.bsl index 6d485a518..cb538971c 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Органайзер/Module.bsl @@ -28,6 +28,7 @@ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ +// СтандартныеПодсистемы.Взаимодействия &НаКлиенте Процедура ИспользоватьПочтовыйКлиентПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); @@ -47,22 +48,30 @@ Процедура ИспользоватьПризнакРассмотреноПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.Взаимодействия +// СтандартныеПодсистемы.ЗаметкиПользователя &НаКлиенте Процедура ИспользоватьЗаметкиПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.ЗаметкиПользователя +// СтандартныеПодсистемы.НапоминанияПользователя &НаКлиенте Процедура ИспользоватьНапоминанияПользователяПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.НапоминанияПользователя +// СтандартныеПодсистемы.Анкетирование &НаКлиенте Процедура ИспользоватьАнкетированиеПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.Анкетирование +// СтандартныеПодсистемы.БизнесПроцессыИЗадачи &НаКлиенте Процедура ИспользоватьБизнесПроцессыИЗадачиПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); @@ -87,16 +96,19 @@ Процедура ИспользоватьДатуИВремяВСрокахЗадачПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.БизнесПроцессыИЗадачи //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// СтандартныеПодсистемы.БизнесПроцессыИЗадачи &НаКлиенте Процедура ОткрытьРолиИИсполнителиБизнесПроцессов(Команда) ОткрытьФорму("РегистрСведений.ИсполнителиЗадач.Форма.АдресацияПоОбъекту",,ЭтаФорма); КонецПроцедуры +// Конец СтандартныеПодсистемы.БизнесПроцессыИЗадачи //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -116,9 +128,7 @@ #КонецЕсли КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -188,8 +198,10 @@ ЭтаФорма.Прочитать(); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов КонецЕсли; КонецПроцедуры @@ -197,22 +209,26 @@ &НаСервере Процедура УстановитьДоступность(РеквизитПутьКДанным = "") + // СтандартныеПодсистемы.Взаимодействия Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьПочтовыйКлиент" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ИспользоватьПрочиеВзаимодействия", "Доступность", НаборКонстант.ИспользоватьПочтовыйКлиент); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ИспользоватьПризнакРассмотрено", "Доступность", НаборКонстант.ИспользоватьПочтовыйКлиент); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОтправлятьПисьмаВФорматеHTML", "Доступность", НаборКонстант.ИспользоватьПочтовыйКлиент); + Элементы.ИспользоватьПрочиеВзаимодействия.Доступность = НаборКонстант.ИспользоватьПочтовыйКлиент; + Элементы.ИспользоватьПризнакРассмотрено.Доступность = НаборКонстант.ИспользоватьПочтовыйКлиент; + Элементы.ОтправлятьПисьмаВФорматеHTML.Доступность = НаборКонстант.ИспользоватьПочтовыйКлиент; КонецЕсли; + // Конец СтандартныеПодсистемы.Взаимодействия + // СтандартныеПодсистемы.БизнесПроцессыИЗадачи Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОткрытьРолиИИсполнителиБизнесПроцессов", "Доступность", НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ИспользоватьПодчиненныеБизнесПроцессы", "Доступность", НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ИзменятьЗаданияЗаднимЧислом", "Доступность", НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ИспользоватьДатуНачалаЗадач", "Доступность", НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ИспользоватьДатуИВремяВСрокахЗадач", "Доступность", НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи); + Элементы.ОткрытьРолиИИсполнителиБизнесПроцессов.Доступность = НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи; + Элементы.ИспользоватьПодчиненныеБизнесПроцессы.Доступность = НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи; + Элементы.ИзменятьЗаданияЗаднимЧислом.Доступность = НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи; + Элементы.ИспользоватьДатуНачалаЗадач.Доступность = НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи; + Элементы.ИспользоватьДатуИВремяВСрокахЗадач.Доступность = НаборКонстант.ИспользоватьБизнесПроцессыИЗадачи; КонецЕсли; + // Конец СтандартныеПодсистемы.БизнесПроцессыИЗадачи КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Help/ru.html index a2a409418..0d6db0dd0 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Help/ru.html @@ -4,7 +4,7 @@ TD { VERTICAL-ALIGN: top } - +

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

          • Почтовый клиент
          • diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl index a2fd9f437..116af4949 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПечатныеФормыОтчетыИОбработки/Module.bsl @@ -15,8 +15,12 @@ РежимРаботы = Новый ФиксированнаяСтруктура(РежимРаботы); // Настройки видимости при запуске - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаИспользоватьДополнительныеОтчетыИОбработки", "Видимость", РежимРаботы.Локальный); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаОткрытьДополнительныеОтчетыИОбработки", "Видимость", РежимРаботы.Локальный ИЛИ НаборКонстант.ИспользоватьДополнительныеОтчетыИОбработки); + + // СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки + Элементы.ГруппаИспользоватьДополнительныеОтчетыИОбработки.Видимость = РежимРаботы.Локальный Или РежимРаботы.Автономный; + Элементы.ГруппаОткрытьДополнительныеОтчетыИОбработки.Видимость = РежимРаботы.Локальный Или РежимРаботы.Автономный + Или НаборКонстант.ИспользоватьДополнительныеОтчетыИОбработки; // при работе в модели сервиса, если включено администратором сервиса + // Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки // Обновление состояния элементов УстановитьДоступность(); @@ -30,20 +34,24 @@ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ +// СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки &НаКлиенте Процедура ИспользоватьДополнительныеОтчетыИОбработкиПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки &НаКлиенте Процедура СправочникДополнительныеОтчетыИОбработки(Команда) ОткрытьФорму("Справочник.ДополнительныеОтчетыИОбработки.ФормаСписка", , ЭтаФорма); КонецПроцедуры +// Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -63,9 +71,7 @@ #КонецЕсли КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -131,8 +137,10 @@ КонстантаМенеджер.Установить(КонстантаЗначение); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов КонецЕсли; КонецПроцедуры @@ -140,8 +148,10 @@ &НаСервере Процедура УстановитьДоступность(РеквизитПутьКДанным = "") + // СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьДополнительныеОтчетыИОбработки" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОткрытьДополнительныеОтчетыИОбработки", "Доступность", НаборКонстант.ИспользоватьДополнительныеОтчетыИОбработки); + Элементы.ОткрытьДополнительныеОтчетыИОбработки.Доступность = НаборКонстант.ИспользоватьДополнительныеОтчетыИОбработки; КонецЕсли; + // Конец СтандартныеПодсистемы.ДополнительныеОтчетыИОбработки КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Form.form b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Form.form index 2b5abe5b3..c687cf473 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Form.form +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Form.form @@ -17,7 +17,7 @@ ОписаниеРаздела1РасширеннаяПодсказка - 1622 + 1633 Label true true @@ -59,7 +59,7 @@ Декорация1РасширеннаяПодсказка - 1623 + 1634 Label true true @@ -93,7 +93,7 @@ СправкаРасширеннаяПодсказка - 1625 + 1636 Label true true @@ -126,7 +126,7 @@ false ГруппаСправкаРасширеннаяПодсказка - 1624 + 1635 Label true true @@ -154,7 +154,7 @@ ГруппаЗаголовокРасширеннаяПодсказка - 1621 + 1632 Label true true @@ -184,7 +184,7 @@ ОбработкаЖурналРегистрацииОткрытьРасширеннаяПодсказка - 1627 + 1638 Label true true @@ -211,7 +211,7 @@ ОбработкаАктивныеПользователиОткрытьРасширеннаяПодсказка - 1628 + 1639 Label true true @@ -238,7 +238,7 @@ ОбработкаБлокировкаСоединенийСИнформационнойБазойОткрытьРасширеннаяПодсказка - 1629 + 1640 Label true true @@ -265,7 +265,7 @@ ОбработкаУдалениеПомеченныхОбъектовОткрытьРасширеннаяПодсказка - 1630 + 1641 Label true true @@ -299,7 +299,7 @@ false ГруппаЧастотныйСервисРасширеннаяПодсказка - 1626 + 1637 Label true true @@ -336,7 +336,7 @@ ОбработкаРегламентныеИФоновыеЗаданияРасширеннаяПодсказка - 1634 + 1645 Label true true @@ -367,7 +367,7 @@ ПояснениеОбработкаРегламентныеИФоновыеЗаданияРасширеннаяПодсказка - 1635 + 1646 Label true true @@ -408,7 +408,7 @@ false ГруппаОбработкаРегламентныеИФоновыеЗаданияРасширеннаяПодсказка - 1633 + 1644 Label true true @@ -439,7 +439,7 @@ РегистрСведенийДатыЗапретаИзмененияДатыЗапретаИзмененияДанныхРасширеннаяПодсказка - 1637 + 1648 Label true true @@ -470,7 +470,7 @@ ПояснениеРегистрСведенийДатыЗапретаИзмененияДатыЗапретаИзмененияДанныхРасширеннаяПодсказка - 1638 + 1649 Label true true @@ -510,7 +510,7 @@ false ГруппаРегистрСведенийДатыЗапретаИзмененияДатыЗапретаИзмененияДанныхРасширеннаяПодсказка - 1636 + 1647 Label true true @@ -543,7 +543,7 @@ Группа5РасширеннаяПодсказка - 1632 + 1643 Label true true @@ -576,7 +576,7 @@ ОбработкаУправлениеИтогамиИАгрегатамиОткрытьРасширеннаяПодсказка - 1641 + 1652 Label true true @@ -608,7 +608,7 @@ ПояснениеОбработкаУправлениеИтогамиИАгрегатамиОткрытьРасширеннаяПодсказка - 1642 + 1653 Label true true @@ -648,7 +648,7 @@ false ГруппаОбработкаУправлениеИтогамиИАгрегатамиОткрытьРасширеннаяПодсказка - 1640 + 1651 Label true true @@ -683,7 +683,7 @@ УправлениеПолнотекстовымПоискомИИзвлечениемТекстовРасширеннаяПодсказка - 1644 + 1655 Label true true @@ -715,7 +715,7 @@ ПояснениеУправлениеПолнотекстовымПоискомИИзвлечениемТекстовРасширеннаяПодсказка - 1645 + 1656 Label true true @@ -755,7 +755,7 @@ false ГруппаУправлениеПолнотекстовымПоискомИИзвлечениемТекстовРасширеннаяПодсказка - 1643 + 1654 Label true true @@ -788,7 +788,7 @@ Группа6РасширеннаяПодсказка - 1639 + 1650 Label true true @@ -830,7 +830,7 @@ false ГруппаРегламентныеОперацииРасширеннаяПодсказка - 1631 + 1642 Label true true @@ -877,7 +877,7 @@ РезервноеКопированиеПрограммыРасширеннаяПодсказка - 1650 + 1661 Label true true @@ -916,7 +916,7 @@ ПояснениеРезервноеКопированиеПрограммыРасширеннаяПодсказка - 1651 + 1662 Label true true @@ -956,7 +956,7 @@ false ГруппаРезервноеКопированиеПрограммыРасширеннаяПодсказка - 1649 + 1660 Label true true @@ -991,7 +991,7 @@ ВосстановлениеИзРезервнойКопииРасширеннаяПодсказка - 1653 + 1664 Label true true @@ -1030,7 +1030,7 @@ ПояснениеВосстановлениеРезервнойКопииРасширеннаяПодсказка - 1654 + 1665 Label true true @@ -1070,7 +1070,7 @@ false ГруппаВосстановлениеРезервнойКопииРасширеннаяПодсказка - 1652 + 1663 Label true true @@ -1103,7 +1103,7 @@ Группа3РасширеннаяПодсказка - 1648 + 1659 Label true true @@ -1138,7 +1138,7 @@ НастройкаРезервногоКопированияРасширеннаяПодсказка - 1656 + 1667 Label true true @@ -1177,7 +1177,7 @@ ПояснениеНастройкаРезервногоКопированияРасширеннаяПодсказка - 1657 + 1668 Label true true @@ -1198,6 +1198,7 @@ Left + Top true @@ -1217,7 +1218,7 @@ false ГруппаНастройкаРезервногоКопированияРасширеннаяПодсказка - 1655 + 1666 Label true true @@ -1242,7 +1243,7 @@ Группа1РасширеннаяПодсказка - 1647 + 1658 Label true true @@ -1272,7 +1273,7 @@ Декорация18РасширеннаяПодсказка - 1659 + 1670 Label true true @@ -1309,7 +1310,7 @@ ПояснениеВосстановлениеРезервнойКопииВМоделиСервисаРасширеннаяПодсказка - 1660 + 1671 Label true true @@ -1349,7 +1350,7 @@ false ГруппаВосстановлениеРезервнойКопииВМоделиСервисаРасширеннаяПодсказка - 1658 + 1669 Label true true @@ -1392,7 +1393,7 @@ false ГруппаРезервноеКопированиеИВосстановлениеРасширеннаяПодсказка - 1646 + 1657 Label true true @@ -1441,7 +1442,7 @@ ВыполнятьЗамерыПроизводительностиРасширеннаяПодсказка - 1663 + 1674 Label true true @@ -1475,7 +1476,7 @@ ПояснениеВыполнятьЗамерыПроизводительностиРасширеннаяПодсказка - 1665 + 1676 Label true true @@ -1513,7 +1514,7 @@ ГруппаВыполнятьЗамерыПроизводительностиРасширеннаяПодсказка - 1662 + 1673 Label true true @@ -1548,7 +1549,7 @@ ОбработкаОценкаПроизводительностиРасширеннаяПодсказка - 1667 + 1678 Label true true @@ -1579,7 +1580,7 @@ ПояснениеОбработкаОценкаПроизводительностиРасширеннаяПодсказка - 1668 + 1679 Label true true @@ -1617,7 +1618,7 @@ ГруппаОбработкаОценкаПроизводительностиРасширеннаяПодсказка - 1666 + 1677 Label true true @@ -1660,7 +1661,7 @@ false ГруппаОценкаПроизводительностиРасширеннаяПодсказка - 1661 + 1672 Label true true @@ -1691,7 +1692,7 @@ 1579 ЗагрузитьКлассификаторБанков - 1558 + 1625 true true @@ -1699,7 +1700,7 @@ ЗагрузитьКлассификаторБанковРасширеннаяПодсказка - 1672 + 1683 Label true true @@ -1731,7 +1732,7 @@ ПояснениеЗагрузитьКлассификаторБанковРасширеннаяПодсказка - 1673 + 1684 Label true true @@ -1771,7 +1772,7 @@ false ГруппаЗагрузитьКлассификаторБанковРасширеннаяПодсказка - 1671 + 1682 Label true true @@ -1790,19 +1791,19 @@ - ГруппаАдресныйКлассификатор + ГруппаРегистрСведенийАдресныйКлассификатор 1583 - АдресныйКлассификатор - 1561 + РегистрСведенийАдресныйКлассификатор + 1626 true true true - АдресныйКлассификаторРасширеннаяПодсказка - 1675 + РегистрСведенийАдресныйКлассификаторРасширеннаяПодсказка + 1686 Label true true @@ -1811,7 +1812,7 @@ Hyperlink - Form.Command.АдресныйКлассификатор + Form.Command.РегистрСведенийАдресныйКлассификатор Normal Auto true @@ -1833,7 +1834,7 @@ ПояснениеАдресныйКлассификаторРасширеннаяПодсказка - 1676 + 1687 Label true true @@ -1863,17 +1864,17 @@ <key>ru</key> - <value>Группа адресный классификатор</value> + <value> </value> ru - Группа адресный классификатор + 43 false - ГруппаАдресныйКлассификаторРасширеннаяПодсказка - 1674 + ГруппаРегистрСведенийАдресныйКлассификаторРасширеннаяПодсказка + 1685 Label true true @@ -1908,7 +1909,7 @@ false Группа4РасширеннаяПодсказка - 1670 + 1681 Label true true @@ -1927,19 +1928,19 @@ - ГруппаЗагрузитьКурсыВалют + ГруппаОбработкаЗагрузкаКурсовВалют 1564 - ЗагрузитьКурсыВалют - 1565 + ОбработкаЗагрузкаКурсовВалют + 1624 true true true - ЗагрузитьКурсыВалютРасширеннаяПодсказка - 1678 + ОбработкаЗагрузкаКурсовВалютРасширеннаяПодсказка + 1689 Label true true @@ -1948,7 +1949,7 @@ Hyperlink - Form.Command.ЗагрузитьКурсыВалют + Form.Command.ОбработкаЗагрузкаКурсовВалют Normal Auto true @@ -1957,7 +1958,7 @@ Auto - ПояснениеЗагрузитьКурсыВалют + ПояснениеОбработкаЗагрузкаКурсовВалют 1566 <key>ru</key> @@ -1969,8 +1970,8 @@ <common>true</common> </userVisible> <extendedTooltip> - <name>ПояснениеЗагрузитьКурсыВалютРасширеннаяПодсказка</name> - <id>1679</id> + <name>ПояснениеОбработкаЗагрузкаКурсовВалютРасширеннаяПодсказка</name> + <id>1690</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1979,7 +1980,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>ПояснениеЗагрузитьКурсыВалютКонтекстноеМеню</name> + <name>ПояснениеОбработкаЗагрузкаКурсовВалютКонтекстноеМеню</name> <id>1567</id> <autoFill>true</autoFill> </contextMenu> @@ -1998,11 +1999,19 @@ <userVisible> <common>true</common> </userVisible> + <title> + <key>ru</key> + <value> </value> + + + ru + + 43 false - ГруппаЗагрузитьКурсыВалютРасширеннаяПодсказка - 1677 + ГруппаОбработкаЗагрузкаКурсовВалютРасширеннаяПодсказка + 1688 Label true true @@ -2045,7 +2054,7 @@ false ГруппаКлассификаторыРасширеннаяПодсказка - 1669 + 1680 Label true true @@ -2081,7 +2090,7 @@ ОткрытьНастройкиРегистрацииСобытийДоступаКПерсональнымДаннымРасширеннаяПодсказка - 1682 + 1693 Label true true @@ -2112,7 +2121,7 @@ ПояснениеОткрытьНастройкиРегистрацииСобытийДоступаКПерсональнымДаннымРасширеннаяПодсказка - 1683 + 1694 Label true true @@ -2142,7 +2151,7 @@ ГруппаОткрытьНастройкиРегистрацииСобытийДоступаКПерсональнымДаннымРасширеннаяПодсказка - 1681 + 1692 Label true true @@ -2173,7 +2182,7 @@ ОбработкаЗащитаПерсональныхДанныхРасширеннаяПодсказка - 1685 + 1696 Label true true @@ -2204,7 +2213,7 @@ ПояснениеОбработкаЗащитаПерсональныхДанныхРасширеннаяПодсказка - 1686 + 1697 Label true true @@ -2242,7 +2251,7 @@ ГруппаОбработкаЗащитаПерсональныхДанныхРасширеннаяПодсказка - 1684 + 1695 Label true true @@ -2285,7 +2294,7 @@ false ГруппаЗащитаПерсональныхДанныхРасширеннаяПодсказка - 1680 + 1691 Label true true @@ -2312,10 +2321,10 @@ Колонки1 1614 - ГруппаОбновлениеКонфигурации + ГруппаОбработкаОбновлениеКонфигурации 1460 - ОбработкаОбновлениеКонфигурацииОткрыть + ОбработкаОбновлениеКонфигурации 1452 true true @@ -2323,8 +2332,8 @@ true - ОбработкаОбновлениеКонфигурацииОткрытьРасширеннаяПодсказка - 1690 + ОбработкаОбновлениеКонфигурацииРасширеннаяПодсказка + 1701 Label true true @@ -2342,7 +2351,7 @@ Auto - ПояснениеОбработкаОбновлениеКонфигурацииОткрыть + ПояснениеОбработкаОбновлениеКонфигурации 1461 <key>ru</key> @@ -2354,8 +2363,8 @@ <common>true</common> </userVisible> <extendedTooltip> - <name>ПояснениеОбработкаОбновлениеКонфигурацииОткрытьРасширеннаяПодсказка</name> - <id>1691</id> + <name>ПояснениеОбработкаОбновлениеКонфигурацииРасширеннаяПодсказка</name> + <id>1702</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2364,7 +2373,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>ПояснениеОбработкаОбновлениеКонфигурацииОткрытьКонтекстноеМеню</name> + <name>ПояснениеОбработкаОбновлениеКонфигурацииКонтекстноеМеню</name> <id>1462</id> <autoFill>true</autoFill> </contextMenu> @@ -2396,8 +2405,8 @@ <width>43</width> <horizontalStretch>false</horizontalStretch> <extendedTooltip> - <name>ГруппаОбновлениеКонфигурацииРасширеннаяПодсказка</name> - <id>1689</id> + <name>ГруппаОбработкаОбновлениеКонфигурацииРасширеннаяПодсказка</name> + <id>1700</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2440,7 +2449,7 @@ </handlers> <extendedTooltip> <name>ДетализироватьОбновлениеИБВЖурналеРегистрацииРасширеннаяПодсказка</name> - <id>1693</id> + <id>1704</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2474,7 +2483,7 @@ </userVisible> <extendedTooltip> <name>ПояснениеДетализироватьОбновлениеИБВЖурналеРегистрацииРасширеннаяПодсказка</name> - <id>1695</id> + <id>1706</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2514,7 +2523,7 @@ <horizontalStretch>false</horizontalStretch> <extendedTooltip> <name>ГруппаДетализироватьОбновлениеИБВЖурналеРегистрацииРасширеннаяПодсказка</name> - <id>1692</id> + <id>1703</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2547,7 +2556,7 @@ </toolTip> <extendedTooltip> <name>Колонки1РасширеннаяПодсказка</name> - <id>1688</id> + <id>1699</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2565,50 +2574,93 @@ </extInfo> </items> <items xsi:type="form:FormGroup"> - <name>ГруппаОткрытьОписаниеИзмененийСистемы</name> - <id>1464</id> - <items xsi:type="form:Button"> - <name>ОткрытьОписаниеИзмененийСистемы</name> - <id>1463</id> + <name>Колонки2</name> + <id>1627</id> + <items xsi:type="form:FormGroup"> + <name>ГруппаОткрытьОписаниеИзмененийСистемы</name> + <id>1464</id> + <items xsi:type="form:Button"> + <name>ОткрытьОписаниеИзмененийСистемы</name> + <id>1463</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>ОткрытьОписаниеИзмененийСистемыРасширеннаяПодсказка</name> + <id>1709</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <type>Hyperlink</type> + <commandName>CommonForm.ОписаниеИзмененийСистемы.StandardCommand.Open</commandName> + <buttonImportance>Normal</buttonImportance> + <representation>Auto</representation> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <representationInContextMenu>Auto</representationInContextMenu> + </items> + <items xsi:type="form:Decoration"> + <name>ПояснениеОткрытьОписаниеИзмененийСистемы</name> + <id>1465</id> + <title> + <key>ru</key> + <value>История изменений по версиям программы.</value> + + true + true + + true + + + ПояснениеОткрытьОписаниеИзмененийСистемыРасширеннаяПодсказка + 1710 + Label + true + true + + Left + + + + ПояснениеОткрытьОписаниеИзмененийСистемыКонтекстноеМеню + 1466 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + true true true - - ОткрытьОписаниеИзмененийСистемыРасширеннаяПодсказка - 1697 - Label - true - true - - Left - - - Hyperlink - CommonForm.ОписаниеИзмененийСистемы.StandardCommand.Open - Normal - Auto - true - true - UserCmds - Auto - - - ПояснениеОткрытьОписаниеИзмененийСистемы - 1465 <key>ru</key> - <value>История изменений по версиям программы.</value> + <value>Группа открыть описание изменений системы</value> - true - true - - true - + + ru + Группа открыть описание изменений системы + + 43 + false - ПояснениеОткрытьОписаниеИзмененийСистемыРасширеннаяПодсказка - 1698 + ГруппаОткрытьОписаниеИзмененийСистемыРасширеннаяПодсказка + 1708 Label true true @@ -2616,19 +2668,115 @@ Left - - ПояснениеОткрытьОписаниеИзмененийСистемыКонтекстноеМеню - 1466 - true - - Label - true - true - - Style.ПоясняющийТекст - - - Left + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаОтложеннаяОбработкаДанных + 1628 + + ОтложеннаяОбработкаДанных + 1629 + true + true + + true + + + ОтложеннаяОбработкаДанныхРасширеннаяПодсказка + 1712 + Label + true + true + + Left + + + Hyperlink + Form.Command.ОтложеннаяОбработкаДанных + Normal + Auto + true + true + UserCmds + Auto + + + ПояснениеОтложеннаяОбработкаДанных + 1630 + + <key>ru</key> + <value>Ход выполнения отложенных процедур обновления версии программы</value> + + true + true + + true + + + ПояснениеОтложеннаяОбработкаДанныхРасширеннаяПодсказка + 1713 + Label + true + true + + Left + + + + ПояснениеОтложеннаяОбработкаДанныхКонтекстноеМеню + 1631 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Группа отложенная обработка данных</value> + + + ru + Группа отложенная обработка данных + + 43 + + ГруппаОтложеннаяОбработкаДанныхРасширеннаяПодсказка + 1711 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto true @@ -2636,19 +2784,9 @@ true - - <key>ru</key> - <value>Группа открыть описание изменений системы</value> - - - ru - Группа открыть описание изменений системы - - 43 - false - ГруппаОткрытьОписаниеИзмененийСистемыРасширеннаяПодсказка - 1696 + Колонки2РасширеннаяПодсказка + 1707 Label true true @@ -2658,7 +2796,6 @@ UsualGroup - Vertical Auto true true @@ -2687,7 +2824,7 @@ false ГруппаОбновлениеИОписаниеИзмененийРасширеннаяПодсказка - 1687 + 1698 Label true true @@ -2713,6 +2850,10 @@ -1 Left + + NotificationProcessing + ОбработкаОповещения + OnCreateAtServer ПриСозданииНаСервере @@ -2780,90 +2921,6 @@ - - ПоддержкаРезервногоКопированияВМоделиСервиса - - <key>ru</key> - <value>Поддержка резервного копирования в модели сервиса</value> - - 2 - - Boolean - - - true - - - true - - - - ЗагрузитьКлассификаторБанков - - <key>ru</key> - <value>Загрузить классификатор банков</value> - - 1 - - ru - Загрузить классификатор банков - - - true - - - - ЗагрузитьКлассификаторБанков - - - Auto - Auto - - - АдресныйКлассификатор - - <key>ru</key> - <value>Адресный классификатор</value> - - 2 - - ru - Адресный классификатор - - - true - - - - ОткрытьАдресныйКлассификатор - - - Auto - Auto - - - ЗагрузитьКурсыВалют - - <key>ru</key> - <value>Загрузить курсы валют</value> - - 3 - - ru - Загрузить курсы валют с веб-сайта РБК - - - true - - - - ЗагрузитьКурсыВалют - - - FunctionalOption.СтандартныеПодсистемыВЛокальномРежиме - Auto - Auto - УправлениеПолнотекстовымПоискомИИзвлечениемТекстов @@ -2886,6 +2943,91 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>РегистрСведенийАдресныйКлассификатор</name> + <title> + <key>ru</key> + <value>Адресный классификатор</value> + + 1 + + ru + + + + true + + + + ОткрытьАдресныйКлассификатор + + + Auto + Auto + + + ОбработкаЗагрузкаКурсовВалют + + <key>ru</key> + <value>Загрузить курсы валют</value> + + 2 + + ru + Загрузить курсы валют с веб-сайта РБК + + + true + + + + ОбработкаЗагрузкаКурсовВалют + + + FunctionalOption.СтандартныеПодсистемыВЛокальномРежиме + Auto + Auto + + + ЗагрузитьКлассификаторБанков + + <key>ru</key> + <value>Загрузить классификатор банков</value> + + 3 + + ru + Загрузить классификатор банков + + + true + + + + ЗагрузитьКлассификаторБанков + + + Auto + Auto + + + ОтложеннаяОбработкаДанных + + <key>ru</key> + <value>Отложенная обработка данных</value> + + 5 + + true + + + + ОтложеннаяОбработкаДанных + + + Auto + Auto + diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Help/ru.html index 8564a5619..d9b61810e 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Help/ru.html @@ -4,7 +4,7 @@ TD { VERTICAL-ALIGN: top } -В данной панели осуществляется контроль за состоянием программы, резервное копирование и восстановление, обновление версии, оптимизация быстродействия.

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

            diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Module.bsl index 80ed8d713..2d851da81 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/ПоддержкаИОбслуживание/Module.bsl @@ -14,29 +14,80 @@ РежимРаботы = ОбщегоНазначенияПовтИсп.РежимРаботыПрограммы(); РежимРаботы = Новый ФиксированнаяСтруктура(РежимРаботы); - Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных") Тогда - Модуль = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("РезервноеКопированиеОбластейДанных"); - ПоддержкаРезервногоКопированияВМоделиСервиса = Модуль.РезервноеКопированиеИспользуется(); - КонецЕсли; - // Настройки видимости при запуске - Элементы.ГруппаОбработкаРегламентныеИФоновыеЗадания.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; - Элементы.ГруппаОбработкаУправлениеИтогамиИАгрегатамиОткрыть.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; - Элементы.ГруппаУправлениеПолнотекстовымПоискомИИзвлечениемТекстов.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; - Элементы.ГруппаРезервноеКопированиеИВосстановление.Видимость = РежимРаботы.Локальный И РежимРаботы.ЭтоАдминистраторСистемы ИЛИ РежимРаботы.МодельСервиса И РежимРаботы.ЭтоАдминистраторПрограммы И ПоддержкаРезервногоКопированияВМоделиСервиса; - Элементы.ГруппаВосстановлениеРезервнойКопии.Видимость = РежимРаботы.Локальный И РежимРаботы.ЭтоАдминистраторСистемы; - Элементы.ГруппаВосстановлениеРезервнойКопииВМоделиСервиса.Видимость = РежимРаботы.МодельСервиса И РежимРаботы.ЭтоАдминистраторПрограммы И ПоддержкаРезервногоКопированияВМоделиСервиса; - Элементы.ГруппаОценкаПроизводительности.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; - Элементы.ГруппаКлассификаторы.Видимость = РежимРаботы.Локальный; - Элементы.ГруппаЗагрузитьКлассификаторБанков.Видимость = РежимРаботы.Локальный И РежимРаботы.ЭтоАдминистраторСистемы; + + // СтандартныеПодсистемы.РегламентныеЗадания + Элементы.ГруппаОбработкаРегламентныеИФоновыеЗадания.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.РегламентныеЗадания + + // СтандартныеПодсистемы.УправлениеИтогамиИАгрегатами + Элементы.ГруппаОбработкаУправлениеИтогамиИАгрегатамиОткрыть.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.УправлениеИтогамиИАгрегатами + + // СтандартныеПодсистемы.ПолнотекстовыйПоиск + Элементы.ГруппаУправлениеПолнотекстовымПоискомИИзвлечениемТекстов.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.ПолнотекстовыйПоиск + + // СтандартныеПодсистемы.РезервноеКопированиеИБ + ПоддержкаРезервногоКопированияВМоделиСервиса = Истина; + // СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных + ПоддержкаРезервногоКопированияВМоделиСервиса = РезервноеКопированиеОбластейДанных.РезервноеКопированиеИспользуется(); + // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных + Элементы.ГруппаРезервноеКопированиеИВосстановление.Видимость = ((РежимРаботы.Локальный Или РежимРаботы.Автономный) И РежимРаботы.ЭтоАдминистраторСистемы) + ИЛИ (РежимРаботы.МодельСервиса И РежимРаботы.ЭтоАдминистраторПрограммы И ПоддержкаРезервногоКопированияВМоделиСервиса); + ОбновитьНастройкиРезервногоКопирования(); + Элементы.ГруппаВосстановлениеРезервнойКопии.Видимость = (РежимРаботы.Локальный Или РежимРаботы.Автономный) И РежимРаботы.ЭтоАдминистраторСистемы; + Элементы.ГруппаВосстановлениеРезервнойКопииВМоделиСервиса.Видимость = РежимРаботы.МодельСервиса И РежимРаботы.ЭтоАдминистраторПрограммы + И ПоддержкаРезервногоКопированияВМоделиСервиса; + // Конец СтандартныеПодсистемы.РезервноеКопированиеИБ + + // СтандартныеПодсистемы.ОценкаПроизводительности + Элементы.ГруппаОценкаПроизводительности.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.ОценкаПроизводительности + + Элементы.ГруппаКлассификаторы.Видимость = РежимРаботы.Локальный Или РежимРаботы.Автономный; + + // СтандартныеПодсистемы.АдресныйКлассификатор + Элементы.ГруппаРегистрСведенийАдресныйКлассификатор.Видимость = РежимРаботы.Локальный Или РежимРаботы.Автономный; + // Конец СтандартныеПодсистемы.АдресныйКлассификатор + + // СтандартныеПодсистемы.Валюты + Элементы.ГруппаОбработкаЗагрузкаКурсовВалют.Видимость = РежимРаботы.Локальный; + // Конец СтандартныеПодсистемы.Валюты + + // СтандартныеПодсистемы.Банки + Элементы.ГруппаЗагрузитьКлассификаторБанков.Видимость = РежимРаботы.Локальный И РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.Банки + + // СтандартныеПодсистемы.ЗащитаПерсональныхДанных Элементы.ГруппаОткрытьНастройкиРегистрацииСобытийДоступаКПерсональнымДанным.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; - Элементы.ГруппаОбновлениеКонфигурации.Видимость = РежимРаботы.Локальный И РежимРаботы.ЭтоАдминистраторСистемы; - Элементы.ГруппаДетализироватьОбновлениеИБВЖурналеРегистрации.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.ЗащитаПерсональныхДанных + + // СтандартныеПодсистемы.ОбновлениеКонфигурации + Элементы.ГруппаОбработкаОбновлениеКонфигурации.Видимость = РежимРаботы.Локальный И РежимРаботы.ЭтоАдминистраторСистемы И Не РежимРаботы.ЭтоLinuxКлиент; + // Конец СтандартныеПодсистемы.ОбновлениеКонфигурации + + // СтандартныеПодсистемы.ОбновлениеВерсииИБ + Элементы.ГруппаДетализироватьОбновлениеИБВЖурналеРегистрации.Видимость = РежимРаботы.ЭтоАдминистраторСистемы; + // Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ // Обновление состояния элементов УстановитьДоступность(); КонецПроцедуры +// СтандартныеПодсистемы.РезервноеКопированиеИБ +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + + Если ИмяСобытия = "ЗакрытаФормаНастройкиРезервногоКопирования" Тогда + ОбновитьНастройкиРезервногоКопирования(); + КонецЕсли; + + +КонецПроцедуры +// Конец СтандартныеПодсистемы.РезервноеКопированиеИБ + &НаКлиенте Процедура ПриЗакрытии() ОбновитьИнтерфейсПрограммы(); @@ -45,25 +96,32 @@ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ +// СтандартныеПодсистемы.РезервноеКопированиеИБ &НаКлиенте Процедура РезервноеКопированиеПрограммыНажатие(Элемент) - Если РежимРаботы.Локальный Тогда - ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма", , ЭтаФорма); - ИначеЕсли РежимРаботы.МодельСервиса Тогда + // СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных + Если РежимРаботы.МодельСервиса Тогда ОткрытьФорму("ОбщаяФорма.СозданиеРезервнойКопии", , ЭтаФорма); + Возврат; КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных + + ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма", , ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура НастройкаРезервногоКопированияНажатие(Элемент) - Если РежимРаботы.Локальный Тогда - ОткрытьФорму("Обработка.НастройкаРезервногоКопированияИБ.Форма", , ЭтаФорма); - ИначеЕсли РежимРаботы.МодельСервиса Тогда - ОткрытьФорму("ОбщаяФорма.НастройкиРезервногоКопированияПриложений", , ЭтаФорма); + // СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных + Если РежимРаботы.МодельСервиса Тогда + ОткрытьФорму("Обработка.НастройкаРезервногоКопированияПриложения.Форма", , ЭтаФорма); + Возврат; КонецЕсли; + // Конец СтандартныеПодсистемы.РаботаВМоделиСервиса.РезервноеКопированиеОбластейДанных + + ОткрытьФорму("Обработка.НастройкаРезервногоКопированияИБ.Форма", , ЭтаФорма); КонецПроцедуры @@ -73,47 +131,68 @@ ОткрытьФорму("Обработка.РезервноеКопированиеИБ.Форма.ВосстановлениеДанныхИнформационнойБазыИзРезервнойКопии", , ЭтаФорма); КонецПроцедуры +// Конец СтандартныеПодсистемы.РезервноеКопированиеИБ +// СтандартныеПодсистемы.ОценкаПроизводительности &НаКлиенте Процедура ВыполнятьЗамерыПроизводительностиПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.ОценкаПроизводительности +// СтандартныеПодсистемы.ОбновлениеВерсииИБ &НаКлиенте Процедура ДетализироватьОбновлениеИБВЖурналеРегистрацииПриИзменении(Элемент) Подключаемый_ПриИзмененииРеквизита(Элемент); КонецПроцедуры +// Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// СтандартныеПодсистемы.Валюты &НаКлиенте -Процедура ЗагрузитьКурсыВалют(Команда) +Процедура ОбработкаЗагрузкаКурсовВалют(Команда) ОткрытьФорму("Обработка.ЗагрузкаКурсовВалют.Форма"); КонецПроцедуры +// Конец СтандартныеПодсистемы.Валюты +// СтандартныеПодсистемы.Банки &НаКлиенте Процедура ЗагрузитьКлассификаторБанков(Команда) ОткрытьФорму("Справочник.КлассификаторБанковРФ.Форма.ЗагрузкаКлассификатора"); КонецПроцедуры +// Конец СтандартныеПодсистемы.Банки +// СтандартныеПодсистемы.АдресныйКлассификатор &НаКлиенте Процедура ОткрытьАдресныйКлассификатор(Команда) ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.АдресныйКлассификатор"); КонецПроцедуры +// Конец СтандартныеПодсистемы.АдресныйКлассификатор +// СтандартныеПодсистемы.ПолнотекстовыйПоиск &НаКлиенте Процедура ОбработкаУправлениеПолнотекстовымПоиском(Команда) ОткрытьФорму("Обработка.ПанельАдминистрированияБСП.Форма.УправлениеПолнотекстовымПоискомИИзвлечениемТекстов", , ЭтаФорма); КонецПроцедуры +// Конец СтандартныеПодсистемы.ПолнотекстовыйПоиск + +// СтандартныеПодсистемы.ОбновлениеВерсииИБ +&НаКлиенте +Процедура ОтложеннаяОбработкаДанных(Команда) + ПараметрыФормы = Новый Структура("ОткрытиеИзПанелиАдминистрирования", Истина); + ОткрытьФорму("Обработка.ОбновлениеИнформационнойБазы.Форма.ИндикацияХодаОтложенногоОбновленияИБ", ПараметрыФормы); +КонецПроцедуры +// Конец СтандартныеПодсистемы.ОбновлениеВерсииИБ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -133,9 +212,7 @@ #КонецЕсли КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -201,8 +278,11 @@ КонстантаМенеджер.Установить(КонстантаЗначение); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов + КонецЕсли; КонецПроцедуры @@ -212,12 +292,23 @@ Если РежимРаботы.ЭтоАдминистраторСистемы Тогда + // СтандартныеПодсистемы.ОценкаПроизводительности Если РеквизитПутьКДанным = "НаборКонстант.ВыполнятьЗамерыПроизводительности" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОбработкаОценкаПроизводительности", "Доступность", НаборКонстант.ВыполнятьЗамерыПроизводительности); + Элементы.ОбработкаОценкаПроизводительности.Доступность = НаборКонстант.ВыполнятьЗамерыПроизводительности; КонецЕсли; + // Конец СтандартныеПодсистемы.ОценкаПроизводительности КонецЕсли; КонецПроцедуры - +&НаСервере +Процедура ОбновитьНастройкиРезервногоКопирования() + + // СтандартныеПодсистемы.РезервноеКопированиеИБ + Если (РежимРаботы.Локальный Или РежимРаботы.Автономный) И РежимРаботы.ЭтоАдминистраторСистемы Тогда + Элементы.ПояснениеНастройкаРезервногоКопирования.Заголовок = РезервноеКопированиеИБСервер.ТекущаяНастройкаРезервногоКопирования(); + КонецЕсли; + // Конец СтандартныеПодсистемы.РезервноеКопированиеИБ + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Form.form b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Form.form index 62ad97429..c99f4cdf9 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Form.form +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Form.form @@ -1052,12 +1052,12 @@ РезультатыСинхронизацииДанных <key>ru</key> - <value>Результаты синхронизации данных</value> + <value>Предупреждения при синхронизации данных</value> 1 ru - Результаты синхронизации данных + Предупреждения, возникающие в процессе синхронизации данных true diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Help/ru.html index b5588fb61..9248efa2d 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Help/ru.html @@ -4,14 +4,14 @@ TD { VERTICAL-ALIGN: top } - +

            В данной панели осуществляется настройка синхронизации данных с другими программами и организация совместной работы в распределенной информационной базе.

          • Журнал регистрации
          • Просмотр событий и действий, которые происходили в регламентных заданиях или в процессе работы пользователей в программе.
          • Активные пользователи
          • +
          • Предупреждения при синхронизации данных
          • Синхронизация данных
          • Флажок синхронизации данных с другими программами, например с 1С:Бухгалтерия предприятия, редакция 3.0.
          • Синхронизация данных
          • Настройка и выполнение синхронизации данных с другими программами.
            -
          • Результаты синхронизации данных
          • Просмотр непроведенных документов, незаполненных реквизитов, конфликтов и непринятых по дате запрета.
          • Префикс этой информационной базы
          • Префикс добавляется автоматически к кодам элементов справочников и номерам документов для того, чтобы различать программы, в которых они были введены, и избежать дублирования данных.
            diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Module.bsl index 44b8d9653..a50885c6c 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанных/Module.bsl @@ -74,8 +74,7 @@ ОткрытьФорму( "РегистрСведений.ДатыЗапретаИзменения.Форма.ДатыЗапретаИзменения", Новый Структура("ДатыЗапретаЗагрузкиДанных", Истина), - ЭтаФорма - ); + ЭтаФорма); КонецПроцедуры &НаКлиенте @@ -101,9 +100,7 @@ #КонецЕсли КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -169,8 +166,10 @@ КонстантаМенеджер.Установить(КонстантаЗначение); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов КонецЕсли; КонецПроцедуры @@ -180,9 +179,9 @@ Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьСинхронизациюДанных" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ПрефиксУзлаРаспределеннойИнформационнойБазы", "Доступность", НаборКонстант.ИспользоватьСинхронизациюДанных); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "НастройкиСинхронизацииДанных", "Доступность", НаборКонстант.ИспользоватьСинхронизациюДанных); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ДатыЗапретаЗагрузкиДанных", "Доступность", НаборКонстант.ИспользоватьСинхронизациюДанных); + Элементы.ПрефиксУзлаРаспределеннойИнформационнойБазы.Доступность = НаборКонстант.ИспользоватьСинхронизациюДанных; + Элементы.НастройкиСинхронизацииДанных.Доступность = НаборКонстант.ИспользоватьСинхронизациюДанных; + Элементы.ДатыЗапретаЗагрузкиДанных.Доступность = НаборКонстант.ИспользоватьСинхронизациюДанных; diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Help/ru.html index 616b4c990..6e0d78ac7 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Help/ru.html @@ -4,7 +4,7 @@ TD { VERTICAL-ALIGN: top } - +

            В данной панели осуществляется настройка синхронизации данных с моими приложениями.

            diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Module.bsl index 963d8be7a..a4b5a50de 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораАбонента/Module.bsl @@ -35,8 +35,7 @@ ОткрытьФорму( "РегистрСведений.ДатыЗапретаИзменения.Форма.ДатыЗапретаИзменения", Новый Структура("ДатыЗапретаЗагрузкиДанных", Истина), - ЭтаФорма - ); + ЭтаФорма); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -57,9 +56,7 @@ #КонецЕсли КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -123,8 +120,10 @@ КонстантаМенеджер.Установить(КонстантаЗначение); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов КонецЕсли; КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Form.form b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Form.form index 83ba85f98..e1a8bad9b 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Form.form +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Form.form @@ -31,7 +31,7 @@ ИспользоватьСинхронизациюДанныхРасширеннаяПодсказка - 2053 + 2056 Label true true @@ -66,7 +66,7 @@ ПояснениеСинхронизацияДанныхСПриложениямиВИнтернете1РасширеннаяПодсказка - 2055 + 2058 Label true true @@ -104,7 +104,7 @@ ГруппаСинхронизацияДанныхФлагРасширеннаяПодсказка - 2052 + 2055 Label true true @@ -137,7 +137,7 @@ СинхронизацияДанныхГруппаРасширеннаяПодсказка - 2051 + 2054 Label true true @@ -168,7 +168,7 @@ Декорация2РасширеннаяПодсказка - 2057 + 2060 Label true true @@ -216,7 +216,7 @@ ИспользоватьСинхронизациюДанныхВМоделиСервисаСПриложениемВИнтернетеРасширеннаяПодсказка - 2060 + 2063 Label true true @@ -250,7 +250,7 @@ ПояснениеСинхронизацияДанныхСПриложениямиВИнтернетеРасширеннаяПодсказка - 2062 + 2065 Label true true @@ -288,7 +288,7 @@ СинхронизацияДанныхСПриложениямиВИнтернетеРасширеннаяПодсказка - 2059 + 2062 Label true true @@ -331,7 +331,7 @@ ИспользоватьСинхронизациюДанныхВМоделиСервисаСЛокальнойПрограммойРасширеннаяПодсказка - 2064 + 2067 Label true true @@ -365,7 +365,7 @@ ПояснениеСинхронизацияДанныхСПрограммамиВЛокальномРежимеРасширеннаяПодсказка - 2066 + 2069 Label true true @@ -395,7 +395,7 @@ СинхронизацияДанныхСПрограммамиВЛокальномРежимеРасширеннаяПодсказка - 2063 + 2066 Label true true @@ -438,7 +438,7 @@ ИспользоватьАвтономнуюРаботуВМоделиСервисаРасширеннаяПодсказка - 2068 + 2071 Label true true @@ -472,7 +472,7 @@ ПояснениеАвтономнаяРаботаРасширеннаяПодсказка - 2070 + 2073 Label true true @@ -510,7 +510,7 @@ АвтономнаяРаботаРасширеннаяПодсказка - 2067 + 2070 Label true true @@ -535,7 +535,7 @@ Группа1РасширеннаяПодсказка - 2058 + 2061 Label true true @@ -568,7 +568,7 @@ СинхронизацияДанныхПодчиненнаяГруппировкаРасширеннаяПодсказка - 2056 + 2059 Label true true @@ -600,7 +600,7 @@ ОбщиеПараметрыДляВсехОбластейДанныхРасширеннаяПодсказка - 2050 + 2053 Label true true @@ -631,7 +631,7 @@ МониторСинхронизацииДанныхРасширеннаяПодсказка - 2072 + 2075 Label true true @@ -662,7 +662,7 @@ ПояснениеМониторСинхронизацииДанныхРасширеннаяПодсказка - 2073 + 2076 Label true true @@ -698,7 +698,7 @@ НастройкиТранспортаОбменаРасширеннаяПодсказка - 2075 + 2078 Label true true @@ -729,7 +729,7 @@ ПояснениеНастройкиТранспортаОбменаРасширеннаяПодсказка - 2076 + 2079 Label true true @@ -762,7 +762,7 @@ НастройкиТранспортаОбменаОбластейДанныхРасширеннаяПодсказка - 2077 + 2080 Label true true @@ -793,7 +793,7 @@ ПояснениеНастройкиТранспортаОбменаОбластейДанныхРасширеннаяПодсказка - 2078 + 2081 Label true true @@ -823,7 +823,7 @@ НастройкиТранспортаОбменаГруппаРасширеннаяПодсказка - 2074 + 2077 Label true true @@ -842,6 +842,70 @@ Auto + + ПравилаДляОбменаДанными + 2050 + true + true + + true + + + ПравилаДляОбменаДаннымиРасширеннаяПодсказка + 2082 + Label + true + true + + Left + + + Hyperlink + Form.Command.ПравилаДляОбменаДанными + Normal + Auto + true + true + UserCmds + Auto + + + ПояснениеПравилаДляОбменаДанными + 2051 + + <key>ru</key> + <value>Правила конвертации и правила регистрации объектов.</value> + + true + true + + true + + + ПояснениеПравилаДляОбменаДаннымиРасширеннаяПодсказка + 2083 + Label + true + true + + Left + + + + ПояснениеПравилаДляОбменаДаннымиКонтекстноеМеню + 2052 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + true true @@ -853,7 +917,7 @@ ГруппаСинхронизацияДанныхМониторСинхронизацииДанныхРасширеннаяПодсказка - 2071 + 2074 Label true true @@ -981,6 +1045,28 @@ Auto Auto + + ПравилаДляОбменаДанными + + <key>ru</key> + <value>Правила для обмена данными</value> + + 4 + + ru + Правила для обмена данными + + + true + + + + ПравилаДляОбменаДанными + + + Auto + Auto + diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Help/ru.html index 616b4c990..6e0d78ac7 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Help/ru.html @@ -4,7 +4,7 @@ TD { VERTICAL-ALIGN: top } - +

            В данной панели осуществляется настройка синхронизации данных с моими приложениями.

          • Синхронизация данных
          • diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Module.bsl index adeadb777..4d2cd65e7 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/СинхронизацияДанныхДляАдминистратораСервиса/Module.bsl @@ -54,6 +54,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ПравилаДляОбменаДанными(Команда) + + ОткрытьФорму("РегистрСведений.ПравилаДляОбменаДанными.ФормаСписка",, ЭтаФорма); + +КонецПроцедуры + &НаКлиенте Процедура ИспользоватьСинхронизациюДанныхПриИзменении(Элемент) @@ -106,9 +113,7 @@ #КонецЕсли КонецЕсли; - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -174,8 +179,10 @@ КонстантаМенеджер.Установить(КонстантаЗначение); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов КонецЕсли; КонецПроцедуры @@ -184,8 +191,8 @@ Процедура УстановитьДоступность(РеквизитПутьКДанным = "") Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьСинхронизациюДанных" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "СинхронизацияДанныхПодчиненнаяГруппировка", "Доступность", НаборКонстант.ИспользоватьСинхронизациюДанных); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаСинхронизацияДанныхМониторСинхронизацииДанных", "Доступность", НаборКонстант.ИспользоватьСинхронизациюДанных); + Элементы.СинхронизацияДанныхПодчиненнаяГруппировка.Доступность = НаборКонстант.ИспользоватьСинхронизациюДанных; + Элементы.ГруппаСинхронизацияДанныхМониторСинхронизацииДанных.Доступность = НаборКонстант.ИспользоватьСинхронизациюДанных; КонецЕсли; КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/УправлениеПолнотекстовымПоискомИИзвлечениемТекстов/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/УправлениеПолнотекстовымПоискомИИзвлечениемТекстов/Help/ru.html index 5e6582531..991060780 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/УправлениеПолнотекстовымПоискомИИзвлечениемТекстов/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/УправлениеПолнотекстовымПоискомИИзвлечениемТекстов/Help/ru.html @@ -4,7 +4,7 @@ TD { VERTICAL-ALIGN: top } - +

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

            Команды управления полнотекстовым поиском:

          • Синхронизация данных
          • diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/УправлениеПолнотекстовымПоискомИИзвлечениемТекстов/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/УправлениеПолнотекстовымПоискомИИзвлечениемТекстов/Module.bsl index 744176fae..6c498948f 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/УправлениеПолнотекстовымПоискомИИзвлечениемТекстов/Module.bsl +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/УправлениеПолнотекстовымПоискомИИзвлечениемТекстов/Module.bsl @@ -67,9 +67,7 @@ ОбновитьИнтерфейс = Истина; #КонецЕсли - Если Результат.Свойство("ОповещениеФорм") Тогда - Оповестить(Результат.ОповещениеФорм.ИмяСобытия, Результат.ОповещениеФорм.Параметр, Результат.ОповещениеФорм.Источник); - КонецЕсли; + СтандартныеПодсистемыКлиент.ПоказатьРезультатВыполнения(ЭтаФорма, Результат); КонецПроцедуры @@ -80,8 +78,7 @@ Процедура ОбновитьИндекс(Команда) Состояние( НСтр("ru = 'Идет обновление полнотекстового индекса... - |Пожалуйста, подождите.'") - ); + |Пожалуйста, подождите.'")); ОбновитьИндексСервер(); @@ -92,8 +89,7 @@ Процедура ОчиститьИндекс(Команда) Состояние( НСтр("ru = 'Идет очистка полнотекстового индекса... - |Пожалуйста, подождите.'") - ); + |Пожалуйста, подождите.'")); ОчиститьИндексСервер(); @@ -117,7 +113,7 @@ &НаКлиенте Процедура ЗапуститьИзвлечениеТекстов(Команда) - Если РежимРаботы.Локальный Тогда + Если РежимРаботы.Локальный Или РежимРаботы.Автономный Тогда ИмяОткрываемойФормы = "Обработка.АвтоматическоеИзвлечениеТекстов.Форма"; Иначе ИмяОткрываемойФормы = "Обработка.АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных.Форма"; @@ -149,16 +145,14 @@ Если МетаданныеПредопределенного = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Регламентное задание ""%1"" не найдено в метаданных.'"), - ИмяПредопределенного - ); + ИмяПредопределенного); КонецЕсли; РегламентноеЗадание = РегламентныеЗадания.НайтиПредопределенное(МетаданныеПредопределенного); Если РегламентноеЗадание = Неопределено Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Регламентное задание ""%1"" не найдено.'"), - ИмяПредопределенного - ); + ИмяПредопределенного); КонецЕсли; Возврат РегламентноеЗадание.УникальныйИдентификатор; @@ -251,8 +245,10 @@ КонстантаМенеджер.Установить(КонстантаЗначение); КонецЕсли; - ОповещениеФорм = Новый Структура("ИмяСобытия, Параметр, Источник", "Запись_НаборКонстант", Новый Структура, КонстантаИмя); - Результат.Вставить("ОповещениеФорм", ОповещениеФорм); + СтандартныеПодсистемыКлиентСервер.РезультатВыполненияДобавитьОповещениеОткрытыхФорм(Результат, "Запись_НаборКонстант", Новый Структура, КонстантаИмя); + // СтандартныеПодсистемы.ВариантыОтчетов + ВариантыОтчетов.ДобавитьОповещениеПриИзмененииЗначенияКонстанты(Результат, КонстантаМенеджер); + // Конец СтандартныеПодсистемы.ВариантыОтчетов КонецЕсли; КонецПроцедуры @@ -268,15 +264,15 @@ Если РеквизитПутьКДанным = "ИзвлекатьТекстыФайловНаСервере" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаРедактироватьРегламентноеЗадание", "Доступность", НаборКонстант.ИзвлекатьТекстыФайловНаСервере); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаЗапуститьИзвлечениеТекстов", "Доступность", НЕ НаборКонстант.ИзвлекатьТекстыФайловНаСервере); + Элементы.ГруппаРедактироватьРегламентноеЗадание.Доступность = НаборКонстант.ИзвлекатьТекстыФайловНаСервере; + Элементы.ГруппаЗапуститьИзвлечениеТекстов.Доступность = НЕ НаборКонстант.ИзвлекатьТекстыФайловНаСервере; КонецЕсли; Если РеквизитПутьКДанным = "НаборКонстант.ИспользоватьПолнотекстовыйПоиск" ИЛИ РеквизитПутьКДанным = "" Тогда - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаУправлениеПолнотекстовымПоиском", "Доступность", НаборКонстант.ИспользоватьПолнотекстовыйПоиск); - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ГруппаАвтоматическоеИзвлечениеТекстов", "Доступность", НаборКонстант.ИспользоватьПолнотекстовыйПоиск); + Элементы.ГруппаУправлениеПолнотекстовымПоиском.Доступность = НаборКонстант.ИспользоватьПолнотекстовыйПоиск; + Элементы.ГруппаАвтоматическоеИзвлечениеТекстов.Доступность = НаборКонстант.ИспользоватьПолнотекстовыйПоиск; КонецЕсли; @@ -298,7 +294,7 @@ СтатусИндекса = НСтр("ru = 'Полнотекстовый поиск отключен'"); КонецЕсли; - ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы, "ОбновитьИндекс", "Доступность", ФлагДоступность); + Элементы.ОбновитьИндекс.Доступность = ФлагДоступность; КонецЕсли; diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Форма/Form.form b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Форма/Form.form new file mode 100644 index 000000000..643681dc9 --- /dev/null +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Форма/Form.form @@ -0,0 +1,43 @@ + + + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + String + + + + true + + + true + +
            true
            +
            + + + + +
            diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Форма/Module.bsl new file mode 100644 index 000000000..60eabfdab --- /dev/null +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Forms/Форма/Module.bsl @@ -0,0 +1,11 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Help/ru.html b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Help/ru.html index 8dfced4c5..8382c750c 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Help/ru.html +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/Help/ru.html @@ -1,4 +1,4 @@ - +

            В разделе "Настройка и администрирование" предусмотрены средства, при помощи которых можно изменять параметры работы, проводить регламентные операции и контролировать состояние программы.

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

            См. также:

            diff --git a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ПанельАдминистрированияБСП.mdo b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ПанельАдминистрированияБСП.mdo index ecb4555f0..330d2fbe2 100644 --- a/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ПанельАдминистрированияБСП.mdo +++ b/SSL/src/DataProcessors/ПанельАдминистрированияБСП/ПанельАдминистрированияБСП.mdo @@ -9,6 +9,7 @@ ru Панель администрирования БСП + DataProcessor.ПанельАдминистрированияБСП.Form.Форма ru @@ -154,6 +155,15 @@ PersonalComputer MobileDevice + + Форма + + ru + Форма + + PersonalComputer + MobileDevice + ПоддержкаИОбслуживание diff --git a/SSL/src/DataProcessors/ПереносФайловВТома/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПереносФайловВТома/Forms/Форма/Module.bsl index 8fb3fafe2..16cf606b4 100644 --- a/SSL/src/DataProcessors/ПереносФайловВТома/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ПереносФайловВТома/Forms/Форма/Module.bsl @@ -299,7 +299,8 @@ ИмяДляЖурнала = ВерсияСтруктура.Текст; ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Ошибка переноса файла в том'"), + НСтр("ru = 'Файлы.Ошибка переноса файла в том'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , ФайлСсылка, @@ -315,7 +316,8 @@ ИмяДляЖурнала = ВерсияСтруктура.Текст; ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Начат перенос файла в том'"), + НСтр("ru = 'Файлы.Начат перенос файла в том'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , ФайлСсылка, @@ -369,8 +371,7 @@ ВерсияСсылка.Расширение, ВерсияСсылка.Размер, ФайлСсылка.Зашифрован, - ВерсияСсылка.ДатаМодификацииУниверсальная // чтобы все файлы не попали в одну папку - за сегодняшний день - подставляем дату создания файла - ); + ВерсияСсылка.ДатаМодификацииУниверсальная); // чтобы все файлы не попали в одну папку - за сегодняшний день - подставляем дату создания файла ВерсияОбъект.ПутьКФайлу = ПутьКФайлуНаТоме; ВерсияОбъект.Том = СсылкаНаТом.Ссылка; @@ -386,7 +387,8 @@ РаботаСФайламиСлужебныйВызовСервера.УдалитьЗаписьИзРегистраХранимыеФайлыВерсий(ВерсияСсылка); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Завершен перенос файла в том'"), + НСтр("ru = 'Файлы.Завершен перенос файла в том'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , ФайлСсылка, @@ -408,7 +410,8 @@ МассивФайловСОшибками.Добавить(СтруктураОшибки); ЗаписьЖурналаРегистрации( - НСтр("ru = 'Файлы.Ошибка переноса файла в том'"), + НСтр("ru = 'Файлы.Ошибка переноса файла в том'", + ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()), УровеньЖурналаРегистрации.Информация, , ФайлСсылка, diff --git a/SSL/src/DataProcessors/ПереносФайловВТома/Help/ru.html b/SSL/src/DataProcessors/ПереносФайловВТома/Help/ru.html index f52b7756a..20b0433ef 100644 --- a/SSL/src/DataProcessors/ПереносФайловВТома/Help/ru.html +++ b/SSL/src/DataProcessors/ПереносФайловВТома/Help/ru.html @@ -1 +1 @@ -Обработка предназначена для переноса файлов, хранящихся в информационной базе в тома хранения файлов. При этом в настройках программы должна быть включена настройка "Хранить файлы в томах на диске". \ No newline at end of file +Обработка предназначена для переноса файлов, хранящихся в информационной базе в тома хранения файлов. При этом в настройках программы должна быть включена настройка "Хранить файлы в томах на диске". \ No newline at end of file diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Commands/ПолнотекстовыйПоиск/CommandModule.bsl b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Commands/ПолнотекстовыйПоиск/CommandModule.bsl index 455c5cdb6..018162669 100644 --- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Commands/ПолнотекстовыйПоиск/CommandModule.bsl +++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Commands/ПолнотекстовыйПоиск/CommandModule.bsl @@ -9,7 +9,6 @@ , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/УпрощеннаяФорма/Module.bsl b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/УпрощеннаяФорма/Module.bsl index 74f1361cc..f9336ce74 100644 --- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/УпрощеннаяФорма/Module.bsl +++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/УпрощеннаяФорма/Module.bsl @@ -7,6 +7,10 @@ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; + + Если ОбщегоНазначения.ПриСозданииФормыНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ) Тогда + Возврат; + КонецЕсли; ИсторияПоиска = ИсторияПоиска(); Если ТипЗнч(ИсторияПоиска) = Тип("Массив") Тогда diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Module.bsl index 35b549a71..b9313269b 100644 --- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Forms/Форма/Module.bsl @@ -105,17 +105,20 @@ КонецЕсли; Если (ЭлементHTML.id = "FullTextSearchListItem") Тогда - ЧастьURL = ЭлементHTML.pathName; - Позиция = СтроковыеФункцииКлиентСервер.НайтиСимволСКонца(ЧастьURL, "/"); + + Платформа83 = ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83(); + + ЧастьURL = ?(Платформа83, ЭлементHTML.outerHTML, ЭлементHTML.pathName); + Позиция = ?(Платформа83, Найти(ЧастьURL, "sel_num="), СтроковыеФункцииКлиентСервер.НайтиСимволСКонца(ЧастьURL, "/")); Если Позиция <> 0 Тогда - ЧастьURL = Сред(ЧастьURL, Позиция + 1); - КонецЕсли; - + ЧастьURL = ?(Платформа83, Сред(ЧастьURL, Позиция+9, 1), Сред(ЧастьURL, Позиция + 1)); + КонецЕсли; + НомерВСписке = Число(ЧастьURL); СтруктураРезультата = РезультатыПоиска[НомерВСписке].Значение; ВыбраннаяСтрока = СтруктураРезультата.Значение; - МассивОбъектов = СтруктураРезультата.ЗначенияДляОткрытия; - + МассивОбъектов = СтруктураРезультата.ЗначенияДляОткрытия; + Если МассивОбъектов.Количество() = 1 Тогда ОткрытьЗначениеПоиска(МассивОбъектов[0]); ИначеЕсли МассивОбъектов.Количество() <> 0 Тогда @@ -128,9 +131,10 @@ ОткрытьЗначениеПоиска(ВыбранныйОбъект.Значение); КонецЕсли; КонецЕсли; - + СтандартнаяОбработка = Ложь; КонецЕсли; + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -223,8 +227,7 @@ НСтр("ru = 'Показаны %1 - %2 из %3'"), Формат(ТекущаяПозиция + 1, "ЧН=0; ЧГ="), Формат(ТекущаяПозиция + РезультатыПоиска.Количество(), "ЧН=0; ЧГ="), - Формат(ПолноеКоличество, "ЧН=0; ЧГ=") - ); + Формат(ПолноеКоличество, "ЧН=0; ЧГ=")); Элементы.Далее.Доступность = (ПолноеКоличество - ТекущаяПозиция) > РезультатыПоиска.Количество(); Элементы.Назад.Доступность = (ТекущаяПозиция > 0); @@ -246,8 +249,7 @@ |
          • Убедитесь, что все слова написаны без ошибок. |
          • Попробуйте использовать другие ключевые слова. |
          • Попробуйте уменьшить количество искомых слов.'"), - СокрЛП(СтрокаПоиска) - ); + СокрЛП(СтрокаПоиска)); HTMLТекст = " @@ -405,8 +407,7 @@ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( "ПолнотекстовыйПоискСтрокиПолнотекстовогоПоиска", , - Строки - ); + Строки); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Help/ru.html b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Help/ru.html index 7a01f43fa..44a69acbf 100644 --- a/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Help/ru.html +++ b/SSL/src/DataProcessors/ПолнотекстовыйПоискВДанных/Help/ru.html @@ -1,4 +1,4 @@ - +

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

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

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

            diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form index 4b3f4f8c3..672bd3170 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Form.form @@ -6980,6 +6980,9 @@ true + + StdPicture.Refresh + ОбновитьИнформациюСопоставленияДляСтроки @@ -7071,7 +7074,7 @@ 2 ru - Выполнить загрузку данных всех таблиц + Получить данные всех таблиц true @@ -7097,7 +7100,7 @@ 3 ru - Выполнить загрузку данных + Получить данные true diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Module.bsl index 3fdd5f793..8f214e0ac 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Forms/Форма/Module.bsl @@ -44,8 +44,7 @@ Иначе - ОбменДаннымиСервер.СообщитьОбОшибке(НСтр("ru = 'Непосредственное открытие помощника не предусмотрено.'"), Отказ); - Возврат; + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); КонецЕсли; @@ -186,25 +185,25 @@ &НаКлиенте Процедура ДополнениеВыгрузкиОбщийПериодДокументовОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) - - Если ТипЗнч(ВыбранноеЗначение)<>Тип("Структура") Тогда - Возврат; - КонецЕсли; - - СтандартнаяОбработка = Ложь; - Если ВыбранноеЗначение.ДействиеВыбора=1 Тогда - // Отбор и период всех документов - УстановитьПараметрыДополненияВсехДокументов(ВыбранноеЗначение); - - ИначеЕсли ВыбранноеЗначение.ДействиеВыбора=2 Тогда - // Детальная настройка - УстановитьПараметрыДополненияДетально(ВыбранноеЗначение); - - ИначеЕсли ВыбранноеЗначение.ДействиеВыбора=3 Тогда - // Обновление настроек - ДополнениеВыгрузкиПредставлениеНастройки = ВыбранноеЗначение.ПредставлениеНастройки; - КонецЕсли; - + + Если ТипЗнч(ВыбранноеЗначение)<>Тип("Структура") Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + Если ВыбранноеЗначение.ДействиеВыбора=1 Тогда + // Отбор и период всех документов + УстановитьПараметрыДополненияВсехДокументов(ВыбранноеЗначение); + + ИначеЕсли ВыбранноеЗначение.ДействиеВыбора=2 Тогда + // Детальная настройка + УстановитьПараметрыДополненияДетально(ВыбранноеЗначение); + + ИначеЕсли ВыбранноеЗначение.ДействиеВыбора=3 Тогда + // Обновление настроек + ДополнениеВыгрузкиПредставлениеНастройки = ВыбранноеЗначение.ПредставлениеНастройки; + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -263,11 +262,10 @@ &НаКлиенте Процедура ОткрытьНастройкуРасписания(Команда) - ПараметрыФормы = Новый Структура("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы); - ОткрытьФормуМодально("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); + ПараметрыФормы = Новый Структура("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы); + ОткрытьФорму("Справочник.СценарииОбменовДанными.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // Страница СтраницаНачала @@ -429,7 +427,7 @@ &НаКлиенте Процедура ВыполнитьЗагрузкуДанныхВсехТаблиц(Команда) - НСтрока = НСтр("ru = 'Выполнить загрузку всех данных в информационную базу?'"); + НСтрока = НСтр("ru = 'Получить все данные в информационную базу?'"); Ответ = Вопрос(НСтрока, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Да); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; @@ -608,68 +606,65 @@ &НаКлиенте Процедура ДополнениеВыгрузкиИсторияОтборов(Команда) - - // Выбор из меню - списка - СписокВариантов = ПрочитатьСписокВариантовНастроекСервер(); - - Текст = НСтр("ru='Сохранить текущую настройку...'"); - СписокВариантов.Добавить(1, Текст, , БиблиотекаКартинок.СохранитьНастройкиОтчета); - - ВыбраныйВариант = ВыбратьИзМеню(СписокВариантов, Элементы.ДополнениеВыгрузкиИсторияОтборов); - Если ВыбраныйВариант=Неопределено Тогда - Возврат; - КонецЕсли; - - ПредставлениеНастройки = ВыбраныйВариант.Значение; - Если ТипЗнч(ПредставлениеНастройки)=Тип("Строка") Тогда - ТекстЗаголовка = НСтр("ru='Подтверждение'"); - ТекстВопроса = НСтр("ru='Восстановить настройки ""%1""?'"); - - ТекстВопроса = СтрЗаменить(ТекстВопроса, "%1", ПредставлениеНастройки); - Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); - Если Ответ=КодВозвратаДиалога.Да Тогда - ДополнениеВыгрузкиУстановитьНастройкиСервер(ПредставлениеНастройки); - КонецЕсли; - - ИначеЕсли ПредставлениеНастройки=1 Тогда - // Форма всех настроек - ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма.РедактированиеСоставаНастроек", - Новый Структура("ЗакрыватьПриВыборе, ДействиеВыбора, Объект, ПредставлениеТекущейНастройки", - Истина, 3, - ДополнениеВыгрузки, ДополнениеВыгрузкиПредставлениеНастройки - ), Элементы.ДополнениеВыгрузкиОбщийПериодДокументов - ); - КонецЕсли; - + + // Выбор из меню - списка + СписокВариантов = ПрочитатьСписокВариантовНастроекСервер(); + + Текст = НСтр("ru='Сохранить текущую настройку...'"); + СписокВариантов.Добавить(1, Текст, , БиблиотекаКартинок.СохранитьНастройкиОтчета); + + ВыбранныйВариант = ВыбратьИзМеню(СписокВариантов, Элементы.ДополнениеВыгрузкиИсторияОтборов); + Если ВыбранныйВариант=Неопределено Тогда + Возврат; + КонецЕсли; + + ПредставлениеНастройки = ВыбранныйВариант.Значение; + Если ТипЗнч(ПредставлениеНастройки)=Тип("Строка") Тогда + ТекстЗаголовка = НСтр("ru='Подтверждение'"); + ТекстВопроса = НСтр("ru='Восстановить настройки ""%1""?'"); + + ТекстВопроса = СтрЗаменить(ТекстВопроса, "%1", ПредставлениеНастройки); + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); + Если Ответ=КодВозвратаДиалога.Да Тогда + ДополнениеВыгрузкиУстановитьНастройкиСервер(ПредставлениеНастройки); + КонецЕсли; + + ИначеЕсли ПредставлениеНастройки=1 Тогда + // Форма всех настроек + ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма.РедактированиеСоставаНастроек", + Новый Структура("ЗакрыватьПриВыборе, ДействиеВыбора, Объект, ПредставлениеТекущейНастройки", + Истина, 3, ДополнениеВыгрузки, ДополнениеВыгрузкиПредставлениеНастройки + ), Элементы.ДополнениеВыгрузкиОбщийПериодДокументов); + КонецЕсли; + КонецПроцедуры &НаКлиенте Процедура ДополнениеВыгрузкиОчисткаОбщегоОтбора(Команда) - ТекстЗаголовка = НСтр("ru='Подтверждение'"); - ТекстВопроса = НСтр("ru='Очистить общий отбор?'"); - Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); - Если Ответ=КодВозвратаДиалога.Да Тогда - ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов.Настройки.Отбор.Элементы.Очистить(); - УстановитьОписаниеДополненияОбщегоОтбора(); - КонецЕсли; + ТекстЗаголовка = НСтр("ru='Подтверждение'"); + ТекстВопроса = НСтр("ru='Очистить общий отбор?'"); + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); + Если Ответ=КодВозвратаДиалога.Да Тогда + ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов.Настройки.Отбор.Элементы.Очистить(); + УстановитьОписаниеДополненияОбщегоОтбора(); + КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ДополнениеВыгрузкиОчисткаДетальногоОтбора(Команда) - ТекстЗаголовка = НСтр("ru='Подтверждение'"); - ТекстВопроса = НСтр("ru='Очистить детальный отбор?'"); - Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); - Если Ответ=КодВозвратаДиалога.Да Тогда - ДополнениеВыгрузки.ДополнительнаяРегистрация.Очистить(); - УстановитьОписаниеДополненияДетально(); - КонецЕсли; + ТекстЗаголовка = НСтр("ru='Подтверждение'"); + ТекстВопроса = НСтр("ru='Очистить детальный отбор?'"); + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); + Если Ответ=КодВозвратаДиалога.Да Тогда + ДополнениеВыгрузки.ДополнительнаяРегистрация.Очистить(); + УстановитьОписаниеДополненияДетально(); + КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ДополнениеВыгрузкиСоставВыгрузки(Команда) ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма.СоставВыгрузки", - Новый Структура("АдресОбъекта", АдресОбъектаДополнительнойВыгрузки() ) - ); + Новый Структура("АдресОбъекта", АдресОбъектаДополнительнойВыгрузки() )); КонецПроцедуры @@ -687,8 +682,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - WSПароль - ); + WSПароль); ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); @@ -715,8 +709,7 @@ Отказ, ИдентификаторФайлаПакетаДанных, ИдентификаторФайла, - WSПароль - ); + WSПароль); ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); @@ -747,8 +740,7 @@ Если Не Отказ Тогда ЗаписатьДанныеСтатистикиСопоставления(Объект.ИмяПланаОбмена, - Объект.УзелИнформационнойБазы, ОбработкаОбъект.ТаблицаИнформацииСтатистики(), ИдентификаторФайлаПакетаДанных, ОбработкаОбъект.НомерВходящегоСообщения - ); + Объект.УзелИнформационнойБазы, ОбработкаОбъект.ТаблицаИнформацииСтатистики(), ИдентификаторФайлаПакетаДанных, ОбработкаОбъект.НомерВходящегоСообщения); КонецЕсли; Иначе @@ -793,8 +785,7 @@ // сохраняем данные статистики сопоставления ЗаписатьДанныеСтатистикиСопоставления(Объект.ИмяПланаОбмена, - Объект.УзелИнформационнойБазы, ОбработкаОбъект.ТаблицаИнформацииСтатистики(), ИдентификаторФайлаПакетаДанных, Объект.НомерВходящегоСообщения - ); + Объект.УзелИнформационнойБазы, ОбработкаОбъект.ТаблицаИнформацииСтатистики(), ИдентификаторФайлаПакетаДанных, Объект.НомерВходящегоСообщения); ПолучитьДеревоИнформацииСтатистики(ОбработкаОбъект.ТаблицаИнформацииСтатистики()); @@ -816,8 +807,7 @@ // сохраняем данные статистики сопоставления ЗаписатьДанныеСтатистикиСопоставления(Объект.ИмяПланаОбмена, - Объект.УзелИнформационнойБазы, ОбработкаОбъект.ТаблицаИнформацииСтатистики(), ИдентификаторФайлаПакетаДанных, Объект.НомерВходящегоСообщения - ); + Объект.УзелИнформационнойБазы, ОбработкаОбъект.ТаблицаИнформацииСтатистики(), ИдентификаторФайлаПакетаДанных, Объект.НомерВходящегоСообщения); ПолучитьДеревоИнформацииСтатистики(ОбработкаОбъект.ТаблицаИнформацииСтатистики()); @@ -842,8 +832,7 @@ // сохраняем данные статистики сопоставления ЗаписатьДанныеСтатистикиСопоставления(Объект.ИмяПланаОбмена, - Объект.УзелИнформационнойБазы, ОбработкаОбъект.ТаблицаИнформацииСтатистики(), ИдентификаторФайлаПакетаДанных, Объект.НомерВходящегоСообщения - ); + Объект.УзелИнформационнойБазы, ОбработкаОбъект.ТаблицаИнформацииСтатистики(), ИдентификаторФайлаПакетаДанных, Объект.НомерВходящегоСообщения); ПолучитьДеревоИнформацииСтатистики(ОбработкаОбъект.ТаблицаИнформацииСтатистики()); @@ -872,8 +861,7 @@ КоллекцияЭлементовДерева.Очистить(); ОбщегоНазначения.ЗаполнитьКоллекциюЭлементовДереваДанныхФормы(КоллекцияЭлементовДерева, - ОбменДаннымиСервер.ПолучитьДеревоИнформацииСтатистики(ИнформацияСтатистики) - ); + ОбменДаннымиСервер.ПолучитьДеревоИнформацииСтатистики(ИнформацияСтатистики)); КонецПроцедуры @@ -1174,8 +1162,7 @@ ИдентификаторОперации, ИдентификаторФайла, Истина, - WSПароль - ); + WSПароль); КонецПроцедуры @@ -1184,43 +1171,41 @@ РольДоступнаДобавлениеИзменениеОбменовДанными = Пользователи.РолиДоступны("НастройкаСинхронизацииДанных"); - Элементы.НастроитьПараметрыТранспортаСообщенийОбмена.Видимость = РольДоступнаДобавлениеИзменениеОбменовДанными; - - ВидТранспортаСообщенийОбменаПоУмолчанию = РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(Объект.УзелИнформационнойБазы); + Элементы.НастроитьПараметрыТранспортаСообщенийОбмена.Видимость = РольДоступнаДобавлениеИзменениеОбменовДанными; + + ВидТранспортаСообщенийОбменаПоУмолчанию = РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(Объект.УзелИнформационнойБазы); НастроенныеВидыТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.НастроенныеВидыТранспорта(Объект.УзелИнформационнойБазы); - ТекущийВидТранпорта = Объект.ВидТранспортаСообщенийОбмена; - - ОбменДаннымиСервер.ЗаполнитьСписокВыбораДоступнымиВидамиТранспорта(Объект.УзелИнформационнойБазы, Элементы.ВидТранспортаСообщенийОбмена, НастроенныеВидыТранспорта); - - СписокВыбораТранспорта = Элементы.ВидТранспортаСообщенийОбмена.СписокВыбора; - - Элементы.ВидТранспортаСообщенияОбменаСтрокой.ЦветТекста = Новый Цвет; - - Если СписокВыбораТранспорта.НайтиПоЗначению(ТекущийВидТранпорта)<>Неопределено Тогда - // Не меняем - - ИначеЕсли СписокВыбораТранспорта.НайтиПоЗначению(ВидТранспортаСообщенийОбменаПоУмолчанию)<>Неопределено Тогда - - Объект.ВидТранспортаСообщенийОбмена = ВидТранспортаСообщенийОбменаПоУмолчанию; - - ИначеЕсли СписокВыбораТранспорта.Количество()>0 Тогда + ТекущийВидТранспорта = Объект.ВидТранспортаСообщенийОбмена; + + ОбменДаннымиСервер.ЗаполнитьСписокВыбораДоступнымиВидамиТранспорта(Объект.УзелИнформационнойБазы, Элементы.ВидТранспортаСообщенийОбмена, НастроенныеВидыТранспорта); + + СписокВыбораТранспорта = Элементы.ВидТранспортаСообщенийОбмена.СписокВыбора; + + Элементы.ВидТранспортаСообщенияОбменаСтрокой.ЦветТекста = Новый Цвет; + + Если СписокВыбораТранспорта.НайтиПоЗначению(ТекущийВидТранспорта)<>Неопределено Тогда + // Не меняем + + ИначеЕсли СписокВыбораТранспорта.НайтиПоЗначению(ВидТранспортаСообщенийОбменаПоУмолчанию)<>Неопределено Тогда + + Объект.ВидТранспортаСообщенийОбмена = ВидТранспортаСообщенийОбменаПоУмолчанию; + + ИначеЕсли СписокВыбораТранспорта.Количество()>0 Тогда Объект.ВидТранспортаСообщенийОбмена = СписокВыбораТранспорта[0].Значение; - - Иначе - // Ничего нет - Объект.ВидТранспортаСообщенийОбмена = Неопределено; - - СписокВыбораТранспорта.Очистить(); - СписокВыбораТранспорта.Добавить(Неопределено, - НСтр("ru='подключение не настроено'") - ); - - Элементы.ВидТранспортаСообщенияОбменаСтрокой.ЦветТекста = ЦветаСтиля.ПоясняющийОшибкуТекст - КонецЕсли; - - Элементы.ВидТранспортаСообщенияОбменаСтрокой.Заголовок = СписокВыбораТранспорта[0].Представление; - Элементы.ВидТранспортаСообщенияОбменаСтрокой.Видимость = СписокВыбораТранспорта.Количество()=1; - Элементы.ВидТранспортаСообщенийОбмена.Видимость= Не Элементы.ВидТранспортаСообщенияОбменаСтрокой.Видимость; + + Иначе + // Ничего нет + Объект.ВидТранспортаСообщенийОбмена = Неопределено; + + СписокВыбораТранспорта.Очистить(); + СписокВыбораТранспорта.Добавить(Неопределено, НСтр("ru='подключение не настроено'") ); + + Элементы.ВидТранспортаСообщенияОбменаСтрокой.ЦветТекста = ЦветаСтиля.ПоясняющийОшибкуТекст + КонецЕсли; + + Элементы.ВидТранспортаСообщенияОбменаСтрокой.Заголовок = СписокВыбораТранспорта[0].Представление; + Элементы.ВидТранспортаСообщенияОбменаСтрокой.Видимость = СписокВыбораТранспорта.Количество()=1; + Элементы.ВидТранспортаСообщенийОбмена.Видимость= Не Элементы.ВидТранспортаСообщенияОбменаСтрокой.Видимость; ВидТранспортаСообщенийОбменаПриИзмененииНаСервере(); КонецПроцедуры @@ -1229,34 +1214,34 @@ Процедура УстановитьВидимостьКнопкиОткрытияКаталогаОбмена() ВидимостьКнопки = Объект.ВидТранспортаСообщенийОбмена=Перечисления.ВидыТранспортаСообщенийОбмена.FILE - Или Объект.ВидТранспортаСообщенийОбмена=Перечисления.ВидыТранспортаСообщенийОбмена.FTP; - - Элементы.КаталогОбменаИнформацией.Видимость = ВидимостьКнопки; - Если ВидимостьКнопки Тогда - Элементы.КаталогОбменаИнформацией.Заголовок = ПолучитьИмяКаталогаНаСервере(Объект.ВидТранспортаСообщенийОбмена, Объект.УзелИнформационнойБазы); - КонецЕсли; + Или Объект.ВидТранспортаСообщенийОбмена=Перечисления.ВидыТранспортаСообщенийОбмена.FTP; + + Элементы.КаталогОбменаИнформацией.Видимость = ВидимостьКнопки; + Если ВидимостьКнопки Тогда + Элементы.КаталогОбменаИнформацией.Заголовок = ПолучитьИмяКаталогаНаСервере(Объект.ВидТранспортаСообщенийОбмена, Объект.УзелИнформационнойБазы); + КонецЕсли; КонецПроцедуры &НаСервере Процедура ЗарегистрироватьДополнительныеДанные() - - Если ДополнениеВыгрузки.ВариантВыгрузки=0 Тогда - Возврат; - КонецЕсли; - - // Оперируем с объктом, в реквизите остаются текущие настройки! - ДополнениеВыгрузкиОбъект = РеквизитФормыВЗначение("ДополнениеВыгрузки"); - Если ДополнениеВыгрузки.ВариантВыгрузки=1 Тогда - // За период с отбором, очищаем дополнительную - ДополнениеВыгрузкиОбъект.ДополнительнаяРегистрация.Очистить(); - ИначеЕсли ДополнениеВыгрузки.ВариантВыгрузки=2 Тогда - // Детально настроено, очищаем общее - ДополнениеВыгрузкиОбъект.КомпоновщикОтбораВсехДокументов = Неопределено; - ДополнениеВыгрузкиОбъект.ПериодОтбораВсехДокументов = Неопределено; - КонецЕсли; - - ДополнениеВыгрузкиОбъект.ЗарегистрироватьДополнительныеИзменения(); - + + Если ДополнениеВыгрузки.ВариантВыгрузки=0 Тогда + Возврат; + КонецЕсли; + + // Оперируем с объектом, в реквизите остаются текущие настройки! + ДополнениеВыгрузкиОбъект = РеквизитФормыВЗначение("ДополнениеВыгрузки"); + Если ДополнениеВыгрузки.ВариантВыгрузки=1 Тогда + // За период с отбором, очищаем дополнительную + ДополнениеВыгрузкиОбъект.ДополнительнаяРегистрация.Очистить(); + ИначеЕсли ДополнениеВыгрузки.ВариантВыгрузки=2 Тогда + // Детально настроено, очищаем общее + ДополнениеВыгрузкиОбъект.КомпоновщикОтбораВсехДокументов = Неопределено; + ДополнениеВыгрузкиОбъект.ПериодОтбораВсехДокументов = Неопределено; + КонецЕсли; + + ДополнениеВыгрузкиОбъект.ЗарегистрироватьДополнительныеИзменения(); + КонецПроцедуры &НаСервере @@ -1264,8 +1249,7 @@ ОбъектДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); ОбъектДополнения.ВосстановитьТекущееИзНастроек( - ПредставлениеНастройки - ); + ПредставлениеНастройки); ЗначениеВРеквизитФормы(ОбъектДополнения, "ДополнениеВыгрузки"); // Текущее представление @@ -1330,26 +1314,26 @@ ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов, ДополнениеВыгрузки.ПериодОтбораВсехДокументов ), - Элементы.ДополнениеВыгрузкиОбщийПериодДокументов - ); + Элементы.ДополнениеВыгрузкиОбщийПериодДокументов); КонецПроцедуры &НаКлиенте Процедура ДополнениеВыгрузкиОткрытьДетальныйПодбор() - ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма", - Новый Структура( - "ДействиеВыбора, АдресОбъекта", 2, АдресОбъектаДополнительнойВыгрузки() - ), - Элементы.ДополнениеВыгрузкиОбщийПериодДокументов - ); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ДействиеВыбора", 2); + ПараметрыФормы.Вставить("АдресОбъекта", АдресОбъектаДополнительнойВыгрузки()); + ПараметрыФормы.Вставить("ОткрытаПоСценарию", Истина); + ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма", ПараметрыФормы, Элементы.ДополнениеВыгрузкиОбщийПериодДокументов); КонецПроцедуры &НаСервере Функция АдресОбъектаДополнительнойВыгрузки() - Возврат ПоместитьВоВременноеХранилище( - РеквизитФормыВЗначение("ДополнениеВыгрузки"), - УникальныйИдентификатор - ); + ОбъектРезультат = Новый Структура("УзелИнформационнойБазы, ВариантВыгрузки, КомпоновщикОтбораВсехДокументов, ПериодОтбораВсехДокументов"); + ЗаполнитьЗначенияСвойств(ОбъектРезультат, ДополнениеВыгрузки); + + ОбъектРезультат.Вставить("ДополнительнаяРегистрация", ДанныеФормыВЗначение(ДополнениеВыгрузки.ДополнительнаяРегистрация, Тип("ТаблицаЗначений"))); + + Возврат ПоместитьВоВременноеХранилище(ОбъектРезультат, УникальныйИдентификатор); КонецФункции &НаСервере @@ -1374,38 +1358,37 @@ &НаСервере Процедура УстановитьОписаниеДополненияОбщегоОтбора() - - ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); - - Текст = ОбработкаДополнения.ПредставлениеОтбораВсехДокументов(""); - - НетОтбора = ПустаяСтрока(Текст); - Если НетОтбора Тогда - Текст = НСтр("ru='Все документы'"); - КонецЕсли; - - Элементы.ДополнениеВыгрузкиОбщийОтборДокументов.Заголовок = Текст; - Элементы.ДополнениеВыгрузкиОчисткаОбщегоОтбора.Видимость = Не НетОтбора; -КонецПроцедуры + + ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); + + Текст = ОбработкаДополнения.ПредставлениеОтбораВсехДокументов(""); + + НетОтбора = ПустаяСтрока(Текст); + Если НетОтбора Тогда + Текст = НСтр("ru='Все документы'"); + КонецЕсли; + + Элементы.ДополнениеВыгрузкиОбщийОтборДокументов.Заголовок = Текст; + Элементы.ДополнениеВыгрузкиОчисткаОбщегоОтбора.Видимость = Не НетОтбора; +КонецПроцедуры &НаСервере Процедура УстановитьОписаниеДополненияДетально() - - ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); - - Текст = СтрЗаменить( - СокрЛП(ОбработкаДополнения.ПредставлениеДетальногоОтбора("")), - Символы.ПС, ", " - ); - - НетОтбора = ПустаяСтрока(Текст); - Если НетОтбора Тогда - Текст = НСтр("ru='Дополнительные данные не выбраны'") - КонецЕсли; - - Элементы.ДополнениеВыгрузкиДетальныйОтбор.Заголовок = Текст; - Элементы.ДополнениеВыгрузкиОчисткаДетальногоОтбора.Видимость = Не НетОтбора; -КонецПроцедуры + + ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); + + Текст = СтрЗаменить( + СокрЛП(ОбработкаДополнения.ПредставлениеДетальногоОтбора("")), + Символы.ПС, ", "); + + НетОтбора = ПустаяСтрока(Текст); + Если НетОтбора Тогда + Текст = НСтр("ru='Дополнительные данные не выбраны'") + КонецЕсли; + + Элементы.ДополнениеВыгрузкиДетальныйОтбор.Заголовок = Текст; + Элементы.ДополнениеВыгрузкиОчисткаДетальногоОтбора.Видимость = Не НетОтбора; +КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// // Обработчики ожидания @@ -1420,8 +1403,7 @@ WSURLВебСервиса, WSИмяПользователя, WSПароль, - ДлительнаяОперацияСтрокаСообщенияОбОшибке - ); + ДлительнаяОперацияСтрокаСообщенияОбОшибке); Если СостояниеОперации = "Active" Тогда @@ -1577,18 +1559,18 @@ Процедура ОбновитьОтображениеЭлементовСтатусаОбменаДанными() Элементы.СтраницыСтатусаЗагрузкиДанных.ТекущаяСтраница = Элементы[ОбменДаннымиКлиент.СтраницыСтатусаЗагрузкиДанных()[РезультатЗагрузкиДанных]]; - Если Элементы.СтраницыСтатусаЗагрузкиДанных.ТекущаяСтраница=Элементы.СтатусЗагрузкиНеопределено Тогда - Элементы.ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных.Заголовок = НСтр("ru='Загрузка данных не произведена'"); - Иначе - Элементы.ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных.Заголовок = ОбменДаннымиКлиент.ЗаголовкиГиперссылокЗагрузкиДанных()[РезультатЗагрузкиДанных]; - КонецЕсли; - + Если Элементы.СтраницыСтатусаЗагрузкиДанных.ТекущаяСтраница=Элементы.СтатусЗагрузкиНеопределено Тогда + Элементы.ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных.Заголовок = НСтр("ru='Загрузка данных не произведена'"); + Иначе + Элементы.ПерейтиВЖурналРегистрацииСобытийЗагрузкиДанных.Заголовок = ОбменДаннымиКлиент.ЗаголовкиГиперссылокЗагрузкиДанных()[РезультатЗагрузкиДанных]; + КонецЕсли; + Элементы.СтраницыСтатусаВыгрузкиДанных.ТекущаяСтраница = Элементы[ОбменДаннымиКлиент.СтраницыСтатусаВыгрузкиДанных()[РезультатВыгрузкиДанных]]; - Если Элементы.СтраницыСтатусаВыгрузкиДанных.ТекущаяСтраница=Элементы.СтатусВыгрузкиНеопределено Тогда - Элементы.ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных.Заголовок = НСтр("ru='Выгрузка данных не произведена'"); - Иначе - Элементы.ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных.Заголовок = ОбменДаннымиКлиент.ЗаголовкиГиперссылокВыгрузкиДанных()[РезультатВыгрузкиДанных]; - КонецЕсли; + Если Элементы.СтраницыСтатусаВыгрузкиДанных.ТекущаяСтраница=Элементы.СтатусВыгрузкиНеопределено Тогда + Элементы.ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных.Заголовок = НСтр("ru='Выгрузка данных не произведена'"); + Иначе + Элементы.ПерейтиВЖурналРегистрацииСобытийВыгрузкиДанных.Заголовок = ОбменДаннымиКлиент.ЗаголовкиГиперссылокВыгрузкиДанных()[РезультатВыгрузкиДанных]; + КонецЕсли; КонецПроцедуры @@ -1820,8 +1802,7 @@ ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", ДлительнаяОперация = Ложь, - ИмяОбработчикаДлительнойОперации = "" - ) + ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; @@ -1943,8 +1924,7 @@ Исключение ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииОбменДанными(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),,,, Отказ); Возврат; КонецПопытки; @@ -2127,8 +2107,7 @@ Объект.УзелИнформационнойБазы, "ВыгрузкаДанных", ДатаНачалаОперации, - ДлительнаяОперацияСтрокаСообщенияОбОшибке - ); + ДлительнаяОперацияСтрокаСообщенияОбОшибке); Иначе diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Help/ru.html b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Help/ru.html index 2374cd564..51ae10554 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Help/ru.html +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/Help/ru.html @@ -1,4 +1,4 @@ - +

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

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

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

            diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ObjectModule.bsl b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ObjectModule.bsl index b643da85e..89d92b0dd 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДанными/ObjectModule.bsl @@ -254,8 +254,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - Пароль - ); + Пароль); Иначе // FILE, FTP, EMAIL @@ -288,8 +287,7 @@ Отказ, УзелИнформационнойБазы, ИдентификаторФайла, - Пароль - ); + Пароль); ИмяВременногоКаталогаСообщенийОбмена = СтруктураДанных.ИмяВременногоКаталогаСообщенийОбмена; ИдентификаторФайлаПакетаДанных = СтруктураДанных.ИдентификаторФайлаПакетаДанных; @@ -513,4 +511,4 @@ КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса/Forms/Форма/Module.bsl index 14b22336f..63840aa0c 100644 --- a/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникИнтерактивногоОбменаДаннымиВМоделиСервиса/Forms/Форма/Module.bsl @@ -22,33 +22,32 @@ Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; - - ТекстОшибки = Неопределено; - Если Не ОбменДаннымиВМоделиСервисаПовтИсп.СинхронизацияДанныхПоддерживается() Тогда + + ТекстОшибки = Неопределено; + Если Не ОбменДаннымиВМоделиСервисаПовтИсп.СинхронизацияДанныхПоддерживается() Тогда ТекстОшибки = НСтр("ru='Синхронизация данных для конфигурации не поддерживается!'"); - - ИначеЕсли Не Параметры.Свойство("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы) Тогда - ТекстОшибки = НСтр("ru='Непосредственное открытие помощника не предусмотрено.'"); - - ИначеЕсли Объект.УзелИнформационнойБазы.Пустая() Тогда - ТекстОшибки = НСтр("ru='Настройка обмена данными не найдена.'"); - - КонецЕсли; - - Если ТекстОшибки<>Неопределено Тогда - ОбменДаннымиСервер.СообщитьОбОшибке(ТекстОшибки, Отказ); - Возврат; - КонецЕсли; - + + ИначеЕсли Не Параметры.Свойство("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы) Тогда + ТекстОшибки = НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + + ИначеЕсли Объект.УзелИнформационнойБазы.Пустая() Тогда + ТекстОшибки = НСтр("ru='Настройка обмена данными не найдена.'"); + + КонецЕсли; + + Если ТекстОшибки<>Неопределено Тогда + ВызватьИсключение ТекстОшибки; + КонецЕсли; + // Устанавливаем заголовки, зависящие от узла - УстановитьКорреспондентаВЗаголовок(ЭтаФорма); - + УстановитьКорреспондентаВЗаголовок(ЭтаФорма); + // Устанавливаем таблицу переходов в зависимости от параметров ПорядковыйНомерПерехода = 0; - СценарийПолныйВручную(); - - // Дополнение выгрузки - ДополнениеВыгрузкиИнициализировать() + СценарийПолныйВручную(); + + // Дополнение выгрузки + ДополнениеВыгрузкиИнициализировать() КонецПроцедуры &НаКлиенте @@ -94,68 +93,65 @@ &НаКлиенте Процедура ДополнениеВыгрузкиОчисткаОбщегоОтбора(Команда) - ТекстЗаголовка = НСтр("ru='Подтверждение'"); - ТекстВопроса = НСтр("ru='Очистить общий отбор?'"); - Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); - Если Ответ=КодВозвратаДиалога.Да Тогда - ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов.Настройки.Отбор.Элементы.Очистить(); - ДополнениеВыгрузкиУстановитьОписаниеДополненияОбщегоОтбора(); - КонецЕсли; + ТекстЗаголовка = НСтр("ru='Подтверждение'"); + ТекстВопроса = НСтр("ru='Очистить общий отбор?'"); + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); + Если Ответ=КодВозвратаДиалога.Да Тогда + ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов.Настройки.Отбор.Элементы.Очистить(); + ДополнениеВыгрузкиУстановитьОписаниеДополненияОбщегоОтбора(); + КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ДополнениеВыгрузкиОчисткаДетальногоОтбора(Команда) - ТекстЗаголовка = НСтр("ru='Подтверждение'"); - ТекстВопроса = НСтр("ru='Очистить детальный отбор?'"); - Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); - Если Ответ=КодВозвратаДиалога.Да Тогда - ДополнениеВыгрузки.ДополнительнаяРегистрация.Очистить(); - ДополнениеВыгрузкиУстановитьОписаниеДополненияДетально(); - КонецЕсли; + ТекстЗаголовка = НСтр("ru='Подтверждение'"); + ТекстВопроса = НСтр("ru='Очистить детальный отбор?'"); + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); + Если Ответ=КодВозвратаДиалога.Да Тогда + ДополнениеВыгрузки.ДополнительнаяРегистрация.Очистить(); + ДополнениеВыгрузкиУстановитьОписаниеДополненияДетально(); + КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ДополнениеВыгрузкиСоставВыгрузки(Команда) ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма.СоставВыгрузки", - Новый Структура("АдресОбъекта", ДополнениеВыгрузкиАдресОбъекта() ) - ); + Новый Структура("АдресОбъекта", ДополнениеВыгрузкиАдресОбъекта() )); КонецПроцедуры &НаКлиенте Процедура ДополнениеВыгрузкиИсторияОтборов(Команда) - - // Выбор из меню - списка - СписокВариантов = ДополнениеВыгрузкиПрочитатьСписокВариантовНастроекСервер(); - - Текст = НСтр("ru='Сохранить текущую настройку...'"); - СписокВариантов.Добавить(1, Текст, , БиблиотекаКартинок.СохранитьНастройкиОтчета); - - ВыбраныйВариант = ВыбратьИзМеню(СписокВариантов, Элементы.ДополнениеВыгрузкиИсторияОтборов); - Если ВыбраныйВариант=Неопределено Тогда - Возврат; - КонецЕсли; - - ПредставлениеНастройки = ВыбраныйВариант.Значение; - Если ТипЗнч(ПредставлениеНастройки)=Тип("Строка") Тогда - ТекстЗаголовка = НСтр("ru='Подтверждение'"); - ТекстВопроса = НСтр("ru='Восстановить настройки ""%1""?'"); - - ТекстВопроса = СтрЗаменить(ТекстВопроса, "%1", ПредставлениеНастройки); - Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); - Если Ответ=КодВозвратаДиалога.Да Тогда - ДополнениеВыгрузкиУстановитьНастройкиСервер(ПредставлениеНастройки); - КонецЕсли; - - ИначеЕсли ПредставлениеНастройки=1 Тогда - // Форма всех настроек - ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма.РедактированиеСоставаНастроек", - Новый Структура("ЗакрыватьПриВыборе, ДействиеВыбора, Объект, ПредставлениеТекущейНастройки", - Истина, 3, - ДополнениеВыгрузки, ДополнениеВыгрузкиПредставлениеНастройки - ), Элементы.ДополнениеВыгрузкиОбщийПериодДокументов - ); - КонецЕсли; - + + // Выбор из меню - списка + СписокВариантов = ДополнениеВыгрузкиПрочитатьСписокВариантовНастроекСервер(); + + Текст = НСтр("ru='Сохранить текущую настройку...'"); + СписокВариантов.Добавить(1, Текст, , БиблиотекаКартинок.СохранитьНастройкиОтчета); + + ВыбранныйВариант = ВыбратьИзМеню(СписокВариантов, Элементы.ДополнениеВыгрузкиИсторияОтборов); + Если ВыбранныйВариант=Неопределено Тогда + Возврат; + КонецЕсли; + + ПредставлениеНастройки = ВыбранныйВариант.Значение; + Если ТипЗнч(ПредставлениеНастройки)=Тип("Строка") Тогда + ТекстЗаголовка = НСтр("ru='Подтверждение'"); + ТекстВопроса = НСтр("ru='Восстановить настройки ""%1""?'"); + + ТекстВопроса = СтрЗаменить(ТекстВопроса, "%1", ПредставлениеНастройки); + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ТекстЗаголовка); + Если Ответ=КодВозвратаДиалога.Да Тогда + ДополнениеВыгрузкиУстановитьНастройкиСервер(ПредставлениеНастройки); + КонецЕсли; + + ИначеЕсли ПредставлениеНастройки=1 Тогда + // Форма всех настроек + ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма.РедактированиеСоставаНастроек", + Новый Структура("ЗакрыватьПриВыборе, ДействиеВыбора, Объект, ПредставлениеТекущейНастройки", + Истина, 3, ДополнениеВыгрузки, ДополнениеВыгрузкиПредставлениеНастройки + ), Элементы.ДополнениеВыгрузкиОбщийПериодДокументов); + КонецЕсли; + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -171,25 +167,25 @@ &НаКлиенте Процедура ДополнениеВыгрузкиОбщийПериодДокументовОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) - - Если ТипЗнч(ВыбранноеЗначение)<>Тип("Структура") Тогда - Возврат; - КонецЕсли; - - СтандартнаяОбработка = Ложь; - Если ВыбранноеЗначение.ДействиеВыбора=1 Тогда - // Отбор и период всех документов - ДополнениеВыгрузкиУстановитьПараметрыДополненияВсехДокументов(ВыбранноеЗначение); - - ИначеЕсли ВыбранноеЗначение.ДействиеВыбора=2 Тогда - // Детальная настройка - ДополнениеВыгрузкиУстановитьПараметрыДополненияДетально(ВыбранноеЗначение); - - ИначеЕсли ВыбранноеЗначение.ДействиеВыбора=3 Тогда - // Обновление настроек - ДополнениеВыгрузкиПредставлениеНастройки = ВыбранноеЗначение.ПредставлениеНастройки; - КонецЕсли; - + + Если ТипЗнч(ВыбранноеЗначение)<>Тип("Структура") Тогда + Возврат; + КонецЕсли; + + СтандартнаяОбработка = Ложь; + Если ВыбранноеЗначение.ДействиеВыбора=1 Тогда + // Отбор и период всех документов + ДополнениеВыгрузкиУстановитьПараметрыДополненияВсехДокументов(ВыбранноеЗначение); + + ИначеЕсли ВыбранноеЗначение.ДействиеВыбора=2 Тогда + // Детальная настройка + ДополнениеВыгрузкиУстановитьПараметрыДополненияДетально(ВыбранноеЗначение); + + ИначеЕсли ВыбранноеЗначение.ДействиеВыбора=3 Тогда + // Обновление настроек + ДополнениеВыгрузкиПредставлениеНастройки = ВыбранноеЗначение.ПредставлениеНастройки; + КонецЕсли; + КонецПроцедуры &НаКлиенте @@ -237,8 +233,7 @@ // Устанавливаем отображение страниц СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура( - "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - )); + "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); Если СтрокиПереходаТекущие.Количество() = 0 Тогда ВызватьИсключение НСтр("ru='Не определена страница для отображения.'"); @@ -273,8 +268,7 @@ // Обработчики событий переходов Если ЭтоПереходДалее Тогда СтрокиПерехода = ТаблицаПереходов.НайтиСтроки( Новый Структура( - "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - 1 - )); + "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - 1)); Если СтрокиПерехода.Количество() > 0 Тогда СтрокаПерехода = СтрокиПерехода[0]; // обработчик ПриПереходеДалее @@ -290,12 +284,11 @@ Возврат; КонецЕсли; КонецЕсли; - КонецЕсли; - + КонецЕсли; + Иначе СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура( - "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода + 1) - ); + "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода + 1)); Если СтрокиПерехода.Количество() > 0 Тогда СтрокаПерехода = СтрокиПерехода[0]; // обработчик ПриПереходеНазад @@ -316,8 +309,7 @@ КонецЕсли; СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура( - "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - )); + "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); Если СтрокиПереходаТекущие.Количество() = 0 Тогда ВызватьИсключение НСтр("ru='Не определена страница для отображения.'"); КонецЕсли; @@ -357,8 +349,7 @@ Процедура ВыполнитьОбработчикДлительнойОперации() СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура( - "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - )); + "ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); Если СтрокиПереходаТекущие.Количество() = 0 Тогда ВызватьИсключение НСтр("ru='Не определена страница для отображения.'"); КонецЕсли; @@ -407,8 +398,7 @@ Процедура ТаблицаПереходовНоваяСтрока(ПорядковыйНомерПерехода, ИмяОсновнойСтраницы, ИмяСтраницыНавигации, ИмяСтраницыДекорации = "", ИмяОбработчикаПриОткрытии = "", ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", - ДлительнаяОперация = Ложь, ИмяОбработчикаДлительнойОперации = "" -) + ДлительнаяОперация = Ложь, ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); @@ -440,8 +430,8 @@ ИначеЕсли ТипЗнч(Элемент)=Тип("КнопкаФормы") И Найти(Элемент.ИмяКоманды, ИмяКоманды)>0 Тогда Возврат Элемент; - КонецЕсли; - + КонецЕсли; + КонецЦикла; Возврат Неопределено; @@ -463,26 +453,26 @@ &НаСервере Процедура ДополнениеВыгрузкиИнициализировать() - - ДополнениеВыгрузки.УзелИнформационнойБазы = Объект.УзелИнформационнойБазы; - ДополнениеВыгрузки.ПериодОтбораВсехДокументов.Вариант = ВариантСтандартногоПериода.ПрошлыйМесяц; - - Если Параметры.ЗапретитьВыгрузкуТолькоИзмененного Тогда - Элементы.ДополнениеВыгрузкиВариантВыгрузки0.Видимость = Ложь; - ДополнениеВыгрузки.ВариантВыгрузки = 1; - Иначе - ДополнениеВыгрузки.ВариантВыгрузки = 0; - КонецЕсли; - - ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); - ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов = ОбработкаДополнения.КомпоновщикНастроекОбщегоОтбора(УникальныйИдентификатор); - - ДополнениеВыгрузкиУстановитьОписаниеДополненияОбщегоОтбора(); - ДополнениеВыгрузкиУстановитьОписаниеДополненияДетально(); - - ДополнениеВыгрузкиВариантВыгрузкиУстановитьВидимость(); - - Элементы.ДополнениеВыгрузкиИсторияОтборов.Видимость = ПравоДоступа("СохранениеДанныхПользователя", Метаданные); + + ДополнениеВыгрузки.УзелИнформационнойБазы = Объект.УзелИнформационнойБазы; + ДополнениеВыгрузки.ПериодОтбораВсехДокументов.Вариант = ВариантСтандартногоПериода.ПрошлыйМесяц; + + Если Параметры.ЗапретитьВыгрузкуТолькоИзмененного Тогда + Элементы.ДополнениеВыгрузкиВариантВыгрузки0.Видимость = Ложь; + ДополнениеВыгрузки.ВариантВыгрузки = 1; + Иначе + ДополнениеВыгрузки.ВариантВыгрузки = 0; + КонецЕсли; + + ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); + ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов = ОбработкаДополнения.КомпоновщикНастроекОбщегоОтбора(УникальныйИдентификатор); + + ДополнениеВыгрузкиУстановитьОписаниеДополненияОбщегоОтбора(); + ДополнениеВыгрузкиУстановитьОписаниеДополненияДетально(); + + ДополнениеВыгрузкиВариантВыгрузкиУстановитьВидимость(); + + Элементы.ДополнениеВыгрузкиИсторияОтборов.Видимость = ПравоДоступа("СохранениеДанныхПользователя", Метаданные); КонецПроцедуры &НаСервере @@ -490,8 +480,7 @@ ОбъектДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); ОбъектДополнения.ВосстановитьТекущееИзНастроек( - ПредставлениеНастройки - ); + ПредставлениеНастройки); ЗначениеВРеквизитФормы(ОбъектДополнения, "ДополнениеВыгрузки"); // Текущее представление @@ -513,8 +502,7 @@ Функция ДополнениеВыгрузкиАдресОбъекта() Возврат ПоместитьВоВременноеХранилище( РеквизитФормыВЗначение("ДополнениеВыгрузки"), - УникальныйИдентификатор - ); + УникальныйИдентификатор); КонецФункции &НаСервере @@ -547,59 +535,58 @@ &НаСервере Процедура ДополнениеВыгрузкиУстановитьОписаниеДополненияОбщегоОтбора() - - ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); - - Текст = ОбработкаДополнения.ПредставлениеОтбораВсехДокументов(""); - - НетОтбора = ПустаяСтрока(Текст); - Если НетОтбора Тогда - Текст = НСтр("ru='Все документы'"); - КонецЕсли; - - Элементы.ДополнениеВыгрузкиОбщийОтборДокументов.Заголовок = Текст; - Элементы.ДополнениеВыгрузкиОчисткаОбщегоОтбора.Видимость = Не НетОтбора; -КонецПроцедуры + + ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); + + Текст = ОбработкаДополнения.ПредставлениеОтбораВсехДокументов(""); + + НетОтбора = ПустаяСтрока(Текст); + Если НетОтбора Тогда + Текст = НСтр("ru='Все документы'"); + КонецЕсли; + + Элементы.ДополнениеВыгрузкиОбщийОтборДокументов.Заголовок = Текст; + Элементы.ДополнениеВыгрузкиОчисткаОбщегоОтбора.Видимость = Не НетОтбора; +КонецПроцедуры &НаСервере Процедура ДополнениеВыгрузкиУстановитьОписаниеДополненияДетально() - - ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); - - Текст = СтрЗаменить( - СокрЛП(ОбработкаДополнения.ПредставлениеДетальногоОтбора("")), - Символы.ПС, ", " - ); - - НетОтбора = ПустаяСтрока(Текст); - Если НетОтбора Тогда - Текст = НСтр("ru='Дополнительные данные не выбраны'") - КонецЕсли; - - Элементы.ДополнениеВыгрузкиДетальныйОтбор.Заголовок = Текст; - Элементы.ДополнениеВыгрузкиОчисткаДетальногоОтбора.Видимость = Не НетОтбора; -КонецПроцедуры + + ОбработкаДополнения = РеквизитФормыВЗначение("ДополнениеВыгрузки"); + + Текст = СтрЗаменить( + СокрЛП(ОбработкаДополнения.ПредставлениеДетальногоОтбора("")), + Символы.ПС, ", "); + + НетОтбора = ПустаяСтрока(Текст); + Если НетОтбора Тогда + Текст = НСтр("ru='Дополнительные данные не выбраны'") + КонецЕсли; + + Элементы.ДополнениеВыгрузкиДетальныйОтбор.Заголовок = Текст; + Элементы.ДополнениеВыгрузкиОчисткаДетальногоОтбора.Видимость = Не НетОтбора; +КонецПроцедуры &НаСервере Процедура ДополнениеВыгрузкиЗарегистрироватьДанные() - - Если ДополнениеВыгрузки.ВариантВыгрузки=0 Тогда - Возврат; - КонецЕсли; - - // Оперируем с объктом, в реквизите остаются текущие настройки! - ДополнениеВыгрузкиОбъект = РеквизитФормыВЗначение("ДополнениеВыгрузки"); - Если ДополнениеВыгрузки.ВариантВыгрузки=1 Тогда - // За период с отбором, очищаем дополнительную - ДополнениеВыгрузкиОбъект.ДополнительнаяРегистрация.Очистить(); - ИначеЕсли ДополнениеВыгрузки.ВариантВыгрузки=2 Тогда - // Детально настроено, очищаем общее - ДополнениеВыгрузкиОбъект.КомпоновщикОтбораВсехДокументов = Неопределено; - ДополнениеВыгрузкиОбъект.ПериодОтбораВсехДокументов = Неопределено; - КонецЕсли; - - ДополнениеВыгрузкиОбъект.ЗарегистрироватьДополнительныеИзменения(); - + + Если ДополнениеВыгрузки.ВариантВыгрузки=0 Тогда + Возврат; + КонецЕсли; + + // Оперируем с объектом, в реквизите остаются текущие настройки! + ДополнениеВыгрузкиОбъект = РеквизитФормыВЗначение("ДополнениеВыгрузки"); + Если ДополнениеВыгрузки.ВариантВыгрузки=1 Тогда + // За период с отбором, очищаем дополнительную + ДополнениеВыгрузкиОбъект.ДополнительнаяРегистрация.Очистить(); + ИначеЕсли ДополнениеВыгрузки.ВариантВыгрузки=2 Тогда + // Детально настроено, очищаем общее + ДополнениеВыгрузкиОбъект.КомпоновщикОтбораВсехДокументов = Неопределено; + ДополнениеВыгрузкиОбъект.ПериодОтбораВсехДокументов = Неопределено; + КонецЕсли; + + ДополнениеВыгрузкиОбъект.ЗарегистрироватьДополнительныеИзменения(); + КонецПроцедуры &НаКлиенте @@ -612,18 +599,16 @@ ДополнениеВыгрузки.КомпоновщикОтбораВсехДокументов, ДополнениеВыгрузки.ПериодОтбораВсехДокументов ), - Элементы.ДополнениеВыгрузкиОбщийПериодДокументов - ); + Элементы.ДополнениеВыгрузкиОбщийПериодДокументов); КонецПроцедуры &НаКлиенте Процедура ДополнениеВыгрузкиОткрытьДетальныйПодбор() - ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма", - Новый Структура( - "ДействиеВыбора, АдресОбъекта", 2, ДополнениеВыгрузкиАдресОбъекта() - ), - Элементы.ДополнениеВыгрузкиОбщийПериодДокументов - ); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ДействиеВыбора", 2); + ПараметрыФормы.Вставить("АдресОбъекта", ДополнениеВыгрузкиАдресОбъекта()); + ПараметрыФормы.Вставить("ОткрытаПоСценарию", Истина); + ОткрытьФорму("Обработка.ИнтерактивноеИзменениеВыгрузки.Форма", ПараметрыФормы, Элементы.ДополнениеВыгрузкиОбщийПериодДокументов); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -631,7 +616,7 @@ // Функция Подключаемый_Окончание_ПриОткрытии(Отказ, ПропуститьСтраницу, ЭтоПереходДалее) - // Регистрируем все, что накликано + // Регистрируем все, что выбрано ДополнениеВыгрузкиЗарегистрироватьДанные(); КонецФункции @@ -645,11 +630,9 @@ ТаблицаПереходов.Очистить(); ТаблицаПереходовНоваяСтрока(1, "ИзменениеСоставаВыгрузки", "СтраницаНавигацииНачало", - ,, - ); + ,,); ТаблицаПереходовНоваяСтрока(2, "Окончание", "СтраницаНавигацииОкончание",, - "Окончание_ПриОткрытии", - ); + "Окончание_ПриОткрытии",); КонецПроцедуры diff --git a/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/ОтключениеСинхронизацииДанных/Module.bsl b/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/ОтключениеСинхронизацииДанных/Module.bsl index 27eb7e01b..6df4ae8bc 100644 --- a/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/ОтключениеСинхронизацииДанных/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/ОтключениеСинхронизацииДанных/Module.bsl @@ -22,13 +22,11 @@ Элементы.НадписьПредупреждения.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Отключить синхронизацию данных - |с ""%1""?'"), Параметры.НаименованиеКорреспондента - ); + |с ""%1""?'"), Параметры.НаименованиеКорреспондента); Элементы.НадписьИнформационная.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Синхронизация данных - |с ""%1"" отключена.'"), Параметры.НаименованиеКорреспондента - ); + |с ""%1"" отключена.'"), Параметры.НаименованиеКорреспондента); // Устанавливаем текущую таблицу переходов СценарийОтключенияСинхронизацииДанных(); @@ -64,8 +62,7 @@ СтатусСессии = СтатусСессии(Сессия); Исключение ЗаписатьОшибкуВЖурналРегистрации( - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); ПерейтиНазад(); Предупреждение(НСтр("ru = 'Не удалось выполнить операцию.'")); Возврат; @@ -381,8 +378,7 @@ ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", ДлительнаяОперация = Ложь, - ИмяОбработчикаДлительнойОперации = "" - ) + ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; @@ -512,8 +508,7 @@ // Отправляем сообщение Менеджеру сервиса Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеОтключитьСинхронизацию() - ); + СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеОтключитьСинхронизацию()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; Сообщение.Body.ExchangePlan = ИмяПланаОбмена; Сессия = ОбменДаннымиВМоделиСервиса.ОтправитьСообщение(Сообщение); @@ -522,8 +517,7 @@ Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); Отказ = Истина; Возврат; КонецПопытки; diff --git a/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/ПолучениеДанныхКорреспондента/Module.bsl b/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/ПолучениеДанныхКорреспондента/Module.bsl index feb9e1889..a7e97ed4d 100644 --- a/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/ПолучениеДанныхКорреспондента/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/ПолучениеДанныхКорреспондента/Module.bsl @@ -45,8 +45,7 @@ СтатусСессии = СтатусСессии(Сессия); Исключение ЗаписатьОшибкуВЖурналРегистрации( - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); ОтменитьОперацию(); Возврат; КонецПопытки; @@ -346,8 +345,7 @@ ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", ДлительнаяОперация = Ложь, - ИмяОбработчикаДлительнойОперации = "" - ) + ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; @@ -457,8 +455,7 @@ // Отправляем сообщение корреспонденту Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьДанныеКорреспондента() - ); + СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьДанныеКорреспондента()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; Сообщение.Body.Tables = СериализаторXDTO.ЗаписатьXDTO(ТаблицыКорреспондента); Сообщение.Body.ExchangePlan = ИмяПланаОбмена; @@ -468,8 +465,7 @@ // Отправляем сообщение корреспонденту Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьОбщиеДанныеУзловКорреспондента() - ); + СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьОбщиеДанныеУзловКорреспондента()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; Сообщение.Body.ExchangePlan = ИмяПланаОбмена; Сессия = ОбменДаннымиВМоделиСервиса.ОтправитьСообщение(Сообщение); @@ -484,8 +480,7 @@ Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); Отказ = Истина; Возврат; КонецПопытки; @@ -545,8 +540,7 @@ Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); Отказ = Истина; Возврат; КонецПопытки; diff --git a/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/Форма/Module.bsl index 69443cb6d..382c31d87 100644 --- a/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/Forms/Форма/Module.bsl @@ -16,6 +16,10 @@ Возврат; КонецЕсли; + Если ПустаяСтрока(Параметры.ИмяПланаОбмена) Тогда + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + КонецЕсли; + // Включать синхронизацию данных может только администратор обмена (для абонента). ОбменДаннымиСервер.ПроверитьВозможностьАдминистрированияОбменов(); @@ -113,8 +117,7 @@ Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) ОбщегоНазначенияКлиент.ЗапроситьПодтверждениеЗакрытияФормы(Отказ, , ЗакрытьФормуБезусловно, - НСтр("ru = 'Отменить настройку синхронизации данных?'") - ); + НСтр("ru = 'Отменить настройку синхронизации данных?'")); КонецПроцедуры @@ -154,8 +157,7 @@ СтатусСессии = СтатусСессии(Сессия); Исключение ЗаписатьОшибкуВЖурналРегистрации( - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); ПерейтиНазад(); Предупреждение(НСтр("ru = 'Не удалось выполнить операцию.'")); Возврат; @@ -194,8 +196,7 @@ Исключение ЗаписатьОшибкуВЖурналРегистрации( - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); ПерейтиНазад(); Предупреждение(НСтр("ru = 'Не удалось выполнить операцию.'")); КонецПопытки; @@ -257,8 +258,7 @@ ПараметрыФормы.Вставить("УникальныйИдентификаторВладельца", ЭтаФорма.УникальныйИдентификатор); ОткрытьФорму("Обработка.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете.Форма.ПолучениеДанныхКорреспондента", - ПараметрыФормы, ЭтаФорма - ); + ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте @@ -272,8 +272,7 @@ ПараметрыФормы.Вставить("ТаблицыКорреспондента", ТаблицыКорреспондента); ОткрытьФорму("Обработка.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете.Форма.ПолучениеДанныхКорреспондента", - ПараметрыФормы, ЭтаФорма - ); + ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте @@ -581,8 +580,7 @@ ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", ДлительнаяОперация = Ложь, - ИмяОбработчикаДлительнойОперации = "" - ) + ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; @@ -895,15 +893,13 @@ УникальныйИдентификатор, "Обработки.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете.НастроитьОбменШаг1", ПараметрыМетода, - НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (шаг 1)'") - ); + НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (шаг 1)'")); ИдентификаторЗадания = Результат.ИдентификаторЗадания; АдресВременногоХранилища = Результат.АдресХранилища; Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -963,15 +959,13 @@ УникальныйИдентификатор, "Обработки.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете.ВыполнитьАвтоматическоеСопоставлениеДанных", ПараметрыМетода, - НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (автоматическое сопоставление данных)'") - ); + НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (автоматическое сопоставление данных)'")); ИдентификаторЗадания = Результат.ИдентификаторЗадания; АдресВременногоХранилища = Результат.АдресХранилища; Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1016,8 +1010,7 @@ Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1090,15 +1083,13 @@ УникальныйИдентификатор, "Обработки.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете.ПолучитьСтатистикуСопоставления", ПараметрыМетода, - НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (получение статистики сопоставления)'") - ); + НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (получение статистики сопоставления)'")); ИдентификаторЗадания = Результат.ИдентификаторЗадания; АдресВременногоХранилища = Результат.АдресХранилища; Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1126,8 +1117,7 @@ Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1147,8 +1137,7 @@ Элементы.СтраницыСтатусаСопоставленияДанных.ТекущаяСтраница = ?(ВсеДанныеСопоставлены, Элементы.СтатусСопоставленияВсеДанныеСопоставлены, - Элементы.СтатусСопоставленияЕстьНесопоставленныеДанные - ); + Элементы.СтатусСопоставленияЕстьНесопоставленныеДанные); КонецФункции // Страница 3: Сопоставление данных пользователем @@ -1164,8 +1153,7 @@ Сообщение = НСтр("ru = 'Не все данные сопоставлены. Наличие несопоставленных данных |может привести к появлению одинаковых элементов справочников (дублей). - |Продолжить?'" - ); + |Продолжить?'"); Ответ = Вопрос(Сообщение, Кнопки,, КодВозвратаДиалога.Нет); @@ -1212,15 +1200,13 @@ УникальныйИдентификатор, "Обработки.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете.ВыполнитьСинхронизациюСправочников", ПараметрыМетода, - НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (синхронизация справочников)'") - ); + НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (синхронизация справочников)'")); ИдентификаторЗадания = Результат.ИдентификаторЗадания; АдресВременногоХранилища = Результат.АдресХранилища; Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1306,8 +1292,7 @@ // Отправляем сообщение корреспонденту Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьДанныеКорреспондента() - ); + СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьДанныеКорреспондента()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; Сообщение.Body.Tables = СериализаторXDTO.ЗаписатьXDTO(ТаблицыКорреспондента); @@ -1319,8 +1304,7 @@ Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1347,8 +1331,7 @@ Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1422,8 +1405,7 @@ // Отправляем сообщение корреспонденту Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьПараметрыУчетаКорреспондента() - ); + СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеПолучитьПараметрыУчетаКорреспондента()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; Сообщение.Body.ExchangePlan = ИмяПланаОбмена; @@ -1435,8 +1417,7 @@ Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1474,8 +1455,7 @@ Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1551,8 +1531,7 @@ Если Не ФормаНастройки.ПроверитьЗаполнение() Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Необходимо задать обязательные настройки для второго приложения.'") - ,,, "ОписаниеЗначенийПоУмолчаниюКорреспондента", Отказ - ); + ,,, "ОписаниеЗначенийПоУмолчаниюКорреспондента", Отказ); КонецЕсли; КонецЕсли; @@ -1596,15 +1575,13 @@ УникальныйИдентификатор, "Обработки.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете.НастроитьОбменШаг2", ПараметрыМетода, - НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (шаг 2)'") - ); + НСтр("ru = 'Настройка синхронизации данных между приложениями в сети Интернет (шаг 2)'")); ИдентификаторЗадания = Результат.ИдентификаторЗадания; АдресВременногоХранилища = Результат.АдресХранилища; Исключение ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1678,8 +1655,7 @@ // Отправляем сообщение менеджеру сервиса - включить синхронизацию Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеВключитьСинхронизацию() - ); + СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеВключитьСинхронизацию()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; Сообщение.Body.ExchangePlan = ИмяПланаОбмена; @@ -1688,8 +1664,7 @@ // Отправляем сообщение менеджеру сервиса - запрос на выполнение синхронизации между двумя приложениями Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеПротолкнутьСинхронизациюДвухПриложений() - ); + СообщенияАдминистрированиеОбменаДаннымиУправлениеИнтерфейс.СообщениеПротолкнутьСинхронизациюДвухПриложений()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; ОбменДаннымиВМоделиСервиса.ОтправитьСообщение(Сообщение); @@ -1698,8 +1673,7 @@ Исключение ОтменитьТранзакцию(); ЗаписатьОшибкуВЖурналРегистрации(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), - СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных - ); + СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных); СообщитьОбОшибке(Отказ); Возврат; КонецПопытки; @@ -1728,8 +1702,7 @@ // Получение статистики сопоставления (опционально) ТаблицаПереходовНоваяСтрока(НомерСтраницы_ПолучениеСтатистикиСопоставления(), - "ОжиданиеАнализаДанных", "СтраницаНавигацииОжидание",,,,, Истина, "ОжиданиеПолученияСтатистикиСопоставления_ОбработкаДлительнойОперации" - ); + "ОжиданиеАнализаДанных", "СтраницаНавигацииОжидание",,,,, Истина, "ОжиданиеПолученияСтатистикиСопоставления_ОбработкаДлительнойОперации"); ТаблицаПереходовНоваяСтрока(9, "ОжиданиеАнализаДанных", "СтраницаНавигацииОжидание",,,,, Истина, "ОжиданиеПолученияСтатистикиСопоставленияФоновоеЗадание_ОбработкаДлительнойОперации"); ТаблицаПереходовНоваяСтрока(10, "ОжиданиеАнализаДанных", "СтраницаНавигацииОжидание",,,,, Истина, "ОжиданиеПолученияСтатистикиСопоставленияФоновоеЗаданиеОкончание_ОбработкаДлительнойОперации"); diff --git a/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/ManagerModule.bsl b/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/ManagerModule.bsl index 52336aafd..623ba1035 100644 --- a/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/ManagerModule.bsl +++ b/SSL/src/DataProcessors/ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернете/ManagerModule.bsl @@ -32,16 +32,14 @@ Корреспондент, , , - Префикс - ); + Префикс); // Регистрируем справочники к выгрузке в этой базе ОбменДаннымиСервер.ЗарегистрироватьТолькоСправочникиДляНачальнойВыгрузки(Корреспондент); // Отправляем сообщение корреспонденту Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеНастроитьОбменШаг1() - ); + СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеНастроитьОбменШаг1()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; Сообщение.Body.ExchangePlan = ИмяПланаОбмена; @@ -90,8 +88,7 @@ // Отправляем сообщение корреспонденту Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеНастроитьОбменШаг2() - ); + СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеНастроитьОбменШаг2()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; Сообщение.Body.ExchangePlan = ИмяПланаОбмена; @@ -125,13 +122,11 @@ // Получаем сообщение обмена во временный каталог Отказ = Ложь; ПараметрыСообщения = ОбменДаннымиСервер.ПолучитьСообщениеОбменаВоВременныйКаталог( - Отказ, Корреспондент, Неопределено - ); + Отказ, Корреспондент, Неопределено); Если Отказ Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Возникли ошибки при получении сообщения обмена из внешнего ресурса для корреспондента ""%1"".'"), - Строка(Корреспондент) - ); + Строка(Корреспондент)); КонецЕсли; ПомощникИнтерактивногоОбменаДанными = Обработки.ПомощникИнтерактивногоОбменаДанными.Создать(); @@ -148,8 +143,7 @@ Если Отказ Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Возникли ошибки при анализе сообщения обмена для корреспондента ""%1"".'"), - Строка(Корреспондент) - ); + Строка(Корреспондент)); КонецЕсли; // Объекты, для которых выполняется автоматическое сопоставление в процессе обмена (классификаторы), @@ -163,8 +157,7 @@ Если Отказ Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Возникли ошибки при выполнении автоматического сопоставления данных, полученных от корреспондента ""%1"".'"), - Строка(Корреспондент) - ); + Строка(Корреспондент)); КонецЕсли; ТаблицаИнформацииСтатистики = ПомощникИнтерактивногоОбменаДанными.ТаблицаИнформацииСтатистики(); @@ -176,8 +169,7 @@ ВсеДанныеСопоставлены = (ТаблицаИнформацииСтатистики.НайтиСтроки(Новый Структура("ИндексКартинки", 1)).Количество() = 0); ВыходныеПараметры = Новый Структура("ИнформацияСтатистики, ВсеДанныеСопоставлены, ИмяФайлаСообщенияОбмена, СтатистикаПустая", - ТаблицаИнформацииСтатистики, ВсеДанныеСопоставлены, ПараметрыСообщения.ИмяФайлаСообщенияОбмена, ТаблицаИнформацииСтатистики.Количество() = 0 - ); + ТаблицаИнформацииСтатистики, ВсеДанныеСопоставлены, ПараметрыСообщения.ИмяФайлаСообщенияОбмена, ТаблицаИнформацииСтатистики.Количество() = 0); ПоместитьВоВременноеХранилище(ВыходныеПараметры, АдресВременногоХранилища); КонецПроцедуры @@ -198,8 +190,7 @@ Если Отказ Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Возникли ошибки в процессе загрузки справочников от корреспондента %1.'"), - Строка(Корреспондент) - ); + Строка(Корреспондент)); КонецЕсли; // Выполняем выгрузку сообщения обмена для корреспондента (только справочники) @@ -208,14 +199,12 @@ Если Отказ Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Возникли ошибки в процессе выгрузки справочников для корреспондента %1.'"), - Строка(Корреспондент) - ); + Строка(Корреспондент)); КонецЕсли; // Отправляем сообщение корреспонденту Сообщение = СообщенияВМоделиСервиса.НовоеСообщение( - СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеЗагрузитьСообщениеОбмена() - ); + СообщенияОбменаДаннымиУправлениеИнтерфейс.СообщениеЗагрузитьСообщениеОбмена()); Сообщение.Body.CorrespondentZone = ОбластьДанныхКорреспондента; Сообщение.Body.ExchangePlan = ИмяПланаОбмена; @@ -257,15 +246,13 @@ Если Отказ Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Возникли ошибки при получении информации статистики для корреспондента ""%1"".'"), - Строка(Параметры.Корреспондент) - ); + Строка(Параметры.Корреспондент)); КонецЕсли; ВсеДанныеСопоставлены = (ПомощникИнтерактивногоОбменаДанными.ТаблицаИнформацииСтатистики().НайтиСтроки(Новый Структура("ИндексКартинки", 1)).Количество() = 0); ВыходныеПараметры = Новый Структура("ИнформацияСтатистики, ВсеДанныеСопоставлены", - ПомощникИнтерактивногоОбменаДанными.ТаблицаИнформацииСтатистики(), ВсеДанныеСопоставлены - ); + ПомощникИнтерактивногоОбменаДанными.ТаблицаИнформацииСтатистики(), ВсеДанныеСопоставлены); ПоместитьВоВременноеХранилище(ВыходныеПараметры, АдресВременногоХранилища); КонецПроцедуры @@ -310,4 +297,4 @@ КонецПроцедуры -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеАвтономногоРабочегоМеста/Module.bsl b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеАвтономногоРабочегоМеста/Module.bsl index 046f89abc..1df050376 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеАвтономногоРабочегоМеста/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеАвтономногоРабочегоМеста/Module.bsl @@ -87,7 +87,7 @@ &НаКлиенте Процедура ЗабылиПароль(Команда) - ОбменДаннымиКлиент.ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных(); + ОбменДаннымиКлиент.ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных(АдресДляВосстановленияПароляУчетнойЗаписи); КонецПроцедуры @@ -364,8 +364,7 @@ ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", ДлительнаяОперация = Ложь, - ИмяОбработчикаДлительнойОперации = "" - ) + ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; @@ -453,8 +452,7 @@ Исключение ОтменитьТранзакцию(); ЗаписьЖурналаРегистрации(АвтономнаяРаботаСлужебный.СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),,,, Отказ); Возврат; КонецПопытки; diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/ConditionalAppearance.dcssca b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/ConditionalAppearance.dcssca new file mode 100644 index 000000000..754661d6b --- /dev/null +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/ConditionalAppearance.dcssca @@ -0,0 +1,28 @@ + + + + + + ПользователиРазрешитьСинхронизациюДанных + + + + + ПользователиСинхронизации.СинхронизацияДанныхРазрешена + Equal + true + + + + + false + Доступность + false + + + ТолькоПросмотр + true + + + + diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Form.form b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Form.form index db1f011b7..30317e983 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Form.form +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Form.form @@ -24,7 +24,7 @@ Заголовок1РасширеннаяПодсказка - 221 + 228 Label true true @@ -64,7 +64,7 @@ КартинкаСозданиеЛокальногоРабочегоМестаРасширеннаяПодсказка - 222 + 229 Label true true @@ -98,7 +98,7 @@ Декорация5РасширеннаяПодсказка - 224 + 231 Label true true @@ -136,7 +136,7 @@ ПоясняющаяНадписьОВерсииПлатформыРасширеннаяПодсказка - 225 + 232 Label true true @@ -168,7 +168,7 @@ Группа3РасширеннаяПодсказка - 223 + 230 Label true true @@ -198,7 +198,7 @@ Декорация8РасширеннаяПодсказка - 227 + 234 Label true true @@ -229,7 +229,7 @@ true КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятиеРасширеннаяПодсказка - 228 + 235 Label true true @@ -253,7 +253,7 @@ Группа5РасширеннаяПодсказка - 226 + 233 Label true true @@ -284,7 +284,7 @@ НадписьДалее1РасширеннаяПодсказка - 229 + 236 Label true true @@ -318,7 +318,7 @@ НачалоРасширеннаяПодсказка - 220 + 227 Label true true @@ -349,7 +349,7 @@ Заголовок2РасширеннаяПодсказка - 231 + 238 Label true true @@ -397,7 +397,7 @@ Top НаименованиеАвтономногоРабочегоМестаРасширеннаяПодсказка - 232 + 239 Label true true @@ -441,7 +441,7 @@ Декорация4РасширеннаяПодсказка - 234 + 241 Label true true @@ -467,78 +467,17 @@ Группа2 143 - - Группа1 - 108 - - НастроитьОграниченияПередачиДанных - 105 - true - true - - true - - - НастроитьОграниченияПередачиДанныхРасширеннаяПодсказка - 237 - Label - true - true - - Left - - - UsualButton - Form.Command.НастроитьОграниченияПередачиДанных - Normal - Auto - true - true - UserCmds - Auto - - - ОписаниеОграниченийПередачиДанных - 206 - - <key>ru</key> - <value><В автономном рабочем месте доступны все данные.></value> - - true - true - - true - - - ОписаниеОграниченийПередачиДанныхРасширеннаяПодсказка - 238 - Label - true - true - - Left - - - - ОписаниеОграниченийПередачиДанныхКонтекстноеМеню - 207 - true - - Label - true - true - - Left - - + + НастроитьОграниченияПередачиДанных + 105 true true true - Группа1РасширеннаяПодсказка - 236 + НастроитьОграниченияПередачиДанныхРасширеннаяПодсказка + 243 Label true true @@ -546,143 +485,21 @@ Left - UsualGroup - - Auto - true - true - Auto - Auto - - - true - true - - true - - - Группа2РасширеннаяПодсказка - 235 - Label + UsualButton + Form.Command.НастроитьОграниченияПередачиДанных + Normal + Auto true true - - Left - - - UsualGroup - - Vertical - Auto - NormalSeparation - true - true - Auto - Auto - - - - ПарольДляСинхронизацииДанных - 212 - - Пароль - 213 - - <key>ru</key> - <value>Пароль</value> - - true - true - - true - - - Объект.ПарольДляСинхронизацииДанных - - - ПарольРасширеннаяПодсказка - 240 - Label - true - true - - Left - - - - ПарольКонтекстноеМеню - 214 - true - - InputField - Enter - true - Left - true - - 30 - true - true - false - true - true - true - true - true - Normal - - - - ПодтверждениеПароля - 215 - true - true - - true - - - ПодтверждениеПароля - - - ПодтверждениеПароляРасширеннаяПодсказка - 242 - Label - true - true - - Left - - - - ПодтверждениеПароляКонтекстноеМеню - 216 - true - - InputField - Enter - true - Left - true - - 30 - true - true - false - true - true - true - true - true - Normal - + UserCmds + Auto - ПояснениеКПаролю - 217 + ОписаниеОграниченийПередачиДанных + 206 <key>ru</key> - <value>Пароль должен содержать 7 и более символов, используйте буквы и цифры. -Необходимо наличие строчных и заглавных букв (например: Qazx123)</value> + <value><В автономном рабочем месте доступны все данные.></value> true true @@ -690,7 +507,7 @@ true - ПояснениеКПаролюРасширеннаяПодсказка + ОписаниеОграниченийПередачиДанныхРасширеннаяПодсказка 244 Label true @@ -700,12 +517,279 @@ - ПояснениеКПаролюКонтекстноеМеню - 218 + ОписаниеОграниченийПередачиДанныхКонтекстноеМеню + 207 + true + + Label + true + true + + Left + + + true + true + + true + + + Группа2РасширеннаяПодсказка + 242 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + + НастройкаПравПользователей + 212 + + ПользователиСинхронизации + 213 + + <key>ru</key> + <value>Разрешить выполнять синхронизацию данных пользователям</value> + + true + true + + true + + + ПользователиСинхронизации + + Top + + ПользователиРазрешитьСинхронизациюДанных + 224 + true + true + + true + + + ПользователиСинхронизации.РазрешитьСинхронизациюДанных + + + ПользователиРазрешитьСинхронизациюДанныхРасширеннаяПодсказка + 256 + Label + true + true + + Left + + + + ПользователиРазрешитьСинхронизациюДанныхКонтекстноеМеню + 225 + true + + CheckBoxField + Auto + true + Left + true + + + + ПользователиПользователь + 216 + true + true + + true + + + ПользователиСинхронизации.Пользователь + + + ПользователиПользовательРасширеннаяПодсказка + 258 + Label + true + true + + Left + + + + ПользователиПользовательКонтекстноеМеню + 217 + true + + InputField + true + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + None + + ПользователиСинхронизацииКоманднаяПанель + 215 + Left + true + + + ПользователиСинхронизацииСтрокаПоиска + 247 + + ПользователиСинхронизацииСтрокаПоискаРасширеннаяПодсказка + 249 + Label + true + true + + Left + + + + ПользователиСинхронизацииСтрокаПоискаКонтекстноеМеню + 248 + true + + ПользователиСинхронизации + + true + + + + ПользователиСинхронизацииСостояниеПросмотра + 250 + + ПользователиСинхронизацииСостояниеПросмотраРасширеннаяПодсказка + 252 + Label + true + true + + Left + + + + ПользователиСинхронизацииСостояниеПросмотраКонтекстноеМеню + 251 + true + + ViewStatusAddition + ПользователиСинхронизации + + true + + + + ПользователиСинхронизацииУправлениеПоиском + 253 + + ПользователиСинхронизацииУправлениеПоискомРасширеннаяПодсказка + 255 + Label + true + true + + Left + + + + ПользователиСинхронизацииУправлениеПоискомКонтекстноеМеню + 254 + true + + SearchControlAddition + ПользователиСинхронизации + + true + + + + ПользователиСинхронизацииРасширеннаяПодсказка + 246 + Label + true + true + + Left + + + + ПользователиСинхронизацииКонтекстноеМеню + 214 + true + + 42 + true + 6 + true + true + Row + 1 + 1 + AutoUse + AutoUse + true + true + false + Auto + Auto + None + None + None + true + + + + Декорация6 + 222 + + <key>ru</key> + <value>Указанные пользователи могут выполнять синхронизацию данных +с любыми автономными рабочими местами и другими программами.</value> + + true + true + + true + + + Декорация6РасширеннаяПодсказка + 268 + Label + true + true + + Left + + + + Декорация6КонтекстноеМеню + 223 true Label - 50 true true @@ -722,16 +806,15 @@ <key>ru</key> - <value>Пароль для синхронизации данных</value> + <value>Настройка прав пользователей</value> ru - Пароль для синхронизации данных + Настройка прав пользователей - true - ПарольДляСинхронизацииДанныхРасширеннаяПодсказка - 239 + НастройкаПравПользователейРасширеннаяПодсказка + 245 Label true true @@ -743,48 +826,12 @@ Vertical Auto - StrongSeparation true true - auto Auto Auto - - Декорация6 - 197 - true - true - - true - - - Декорация6РасширеннаяПодсказка - 245 - Label - true - true - - Left - - - - Декорация6КонтекстноеМеню - 198 - true - - Label - true - true - true - - Style.ПоясняющийТекст - - - Left - - НадписьДалее2 95 @@ -799,7 +846,7 @@ НадписьДалее2РасширеннаяПодсказка - 246 + 269 Label true true @@ -814,7 +861,9 @@ Label true + 3 true + true Left Bottom @@ -831,7 +880,7 @@ НастройкаВыгрузкиРасширеннаяПодсказка - 230 + 237 Label true true @@ -862,7 +911,7 @@ Заголовок4РасширеннаяПодсказка - 248 + 271 Label true true @@ -908,7 +957,7 @@ Декорация14РасширеннаяПодсказка - 251 + 274 Label true true @@ -947,7 +996,7 @@ ГруппаКартинкиРасширеннаяПодсказка - 250 + 273 Label true true @@ -984,7 +1033,7 @@ Декорация15РасширеннаяПодсказка - 253 + 276 Label true true @@ -1027,7 +1076,7 @@ ГруппаСообщенияРасширеннаяПодсказка - 252 + 275 Label true true @@ -1056,7 +1105,7 @@ ГруппировкаСообщенияРасширеннаяПодсказка - 249 + 272 Label true true @@ -1089,7 +1138,7 @@ ОжиданиеСозданияНачальногоОбразаРасширеннаяПодсказка - 247 + 270 Label true true @@ -1120,7 +1169,7 @@ Заголовок6РасширеннаяПодсказка - 255 + 278 Label true true @@ -1167,7 +1216,7 @@ Декорация3РасширеннаяПодсказка - 257 + 280 Label true true @@ -1201,7 +1250,7 @@ ЗагрузитьНачальныйОбразНаКомпьютерПользователяРасширеннаяПодсказка - 258 + 281 Label true true @@ -1225,7 +1274,7 @@ Группа4РасширеннаяПодсказка - 256 + 279 Label true true @@ -1256,7 +1305,7 @@ Декорация1РасширеннаяПодсказка - 259 + 282 Label true true @@ -1292,7 +1341,7 @@ ИнструкцияПоНастройкеАвтономногоРабочегоМестаПечатьИнструкцииРасширеннаяПодсказка - 262 + 285 Label true true @@ -1318,7 +1367,7 @@ ИнструкцияПоНастройкеАвтономногоРабочегоМестаСохранитьИнструкциюКакРасширеннаяПодсказка - 263 + 286 Label true true @@ -1341,7 +1390,7 @@ Группа6РасширеннаяПодсказка - 261 + 284 Label true true @@ -1369,7 +1418,7 @@ None ИнструкцияПоНастройкеАвтономногоРабочегоМестаРасширеннаяПодсказка - 264 + 287 Label true true @@ -1403,7 +1452,7 @@ Группа9РасширеннаяПодсказка - 260 + 283 Label true true @@ -1427,9 +1476,13 @@ true + + <key>ru</key> + <value>Окончание</value> + ОкончаниеРасширеннаяПодсказка - 254 + 277 Label true true @@ -1460,7 +1513,7 @@ true ПанельОсновнаяРасширеннаяПодсказка - 219 + 226 Label true true @@ -1495,7 +1548,7 @@ КомандаНазадРасширеннаяПодсказка - 270 + 293 Label true true @@ -1522,7 +1575,7 @@ true КомандаДалееРасширеннаяПодсказка - 271 + 294 Label true true @@ -1549,7 +1602,7 @@ КомандаОтменаРасширеннаяПодсказка - 272 + 295 Label true true @@ -1575,7 +1628,7 @@ СправкаРасширеннаяПодсказка - 273 + 296 Label true true @@ -1599,7 +1652,7 @@ true КоманднаяПанель1РасширеннаяПодсказка - 269 + 292 Label true true @@ -1627,7 +1680,7 @@ СтраницаНавигацииНачалоРасширеннаяПодсказка - 268 + 291 Label true true @@ -1656,7 +1709,7 @@ КомандаНазад1РасширеннаяПодсказка - 276 + 299 Label true true @@ -1683,7 +1736,7 @@ true КомандаДалее1РасширеннаяПодсказка - 277 + 300 Label true true @@ -1709,7 +1762,7 @@ КомандаОтмена1РасширеннаяПодсказка - 278 + 301 Label true true @@ -1735,7 +1788,7 @@ Справка1РасширеннаяПодсказка - 279 + 302 Label true true @@ -1759,7 +1812,7 @@ true КоманднаяПанель2РасширеннаяПодсказка - 275 + 298 Label true true @@ -1783,7 +1836,7 @@ СтраницаНавигацииПродолжениеРасширеннаяПодсказка - 274 + 297 Label true true @@ -1812,7 +1865,7 @@ КомандаНазад2РасширеннаяПодсказка - 282 + 305 Label true true @@ -1838,7 +1891,7 @@ КомандаГотовоРасширеннаяПодсказка - 283 + 306 Label true true @@ -1864,7 +1917,7 @@ КомандаОтмена2РасширеннаяПодсказка - 284 + 307 Label true true @@ -1890,7 +1943,7 @@ Справка2РасширеннаяПодсказка - 285 + 308 Label true true @@ -1914,7 +1967,7 @@ true КоманднаяПанель3РасширеннаяПодсказка - 281 + 304 Label true true @@ -1938,7 +1991,7 @@ СтраницаНавигацииОкончаниеРасширеннаяПодсказка - 280 + 303 Label true true @@ -1967,7 +2020,7 @@ КомандаНазад3РасширеннаяПодсказка - 288 + 311 Label true true @@ -1997,7 +2050,7 @@ КомандаДалее3РасширеннаяПодсказка - 289 + 312 Label true true @@ -2023,7 +2076,7 @@ КомандаОтмена3РасширеннаяПодсказка - 290 + 313 Label true true @@ -2049,7 +2102,7 @@ Справка3РасширеннаяПодсказка - 291 + 314 Label true true @@ -2074,7 +2127,7 @@ true КоманднаяПанель4РасширеннаяПодсказка - 287 + 310 Label true true @@ -2100,7 +2153,7 @@ true СтраницаНавигацииОжиданиеРасширеннаяПодсказка - 286 + 309 Label true true @@ -2125,7 +2178,7 @@ true ПанельНавигацииРасширеннаяПодсказка - 267 + 290 Label true true @@ -2153,7 +2206,7 @@ РамкаПанелиНавигацииРасширеннаяПодсказка - 266 + 289 Label true true @@ -2611,36 +2664,14 @@ - ПодтверждениеПароля + ПользователиСинхронизации <key>ru</key> - <value>Подтверждение пароля</value> + <value>Пользователи синхронизации</value> 4 - String - - 50 - - - - true - - - true - - ShowError - - - КлассОшибкиСозданиеСлужебногоПользователя - - <key>ru</key> - <value>Класс ошибки создание служебного пользователя</value> - - 5 - - String - + ValueTable true @@ -2648,6 +2679,57 @@ true + + Пользователь + + <key>ru</key> + <value>Пользователь</value> + + 1 + + CatalogRef.Пользователи + + + true + + + true + + + + СинхронизацияДанныхРазрешена + + <key>ru</key> + <value>Синхронизация данных разрешена</value> + + 2 + + Boolean + + + true + + + true + + + + РазрешитьСинхронизациюДанных + + <key>ru</key> + <value>Разрешить синхронизацию данных</value> + + 3 + + Boolean + + + true + + + true + + КомандаГотово diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl index 5e7a40edd..b6341759c 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Forms/НастройкаНаСторонеСервиса/Module.bsl @@ -17,8 +17,7 @@ Если Пользователи.ЭтоНеразделенныйПользователь() Тогда ВызватьИсключение НСтр("ru = 'Создать автономное рабочее место можно только от имени разделенного пользователя. - |Текущий пользователь является неразделенным.'" - ); + |Текущий пользователь является неразделенным.'"); КонецЕсли; ИмяПланаОбмена = АвтономнаяРаботаСлужебный.ПланОбменаАвтономнойРаботы(); @@ -45,21 +44,23 @@ ЗакрытьФормуБезусловно = Ложь; СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста = АвтономнаяРаботаСлужебный.СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста(); - КлассОшибкиСозданиеСлужебногоПользователя = АвтономнаяРаботаСлужебный.КлассОшибкиСозданиеСлужебногоПользователя(); ИмяФайлаПакетаУстановки = АвтономнаяРаботаСлужебный.ИмяФайлаПакетаУстановки(); - Если ПолучитьПроверкуСложностиПаролейПользователей() Тогда - Элементы.ПояснениеКПаролю.Заголовок = - НСтр("ru = 'Пароль должен содержать 7 и более символов, используйте буквы и цифры. - |Необходимо наличие строчных и заглавных букв (например: Qazx123)'" - ); - Иначе - Элементы.ПояснениеКПаролю.Заголовок = - НСтр("ru = 'Нежелательно, чтобы пароль совпадал с именем пользователя, полностью состоял из цифр, содержал понятные слова, содержал чередующиеся группы символов.'" - ); + // Настройка прав пользователей на выполнение синхронизации данных + + Элементы.НастройкаПравПользователей.Видимость = Ложь; + + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + + ПользователиСинхронизации.Загрузить(ПользователиСинхронизации()); + + Элементы.НастройкаПравПользователей.Видимость = ПользователиСинхронизации.Количество() > 1; + КонецЕсли; + Модифицированность = Истина; + КонецПроцедуры &НаКлиенте @@ -76,8 +77,7 @@ Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) ОбщегоНазначенияКлиент.ЗапроситьПодтверждениеЗакрытияФормы(Отказ, , ЗакрытьФормуБезусловно, - НСтр("ru = 'Отменить создание автономного рабочего места?'") - ); + НСтр("ru = 'Отменить создание автономного рабочего места?'")); КонецПроцедуры @@ -101,28 +101,10 @@ Исключение ДлительнаяОперация = Ложь; ПерейтиНазад(); - - КлассОшибки = КлассОшибкиСозданиеСлужебногоПользователя; - - ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); - - Если Найти(ПодробноеПредставлениеОшибки, КлассОшибки) > 0 Тогда - - ПодробноеПредставлениеОшибки = СтрЗаменить(ПодробноеПредставлениеОшибки, КлассОшибки, ""); - КраткоеПредставлениеОшибки = СтрЗаменить(КраткоеПредставлениеОшибки, КлассОшибки, ""); - - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки,, "Объект.ПарольДляСинхронизацииДанных"); - - Иначе - - Предупреждение(НСтр("ru = 'Не удалось выполнить операцию.'")); - - КонецЕсли; + Предупреждение(НСтр("ru = 'Не удалось выполнить операцию.'")); ЗаписатьОшибкуВЖурналРегистрации( - ПодробноеПредставлениеОшибки, СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста); КонецПопытки; КонецПроцедуры @@ -471,8 +453,7 @@ ИмяОбработчикаПриПереходеДалее = "", ИмяОбработчикаПриПереходеНазад = "", ДлительнаяОперация = Ложь, - ИмяОбработчикаДлительнойОперации = "" - ) + ИмяОбработчикаДлительнойОперации = "") НоваяСтрока = ТаблицаПереходов.Добавить(); НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; @@ -529,6 +510,10 @@ Попытка + ВыбранныеПользователиСинхронизации = ПользователиСинхронизации.Выгрузить( + Новый Структура("СинхронизацияДанныхРазрешена, РазрешитьСинхронизациюДанных", Ложь, Истина), "Пользователь" + ).ВыгрузитьКолонку("Пользователь"); + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда АдресВременногоХранилищаНачальногоОбраза = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); @@ -539,10 +524,11 @@ УстановитьПривилегированныйРежим(Истина); Попытка - ОбработкаОбъект.СоздатьНачальныйОбразАвтономногоРабочегоМеста(НастройкаОтборовНаУзле, + ОбработкаОбъект.СоздатьНачальныйОбразАвтономногоРабочегоМеста( + НастройкаОтборовНаУзле, + ВыбранныеПользователиСинхронизации, АдресВременногоХранилищаНачальногоОбраза, - АдресВременногоХранилищаИнформацииОПакетеУстановки - ); + АдресВременногоХранилищаИнформацииОПакетеУстановки); Исключение Отказ = Истина; Возврат; @@ -561,14 +547,14 @@ КонтекстПомощника.Вставить(Реквизит.Имя, Объект[Реквизит.Имя]); КонецЦикла; КонтекстПомощника.Вставить("НастройкаОтборовНаУзле", НастройкаОтборовНаУзле); + КонтекстПомощника.Вставить("ВыбранныеПользователиСинхронизации", ВыбранныеПользователиСинхронизации); Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне( УникальныйИдентификатор, "АвтономнаяРаботаСлужебный.СоздатьНачальныйОбразАвтономногоРабочегоМеста", КонтекстПомощника, НСтр("ru = 'Создание начального образа автономного рабочего места'"), - Истина - ); + Истина); АдресВременногоХранилищаНачальногоОбраза = Результат.АдресХранилища; АдресВременногоХранилищаИнформацииОПакетеУстановки = Результат.АдресХранилищаДополнительный; @@ -588,26 +574,9 @@ КонецЕсли; Исключение - Отказ = Истина; - - КлассОшибки = КлассОшибкиСозданиеСлужебногоПользователя; - - ПодробноеПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); - КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке()); - - Если Найти(ПодробноеПредставлениеОшибки, КлассОшибки) > 0 Тогда - - ПодробноеПредставлениеОшибки = АвтономнаяРаботаСлужебный.УдалитьКлассОшибки(ПодробноеПредставлениеОшибки, КлассОшибки); - КраткоеПредставлениеОшибки = АвтономнаяРаботаСлужебный.УдалитьКлассОшибки(КраткоеПредставлениеОшибки, КлассОшибки); - - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки,, "Объект.ПарольДляСинхронизацииДанных",, Отказ); - - КонецЕсли; - ЗаписатьОшибкуВЖурналРегистрации( - ПодробноеПредставлениеОшибки, СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), СобытиеЖурналаРегистрацииСозданиеАвтономногоРабочегоМеста); Возврат; КонецПопытки; @@ -660,6 +629,55 @@ КонецФункции +&НаСервере +Функция ПользователиСинхронизации() + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("Пользователь"); // Тип: СправочникСсылка.Пользователи + Результат.Колонки.Добавить("СинхронизацияДанныхРазрешена", Новый ОписаниеТипов("Булево")); + Результат.Колонки.Добавить("РазрешитьСинхронизациюДанных", Новый ОписаниеТипов("Булево")); + + ТекстЗапроса = + "ВЫБРАТЬ + | Пользователи.Ссылка КАК Пользователь, + | Пользователи.ИдентификаторПользователяИБ КАК ИдентификаторПользователяИБ + |ИЗ + | Справочник.Пользователи КАК Пользователи + |ГДЕ + | НЕ Пользователи.ПометкаУдаления + | И НЕ Пользователи.Недействителен + | И НЕ Пользователи.Служебный + | + |УПОРЯДОЧИТЬ ПО + | Пользователи.Наименование"; + + Запрос = Новый Запрос; + Запрос.Текст = ТекстЗапроса; + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + + Если ЗначениеЗаполнено(Выборка.ИдентификаторПользователяИБ) Тогда + + ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Выборка.ИдентификаторПользователяИБ); + + Если ПользовательИБ <> Неопределено Тогда + + НастройкиПользователя = Результат.Добавить(); + НастройкиПользователя.Пользователь = Выборка.Пользователь; + НастройкиПользователя.СинхронизацияДанныхРазрешена = ОбменДаннымиСервер.СинхронизацияДанныхРазрешена(ПользовательИБ); + НастройкиПользователя.РазрешитьСинхронизациюДанных = НастройкиПользователя.СинхронизацияДанныхРазрешена; + + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + Возврат Результат; +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // Переопределяемая часть - Обработчики событий переходов @@ -673,18 +691,6 @@ КонецЕсли; - Если ПустаяСтрока(Объект.ПарольДляСинхронизацииДанных) Тогда - - НСтрока = НСтр("ru = 'Не задан пароль для синхронизации данных.'"); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтрока,,"Объект.ПарольДляСинхронизацииДанных",, Отказ); - - ИначеЕсли Объект.ПарольДляСинхронизацииДанных <> ПодтверждениеПароля Тогда - - НСтрока = НСтр("ru = 'Пароль и подтверждение пароля не совпадают.'"); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтрока,, "ПодтверждениеПароля",, Отказ); - - КонецЕсли; - КонецФункции &НаКлиенте diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl index 1b2f412e1..d956ebb01 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/ObjectModule.bsl @@ -8,7 +8,9 @@ // АдресВременногоХранилищаНачальногоОбраза - Строка // АдресВременногоХранилищаИнформацииОПакетеУстановки - Строка // -Процедура СоздатьНачальныйОбразАвтономногоРабочегоМеста(Настройки, +Процедура СоздатьНачальныйОбразАвтономногоРабочегоМеста( + Знач Настройки, + Знач ВыбранныеПользователиСинхронизации, Знач АдресВременногоХранилищаНачальногоОбраза, Знач АдресВременногоХранилищаИнформацииОПакетеУстановки ) Экспорт @@ -21,20 +23,18 @@ НачатьТранзакцию(); Попытка - // Создаем служебного пользователя для выполнения синхронизации данных - ИмяПользователя = ""; - - Попытка - Пользователь = СоздатьСлужебногоПользователяДляСинхронизацииДанных(ИмяПользователя); - Исключение - ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); - ВызватьИсключение АвтономнаяРаботаСлужебный.ДобавитьКлассОшибки( - КраткоеПредставлениеОшибки(ИнформацияОбОшибке()), - АвтономнаяРаботаСлужебный.КлассОшибкиСозданиеСлужебногоПользователя() - ); - КонецПопытки; + // Назначаем права на синхронизацию выбранным пользователям + Если ОбщегоНазначенияКлиентСервер.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда + + ОбщийМодульУправлениеДоступомСлужебный = ОбщегоНазначенияКлиентСервер.ОбщийМодуль("УправлениеДоступомСлужебный"); + + Для Каждого Пользователь Из ВыбранныеПользователиСинхронизации Цикл + + ОбщийМодульУправлениеДоступомСлужебный.ВключитьПользователяВГруппуДоступа(Пользователь, + ОбменДаннымиСервер.ПрофильДоступаСинхронизацияДанныхСДругимиПрограммами()); + КонецЦикла; + + КонецЕсли; // Формируем префикс для нового автономного рабочего места Блокировка = Новый БлокировкаДанных; @@ -53,7 +53,7 @@ ДатаСозданияНачальногоОбраза = ТекущаяДатаСеанса(); // Выгружаем параметры настройки в начальный образ автономного рабочего места - ВыгрузитьПараметрыВНачальныйОбраз(ПрефиксАвтономногоРабочегоМеста, ДатаСозданияНачальногоОбраза, АвтономноеРабочееМесто, ИмяПользователя); + ВыгрузитьПараметрыВНачальныйОбраз(ПрефиксАвтономногоРабочегоМеста, ДатаСозданияНачальногоОбраза, АвтономноеРабочееМесто); // Устанавливаем дату создания начального образа, как дату первой успешной синхронизации данных. СтруктураЗаписи = Новый Структура; @@ -68,40 +68,29 @@ СтруктураЗаписи.Вставить("ДатаОкончания", ДатаСозданияНачальногоОбраза); РегистрыСведений.СостоянияУспешныхОбменовДанными.ДобавитьЗапись(СтруктураЗаписи); - // Добавляем связь автономного рабочего места со служебным пользователем - СтруктураЗаписи = Новый Структура; - СтруктураЗаписи.Вставить("УзелИнформационнойБазы", АвтономноеРабочееМесто); - СтруктураЗаписи.Вставить("ПользовательДляСинхронизацииДанных", Пользователь); - РегистрыСведений.ОбщиеНастройкиУзловИнформационныхБаз.ОбновитьЗапись(СтруктураЗаписи); - ЗафиксироватьТранзакцию(); Исключение ОтменитьТранзакцию(); ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ВызватьИсключение; КонецПопытки; КаталогНачальногоОбраза = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( КаталогВременныхФайлов(), - ИмяВременногоКаталогаНачальногоОбраза() - ); + ИмяВременногоКаталогаНачальногоОбраза()); КаталогУстановки = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( КаталогНачальногоОбраза, - "1" - ); + "1"); КаталогАрхива = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( КаталогУстановки, - "InfoBase" - ); + "InfoBase"); ИмяФайлаДанныхНачальногоОбраза = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( КаталогАрхива, - "data.xml" - ); + "data.xml"); СоздатьКаталог(КаталогАрхива); @@ -128,8 +117,7 @@ ПланыОбмена.СоздатьНачальныйОбраз(АвтономноеРабочееМестоОбъект, СтрокаСоединения); Исключение ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); // Хранить настройки для автономного рабочего места в ИБ небезопасно. Константы.НастройкиПодчиненногоУзлаРИБ.Установить(""); @@ -139,8 +127,7 @@ УдалитьФайлы(КаталогНачальногоОбраза); Исключение ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; // Удаляем автономное рабочее место @@ -153,20 +140,16 @@ ВыгруженныеДанные.Закрыть(); ИмяФайлаНачальногоОбраза = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( - КаталогНачальногоОбраза, "1Cv8.1CD" - ); + КаталогНачальногоОбраза, "1Cv8.1CD"); ИмяФайлаНачальногоОбразаВКаталогеАрхива = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( - КаталогАрхива, "1Cv8.1CD" - ); + КаталогАрхива, "1Cv8.1CD"); ИмяФайлаПакетаУстановки = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( - КаталогНачальногоОбраза, АвтономнаяРаботаСлужебный.ИмяФайлаПакетаУстановки() - ); + КаталогНачальногоОбраза, АвтономнаяРаботаСлужебный.ИмяФайлаПакетаУстановки()); ИмяФайлаИнструкции = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( - КаталогАрхива, "ReadMe.html" - ); + КаталогАрхива, "ReadMe.html"); ТекстИнструкции = АвтономнаяРаботаСлужебный.ТекстИнструкцииИзМакета("ИнструкцияПоНастройкеАвтономногоРабочегоМеста"); @@ -179,8 +162,7 @@ Архиватор = Новый ЗаписьZipФайла(ИмяФайлаПакетаУстановки,,,, УровеньСжатияZIP.Максимальный); Архиватор.Добавить(ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогУстановки, "*.*"), РежимСохраненияПутейZIP.СохранятьОтносительныеПути, - РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно - ); + РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно); Архиватор.Записать(); ДанныеПакетаУстановки = Новый ДвоичныеДанные(ИмяФайлаПакетаУстановки); @@ -198,8 +180,7 @@ УдалитьФайлы(КаталогНачальногоОбраза); Исключение ЗаписьЖурналаРегистрации(СобытиеЖурналаРегистрации(), УровеньЖурналаРегистрации.Ошибка,,, - ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; // Хранить настройки для автономного рабочего места в ИБ небезопасно. @@ -209,9 +190,9 @@ // -Процедура ВыгрузитьПараметрыВНачальныйОбраз(ПрефиксАвтономногоРабочегоМеста, ДатаСозданияНачальногоОбраза, АвтономноеРабочееМесто, ИмяПользователя) +Процедура ВыгрузитьПараметрыВНачальныйОбраз(ПрефиксАвтономногоРабочегоМеста, ДатаСозданияНачальногоОбраза, АвтономноеРабочееМесто) - Константы.НастройкиПодчиненногоУзлаРИБ.Установить(ВыгрузитьПараметрыВСтрокуXML(ПрефиксАвтономногоРабочегоМеста, ДатаСозданияНачальногоОбраза, АвтономноеРабочееМесто, ИмяПользователя)); + Константы.НастройкиПодчиненногоУзлаРИБ.Установить(ВыгрузитьПараметрыВСтрокуXML(ПрефиксАвтономногоРабочегоМеста, ДатаСозданияНачальногоОбраза, АвтономноеРабочееМесто)); КонецПроцедуры @@ -240,35 +221,7 @@ Возврат АвтономноеРабочееМестоОбъект.Ссылка; КонецФункции -Функция СоздатьСлужебногоПользователяДляСинхронизацииДанных(ИмяПользователя) - - ИмяПользователя = НСтр("ru = '(АР) [НаименованиеАвтономногоРабочегоМеста]'"); - ИмяПользователя = СтрЗаменить(ИмяПользователя, "[НаименованиеАвтономногоРабочегоМеста]", НаименованиеАвтономногоРабочегоМеста); - ИмяПользователя = АвтономнаяРаботаСлужебный.ЗаменитьНедопустимыеСимволыВИмениПользователя(ИмяПользователя); - - Роли = Новый Массив; - Роли.Добавить("ВыполнениеСинхронизацииДанных"); - Роли.Добавить("УдаленныйДоступБазоваяФункциональность"); - - ОписаниеПользователяИБ = Новый Структура; - ОписаниеПользователяИБ.Вставить("Действие", "Записать"); - ОписаниеПользователяИБ.Вставить("Имя", Лев(ИмяПользователя, 64)); - ОписаниеПользователяИБ.Вставить("ПолноеИмя", ИмяПользователя); - ОписаниеПользователяИБ.Вставить("Роли", Роли); - ОписаниеПользователяИБ.Вставить("Пароль", ПарольДляСинхронизацииДанных); - ОписаниеПользователяИБ.Вставить("АутентификацияСтандартная", Истина); - ОписаниеПользователяИБ.Вставить("ПоказыватьВСпискеВыбора", Ложь); - - Пользователь = Справочники.Пользователи.СоздатьЭлемент(); - Пользователь.Наименование = ИмяПользователя; - Пользователь.Служебный = Истина; - Пользователь.ДополнительныеСвойства.Вставить("ОписаниеПользователяИБ", ОписаниеПользователяИБ); - Пользователь.Записать(); - - Возврат Пользователь.Ссылка; -КонецФункции - -Функция ВыгрузитьПараметрыВСтрокуXML(ПрефиксАвтономногоРабочегоМеста, Знач ДатаСозданияНачальногоОбраза, АвтономноеРабочееМесто, Знач ИмяПользователя) +Функция ВыгрузитьПараметрыВСтрокуXML(ПрефиксАвтономногоРабочегоМеста, Знач ДатаСозданияНачальногоОбраза, АвтономноеРабочееМесто) ПараметрыАвтономногоРабочегоМеста = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(АвтономноеРабочееМесто, "Код, Наименование"); ПараметрыПриложенияВСервисе = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(АвтономнаяРаботаСлужебный.ПриложениеВСервисе(), "Код, Наименование"); @@ -290,7 +243,6 @@ ЗаписатьXML(ЗаписьXML, ПрефиксАвтономногоРабочегоМеста, "Префикс", НазначениеТипаXML.Явное); ЗаписатьXML(ЗаписьXML, ЗаголовокСистемы(), "ЗаголовокСистемы", НазначениеТипаXML.Явное); ЗаписатьXML(ЗаписьXML, WSURLВебСервиса, "URL", НазначениеТипаXML.Явное); - ЗаписатьXML(ЗаписьXML, ИмяПользователя, "ИмяПользователя", НазначениеТипаXML.Явное); ЗаписатьXML(ЗаписьXML, ПользователиИнформационнойБазы.ТекущийПользователь().Имя, "ИмяВладельца", НазначениеТипаXML.Явное); ЗаписатьXML(ЗаписьXML, Строка(Пользователи.АвторизованныйПользователь().УникальныйИдентификатор()), "Владелец", НазначениеТипаXML.Явное); @@ -373,4 +325,4 @@ Возврат ?(ПустаяСтрока(Результат), НСтр("ru = 'Автономное рабочее место'"), Результат); КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Templates/ИнструкцияПоНастройкеАвтономногоРабочегоМеста/ru.html b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Templates/ИнструкцияПоНастройкеАвтономногоРабочегоМеста/ru.html index f3a88bd73..7c203187a 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Templates/ИнструкцияПоНастройкеАвтономногоРабочегоМеста/ru.html +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Templates/ИнструкцияПоНастройкеАвтономногоРабочегоМеста/ru.html @@ -1,4 +1,4 @@ - -

            Для изменения пароля синхронизации данных перейдите в приложение в Интернете.
            В приложении в разделе администрирования перейдите по гиперссылке "Автономная работа".
            Выберите команду "Сменить пароль...", если создано одно автономное рабочее место
            или, если автономных рабочих мест несколько, в списке выберите команду "Сменить пароль для синхронизации...".

            \ No newline at end of file diff --git a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Templates/КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие/ru.html b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Templates/КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие/ru.html index ffd4cb9f1..a5168f347 100644 --- a/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Templates/КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие/ru.html +++ b/SSL/src/DataProcessors/ПомощникСозданияАвтономногоРабочегоМеста/Templates/КакУстановитьИлиОбновитьВерсиюПлатформы1СПредприятие/ru.html @@ -1,4 +1,4 @@ - + 1 + +
            +
            + None + + СписокКонстантКоманднаяПанель + 6 + Left + true + + + Selection + СписокКонстантВыбор + + + СписокКонстантСтрокаПоиска + 37 + + СписокКонстантСтрокаПоискаРасширеннаяПодсказка + 39 + Label + true + true + + Left + + + + СписокКонстантСтрокаПоискаКонтекстноеМеню + 38 + true + + СписокКонстант + + true + + + + СписокКонстантСостояниеПросмотра + 40 + + СписокКонстантСостояниеПросмотраРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + + СписокКонстантСостояниеПросмотраКонтекстноеМеню + 41 + true + + ViewStatusAddition + СписокКонстант + + true + + + + СписокКонстантУправлениеПоиском + 43 + + СписокКонстантУправлениеПоискомРасширеннаяПодсказка + 45 + Label + true + true + + Left + + + + СписокКонстантУправлениеПоискомКонтекстноеМеню + 44 + true + + SearchControlAddition + СписокКонстант + + true + + + + СписокКонстантРасширеннаяПодсказка + 36 + Label + true + true + + Left + + + + СписокКонстантКонтекстноеМеню + 5 + + СписокКонстантКонтекстноеМенюВыбратьКонстанту + 16 + + <key>ru</key> + <value>Выбрать</value> + + true + true + + true + + + СписокКонстантКонтекстноеМенюВыбратьКонстантуРасширеннаяПодсказка + 29 + Label + true + true + + Left + + + Form.Command.ВыбратьКонстанту + Normal + Auto + true + true + UserCmds + Auto + + + СписокКонстантКонтекстноеМенюГруппа1 + 17 + + СписокКонстантКонтекстноеМенюНайти + 18 + true + true + + true + + + СписокКонстантКонтекстноеМенюНайтиРасширеннаяПодсказка + 31 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + + + СписокКонстантКонтекстноеМенюВыделитьВсе + 19 + true + true + + true + + + СписокКонстантКонтекстноеМенюВыделитьВсеРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.SelectAll + Normal + Auto + true + true + UserCmds + Auto + + + СписокКонстантКонтекстноеМенюОтменитьПоиск + 20 + true + true + + true + + + СписокКонстантКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка + 33 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + + + СписокКонстантКонтекстноеМенюВывестиСписок + 21 + true + true + + true + + + СписокКонстантКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 34 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + + СписокКонстантКонтекстноеМенюКопироватьВБуферОбмена + 22 + true + true + + true + + + СписокКонстантКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 35 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.CopyToClipboard + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + СписокКонстантКонтекстноеМенюГруппа1РасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + + + true + true + true + true + true + MultiRow +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + false + false + false + true + Auto + Auto + true + true + true + true + + СписокКонстант.ИндексКартинки + + + None + None + None + true + +
            + + Группа1 + 23 + + Декорация1 + 24 + + <key>ru</key> + <value>Картинка авторегистрации</value> + + true + true + + true + + + Декорация1РасширеннаяПодсказка + 59 + Label + true + true + + Left + + + + Декорация1КонтекстноеМеню + 25 + true + + 2 + true + 1 + true + false + false + + + + + + ДекорацияАвторегистрация + 26 + + <key>ru</key> + <value>Авторегистрация для узла</value> + + true + true + + true + + + ДекорацияАвторегистрацияРасширеннаяПодсказка + 60 + Label + true + true + + Left + + + + ДекорацияАвторегистрацияКонтекстноеМеню + 27 + true + + Label + true + true + true + false + + Left + Top + + + true + true + + + <key>ru</key> + <value>Легенда</value> + + true + false + + Группа1РасширеннаяПодсказка + 58 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаВыбратьКонстанту + 9 + true + true + + true + + + ФормаВыбратьКонстантуРасширеннаяПодсказка + 28 + Label + true + true + + Left + + + Form.Command.ВыбратьКонстанту + PictureAndText + true + true + true + UserCmds + Auto + + Left + true + + + OnOpen + ПриОткрытии + + + OnReopen + ПриПовторномОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DataProcessorObject.РегистрацияИзмененийДляОбменаДанными + + + true + + + true + +
            true
            +
            + + СписокКонстант + + <key>ru</key> + <value>Список констант</value> + + 2 + + 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 + + Number + + 10 + + + + true + + + true + + + + ИндексКартинкиАвторегистрация + + <key>ru</key> + <value>Индекс картинки авторегистрация</value> + + 4 + + Number + + 10 + + + + true + + + true + + + + + ВыбратьКонстанту + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать константу + + + true + + + StdPicture.ChooseValue + + + + ВыбратьКонстанту + + + Auto + Auto + + + НачальноеЗначениеВыбора + + String + + + true + + + МассивИменМетаданных + + + + МассивПредставлений + + + + МассивАвторегистрации + + + + УзелОбмена + + ExchangePlanRef + + true + + + + + + + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/Декорация1/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/Декорация1/Picture.png new file mode 100644 index 000000000..91d113a1c Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/Декорация1/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/СписокКонстант/RowsPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/СписокКонстант/RowsPicture.png new file mode 100644 index 000000000..d36e47e45 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/СписокКонстант/RowsPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/СписокКонстантИндексКартинкиАвторегистрация/HeaderPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/СписокКонстантИндексКартинкиАвторегистрация/HeaderPicture.png new file mode 100644 index 000000000..91d113a1c Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/СписокКонстантИндексКартинкиАвторегистрация/HeaderPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/СписокКонстантИндексКартинкиАвторегистрация/ValuesPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/СписокКонстантИндексКартинкиАвторегистрация/ValuesPicture.png new file mode 100644 index 000000000..d7cc10f56 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Items/СписокКонстантИндексКартинкиАвторегистрация/ValuesPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Module.bsl new file mode 100644 index 000000000..718a1e365 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборКонстанты/Module.bsl @@ -0,0 +1,94 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные); + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + СписокКонстант.Очистить(); + Для ТекИнд=0 По Параметры.МассивИменМетаданных.ВГраница() Цикл + Строка = СписокКонстант.Добавить(); + Строка.ИндексКартинкиАвторегистрация = Параметры.МассивАвторегистрации[ТекИнд]; + Строка.ИндексКартинки = 2; + Строка.МетаПолноеИмя = Параметры.МассивИменМетаданных[ТекИнд]; + Строка.Наименование = Параметры.МассивПредставлений[ТекИнд]; + КонецЦикла; + + ЗаголовокАвторегистрации = НСтр("ru='Авторегистрация для узла ""%1""'"); + + Элементы.ДекорацияАвторегистрация.Заголовок = СтрЗаменить(ЗаголовокАвторегистрации, "%1", Параметры.УзелОбмена); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + ТекПараметры = УстановитьПараметрыФормы(); + Элементы.СписокКонстант.ТекущаяСтрока = ТекПараметры.ТекущаяСтрока; +КонецПроцедуры + +&НаКлиенте +Процедура ПриПовторномОткрытии() + ТекПараметры = УстановитьПараметрыФормы(); + Элементы.СписокКонстант.ТекущаяСтрока = ТекПараметры.ТекущаяСтрока; +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ СписокКонстант +// + +&НаКлиенте +Процедура СписокКонстантВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + ПроизвестиВыборКонстанты(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// + +// Производит выбор константы +// +&НаКлиенте +Процедура ВыбратьКонстанту(Команда) + ПроизвестиВыборКонстанты(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +// Производит выбор и оповещает о нем +// +&НаКлиенте +Процедура ПроизвестиВыборКонстанты() + Данные = Новый Массив; + Для Каждого ТекЭл Из Элементы.СписокКонстант.ВыделенныеСтроки Цикл + ТекСтрока = СписокКонстант.НайтиПоИдентификатору(ТекЭл); + Данные.Добавить(ТекСтрока.МетаПолноеИмя); + КонецЦикла; + ОповеститьОВыборе(Данные); +КонецПроцедуры + +&НаСервере +Функция УстановитьПараметрыФормы() + Результат = Новый Структура("ТекущаяСтрока"); + Если Параметры.НачальноеЗначениеВыбора<>Неопределено Тогда + Результат.ТекущаяСтрока = ИдентификаторСтрокиПоМетаИмени(Параметры.НачальноеЗначениеВыбора); + КонецЕсли; + Возврат Результат; +КонецФункции + +&НаСервере +Функция ИдентификаторСтрокиПоМетаИмени(ПолноеИмяМетаданных) + Данные = РеквизитФормыВЗначение("СписокКонстант"); + ТекСтрока = Данные.Найти(ПолноеИмяМетаданных, "МетаПолноеИмя"); + Если ТекСтрока<>Неопределено Тогда + Возврат ТекСтрока.ПолучитьИдентификатор(); + КонецЕсли; + Возврат Неопределено; +КонецФункции diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Attributes/СписокДанных/ExtInfo/ListSettings.dcss b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Attributes/СписокДанных/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..91027f589 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Attributes/СписокДанных/ExtInfo/ListSettings.dcss @@ -0,0 +1,15 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Form.form b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Form.form new file mode 100644 index 000000000..f66f87673 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Form.form @@ -0,0 +1,1033 @@ + + + + <key>ru</key> + <value>Выбор объектов отбором</value> + + + Группа1 + 18 + + Отбор + 15 + true + true + + true + + + СписокДанных.Filter + + None + + ОтборКоманднаяПанель + 17 + + ОтборДобавитьЭлементОтбора + 33 + true + true + + true + + + ОтборДобавитьЭлементОтбораРасширеннаяПодсказка + 41 + Label + true + true + + Left + + + Form.Item.Отбор.StandardCommand.AddFilterItem + Normal + Auto + true + true + UserCmds + Auto + + + ОтборСгруппироватьЭлементыОтбора + 34 + true + true + + true + + + ОтборСгруппироватьЭлементыОтбораРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + Form.Item.Отбор.StandardCommand.GroupFilterItems + Normal + Auto + true + true + UserCmds + Auto + + + ОтборУдалить + 35 + true + true + + true + + + ОтборУдалитьРасширеннаяПодсказка + 43 + Label + true + true + + Left + + + Form.Item.Отбор.StandardCommand.Delete + Normal + Auto + true + true + UserCmds + Auto + + + ОтборПереместитьВниз + 36 + true + true + + true + + + ОтборПереместитьВнизРасширеннаяПодсказка + 44 + Label + true + true + + Left + + + Form.Item.Отбор.StandardCommand.MoveDown + Normal + Auto + true + true + UserCmds + Auto + + + ОтборПереместитьВверх + 37 + true + true + + true + + + ОтборПереместитьВверхРасширеннаяПодсказка + 45 + Label + true + true + + Left + + + Form.Item.Отбор.StandardCommand.MoveUp + Normal + Auto + true + true + UserCmds + Auto + + + ОтборГруппа1 + 38 + true + true + + true + + + <key>ru</key> + <value>Действия отбора</value> + + + ОтборГруппа1РасширеннаяПодсказка + 46 + Label + true + true + + Left + + + + Item.Отбор + + + + ОтборГруппа2 + 39 + true + true + + true + + + <key>ru</key> + <value>Действия формы</value> + + + ОтборГруппа2РасширеннаяПодсказка + 47 + Label + true + true + + Left + + + + Form + + + Left + + + OnChange + ОтборПриИзменении + + + ОтборСтрокаПоиска + 49 + + ОтборСтрокаПоискаРасширеннаяПодсказка + 51 + Label + true + true + + Left + + + + ОтборСтрокаПоискаКонтекстноеМеню + 50 + true + + Отбор + + true + + + + ОтборСостояниеПросмотра + 52 + + ОтборСостояниеПросмотраРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + + ОтборСостояниеПросмотраКонтекстноеМеню + 53 + true + + ViewStatusAddition + Отбор + + true + + + + ОтборУправлениеПоиском + 55 + + ОтборУправлениеПоискомРасширеннаяПодсказка + 57 + Label + true + true + + Left + + + + ОтборУправлениеПоискомКонтекстноеМеню + 56 + true + + SearchControlAddition + Отбор + + true + + + + ОтборРасширеннаяПодсказка + 48 + Label + true + true + + Left + + + + ОтборКонтекстноеМеню + 16 + true + + Tree + true + true + true + true + true + true + MultiRow +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + false + Auto + Auto + ExpandAllLevels + true + true + true + true + None + None + None + true + All + false +
            + true + true + + true + + + <key>ru</key> + <value>Элементы отбора</value> + + + Группа1РасширеннаяПодсказка + 40 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + auto + Auto + Auto + +
            + + СписокДанных + 10 + true + true + + true + + + СписокДанных + + Choose + Bottom + + СписокДанныхКоманднаяПанель + 12 + + СписокДанныхВыбратьОтобранныеЗначения + 22 + + <key>ru</key> + <value>Выбрать все</value> + + true + true + + true + + + СписокДанныхВыбратьОтобранныеЗначенияРасширеннаяПодсказка + 76 + Label + true + true + + Left + + + Form.Command.ВыбратьОтобранныеЗначения + PictureAndText + true + true + true + UserCmds + + StdPicture.ChooseValue + + Auto + + + СписокДанныхВыбратьТекущуюСтроку + 21 + + <key>ru</key> + <value>Выбрать</value> + + true + true + + true + + + СписокДанныхВыбратьТекущуюСтрокуРасширеннаяПодсказка + 77 + Label + true + true + + Left + + + Form.Command.ВыбратьТекущуюСтроку + Normal + PictureAndText + true + true + UserCmds + + StdPicture.ChooseValue + + Auto + + + СписокДанныхЗакрыть + 20 + + <key>ru</key> + <value>Закрыть</value> + + true + true + + true + + + СписокДанныхЗакрытьРасширеннаяПодсказка + 78 + Label + true + true + + Left + + + Form.StandardCommand.Close + Normal + true + true + UserCmds + Auto + + Right + + + Selection + СписокДанныхВыбор + + + СписокДанныхСтрокаПоиска + 80 + + СписокДанныхСтрокаПоискаРасширеннаяПодсказка + 82 + Label + true + true + + Left + + + + СписокДанныхСтрокаПоискаКонтекстноеМеню + 81 + true + + СписокДанных + + true + + + + СписокДанныхСостояниеПросмотра + 83 + + СписокДанныхСостояниеПросмотраРасширеннаяПодсказка + 85 + Label + true + true + + Left + + + + СписокДанныхСостояниеПросмотраКонтекстноеМеню + 84 + true + + ViewStatusAddition + СписокДанных + + true + + + + СписокДанныхУправлениеПоиском + 86 + + СписокДанныхУправлениеПоискомРасширеннаяПодсказка + 88 + Label + true + true + + Left + + + + СписокДанныхУправлениеПоискомКонтекстноеМеню + 87 + true + + SearchControlAddition + СписокДанных + + true + + + + СписокДанныхРасширеннаяПодсказка + 79 + Label + true + true + + Left + + + + СписокДанныхКонтекстноеМеню + 11 + + СписокДанныхКонтекстноеМенюВыбратьОтобранныеЗначения + 23 + + <key>ru</key> + <value>Выбрать все отобранные</value> + + true + true + + true + + + СписокДанныхКонтекстноеМенюВыбратьОтобранныеЗначенияРасширеннаяПодсказка + 66 + Label + true + true + + Left + + + Form.Command.ВыбратьОтобранныеЗначения + Normal + Auto + true + true + UserCmds + + StdPicture.ChooseValue + + Auto + + + СписокДанныхКонтекстноеМенюВыбратьТекущуюСтроку + 24 + + <key>ru</key> + <value>Выбрать текущие данные</value> + + true + true + + true + + + СписокДанныхКонтекстноеМенюВыбратьТекущуюСтрокуРасширеннаяПодсказка + 67 + Label + true + true + + Left + + + Form.Command.ВыбратьТекущуюСтроку + Normal + true + true + UserCmds + Auto + + + СписокДанныхКонтекстноеМенюГруппа2 + 31 + + СписокДанныхКонтекстноеМенюОткрытьТекущийОбъект + 32 + + <key>ru</key> + <value>Открыть форму текущего объекта</value> + + true + true + + true + + + СписокДанныхКонтекстноеМенюОткрытьТекущийОбъектРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + Form.Command.ОткрытьТекущийОбъект + Normal + Auto + true + true + UserCmds + + StdPicture.Form + + Auto + + true + true + + true + + + СписокДанныхКонтекстноеМенюГруппа2РасширеннаяПодсказка + 68 + Label + true + true + + Left + + + + + + СписокДанныхКонтекстноеМенюГруппа1 + 25 + + СписокДанныхКонтекстноеМенюНайти + 26 + true + true + + true + + + СписокДанныхКонтекстноеМенюНайтиРасширеннаяПодсказка + 71 + Label + true + true + + Left + + + Form.Item.СписокДанных.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + + + СписокДанныхКонтекстноеМенюОбновить + 27 + true + true + + true + + + СписокДанныхКонтекстноеМенюОбновитьРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + Form.Item.СписокДанных.StandardCommand.Refresh + Normal + Auto + true + true + UserCmds + Auto + + + СписокДанныхКонтекстноеМенюОтменитьПоиск + 28 + true + true + + true + + + СписокДанныхКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка + 73 + Label + true + true + + Left + + + Form.Item.СписокДанных.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + + + СписокДанныхКонтекстноеМенюНастройкаСписка + 29 + true + true + + true + + + СписокДанныхКонтекстноеМенюНастройкаСпискаРасширеннаяПодсказка + 74 + Label + true + true + + Left + + + Form.Item.СписокДанных.StandardCommand.ListSettings + Normal + Auto + true + true + UserCmds + Auto + + + СписокДанныхКонтекстноеМенюВывестиСписок + 30 + true + true + + true + + + СписокДанныхКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 75 + Label + true + true + + Left + + + Form.Item.СписокДанных.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + СписокДанныхКонтекстноеМенюГруппа1РасширеннаяПодсказка + 70 + Label + true + true + + Left + + + + + + true + true + true + MultiRow +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + Auto + Auto + true + true + true + + СписокДанных.DefaultPicture + + None + None + None + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + true + +
            + None + false + + ФормаКоманднаяПанель + -1 + Left + true + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DataProcessorObject.РегистрацияИзмененийДляОбменаДанными + + + true + + + true + +
            true
            +
            + + СписокДанных + + <key>ru</key> + <value>Список данных</value> + + 2 + + DynamicList + + + true + + + true + + + ВЫБРАТЬ + NULL КАК Ссылка + true + true + true + true + + + + СтруктураДанных + + <key>ru</key> + <value>Структура данных</value> + + 3 + + + true + + + true + + + + КлючФормыДанных + + <key>ru</key> + <value>Ключ формы данных</value> + + 5 + + + true + + + true + + + + ВыбратьОтобранныеЗначения + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать отобранные значения + + + true + + + + ВыбратьОтобранныеЗначения + + + Auto + Auto + + + ВыбратьТекущуюСтроку + + <key>ru</key> + <value>Выбрать</value> + + 2 + + ru + Выбрать текущую строку + + + true + + + + ВыбратьТекущуюСтроку + + + Auto + Auto + + + ОткрытьТекущийОбъект + + <key>ru</key> + <value>Открыть</value> + + 3 + + ru + Открыть текущий объект + + + true + + + + ОткрытьТекущийОбъект + + + Auto + Auto + + + ИмяТаблицы + + true + + + ДействиеВыбора + + true + + + + + + +
            diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Module.bsl new file mode 100644 index 000000000..8822f3330 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборОбъектовОтбором/Module.bsl @@ -0,0 +1,206 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные); + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + ИмяТаблицыДанных = Параметры.ИмяТаблицы; + ТекущийОбъект = ЭтотОбъект(); + ЗаголовокТаблицы = ""; + + // Определяемся, что за таблица к нам пришла + Описание = ТекущийОбъект.ХарактеристикиПоМетаданным(ИмяТаблицыДанных); + МетаИнфо = Описание.Метаданные; + Заголовок = МетаИнфо.Представление(); + + // Список и колонки + СтруктураДанных = ""; + Если Описание.ЭтоСсылка Тогда + ЗаголовокТаблицы = МетаИнфо.ПредставлениеОбъекта; + Если ПустаяСтрока(ЗаголовокТаблицы) Тогда + ЗаголовокТаблицы = Заголовок; + КонецЕсли; + + СписокДанных.ПроизвольныйЗапрос = Ложь; + СписокДанных.ОсновнаяТаблица = ИмяТаблицыДанных; + + Поле = СписокДанных.Отбор.ДоступныеПоляОтбора.Элементы.Найти(Новый ПолеКомпоновкиДанных("Ссылка")); + ТаблицаКолонок = Новый ТаблицаЗначений; + Колонки = ТаблицаКолонок.Колонки; + Колонки.Добавить("Ссылка", Поле.ТипЗначения, ЗаголовокТаблицы); + СтруктураДанных = "Ссылка"; + + КлючФормыДанных = "Ссылка"; + + ИначеЕсли Описание.ЭтоНабор Тогда + Колонки = ТекущийОбъект.ИзмеренияНабораЗаписей(МетаИнфо); + Для Каждого ТекЭл Из Колонки Цикл + СтруктураДанных = СтруктураДанных + "," + ТекЭл.Имя; + КонецЦикла; + СтруктураДанных = Сред(СтруктураДанных, 2); + + СписокДанных.ПроизвольныйЗапрос = Истина; + СписокДанных.ТекстЗапроса = "ВЫБРАТЬ РАЗЛИЧНЫЕ " + СтруктураДанных + " ИЗ " + ИмяТаблицыДанных; + + Если Описание.ЭтоПоследовательность Тогда + КлючФормыДанных = "Регистратор"; + Иначе + КлючФормыДанных = Новый Структура(СтруктураДанных); + КонецЕсли; + + Иначе + // Без колонок??? + Возврат; + КонецЕсли; + СписокДанных.ДинамическоеСчитываниеДанных = Истина; + + ТекущийОбъект.ДобавитьКолонкиВТаблицуФормы( + Элементы.СписокДанных, + "Порядок, Отбор, Группировка, СтандартнаяКартинка, Параметры, УсловноеОформление", + Колонки); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ +// + +&НаКлиенте +Процедура ОтборПриИзменении(Элемент) + Элементы.СписокДанных.Обновить(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ СписокДанных +// + +&НаКлиенте +Процедура СписокДанныхВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ОткрытьФормуТекущегоОбъекта(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// + +&НаКлиенте +Процедура ОткрытьТекущийОбъект(Команда) + ОткрытьФормуТекущегоОбъекта(); +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьОтобранныеЗначения(Команда) + ПроизвестиВыбор(Истина); +КонецПроцедуры + +&НаКлиенте +Процедура ВыбратьТекущуюСтроку(Команда) + ПроизвестиВыбор(Ложь); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +&НаКлиенте +Процедура ОткрытьФормуТекущегоОбъекта() + ТекПараметры = ПараметрыФормыТекущегоОбъекта(Элементы.СписокДанных.ТекущиеДанные); + Если ТекПараметры<>Неопределено Тогда + ОткрытьФорму(ТекПараметры.ИмяФормы, ТекПараметры.Ключ); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроизвестиВыбор(ВесьРезультатОтбора=Истина) + + Если ВесьРезультатОтбора Тогда + Данные = ВсеВыбранныеЭлементы(); + Иначе + Данные = Новый Массив; + Для Каждого ТекСтрока Из Элементы.СписокДанных.ВыделенныеСтроки Цикл + Элемент = Новый Структура(СтруктураДанных); + ЗаполнитьЗначенияСвойств(Элемент, Элементы.СписокДанных.ДанныеСтроки(ТекСтрока)); + Данные.Добавить(Элемент); + КонецЦикла; + КонецЕсли; + + ОповеститьОВыборе(Новый Структура("ИмяТаблицы, ДанныеВыбора, ДействиеВыбора, СтруктураПолей", + Параметры.ИмяТаблицы, + Данные, + Параметры.ДействиеВыбора, + СтруктураДанных)); +КонецПроцедуры + +&НаСервере +Функция ЭтотОбъект(ТекущийОбъект=Неопределено) + Если ТекущийОбъект=Неопределено Тогда + Возврат РеквизитФормыВЗначение("Объект"); + КонецЕсли; + ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); + Возврат Неопределено; +КонецФункции + +&НаСервере +Функция ПараметрыФормыТекущегоОбъекта(Знач Данные) + + Если Данные=Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Если ТипЗнч(КлючФормыДанных)=Тип("Строка") Тогда + Значение = Данные[КлючФормыДанных]; + ТекИмяФормы = ЭтотОбъект().ПолучитьИмяФормы(Значение) + ".ФормаОбъекта"; + Иначе + // Там структура с именами измерений + ТекИмяФормы = ""; + ЗаполнитьЗначенияСвойств(КлючФормыДанных, Данные); + ТекПараметры = Новый Массив; + ТекПараметры.Добавить(КлючФормыДанных); + Попытка + Значение = Новый(СтрЗаменить(Параметры.ИмяТаблицы, ".", "КлючЗаписи."), ТекПараметры); + ТекИмяФормы = Параметры.ИмяТаблицы + ".ФормаЗаписи"; + Исключение + // Обработка не требуется + ; + КонецПопытки; + + Если ПустаяСтрока(ТекИмяФормы) Тогда + // Набор без ключей записи, типа оборотного регистра + Если Данные.Свойство("Регистратор") Тогда + Значение = Данные.Регистратор; + Иначе + Для Каждого КлючЗначение Из КлючФормыДанных Цикл + Значение = Данные[КлючЗначение.Ключ]; + Прервать; + КонецЦикла; + КонецЕсли; + ТекИмяФормы = ЭтотОбъект().ПолучитьИмяФормы(Значение) + ".ФормаОбъекта"; + КонецЕсли; + КонецЕсли; + + Возврат Новый Структура("ИмяФормы, Ключ", + ТекИмяФормы, + Новый Структура("Ключ", Значение)); +КонецФункции + +&НаСервере +Функция ВсеВыбранныеЭлементы() + + Данные = ЭтотОбъект().ТекущиеДанныеДинамическогоСписка(СписокДанных); + + Результат = Новый Массив(); + Для Каждого ТекСтрока Из Данные Цикл + Элемент = Новый Структура(СтруктураДанных); + ЗаполнитьЗначенияСвойств(Элемент, ТекСтрока); + Результат.Добавить(Элемент); + КонецЦикла; + + Возврат Результат; +КонецФункции diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/ConditionalAppearance.dcssca b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/ConditionalAppearance.dcssca new file mode 100644 index 000000000..dceae1b97 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/ConditionalAppearance.dcssca @@ -0,0 +1,26 @@ + + + + + + ДеревоУзловОбменаКод + + + + + ДеревоУзловОбмена.Ссылка + NotFilled + + + + + Видимость + false + + + Отображать + false + + + + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/Form.form b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/Form.form new file mode 100644 index 000000000..1c1c3b1d2 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/Form.form @@ -0,0 +1,743 @@ + + + + <key>ru</key> + <value>Выбор узла плана обмена</value> + + + ДеревоУзловОбмена + 1 + + <key>ru</key> + <value>Узлы обмена</value> + + true + true + + true + + + ДеревоУзловОбмена + + true + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + ДеревоУзловОбменаПометкаНаименование + 14 + + ДеревоУзловОбменаПометка + 12 + true + true + + true + + + ДеревоУзловОбмена.Пометка + + None + + OnChange + ДеревоУзловОбменаПометкаПриИзменении + + + ДеревоУзловОбменаПометкаРасширеннаяПодсказка + 54 + Label + true + true + + Left + + + + ДеревоУзловОбменаПометкаКонтекстноеМеню + 13 + true + + CheckBoxField + Auto + true + Left + true + + true + + + + ДеревоУзловОбменаНаименование + 4 + + <key>ru</key> + <value>Узел</value> + + true + true + + true + + + ДеревоУзловОбмена.Наименование + + + ДеревоУзловОбменаНаименованиеРасширеннаяПодсказка + 56 + Label + true + true + + Left + + + + ДеревоУзловОбменаНаименованиеКонтекстноеМеню + 5 + true + + LabelField + true + Auto + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Описание узла</value> + + + ru + Описание узла + + + ДеревоУзловОбменаПометкаНаименованиеРасширеннаяПодсказка + 53 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + ДеревоУзловОбменаКод + 31 + + <key>ru</key> + <value>Код</value> + + true + true + + true + + + ДеревоУзловОбмена.Код + + + ДеревоУзловОбменаКодРасширеннаяПодсказка + 58 + Label + true + true + + Left + + + + ДеревоУзловОбменаКодКонтекстноеМеню + 32 + true + + LabelField + Auto + true + Left + true + + true + true + + + None + + ДеревоУзловОбменаКоманднаяПанель + 3 + Left + + + Selection + ДеревоУзловОбменаВыбор + + + ДеревоУзловОбменаСтрокаПоиска + 44 + + ДеревоУзловОбменаСтрокаПоискаРасширеннаяПодсказка + 46 + Label + true + true + + Left + + + + ДеревоУзловОбменаСтрокаПоискаКонтекстноеМеню + 45 + true + + ДеревоУзловОбмена + + true + + + + ДеревоУзловОбменаСостояниеПросмотра + 47 + + ДеревоУзловОбменаСостояниеПросмотраРасширеннаяПодсказка + 49 + Label + true + true + + Left + + + + ДеревоУзловОбменаСостояниеПросмотраКонтекстноеМеню + 48 + true + + ViewStatusAddition + ДеревоУзловОбмена + + true + + + + ДеревоУзловОбменаУправлениеПоиском + 50 + + ДеревоУзловОбменаУправлениеПоискомРасширеннаяПодсказка + 52 + Label + true + true + + Left + + + + ДеревоУзловОбменаУправлениеПоискомКонтекстноеМеню + 51 + true + + SearchControlAddition + ДеревоУзловОбмена + + true + + + + ДеревоУзловОбменаРасширеннаяПодсказка + 43 + Label + true + true + + Left + + + + ДеревоУзловОбменаКонтекстноеМеню + 2 + + ДеревоУзловОбменаКонтекстноеМенюВыбратьУзел + 27 + + <key>ru</key> + <value>Выбрать узел</value> + + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюВыбратьУзелРасширеннаяПодсказка + 38 + Label + true + true + + Left + + + Form.Command.ВыбратьУзел + Normal + Auto + true + true + UserCmds + + StdPicture.ChooseValue + + Auto + + + ДеревоУзловОбменаКонтекстноеМенюИзменитьУзел + 28 + + <key>ru</key> + <value>Изменить узел</value> + + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюИзменитьУзелРасширеннаяПодсказка + 39 + Label + true + true + + Left + + + Form.Command.ИзменитьУзел + Normal + Auto + true + true + UserCmds + + StdPicture.Change + + Auto + + + ДеревоУзловОбменаКонтекстноеМенюГруппа1 + 33 + + ДеревоУзловОбменаКонтекстноеМенюВывестиСписок + 34 + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 41 + Label + true + true + + Left + + + Form.Item.ДеревоУзловОбмена.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + + ДеревоУзловОбменаКонтекстноеМенюКопироватьВБуферОбмена + 35 + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 42 + Label + true + true + + Left + + + Form.Item.ДеревоУзловОбмена.StandardCommand.CopyToClipboard + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюГруппа1РасширеннаяПодсказка + 40 + Label + true + true + + Left + + + + + + Tree + true + true + true +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + false + false + false + true + Auto + Auto + ExpandAllLevels + true + true + + ДеревоУзловОбмена.ИндексКартинки + + + None + None + None + true +
            + + ФормаКоманднаяПанель + -1 + + ФормаВыбратьУзел + 29 + + <key>ru</key> + <value>Выбрать</value> + + true + true + + true + + + ФормаВыбратьУзелРасширеннаяПодсказка + 36 + Label + true + true + + Left + + + Form.Command.ВыбратьУзел + PictureAndText + true + true + true + UserCmds + Auto + + + ФормаИзменитьУзел + 30 + + <key>ru</key> + <value>Изменить</value> + + true + true + + true + + + ФормаИзменитьУзелРасширеннаяПодсказка + 37 + Label + true + true + + Left + + + Form.Command.ИзменитьУзел + Normal + Auto + true + true + UserCmds + Auto + + Left + true + + + OnOpen + ПриОткрытии + + + OnReopen + ПриПовторномОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DataProcessorObject.РегистрацияИзмененийДляОбменаДанными + + + true + + + true + +
            true
            +
            + + ДеревоУзловОбмена + + <key>ru</key> + <value>Дерево узлов обмена</value> + + 2 + + ValueTree + + + true + + + true + + + Наименование + + <key>ru</key> + <value>Узел обмена</value> + + 1 + + String + + + + true + + + true + + + + ИндексКартинки + + <key>ru</key> + <value>Индекс картинки</value> + + 8 + + Number + + + + true + + + true + + + + Пометка + 3 + + Number + + 10 + + + + true + + + true + + + + Ссылка + + <key>ru</key> + <value>Ссылка</value> + + 4 + + ExchangePlanRef + + + true + + + true + + + + Код + + <key>ru</key> + <value>Код</value> + + 2 + + String + + + + true + + + true + + + + + МножественныйВыбор + + <key>ru</key> + <value>Множественный выбор</value> + + 3 + + Boolean + + + true + + + true + + + + ВыбратьУзел + + <key>ru</key> + <value>Выбрать</value> + + 1 + + ru + Выбрать узел + + + true + + + StdPicture.ChooseValue + + + + ВыбратьУзел + + + Auto + Auto + + + ИзменитьУзел + + <key>ru</key> + <value>Изменить</value> + + 2 + + ru + Изменить узел + + + true + + F2 + + StdPicture.Change + + + + ИзменитьУзел + + + Auto + Auto + + + МножественныйВыбор + + Boolean + + true + + + НачальноеЗначениеВыбора + + true + + + + + + +
            diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/Items/ДеревоУзловОбмена/RowsPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/Items/ДеревоУзловОбмена/RowsPicture.png new file mode 100644 index 000000000..3285ca4d3 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/Items/ДеревоУзловОбмена/RowsPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/Module.bsl new file mode 100644 index 000000000..31767b0c0 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/ВыборУзлаПланаОбмена/Module.bsl @@ -0,0 +1,208 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные); + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + МножественныйВыбор = Ложь; + ПрочитатьДеревоУзловОбмена(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + ТекПараметры = УстановитьПараметрыФормы(); + РазвернутьУзлы(ТекПараметры.Отмеченные); + Элементы.ДеревоУзловОбмена.ТекущаяСтрока = ТекПараметры.ТекущаяСтрока; +КонецПроцедуры + +&НаКлиенте +Процедура ПриПовторномОткрытии() + ТекПараметры = УстановитьПараметрыФормы(); + РазвернутьУзлы(ТекПараметры.Отмеченные); + Элементы.ДеревоУзловОбмена.ТекущаяСтрока = ТекПараметры.ТекущаяСтрока; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ДеревоУзлов +// + +&НаКлиенте +Процедура ДеревоУзловОбменаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + ПроизвестиВыборУзлов(Ложь); +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоУзловОбменаПометкаПриИзменении(Элемент) + ИзменениеПометки(Элементы.ДеревоУзловОбмена.ТекущаяСтрока); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// + +// Выбирает узел и передает выбранные значения в вызывающую форму. +&НаКлиенте +Процедура ВыбратьУзел(Команда) + ПроизвестиВыборУзлов(МножественныйВыбор); +КонецПроцедуры + +// Открывает форму узла, заданную в конфигурации. +&НаКлиенте +Процедура ИзменитьУзел(Команда) + КлючСсылка = Элементы.ДеревоУзловОбмена.ТекущиеДанные.Ссылка; + Если КлючСсылка<>Неопределено Тогда + ОткрытьФорму(ПолучитьИмяФормы(КлючСсылка) + "ФормаОбъекта", Новый Структура("Ключ", КлючСсылка)); + КонецЕсли; +КонецПроцедуры + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +&НаКлиенте +Процедура РазвернутьУзлы(Отмеченные) + Если Отмеченные<>Неопределено Тогда + Для Каждого ТекИд Из Отмеченные Цикл + ТекСтрока = ДеревоУзловОбмена.НайтиПоИдентификатору(ТекИд); + ТекРодитель = ТекСтрока.ПолучитьРодителя(); + Если ТекРодитель<>Неопределено Тогда + Элементы.ДеревоУзловОбмена.Развернуть(ТекРодитель.ПолучитьИдентификатор()); + КонецЕсли; + КонецЦикла; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПроизвестиВыборУзлов(ЭтоМножественныйВыбор) + + Если ЭтоМножественныйВыбор Тогда + Данные = ВыбранныеУзлы(); + Если Данные.Количество()>0 Тогда + ОповеститьОВыборе(Данные); + КонецЕсли; + Возврат; + КонецЕсли; + + Данные = Элементы.ДеревоУзловОбмена.ТекущиеДанные; + Если Данные<>Неопределено И Данные.Ссылка<>Неопределено Тогда + ОповеститьОВыборе(Данные.Ссылка); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ВыбранныеУзлы(НовыеДанные=Неопределено) + + Если НовыеДанные<>Неопределено Тогда + // Установка + Отмеченные = Новый Массив; + ВнутрУстановитьВыбранныеУзлы(ЭтотОбъект(), ДеревоУзловОбмена, НовыеДанные, Отмеченные); + Возврат Отмеченные; + КонецЕсли; + + // Получение + Результат = Новый Массив; + Для Каждого ТекПлан Из ДеревоУзловОбмена.ПолучитьЭлементы() Цикл + Для Каждого ТекСтрока Из ТекПлан.ПолучитьЭлементы() Цикл + Если ТекСтрока.Пометка И ТекСтрока.Ссылка<>Неопределено Тогда + Результат.Добавить(ТекСтрока.Ссылка); + КонецЕсли; + КонецЦикла; + КонецЦикла; + + Возврат Результат; +КонецФункции + +&НаСервере +Процедура ВнутрУстановитьВыбранныеУзлы(ТекущийОбъект, Данные, НовыеДанные, Отмеченные) + Для Каждого ТекСтрока Из Данные.ПолучитьЭлементы() Цикл + Если НовыеДанные.Найти(ТекСтрока.Ссылка)<>Неопределено Тогда + ТекСтрока.Пометка = Истина; + ТекущийОбъект.ПроставитьПометкиВверх(ТекСтрока); + Отмеченные.Добавить(ТекСтрока.ПолучитьИдентификатор()); + КонецЕсли; + ВнутрУстановитьВыбранныеУзлы(ТекущийОбъект, ТекСтрока, НовыеДанные, Отмеченные); + КонецЦикла; +КонецПроцедуры + +Функция ЭтотОбъект(ТекущийОбъект=Неопределено) + Если ТекущийОбъект=Неопределено Тогда + Возврат РеквизитФормыВЗначение("Объект"); + КонецЕсли; + ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); + Возврат Неопределено; +КонецФункции + +&НаСервере +Функция ПолучитьИмяФормы(ТекущийОбъект=Неопределено) + Возврат ЭтотОбъект().ПолучитьИмяФормы(ТекущийОбъект); +КонецФункции + +&НаСервере +Процедура ПрочитатьДеревоУзловОбмена() + Дерево = ЭтотОбъект().СформироватьДеревоУзлов(); + ЗначениеВРеквизитФормы(Дерево, "ДеревоУзловОбмена"); +КонецПроцедуры + +&НаСервере +Процедура ИзменениеПометки(СтрокаДанных) + ЭлементДанных = ДеревоУзловОбмена.НайтиПоИдентификатору(СтрокаДанных); + ЭтотОбъект().ИзменениеПометки(ЭлементДанных); +КонецПроцедуры + +&НаСервере +Функция УстановитьПараметрыФормы() + + Результат = Новый Структура("ТекущаяСтрока, Отмеченные"); + + // Множественный выбор + Элементы.ДеревоУзловОбменаПометка.Видимость = Параметры.МножественныйВыбор; + // Сбрасываем пометки только если выбор изменился + Если Параметры.МножественныйВыбор<>МножественныйВыбор Тогда + ТекущийОбъект = ЭтотОбъект(); + Для Каждого ТекСтрока Из ДеревоУзловОбмена.ПолучитьЭлементы() Цикл + ТекСтрока.Пометка = Ложь; + ТекущийОбъект.ПроставитьПометкиВниз(ТекСтрока); + КонецЦикла; + КонецЕсли; + МножественныйВыбор = Параметры.МножественныйВыбор; + + // Позиционирование + Если МножественныйВыбор И ТипЗнч(Параметры.НачальноеЗначениеВыбора)=Тип("Массив") Тогда + Отмеченные = ВыбранныеУзлы(Параметры.НачальноеЗначениеВыбора); + Результат.Отмеченные = Отмеченные; + Если Отмеченные.Количество()>0 Тогда + Результат.ТекущаяСтрока = Отмеченные[0]; + КонецЕсли; + + ИначеЕсли Параметры.НачальноеЗначениеВыбора<>Неопределено Тогда + // Одиночный вариант + Результат.ТекущаяСтрока = ИдентификаторСтрокиПоУзлу(ДеревоУзловОбмена, Параметры.НачальноеЗначениеВыбора); + + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаСервере +Функция ИдентификаторСтрокиПоУзлу(Данные, Ссылка) + Для Каждого ТекСтрока Из Данные.ПолучитьЭлементы() Цикл + Если ТекСтрока.Ссылка=Ссылка Тогда + Возврат ТекСтрока.ПолучитьИдентификатор(); + КонецЕсли; + Результат = ИдентификаторСтрокиПоУзлу(ТекСтрока, Ссылка); + Если Результат<>Неопределено Тогда + Возврат Результат; + КонецЕсли; + КонецЦикла; + Возврат Неопределено; +КонецФункции diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Настройки/Form.form b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Настройки/Form.form new file mode 100644 index 000000000..e6e913906 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Настройки/Form.form @@ -0,0 +1,802 @@ + + + + <key>ru</key> + <value>Настройки</value> + + + Группа8 + 32 + + Группа1 + 5 + + Декорация1 + 13 + true + true + + true + + + Декорация1РасширеннаяПодсказка + 37 + Label + true + true + + Left + + + + Декорация1КонтекстноеМеню + 14 + true + + Label + 1 + true + true + + Left + + + + Группа4 + 12 + + АвторегистрацияДвижений + 1 + + <key>ru</key> + <value>Движений вместе с документами</value> + + true + true + + true + + + Объект.НастройкаАвторегистрацияДвижений + + Right + + АвторегистрацияДвиженийРасширеннаяПодсказка + 39 + Label + true + true + + Left + + + + АвторегистрацияДвиженийКонтекстноеМеню + 2 + true + + CheckBoxField + Enter + true + Left + true + + + + АвторегистрацияПоследовательностей + 3 + + <key>ru</key> + <value>Последовательностей вместе с документами</value> + + true + true + + true + + + Объект.НастройкаАвторегистрацияПоследовательностей + + Right + + АвторегистрацияПоследовательностейРасширеннаяПодсказка + 41 + Label + true + true + + Left + + + + АвторегистрацияПоследовательностейКонтекстноеМеню + 4 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + Группа4РасширеннаяПодсказка + 38 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Авторегистрация</value> + + true + + Группа1РасширеннаяПодсказка + 36 + Label + true + true + + Left + + + UsualGroup + + Auto + WeakSeparation + true + true + auto + Auto + Auto + + + + Группа7 + 29 + + НомераСообщенийРегистрации + 30 + true + true + + true + + + Объект.НастройкаВариантНомераСообщения + + None + + НомераСообщенийРегистрацииРасширеннаяПодсказка + 44 + Label + true + true + + Left + + + + НомераСообщенийРегистрацииКонтекстноеМеню + 31 + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + Регистрировать как не отправленные + + + 0 + + + + + ru + Использовать номер сообщения узла обмена + + + 1 + + + Vertical + + + true + true + + true + + + <key>ru</key> + <value>Установка номера сообщения при регистрации</value> + + + Группа7РасширеннаяПодсказка + 43 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + auto + Auto + Auto + + + true + true + + true + + + Группа8РасширеннаяПодсказка + 35 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + Группа2 + 8 + + Декорация2 + 16 + true + true + + true + + + Декорация2РасширеннаяПодсказка + 47 + Label + true + true + + Left + + + + Декорация2КонтекстноеМеню + 17 + true + + Label + 1 + true + true + + Left + + + + Группа3 + 15 + + Группа5 + 24 + + ОбработкаЗапросаВнешняя + 9 + + <key>ru</key> + <value>Вспомогательная обработка для работы с результатами запроса</value> + + true + true + + true + + + ВариантИспользованияКонсолиЗапросов + + None + + ОбработкаЗапросаВнешняяРасширеннаяПодсказка + 50 + Label + true + true + + Left + + + + ОбработкаЗапросаВнешняяКонтекстноеМеню + 10 + true + + RadioButtonField + Enter + true + Left + true + + 1 + + + ru + В каталоге сервера: + + + 2 + + + + + ru + В составе конфигурации + + + 1 + + + + + ru + Не использовать + + + 0 + + + Vertical + + + true + true + + true + + + Группа5РасширеннаяПодсказка + 49 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + Группа6 + 25 + + ОбработкаЗапросаПуть + 22 + true + true + + true + + + Объект.НастройкаАдресВнешнейОбработкиЗапросов + + None + + OnChange + ОбработкаЗапросаПутьПриИзменении + + + ОбработкаЗапросаПутьРасширеннаяПодсказка + 53 + Label + true + true + + Left + + + + ОбработкаЗапросаПутьКонтекстноеМеню + 23 + true + + InputField + Enter + true + Left + true + + + StartChoice + ОбработкаЗапросаПутьНачалоВыбора + + 50 + true + true + true + true + true + true + true + Normal + + + true + true + + true + + + Группа6РасширеннаяПодсказка + 52 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + true + + Группа3РасширеннаяПодсказка + 48 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Консоль запросов</value> + + true + + Группа2РасширеннаяПодсказка + 46 + Label + true + true + + Left + + + UsualGroup + + Auto + WeakSeparation + true + true + auto + Auto + Auto + + + + ГруппаБСП + 26 + + НастройкаКонтрольВыгрузкиОбъектов + 27 + + <key>ru</key> + <value>Использовать при регистрации изменений объектов ограничения миграции данных</value> + + true + true + + true + + + Объект.НастройкаКонтрольВыгрузкиОбъектов + + Right + + НастройкаКонтрольВыгрузкиОбъектовРасширеннаяПодсказка + 56 + Label + true + true + + Left + + + + НастройкаКонтрольВыгрузкиОбъектовКонтекстноеМеню + 28 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Библиотека стандартных подсистем</value> + + + ru + Группа БСП + + true + + ГруппаБСПРасширеннаяПодсказка + 55 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + WeakSeparation + true + true + auto + Auto + Auto + + + Bottom + true + + ФормаКоманднаяПанель + -1 + + ФормаОК + 18 + + <key>ru</key> + <value>Записать</value> + + true + true + + true + + true + + ФормаОКРасширеннаяПодсказка + 33 + Label + true + true + + Left + + + Form.Command.ПодтвердитьВыбор + PictureAndText + true + true + true + UserCmds + + StdPicture.WriteAndClose + + Auto + + + ФормаОтмена + 19 + true + true + + true + + + ФормаОтменаРасширеннаяПодсказка + 34 + Label + true + true + + Left + + + Form.StandardCommand.Close + Normal + true + true + UserCmds + + StdPicture.Close + + Auto + + Right + + + OnCreateAtServer + ПриСозданииНаСервере + + LockOwner + true + true + Vertical + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DataProcessorObject.РегистрацияИзмененийДляОбменаДанными + + + true + + + true + +
            true
            +
            + + ВариантИспользованияКонсолиЗапросов + + <key>ru</key> + <value>Вариант использования консоли запросов</value> + + 5 + + Number + + 10 + + + + true + + + true + + + + ИдентификаторКонсолиЗапросов + + <key>ru</key> + <value>Идентификатор консоли запросов</value> + + 2 + + String + + + + true + + + true + + + + ПодтвердитьВыбор + + <key>ru</key> + <value>ОК</value> + + 1 + + ru + Подтвердить выбор + + + true + + + StdPicture.WriteAndClose + + + + ПодтвердитьВыбор + + + Auto + Auto + + + + + + +
            diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Настройки/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Настройки/Module.bsl new file mode 100644 index 000000000..2add99b61 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Настройки/Module.bsl @@ -0,0 +1,162 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные); + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + ИдентификаторКонсолиЗапросов = "КонсольЗапросов"; + + ТекущийОбъект = ЭтотОбъект(); + ТекущийОбъект.ПрочитатьНастройки(); + ТекущийОбъект.ПрочитатьПризнакПоддержкиБСП(); + + Строка = СокрЛП(ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов); + Если НРег(Прав(Строка, 4))=".epf" Тогда + ВариантИспользованияКонсолиЗапросов = 2; + ИначеЕсли Метаданные.Обработки.Найти(Строка)<>Неопределено Тогда + ВариантИспользованияКонсолиЗапросов = 1; + Строка = ""; + Иначе + ВариантИспользованияКонсолиЗапросов = 0; + Строка = ""; + КонецЕсли; + ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов = Строка; + + ЭтотОбъект(ТекущийОбъект); + + СписокВыбора = Элементы.ОбработкаЗапросаВнешняя.СписокВыбора; + + // В составе метаданных разрешаем, только если есть предопределенное + Если Метаданные.Обработки.Найти(ИдентификаторКонсолиЗапросов)=Неопределено Тогда + ТекЭлемент = СписокВыбора.НайтиПоЗначению(1); + Если ТекЭлемент<>Неопределено Тогда + СписокВыбора.Удалить(ТекЭлемент); + КонецЕсли; + КонецЕсли; + + // Строка опции из файла + Если ТекущийОбъект.ЭтоФайловаяБаза() Тогда + ТекЭлемент = СписокВыбора.НайтиПоЗначению(2); + Если ТекЭлемент<>Неопределено Тогда + ТекЭлемент.Представление = НСтр("ru='В каталоге:'"); + КонецЕсли; + КонецЕсли; + + // БСП разрешаем только если она есть и нужной версии + Элементы.ГруппаБСП.Видимость = ТекущийОбъект.КонфигурацияПоддерживаетБСП + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ +// + +&НаКлиенте +Процедура ОбработкаЗапросаПутьПриИзменении(Элемент) + ВариантИспользованияКонсолиЗапросов = 2; +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаЗапросаПутьНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); + Диалог.ПроверятьСуществованиеФайла = Истина; + Диалог.Фильтр = НСтр("ru='Внешние обработки (*.epf)|*.epf'"); + Если Диалог.Выбрать() Тогда + ВариантИспользованияКонсолиЗапросов = 2; + УстановитьНастройкуАдресВнешнейОбработкиЗапросов(Диалог.ПолноеИмяФайла); + КонецЕсли; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// + +&НаКлиенте +Процедура ПодтвердитьВыбор(Команда) + + Проверка = ПроверитьНастройки(); + Если Проверка.ЕстьОшибки Тогда + // Сообщаем об ошибках + Если Проверка.НастройкаАдресВнешнейОбработкиЗапросов<>Неопределено Тогда + СообщитьОбОшибке(Проверка.НастройкаАдресВнешнейОбработкиЗапросов, "Объект.НастройкаАдресВнешнейОбработкиЗапросов"); + Возврат; + КонецЕсли; + КонецЕсли; + + // Все успешно + СохранитьНастройки(); + Закрыть(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +&НаКлиенте +Процедура СообщитьОбОшибке(Текст, ИмяРеквизита=Неопределено) + + Если ИмяРеквизита=Неопределено Тогда + ЗаголовокОшибки = НСтр("ru='Ошибка'"); + Предупреждение(Текст,,ЗаголовокОшибки); + Возврат; + КонецЕсли; + + Сообщение = Новый СообщениеПользователю(); + Сообщение.Текст = Текст; + Сообщение.Поле = ИмяРеквизита; + Сообщение.УстановитьДанные(ЭтаФорма); + Сообщение.Сообщить(); +КонецПроцедуры + +&НаСервере +Функция ЭтотОбъект(ТекущийОбъект=Неопределено) + Если ТекущийОбъект=Неопределено Тогда + Возврат РеквизитФормыВЗначение("Объект"); + КонецЕсли; + ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); + Возврат Неопределено; +КонецФункции + +&НаСервере +Функция ПроверитьНастройки() + ТекущийОбъект = ЭтотОбъект(); + + Если ВариантИспользованияКонсолиЗапросов=2 Тогда + Если НРег(Прав(СокрЛП(ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов), 4))<>".epf" Тогда + ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов = СокрЛП(ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов) + ".epf"; + КонецЕсли; + ИначеЕсли ВариантИспользованияКонсолиЗапросов=0 Тогда + ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов = ""; + КонецЕсли; + Результат = ТекущийОбъект.ПроверитьКорректностьНастроек(); + ЭтотОбъект(ТекущийОбъект); + + Возврат Результат; +КонецФункции + +&НаСервере +Процедура СохранитьНастройки() + ТекущийОбъект = ЭтотОбъект(); + Если ВариантИспользованияКонсолиЗапросов=0 Тогда + ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов = ""; + ИначеЕсли ВариантИспользованияКонсолиЗапросов=1 Тогда + ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов = ИдентификаторКонсолиЗапросов ; + КонецЕсли; + ТекущийОбъект.СохранитьНастройки(); + ЭтотОбъект(ТекущийОбъект); +КонецПроцедуры + +&НаСервере +Процедура УстановитьНастройкуАдресВнешнейОбработкиЗапросов(ПутьКФайлу) + ТекущийОбъект = ЭтотОбъект(); + ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов = ПутьКФайлу; + ЭтотОбъект(ТекущийОбъект); +КонецПроцедуры diff --git a/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/Form.form b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/НомераСообщенийУзлаПланаОбмена/Form.form similarity index 59% rename from SSL/src/CommonForms/ПарольДляСинхронизацииДанных/Form.form rename to SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/НомераСообщенийУзлаПланаОбмена/Form.form index 2b8b113da..aedd358bf 100644 --- a/SSL/src/CommonForms/ПарольДляСинхронизацииДанных/Form.form +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/НомераСообщенийУзлаПланаОбмена/Form.form @@ -1,117 +1,30 @@ - + + + <key>ru</key> + <value>Номера сообщений узла плана обмена</value> + - Группа1 - 3 + Группа3 + 6 - Пароль - 4 - true - true - - true - - - Пароль - - - ПарольРасширеннаяПодсказка - 13 - Label - true - true - - Left - - - - ПарольКонтекстноеМеню - 5 - true - - InputField - Enter - true - Left - true - - 30 - true - true - true - true - true - true - true - Normal - - - - ПодтверждениеПароля - 6 - true - true - - true - - - ПодтверждениеПароля - - - ПодтверждениеПароляРасширеннаяПодсказка - 15 - Label - true - true - - Left - - - - ПодтверждениеПароляКонтекстноеМеню - 7 - true - - InputField - Enter - true - Left - true - - 30 - true - true - true - true - true - true - true - Normal - - - - Декорация2 - 8 + НомерОтправленного + 7 <key>ru</key> - <value>Надежный пароль должен: -- состоять не менее чем из восьми символов, -- включать в себя заглавные латинские буквы, -- включать в себя прописные латинские буквы, -- цифры, -- символы (подчеркивание, скобки и т.д.). - -Нежелательно, чтобы пароль совпадал с именем пользователя, полностью состоял из цифр, содержал понятные слова, содержал чередующиеся -группы символов.</value> + <value>Отправленного</value> true true true + + НомерОтправленного + - Декорация2РасширеннаяПодсказка - 17 + НомерОтправленногоРасширеннаяПодсказка + 16 Label true true @@ -120,19 +33,68 @@
            - Декорация2КонтекстноеМеню - 9 + НомерОтправленногоКонтекстноеМеню + 8 true - Label - 50 - true - true - - Style.ПоясняющийТекст - - - Left + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + НомерПринятого + 9 + + <key>ru</key> + <value>Принятого</value> + + true + true + + true + + + НомерПринятого + + + НомерПринятогоРасширеннаяПодсказка + 18 + Label + true + true + + Left + + + + НомерПринятогоКонтекстноеМеню + 10 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal true @@ -140,9 +102,15 @@ true + + <key>ru</key> + <value>Номера сообщений</value> + + true + true - Группа1РасширеннаяПодсказка - 12 + Группа3РасширеннаяПодсказка + 15 Label true true @@ -152,29 +120,33 @@ UsualGroup - Vertical Auto - NormalSeparation + StrongSeparation true true + auto Auto Auto - - ФормаКоманднаяПанель - -1 + + Группа4 + 11 - ФормаСоздатьПользователя - 1 + ЗаписатьИзмененияУзла + 14 + + <key>ru</key> + <value>Записать</value> + true true true - ФормаСоздатьПользователяРасширеннаяПодсказка - 10 + ЗаписатьИзмененияУзлаРасширеннаяПодсказка + 21 Label true true @@ -182,7 +154,7 @@ Left
            - Form.Command.ЗаписатьИЗакрыть + Form.Command.ЗаписатьИзмененияУзла Auto true true @@ -191,16 +163,20 @@ Auto - Подробно - 2 + Отмена + 13 + + <key>ru</key> + <value>Закрыть</value> + true true true - ПодробноРасширеннаяПодсказка - 11 + ОтменаРасширеннаяПодсказка + 22 Label true true @@ -208,25 +184,52 @@ Left - Form.Command.Подробно + Form.StandardCommand.Cancel Normal Auto true true UserCmds Auto - InAdditionalSubmenu + true + true + + true + + + Группа4РасширеннаяПодсказка + 20 + Label + true + true + + Left + + + CommandBar + + Right + + + None + false + + ФормаКоманднаяПанель + -1 Left true + + OnOpen + ПриОткрытии + OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner true - true true Vertical true @@ -236,17 +239,10 @@ auto true - Пароль - - <key>ru</key> - <value>Пароль</value> - + Объект 1 - String - - 50 - + DataProcessorObject.РегистрацияИзмененийДляОбменаДанными true @@ -254,20 +250,17 @@ true - ShowError +
            true
            - ПодтверждениеПароля + УзелОбменаСсылка <key>ru</key> - <value>Подтверждение пароля</value> + <value>Узел обмена</value> 2 - String - - 50 - + ExchangePlanRef true @@ -275,73 +268,97 @@ true - ShowError + + УзелОбменаСсылка + + true - Пользователь + НомерОтправленного <key>ru</key> - <value>Пользователь</value> + <value>Номер отправленного</value> 3 - CatalogRef.Пользователи + Number + + 10 + true + true - + + true + + true - - ЗаписатьИЗакрыть + + НомерПринятого <key>ru</key> - <value>Записать и закрыть</value> + <value>Номер принятого</value> + + 4 + + Number + + 10 + true + + + + true + + + true + + true + + + ВерсияДанных + + <key>ru</key> + <value>Версия данных</value> + + 5 + + String + + + + true + + + true + + + + ЗаписатьИзмененияУзла + + <key>ru</key> + <value>Записать изменения узла</value> 1 ru - Записать и закрыть - - - true - - - StdPicture.WriteAndClose - - - - ЗаписатьИЗакрыть - - - Text - Auto - Auto - - - Подробно - - <key>ru</key> - <value>Подробные сведения</value> - - 2 - - ru - Подробно + Записать изменения узла true - Подробно + ЗаписатьИзмененияУзла Auto Auto - АвтономноеРабочееМесто + УзелОбменаСсылка ExchangePlanRef @@ -351,4 +368,5 @@ + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/НомераСообщенийУзлаПланаОбмена/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/НомераСообщенийУзлаПланаОбмена/Module.bsl new file mode 100644 index 000000000..064327c02 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/НомераСообщенийУзлаПланаОбмена/Module.bsl @@ -0,0 +1,67 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные); + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + УзелОбменаСсылка = Параметры.УзелОбменаСсылка; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + ПрочитатьНомераСообщений(); + Заголовок = УзелОбменаСсылка; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// + +// Производит запись измененных данных и закрывает форму. +&НаКлиенте +Процедура ЗаписатьИзмененияУзла(Команда) + ЗаписатьНомераСообщений(); + Оповестить("ИзменениеДанныхУзлаОбмена", УзелОбменаСсылка, ЭтаФорма); + Закрыть(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +&НаСервере +Функция ЭтотОбъект(ТекущийОбъект=Неопределено) + Если ТекущийОбъект=Неопределено Тогда + Возврат РеквизитФормыВЗначение("Объект"); + КонецЕсли; + ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); + Возврат Неопределено; +КонецФункции + +&НаСервере +Процедура ПрочитатьНомераСообщений() + Данные = ЭтотОбъект().ПолучитьПараметрыУзлаОбмена(УзелОбменаСсылка, "НомерОтправленного, НомерПринятого, ВерсияДанных"); + Если Данные=Неопределено Тогда + НомерОтправленного = Неопределено; + НомерПринятого = Неопределено; + ВерсияДанных = Неопределено; + Иначе + НомерОтправленного = Данные.НомерОтправленного; + НомерПринятого = Данные.НомерПринятого; + ВерсияДанных = Данные.ВерсияДанных; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Процедура ЗаписатьНомераСообщений() + Данные = Новый Структура("НомерОтправленного, НомерПринятого", НомерОтправленного, НомерПринятого); + ЭтотОбъект().УстановитьПараметрыУзлаОбмена(УзелОбменаСсылка, Данные); +КонецПроцедуры diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/СообщениеОбОбычномИнтерфейсе/Form.oform b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/СообщениеОбОбычномИнтерфейсе/Form.oform new file mode 100644 index 000000000..dba63f9b6 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/СообщениеОбОбычномИнтерфейсе/Form.oform differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/ConditionalAppearance.dcssca b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/ConditionalAppearance.dcssca new file mode 100644 index 000000000..e42f3054b --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/ConditionalAppearance.dcssca @@ -0,0 +1,88 @@ + + + + + + ДеревоУзловОбменаНомерСообщения + + + + + OrGroup + + ДеревоУзловОбмена.Ссылка + NotFilled + + + ДеревоУзловОбмена.Пометка + Equal + 0 + + + + + + Текст + + + + + + + + ДеревоУзловОбменаНомерСообщения + + + + + ДеревоУзловОбмена.НеВыгружалось + Equal + true + + + ДеревоУзловОбмена.Пометка + Greater + 0 + + + + + ЦветТекста + web:LightGray + + + Текст + Не выгружалось + + + + + + + ДеревоУзловОбменаКод + + + ДеревоУзловОбменаАвторегистрация + + + ДеревоУзловОбменаНомерСообщения + + + + + ДеревоУзловОбмена.Ссылка + NotFilled + + + + + Видимость + false + + + Отображать + false + + + + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Form.form b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Form.form new file mode 100644 index 000000000..5a5cde771 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Form.form @@ -0,0 +1,1347 @@ + + + + <key>ru</key> + <value>Узлы регистрации объекта</value> + + + ДеревоУзловОбмена + 1 + + <key>ru</key> + <value>Узлы обмена</value> + + true + true + + true + + + ДеревоУзловОбмена + + true + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + ДеревоУзловОбменаПометкаНаименование + 14 + + ДеревоУзловОбменаПометка + 12 + true + true + + true + + + ДеревоУзловОбмена.Пометка + + None + + OnChange + ДеревоУзловОбменаПометкаПриИзменении + + + ДеревоУзловОбменаПометкаРасширеннаяПодсказка + 84 + Label + true + true + + Left + + + + ДеревоУзловОбменаПометкаКонтекстноеМеню + 13 + true + + CheckBoxField + Auto + true + Left + true + + true + + + + ДеревоУзловОбменаНаименование + 4 + + <key>ru</key> + <value>Узел</value> + + true + true + + true + + + ДеревоУзловОбмена.Наименование + + + ДеревоУзловОбменаНаименованиеРасширеннаяПодсказка + 86 + Label + true + true + + Left + + + + ДеревоУзловОбменаНаименованиеКонтекстноеМеню + 5 + true + + LabelField + true + Left + true + + true + true + + + true + true + + true + + + <key>ru</key> + <value>Описание узла</value> + + + ru + Описание узла + + + ДеревоУзловОбменаПометкаНаименованиеРасширеннаяПодсказка + 83 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + ДеревоУзловОбменаКод + 31 + + <key>ru</key> + <value>Код</value> + + true + true + + true + + + ДеревоУзловОбмена.Код + + + ДеревоУзловОбменаКодРасширеннаяПодсказка + 88 + Label + true + true + + Left + + + + ДеревоУзловОбменаКодКонтекстноеМеню + 32 + true + + LabelField + Auto + true + Left + true + + true + true + + + + ДеревоУзловОбменаГруппа1 + 53 + + ДеревоУзловОбменаАвторегистрация + 34 + + <key>ru</key> + <value>Авторегистрация</value> + + true + true + + + ДеревоУзловОбмена.ИндексКартинкиАвторегистрация + + None + + ДеревоУзловОбменаАвторегистрацияРасширеннаяПодсказка + 91 + Label + true + true + + Left + + + + ДеревоУзловОбменаАвторегистрацияКонтекстноеМеню + 35 + true + + PictureField + Auto + true + Left + true + + true + true + true + true + + + + 1 + + + + + ДеревоУзловОбменаНомерСообщения + 54 + + <key>ru</key> + <value>Номер сообщения</value> + + true + true + + true + + + ДеревоУзловОбмена.НомерСообщения + + + ДеревоУзловОбменаНомерСообщенияРасширеннаяПодсказка + 93 + Label + true + true + + Left + + + + ДеревоУзловОбменаНомерСообщенияКонтекстноеМеню + 55 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Описание регистрации</value> + + + ДеревоУзловОбменаГруппа1РасширеннаяПодсказка + 90 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + None + + ДеревоУзловОбменаКоманднаяПанель + 3 + Left + + + Selection + ДеревоУзловОбменаВыбор + + + ДеревоУзловОбменаСтрокаПоиска + 74 + + ДеревоУзловОбменаСтрокаПоискаРасширеннаяПодсказка + 76 + Label + true + true + + Left + + + + ДеревоУзловОбменаСтрокаПоискаКонтекстноеМеню + 75 + true + + ДеревоУзловОбмена + + true + + + + ДеревоУзловОбменаСостояниеПросмотра + 77 + + ДеревоУзловОбменаСостояниеПросмотраРасширеннаяПодсказка + 79 + Label + true + true + + Left + + + + ДеревоУзловОбменаСостояниеПросмотраКонтекстноеМеню + 78 + true + + ViewStatusAddition + ДеревоУзловОбмена + + true + + + + ДеревоУзловОбменаУправлениеПоиском + 80 + + ДеревоУзловОбменаУправлениеПоискомРасширеннаяПодсказка + 82 + Label + true + true + + Left + + + + ДеревоУзловОбменаУправлениеПоискомКонтекстноеМеню + 81 + true + + SearchControlAddition + ДеревоУзловОбмена + + true + + + + ДеревоУзловОбменаРасширеннаяПодсказка + 73 + Label + true + true + + Left + + + + ДеревоУзловОбменаКонтекстноеМеню + 2 + + ДеревоУзловОбменаКонтекстноеМенюГруппа1 + 40 + + ДеревоУзловОбменаКонтекстноеМенюПометитьВсеУзлы + 41 + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюПометитьВсеУзлыРасширеннаяПодсказка + 66 + Label + true + true + + Left + + + Form.Command.ПометитьВсеУзлы + Normal + Auto + true + true + UserCmds + + StdPicture.CheckAll + + Auto + + + ДеревоУзловОбменаКонтекстноеМенюСнятьПометкуВсемУзлам + 42 + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюСнятьПометкуВсемУзламРасширеннаяПодсказка + 67 + Label + true + true + + Left + + + Form.Command.СнятьПометкуВсемУзлам + Normal + Auto + true + true + UserCmds + + StdPicture.UncheckAll + + Auto + + + ДеревоУзловОбменаКонтекстноеМенюИнвертироватьПометкуВсемУзлам + 43 + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюИнвертироватьПометкуВсемУзламРасширеннаяПодсказка + 68 + Label + true + true + + Left + + + Form.Command.ИнвертироватьПометкуВсемУзлам + Normal + Auto + true + true + UserCmds + + Auto + + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюГруппа1РасширеннаяПодсказка + 65 + Label + true + true + + Left + + + + + + ДеревоУзловОбменаКонтекстноеМенюОткрытьФормуРедактированияОтУзла + 47 + + <key>ru</key> + <value>Регистрация других объектов узла</value> + + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюОткрытьФормуРедактированияОтУзлаРасширеннаяПодсказка + 69 + Label + true + true + + Left + + + Form.Command.ОткрытьФормуРедактированияОтУзла + Normal + Auto + true + true + UserCmds + Auto + + + ДеревоУзловОбменаКонтекстноеМенюГруппа2 + 44 + + ДеревоУзловОбменаКонтекстноеМенюВывестиСписок + 45 + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 71 + Label + true + true + + Left + + + Form.Item.ДеревоУзловОбмена.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + + ДеревоУзловОбменаКонтекстноеМенюКопироватьВБуферОбмена + 46 + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 72 + Label + true + true + + Left + + + Form.Item.ДеревоУзловОбмена.StandardCommand.CopyToClipboard + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ДеревоУзловОбменаКонтекстноеМенюГруппа2РасширеннаяПодсказка + 70 + Label + true + true + + Left + + + + + true + + Tree + true + true + true +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + false + false + false + true + Auto + ExpandAllLevels + true + true + + ДеревоУзловОбмена.ИндексКартинки + + + None + None + None + true +
            + + ГруппаСкрытыхДанных + 50 + + СкрытаяКартинкаИнформация32 + 51 + + <key>ru</key> + <value>Скрытая картинка информация32</value> + + true + true + + true + + + СкрытаяКартинкаИнформация32РасширеннаяПодсказка + 104 + Label + true + true + + Left + + + + СкрытаяКартинкаИнформация32КонтекстноеМеню + 52 + true + + true + true + + + + + false + + true + + + <key>ru</key> + <value>Группа скрытых данных</value> + + + ru + Группа скрытых данных + + true + + ГруппаСкрытыхДанныхРасширеннаяПодсказка + 103 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + auto + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ДеревоУзловОбменаИзменитьРегистрацию + 33 + true + true + + true + + + ДеревоУзловОбменаИзменитьРегистрациюРасширеннаяПодсказка + 58 + Label + true + true + + Left + + + Form.Command.ИзменитьРегистрацию + PictureAndText + true + true + true + UserCmds + + StdPicture.Write + + Auto + + + Группа1 + 48 + + ФормаУстановитьПометкуВсемУзлам + 36 + true + true + + true + + + ФормаУстановитьПометкуВсемУзламРасширеннаяПодсказка + 60 + Label + true + true + + Left + + + Form.Command.ПометитьВсеУзлы + Normal + Auto + true + true + UserCmds + Auto + + + ФормаСнятьПометкуВсемУзлам + 37 + true + true + + true + + + ФормаСнятьПометкуВсемУзламРасширеннаяПодсказка + 61 + Label + true + true + + Left + + + Form.Command.СнятьПометкуВсемУзлам + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Переключение пометок</value> + + + Группа1РасширеннаяПодсказка + 59 + Label + true + true + + Left + + + + + + Группа2 + 56 + + ФормаПеречитатьДеревоУзлов + 49 + + <key>ru</key> + <value>Обновить</value> + + true + true + + true + + + ФормаПеречитатьДеревоУзловРасширеннаяПодсказка + 63 + Label + true + true + + Left + + + Form.Command.ПеречитатьДеревоУзлов + Normal + PictureAndText + true + true + UserCmds + + StdPicture.Refresh + + Auto + + + ФормаОткрытьФормуНастроек + 57 + true + true + + true + + + ФормаОткрытьФормуНастроекРасширеннаяПодсказка + 64 + Label + true + true + + Left + + + Form.Command.ОткрытьФормуНастроек + Normal + PictureAndText + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + ru + Группа2 + + + Группа2РасширеннаяПодсказка + 62 + Label + true + true + + Left + + + + + Left + true + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DataProcessorObject.РегистрацияИзмененийДляОбменаДанными + + + true + + + true + +
            true
            +
            + + ДеревоУзловОбмена + + <key>ru</key> + <value>Дерево узлов обмена</value> + + 2 + + ValueTree + + + true + + + true + + + Наименование + + <key>ru</key> + <value>Узел обмена</value> + + 1 + + String + + + + true + + + true + + + + ИндексКартинки + + <key>ru</key> + <value>Индекс картинки</value> + + 8 + + Number + + + + true + + + true + + + + Пометка + 3 + + Number + + 10 + + + + true + + + true + + + + Ссылка + + <key>ru</key> + <value>Ссылка</value> + + 4 + + ExchangePlanRef + + + true + + + true + + + + Код + + <key>ru</key> + <value>Код</value> + + 2 + + String + + + + true + + + true + + + + ИндексКартинкиАвторегистрация + + <key>ru</key> + <value>Индекс картинки авторегистрация</value> + + 5 + + Number + + 10 + + + + true + + + true + + + + ИсходнаяПометка + + <key>ru</key> + <value>Исходная пометка</value> + + 6 + + Number + + 10 + + + + true + + + true + + + + НомерСообщения + + <key>ru</key> + <value>Номер сообщения</value> + + 7 + + Number + + 10 + + + + true + + + true + + + + НеВыгружалось + + <key>ru</key> + <value>Не выгружалось</value> + + 9 + + Boolean + + + true + + + true + + + + + ОбъектРегистрации + + <key>ru</key> + <value>Объект регистрации</value> + + 3 + + + true + + + true + + + + ТаблицаРегистрации + + <key>ru</key> + <value>Таблица регистрации</value> + + 4 + + String + + + + true + + + true + + + + ИзменитьРегистрацию + + <key>ru</key> + <value>Изменить регистрацию</value> + + 1 + + ru + Изменить регистрацию + + + true + + + StdPicture.Write + + + + ИзменитьРегистрацию + + + Auto + Auto + + + ПометитьВсеУзлы + + <key>ru</key> + <value>Пометить все узлы</value> + + 2 + + ru + Пометить все узлы + + + true + + + StdPicture.CheckAll + + + + ПометитьВсеУзлы + + + Auto + Auto + + + СнятьПометкуВсемУзлам + + <key>ru</key> + <value>Снять пометку у всех узлов</value> + + 4 + + ru + Снять пометку всем узлам + + + true + + + StdPicture.UncheckAll + + + + СнятьПометкуВсемУзлам + + + Auto + Auto + + + ИнвертироватьПометкуВсемУзлам + + <key>ru</key> + <value>Изменить пометку всех узлов</value> + + 3 + + ru + Изменить пометку всех узлов + + + true + + + + ИнвертироватьПометкуВсемУзлам + + + Auto + Auto + + + ОткрытьФормуРедактированияОтУзла + + <key>ru</key> + <value>Открыть форму редактирования от узла</value> + + 5 + + ru + Открыть форму редактирования от узла + + + true + + + + ОткрытьФормуРедактированияОтУзла + + + Auto + Auto + + + ПеречитатьДеревоУзлов + + <key>ru</key> + <value>Перечитать дерево узлов</value> + + 6 + + ru + Перечитать дерево узлов + + + true + + + StdPicture.Reread + + + + ПеречитатьДеревоУзлов + + + Auto + Auto + + + ОткрытьФормуНастроек + + <key>ru</key> + <value>Настройки</value> + + 7 + + ru + Открыть форму настроек + + + true + + + StdPicture.ReportSettings + + + + ОткрытьФормуНастроек + + + Auto + Auto + + + ОбъектРегистрации + + true + + + ТаблицаРегистрации + + String + + + true + + + ОповещатьОбИзменениях + + Boolean + + true + + + + + + +
            diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/ДеревоУзловОбмена/RowsPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/ДеревоУзловОбмена/RowsPicture.png new file mode 100644 index 000000000..3285ca4d3 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/ДеревоУзловОбмена/RowsPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/ДеревоУзловОбменаАвторегистрация/ValuesPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/ДеревоУзловОбменаАвторегистрация/ValuesPicture.png new file mode 100644 index 000000000..d7cc10f56 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/ДеревоУзловОбменаАвторегистрация/ValuesPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/ДеревоУзловОбменаКонтекстноеМенюИнвертироватьПометкуВсемУзлам/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/ДеревоУзловОбменаКонтекстноеМенюИнвертироватьПометкуВсемУзлам/Picture.png new file mode 100644 index 000000000..89c8178ea Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/ДеревоУзловОбменаКонтекстноеМенюИнвертироватьПометкуВсемУзлам/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/СкрытаяКартинкаИнформация32/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/СкрытаяКартинкаИнформация32/Picture.png new file mode 100644 index 000000000..dd7660e75 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Items/СкрытаяКартинкаИнформация32/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Module.bsl new file mode 100644 index 000000000..13f2cbb2a --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/УзлыРегистрацииОбъекта/Module.bsl @@ -0,0 +1,299 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные); + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + ТекущийОбъект = ЭтотОбъект(); + ТекущийОбъект.ПрочитатьНастройки(); + ТекущийОбъект.ПрочитатьПризнакПоддержкиБСП(); + ЭтотОбъект(ТекущийОбъект); + + ОбъектРегистрации = Параметры.ОбъектРегистрации; + Расшифровка = ""; + + Если ТипЗнч(ОбъектРегистрации)=Тип("Структура") Тогда + ТаблицаРегистрации = Параметры.ТаблицаРегистрации; + ОбъектСтрокой = ТаблицаРегистрации; + Для Каждого КлючЗначение Из ОбъектРегистрации Цикл + Расшифровка = Расшифровка + "," + КлючЗначение.Значение; + КонецЦикла; + Расшифровка = " (" + Сред(Расшифровка,2) + ")"; + Иначе + ТаблицаРегистрации = ""; + ОбъектСтрокой = ОбъектРегистрации; + КонецЕсли; + Заголовок = "Регистрация " + ТекущийОбъект.ПредставлениеСсылки(ОбъектСтрокой) + Расшифровка; + + ПрочитатьУзлыОбмена(); +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + РазвернутьВсеУзлы(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ДеревоУзловОбмена +// + +&НаКлиенте +Процедура ДеревоУзловОбменаВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + Если Поле=Элементы.ДеревоУзловОбменаНаименование Или Поле=Элементы.ДеревоУзловОбменаКод Тогда + ОткрытьФормуРедактированияДругихОбъектов(); + Возврат; + ИначеЕсли Поле<>Элементы.ДеревоУзловОбменаНомерСообщения Тогда + Возврат; + КонецЕсли; + + ТекДанные = Элементы.ДеревоУзловОбмена.ТекущиеДанные; + + НомерСообщения = ТекДанные.НомерСообщения; + Подсказка = НСтр("ru='Номер отправленного'"); + Если ВвестиЧисло(НомерСообщения, Подсказка) Тогда + ИзменитьНомерСообщенияНаСервере(ТекДанные.Ссылка, НомерСообщения, ОбъектРегистрации, ТаблицаРегистрации); + + ТекущийУзел = ТекущийВыбранныйУзел(); + ПрочитатьУзлыОбмена(Истина); + РазвернутьВсеУзлы(ТекущийУзел); + + Если Параметры.ОповещатьОбИзменениях Тогда + Оповестить("ИзменениеРегистрацииОбменаДаннымиОбъекта", + Новый Структура("ОбъектРегистрации, ТаблицаРегистрации", ОбъектРегистрации, ТаблицаРегистрации), + ЭтаФорма); + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоУзловОбменаПометкаПриИзменении(Элемент) + ИзменениеПометки(Элементы.ДеревоУзловОбмена.ТекущаяСтрока); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// + +&НаКлиенте +Процедура ПеречитатьДеревоУзлов(Команда) + ТекущийУзел = ТекущийВыбранныйУзел(); + ПрочитатьУзлыОбмена(); + РазвернутьВсеУзлы(ТекущийУзел); +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуРедактированияОтУзла(Команда) + ОткрытьФормуРедактированияДругихОбъектов(); +КонецПроцедуры + +&НаКлиенте +Процедура ПометитьВсеУзлы(Команда) + Для Каждого СтрокаПлана Из ДеревоУзловОбмена.ПолучитьЭлементы() Цикл + СтрокаПлана.Пометка = Истина; + ИзменениеПометки(СтрокаПлана.ПолучитьИдентификатор()) + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура СнятьПометкуВсемУзлам(Команда) + Для Каждого СтрокаПлана Из ДеревоУзловОбмена.ПолучитьЭлементы() Цикл + СтрокаПлана.Пометка = Ложь; + ИзменениеПометки(СтрокаПлана.ПолучитьИдентификатор()) + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура ИнвертироватьПометкуВсемУзлам(Команда) + Для Каждого СтрокаПлана Из ДеревоУзловОбмена.ПолучитьЭлементы() Цикл + Для Каждого СтрокаУзла Из СтрокаПлана.ПолучитьЭлементы() Цикл + СтрокаУзла.Пометка = Не СтрокаУзла.Пометка; + ИзменениеПометки(СтрокаУзла.ПолучитьИдентификатор()) + КонецЦикла; + КонецЦикла; +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРегистрацию(Команда) + + Текст = НСтр("ru='Изменить регистрацию ""%1"" + |на узлах?'"); + + ЗаголовокВопроса = НСтр("ru='Подтверждение'"); + + Текст = СтрЗаменить(Текст, "%1", ОбъектРегистрации); + Ответ = Вопрос(Текст, РежимДиалогаВопрос.ДаНет,,,ЗаголовокВопроса); + Если Ответ=КодВозвратаДиалога.Да Тогда + + Колво = ИзменениеРегистрацииПоУзлам(ДеревоУзловОбмена); + Если Колво>0 Тогда + Текст = НСтр("ru='Регистрация %1 была изменена на %2 узлах'"); + ЗаголовокОповещения = НСтр("ru='Изменение регистрации:'"); + + Текст = СтрЗаменить(Текст, "%1", ОбъектРегистрации); + Текст = СтрЗаменить(Текст, "%2", Колво); + + ПоказатьОповещениеПользователя(ЗаголовокОповещения, + ПолучитьНавигационнуюСсылку(ОбъектРегистрации), + Текст, + Элементы.СкрытаяКартинкаИнформация32.Картинка); + + Если Параметры.ОповещатьОбИзменениях Тогда + Оповестить("ИзменениеРегистрацииОбменаДаннымиОбъекта", + Новый Структура("ОбъектРегистрации, ТаблицаРегистрации", ОбъектРегистрации, ТаблицаРегистрации), + ЭтаФорма); + КонецЕсли; + КонецЕсли; + + КонецЕсли; + + ТекущийУзел = ТекущийВыбранныйУзел(); + ПрочитатьУзлыОбмена(Истина); + РазвернутьВсеУзлы(ТекущийУзел); +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуНастроек(Команда) + ОткрытьФормуНастроекОбработки(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +&НаКлиенте +Функция ТекущийВыбранныйУзел() + ТекущиеДанные = Элементы.ДеревоУзловОбмена.ТекущиеДанные; + Если ТекущиеДанные=Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + Возврат Новый Структура("Наименование, Ссылка", ТекущиеДанные.Наименование, ТекущиеДанные.Ссылка); +КонецФункции + +&НаКлиенте +Процедура ОткрытьФормуНастроекОбработки() + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.Настройки"; + ОткрытьФорму(ТекИмяФормы, , ЭтаФорма); +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуРедактированияДругихОбъектов() + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.Форма"; + Данные = Элементы.ДеревоУзловОбмена.ТекущиеДанные; + Если Данные<>Неопределено И Данные.Ссылка<>Неопределено Тогда + ТекПараметры = Новый Структура("УзелОбмена, ИдентификаторКоманды, ОбъектыНазначения", Данные.Ссылка); + ОткрытьФорму(ТекИмяФормы, ТекПараметры, ЭтаФорма); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура РазвернутьВсеУзлы(УзелФокуса=Неопределено) + НайденныйУзел = Неопределено; + + Для Каждого Строка Из ДеревоУзловОбмена.ПолучитьЭлементы() Цикл + Идентификатор = Строка.ПолучитьИдентификатор(); + Элементы.ДеревоУзловОбмена.Развернуть(Идентификатор, Истина); + + Если УзелФокуса<>Неопределено И НайденныйУзел=Неопределено Тогда + Если Строка.Наименование=УзелФокуса.Наименование И Строка.Ссылка=УзелФокуса.Ссылка Тогда + НайденныйУзел = Идентификатор; + Иначе + Для Каждого Подстрока Из Строка.ПолучитьЭлементы() Цикл + Если Подстрока.Наименование=УзелФокуса.Наименование И Подстрока.Ссылка=УзелФокуса.Ссылка Тогда + НайденныйУзел = Подстрока.ПолучитьИдентификатор(); + КонецЕсли; + КонецЦикла; + КонецЕсли; + КонецЕсли; + + КонецЦикла; + + Если УзелФокуса<>Неопределено И НайденныйУзел<>Неопределено Тогда + Элементы.ДеревоУзловОбмена.ТекущаяСтрока = НайденныйУзел; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ИзменениеРегистрацииПоУзлам(Знач Данные) + ТекущийОбъект = ЭтотОбъект(); + КолвоУзлов = 0; + Для Каждого Строка Из Данные.ПолучитьЭлементы() Цикл + Если Строка.Ссылка<>Неопределено Тогда + флУже = ТекущийОбъект.ОбъектЗарегистрированНаУзле(Строка.Ссылка, ОбъектРегистрации, ТаблицаРегистрации); + Если Строка.Пометка=0 И флУже Тогда + Результат = ТекущийОбъект.ИзменитьРегистрациюНаСервере(Ложь, Истина, Строка.Ссылка, ОбъектРегистрации, ТаблицаРегистрации); + КолвоУзлов = КолвоУзлов + Результат.Успешно; + ИначеЕсли Строка.Пометка=1 И (Не флУже) Тогда + Результат = ТекущийОбъект.ИзменитьРегистрациюНаСервере(Истина, Истина, Строка.Ссылка, ОбъектРегистрации, ТаблицаРегистрации); + КолвоУзлов = КолвоУзлов + Результат.Успешно; + КонецЕсли; + КонецЕсли; + КолвоУзлов = КолвоУзлов + ИзменениеРегистрацииПоУзлам(Строка); + КонецЦикла; + Возврат КолвоУзлов; +КонецФункции + +&НаСервере +Функция ИзменитьНомерСообщенияНаСервере(Узел, НомерСообщения, Данные, ИмяТаблицы=Неопределено) + Возврат ЭтотОбъект().ИзменитьРегистрациюНаСервере(НомерСообщения, Истина, Узел, Данные, ИмяТаблицы); +КонецФункции + +&НаСервере +Функция ЭтотОбъект(ТекущийОбъект=Неопределено) + Если ТекущийОбъект=Неопределено Тогда + Возврат РеквизитФормыВЗначение("Объект"); + КонецЕсли; + ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); + Возврат Неопределено; +КонецФункции + +&НаСервере +Функция ПолучитьИмяФормы(ТекущийОбъект=Неопределено) + Возврат ЭтотОбъект().ПолучитьИмяФормы(ТекущийОбъект); +КонецФункции + +&НаСервере +Процедура ИзменениеПометки(Строка) + ЭлементДанных = ДеревоУзловОбмена.НайтиПоИдентификатору(Строка); + ЭтотОбъект().ИзменениеПометки(ЭлементДанных); +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьУзлыОбмена(ТолькоОбновить=Ложь) + ТекущийОбъект = ЭтотОбъект(); + Дерево = ТекущийОбъект.СформироватьДеревоУзлов(ОбъектРегистрации, ТаблицаРегистрации); + + Если ТолькоОбновить Тогда + // Обновляем некоторые поля текущим данным + Для Каждого СтрокаПлана Из ДеревоУзловОбмена.ПолучитьЭлементы() Цикл + Для Каждого СтрокаУзла Из СтрокаПлана.ПолучитьЭлементы() Цикл + СтрокаДерева = Дерево.Строки.Найти(СтрокаУзла.Ссылка, "Ссылка", Истина); + Если СтрокаДерева<>Неопределено Тогда + ЗаполнитьЗначенияСвойств(СтрокаУзла, СтрокаДерева, "Пометка, ИсходнаяПометка, НомерСообщения, НеВыгружалось"); + КонецЕсли; + КонецЦикла; + КонецЦикла; + Иначе + // Переформируем полностью + ЗначениеВРеквизитФормы(Дерево, "ДеревоУзловОбмена"); + КонецЕсли; + + Для Каждого СтрокаПлана Из ДеревоУзловОбмена.ПолучитьЭлементы() Цикл + Для Каждого СтрокаУзла Из СтрокаПлана.ПолучитьЭлементы() Цикл + ТекущийОбъект.ИзменениеПометки(СтрокаУзла); + КонецЦикла; + КонецЦикла; + +КонецПроцедуры + + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Attributes/СписокКонстант/ExtInfo/ListSettings.dcss b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Attributes/СписокКонстант/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..91027f589 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Attributes/СписокКонстант/ExtInfo/ListSettings.dcss @@ -0,0 +1,15 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Attributes/СписокНаборовЗаписей/ExtInfo/ListSettings.dcss b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Attributes/СписокНаборовЗаписей/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..91027f589 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Attributes/СписокНаборовЗаписей/ExtInfo/ListSettings.dcss @@ -0,0 +1,15 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Attributes/СписокСсылок/ExtInfo/ListSettings.dcss b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Attributes/СписокСсылок/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..e2ed0c717 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Attributes/СписокСсылок/ExtInfo/ListSettings.dcss @@ -0,0 +1,39 @@ + + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + + + + НомерСообщения + + + + + НеВыгружалось + Equal + true + + + + + ЦветТекста + web:LightGray + + + Текст + Не выгружалось + + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/ConditionalAppearance.dcssca b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/ConditionalAppearance.dcssca new file mode 100644 index 000000000..0697af8c5 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/ConditionalAppearance.dcssca @@ -0,0 +1,99 @@ + + + + + + СписокСсылокНомерСообщения + + + + + СписокСсылок.НеВыгружалось + Equal + true + + + + + ЦветТекста + web:LightGray + + + Текст + Не выгружалось + + + + + + + СписокКонстантНомерСообщения + + + + + СписокКонстант.НеВыгружалось + Equal + true + + + + + ЦветТекста + web:LightGray + + + Текст + Не выгружалось + + + + + + + СписокНаборовЗаписейНомерСообщения + + + + + СписокНаборовЗаписей.НеВыгружалось + Equal + true + + + + + ЦветТекста + web:LightGray + + + Текст + Не выгружалось + + + + + + + ДеревоМетаданныхКоличествоИзмененийСтрокой + + + + + ДеревоМетаданных.КоличествоИзменений + Equal + 0 + + + + + ЦветТекста + web:DarkGray + + + Текст + Нет изменений + + + + diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Form.form b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Form.form new file mode 100644 index 000000000..659f45c5a --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Form.form @@ -0,0 +1,5155 @@ + + + + <key>ru</key> + <value>Регистрация изменений для обмена данными</value> + + + Группа2 + 35 + + УзелОбменаСсылка + 1 + true + true + + true + + + УзелОбменаСсылка + + + OnChange + УзелОбменаСсылкаПриИзменении + + + УзелОбменаСсылкаРасширеннаяПодсказка + 201 + Label + true + true + + Left + + + + УзелОбменаСсылкаКонтекстноеМеню + 2 + true + + InputField + Enter + true + Left + true + + + StartChoice + УзелОбменаСсылкаНачалоВыбора + + + Clearing + УзелОбменаСсылкаОчистка + + + ChoiceProcessing + УзелОбменаСсылкаОбработкаВыбора + + true + true + false + true + false + true + true + true + Normal + + + + ФормаРедактироватьНомераСообщений + 85 + + <key>ru</key> + <value>№ сообщений: отпр. <нет>, прин. <нет></value> + + true + true + + true + + + ФормаРедактироватьНомераСообщенийРасширеннаяПодсказка + 203 + Label + true + true + + Left + + + Hyperlink + Form.Command.РедактироватьНомераСообщений + Normal + Auto + true + true + UserCmds + Auto + + + ВариантОтбораПоНомеруСообщения + 172 + + <key>ru</key> + <value>Отображать изменения</value> + + true + true + + true + + + ВариантОтбораПоНомеруСообщения + + + OnChange + ВариантОтбораПоНомеруСообщенияПриИзменении + + + ВариантОтбораПоНомеруСообщенияРасширеннаяПодсказка + 204 + Label + true + true + + Left + + + + ВариантОтбораПоНомеруСообщенияКонтекстноеМеню + 173 + true + + InputField + Enter + true + Left + true + + 18 + true + true + true + true + true + + + ru + Все + + + 0 + + + + + ru + Только выгруженные + + + 1 + + + + + ru + Только невыгруженные + + + 2 + + + Normal + + + true + true + + true + + + <key>ru</key> + <value>Быстрые отборы</value> + + true + + Группа2РасширеннаяПодсказка + 200 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + Группа1 + 5 + + КоманднаяПанельОбщая + 95 + + ДеревоМетаданныхГруппаДобавить + 39 + + ДеревоМетаданныхДобавитьРегистрациюВсехОбъектов + 40 + + <key>ru</key> + <value>Всех объектов выбранных типов</value> + + true + true + + true + + + ДеревоМетаданныхДобавитьРегистрациюВсехОбъектовРасширеннаяПодсказка + 209 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюВсехОбъектов + Normal + Auto + true + true + UserCmds + Auto + + + ДеревоМетаданныхДобавитьРегистрациюАвтоОбъектов + 41 + + <key>ru</key> + <value>Объектов выбранных типов с авторегистрацией</value> + + true + true + + true + + + ДеревоМетаданныхДобавитьРегистрациюАвтоОбъектовРасширеннаяПодсказка + 210 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюАвтоОбъектов + Normal + Auto + true + true + UserCmds + Auto + + + ГруппаКомандДобавить + 183 + + ФормаДобавитьРегистрациюОдногоОбъекта + 184 + + <key>ru</key> + <value>Одиночного объекта</value> + + true + true + + true + + + ФормаДобавитьРегистрациюОдногоОбъектаРасширеннаяПодсказка + 212 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюОдногоОбъекта + Normal + Auto + true + true + UserCmds + + StdPicture.CreateListItem + + Auto + + + ФормаДобавитьРегистрациюОтбор + 185 + + <key>ru</key> + <value>Объектов при помощи отбора</value> + + true + true + + true + + + ФормаДобавитьРегистрациюОтборРасширеннаяПодсказка + 213 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюОтбор + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Регистрация</value> + + + ru + Группа команд добавить + + + ГруппаКомандДобавитьРасширеннаяПодсказка + 211 + Label + true + true + + Left + + + + + + ДеревоМетаданныхГруппа3 + 60 + + ДеревоМетаданныхДобавитьРегистрациюРезультатаЗапроса + 59 + + <key>ru</key> + <value>Результатов запроса</value> + + true + true + + true + + + ДеревоМетаданныхДобавитьРегистрациюРезультатаЗапросаРасширеннаяПодсказка + 215 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюРезультатаЗапроса + Normal + Auto + true + true + UserCmds + + Auto + + true + true + + true + + + <key>ru</key> + <value>Регистрация результатов запроса</value> + + + ДеревоМетаданныхГруппа3РасширеннаяПодсказка + 214 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Зарегистрировать изменения</value> + + + ru + Зарегистрировать объекты выбранных типов + + + ДеревоМетаданныхГруппаДобавитьРасширеннаяПодсказка + 208 + Label + true + true + + Left + + + Popup + + + StdPicture.CreateListItem + + Auto + Normal + + + + ДеревоМетаданныхГруппаУдалить + 42 + + ДеревоМетаданныхУдалитьРегистрациюВсехОбъектов + 43 + + <key>ru</key> + <value>Всех объектов выбранных типов</value> + + true + true + + true + + + ДеревоМетаданныхУдалитьРегистрациюВсехОбъектовРасширеннаяПодсказка + 217 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюВсехОбъектов + Normal + Auto + true + true + UserCmds + Auto + + + ДеревоМетаданныхУдалитьРегистрациюАвтоОбъектов + 44 + + <key>ru</key> + <value>Объектов выбранных типов с авторегистрацией</value> + + true + true + + true + + + ДеревоМетаданныхУдалитьРегистрациюАвтоОбъектовРасширеннаяПодсказка + 218 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюАвтоОбъектов + Normal + Auto + true + true + UserCmds + Auto + + + ГруппаКомандУдалить + 186 + + ФормаУдалитьРегистрациюОдногоОбъекта + 187 + + <key>ru</key> + <value>Одиночного объекта</value> + + true + true + + true + + + ФормаУдалитьРегистрациюОдногоОбъектаРасширеннаяПодсказка + 220 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюОдногоОбъекта + Normal + Auto + true + true + UserCmds + + StdPicture.DeleteDirectly + + Auto + + + ФормаУдалитьРегистрациюОтбор + 188 + + <key>ru</key> + <value>Объектов при помощи отбора</value> + + true + true + + true + + + ФормаУдалитьРегистрациюОтборРасширеннаяПодсказка + 221 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюОтбор + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Отмена регистрации</value> + + + ru + Группа команд удалить + + + ГруппаКомандУдалитьРасширеннаяПодсказка + 219 + Label + true + true + + Left + + + + + + ДеревоМетаданныхГруппа4 + 61 + + ДеревоМетаданныхУдалитьРегистрациюРезультатаЗапроса + 62 + + <key>ru</key> + <value>Результатов запроса</value> + + true + true + + true + + + ДеревоМетаданныхУдалитьРегистрациюРезультатаЗапросаРасширеннаяПодсказка + 223 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюРезультатаЗапроса + Normal + Auto + true + true + UserCmds + + Auto + + true + true + + true + + + <key>ru</key> + <value>Отмена регистрации результатов запроса</value> + + + ДеревоМетаданныхГруппа4РасширеннаяПодсказка + 222 + Label + true + true + + Left + + + + + true + true + + true + + + <key>ru</key> + <value>Отменить регистрацию изменений</value> + + + ru + Отменить регистрацию объектов выбранных типов + + + ДеревоМетаданныхГруппаУдалитьРасширеннаяПодсказка + 216 + Label + true + true + + Left + + + Popup + + + StdPicture.DeleteDirectly + + Auto + Normal + + + + ОбновитьВсеДанные + 97 + + <key>ru</key> + <value>Обновить</value> + + true + true + + true + + + ОбновитьВсеДанныеРасширеннаяПодсказка + 224 + Label + true + true + + Left + + + Form.Command.ОбновитьВсеДанные + Normal + PictureAndText + true + true + UserCmds + Auto + + + ФормаОткрытьФормуНастроек + 145 + + <key>ru</key> + <value>Настройки</value> + + true + true + + true + + + ФормаОткрытьФормуНастроекРасширеннаяПодсказка + 225 + Label + true + true + + Left + + + Form.Command.ОткрытьФормуНастроек + Normal + PictureAndText + true + true + UserCmds + Auto + + + ПоказатьРезультатВыгрузки + 133 + true + true + + true + + + ПоказатьРезультатВыгрузкиРасширеннаяПодсказка + 226 + Label + true + true + + Left + + + Form.Command.ПоказатьРезультатВыгрузки + Normal + Auto + true + true + UserCmds + + Auto + + + ФормаОткрытьФормуРегистрацииНаУзлах + 182 + + <key>ru</key> + <value>Регистрация объекта на всех узлах</value> + + true + true + + true + + + ФормаОткрытьФормуРегистрацииНаУзлахРасширеннаяПодсказка + 227 + Label + true + true + + Left + + + Form.Command.ОткрытьФормуРегистрацииНаУзлах + Normal + Picture + true + true + UserCmds + + StdPicture.ExchangePlan + + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель </value> + + + ru + Общая командная панель + + + КоманднаяПанельОбщаяРасширеннаяПодсказка + 207 + Label + true + true + + Left + + + CommandBar + + Left + Form + + + + Группа5 + 96 + + ДеревоМетаданных + 6 + + <key>ru</key> + <value>Виды объектов регистрации</value> + + true + true + + true + + + ДеревоМетаданных + + None + Add + Change + Copy + Delete + EndEdit + HierarchicalList + List + MoveDown + MoveUp + SortListAsc + SortListDesc + Tree + + ДеревоМетаданныхГруппа1 + 9 + + ДеревоМетаданныхПометка + 16 + true + true + + true + + + ДеревоМетаданных.Пометка + + None + + OnChange + ДеревоМетаданныхПометкаПриИзменении + + + ДеревоМетаданныхПометкаРасширеннаяПодсказка + 255 + Label + true + true + + Left + + + + ДеревоМетаданныхПометкаКонтекстноеМеню + 17 + true + + CheckBoxField + true + Left + true + + true + + + + ДеревоМетаданныхНаименование + 10 + + <key>ru</key> + <value>Объект конфигурации</value> + + true + true + + true + + + ДеревоМетаданных.Наименование + + + ДеревоМетаданныхНаименованиеРасширеннаяПодсказка + 257 + Label + true + true + + Left + + + + ДеревоМетаданныхНаименованиеКонтекстноеМеню + 11 + true + + LabelField + true + Auto + true + Left + true + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Объекты регистрации</value> + + true + true + true + + ДеревоМетаданныхГруппа1РасширеннаяПодсказка + 254 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + ДеревоМетаданныхГруппа2 + 26 + + ДеревоМетаданныхАвторегистрация + 27 + + <key>ru</key> + <value>Авторегистрация</value> + + true + true + + + ДеревоМетаданных.Авторегистрация + + None + + ДеревоМетаданныхАвторегистрацияРасширеннаяПодсказка + 260 + Label + true + true + + Left + + + + ДеревоМетаданныхАвторегистрацияКонтекстноеМеню + 28 + true + + PictureField + true + Left + Auto + true + Left + true + + true + true + true + + + + 1 + + + + + ДеревоМетаданныхКоличествоИзмененийСтрокой + 29 + + <key>ru</key> + <value>Зарегистрировано/не выгружено</value> + + true + true + + true + + + ДеревоМетаданных.КоличествоИзмененийСтрокой + + + ДеревоМетаданныхКоличествоИзмененийСтрокойРасширеннаяПодсказка + 262 + Label + true + true + + Left + + + + ДеревоМетаданныхКоличествоИзмененийСтрокойКонтекстноеМеню + 30 + true + + LabelField + true + Left + Auto + true + Left + true + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Информация о регистрации</value> + + true + true + true + + ДеревоМетаданныхГруппа2РасширеннаяПодсказка + 259 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + ДеревоМетаданныхКоманднаяПанель + 8 + Left + + + OnActivateRow + ДеревоМетаданныхПриАктивизацииСтроки + + + ДеревоМетаданныхСтрокаПоиска + 245 + + ДеревоМетаданныхСтрокаПоискаРасширеннаяПодсказка + 247 + Label + true + true + + Left + + + + ДеревоМетаданныхСтрокаПоискаКонтекстноеМеню + 246 + true + + ДеревоМетаданных + + true + + + + ДеревоМетаданныхСостояниеПросмотра + 248 + + ДеревоМетаданныхСостояниеПросмотраРасширеннаяПодсказка + 250 + Label + true + true + + Left + + + + ДеревоМетаданныхСостояниеПросмотраКонтекстноеМеню + 249 + true + + ViewStatusAddition + ДеревоМетаданных + + true + + + + ДеревоМетаданныхУправлениеПоиском + 251 + + ДеревоМетаданныхУправлениеПоискомРасширеннаяПодсказка + 253 + Label + true + true + + Left + + + + ДеревоМетаданныхУправлениеПоискомКонтекстноеМеню + 252 + true + + SearchControlAddition + ДеревоМетаданных + + true + + + + ДеревоМетаданныхРасширеннаяПодсказка + 244 + Label + true + true + + Left + + + + ДеревоМетаданныхКонтекстноеМеню + 7 + + ДеревоМетаданныхКонтекстноеМенюГруппа1 + 114 + + ДеревоМетаданныхКонтекстноеМенюДобавитьРегистрациюВсехОбъектов + 115 + + <key>ru</key> + <value>Зарегистрировать изменения всех объектов выбранных типов</value> + + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюДобавитьРегистрациюВсехОбъектовРасширеннаяПодсказка + 230 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюВсехОбъектов + Normal + Auto + true + true + UserCmds + + StdPicture.CreateListItem + + Auto + + + ДеревоМетаданныхКонтекстноеМенюДобавитьРегистрациюАвтоОбъектов + 116 + + <key>ru</key> + <value>Зарегистрировать изменения объектов выбранных типов с авторегистрацией</value> + + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюДобавитьРегистрациюАвтоОбъектовРасширеннаяПодсказка + 231 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюАвтоОбъектов + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавление по виду объектов</value> + + + ДеревоМетаданныхКонтекстноеМенюГруппа1РасширеннаяПодсказка + 229 + Label + true + true + + Left + + + + + + ГруппаКомандДобавить1 + 190 + + ДеревоМетаданныхКонтекстноеМенюДобавитьРегистрациюОдногоОбъекта + 191 + + <key>ru</key> + <value>Зарегистрировать изменения одиночного объекта</value> + + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюДобавитьРегистрациюОдногоОбъектаРасширеннаяПодсказка + 233 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюОдногоОбъекта + Normal + Auto + true + true + UserCmds + + StdPicture.CreateListItem + + Auto + + + ДеревоМетаданныхКонтекстноеМенюДобавитьРегистрациюОтбор + 192 + + <key>ru</key> + <value>Зарегистрировать изменения объектов при помощи отбора</value> + + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюДобавитьРегистрациюОтборРасширеннаяПодсказка + 234 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюОтбор + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Добавление объектов</value> + + + ru + Группа команд добавить + + + ГруппаКомандДобавить1РасширеннаяПодсказка + 232 + Label + true + true + + Left + + + + + + ДеревоМетаданныхКонтекстноеМенюГруппа2 + 142 + + ДеревоМетаданныхКонтекстноеМенюУдалитьРегистрациюВсехОбъектов + 143 + + <key>ru</key> + <value>Отменить регистрацию изменений всех объектов выбранных типов</value> + + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюУдалитьРегистрациюВсехОбъектовРасширеннаяПодсказка + 236 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюВсехОбъектов + Normal + Auto + true + true + UserCmds + + StdPicture.DeleteDirectly + + Auto + + + ДеревоМетаданныхКонтекстноеМенюУдалитьРегистрациюАвтоОбъектов + 144 + + <key>ru</key> + <value>Отменить регистрацию изменений объектов выбранных типов с авторегистрацией</value> + + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюУдалитьРегистрациюАвтоОбъектовРасширеннаяПодсказка + 237 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюАвтоОбъектов + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Отмена регистрации по виду объектов</value> + + + ДеревоМетаданныхКонтекстноеМенюГруппа2РасширеннаяПодсказка + 235 + Label + true + true + + Left + + + + + + ГруппаКомандУдалить1 + 193 + + ДеревоМетаданныхКонтекстноеМенюУдалитьРегистрациюОдногоОбъекта + 194 + + <key>ru</key> + <value>Отменить регистрацию изменений одиночного объекта</value> + + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюУдалитьРегистрациюОдногоОбъектаРасширеннаяПодсказка + 239 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюОдногоОбъекта + Normal + Auto + true + true + UserCmds + + StdPicture.DeleteDirectly + + Auto + + + ДеревоМетаданныхКонтекстноеМенюУдалитьРегистрациюОтбор + 195 + + <key>ru</key> + <value>Отменить регистрацию изменений объектов при помощи отбора</value> + + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюУдалитьРегистрациюОтборРасширеннаяПодсказка + 240 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюОтбор + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Отмена регистрации</value> + + + ru + Группа команд удалить + + + ГруппаКомандУдалить1РасширеннаяПодсказка + 238 + Label + true + true + + Left + + + + + + ДеревоМетаданныхКонтекстноеМенюГруппа3 + 149 + + ДеревоМетаданныхКонтекстноеМенюВывестиСписок + 150 + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 242 + Label + true + true + + Left + + + Form.Item.ДеревоМетаданных.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + + ДеревоМетаданныхКонтекстноеМенюКопироватьВБуферОбмена + 151 + true + true + + true + + + ДеревоМетаданныхКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 243 + Label + true + true + + Left + + + Form.Item.ДеревоМетаданных.StandardCommand.CopyToClipboard + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Системное меню</value> + + + ДеревоМетаданныхКонтекстноеМенюГруппа3РасширеннаяПодсказка + 241 + Label + true + true + + Left + + + + + true + + Tree + true + true + true +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + false + false + false + Auto + Auto + ExpandTopLevel + true + true + + ДеревоМетаданных.ИндексКартинки + + + None + None + None + true +
            + + ВариантыСпискаОбъектов + 45 + + СтраницаКонстанты + 49 + + СписокКонстант + 63 + + <key>ru</key> + <value>Список констант</value> + + true + true + + true + + + СписокКонстант + + None + Choose + + СписокКонстантНаименование + 66 + + <key>ru</key> + <value>Константа</value> + + true + true + + true + + + СписокКонстант.Наименование + + + СписокКонстантНаименованиеРасширеннаяПодсказка + 297 + Label + true + true + + Left + + + + СписокКонстантНаименованиеКонтекстноеМеню + 67 + true + + LabelField + Enter + true + Left + true + + true + true + true + + + + СписокКонстантГруппа1 + 148 + + СписокКонстантАвторегистрация + 146 + + <key>ru</key> + <value>Авторегистрация</value> + + true + true + + + СписокКонстант.ИндексКартинкиАвторегистрация + + None + + СписокКонстантАвторегистрацияРасширеннаяПодсказка + 300 + Label + true + true + + Left + + + + СписокКонстантАвторегистрацияКонтекстноеМеню + 147 + true + + PictureField + true + true + Left + true + + true + true + true + true + + + + 1 + + + + + СписокКонстантНомерСообщения + 68 + + <key>ru</key> + <value>Номер отправленного</value> + + true + true + + true + + + СписокКонстант.НомерСообщения + + + СписокКонстантНомерСообщенияРасширеннаяПодсказка + 302 + Label + true + true + + Left + + + + СписокКонстантНомерСообщенияКонтекстноеМеню + 69 + true + + LabelField + Left + true + Left + true + + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Информация о регистрации</value> + + + СписокКонстантГруппа1РасширеннаяПодсказка + 299 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + СписокКонстантКоманднаяПанель + 65 + Left + + + ChoiceProcessing + СписокКонстантОбработкаВыбора + + + СписокКонстантСтрокаПоиска + 288 + + СписокКонстантСтрокаПоискаРасширеннаяПодсказка + 290 + Label + true + true + + Left + + + + СписокКонстантСтрокаПоискаКонтекстноеМеню + 289 + true + + СписокКонстант + + true + + + + СписокКонстантСостояниеПросмотра + 291 + + СписокКонстантСостояниеПросмотраРасширеннаяПодсказка + 293 + Label + true + true + + Left + + + + СписокКонстантСостояниеПросмотраКонтекстноеМеню + 292 + true + + ViewStatusAddition + СписокКонстант + + true + + + + СписокКонстантУправлениеПоиском + 294 + + СписокКонстантУправлениеПоискомРасширеннаяПодсказка + 296 + Label + true + true + + Left + + + + СписокКонстантУправлениеПоискомКонтекстноеМеню + 295 + true + + SearchControlAddition + СписокКонстант + + true + + + + СписокКонстантРасширеннаяПодсказка + 287 + Label + true + true + + Left + + + + СписокКонстантКонтекстноеМеню + 64 + + СписокКонстантКонтекстноеМенюГруппа1 + 101 + + СписокКонстантКонтекстноеМенюДобавитьРегистрациюКонстанты + 98 + + <key>ru</key> + <value>Зарегистрировать изменение константы</value> + + true + true + + true + + + СписокКонстантКонтекстноеМенюДобавитьРегистрациюКонстантыРасширеннаяПодсказка + 275 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюКонстанты + Normal + Auto + true + true + UserCmds + + StdPicture.CreateListItem + + Auto + + + СписокКонстантКонтекстноеМенюУдалитьРегистрациюКонстанты + 99 + + <key>ru</key> + <value>Отменить регистрацию изменений константы</value> + + true + true + + true + + + СписокКонстантКонтекстноеМенюУдалитьРегистрациюКонстантыРасширеннаяПодсказка + 276 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюКонстанты + Normal + Auto + true + true + UserCmds + + StdPicture.DeleteDirectly + + Auto + + true + true + + true + + true + + СписокКонстантКонтекстноеМенюГруппа1РасширеннаяПодсказка + 274 + Label + true + true + + Left + + + + + + СписокКонстантКонтекстноеМенюГруппа3 + 177 + + СписокКонстантКонтекстноеМенюПоказатьРезультатВыгрузки + 100 + + <key>ru</key> + <value>Результат стандартной выгрузки (РИБ)</value> + + true + true + + true + + + СписокКонстантКонтекстноеМенюПоказатьРезультатВыгрузкиРасширеннаяПодсказка + 278 + Label + true + true + + Left + + + Form.Command.ПоказатьРезультатВыгрузки + Normal + Auto + true + true + UserCmds + + Auto + + + СписокКонстантКонтекстноеМенюОткрытьФормуРегистрацииНаУзлах + 178 + true + true + + true + + + СписокКонстантКонтекстноеМенюОткрытьФормуРегистрацииНаУзлахРасширеннаяПодсказка + 279 + Label + true + true + + Left + + + Form.Command.ОткрытьФормуРегистрацииНаУзлах + Normal + Auto + true + true + UserCmds + + StdPicture.ExchangePlan + + Auto + + + СписокКонстантКонтекстноеМенюРедактироватьНомерСообщенияОбъекта + 197 + true + true + + true + + + СписокКонстантКонтекстноеМенюРедактироватьНомерСообщенияОбъектаРасширеннаяПодсказка + 280 + Label + true + true + + Left + + + Form.Command.РедактироватьНомерСообщенияОбъекта + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + СписокКонстантКонтекстноеМенюГруппа3РасширеннаяПодсказка + 277 + Label + true + true + + Left + + + + + + СписокКонстантКонтекстноеМенюГруппа2 + 152 + + СписокКонстантКонтекстноеМенюНайти + 153 + true + true + + true + + + СписокКонстантКонтекстноеМенюНайтиРасширеннаяПодсказка + 282 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + + + СписокКонстантКонтекстноеМенюОтменитьПоиск + 154 + true + true + + true + + + СписокКонстантКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка + 283 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + + + СписокКонстантКонтекстноеМенюНастройкаСписка + 155 + true + true + + true + + + СписокКонстантКонтекстноеМенюНастройкаСпискаРасширеннаяПодсказка + 284 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.ListSettings + Normal + Auto + true + true + UserCmds + Auto + + + СписокКонстантКонтекстноеМенюВывестиСписок + 156 + true + true + + true + + + СписокКонстантКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 285 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + + СписокКонстантКонтекстноеМенюОбновить + 157 + true + true + + true + + + СписокКонстантКонтекстноеМенюОбновитьРасширеннаяПодсказка + 286 + Label + true + true + + Left + + + Form.Item.СписокКонстант.StandardCommand.Refresh + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + СписокКонстантКонтекстноеМенюГруппа2РасширеннаяПодсказка + 281 + Label + true + true + + Left + + + + + + true + true + true + MultiRow +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + false + false + Auto + true + true + true + + СписокКонстант.ИндексКартинки + + + None + None + None + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + + true + true + +
            + true + true + + true + + + <key>ru</key> + <value>Константы</value> + + + ru + Страница константы + + + СтраницаКонстантыРасширеннаяПодсказка + 273 + Label + true + true + + Left + + + Page + + Vertical + auto + +
            + + СтраницаСписокСсылок + 48 + + СписокСсылок + 18 + + <key>ru</key> + <value>Список ссылок</value> + + true + true + + true + + + СписокСсылок + + Choose + + СписокСсылокСсылкаПредставление + 21 + true + true + + true + + + СписокСсылок.Ссылка + + + СписокСсылокСсылкаПредставлениеРасширеннаяПодсказка + 340 + Label + true + true + + Left + + + + СписокСсылокСсылкаПредставлениеКонтекстноеМеню + 22 + true + + LabelField + Enter + true + Left + true + + true + true + true + + + + СписокСсылокНомерСообщения + 52 + + <key>ru</key> + <value>Номер отправленного</value> + + true + true + + true + + + СписокСсылок.НомерСообщения + + + СписокСсылокНомерСообщенияРасширеннаяПодсказка + 342 + Label + true + true + + Left + + + + СписокСсылокНомерСообщенияКонтекстноеМеню + 53 + true + + LabelField + Enter + true + Left + true + + true + true + true + + + + СписокСсылокКоманднаяПанель + 20 + Left + + + ChoiceProcessing + СписокСсылокОбработкаВыбора + + + СписокСсылокСтрокаПоиска + 331 + + СписокСсылокСтрокаПоискаРасширеннаяПодсказка + 333 + Label + true + true + + Left + + + + СписокСсылокСтрокаПоискаКонтекстноеМеню + 332 + true + + СписокСсылок + + true + + + + СписокСсылокСостояниеПросмотра + 334 + + СписокСсылокСостояниеПросмотраРасширеннаяПодсказка + 336 + Label + true + true + + Left + + + + СписокСсылокСостояниеПросмотраКонтекстноеМеню + 335 + true + + ViewStatusAddition + СписокСсылок + + true + + + + СписокСсылокУправлениеПоиском + 337 + + СписокСсылокУправлениеПоискомРасширеннаяПодсказка + 339 + Label + true + true + + Left + + + + СписокСсылокУправлениеПоискомКонтекстноеМеню + 338 + true + + SearchControlAddition + СписокСсылок + + true + + + + СписокСсылокРасширеннаяПодсказка + 330 + Label + true + true + + Left + + + + СписокСсылокКонтекстноеМеню + 19 + + СписокСсылокКонтекстноеМенюГруппа1 + 102 + + СписокСсылокКонтекстноеМенюДобавитьРегистрациюСсылкиПодбор + 134 + + <key>ru</key> + <value>Зарегистрировать изменение объекта</value> + + true + true + + true + + + СписокСсылокКонтекстноеМенюДобавитьРегистрациюСсылкиПодборРасширеннаяПодсказка + 314 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюСсылкиПодбор + Normal + Auto + true + true + UserCmds + + StdPicture.CreateListItem + + Auto + + + СписокСсылокКонтекстноеМенюДобавитьРегистрациюСсылкиОтбор + 135 + + <key>ru</key> + <value>Зарегистрировать изменения объектов при помощи отбора</value> + + true + true + + true + + + СписокСсылокКонтекстноеМенюДобавитьРегистрациюСсылкиОтборРасширеннаяПодсказка + 315 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюСсылкиОтбор + Normal + Auto + true + true + UserCmds + Auto + + + СписокСсылокКонтекстноеМенюДобавитьРегистрациюУдаленияОбъекта + 196 + + <key>ru</key> + <value>Зарегистрировать удаление объекта</value> + + true + true + + true + + + СписокСсылокКонтекстноеМенюДобавитьРегистрациюУдаленияОбъектаРасширеннаяПодсказка + 316 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюУдаленияОбъекта + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + СписокСсылокКонтекстноеМенюГруппа1РасширеннаяПодсказка + 313 + Label + true + true + + Left + + + + + + СписокСсылокКонтекстноеМенюГруппа3 + 158 + + СписокСсылокКонтекстноеМенюУдалитьРегистрациюСсылки + 105 + + <key>ru</key> + <value>Отменить регистрацию изменений объекта</value> + + true + true + + true + + + СписокСсылокКонтекстноеМенюУдалитьРегистрациюСсылкиРасширеннаяПодсказка + 318 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюСсылки + Normal + Auto + true + true + UserCmds + + StdPicture.DeleteDirectly + + Auto + + + СписокСсылокКонтекстноеМенюУдалитьРегистрациюСсылкиОтбор + 189 + + <key>ru</key> + <value>Отменить регистрацию изменения объектов при помощи отбора</value> + + true + true + + true + + + СписокСсылокКонтекстноеМенюУдалитьРегистрациюСсылкиОтборРасширеннаяПодсказка + 319 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюСсылкиОтбор + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + СписокСсылокКонтекстноеМенюГруппа3РасширеннаяПодсказка + 317 + Label + true + true + + Left + + + + + + СписокСсылокКонтекстноеМенюГруппа4 + 181 + + СписокСсылокКонтекстноеМенюПоказатьРезультатВыгрузки + 106 + + <key>ru</key> + <value>Показать результат выгрузки</value> + + true + true + + true + + + СписокСсылокКонтекстноеМенюПоказатьРезультатВыгрузкиРасширеннаяПодсказка + 321 + Label + true + true + + Left + + + Form.Command.ПоказатьРезультатВыгрузки + Normal + Auto + true + true + UserCmds + + Auto + + + СписокСсылокКонтекстноеМенюОткрытьФормуРегистрацииНаУзлах + 137 + + <key>ru</key> + <value>Регистрация на других узлах</value> + + true + true + + true + + + СписокСсылокКонтекстноеМенюОткрытьФормуРегистрацииНаУзлахРасширеннаяПодсказка + 322 + Label + true + true + + Left + + + Form.Command.ОткрытьФормуРегистрацииНаУзлах + Normal + Auto + true + true + UserCmds + + StdPicture.ExchangePlan + + Auto + + + СписокСсылокКонтекстноеМенюРедактироватьНомерСообщенияОбъекта + 198 + true + true + + true + + + СписокСсылокКонтекстноеМенюРедактироватьНомерСообщенияОбъектаРасширеннаяПодсказка + 323 + Label + true + true + + Left + + + Form.Command.РедактироватьНомерСообщенияОбъекта + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + СписокСсылокКонтекстноеМенюГруппа4РасширеннаяПодсказка + 320 + Label + true + true + + Left + + + + + + СписокСсылокКонтекстноеМенюГруппа2 + 136 + + СписокСсылокКонтекстноеМенюНайти + 159 + true + true + + true + + + СписокСсылокКонтекстноеМенюНайтиРасширеннаяПодсказка + 325 + Label + true + true + + Left + + + Form.Item.СписокСсылок.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + + + СписокСсылокКонтекстноеМенюОтменитьПоиск + 160 + true + true + + true + + + СписокСсылокКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка + 326 + Label + true + true + + Left + + + Form.Item.СписокСсылок.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + + + СписокСсылокКонтекстноеМенюНастройкаСписка + 161 + true + true + + true + + + СписокСсылокКонтекстноеМенюНастройкаСпискаРасширеннаяПодсказка + 327 + Label + true + true + + Left + + + Form.Item.СписокСсылок.StandardCommand.ListSettings + Normal + Auto + true + true + UserCmds + Auto + + + СписокСсылокКонтекстноеМенюВывестиСписок + 162 + true + true + + true + + + СписокСсылокКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 328 + Label + true + true + + Left + + + Form.Item.СписокСсылок.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + + СписокСсылокКонтекстноеМенюОбновить + 163 + true + true + + true + + + СписокСсылокКонтекстноеМенюОбновитьРасширеннаяПодсказка + 329 + Label + true + true + + Left + + + Form.Item.СписокСсылок.StandardCommand.Refresh + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + СписокСсылокКонтекстноеМенюГруппа2РасширеннаяПодсказка + 324 + Label + true + true + + Left + + + + + + true + true + true + true + MultiRow +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + Auto + true + true + true + + СписокСсылок.DefaultPicture + + None + None + None + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + true + + true + true + +
            + true + true + + true + + + <key>ru</key> + <value>Ссылки</value> + + + ru + Страница списка ссылок + + + СтраницаСписокСсылокРасширеннаяПодсказка + 312 + Label + true + true + + Left + + + Page + + Vertical + auto + +
            + + СтраницаНаборЗаписей + 50 + + СписокНаборовЗаписей + 78 + + <key>ru</key> + <value>Набор записей</value> + + true + true + + true + + + СписокНаборовЗаписей + + None + Choose + + СписокНаборовЗаписейГруппаИзмерений + 86 + true + true + + true + + + <key>ru</key> + <value>Измерения</value> + + + ru + Измерения набора записей + + + СписокНаборовЗаписейГруппаИзмеренийРасширеннаяПодсказка + 378 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + СписокНаборовЗаписейНомерСообщения + 83 + + <key>ru</key> + <value>Номер отправленного</value> + + true + true + + true + + + СписокНаборовЗаписей.НомерСообщения + + + СписокНаборовЗаписейНомерСообщенияРасширеннаяПодсказка + 379 + Label + true + true + + Left + + + + СписокНаборовЗаписейНомерСообщенияКонтекстноеМеню + 84 + true + + LabelField + Enter + true + Left + true + + true + true + + + + СписокНаборовЗаписейКоманднаяПанель + 80 + Left + + + Selection + СписокНаборовЗаписейВыбор + + + ChoiceProcessing + СписокНаборовЗаписейОбработкаВыбора + + + СписокНаборовЗаписейСтрокаПоиска + 369 + + СписокНаборовЗаписейСтрокаПоискаРасширеннаяПодсказка + 371 + Label + true + true + + Left + + + + СписокНаборовЗаписейСтрокаПоискаКонтекстноеМеню + 370 + true + + СписокНаборовЗаписей + + true + + + + СписокНаборовЗаписейСостояниеПросмотра + 372 + + СписокНаборовЗаписейСостояниеПросмотраРасширеннаяПодсказка + 374 + Label + true + true + + Left + + + + СписокНаборовЗаписейСостояниеПросмотраКонтекстноеМеню + 373 + true + + ViewStatusAddition + СписокНаборовЗаписей + + true + + + + СписокНаборовЗаписейУправлениеПоиском + 375 + + СписокНаборовЗаписейУправлениеПоискомРасширеннаяПодсказка + 377 + Label + true + true + + Left + + + + СписокНаборовЗаписейУправлениеПоискомКонтекстноеМеню + 376 + true + + SearchControlAddition + СписокНаборовЗаписей + + true + + + + СписокНаборовЗаписейРасширеннаяПодсказка + 368 + Label + true + true + + Left + + + + СписокНаборовЗаписейКонтекстноеМеню + 79 + + СписокНаборовЗаписейКонтекстноеМенюГруппа1 + 164 + + СписокНаборовЗаписейКонтекстноеМенюДобавитьРегистрациюНабораЗаписейОтбор + 138 + + <key>ru</key> + <value>Зарегистрировать изменения набора записей</value> + + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюДобавитьРегистрациюНабораЗаписейОтборРасширеннаяПодсказка + 354 + Label + true + true + + Left + + + Form.Command.ДобавитьРегистрациюНабораЗаписейОтбор + Normal + Auto + true + true + UserCmds + + StdPicture.CreateListItem + + Auto + + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюГруппа1РасширеннаяПодсказка + 353 + Label + true + true + + Left + + + + + + СписокНаборовЗаписейКонтекстноеМенюГруппа2 + 165 + + СписокНаборовЗаписейКонтекстноеМенюУдалитьРегистрациюНабораЗаписей + 139 + + <key>ru</key> + <value>Отменить регистрацию изменений текущей строки</value> + + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюУдалитьРегистрациюНабораЗаписейРасширеннаяПодсказка + 356 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюНабораЗаписей + Normal + Auto + true + true + UserCmds + + StdPicture.DeleteDirectly + + Auto + + + СписокНаборовЗаписейКонтекстноеМенюУдалитьРегистрациюНабораЗаписейОтбор + 140 + + <key>ru</key> + <value>Отменить регистрацию изменений при помощи отбора</value> + + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюУдалитьРегистрациюНабораЗаписейОтборРасширеннаяПодсказка + 357 + Label + true + true + + Left + + + Form.Command.УдалитьРегистрациюНабораЗаписейОтбор + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюГруппа2РасширеннаяПодсказка + 355 + Label + true + true + + Left + + + + + + СписокНаборовЗаписейКонтекстноеМенюГруппа4 + 179 + + СписокНаборовЗаписейКонтекстноеМенюПоказатьРезультатВыгрузки + 141 + + <key>ru</key> + <value>Показать результат выгрузки</value> + + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюПоказатьРезультатВыгрузкиРасширеннаяПодсказка + 359 + Label + true + true + + Left + + + Form.Command.ПоказатьРезультатВыгрузки + Normal + Auto + true + true + UserCmds + + Auto + + + СписокНаборовЗаписейКонтекстноеМенюОткрытьФормуРегистрацииНаУзлах + 180 + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюОткрытьФормуРегистрацииНаУзлахРасширеннаяПодсказка + 360 + Label + true + true + + Left + + + Form.Command.ОткрытьФормуРегистрацииНаУзлах + Normal + Auto + true + true + UserCmds + + StdPicture.ExchangePlan + + Auto + + + СписокНаборовЗаписейКонтекстноеМенюРедактироватьНомерСообщенияОбъекта + 199 + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюРедактироватьНомерСообщенияОбъектаРасширеннаяПодсказка + 361 + Label + true + true + + Left + + + Form.Command.РедактироватьНомерСообщенияОбъекта + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюГруппа4РасширеннаяПодсказка + 358 + Label + true + true + + Left + + + + + + СписокНаборовЗаписейКонтекстноеМенюГруппа3 + 166 + + СписокНаборовЗаписейКонтекстноеМенюНайти + 167 + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюНайтиРасширеннаяПодсказка + 363 + Label + true + true + + Left + + + Form.Item.СписокНаборовЗаписей.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + + + СписокНаборовЗаписейКонтекстноеМенюОбновить + 168 + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюОбновитьРасширеннаяПодсказка + 364 + Label + true + true + + Left + + + Form.Item.СписокНаборовЗаписей.StandardCommand.Refresh + Normal + Auto + true + true + UserCmds + Auto + + + СписокНаборовЗаписейКонтекстноеМенюОтменитьПоиск + 169 + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка + 365 + Label + true + true + + Left + + + Form.Item.СписокНаборовЗаписей.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + + + СписокНаборовЗаписейКонтекстноеМенюНастройкаСписка + 170 + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюНастройкаСпискаРасширеннаяПодсказка + 366 + Label + true + true + + Left + + + Form.Item.СписокНаборовЗаписей.StandardCommand.ListSettings + Normal + Auto + true + true + UserCmds + Auto + + + СписокНаборовЗаписейКонтекстноеМенюВывестиСписок + 171 + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 367 + Label + true + true + + Left + + + Form.Item.СписокНаборовЗаписей.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + СписокНаборовЗаписейКонтекстноеМенюГруппа3РасширеннаяПодсказка + 362 + Label + true + true + + Left + + + + + + HierarchicalList + true + true + true + true + true + AfterCurrentRow + MultiRow +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + false + Auto + true + true + true + None + None + None + true + + 60 + + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + true + + true + true + +
            + true + true + + true + + + <key>ru</key> + <value>Наборы записей</value> + + + ru + Страница набора записей + + + СтраницаНаборЗаписейРасширеннаяПодсказка + 352 + Label + true + true + + Left + + + Page + + Vertical + auto + +
            + + СтраницаПустая + 74 + + Группа4 + 77 + + ДекорацияПустаяСтраница + 75 + true + true + + true + + + ДекорацияПустаяСтраницаРасширеннаяПодсказка + 391 + Label + true + true + + Left + + + + ДекорацияПустаяСтраницаКонтекстноеМеню + 76 + true + + Label + true + true + true + true + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Описание</value> + + true + + Группа4РасширеннаяПодсказка + 390 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + auto + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Итоги по виду объекта</value> + + + ru + Страница итогов + + true + + СтраницаПустаяРасширеннаяПодсказка + 389 + Label + true + true + + Left + + + Page + + Vertical + auto + + + true + true + + true + + + <key>ru</key> + <value>Регистрация объектов</value> + + + ru + Варианты списка объектов + + + ВариантыСпискаОбъектовРасширеннаяПодсказка + 272 + Label + true + true + + Left + + + Pages + + + OnCurrentPageChange + ВариантыСпискаОбъектовПриСменеСтраницы + + Auto + +
            + true + true + + true + + + <key>ru</key> + <value>Регистрируемые объекты</value> + + + Группа5РасширеннаяПодсказка + 228 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + +
            + true + true + + true + + + <key>ru</key> + <value>Данные регистрации</value> + + true + true + + Группа1РасширеннаяПодсказка + 206 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + +
            + + ГруппаСкрытыхДанных + 174 + + СкрытаяКартинкаИнформация32 + 175 + + <key>ru</key> + <value>Скрытая картинка информация32</value> + + true + true + + true + + + СкрытаяКартинкаИнформация32РасширеннаяПодсказка + 393 + Label + true + true + + Left + + + + СкрытаяКартинкаИнформация32КонтекстноеМеню + 176 + true + + true + true + + + + + false + + true + + + <key>ru</key> + <value>Группа скрытых данных</value> + + + ru + Группа скрытых данных + + true + + ГруппаСкрытыхДанныхРасширеннаяПодсказка + 392 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + auto + Auto + Auto + + + None + false + + ФормаКоманднаяПанель + -1 + Left + true + + + OnSaveDataInSettingsAtServer + ПриСохраненииДанныхВНастройкахНаСервере + + + ChoiceProcessing + ОбработкаВыбора + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnLoadDataFromSettingsAtServer + ПриЗагрузкеДанныхИзНастроекНаСервере + + + OnCreateAtServer + ПриСозданииНаСервере + + + OnClose + ПриЗакрытии + + DontBlock + Use + UseList + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DataProcessorObject.РегистрацияИзмененийДляОбменаДанными + + + true + + + true + +
            true
            +
            + + УзелОбменаСсылка + + <key>ru</key> + <value>Узел обмена</value> + + 2 + + ExchangePlanRef + + + true + + + true + + + УзелОбменаСсылка + + + + ДеревоМетаданных + + <key>ru</key> + <value>Метаданные</value> + + 3 + + ValueTree + + + 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 + + Number + + 10 + + + + true + + + true + + + + Пометка + + <key>ru</key> + <value>Пометка</value> + + 4 + + Number + + 10 + + + + true + + + true + + + + Авторегистрация + + <key>ru</key> + <value>Авторегистрация</value> + + 5 + + Number + + 1 + + + + true + + + true + + + + КоличествоИзменений + + <key>ru</key> + <value>Количество изменений</value> + + 6 + + Number + + 10 + + + + true + + + true + + + + КоличествоВыгруженных + + <key>ru</key> + <value>Количество выгруженных</value> + + 7 + + Number + + 10 + + + + true + + + true + + + + КоличествоНевыгруженных + + <key>ru</key> + <value>Количество невыгруженных</value> + + 8 + + Number + + 10 + + + + true + + + true + + + + КоличествоИзмененийСтрокой + + <key>ru</key> + <value>Количество изменений строкой</value> + + 9 + + String + + + + true + + + true + + + + + СписокСсылок + + <key>ru</key> + <value>Список ссылок</value> + + 4 + + DynamicList + + + true + + + true + + + СписокСсылок.ИндексКартинки + + + СписокСсылок.СсылкаПредставление + + + СписокСсылок.Узел + + + СписокСсылок.НеВыгружалось + + + СписокСсылок.НомерСообщения + + + СписокСсылок.Ссылка + + + ВЫБРАТЬ + NULL КАК Ссылка, + NULL КАК НомерСообщения, + ЛОЖЬ КАК НеВыгружалось + true + true + true + true + + + + СписокКонстант + + <key>ru</key> + <value>Список констант</value> + + 5 + + DynamicList + + + true + + + true + + + СписокКонстант.Зарегистрировано + + + СписокКонстант.ИндексКартинки + + + СписокКонстант.ИндексКартинкиАвторегистрация + + + СписокКонстант.МетаПолноеИмя + + + СписокКонстант.НеВыгружалось + + + СписокКонстант.НомерСообщения + + + ВЫБРАТЬ + 0 КАК ИндексКартинки, + 0 КАК ИндексКартинкиАвторегистрация, + NULL КАК Наименование, + NULL КАК МетаПолноеИмя, + NULL КАК НомерСообщения, + ЛОЖЬ КАК НеВыгружалось, + ЛОЖЬ КАК Зарегистрировано + true + true + true + true + + + + СтруктураИменМетаданных + + <key>ru</key> + <value>Структура имен метаданных</value> + + 6 + + + true + + + true + + + + СтруктураПредставленийМетаданных + + <key>ru</key> + <value>Структура представлений метаданных</value> + + 7 + + + true + + + true + + + + СписокНаборовЗаписей + + <key>ru</key> + <value>Список наборов записей</value> + + 8 + + DynamicList + + + true + + + true + + + СписокНаборовЗаписей.НеВыгружалось + + + СписокНаборовЗаписей.НомерСообщения + + + ВЫБРАТЬ + NULL КАК НомерСообщения, + ЛОЖЬ КАК НеВыгружалось + true + true + true + true + + + + СписокНаборовЗаписейИмяТаблицы + + <key>ru</key> + <value>Список наборов записей имя таблицы</value> + + 9 + + String + + + + true + + + true + + + + СтруктураАвторегистрацииМетаданных + + <key>ru</key> + <value>Структура авторегистрации метаданных</value> + + 11 + + + true + + + true + + + + ВариантОтбораПоНомеруСообщения + + <key>ru</key> + <value>Вариант отбора по номеру сообщения</value> + + 12 + + Number + + 10 + + + + true + + + true + + + ВариантОтбораПоНомеруСообщения + + + + ПараметрОбъектРегистрации + + <key>ru</key> + <value>Параметр объект регистрации</value> + + 10 + + + true + + + true + + + + ПараметрТаблицаРегистрации + + <key>ru</key> + <value>Параметр таблица регистрации</value> + + 13 + + + true + + + true + + + + ЗапрещеноВыбиратьУзелОбмена + + <key>ru</key> + <value>Запрещено выбирать узел обмена</value> + + 14 + + Boolean + + + true + + + true + + + + ИменаСкрываемыхМетаданных + + <key>ru</key> + <value>Имена скрываемых метаданных</value> + + 15 + + ValueList + + + true + + + true + + + + + + + ДобавитьРегистрациюСсылки + + <key>ru</key> + <value>Добавить регистрацию</value> + + 1 + + ru + Добавить регистрацию + + + true + + + StdPicture.CreateListItem + + + + ДобавитьРегистрациюСсылки + + + Auto + Auto + + + УдалитьРегистрациюСсылки + + <key>ru</key> + <value>Удалить</value> + + 2 + + ru + Удалить регистрацию ссылки + + + true + + + + УдалитьРегистрациюСсылки + + + Auto + Auto + + + ОбновитьВсеДанные + + <key>ru</key> + <value>Обновить все данные</value> + + 3 + + ru + Обновить все данные + + + true + + + StdPicture.Refresh + + + + ОбновитьВсеДанные + + + Auto + Auto + + + ДобавитьРегистрациюВсехОбъектов + + <key>ru</key> + <value>Зарегистрировать все объекты выбранных типов</value> + + 4 + + ru + Зарегистрировать все объекты выбранных типов + + + true + + + + ДобавитьРегистрациюВсехОбъектов + + + Auto + Auto + + + ДобавитьРегистрациюАвтоОбъектов + + <key>ru</key> + <value>Зарегистрировать только авторегистрируемые объекты выбранных типов</value> + + 5 + + ru + Зарегистрировать только авторегистрируемые объекты выбранных типов + + + true + + + + ДобавитьРегистрациюАвтоОбъектов + + + Auto + Auto + + + УдалитьРегистрациюВсехОбъектов + + <key>ru</key> + <value>Удалить регистрацию всех объектов выбранных типов</value> + + 6 + + ru + Удалить регистрацию всех объектов + + + true + + + + УдалитьРегистрациюВсехОбъектов + + + Auto + Auto + + + УдалитьРегистрациюАвтоОбъектов + + <key>ru</key> + <value>Удалить регистрацию только авторегиструемых объектов выбранных типов</value> + + 7 + + ru + Удалить регистрацию авто объектов + + + true + + + + УдалитьРегистрациюАвтоОбъектов + + + Auto + Auto + + + ДобавитьРегистрациюСсылкиПодбор + + <key>ru</key> + <value>Добавить регистрацию результата подбора</value> + + 9 + + ru + Добавить регистрацию результата подбора + + + true + + + + ДобавитьРегистрациюСсылкиПодбор + + + Auto + Auto + + + ДобавитьРегистрациюРезультатаЗапроса + + <key>ru</key> + <value>Добавить по результату запроса</value> + + 10 + + ru + Добавить по результату запроса + + + true + + + + ДобавитьРегистрациюРезультатаЗапроса + + + Auto + Auto + + + УдалитьРегистрациюРезультатаЗапроса + + <key>ru</key> + <value>Удалить по результату запроса</value> + + 11 + + ru + Удалить по результату запроса + + + true + + + + УдалитьРегистрациюРезультатаЗапроса + + + Auto + Auto + + + ДобавитьРегистрациюКонстанты + + <key>ru</key> + <value>Добавить регистрацию константы</value> + + 12 + + ru + Добавить регистрацию константы + + + true + + + + ДобавитьРегистрациюКонстанты + + + Auto + Auto + + + УдалитьРегистрациюКонстанты + + <key>ru</key> + <value>Удалить регистрацию константы</value> + + 13 + + ru + Удалить регистрацию константы + + + true + + + + УдалитьРегистрациюКонстанты + + + Auto + Auto + + + РедактироватьНомераСообщений + + <key>ru</key> + <value>Редактировать номера сообщений</value> + + 14 + + ru + Редактировать номера сообщений + + + true + + + + РедактироватьНомераСообщений + + + Auto + Auto + + + ПоказатьРезультатВыгрузки + + <key>ru</key> + <value>Результат стандартной выгрузки (РИБ)</value> + + 15 + + ru + Показать результат выгрузки + + + true + + + + ПоказатьРезультатВыгрузки + + + Auto + Auto + + + ДобавитьРегистрациюСсылкиОтбор + + <key>ru</key> + <value>Добавить регистрацию результата отбора</value> + + 8 + + ru + Добавить регистрацию результата отбора + + + true + + + + ДобавитьРегистрациюСсылкиОтбор + + + Auto + Auto + + + УдалитьРегистрациюСсылкиОтбор + + <key>ru</key> + <value>Удалить регистрацию результата отбора</value> + + 16 + + ru + Удалить регистрацию результата отбора + + + true + + + + УдалитьРегистрациюСсылкиОтбор + + + Auto + Auto + + + ДобавитьРегистрациюНабораЗаписейОтбор + + <key>ru</key> + <value>Добавить регистрацию результата отбора</value> + + 17 + + ru + Добавить регистрацию результата отбора + + + true + + + + ДобавитьРегистрациюНабораЗаписейОтбор + + + Auto + Auto + + + УдалитьРегистрациюНабораЗаписейОтбор + + <key>ru</key> + <value>Удалить регистрацию по отбору</value> + + 18 + + ru + Удалить регистрацию набора записей отбор + + + true + + + + УдалитьРегистрациюНабораЗаписейОтбор + + + Auto + Auto + + + УдалитьРегистрациюНабораЗаписей + + <key>ru</key> + <value>Удалить регистрацию набора записей</value> + + 19 + + ru + Удалить регистрацию набора записей + + + true + + + + УдалитьРегистрациюНабораЗаписей + + + Auto + Auto + + + ОткрытьФормуРегистрацииНаУзлах + + <key>ru</key> + <value>Открыть форму регистрации на узлах</value> + + 20 + + ru + Регистрация объекта на всех узлах + + + true + + + + ОткрытьФормуРегистрацииНаУзлах + + + Auto + Auto + + + ОткрытьФормуНастроек + + <key>ru</key> + <value>Настройки</value> + + 21 + + ru + Открыть форму настроек + + + true + + + StdPicture.ReportSettings + + + + ОткрытьФормуНастроек + + + Auto + Auto + + + ДобавитьРегистрациюОдногоОбъекта + + <key>ru</key> + <value>Добавить регистрацию одного объекта</value> + + 22 + + ru + Добавить регистрацию одного объекта + + + true + + + + ДобавитьРегистрациюОдногоОбъекта + + + Auto + Auto + + + ДобавитьРегистрациюОтбор + + <key>ru</key> + <value>Добавить регистрацию отбор</value> + + 23 + + ru + Добавить регистрацию отбор + + + true + + + + ДобавитьРегистрациюОтбор + + + Auto + Auto + + + УдалитьРегистрациюОдногоОбъекта + + <key>ru</key> + <value>Удалить регистрацию одного объекта</value> + + 24 + + ru + Удалить регистрацию одного объекта + + + true + + + + УдалитьРегистрациюОдногоОбъекта + + + Auto + Auto + + + УдалитьРегистрациюОтбор + + <key>ru</key> + <value>Удалить регистрацию отбор</value> + + 25 + + ru + Удалить регистрацию отбор + + + true + + + + УдалитьРегистрациюОтбор + + + Auto + Auto + + + ДобавитьРегистрациюУдаленияОбъекта + + <key>ru</key> + <value>Добавить регистрацию удаления объекта</value> + + 26 + + ru + Добавить регистрацию удаления объекта + + + true + + + + ДобавитьРегистрациюУдаленияОбъекта + + + Auto + Auto + + + РедактироватьНомерСообщенияОбъекта + + <key>ru</key> + <value>Редактировать номер сообщения объекта</value> + + 27 + + ru + Редактировать номер сообщения объекта + + + true + + + StdPicture.Change + + + + РедактироватьНомерСообщенияОбъекта + + + Auto + Auto + + + ИдентификаторКоманды + + true + + + ОбъектыНазначения + + true + + + УзелОбмена + + ExchangePlanRef + + true + + + ЗапрещеноВыбиратьУзелОбмена + + Boolean + + true + + + + + + +
            diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданных/RowsPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданных/RowsPicture.png new file mode 100644 index 000000000..d36e47e45 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданных/RowsPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданныхАвторегистрация/ValuesPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданныхАвторегистрация/ValuesPicture.png new file mode 100644 index 000000000..d7cc10f56 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданныхАвторегистрация/ValuesPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданныхДобавитьРегистрациюРезультатаЗапроса/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданныхДобавитьРегистрациюРезультатаЗапроса/Picture.png new file mode 100644 index 000000000..9270d02ef Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданныхДобавитьРегистрациюРезультатаЗапроса/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданныхУдалитьРегистрациюРезультатаЗапроса/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданныхУдалитьРегистрациюРезультатаЗапроса/Picture.png new file mode 100644 index 000000000..9270d02ef Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ДеревоМетаданныхУдалитьРегистрациюРезультатаЗапроса/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ПоказатьРезультатВыгрузки/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ПоказатьРезультатВыгрузки/Picture.png new file mode 100644 index 000000000..519885bb6 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/ПоказатьРезультатВыгрузки/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СкрытаяКартинкаИнформация32/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СкрытаяКартинкаИнформация32/Picture.png new file mode 100644 index 000000000..dd7660e75 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СкрытаяКартинкаИнформация32/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокКонстант/RowsPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокКонстант/RowsPicture.png new file mode 100644 index 000000000..d36e47e45 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокКонстант/RowsPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокКонстантАвторегистрация/ValuesPicture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокКонстантАвторегистрация/ValuesPicture.png new file mode 100644 index 000000000..d7cc10f56 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокКонстантАвторегистрация/ValuesPicture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокКонстантКонтекстноеМенюПоказатьРезультатВыгрузки/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокКонстантКонтекстноеМенюПоказатьРезультатВыгрузки/Picture.png new file mode 100644 index 000000000..519885bb6 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокКонстантКонтекстноеМенюПоказатьРезультатВыгрузки/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокНаборовЗаписейКонтекстноеМенюПоказатьРезультатВыгрузки/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокНаборовЗаписейКонтекстноеМенюПоказатьРезультатВыгрузки/Picture.png new file mode 100644 index 000000000..519885bb6 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокНаборовЗаписейКонтекстноеМенюПоказатьРезультатВыгрузки/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокСсылокКонтекстноеМенюПоказатьРезультатВыгрузки/Picture.png b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокСсылокКонтекстноеМенюПоказатьРезультатВыгрузки/Picture.png new file mode 100644 index 000000000..519885bb6 Binary files /dev/null and b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Items/СписокСсылокКонтекстноеМенюПоказатьРезультатВыгрузки/Picture.png differ diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl new file mode 100644 index 000000000..d1b8dc5e8 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/Forms/Форма/Module.bsl @@ -0,0 +1,1934 @@ +&НаКлиенте +Перем ТекущаяСтрокаМетаданных; + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ВыполнитьПроверкуПравДоступа("Администрирование", Метаданные); + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + ПараметрТаблицаРегистрации = Неопределено; + ПараметрОбъектРегистрации = Неопределено; + + ОткрытиеСУзломПараметром = Ложь; + ТекущийОбъект = ЭтотОбъект(); + + // Определяем что создают + Если Параметры.ИдентификаторКоманды=Неопределено Тогда + // Запуск автономно, возможно с параметром-узлом + УзелОбменаСсылка = Параметры.УзелОбмена; + Параметры.Свойство("ЗапрещеноВыбиратьУзелОбмена", ЗапрещеноВыбиратьУзелОбмена); + ОткрытиеСУзломПараметром = Истина; + + ИначеЕсли Параметры.ИдентификаторКоманды="ОткрытьФормуРедактированияРегистрации" Тогда + Если ТипЗнч(Параметры.ОбъектыНазначения)=Тип("Массив") И Параметры.ОбъектыНазначения.Количество()>0 Тогда + // Нас открывают с указанием объекта + ОбъектНазначения = Параметры.ОбъектыНазначения[0]; + Тип = ТипЗнч(ОбъектНазначения); + Если ПланыОбмена.ТипВсеСсылки().СодержитТип(Тип) Тогда + УзелОбменаСсылка = ОбъектНазначения; + ОткрытиеСУзломПараметром = Истина; + Иначе + // Преобразуем в два наших параметра, при открытии будет создана вторая форма + Описание = ТекущийОбъект.ХарактеристикиПоМетаданным(ОбъектНазначения.Метаданные()); + Если Описание.ЭтоСсылка Тогда + ПараметрОбъектРегистрации = ОбъектНазначения; + ИначеЕсли Описание.ЭтоНабор Тогда + // Структура и имя таблицы + ПараметрТаблицаРегистрации = Описание.ИмяТаблицы; + ПараметрОбъектРегистрации = Новый Структура; + Для Каждого Измерение Из ТекущийОбъект.ИзмеренияНабораЗаписей(ПараметрТаблицаРегистрации) Цикл + ТекИмя = Измерение.Имя; + ПараметрОбъектРегистрации.Вставить(ТекИмя, ОбъектНазначения.Отбор[ТекИмя].Значение); + КонецЦикла; + КонецЕсли; + КонецЕсли; + + Иначе + ВызватьИсключение СтрЗаменить( + НСтр("ru='Неверные параметры команды открытия ""%1""'"), + "%1", Параметры.ИдентификаторКоманды); + + КонецЕсли; + + Иначе + ВызватьИсключение СтрЗаменить( + НСтр("ru='Нераспознанная команда ""%1""'"), + "%1", Параметры.ИдентификаторКоманды); + КонецЕсли; + + // Настройки объекта инициализируем всегда + ТекущийОбъект.ПрочитатьНастройки(); + ТекущийОбъект.ПрочитатьПризнакПоддержкиБСП(); + ЭтотОбъект(ТекущийОбъект); + + // Остальное инициализируем, только если будем открывать эту форму, + Если ПараметрОбъектРегистрации<>Неопределено Тогда + Возврат; + КонецЕсли; + + // Список запретных объектов метаданных из параметров + Параметры.Свойство("ИменаСкрываемыхМетаданных", ИменаСкрываемыхМетаданных); + + ТекущаяСтрокаМетаданных = Неопределено; + Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница = Элементы.СтраницаПустая; + Параметры.Свойство("ЗапрещеноВыбиратьУзелОбмена", ЗапрещеноВыбиратьУзелОбмена); + Если Не ПроконтролироватьНастройки() И ОткрытиеСУзломПараметром Тогда + ВызватьИсключение СтрЗаменить( + НСтр("ru='Для ""%1"" редактирование регистрации объектов недоступно.'"), + "%1", УзелОбменаСсылка); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ПараметрОбъектРегистрации<>Неопределено Тогда + // Открываем другую форму + Отказ = Истина; + ОткрытьФорму( + ПолучитьИмяФормы() + "Форма.УзлыРегистрацииОбъекта", + Новый Структура("ОбъектРегистрации, ТаблицаРегистрации", ПараметрОбъектРегистрации, ПараметрТаблицаРегистрации)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПриЗакрытии() + // Автосохранение настроек + СохраняемыеВНастройкахДанныеМодифицированы = Истина; +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + // Результат выбора запроса, ожидаем структуру + Если ТипЗнч(ВыбранноеЗначение)<>Тип("Структура") + Или (Не ВыбранноеЗначение.Свойство("ДействиеВыбора")) + Или (Не ВыбранноеЗначение.Свойство("ДанныеВыбора")) + Или ТипЗнч(ВыбранноеЗначение.ДействиеВыбора)<>Тип("Булево") + Или ТипЗнч(ВыбранноеЗначение.ДанныеВыбора)<>Тип("Строка") + Тогда + Ошибка = НСтр("ru='Неожиданный результат выбора из консоли запросов'"); + Иначе + Ошибка = КонтрольСсылокДляВыбораЗапросом(ВыбранноеЗначение.ДанныеВыбора); + КонецЕсли; + + Если Ошибка<>"" Тогда + Предупреждение(Ошибка); + Возврат; + КонецЕсли; + + Если ВыбранноеЗначение.ДействиеВыбора Тогда + Текст = НСтр("ru='Зарегистрировать результат запроса + |на узле ""%1""?'"); + Иначе + Текст = НСтр("ru='Отменить регистрацию результата запроса + |на узле ""%1""?'"); + КонецЕсли; + ЗаголовокВопроса = НСтр("ru='Подтверждение'"); + + Текст = СтрЗаменить(Текст, "%1", Строка(УзелОбменаСсылка)); + Ответ = Вопрос(Текст, РежимДиалогаВопрос.ДаНет,,,ЗаголовокВопроса); + Если Ответ=КодВозвратаДиалога.Да Тогда + СообщитьОРезультатахРегистрации(ВыбранноеЗначение.ДействиеВыбора, + ИзменитьРегистрациюРезультатаЗапросаСервер(ВыбранноеЗначение.ДействиеВыбора, ВыбранноеЗначение.ДанныеВыбора)); + ЗаполнитьКоличествоРегистрацийВДереве(); + ОбновитьСодержимоеСтраницы(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + Если ИмяСобытия="ИзменениеРегистрацииОбменаДаннымиОбъекта" Тогда + ЗаполнитьКоличествоРегистрацийВДереве(); + ОбновитьСодержимоеСтраницы(); + ИначеЕсли ИмяСобытия="ИзменениеДанныхУзлаОбмена" И УзелОбменаСсылка=Параметр Тогда + УстановитьЗаголовокНомеровСообщений(); + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПриСохраненииДанныхВНастройкахНаСервере(Настройки) + // Автоматические настройки + ТекущийОбъект = ЭтотОбъект(); + ТекущийОбъект.СохранитьНастройки(); + ЭтотОбъект(ТекущийОбъект); +КонецПроцедуры + +&НаСервере +Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) + + Если ПараметрОбъектРегистрации<>Неопределено Тогда + // Будет работа с другой формой + Возврат; + КонецЕсли; + + Если ЗначениеЗаполнено(Параметры.УзелОбмена) Тогда + УзелОбменаСсылка = Параметры.УзелОбмена; + Иначе + УзелОбменаСсылка = Настройки["УзелОбменаСсылка"]; + // Если восстановленный узел обмена был удален, то очищаем его + Если УзелОбменаСсылка<>Неопределено + И ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипЗнч(УзелОбменаСсылка)) + И ПустаяСтрока(УзелОбменаСсылка.ВерсияДанных) + Тогда + УзелОбменаСсылка = Неопределено; + КонецЕсли; + КонецЕсли; + + ПроконтролироватьНастройки(); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ +// + +&НаКлиенте +Процедура УзелОбменаСсылкаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.ВыборУзлаПланаОбмена"; + ТекПараметры = Новый Структура("МножественныйВыбор, НачальноеЗначениеВыбора", + Ложь, УзелОбменаСсылка); + ОткрытьФорму(ТекИмяФормы, ТекПараметры, Элемент); +КонецПроцедуры + +&НаКлиенте +Процедура УзелОбменаСсылкаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + Если УзелОбменаСсылка<>ВыбранноеЗначение Тогда + УзелОбменаСсылка = ВыбранноеЗначение; + ОбработкаВыбораУзлаОбмена(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УзелОбменаСсылкаПриИзменении(Элемент) + ОбработкаВыбораУзлаОбмена(); + РазвернутьДеревоМетаданных(); + ОбновитьСодержимоеСтраницы(); +КонецПроцедуры + +&НаКлиенте +Процедура УзелОбменаСсылкаОчистка(Элемент, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; +КонецПроцедуры + +&НаКлиенте +Процедура ВариантОтбораПоНомеруСообщенияПриИзменении(Элемент) + УстановитьОтборПоНомеруСообщения(СписокКонстант, ВариантОтбораПоНомеруСообщения); + УстановитьОтборПоНомеруСообщения(СписокСсылок, ВариантОтбораПоНомеруСообщения); + УстановитьОтборПоНомеруСообщения(СписокНаборовЗаписей, ВариантОтбораПоНомеруСообщения); + ОбновитьСодержимоеСтраницы(); +КонецПроцедуры + +&НаКлиенте +Процедура ВариантыСпискаОбъектовПриСменеСтраницы(Элемент, ТекущаяСтраница) + ОбновитьСодержимоеСтраницы(ТекущаяСтраница); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ ДеревоМетаданных +// + +&НаКлиенте +Процедура ДеревоМетаданныхПометкаПриИзменении(Элемент) + ИзменениеПометки(Элементы.ДеревоМетаданных.ТекущаяСтрока); +КонецПроцедуры + +&НаКлиенте +Процедура ДеревоМетаданныхПриАктивизацииСтроки(Элемент) + Если Элементы.ДеревоМетаданных.ТекущаяСтрока<>ТекущаяСтрокаМетаданных Тогда + ТекущаяСтрокаМетаданных = Элементы.ДеревоМетаданных.ТекущаяСтрока; + ПодключитьОбработчикОжидания("НастроитьРедактированиеИзменений", 0.0000001, Истина); + КонецЕсли; +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ СписокКонстант +// + +&НаКлиенте +Процедура СписокКонстантОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + Результат = ДобавитьРегистрациюНаСервере(Истина, УзелОбменаСсылка, ВыбранноеЗначение); + Элементы.СписокКонстант.Обновить(); + ЗаполнитьКоличествоРегистрацийВДереве(); + СообщитьОРезультатахРегистрации(Истина, Результат); + + Если ТипЗнч(ВыбранноеЗначение)=Тип("Массив") И ВыбранноеЗначение.Количество()>0 Тогда + Элемент.ТекущаяСтрока = ВыбранноеЗначение[0]; + Иначе + Элемент.ТекущаяСтрока = ВыбранноеЗначение; + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ СписокСсылок +// + +&НаКлиенте +Процедура СписокСсылокОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + ОбработкаВыбораДанных(Элемент, ВыбранноеЗначение); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ СписокНаборовЗаписей +// + +&НаКлиенте +Процедура СписокНаборовЗаписейВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) + СтандартнаяОбработка = Ложь; + + ПараметрыЗаписи = СтруктураКлючаНабораЗаписей(Элемент.ТекущиеДанные); + Если ПараметрыЗаписи<>Неопределено Тогда + ОткрытьФорму(ПараметрыЗаписи.ИмяФормы, Новый Структура("Ключ", ПараметрыЗаписи.Ключ)); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура СписокНаборовЗаписейОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + ОбработкаВыбораДанных(Элемент, ВыбранноеЗначение); +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ +// + +&НаКлиенте +Процедура ДобавитьРегистрациюОдногоОбъекта(Команда) + + Если Не ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + Возврат; + КонецЕсли; + + ТекСтр = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; + Если ТекСтр=Элементы.СтраницаКонстанты Тогда + ДобавитьРегистрациюКонстантыВСписке(); + ИначеЕсли ТекСтр=Элементы.СтраницаСписокСсылок Тогда + ДобавитьРегистрациюВСписокСсылок(); + ИначеЕсли ТекСтр=Элементы.СтраницаНаборЗаписей Тогда + ДобавитьРегистрациюВНаборЗаписейОтбор(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюОдногоОбъекта(Команда) + + Если Не ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + Возврат; + КонецЕсли; + + ТекСтр = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; + Если ТекСтр=Элементы.СтраницаКонстанты Тогда + УдалитьРегистрациюКонстантыВСписке(); + ИначеЕсли ТекСтр=Элементы.СтраницаСписокСсылок Тогда + УдалитьРегистрациюИзСпискаСсылок(); + ИначеЕсли ТекСтр=Элементы.СтраницаНаборЗаписей Тогда + УдалитьРегистрациюВНабореЗаписей(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюОтбор(Команда) + + Если Не ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + Возврат; + КонецЕсли; + + ТекСтр = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; + Если ТекСтр=Элементы.СтраницаСписокСсылок Тогда + ДобавитьРегистрациюВСписокОтбор(); + ИначеЕсли ТекСтр=Элементы.СтраницаНаборЗаписей Тогда + ДобавитьРегистрациюВНаборЗаписейОтбор(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюОтбор(Команда) + + Если Не ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + Возврат; + КонецЕсли; + + ТекСтр = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; + Если ТекСтр=Элементы.СтраницаСписокСсылок Тогда + УдалитьРегистрациюВСпискеОтбор(); + ИначеЕсли ТекСтр=Элементы.СтраницаНаборЗаписей Тогда + УдалитьРегистрациюВНабореЗаписейОтбор(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуРегистрацииНаУзлах(Команда) + + Если ЗапрещеноВыбиратьУзелОбмена Тогда + Возврат; + КонецЕсли; + + Данные = ПолучитьТекущийОбъектРедактирования(); + Если Данные<>Неопределено Тогда + ТаблицаРегистрации = ?(ТипЗнч(Данные)=Тип("Структура"), СписокНаборовЗаписейИмяТаблицы, ""); + ОткрытьФорму(ПолучитьИмяФормы() + "Форма.УзлыРегистрацииОбъекта", + Новый Структура("ОбъектРегистрации, ТаблицаРегистрации, ОповещатьОбИзменениях", + Данные, ТаблицаРегистрации, Истина + ), + ЭтаФорма); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказатьРезультатВыгрузки(Команда) + + ТекСтраница = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; + Сериализация = Новый Массив; + + Если ТекСтраница=Элементы.СтраницаКонстанты Тогда + ЭлементФормы = Элементы.СписокКонстант; + Для Каждого Строка Из ЭлементФормы.ВыделенныеСтроки Цикл + ТекДанные = ЭлементФормы.ДанныеСтроки(Строка); + Сериализация.Добавить(Новый Структура("ФлагТипа, Данные", 1, ТекДанные.МетаПолноеИмя)); + КонецЦикла; + + ИначеЕсли ТекСтраница=Элементы.СтраницаНаборЗаписей Тогда + СписокИзмерений = МассивИменКлючейНабораЗаписей(СписокНаборовЗаписейИмяТаблицы); + ЭлементФормы = Элементы.СписокНаборовЗаписей; + Префикс = "СписокНаборовЗаписей"; + Для Каждого Элемент Из ЭлементФормы.ВыделенныеСтроки Цикл + ТекДанные = Новый Структура(); + Данные = ЭлементФормы.ДанныеСтроки(Элемент); + Для Каждого Имя Из СписокИзмерений Цикл + ТекДанные.Вставить(Имя, Данные[Префикс + Имя]); + КонецЦикла; + Сериализация.Добавить(Новый Структура("ФлагТипа, Данные", 2, ТекДанные)); + КонецЦикла; + + ИначеЕсли ТекСтраница=Элементы.СтраницаСписокСсылок Тогда + ЭлементФормы = Элементы.СписокСсылок; + Для Каждого Элемент Из ЭлементФормы.ВыделенныеСтроки Цикл + ТекДанные = ЭлементФормы.ДанныеСтроки(Элемент); + Сериализация.Добавить(Новый Структура("ФлагТипа, Данные", 3, ТекДанные.Ссылка)); + КонецЦикла; + + Иначе + Возврат; + КонецЕсли; + + Если Сериализация.Количество()>0 Тогда + Текст = ТекстСериализации(Сериализация); + ЗаголовокТекста = НСтр("ru='Результат стандартной выгрузки (РИБ)'"); + Текст.Показать(ЗаголовокТекста); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура РедактироватьНомераСообщений(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.НомераСообщенийУзлаПланаОбмена"; + ТекПараметры = Новый Структура("УзелОбменаСсылка", УзелОбменаСсылка); + ОткрытьФорму(ТекИмяФормы, ТекПараметры); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюКонстанты(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ДобавитьРегистрациюКонстантыВСписке(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюКонстанты(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + УдалитьРегистрациюКонстантыВСписке(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюСсылки(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ДобавитьРегистрациюВСписокСсылок(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюУдаленияОбъекта(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ДобавитьРегистрациюУдаленияОбъектаВСписокСсылок(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюСсылки(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + УдалитьРегистрациюИзСпискаСсылок(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюСсылкиПодбор(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ДобавитьРегистрациюВСписокСсылок(Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюСсылкиОтбор(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ДобавитьРегистрациюВСписокОтбор(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюСсылкиОтбор(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + УдалитьРегистрациюВСпискеОтбор(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюАвтоОбъектов(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ДобавитьРегистрациюВыделенныхОбъектов(Ложь); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюАвтоОбъектов(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + УдалитьРегистрациюВыделенныхОбъектов(Ложь); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюВсехОбъектов(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ДобавитьРегистрациюВыделенныхОбъектов(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюВсехОбъектов(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + УдалитьРегистрациюВыделенныхОбъектов(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюНабораЗаписейОтбор(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ДобавитьРегистрациюВНаборЗаписейОтбор(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюНабораЗаписей(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + УдалитьРегистрациюВНабореЗаписей(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюНабораЗаписейОтбор(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + УдалитьРегистрациюВНабореЗаписейОтбор(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьВсеДанные(Команда) + ЗаполнитьКоличествоРегистрацийВДереве(); + ОбновитьСодержимоеСтраницы(); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюРезультатаЗапроса(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ОперацияСРезультатамиЗапроса(Истина); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюРезультатаЗапроса(Команда) + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ОперацияСРезультатамиЗапроса(Ложь); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьФормуНастроек(Команда) + ОткрытьФормуНастроекОбработки(); +КонецПроцедуры + +&НаКлиенте +Процедура РедактироватьНомерСообщенияОбъекта(Команда) + + Если Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница = Элементы.СтраницаКонстанты Тогда + РедактироватьНомерСообщенияКонстанты(); + + ИначеЕсли Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница = Элементы.СтраницаСписокСсылок Тогда + РедактироватьНомерСообщенияСсылки(); + + ИначеЕсли Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница = Элементы.СтраницаНаборЗаписей Тогда + РедактироватьНомерСообщенияСписокНаборов() + + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +&НаКлиенте +Процедура РедактироватьНомерСообщенияКонстанты() + ТекДанные = Элементы.СписокКонстант.ТекущиеДанные; + Если ТекДанные=Неопределено Тогда + Возврат; + КонецЕсли; + + НомерСообщения = ТекДанные.НомерСообщения; + Подсказка = НСтр("ru='Номер отправленного'"); + Если ВвестиЧисло(НомерСообщения, Подсказка) Тогда + + СообщитьОРезультатахРегистрации(НомерСообщения, + ИзменитьНомерСообщенияНаСервере(УзелОбменаСсылка, НомерСообщения, ТекДанные.МетаПолноеИмя)); + + Элементы.СписокКонстант.Обновить(); + ЗаполнитьКоличествоРегистрацийВДереве(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура РедактироватьНомерСообщенияСсылки() + ТекДанные = Элементы.СписокСсылок.ТекущиеДанные; + Если ТекДанные=Неопределено Тогда + Возврат; + КонецЕсли; + + НомерСообщения = ТекДанные.НомерСообщения; + Подсказка = НСтр("ru='Номер отправленного'"); + Если ВвестиЧисло(НомерСообщения, Подсказка) Тогда + + СообщитьОРезультатахРегистрации(НомерСообщения, + ИзменитьНомерСообщенияНаСервере(УзелОбменаСсылка, НомерСообщения, ТекДанные.Ссылка)); + + Элементы.СписокСсылок.Обновить(); + ЗаполнитьКоличествоРегистрацийВДереве(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура РедактироватьНомерСообщенияСписокНаборов() + ТекДанные = Элементы.СписокНаборовЗаписей.ТекущиеДанные; + Если ТекДанные=Неопределено Тогда + Возврат; + КонецЕсли; + + НомерСообщения = ТекДанные.НомерСообщения; + Подсказка = НСтр("ru='Номер отправленного'"); + Если ВвестиЧисло(НомерСообщения, Подсказка) Тогда + + ДанныеСтроки = Новый Структура; + ИменаКлючей = МассивИменКлючейНабораЗаписей(СписокНаборовЗаписейИмяТаблицы); + Для Каждого Имя Из ИменаКлючей Цикл + ДанныеСтроки.Вставить(Имя, ТекДанные["СписокНаборовЗаписей" + Имя]); + КонецЦикла; + + СообщитьОРезультатахРегистрации(НомерСообщения, + ИзменитьНомерСообщенияНаСервере(УзелОбменаСсылка, НомерСообщения, ДанныеСтроки, СписокНаборовЗаписейИмяТаблицы)); + + Элементы.СписокНаборовЗаписей.Обновить(); + ЗаполнитьКоличествоРегистрацийВДереве(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура НастроитьРедактированиеИзменений() + НастроитьРедактированиеИзмененийСервер(ТекущаяСтрокаМетаданных); +КонецПроцедуры + +&НаКлиенте +Процедура РазвернутьДеревоМетаданных() + Для Каждого Строка Из ДеревоМетаданных.ПолучитьЭлементы() Цикл + Элементы.ДеревоМетаданных.Развернуть( Строка.ПолучитьИдентификатор() ); + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура УстановитьЗаголовокНомеровСообщений() + + Текст = НСтр("ru='№ сообщений: отпр. %1, прин. %2'"); + + Данные = ПрочитатьНомераСообщений(); + Текст = СтрЗаменить(Текст, "%1", Формат(Данные.НомерОтправленного, "ЧДЦ=0; ЧН=")); + Текст = СтрЗаменить(Текст, "%2", Формат(Данные.НомерПринятого, "ЧДЦ=0; ЧН=")); + + Элементы.ФормаРедактироватьНомераСообщений.Заголовок = Текст; +КонецПроцедуры + +&НаСервере +Процедура ОбработкаВыбораУзлаОбмена() + + // Изменяем номера узлов в гиперссылке по редактированию + УстановитьЗаголовокНомеровСообщений(); + + // Обновляем дерево метаданных + ПрочитатьДеревоМетаданных(); + ЗаполнитьКоличествоРегистрацийВДереве(); + + // Обновляем активную страницу + ПоследняяАктивнаяКолонкаМетаданных = Неопределено; + ПоследняяАктивнаяСтрокаМетаданных = Неопределено; + Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница = Элементы.СтраницаПустая; + +КонецПроцедуры + +&НаКлиенте +Процедура СообщитьОРезультатахРегистрации(Команда, Результаты) + + Если ТипЗнч(Команда)=Тип("Булево") ТОгда + Если Команда Тогда + ЗаголовокПредупреждения = НСтр("ru='Регистрация изменений:'"); + ТекстПредупреждения = НСтр("ru='Зарегистрировано %1 изменений из %2 + |на узле ""%0""'"); + Иначе + ЗаголовокПредупреждения = НСтр("ru='Отмена регистрации:'"); + ТекстПредупреждения = НСтр("ru='Отменена регистрация %1 изменений + |на узле ""%0"".'"); + КонецЕсли; + Иначе + ЗаголовокПредупреждения = НСтр("ru='Изменение номера сообщения:'"); + ТекстПредупреждения = НСтр("ru='Номер сообщения изменен на %3 + |у %1 объекта(ов)'"); + КонецЕсли; + + ТекстПредупреждения = СтрЗаменить(ТекстПредупреждения, "%0", УзелОбменаСсылка); + ТекстПредупреждения = СтрЗаменить(ТекстПредупреждения, "%1", Формат(Результаты.Успешно, "ЧН=")); + ТекстПредупреждения = СтрЗаменить(ТекстПредупреждения, "%2", Формат(Результаты.Всего, "ЧН=")); + ТекстПредупреждения = СтрЗаменить(ТекстПредупреждения, "%3", Команда); + + Предупреждением = Результаты.Всего<>Результаты.Успешно; + Если Предупреждением Тогда + Предупреждение(ТекстПредупреждения,,ЗаголовокПредупреждения); + Иначе + ПоказатьОповещениеПользователя(ЗаголовокПредупреждения, + ПолучитьНавигационнуюСсылку(УзелОбменаСсылка), + ТекстПредупреждения, + Элементы.СкрытаяКартинкаИнформация32.Картинка); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция ПолучитьФормуВыбораРезультатаЗапроса() + + ТекущийОбъект = ЭтотОбъект(); + ТекущийОбъект.ПрочитатьНастройки(); + ЭтотОбъект(ТекущийОбъект); + + Проверка = ТекущийОбъект.ПроверитьКорректностьНастроек(); + ЭтотОбъект(ТекущийОбъект); + Если Проверка.НастройкаАдресВнешнейОбработкиЗапросов<>Неопределено Тогда + Возврат Неопределено; + ИначеЕсли ПустаяСтрока(ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов) Тогда + Возврат Неопределено; + ИначеЕсли НРег(Прав(СокрЛП(ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов), 4))=".epf" Тогда + Обработка = ВнешниеОбработки.Создать(ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов); + ИдентификаторФормы = ".ФормаОбъекта"; + Иначе + Обработка = Обработки[ТекущийОбъект.НастройкаАдресВнешнейОбработкиЗапросов].Создать(); + ИдентификаторФормы = ".Форма"; + КонецЕсли; + + Возврат Обработка.Метаданные().ПолноеИмя() + ИдентификаторФормы; +КонецФункции + +&НаКлиенте +Процедура ДобавитьРегистрациюКонстантыВСписке() + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.ВыборКонстанты"; + ТекПараметры = Новый Структура("УзелОбмена, МассивИменМетаданных, МассивПредставлений, МассивАвторегистрации", + УзелОбменаСсылка, + СтруктураИменМетаданных.Константы, + СтруктураПредставленийМетаданных.Константы, + СтруктураАвторегистрацииМетаданных.Константы); + ОткрытьФорму(ТекИмяФормы, ТекПараметры, Элементы.СписокКонстант); +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюКонстантыВСписке() + + Элемент = Элементы.СписокКонстант; + + СписокПредставлений = Новый Массив; + СписокИмен = Новый Массив; + Для Каждого Строка Из Элемент.ВыделенныеСтроки Цикл + Данные = Элемент.ДанныеСтроки(Строка); + СписокПредставлений.Добавить(Данные.Наименование); + СписокИмен.Добавить(Данные.МетаПолноеИмя); + КонецЦикла; + + Колво = СписокИмен.Количество(); + Если Колво=0 Тогда + Возврат; + ИначеЕсли Колво=1 Тогда + Текст = НСтр("ru='Отменить регистрацию ""%2"" + |на узле ""%1""?'"); + Иначе + Текст = НСтр("ru='Отменить регистрацию выбранных констант + |на узле ""%1""?'"); + КонецЕсли; + + ЗаголовокВопроса = НСтр("ru='Подтверждение'"); + + Текст = СтрЗаменить(Текст, "%1", УзелОбменаСсылка); + Текст = СтрЗаменить(Текст, "%2", СписокПредставлений[0]); + Ответ = Вопрос(Текст, РежимДиалогаВопрос.ДаНет,,,ЗаголовокВопроса); + Если Ответ=КодВозвратаДиалога.Да Тогда + СообщитьОРезультатахРегистрации(Ложь, + УдалитьРегистрациюНаСервере(Истина, УзелОбменаСсылка, СписокИмен)); + Элементы.СписокКонстант.Обновить(); + ЗаполнитьКоличествоРегистрацийВДереве(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюВСписокСсылок(ЭтоПодбор=Ложь) + ТекИмяФормы = ПолучитьИмяФормы(СписокСсылок) + "ФормаВыбора"; + ТекПараметры = Новый Структура("РежимВыбора, МножественныйВыбор, ЗакрыватьПриВыборе, ВыборГруппИЭлементов", + Истина, Истина, ЭтоПодбор, ИспользованиеГруппИЭлементов.ГруппыИЭлементы); + ОткрытьФорму(ТекИмяФормы, ТекПараметры, Элементы.СписокСсылок); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюУдаленияОбъектаВСписокСсылок() + Ссылка = СсылкаДляУдаленияОбъекта(); + ОбработкаВыбораДанных(Элементы.СписокСсылок, Ссылка); +КонецПроцедуры + +&НаСервере +Функция СсылкаДляУдаленияОбъекта(Знач УникальныйИдентификатор=Неопределено) + Описание = ЭтотОбъект().ХарактеристикиПоМетаданным(СписокСсылок.ОсновнаяТаблица); + Если УникальныйИдентификатор=Неопределено Тогда + Возврат Описание.Менеджер.ПолучитьСсылку(); + КонецЕсли; + Возврат Описание.Менеджер.ПолучитьСсылку(УникальныйИдентификатор); +КонецФункции + +&НаКлиенте +Процедура ДобавитьРегистрациюВСписокОтбор() + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.ВыборОбъектовОтбором"; + ТекПараметры = Новый Структура("ДействиеВыбора, ИмяТаблицы", + Истина, + ОсновнаяТаблицаДинамическогоСписка(СписокСсылок)); + ОткрытьФорму(ТекИмяФормы, ТекПараметры, Элементы.СписокСсылок); +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюВСпискеОтбор() + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.ВыборОбъектовОтбором"; + ТекПараметры = Новый Структура("ДействиеВыбора, ИмяТаблицы", + Ложь, + ОсновнаяТаблицаДинамическогоСписка(СписокСсылок)); + ОткрытьФорму(ТекИмяФормы, ТекПараметры, Элементы.СписокСсылок); +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюИзСпискаСсылок() + + Элемент = Элементы.СписокСсылок; + + СписокУдаления = Новый Массив; + Для Каждого Строка Из Элемент.ВыделенныеСтроки Цикл + Данные = Элемент.ДанныеСтроки(Строка); + СписокУдаления.Добавить(Данные.Ссылка); + КонецЦикла; + + Колво = СписокУдаления.Количество(); + Если Колво=0 Тогда + Возврат; + ИначеЕсли Колво=1 Тогда + Текст = НСтр("ru='Отменить регистрацию ""%2"" + |на узле ""%1""?'"); + Иначе + Текст = НСтр("ru='Отменить регистрацию выбранных объектов + |на узле ""%1""?'"); + КонецЕсли; + + ЗаголовокВопроса = НСтр("ru='Подтверждение'"); + + Текст = СтрЗаменить(Текст, "%1", УзелОбменаСсылка); + Текст = СтрЗаменить(Текст, "%2", СписокУдаления[0]); + Ответ = Вопрос(Текст, РежимДиалогаВопрос.ДаНет,,,ЗаголовокВопроса); + Если Ответ=КодВозвратаДиалога.Да Тогда + СообщитьОРезультатахРегистрации(Ложь, + УдалитьРегистрациюНаСервере(Истина, УзелОбменаСсылка, СписокУдаления)); + Элементы.СписокСсылок.Обновить(); + ЗаполнитьКоличествоРегистрацийВДереве(); + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюВНаборЗаписейОтбор() + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.ВыборОбъектовОтбором"; + ТекПараметры = Новый Структура("ДействиеВыбора, ИмяТаблицы", + Истина, + СписокНаборовЗаписейИмяТаблицы); + ОткрытьФорму(ТекИмяФормы, ТекПараметры, Элементы.СписокНаборовЗаписей); +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюВНабореЗаписей() + + СтруктураДанных = ""; + ИменаКлючей = МассивИменКлючейНабораЗаписей(СписокНаборовЗаписейИмяТаблицы); + Для Каждого Имя Из ИменаКлючей Цикл + СтруктураДанных = СтруктураДанных + "," + Имя; + КонецЦикла; + СтруктураДанных = Сред(СтруктураДанных, 2); + + Данные = Новый Массив; + Элемент = Элементы.СписокНаборовЗаписей; + Для Каждого Строка Из Элемент.ВыделенныеСтроки Цикл + ТекДанные = Элемент.ДанныеСтроки(Строка); + ДанныеСтроки = Новый Структура; + Для Каждого Имя Из ИменаКлючей Цикл + ДанныеСтроки.Вставить(Имя, ТекДанные["СписокНаборовЗаписей" + Имя]); + КонецЦикла; + Данные.Добавить(ДанныеСтроки); + КонецЦикла; + + Если Данные.Количество()=0 Тогда + Возврат; + КонецЕсли; + + Выбор = Новый Структура("ИмяТаблицы, ДанныеВыбора, ДействиеВыбора, СтруктураПолей", + СписокНаборовЗаписейИмяТаблицы, + Данные, + Ложь, + СтруктураДанных); + + ОбработкаВыбораДанных(Элементы.СписокНаборовЗаписей, Выбор); +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюВНабореЗаписейОтбор() + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.ВыборОбъектовОтбором"; + ТекПараметры = Новый Структура("ДействиеВыбора, ИмяТаблицы", + Ложь, + СписокНаборовЗаписейИмяТаблицы); + ОткрытьФорму(ТекИмяФормы, ТекПараметры, Элементы.СписокНаборовЗаписей); +КонецПроцедуры + +&НаКлиенте +Процедура ДобавитьРегистрациюВыделенныхОбъектов(БезУчетаАвторегистрации=Истина) + + Данные = ПолучитьВыбранныеИменаМетаданных(БезУчетаАвторегистрации); + Колво = Данные.МетаИмена.Количество(); + Если Колво=0 Тогда + // Текущая строка + Данные = ПолучитьИменаМетаданныхТекущейСтроки(БезУчетаАвторегистрации); + КонецЕсли; + + Текст = НСтр("ru='Зарегистрировать %1 для выгрузки на узле ""%2""? + | + |Изменение регистрации большого количества объектов может занять продолжительное время!'"); + + ЗаголовокВопроса = НСтр("ru='Подтверждение'"); + + Текст = СтрЗаменить(Текст, "%1", Данные.Описание); + Текст = СтрЗаменить(Текст, "%2", УзелОбменаСсылка); + Ответ = Вопрос(Текст, РежимДиалогаВопрос.ДаНет, , , ЗаголовокВопроса); + Если Ответ<>КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + Результат = ДобавитьРегистрациюНаСервере(БезУчетаАвторегистрации, УзелОбменаСсылка, Данные.МетаИмена); + ЗаполнитьКоличествоРегистрацийВДереве(); + ОбновитьСодержимоеСтраницы(); + СообщитьОРезультатахРегистрации(Истина, Результат); + +КонецПроцедуры + +&НаКлиенте +Процедура УдалитьРегистрациюВыделенныхОбъектов(БезУчетаАвторегистрации=Истина) + + Данные = ПолучитьВыбранныеИменаМетаданных(БезУчетаАвторегистрации); + Колво = Данные.МетаИмена.Количество(); + Если Колво=0 Тогда + Данные = ПолучитьИменаМетаданныхТекущейСтроки(БезУчетаАвторегистрации); + КонецЕсли; + + Текст = НСтр("ru='Отменить регистрацию %1 для выгрузки на узле ""%2""? + | + |Изменение регистрации большого количества объектов может занять продолжительное время!'"); + + ЗаголовокВопроса = НСтр("ru='Подтверждение'"); + + Текст = СтрЗаменить(Текст, "%1", Данные.Описание); + Текст = СтрЗаменить(Текст, "%2", УзелОбменаСсылка); + Ответ = Вопрос(Текст, РежимДиалогаВопрос.ДаНет, , , ЗаголовокВопроса); + Если Ответ<>КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + + СообщитьОРезультатахРегистрации(Ложь, + УдалитьРегистрациюНаСервере(БезУчетаАвторегистрации, УзелОбменаСсылка, Данные.МетаИмена)); + ЗаполнитьКоличествоРегистрацийВДереве(); + ОбновитьСодержимоеСтраницы(); +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбораДанных(ТаблицаФормы, ВыбранноеЗначение) + + Ссылка = Неопределено; + Тип = ТипЗнч(ВыбранноеЗначение); + + Если Тип=Тип("Структура") Тогда + ИмяТаблицы = ВыбранноеЗначение.ИмяТаблицы; + Действие = ВыбранноеЗначение.ДействиеВыбора; + Данные = ВыбранноеЗначение.ДанныеВыбора; + Иначе + ИмяТаблицы = Неопределено; + Действие = Истина; + Если Тип=Тип("Массив") Тогда + Данные = ВыбранноеЗначение; + Иначе + Данные = Новый Массив; + Данные.Добавить(ВыбранноеЗначение); + КонецЕсли; + + Если Данные.Количество()=1 Тогда + Ссылка = Данные[0]; + КонецЕсли; + КонецЕсли; + + Если Действие Тогда + Результат = ДобавитьРегистрациюНаСервере(Истина, УзелОбменаСсылка, Данные, ИмяТаблицы); + Иначе + Если Ссылка=Неопределено Тогда + Текст = НСтр("ru='Отменить регистрацию выбранных объектов + |на узле ""%1?'"); + Иначе + Текст = НСтр("ru='Отменить регистрацию ""%2"" + |на узле ""%1?'"); + КонецЕсли; + + Текст = СтрЗаменить(Текст, "%1", УзелОбменаСсылка); + Текст = СтрЗаменить(Текст, "%2", Ссылка); + Ответ = Вопрос(Текст, РежимДиалогаВопрос.ДаНет,,,"Подтверждение"); + Если Ответ<>КодВозвратаДиалога.Да Тогда + Возврат; + КонецЕсли; + Результат = УдалитьРегистрациюНаСервере(Истина, УзелОбменаСсылка, Данные, ИмяТаблицы); + КонецЕсли; + + ТаблицаФормы.Обновить(); + ЗаполнитьКоличествоРегистрацийВДереве(); + СообщитьОРезультатахРегистрации(Действие, Результат); + + ТаблицаФормы.ТекущаяСтрока = Ссылка; +КонецПроцедуры + +&НаСервере +Процедура ОбновитьСодержимоеСтраницы(Страница=Неопределено) + ТекСтр = ?(Страница=Неопределено, Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница, Страница); + + Если ТекСтр=Элементы.СтраницаСписокСсылок Тогда + Элементы.СписокСсылок.Обновить(); + + ИначеЕсли ТекСтр=Элементы.СтраницаКонстанты Тогда + Элементы.СписокКонстант.Обновить(); + + ИначеЕсли ТекСтр=Элементы.СтраницаНаборЗаписей Тогда + Элементы.СписокНаборовЗаписей.Обновить(); + + ИначеЕсли ТекСтр=Элементы.СтраницаПустая Тогда + Строка = Элементы.ДеревоМетаданных.ТекущаяСтрока; + Если Строка<>Неопределено Тогда + Данные = ДеревоМетаданных.НайтиПоИдентификатору(Строка); + Если Данные<>Неопределено Тогда + НастроитьПустуюСтраницу(Данные.Наименование, Данные.МетаПолноеИмя); + КонецЕсли; + КонецЕсли; + КонецЕсли; +КонецПроцедуры + +&НаКлиенте +Функция ПолучитьТекущийОбъектРедактирования() + + ТекСтр = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; + + Если ТекСтр=Элементы.СтраницаСписокСсылок Тогда + Данные = Элементы.СписокСсылок.ТекущиеДанные; + Если Данные<>Неопределено Тогда + Возврат Данные.Ссылка; + КонецЕсли; + + ИначеЕсли ТекСтр=Элементы.СтраницаКонстанты Тогда + Данные = Элементы.СписокКонстант.ТекущиеДанные; + Если Данные<>Неопределено Тогда + Возврат Данные.МетаПолноеИмя; + КонецЕсли; + + ИначеЕсли ТекСтр=Элементы.СтраницаНаборЗаписей Тогда + Данные = Элементы.СписокНаборовЗаписей.ТекущиеДанные; + Если Данные<>Неопределено Тогда + Результат = Новый Структура; + Измерения = МассивИменКлючейНабораЗаписей(СписокНаборовЗаписейИмяТаблицы); + Для Каждого Имя Из Измерения Цикл + Результат.Вставить(Имя, Данные["СписокНаборовЗаписей" + Имя]); + КонецЦикла; + КонецЕсли; + Возврат Результат; + + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +&НаКлиенте +Процедура ОткрытьФормуНастроекОбработки() + ТекИмяФормы = ПолучитьИмяФормы() + "Форма.Настройки"; + ОткрытьФорму(ТекИмяФормы, , ЭтаФорма); +КонецПроцедуры + +&НаКлиенте +Процедура ОперацияСРезультатамиЗапроса(КомандаОперации) + + ТекИмяФормы = ПолучитьФормуВыбораРезультатаЗапроса(); + Если ТекИмяФормы<>Неопределено Тогда + // Открываем + Если КомандаОперации Тогда + Текст = НСтр("ru='Регистрация изменений результата запроса'"); + Иначе + Текст = НСтр("ru='Отмена регистрации изменений результата запроса'"); + КонецЕсли; + ОткрытьФорму(ТекИмяФормы, + Новый Структура("Заголовок, ДействиеВыбора, РежимВыбора, ЗакрыватьПриВыборе, ", + Текст, КомандаОперации, Истина, Ложь + ), ЭтаФорма); + Возврат; + КонецЕсли; + + // Не настроено или что-то поломано, предлагаем выбрать + ЗаголовокВопроса = НСтр("ru='Настройки'"); + ТекстВопроса = НСтр("ru='В настройках не указана обработка для выполнения запросов. + |Настроить сейчас?'"); + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет,,,ЗаголовокВопроса); + Если Ответ=КодВозвратаДиалога.Да Тогда + ОткрытьФормуНастроекОбработки(); + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция ЗакавычитьСтроку(Строка) + Возврат СтрЗаменить(Строка, """", """"""); +КонецФункции + +&НаСервере +Функция ЭтотОбъект(ТекущийОбъект=Неопределено) + Если ТекущийОбъект=Неопределено Тогда + Возврат РеквизитФормыВЗначение("Объект"); + КонецЕсли; + ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект"); + Возврат Неопределено; +КонецФункции + +&НаСервере +Функция ПолучитьИмяФормы(ТекущийОбъект=Неопределено) + Возврат ЭтотОбъект().ПолучитьИмяФормы(ТекущийОбъект); +КонецФункции + +&НаСервере +Функция ОсновнаяТаблицаДинамическогоСписка(РеквизитФормы) + Возврат РеквизитФормы.ОсновнаяТаблица; +КонецФункции + +&НаСервере +Процедура ИзменениеПометки(Строка) + ЭлементДанных = ДеревоМетаданных.НайтиПоИдентификатору(Строка); + ЭтотОбъект().ИзменениеПометки(ЭлементДанных); +КонецПроцедуры + +&НаСервере +Процедура ПрочитатьДеревоМетаданных() + Данные = ЭтотОбъект().СформироватьСтруктуруМетаданных(УзелОбменаСсылка); + + // Удаляем строки, которые нельзя редактировать + МетаДерево = Данные.Дерево; + Для Каждого ЭлементСписка Из ИменаСкрываемыхМетаданных Цикл + УдалитьСтрокиДереваЗначенийМетаданных(ЭлементСписка.Значение, МетаДерево.Строки); + КонецЦикла; + + ЗначениеВРеквизитФормы(МетаДерево, "ДеревоМетаданных"); + СтруктураАвторегистрацииМетаданных = Данные.СтруктураАвторегистрации; + СтруктураПредставленийМетаданных = Данные.СтруктураПредставлений; + СтруктураИменМетаданных = Данные.СтруктураИмен; +КонецПроцедуры + +&НаСервере +Процедура УдалитьСтрокиДереваЗначенийМетаданных(Знач МетаПолноеИмя, СтрокиДерева) + Если ПустаяСтрока(МетаПолноеИмя) Тогда + Возврат; + КонецЕсли; + + // В текущем наборе + Фильтр = Новый Структура("МетаПолноеИмя", МетаПолноеИмя); + Для Каждого СтрокаУдаления Из СтрокиДерева.НайтиСтроки(Фильтр, Ложь) Цикл + СтрокиДерева.Удалить(СтрокаУдаления); + КонецЦикла; + + // И из оставшихся иерархически + Для Каждого СтрокаДерева Из СтрокиДерева Цикл + УдалитьСтрокиДереваЗначенийМетаданных(МетаПолноеИмя, СтрокаДерева.Строки); + КонецЦикла; +КонецПроцедуры + +&НаСервере +Процедура ФорматироватьКоличествоИзменений(Строка) + Строка.КоличествоИзмененийСтрокой = Формат(Строка.КоличествоИзменений, "ЧН=") + " / " + Формат(Строка.КоличествоНеВыгруженных, "ЧН="); +КонецПроцедуры + +&НаСервере +Процедура ЗаполнитьКоличествоРегистрацийВДереве() + + Данные = ЭтотОбъект().ПолучитьКоличествоИзменений(СтруктураИменМетаданных, УзелОбменаСсылка); + + // Проставляем в дерево + Фильтр = Новый Структура("МетаПолноеИмя, УзелОбмена", Неопределено, УзелОбменаСсылка); + Нули = Новый Структура("КоличествоИзменений, КоличествоВыгруженных, КоличествоНеВыгруженных", 0,0,0); + + Для Каждого Корень Из ДеревоМетаданных.ПолучитьЭлементы() Цикл + СуммаКорень = Новый Структура("КоличествоИзменений, КоличествоВыгруженных, КоличествоНеВыгруженных", 0,0,0); + + Для Каждого Группа Из Корень.ПолучитьЭлементы() Цикл + СуммаГруппа = Новый Структура("КоличествоИзменений, КоличествоВыгруженных, КоличествоНеВыгруженных", 0,0,0); + + СписокУзлов = Группа.ПолучитьЭлементы(); + Если СписокУзлов.Количество()=0 И СтруктураИменМетаданных.Свойство(Группа.МетаПолноеИмя) Тогда + // Коллекция узлов без узлов, просуммируем руками, авторегистрацию возьмем из структуры + Для Каждого МетаИмя Из СтруктураИменМетаданных[Группа.МетаПолноеИмя] Цикл + Фильтр.МетаПолноеИмя = МетаИмя; + Найдено = Данные.НайтиСтроки(Фильтр); + Если Найдено.Количество()>0 Тогда + Строка = Найдено[0]; + СуммаГруппа.КоличествоИзменений = СуммаГруппа.КоличествоИзменений + Строка.КоличествоИзменений; + СуммаГруппа.КоличествоВыгруженных = СуммаГруппа.КоличествоВыгруженных + Строка.КоличествоВыгруженных; + СуммаГруппа.КоличествоНеВыгруженных = СуммаГруппа.КоличествоНеВыгруженных + Строка.КоличествоНеВыгруженных; + КонецЕсли; + КонецЦикла; + + Иначе + // Считаем по каждому узлу + Для Каждого Узел Из СписокУзлов Цикл + Фильтр.МетаПолноеИмя = Узел.МетаПолноеИмя; + Найдено = Данные.НайтиСтроки(Фильтр); + Если Найдено.Количество()>0 Тогда + Строка = Найдено[0]; + ЗаполнитьЗначенияСвойств(Узел, Строка, "КоличествоИзменений, КоличествоВыгруженных, КоличествоНеВыгруженных"); + СуммаГруппа.КоличествоИзменений = СуммаГруппа.КоличествоИзменений + Строка.КоличествоИзменений; + СуммаГруппа.КоличествоВыгруженных = СуммаГруппа.КоличествоВыгруженных + Строка.КоличествоВыгруженных; + СуммаГруппа.КоличествоНеВыгруженных = СуммаГруппа.КоличествоНеВыгруженных + Строка.КоличествоНеВыгруженных; + Иначе + ЗаполнитьЗначенияСвойств(Узел, Нули); + КонецЕсли; + + ФорматироватьКоличествоИзменений(Узел); + КонецЦикла; + + КонецЕсли; + ЗаполнитьЗначенияСвойств(Группа, СуммаГруппа); + + СуммаКорень.КоличествоИзменений = СуммаКорень.КоличествоИзменений + Группа.КоличествоИзменений; + СуммаКорень.КоличествоВыгруженных = СуммаКорень.КоличествоВыгруженных + Группа.КоличествоВыгруженных; + СуммаКорень.КоличествоНеВыгруженных = СуммаКорень.КоличествоНеВыгруженных + Группа.КоличествоНеВыгруженных; + + ФорматироватьКоличествоИзменений(Группа); + КонецЦикла; + + ЗаполнитьЗначенияСвойств(Корень, СуммаКорень); + + ФорматироватьКоличествоИзменений(Корень); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Функция ИзменитьРегистрациюРезультатаЗапросаСервер(Команда, Адрес) + + Результат = ПолучитьИзВременногоХранилища(Адрес); + Результат= Результат[Результат.ВГраница()]; + Данные = Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"); + + Если Команда Тогда + Возврат ДобавитьРегистрациюНаСервере(Истина, УзелОбменаСсылка, Данные); + КонецЕсли; + + Возврат УдалитьРегистрациюНаСервере(Истина, УзелОбменаСсылка, Данные); +КонецФункции + +&НаСервере +Функция КонтрольСсылокДляВыбораЗапросом(Адрес) + + Результат = ?(Адрес=Неопределено, Неопределено, ПолучитьИзВременногоХранилища(Адрес)); + Если ТипЗнч(Результат)=Тип("Массив") Тогда + Результат = Результат[Результат.ВГраница()]; + Если Результат.Колонки.Найти("Ссылка")=Неопределено Тогда + Возврат НСтр("ru='В последнем результате запроса отсутствует колонка ""Ссылка""'"); + КонецЕсли; + Иначе + Возврат НСтр("ru='Ошибка получения данных результата запроса'"); + КонецЕсли; + + Возврат ""; +КонецФункции + +&НаСервере +Процедура НастроитьРедактированиеИзмененийСервер(ТекущаяСтрока) + + Данные = ДеревоМетаданных.НайтиПоИдентификатору(ТекущаяСтрока); + Если Данные=Неопределено Тогда + Возврат; + КонецЕсли; + + ИмяТаблицы = Данные.МетаПолноеИмя; + Наименование = Данные.Наименование; + ТекущийОбъект = ЭтотОбъект(); + + Если ПустаяСтрока(ИмяТаблицы) Тогда + Мета = Неопределено; + Иначе + Мета = ТекущийОбъект.МетаданныеПоПолномуИмени(ИмяТаблицы); + КонецЕсли; + + Если Мета=Неопределено Тогда + НастроитьПустуюСтраницу(Наименование, ИмяТаблицы); + НовСтраница = Элементы.СтраницаПустая; + + ИначеЕсли Мета=Метаданные.Константы Тогда + // Все константы системы + НастроитьСписокКонстант(); + НовСтраница = Элементы.СтраницаКонстанты; + + ИначеЕсли ТипЗнч(Мета)=Тип("КоллекцияОбъектовМетаданных") Тогда + // Все справочники, документы, и т.п. + НастроитьПустуюСтраницу(Наименование, ИмяТаблицы); + НовСтраница = Элементы.СтраницаПустая; + + ИначеЕсли Метаданные.Константы.Содержит(Мета) Тогда + // Одиночная константа + НастроитьСписокКонстант(ИмяТаблицы, Наименование); + НовСтраница = Элементы.СтраницаКонстанты; + + ИначеЕсли Метаданные.Справочники.Содержит(Мета) + Или Метаданные.Документы.Содержит(Мета) + Или Метаданные.ПланыВидовХарактеристик.Содержит(Мета) + Или Метаданные.ПланыСчетов.Содержит(Мета) + Или Метаданные.ПланыВидовРасчета.Содержит(Мета) + Или Метаданные.БизнесПроцессы.Содержит(Мета) + Или Метаданные.Задачи.Содержит(Мета) + Тогда + // Ссылочный тип + НастроитьСписокСсылок(ИмяТаблицы, Наименование); + НовСтраница = Элементы.СтраницаСписокСсылок; + + Иначе + // Проверим на набор записей + Измерения = ТекущийОбъект.ИзмеренияНабораЗаписей(ИмяТаблицы); + Если Измерения<>Неопределено Тогда + НастроитьНаборЗаписей(ИмяТаблицы, Измерения, Наименование); + НовСтраница = Элементы.СтраницаНаборЗаписей; + Иначе + НастроитьПустуюСтраницу(Наименование, ИмяТаблицы); + НовСтраница = Элементы.СтраницаПустая; + КонецЕсли; + + КонецЕсли; + + Элементы.СтраницаКонстанты.Видимость = Ложь; + Элементы.СтраницаСписокСсылок.Видимость = Ложь; + Элементы.СтраницаНаборЗаписей.Видимость = Ложь; + Элементы.СтраницаПустая.Видимость = Ложь; + + Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница = НовСтраница; + НовСтраница.Видимость = Истина; + + НастроитьВидимостьКомандОбщегоМеню(); +КонецПроцедуры + +// Вывод изменений для ссылочного типа (cправочник, документ, план видов характеристик, +// план счетов, вид расчета, бизнес-процессы, задачи) +// +&НаСервере +Процедура НастроитьСписокСсылок(ИмяТаблицы, Наименование) + + СписокСсылок.ТекстЗапроса = " + |ВЫБРАТЬ + | ТаблицаИзменений.Ссылка КАК Ссылка, + | ТаблицаИзменений.НомерСообщения КАК НомерСообщения, + | ВЫБОР + | КОГДА ТаблицаИзменений.НомерСообщения ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК НеВыгружалось, + | + | ОсновнаяТаблица.Ссылка КАК СсылкаОбъекта + |ИЗ + | " + ИмяТаблицы + " КАК ОсновнаяТаблица + |ПРАВОЕ СОЕДИНЕНИЕ + | " + ИмяТаблицы + ".Изменения КАК ТаблицаИзменений + |ПО + | ОсновнаяТаблица.Ссылка = ТаблицаИзменений.Ссылка + |ГДЕ + | ТаблицаИзменений.Узел = &ВыбранныйУзел + |"; + + СписокСсылок.Параметры.УстановитьЗначениеПараметра("ВыбранныйУзел", УзелОбменаСсылка); + СписокСсылок.ОсновнаяТаблица = ИмяТаблицы; + СписокСсылок.ДинамическоеСчитываниеДанных = Истина; + + // Представление объекта + Мета = ЭтотОбъект().МетаданныеПоПолномуИмени(ИмяТаблицы); + ТекЗаголовок = Мета.ПредставлениеОбъекта; + Если ПустаяСтрока(ТекЗаголовок) Тогда + ТекЗаголовок = Наименование; + КонецЕсли; + Элементы.СписокСсылокСсылкаПредставление.Заголовок = ТекЗаголовок; +КонецПроцедуры + +// Вывод изменений для констант +// +&НаСервере +Процедура НастроитьСписокКонстант(ИмяТаблицы=Неопределено, Наименование="") + + Если ИмяТаблицы=Неопределено Тогда + // Все константы + Имена = СтруктураИменМетаданных.Константы; + Представления = СтруктураПредставленийМетаданных.Константы; + Авторегистрация = СтруктураАвторегистрацииМетаданных.Константы; + Иначе + Имена = Новый Массив; + Имена.Добавить(ИмяТаблицы); + Представления = Новый Массив; + Представления.Добавить(Наименование); + Индекс = СтруктураИменМетаданных.Константы.Найти(ИмяТаблицы); + Авторегистрация = Новый Массив; + Авторегистрация.Добавить(СтруктураАвторегистрацииМетаданных.Константы[Индекс]); + КонецЕсли; + + // И помнить про ограничение на количество таблиц + Текст = ""; + Для Индекс=0 По Имена.ВГраница() Цикл + Имя = Имена[Индекс]; + Текст = Текст + ?(Текст="", "ВЫБРАТЬ", "ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ") + " + | " + Формат(Авторегистрация[Индекс], "ЧН=; ЧГ=") + " КАК ИндексКартинкиАвторегистрация, + | 2 КАК ИндексКартинки, + | + | """ + ЗакавычитьСтроку(Представления[Индекс]) + """ КАК Наименование, + | """ + Имя + """ КАК МетаПолноеИмя, + | + | ТаблицаИзменений.НомерСообщения КАК НомерСообщения, + | ВЫБОР + | КОГДА ТаблицаИзменений.НомерСообщения ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК НеВыгружалось + |ИЗ + | " + Имя + ".Изменения КАК ТаблицаИзменений + |ГДЕ + | ТаблицаИзменений.Узел=&ВыбранныйУзел + |"; + КонецЦикла; + + СписокКонстант.ТекстЗапроса = " + |ВЫБРАТЬ + | ИндексКартинкиАвторегистрация, ИндексКартинки, МетаПолноеИмя, НеВыгружалось, + | Наименование, НомерСообщения + | + |{ВЫБРАТЬ + | ИндексКартинкиАвторегистрация, ИндексКартинки, + | Наименование, МетаПолноеИмя, + | НомерСообщения, НеВыгружалось + |} + | + |ИЗ (" + Текст + ") Данные + | + |{ГДЕ + | Наименование, НомерСообщения, НеВыгружалось + |} + |"; + + ЭлементыСписка = СписокКонстант.Порядок.Элементы; + Если ЭлементыСписка.Количество()=0 Тогда + Элемент = ЭлементыСписка.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + Элемент.Поле = Новый ПолеКомпоновкиДанных("Наименование"); + Элемент.Использование = Истина; + КонецЕсли; + + СписокКонстант.Параметры.УстановитьЗначениеПараметра("ВыбранныйУзел", УзелОбменаСсылка); + СписокКонстант.ДинамическоеСчитываниеДанных = Истина; +КонецПроцедуры + +// Вывод заглушки с пустой страницей. +&НаСервере +Процедура НастроитьПустуюСтраницу(Наименование, ИмяТаблицы=Неопределено) + + Если ИмяТаблицы=Неопределено Тогда + ТекстКоличеств = ""; + Иначе + Дерево = РеквизитФормыВЗначение("ДеревоМетаданных"); + Строка = Дерево.Строки.Найти(ИмяТаблицы, "МетаПолноеИмя", Истина); + Если Строка<>НеопреДелено Тогда + ТекстКоличеств = НСтр("ru='Зарегистрировано объектов: %1 + |Выгружено объектов: %2 + |Не выгружено объектов: %3 + |'"); + + ТекстКоличеств = СтрЗаменить(ТекстКоличеств, "%1", Формат(Строка.КоличествоИзменений, "ЧДЦ=0; ЧН=")); + ТекстКоличеств = СтрЗаменить(ТекстКоличеств, "%2", Формат(Строка.КоличествоВыгруженных, "ЧДЦ=0; ЧН=")); + ТекстКоличеств = СтрЗаменить(ТекстКоличеств, "%3", Формат(Строка.КоличествоНевыгруженных, "ЧДЦ=0; ЧН=")); + КонецЕсли; + КонецЕсли; + + Текст = НСтр("ru='%1. + | + |%2 + |Для регистрации или отмены регистрации обмена данными на узле + |""%3"" + |выберите тип объекта слева в дереве метаданных и воспользуйтесь + |командами ""Зарегистрировать"" или ""Отменить регистрацию""'"); + + Текст = СтрЗаменить(Текст, "%1", Наименование); + Текст = СтрЗаменить(Текст, "%2", ТекстКоличеств); + Текст = СтрЗаменить(Текст, "%3", УзелОбменаСсылка); + Элементы.ДекорацияПустаяСтраница.Заголовок = Текст; +КонецПроцедуры + +// Вывод изменений для наборов записей +// +&НаСервере +Процедура НастроитьНаборЗаписей(ИмяТаблицы, Измерения, Наименование) + + ТекстВыбора = ""; + Префикс = "СписокНаборовЗаписей"; + Для Каждого Строка Из Измерения Цикл + Имя = Строка.Имя; + ТекстВыбора = ТекстВыбора + ",ТаблицаИзменений." + Имя + " КАК " + Префикс + Имя + Символы.ПС; + // Чтобы не наступить на измерение "НомерСообщения" или "НеВыгружалось" + Строка.Имя = Префикс + Имя; + КонецЦикла; + + СписокНаборовЗаписей.ТекстЗапроса = " + |ВЫБРАТЬ + | ТаблицаИзменений.НомерСообщения КАК НомерСообщения, + | ВЫБОР + | КОГДА ТаблицаИзменений.НомерСообщения ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК НеВыгружалось + | + | " + ТекстВыбора + " + |ИЗ + | " + ИмяТаблицы + ".Изменения КАК ТаблицаИзменений + |ГДЕ + | ТаблицаИзменений.Узел = &ВыбранныйУзел + |"; + СписокНаборовЗаписей.Параметры.УстановитьЗначениеПараметра("ВыбранныйУзел", УзелОбменаСсылка); + + // Добавляем в группу измерений + ЭтотОбъект().ДобавитьКолонкиВТаблицуФормы( + Элементы.СписокНаборовЗаписей, + "НомерСообщения, НеВыгружалось, + |Порядок, Отбор, Группировка, СтандартнаяКартинка, Параметры, УсловноеОформление", + Измерения, + Элементы.СписокНаборовЗаписейГруппаИзмерений); + СписокНаборовЗаписей.ДинамическоеСчитываниеДанных = Истина; + СписокНаборовЗаписейИмяТаблицы = ИмяТаблицы; +КонецПроцедуры + +// Общий отбор по полю "НомерСообщения" +// +&НаСервере +Процедура УстановитьОтборПоНомеруСообщения(ДинамоСписок, Вариант) + + Поле = Новый ПолеКомпоновкиДанных("НеВыгружалось"); + // Ищем свое поле, попутно отключаем все по нему + ЭлементыСписка = ДинамоСписок.Отбор.Элементы; + Индекс = ЭлементыСписка.Количество(); + Пока Индекс>0 Цикл + Индекс = Индекс - 1; + Элемент = ЭлементыСписка[Индекс]; + Если Элемент.ЛевоеЗначение=Поле Тогда + ЭлементыСписка.Удалить(Элемент); + КонецЕсли; + КонецЦикла; + + ЭлементОтбора = ЭлементыСписка.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); + ЭлементОтбора.ЛевоеЗначение = Поле; + ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; + ЭлементОтбора.Использование = Ложь; + ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + + Если Вариант=1 Тогда // Выгруженные + ЭлементОтбора.ПравоеЗначение = Ложь; + ЭлементОтбора.Использование = Истина; + + ИначеЕсли Вариант=2 Тогда // Не выгруженные + ЭлементОтбора.ПравоеЗначение = Истина; + ЭлементОтбора.Использование = Истина; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура НастроитьВидимостьКомандОбщегоМеню() + + ТекСтр = Элементы.ВариантыСпискаОбъектов.ТекущаяСтраница; + + Если ТекСтр=Элементы.СтраницаКонстанты Тогда + Элементы.ФормаДобавитьРегистрациюОдногоОбъекта.Доступность = Истина; + Элементы.ФормаДобавитьРегистрациюОтбор.Доступность = Ложь; + Элементы.ФормаУдалитьРегистрациюОдногоОбъекта.Доступность = Истина; + Элементы.ФормаУдалитьРегистрациюОтбор.Доступность = Ложь; + + ИначеЕсли ТекСтр=Элементы.СтраницаСписокСсылок Тогда + Элементы.ФормаДобавитьРегистрациюОдногоОбъекта.Доступность = Истина; + Элементы.ФормаДобавитьРегистрациюОтбор.Доступность = Истина; + Элементы.ФормаУдалитьРегистрациюОдногоОбъекта.Доступность = Истина; + Элементы.ФормаУдалитьРегистрациюОтбор.Доступность = Истина; + + ИначеЕсли ТекСтр=Элементы.СтраницаНаборЗаписей Тогда + Элементы.ФормаДобавитьРегистрациюОдногоОбъекта.Доступность = Истина; + Элементы.ФормаДобавитьРегистрациюОтбор.Доступность = Ложь; + Элементы.ФормаУдалитьРегистрациюОдногоОбъекта.Доступность = Истина; + Элементы.ФормаУдалитьРегистрациюОтбор.Доступность = Ложь; + + Иначе + Элементы.ФормаДобавитьРегистрациюОдногоОбъекта.Доступность = Ложь; + Элементы.ФормаДобавитьРегистрациюОтбор.Доступность = Ложь; + Элементы.ФормаУдалитьРегистрациюОдногоОбъекта.Доступность = Ложь; + Элементы.ФормаУдалитьРегистрациюОтбор.Доступность = Ложь; + + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция МассивИменКлючейНабораЗаписей(ИмяТаблицы, ПрефиксИмен="") + Результат = Новый Массив; + Измерения = ЭтотОбъект().ИзмеренияНабораЗаписей(ИмяТаблицы); + Если Измерения<>Неопределено Тогда + Для Каждого Строка Из Измерения Цикл + Результат.Добавить(ПрефиксИмен + Строка.Имя); + КонецЦикла; + КонецЕсли; + Возврат Результат; +КонецФункции + +&НаСервере +Функция МенеджерПоМетаданным(ИмяТаблицы) + Описание = ЭтотОбъект().ХарактеристикиПоМетаданным(ИмяТаблицы); + Если Описание<>Неопределено Тогда + Возврат Описание.Менеджер; + КонецЕсли; + Возврат Неопределено; +КонецФункции + +&НаСервере +Функция ТекстСериализации(Сериализация) + + Текст = Новый ТекстовыйДокумент; + + Запись = Новый ЗаписьXML; + Для Каждого Элемент Из Сериализация Цикл + Запись.УстановитьСтроку("UTF-16"); + Значение = Неопределено; + + Если Элемент.ФлагТипа=1 Тогда + // Метаданные + Менеджер = МенеджерПоМетаданным(Элемент.Данные); + Значение = Менеджер.СоздатьМенеджерЗначения(); + + ИначеЕсли Элемент.ФлагТипа=2 Тогда + // Набор данных с отбором + Менеджер = МенеджерПоМетаданным(СписокНаборовЗаписейИмяТаблицы); + Значение = Менеджер.СоздатьНаборЗаписей(); + Отбор = Значение.Отбор; + Для Каждого ИмяЗначение Из Элемент.Данные Цикл + Отбор[ИмяЗначение.Ключ].Установить(ИмяЗначение.Значение); + КонецЦикла; + Значение.Прочитать(); + + ИначеЕсли Элемент.ФлагТипа=3 Тогда + // Ссылка + Значение = Элемент.Данные.ПолучитьОбъект(); + Если Значение=Неопределено Тогда + Значение = Новый УдалениеОбъекта(Элемент.Данные); + КонецЕсли; + КонецЕсли; + + ЗаписатьXML(Запись, Значение); + Текст.ДобавитьСтроку(Запись.Закрыть()); + КонецЦикла; + + Возврат Текст; +КонецФункции + +&НаСервере +Функция УдалитьРегистрациюНаСервере(БезУчетаАвторегистрации, Узел, Удаляемые, ИмяТаблицы=Неопределено) + Возврат ЭтотОбъект().ИзменитьРегистрациюНаСервере(Ложь, БезУчетаАвторегистрации, Узел, Удаляемые, ИмяТаблицы); +КонецФункции + +&НаСервере +Функция ДобавитьРегистрациюНаСервере(БезУчетаАвторегистрации, Узел, Добавляемые, ИмяТаблицы=Неопределено) + Возврат ЭтотОбъект().ИзменитьРегистрациюНаСервере(Истина, БезУчетаАвторегистрации, Узел, Добавляемые, ИмяТаблицы); +КонецФункции + +&НаСервере +Функция ИзменитьНомерСообщенияНаСервере(Узел, НомерСообщения, Данные, ИмяТаблицы=Неопределено) + Возврат ЭтотОбъект().ИзменитьРегистрациюНаСервере(НомерСообщения, Истина, Узел, Данные, ИмяТаблицы); +КонецФункции + +&НаСервере +Функция ПолучитьОписаниеВыбранныхМетаданных(БезУчетаАвторегистрации, МетаИмяГруппа=Неопределено, МетаИмяУзел=Неопределено) + + Если МетаИмяГруппа=Неопределено И МетаИмяУзел=Неопределено Тогда + // Не указано ничего + Текст = НСтр("ru='все объекты %1 по выбранной иерархии вида'"); + ИначеЕсли МетаИмяГруппа<>Неопределено И МетаИмяУзел=Неопределено Тогда + // Указана только группа, рассматриваем ее как наименование группы + Текст = НСтр("ru='%2 %1'"); + ИначеЕсли МетаИмяГруппа=Неопределено И МетаИмяУзел<>Неопределено Тогда + // Указан только узел, рассматриваем как много выделенных объектов + Текст = НСтр("ru='все объекты %1 по выбранной иерархии вида'"); + Иначе + // Указаны и группа и узел, рассматриваем как имена метаданных + Текст = НСтр("ru='все объекты типа ""%3"" %1'"); + КонецЕсли; + + Если БезУчетаАвторегистрации Тогда + ТекстФлага = НСтр("ru=''"); + Иначе + ТекстФлага = НСтр("ru='с признаком авторегистрации'"); + КонецЕсли; + + Представление = ""; + Для Каждого КлючЗначение Из СтруктураПредставленийМетаданных Цикл + Если КлючЗначение.Ключ = МетаИмяГруппа Тогда + Индекс = СтруктураИменМетаданных[МетаИмяГруппа].Найти(МетаИмяУзел); + Представление = ?(Индекс=Неопределено, "", КлючЗначение.Значение[Индекс]); + Прервать; + КонецЕсли; + КонецЦикла; + + Текст = СтрЗаменить(Текст, "%1", ТекстФлага); + Текст = СтрЗаменить(Текст, "%2", НРег(МетаИмяГруппа)); + Текст = СтрЗаменить(Текст, "%3", Представление); + + Возврат СокрЛП(Текст); +КонецФункции + +&НаСервере +Функция ПолучитьИменаМетаданныхТекущейСтроки(БезУчетаАвторегистрации) + + Строка = ДеревоМетаданных.НайтиПоИдентификатору(Элементы.ДеревоМетаданных.ТекущаяСтрока); + Если Строка=Неопределено Тогда + Возврат Неопределено; + КонецЕсли; + + Результат = Новый Структура("МетаИмена, Описание", + Новый Массив, ПолучитьОписаниеВыбранныхМетаданных(БезУчетаАвторегистрации)); + МетаИмя = Строка.МетаПолноеИмя; + Если ПустаяСтрока(МетаИмя) Тогда + Результат.МетаИмена.Добавить(Неопределено); + Иначе + Результат.МетаИмена.Добавить(МетаИмя); + + Родитель = Строка.ПолучитьРодителя(); + МетаРодительИмя = Родитель.МетаПолноеИмя; + Если ПустаяСтрока(МетаРодительИмя) Тогда + Результат.Описание = ПолучитьОписаниеВыбранныхМетаданных(БезУчетаАвторегистрации, Строка.Наименование); + Иначе + Результат.Описание = ПолучитьОписаниеВыбранныхМетаданных(БезУчетаАвторегистрации, МетаРодительИмя, МетаИмя); + КонецЕсли; + КонецЕсли; + + Возврат Результат; +КонецФункции + +&НаСервере +Функция ПолучитьВыбранныеИменаМетаданных(БезУчетаАвторегистрации) + + Результат = Новый Структура("МетаИмена, Описание", + Новый Массив, ПолучитьОписаниеВыбранныхМетаданных(БезУчетаАвторегистрации)); + + Для Каждого Корень Из ДеревоМетаданных.ПолучитьЭлементы() Цикл + + Если Корень.Пометка=1 Тогда + Результат.МетаИмена.Добавить(Неопределено); + Возврат Результат; + КонецЕсли; + + КолвоЧастичных = 0; + КолвоГрупп = 0; + КолвоУзлов = 0; + Для Каждого Группа Из Корень.ПолучитьЭлементы() Цикл + + Если Группа.Пометка=0 Тогда + Продолжить; + ИначеЕсли Группа.Пометка=1 Тогда + // Весь группа целиком, смотрим откуда выбирать значения + КолвоГрупп = КолвоГрупп + 1; + ОписаниеГруппы = ПолучитьОписаниеВыбранныхМетаданных(БезУчетаАвторегистрации, Группа.Наименование); + + Если Группа.ПолучитьЭлементы().Количество()=0 Тогда + // Пробуем из структуры имен метаданных, считаем все отмеченными + МассивПредставлений = СтруктураПредставленийМетаданных[Группа.МетаПолноеИмя]; + МассивАвто = СтруктураАвторегистрацииМетаданных[Группа.МетаПолноеИмя]; + МассивИмен = СтруктураИменМетаданных[Группа.МетаПолноеИмя]; + Для Индекс=0 По МассивИмен.ВГраница() Цикл + Если БезУчетаАвторегистрации Или МассивАвто[Индекс]=2 Тогда + Результат.МетаИмена.Добавить(МассивИмен[Индекс]); + ОписаниеУзла = ПолучитьОписаниеВыбранныхМетаданных(БезУчетаАвторегистрации, Группа.МетаПолноеИмя, МассивИмен[Индекс]); + КонецЕсли; + КонецЦикла; + + Продолжить; + КонецЕсли; + + Иначе + КолвоЧастичных = КолвоЧастичных + 1; + КонецЕсли; + + Для Каждого Узел Из Группа.ПолучитьЭлементы() Цикл + Если Узел.Пометка=1 Тогда + // Узел.Авторегистрация=2 -> разрешена + Если БезУчетаАвторегистрации Или Узел.Авторегистрация=2 Тогда + Результат.МетаИмена.Добавить(Узел.МетаПолноеИмя); + ОписаниеУзла = ПолучитьОписаниеВыбранныхМетаданных(БезУчетаАвторегистрации, Группа.МетаПолноеИмя, Узел.МетаПолноеИмя); + КолвоУзлов = КолвоУзлов + 1; + КонецЕсли; + КонецЕсли + КонецЦикла; + + КонецЦикла; + + Если КолвоГрупп=1 И КолвоЧастичных=0 Тогда + Результат.Описание = ОписаниеГруппы; + ИначеЕсли КолвоГрупп=0 И КолвоУзлов=1 Тогда + Результат.Описание = ОписаниеУзла; + КонецЕсли; + + КонецЦикла; + + Возврат Результат; +КонецФункции + +&НаСервере +Функция ПрочитатьНомераСообщений() + РеквизитыЗапроса = "НомерОтправленного, НомерПринятого"; + Данные = ЭтотОбъект().ПолучитьПараметрыУзлаОбмена(УзелОбменаСсылка, РеквизитыЗапроса); + Если Данные=Неопределено Тогда + Возврат Новый Структура(РеквизитыЗапроса) + КонецЕсли; + Возврат Данные; +КонецФункции + +&НаСервере +Процедура ОбработатьЗапретИзмененияУзла() + ОперацииРазрешены = Не ЗапрещеноВыбиратьУзелОбмена; + + Если ОперацииРазрешены Тогда + Элементы.УзелОбменаСсылка.Видимость = Истина; + Заголовок = НСтр("ru='Регистрация изменений для обмена данными'"); + Иначе + Элементы.УзелОбменаСсылка.Видимость = Ложь; + Заголовок = СтрЗаменить(НСтр("ru='Регистрация изменений для обмена с ""%1""'"), "%1", Строка(УзелОбменаСсылка)); + КонецЕсли; + + Элементы.ФормаОткрытьФормуРегистрацииНаУзлах.Видимость = ОперацииРазрешены; + + Элементы.СписокКонстантКонтекстноеМенюОткрытьФормуРегистрацииНаУзлах.Видимость = ОперацииРазрешены; + Элементы.СписокСсылокКонтекстноеМенюОткрытьФормуРегистрацииНаУзлах.Видимость = ОперацииРазрешены; + Элементы.СписокНаборовЗаписейКонтекстноеМенюОткрытьФормуРегистрацииНаУзлах.Видимость = ОперацииРазрешены; +КонецПроцедуры + +&НаСервере +Функция ПроконтролироватьНастройки() + Результат = Истина; + + // Проверим на допустимость узла пришедшего из параметра или настроек + ТекущийОбъект = ЭтотОбъект(); + Если УзелОбменаСсылка<>Неопределено И ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипЗнч(УзелОбменаСсылка)) Тогда + ДопустимыеУзлыОбмена = ТекущийОбъект.СформироватьДеревоУзлов(); + ИмяПлана = УзелОбменаСсылка.Метаданные().Имя; + Если ДопустимыеУзлыОбмена.Строки.Найти(ИмяПлана, "ПланОбменаИмя", Истина)=Неопределено Тогда + // Узел неверного плана обмена + УзелОбменаСсылка = Неопределено; + Результат = Ложь; + ИначеЕсли УзелОбменаСсылка=ПланыОбмена[ИмяПлана].ЭтотУзел() Тогда + // Этот узел + УзелОбменаСсылка = Неопределено; + Результат = Ложь; + КонецЕсли; + КонецЕсли; + + Если ЗначениеЗаполнено(УзелОбменаСсылка) Тогда + ОбработкаВыбораУзлаОбмена(); + КонецЕсли; + ОбработатьЗапретИзмененияУзла(); + + // Зависимость настроек + УстановитьОтборПоНомеруСообщения(СписокКонстант, ВариантОтбораПоНомеруСообщения); + УстановитьОтборПоНомеруСообщения(СписокСсылок, ВариантОтбораПоНомеруСообщения); + УстановитьОтборПоНомеруСообщения(СписокНаборовЗаписей, ВариантОтбораПоНомеруСообщения); + + Возврат Результат; +КонецФункции + +&НаСервере +Функция СтруктураКлючаНабораЗаписей(Знач ТекущиеДанные) + Описание = ЭтотОбъект().ХарактеристикиПоМетаданным(СписокНаборовЗаписейИмяТаблицы); + + Если Описание=Неопределено Тогда + // Неизвестный источник + Возврат Неопределено; + КонецЕсли; + + Результат = Новый Структура("Ключ, ИмяФормы"); + + Измерения = Новый Структура; + ИменаКлючей = МассивИменКлючейНабораЗаписей(СписокНаборовЗаписейИмяТаблицы); + Для Каждого Имя Из ИменаКлючей Цикл + Измерения.Вставить(Имя, ТекущиеДанные["СписокНаборовЗаписей" + Имя]); + КонецЦикла; + + Если Измерения.Свойство("Регистратор") Тогда + МетаРегистратора = Метаданные.НайтиПоТипу(ТипЗнч(Измерения.Регистратор)); + Если МетаРегистратора=Неопределено Тогда + Результат = Неопределено; + Иначе + Результат.ИмяФормы = МетаРегистратора.ПолноеИмя() + ".ФормаОбъекта"; + Результат.Ключ = Измерения.Регистратор; + КонецЕсли; + ИначеЕсли Измерения.Количество()=0 Тогда + // Вырожденный набор записей + Результат.ИмяФормы = СписокНаборовЗаписейИмяТаблицы + ".ФормаСписка"; + Иначе + Результат.ИмяФормы = СписокНаборовЗаписейИмяТаблицы + ".ФормаЗаписи"; + Результат.Ключ = Описание.Менеджер.СоздатьКлючЗаписи(Измерения); + КонецЕсли; + + Возврат Результат; +КонецФункции diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl new file mode 100644 index 000000000..fd56cb5be --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/ObjectModule.bsl @@ -0,0 +1,1844 @@ +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС +// + +// Возвращает дерево значений, заполненное данными для выбора узла обмена. В дереве 2 уровня: +// план обмена->узлы обмена. Служебные узлы выброшены. +// +// Параметры: +// ОбъектДанных - Ссылка или структура со значениями измерений набор записей. Для этих данных +// которых анализируются узлы обмена. Если не указано, то для всех +// ИмяТаблицы - Если ОбъектДанных - структура, то имя таблицы для набора записей +// +// Колонки в результате: +// - Наименование - Представление плана обмена или узла обмена +// - ИндексКартинки - 1=план обмена, 2=узел , 3=помеченный для удаления узел +// - ИндексКартинкиАвторегистрация - Если не указан параметр ОбъектДанных, то Неопределено +// Иначе: 0=нет, 1=запрещена, 2=разрешена. +// Неопределено для плана обмена +// - ПланОбменаИмя - Имя плана обмена узла +// - Ссылка - Ссылка узла, Неопределено для плана обмена +// - Код - Код узла, Неопределено для плана обмена +// - НомерОтправленного - Данные узла +// - НомерПринятого - Данные узла +// - НомерСообщения - Если указан объект, то номер сообщения для него, иначе NULL +// - НеВыгружалось - Если указан объект, то флаг выгрузки, иначе NULL +// - Пометка - Если указан объект, то 0 = нет регистрации, 1 - есть, иначе всегда 0 +// - ИсходнаяПометка - Копия "Пометка" +// - ИдентификаторСтроки - Индекс добавленной строки (обход дерева сверху вниз слева направо) +// +Функция СформироватьДеревоУзлов(ОбъектДанных=Неопределено, ИмяТаблицы=Неопределено) Экспорт + + Дерево = Новый ДеревоЗначений; + Колонки = Дерево.Колонки; + Строки = Дерево.Строки; + + Колонки.Добавить("Наименование"); + Колонки.Добавить("ИндексКартинки"); + Колонки.Добавить("ИндексКартинкиАвторегистрация"); + Колонки.Добавить("ПланОбменаИмя"); + Колонки.Добавить("Ссылка"); + Колонки.Добавить("Код"); + Колонки.Добавить("НомерОтправленного"); + Колонки.Добавить("НомерПринятого"); + Колонки.Добавить("НомерСообщения"); + Колонки.Добавить("НеВыгружалось"); + Колонки.Добавить("Пометка"); + Колонки.Добавить("ИсходнаяПометка"); + Колонки.Добавить("ИдентификаторСтроки"); + + Запрос = Новый Запрос; + Если ОбъектДанных=Неопределено Тогда + МетаОбъект = Неопределено; + ТекстЗапроса = " + |ВЫБРАТЬ + | ПРЕДСТАВЛЕНИЕССЫЛКИ(Ссылка) КАК Наименование, + | ВЫБОР + | КОГДА ПометкаУдаления ТОГДА 2 ИНАЧЕ 1 + | КОНЕЦ КАК ИндексКартинки, + | + | ""{0}"" КАК ПланОбменаИмя, + | Код КАК Код, + | Ссылка КАК Ссылка, + | НомерОтправленного КАК НомерОтправленного, + | НомерПринятого КАК НомерПринятого, + | NULL КАК НомерСообщения, + | NULL КАК НеВыгружалось, + | 0 КАК Пометка, + | 0 КАК ИсходнаяПометка + |ИЗ + | ПланОбмена.{0} КАК ПланОбмена + |ГДЕ + | ПланОбмена.Ссылка<>&ФильтрУзлов + |"; + + Иначе + Если ТипЗнч(ОбъектДанных)=Тип("Структура") Тогда + ТекстЗапроса = ""; + Для Каждого КлючЗначение Из ОбъектДанных Цикл + ТекИмя = КлючЗначение.Ключ; + ТекстЗапроса = ТекстЗапроса + " + |И ТаблицаИзменений." + ТекИмя + "=&" + ТекИмя; + Запрос.УстановитьПараметр(ТекИмя, ОбъектДанных[ТекИмя]); + КонецЦикла; + ТекИмяТаблицы = ИмяТаблицы; + МетаОбъект = МетаданныеПоПолномуИмени(ИмяТаблицы); + + ИначеЕсли ТипЗнч(ОбъектДанных)=Тип("Строка") Тогда + ТекстЗапроса = ""; + ТекИмяТаблицы = ОбъектДанных; + МетаОбъект = МетаданныеПоПолномуИмени(ОбъектДанных); + + Иначе + ТекстЗапроса = " + |И ТаблицаИзменений.Ссылка=&ОбъектРегистрации"; + Запрос.УстановитьПараметр("ОбъектРегистрации", ОбъектДанных); + + МетаОбъект = ОбъектДанных.Метаданные(); + ТекИмяТаблицы = МетаОбъект.ПолноеИмя(); + КонецЕсли; + + ТекстЗапроса = " + |ВЫБРАТЬ + | ПРЕДСТАВЛЕНИЕССЫЛКИ(ПланОбмена.Ссылка) КАК Наименование, + | ВЫБОР + | КОГДА ПланОбмена.Ссылка.ПометкаУдаления ТОГДА 2 ИНАЧЕ 1 + | КОНЕЦ КАК ИндексКартинки, + | + | ""{0}"" КАК ПланОбменаИмя, + | ПланОбмена.Ссылка.Код КАК Код, + | ПланОбмена.Ссылка.Ссылка КАК Ссылка, + | ПланОбмена.Ссылка.НомерОтправленного КАК НомерОтправленного, + | ПланОбмена.Ссылка.НомерПринятого КАК НомерПринятого, + | ТаблицаИзменений.НомерСообщения КАК НомерСообщения, + | ВЫБОР + | КОГДА ТаблицаИзменений.НомерСообщения ЕСТЬ NULL + | ТОГДА ИСТИНА + | ИНАЧЕ ЛОЖЬ + | КОНЕЦ КАК НеВыгружалось, + | ВЫБОР + | КОГДА КОЛИЧЕСТВО(ТаблицаИзменений.Узел)>0 ТОГДА 1 + | ИНАЧЕ 0 + | КОНЕЦ КАК Пометка, + | ВЫБОР + | КОГДА КОЛИЧЕСТВО(ТаблицаИзменений.Узел)>0 ТОГДА 1 + | ИНАЧЕ 0 + | КОНЕЦ КАК ИсходнаяПометка + |ИЗ + | ПланОбмена.{0} КАК ПланОбмена + |ЛЕВОЕ СОЕДИНЕНИЕ + | " + ТекИмяТаблицы + ".Изменения КАК ТаблицаИзменений + |ПО + | ТаблицаИзменений.Узел=ПланОбмена.Ссылка + | " + ТекстЗапроса + " + |ГДЕ + | ПланОбмена.Ссылка<>&ФильтрУзлов + |СГРУППИРОВАТЬ ПО + | ПланОбмена.Ссылка, + | ТаблицаИзменений.НомерСообщения + |"; + КонецЕсли; + + ТекНомерСтроки = 0; + Для Каждого Мета Из Метаданные.ПланыОбмена Цикл + + ИмяПлана = Мета.Имя; + Попытка + ЭтотУзелПланаОбмена = ПланыОбмена[ИмяПлана].ЭтотУзел(); + Исключение + // Разделенный режим, пропускаем узел + Продолжить; + КонецПопытки; + + Авторегистрация = Неопределено; + Если МетаОбъект<>Неопределено Тогда + ЭлементСостава = Мета.Состав.Найти(МетаОбъект); + Если ЭлементСостава=Неопределено Тогда + // Не входит в текущий план обмена + Продолжить; + КонецЕсли; + Авторегистрация = ?(ЭлементСостава.Авторегистрация=АвтоРегистрацияИзменений.Запретить, 1, 2); + КонецЕсли; + + ИмяПлана = Мета.Имя; + Запрос.Текст = СтрЗаменить(ТекстЗапроса, "{0}", ИмяПлана); + Запрос.УстановитьПараметр("ФильтрУзлов", ЭтотУзелПланаОбмена); + Результат = Запрос.Выполнить(); + + Если Не Результат.Пустой() Тогда + СтрокаПлана = Строки.Добавить(); + СтрокаПлана.Наименование = Мета.Представление(); + СтрокаПлана.ИндексКартинки = 0; + СтрокаПлана.ПланОбменаИмя = ИмяПлана; + + СтрокаПлана.ИдентификаторСтроки = ТекНомерСтроки; + ТекНомерСтроки = ТекНомерСтроки + 1; + + // Сортировка по представлению, в запросе нельзя + ВременнаяТаблица = Результат.Выгрузить(); + ВременнаяТаблица.Сортировать("Наименование"); + Для Каждого СтрокаУзла Из ВременнаяТаблица Цикл; + НоваяСтрока = СтрокаПлана.Строки.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаУзла); + + НоваяСтрока.ИндексКартинкиАвторегистрация = Авторегистрация; + + НоваяСтрока.ИдентификаторСтроки = ТекНомерСтроки; + ТекНомерСтроки = ТекНомерСтроки + 1; + КонецЦикла; + КонецЕсли; + + КонецЦикла; + + Возврат Дерево; +КонецФункции + +// Возвращает структуру, описывающую метаданные для плана обмена. +// +// Параметры: +// ИмяПланаОбмена - Если передана строка, то она интерпретируется как имя метаданных +// плана обмена, для которого строится дерево конфигурации. +// - Если передан узел обмена, то дерево конфигурации строится для его плана обмена. +// - Если параметр неопределен, то строится дерево всей конфигурации. +// +// Возвращает структуру с полями "СтруктураИмен", "СтруктураПредставлений", "Дерево", +// описывающую метаданные. Объекты, не входящие в состав плана обмена, выбрасываются. +// +// "СтруктураИмен" - структура, где имя - группа метаданных (константы, справочники и т.п.), +// значение - массив полных имен. +// +// "СтруктураПредставлений" - структура, где имя - группа метаданных (константы, справочники +// и т.п.), значение - массив представлений. Порядок представлений в массиве совпадает с массивом +// полных имен. +// +// "СтруктураАвторегистрации" - структура, где имя - группа метаданных (константы, справочники +// и т.п.), значение - массив флагов авторегистрации на узле. Порядок данных в массиве совпадает +// с массивом полных имен. Входят только те группы, которые не входят в дерево. +// +// "Дерево" - дерево значений, 3 уровня: конфигурация->вид объекта->объект. +// Колонки дерева: +// - Наименование - Представление вида объекта метаданных +// - МетаПолноеИмя - Полное имя объекта метаданных +// - ИндексКартинки - Зависит от метаданных +// - Пометка - Неопределено +// - ИдентификаторСтроки - Индекс добавленной строки (обход дерева сверху вниз слева направо) +// - Авторегистрация - Если указан ИмяПланаОбмена, то для листьев: 1-разрешена, 2-запрещена. Иначе Неопределено +// +// - КоличествоИзменений - Неопределено, нужно для дальнейшего расчета +// - КоличествоВыгруженных - Неопределено, нужно для дальнейшего расчета +// - КоличествоНевыгруженных - Неопределено, нужно для дальнейшего расчета +// - КоличествоИзмененийСтрокой - Неопределено, нужно для дальнейшего расчета +// +Функция СформироватьСтруктуруМетаданных(ИмяПланаОбмена=Неопределено) Экспорт + + Дерево = Новый ДеревоЗначений; + Колонки = Дерево.Колонки; + Колонки.Добавить("Наименование"); + Колонки.Добавить("МетаПолноеИмя"); + Колонки.Добавить("ИндексКартинки"); + Колонки.Добавить("Пометка"); + Колонки.Добавить("ИдентификаторСтроки"); + + Колонки.Добавить("Авторегистрация"); + Колонки.Добавить("КоличествоИзменений"); + Колонки.Добавить("КоличествоВыгруженных"); + Колонки.Добавить("КоличествоНевыгруженных"); + Колонки.Добавить("КоличествоИзмененийСтрокой"); + + // Корень + СтрокаКорень = Дерево.Строки.Добавить(); + СтрокаКорень.Наименование = Метаданные.Представление(); + СтрокаКорень.ИндексКартинки = 0; + СтрокаКорень.ИдентификаторСтроки = 0; + + // Параметры + ТекПараметры = Новый Структура("СтруктураИмен, СтруктураПредставлений, СтруктураАвторегистрации, Строки", + Новый Структура, Новый Структура, Новый Структура, СтрокаКорень.Строки); + + Если ИмяПланаОбмена=Неопределено Тогда + ПланОбмена = Неопределено; + ИначеЕсли ТипЗнч(ИмяПланаОбмена)=Тип("Строка") Тогда + ПланОбмена = Метаданные.ПланыОбмена[ИмяПланаОбмена]; + Иначе + ПланОбмена = ИмяПланаОбмена.Метаданные(); + КонецЕсли; + ТекПараметры.Вставить("ПланОбмена", ПланОбмена); + + Результат = Новый Структура("Дерево, СтруктураИмен, СтруктураПредставлений, СтруктураАвторегистрации", + Дерево, ТекПараметры.СтруктураИмен, ТекПараметры.СтруктураПредставлений, ТекПараметры.СтруктураАвторегистрации); + + ТекНомерСтроки = 1; + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 1, 2, Ложь, "Константы", НСтр("ru='Константы'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 3, 4, Истина, "Справочники", НСтр("ru='Справочники'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 5, 6, Истина, "Последовательности", НСтр("ru='Последовательности'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 7, 8, Истина, "Документы", НСтр("ru='Документы'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 9, 10, Истина, "ПланыВидовХарактеристик", НСтр("ru='Планы видов характеристик'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 11, 12, Истина, "ПланыСчетов", НСтр("ru='Планы счетов'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 13, 14, Истина, "ПланыВидовРасчета", НСтр("ru='Планы видов расчета'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 15, 16, Истина, "РегистрыСведений", НСтр("ru='Регистры сведений'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 17, 18, Истина, "РегистрыНакопления", НСтр("ru='Регистры накопления'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 19, 20, Истина, "РегистрыБухгалтерии", НСтр("ru='Регистры бухгалтерии'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 21, 22, Истина, "РегистрыРасчета", НСтр("ru='Регистры расчета'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 23, 24, Истина, "БизнесПроцессы", НСтр("ru='Бизнес-процессы'")); + СформироватьУровеньМетаданных(ТекНомерСтроки, ТекПараметры, 25, 26, Истина, "Задачи", НСтр("ru='Задачи'")); + + Возврат Результат; +КонецФункции + +// Вычисляет количества изменений для объектов метаданных для узлов обмена. +// +// Параметры: +// - СписокТаблиц - Или массив или коллекция "ключ/значение" где "значение" - массивы имен +// - СписокУзлов - Узел или массив списков узлов +// +// Возвращает таблицу значений. Колонки: +// - МетаПолноеИмя - Полное имя метаданных, для которых рассчитываем количество +// - УзелОбмена - Ссылка на узел обмена, для которого рассчитываем количество +// - КоличествоИзменений - Число +// - КоличествоВыгруженных - Число +// - КоличествоНеВыгруженных - Число +// +Функция ПолучитьКоличествоИзменений(СписокТаблиц, СписокУзлов) Экспорт + + Результат = Новый ТаблицаЗначений; + Колонки = Результат.Колонки; + Колонки.Добавить("МетаПолноеИмя"); + Колонки.Добавить("УзелОбмена"); + Колонки.Добавить("КоличествоИзменений"); + Колонки.Добавить("КоличествоВыгруженных"); + Колонки.Добавить("КоличествоНеВыгруженных"); + + Результат.Индексы.Добавить("МетаПолноеИмя"); + Результат.Индексы.Добавить("УзелОбмена"); + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("СписокУзлов", СписокУзлов); + + // На входе или массив или структура/соответствие со многими массивами + Если СписокТаблиц=Неопределено Тогда + Возврат Результат; + ИначеЕсли ТипЗнч(СписокТаблиц)=Тип("Массив") Тогда + Источник = Новый Структура("_", СписокТаблиц); + Иначе + Источник = СписокТаблиц; + КонецЕсли; + + // Пачками по 200 таблиц в запросе + Текст = ""; + Номер = 0; + Для Каждого КлючЗначение Из Источник Цикл + Если ТипЗнч(КлючЗначение.Значение)<>Тип("Массив") Тогда + Продолжить; + КонецЕсли; + + Для Каждого Элемент Из КлючЗначение.Значение Цикл + Если ПустаяСтрока(Элемент) Тогда + Продолжить; + КонецЕсли; + + Текст = Текст + ?(Текст="", "", "ОБЪЕДИНИТЬ ВСЕ") + " + |ВЫБРАТЬ + | """ + Элемент + """ КАК МетаПолноеИмя, + | Узел КАК УзелОбмена, + | КОЛИЧЕСТВО(*) КАК КоличествоИзменений, + | КОЛИЧЕСТВО(НомерСообщения) КАК КоличествоВыгруженных, + | КОЛИЧЕСТВО(*) - КОЛИЧЕСТВО(НомерСообщения) КАК КоличествоНеВыгруженных + |ИЗ + | " + Элемент + ".Изменения + |ГДЕ + | Узел В (&СписокУзлов) + |СГРУППИРОВАТЬ ПО + | Узел + |"; + + Номер = Номер + 1; + Если Номер=200 Тогда + Запрос.Текст = Текст; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + ЗаполнитьЗначенияСвойств(Результат.Добавить(), Выборка); + КонецЦикла; + Текст = ""; + Номер = 0; + КонецЕсли; + + КонецЦикла; + КонецЦикла; + + // Дочитываем хвосты + Если Текст<>"" Тогда + Запрос.Текст = Текст; + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + ЗаполнитьЗначенияСвойств(Результат.Добавить(), Выборка); + КонецЦикла; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Возвращает объект метаданных по его полному имени. Пустая строка обозначает конфигурацию. +// +// Параметры: +// - ИмяМетаданных - Строка - Имя объекта метаданных, например "Справочник.Валюты" или "Константы" +// +Функция МетаданныеПоПолномуИмени(ИмяМетаданных) Экспорт + + Если ПустаяСтрока(ИмяМетаданных) Тогда + // Вся конфигурация + Возврат Метаданные; + КонецЕсли; + + Значение = Метаданные.НайтиПоПолномуИмени(ИмяМетаданных); + Если Значение=Неопределено Тогда + Значение = Метаданные[ИмяМетаданных]; + КонецЕсли; + + Возврат Значение; +КонецФункции + +// Возвращает флаг регистрации объекта на узле +// +// Параметры: +// - Узел - Узел плана обмена для которого получаем информацию, +// - ОбъектРегистрации - Объект, для которого получаем информацию. Может быть строкой - +// обрабатываем метаданные, ссылкой или структурой со значениями +// изменений набора записей +// - ИмяТаблицы - Если ОбъектРегистрации - структура, то содержит имя таблицы для набора измерений +// +Функция ОбъектЗарегистрированНаУзле(Узел, ОбъектРегистрации, ИмяТаблицы=Неопределено) Экспорт + ТипПараметра = ТипЗнч(ОбъектРегистрации); + Если ТипПараметра=Тип("Строка") Тогда + // Константа как метаданные + Описание = ХарактеристикиПоМетаданным(ОбъектРегистрации); + ТекущийОбъект = Описание.Менеджер.СоздатьМенеджерЗначения(); + + ИначеЕсли ТипПараметра=Тип("Структура") Тогда + // Набор измерений, ИмяТаблицы - чего + Описание = ХарактеристикиПоМетаданным(ИмяТаблицы); + ТекущийОбъект = Описание.Менеджер.СоздатьНаборЗаписей(); + Для Каждого КлючЗначение Из ОбъектРегистрации Цикл + ТекущийОбъект.Отбор[КлючЗначение.Ключ].Установить(КлючЗначение.Значение); + КонецЦикла; + + Иначе + ТекущийОбъект = ОбъектРегистрации; + КонецЕсли; + + Возврат ПланыОбмена.ИзменениеЗарегистрировано(Узел, ТекущийОбъект); +КонецФункции + +// Изменяет регистрацию переданного. +// +// Параметры: +// - Команда - Истина, если надо добавлять, Ложь, если удалять +// - БезУчетаАвторегистрации - Истина, если не надо анализировать флаг авторегистрации +// - Узел - Ссылка на узел плана обмена +// - Данные - Ссылка, строка (полное имя метаданных), структура (измерения набора) +// или массив таких данных. +// - ИмяТаблицы - Если Данные является структурой, то содержит имя таблицы +// +// Возвращает структуру с общим числом объектов и числом успешно обработанных объектов +// +Функция ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, Данные, ИмяТаблицы=Неопределено) Экспорт + + ПрочитатьНастройки(); + Результат = Новый Структура("Всего, Успешно", 0, 0); + + // Только при добавлении и работе в составе БСП + НадоФильтрБСП = ТипЗнч(Команда)=Тип("Булево") И Команда И КонфигурацияПоддерживаетБСП И НастройкаКонтрольВыгрузкиОбъектов; + + Если ТипЗнч(Данные)=Тип("Массив") Тогда + ДанныеРегистрации = Данные; + Иначе + ДанныеРегистрации = Новый Массив; + ДанныеРегистрации.Добавить(Данные); + КонецЕсли; + + Для Каждого Элемент Из ДанныеРегистрации Цикл + + Тип = ТипЗнч(Элемент); + Значения = Новый Массив; + + Если Элемент=Неопределено Тогда + // Вся конфигурация + Если НадоФильтрБСП Тогда + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("Константы"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("Справочники"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("Документы"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("Последовательности"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("ПланыВидовХарактеристик"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("ПланыСчетов"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("ПланыВидовРасчета"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("РегистрыСведений"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("РегистрыНакопления"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("РегистрыБухгалтерии"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("РегистрыРасчета"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("БизнесПроцессы"), БезУчетаАвторегистрации) ); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ХарактеристикиПоМетаданным("Задачи"), БезУчетаАвторегистрации) ); + Продолжить; + + ИначеЕсли Не БезУчетаАвторегистрации Тогда + // Регистрируем по группам с отсечением неподходящего + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "Константы", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "Справочники", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "Документы", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "Последовательности", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "ПланыВидовХарактеристик", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "ПланыСчетов", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "ПланыВидовРасчета", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "РегистрыСведений", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "РегистрыНакопления", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "РегистрыБухгалтерии", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "РегистрыРасчета", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "БизнесПроцессы", ИмяТаблицы) ); + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, Ложь, Узел, "Задачи", ИмяТаблицы) ); + Продолжить; + Иначе + // Регистрируем сразу все + Значения.Добавить(Неопределено); + КонецЕсли; + + ИначеЕсли Тип=Тип("Строка") Тогда + // Метаданные, возможно как коллекция, так и конкретный вид, на авторегистрацию смотрим + Описание = ХарактеристикиПоМетаданным(Элемент); + Если НадоФильтрБСП Тогда + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, Описание, БезУчетаАвторегистрации) ); + Продолжить; + + ИначеЕсли БезУчетаАвторегистрации Тогда + Если Описание.ЭтоКоллекция Тогда + Для Каждого Мета Из Описание.Метаданные Цикл + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, Мета.ПолноеИмя(), ИмяТаблицы) ); + КонецЦикла; + Продолжить; + Иначе + Мета = Описание.Метаданные; + ЭлементСостава = Узел.Метаданные().Состав.Найти(Мета); + Если ЭлементСостава=Неопределено Тогда + Продолжить; + КонецЕсли; + // Константа? + Значения.Добавить(Описание.Метаданные); + КонецЕсли; + + Иначе + // Отсеиваем неподходящие по авторегистрации + Если Описание.ЭтоКоллекция Тогда + // Регистрируем поодиночке + Для Каждого Мета Из Описание.Метаданные Цикл + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, Мета.ПолноеИмя(), ИмяТаблицы) ); + КонецЦикла; + Продолжить; + Иначе + Мета = Описание.Метаданные; + ЭлементСостава = Узел.Метаданные().Состав.Найти(Мета); + Если ЭлементСостава=Неопределено Или ЭлементСостава.Авторегистрация<>АвтоРегистрацияИзменений.Разрешить Тогда + Продолжить; + КонецЕсли; + // Константа? + Значения.Добавить(Описание.Метаданные); + КонецЕсли; + КонецЕсли; + + // Смотрим опциональные варианты, Значения[0] - метаданные конкретного вида с именем "Элемент" + Для Каждого ТекЭлемент Из ПолучитьДополнительныеОбъектыРегистрации(Элемент, Узел, БезУчетаАвторегистрации) Цикл + Значения.Добавить(ТекЭлемент); + КонецЦикла; + + ИначеЕсли Тип=Тип("Структура") Тогда + // Это или конкретный набор записей, или результат выбора ссылочного типа отбором + Описание = ХарактеристикиПоМетаданным(ИмяТаблицы); + Если Описание.ЭтоСсылка Тогда + ДобавитьРезультаты(Результат, ИзменитьРегистрациюНаСервере(Команда, БезУчетаАвторегистрации, Узел, Элемент.Ссылка) ); + Продолжить; + КонецЕсли; + // Конкретный набор записей, на авторегистрацию уже не смотрим + Если НадоФильтрБСП Тогда + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийНабора(Узел, Элемент, Описание) ); + Продолжить; + КонецЕсли; + + Набор = Описание.Менеджер.СоздатьНаборЗаписей(); + Для Каждого КлючЗначение Из Элемент Цикл + Набор.Отбор[КлючЗначение.Ключ].Установить(КлючЗначение.Значение); + КонецЦикла; + Значения.Добавить(Набор); + // Смотрим опциональные варианты + Для Каждого ТекЭлемент Из ПолучитьДополнительныеОбъектыРегистрации(Элемент, Узел, БезУчетаАвторегистрации, ИмяТаблицы) Цикл + Значения.Добавить(ТекЭлемент); + КонецЦикла; + + Иначе + // Конкретная ссылка, на авторегистрацию уже не смотрим + Если НадоФильтрБСП Тогда + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийСсылки(Узел, Элемент) ); + Продолжить; + + КонецЕсли; + Значения.Добавить(Элемент); + // Смотрим опциональные варианты + Для Каждого ТекЭлемент Из ПолучитьДополнительныеОбъектыРегистрации(Элемент, Узел, БезУчетаАвторегистрации) Цикл + Значения.Добавить(ТекЭлемент); + КонецЦикла; + + КонецЕсли; + + // Собственно регистрация, уже без фильтра + Для Каждого ТекЗначение Из Значения Цикл + ВыполнитьКомандуРегистрацииОбъекта(Команда, Узел, ТекЗначение); + Результат.Успешно = Результат.Успешно + 1; + Результат.Всего = Результат.Всего + 1; + КонецЦикла; + + КонецЦикла; // Перебор объектов в массиве данных для регистрации + + Возврат Результат; +КонецФункции + +// Возвращает начало полного имени формы для открытия по переданному объекту +// +Функция ПолучитьИмяФормы(ТекущийОбъект=Неопределено) Экспорт + + Тип = ТипЗнч(ТекущийОбъект); + Если Тип=Тип("ДинамическийСписок") Тогда + Возврат ТекущийОбъект.ОсновнаяТаблица + "."; + ИначеЕсли Тип=Тип("Строка") Тогда + Возврат ТекущийОбъект + "."; + КонецЕсли; + + Мета = ?(ТекущийОбъект=Неопределено, Метаданные(), ТекущийОбъект.Метаданные()); + Возврат Мета.ПолноеИмя() + "."; +КонецФункции + +// Рекурсивное обслуживание иерархических пометок с тремя состояниями в дереве. +// +// Параметры: +// - ДанныеСтроки - ДанныеФормыЭлементДерева. Пометка хранится в числовой колонке "Пометка" +// +Процедура ИзменениеПометки(ДанныеСтроки) Экспорт + ДанныеСтроки.Пометка = ДанныеСтроки.Пометка % 2; + ПроставитьПометкиВниз(ДанныеСтроки); + ПроставитьПометкиВверх(ДанныеСтроки); +КонецПроцедуры + +// Рекурсивное обслуживание иерархических пометок с тремя состояниями в дереве. +// +// Параметры: +// - ДанныеСтроки - ДанныеФормыЭлементДерева. Пометка хранится в числовой колонке "Пометка" +// +Процедура ПроставитьПометкиВниз(ДанныеСтроки) Экспорт + Значение = ДанныеСтроки.Пометка; + Для Каждого Потомок Из ДанныеСтроки.ПолучитьЭлементы() Цикл + Потомок.Пометка = Значение; + ПроставитьПометкиВниз(Потомок); + КонецЦикла; +КонецПроцедуры + +// Рекурсивное обслуживание иерархических пометок с тремя состояниями в дереве. +// +// Параметры: +// - ДанныеСтроки - ДанныеФормыЭлементДерева. Пометка хранится в числовой колонке "Пометка" +// +Процедура ПроставитьПометкиВверх(ДанныеСтроки) Экспорт + РодительСтроки = ДанныеСтроки.ПолучитьРодителя(); + Если РодительСтроки<>Неопределено Тогда + ВсеИстина = Истина; + НеВсеЛожь = Ложь; + Для Каждого Потомок Из РодительСтроки.ПолучитьЭлементы() Цикл + ВсеИстина = ВсеИстина И (Потомок.Пометка = 1); + НеВсеЛожь = НеВсеЛожь Или Булево(Потомок.Пометка); + КонецЦикла; + Если ВсеИстина Тогда + РодительСтроки.Пометка = 1; + ИначеЕсли НеВсеЛожь Тогда + РодительСтроки.Пометка = 2; + Иначе + РодительСтроки.Пометка = 0; + КонецЕсли; + ПроставитьПометкиВверх(РодительСтроки); + КонецЕсли; +КонецПроцедуры + +// Чтение реквизитов узла обмена. +// +// Параметры: +// - Ссылка - Ссылка на узел обмена +// - Данные - Список имен реквизитов для чтения через запятую +// +// Возвращает структуру с данными или Неопределено, если нет данных по переданной ссылке +// +Функция ПолучитьПараметрыУзлаОбмена(Ссылка, Данные) Экспорт + Запрос = Новый Запрос(" + |ВЫБРАТЬ " + Данные + " ИЗ " + Ссылка.Метаданные().ПолноеИмя() + " + |ГДЕ Ссылка=&Ссылка + |"); + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Времянка = Запрос.Выполнить().Выгрузить(); + Если Времянка.Количество()=0 Тогда + Возврат Неопределено; + КонецЕсли; + + Результат = Новый Структура(Данные); + ЗаполнитьЗначенияСвойств(Результат, Времянка[0]); + Возврат Результат; +КонецФункции + +// Запись реквизитов узла обмена. +// +// Параметры: +// - Ссылка - Ссылка на узел обмена +// - Данные - Список имен реквизитов для чтения через запятую +// +Процедура УстановитьПараметрыУзлаОбмена(Ссылка, Данные) Экспорт + + ОбъектУзла = Ссылка.ПолучитьОбъект(); + Если ОбъектУзла=Неопределено Тогда + // Ссылка на удаленный объект + Возврат; + КонецЕсли; + + Изменен = Ложь; + Для Каждого Элемент Из Данные Цикл + Если ОбъектУзла[Элемент.Ключ]<>Элемент.Значение Тогда + Изменен = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + Если Изменен Тогда + ЗаполнитьЗначенияСвойств(ОбъектУзла, Данные); + ОбъектУзла.Записать(); + КонецЕсли; +КонецПроцедуры + +// Возвращает описание данных по имени таблицы/полному имени метаданных или метаданным +// +// Параметры: +// - ИмяТаблицы - Имя таблицы, например "Справочник.Валюты" +// +Функция ХарактеристикиПоМетаданным(ИмяТаблицыМетаданных) Экспорт + + ЭтоПоследовательность = Ложь; + ЭтоКоллекция = Ложь; + ЭтоКонстанта = Ложь; + ЭтоСсылка = Ложь; + ЭтоНабор = Ложь; + Менеджер = Неопределено; + ИмяТаблицы = ""; + + Если ТипЗнч(ИмяТаблицыМетаданных)=Тип("Строка") Тогда + Мета = МетаданныеПоПолномуИмени(ИмяТаблицыМетаданных); + ИмяТаблицы = ИмяТаблицыМетаданных; + ИначеЕсли ТипЗнч(ИмяТаблицы)=Тип("Тип") Тогда + Мета = Метаданные.НайтиПоТипу(ИмяТаблицыМетаданных); + ИмяТаблицы = Мета.ПолноеИмя(); + Иначе + Мета = ИмяТаблицыМетаданных; + ИмяТаблицы = Мета.ПолноеИмя(); + КонецЕсли; + + Если Мета=Метаданные.Константы Тогда + ЭтоКоллекция = Истина; + ЭтоКонстанта = Истина; + Менеджер = Константы; + + ИначеЕсли Мета=Метаданные.Справочники Тогда + ЭтоКоллекция = Истина; + ЭтоСсылка = Истина; + Менеджер = Справочники; + + ИначеЕсли Мета=Метаданные.Документы Тогда + ЭтоКоллекция = Истина; + ЭтоСсылка = Истина; + Менеджер = Документы; + + ИначеЕсли Мета=Метаданные.Перечисления Тогда + ЭтоКоллекция = Истина; + ЭтоСсылка = Истина; + Менеджер = Перечисления; + + ИначеЕсли Мета=Метаданные.ПланыВидовХарактеристик Тогда + ЭтоКоллекция = Истина; + ЭтоСсылка = Истина; + Менеджер = ПланыВидовХарактеристик; + + ИначеЕсли Мета=Метаданные.ПланыСчетов Тогда + ЭтоКоллекция = Истина; + ЭтоСсылка = Истина; + Менеджер = ПланыСчетов; + + ИначеЕсли Мета=Метаданные.ПланыВидовРасчета Тогда + ЭтоКоллекция = Истина; + ЭтоСсылка = Истина; + Менеджер = ПланыВидовРасчета; + + ИначеЕсли Мета=Метаданные.БизнесПроцессы Тогда + ЭтоКоллекция = Истина; + ЭтоСсылка = Истина; + Менеджер = БизнесПроцессы; + + ИначеЕсли Мета=Метаданные.Задачи Тогда + ЭтоКоллекция = Истина; + ЭтоСсылка = Истина; + Менеджер = Задачи; + + ИначеЕсли Мета=Метаданные.Последовательности Тогда + ЭтоНабор = Истина; + ЭтоПоследовательность = Истина; + ЭтоКоллекция = Истина; + Менеджер = Последовательности; + + ИначеЕсли Мета=Метаданные.РегистрыСведений Тогда + ЭтоКоллекция = Истина; + ЭтоНабор = Истина; + Менеджер = РегистрыСведений; + + ИначеЕсли Мета=Метаданные.РегистрыНакопления Тогда + ЭтоКоллекция = Истина; + ЭтоНабор = Истина; + Менеджер = РегистрыНакопления; + + ИначеЕсли Мета=Метаданные.РегистрыБухгалтерии Тогда + ЭтоКоллекция = Истина; + ЭтоНабор = Истина; + Менеджер = РегистрыБухгалтерии; + + ИначеЕсли Мета=Метаданные.РегистрыРасчета Тогда + ЭтоКоллекция = Истина; + ЭтоНабор = Истина; + Менеджер = РегистрыРасчета; + + ИначеЕсли Метаданные.Константы.Содержит(Мета) Тогда + ЭтоКонстанта = Истина; + Менеджер = Константы[Мета.Имя]; + + ИначеЕсли Метаданные.Справочники.Содержит(Мета) Тогда + ЭтоСсылка = Истина; + Менеджер = Справочники[Мета.Имя]; + + ИначеЕсли Метаданные.Документы.Содержит(Мета) Тогда + ЭтоСсылка = Истина; + Менеджер = Документы[Мета.Имя]; + + ИначеЕсли Метаданные.Последовательности.Содержит(Мета) Тогда + ЭтоНабор = Истина; + ЭтоПоследовательность = Истина; + Менеджер = Последовательности[Мета.Имя]; + + ИначеЕсли Метаданные.Перечисления.Содержит(Мета) Тогда + ЭтоСсылка = Истина; + Менеджер = Перечисления[Мета.Имя]; + + ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(Мета) Тогда + ЭтоСсылка = Истина; + Менеджер = ПланыВидовХарактеристик[Мета.Имя]; + + ИначеЕсли Метаданные.ПланыСчетов.Содержит(Мета) Тогда + ЭтоСсылка = Истина; + Менеджер = ПланыСчетов[Мета.Имя]; + + ИначеЕсли Метаданные.ПланыВидовРасчета.Содержит(Мета) Тогда + ЭтоСсылка = Истина; + Менеджер = ПланыВидовРасчета[Мета.Имя]; + + ИначеЕсли Метаданные.РегистрыСведений.Содержит(Мета) Тогда + ЭтоНабор = Истина; + Менеджер = РегистрыСведений[Мета.Имя]; + + ИначеЕсли Метаданные.РегистрыНакопления.Содержит(Мета) Тогда + ЭтоНабор = Истина; + Менеджер = РегистрыНакопления[Мета.Имя]; + + ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(Мета) Тогда + ЭтоНабор = Истина; + Менеджер = РегистрыБухгалтерии[Мета.Имя]; + + ИначеЕсли Метаданные.РегистрыРасчета.Содержит(Мета) Тогда + ЭтоНабор = Истина; + Менеджер = РегистрыРасчета[Мета.Имя]; + + ИначеЕсли Метаданные.БизнесПроцессы.Содержит(Мета) Тогда + ЭтоСсылка = Истина; + Менеджер = БизнесПроцессы[Мета.Имя]; + + ИначеЕсли Метаданные.Задачи.Содержит(Мета) Тогда + ЭтоСсылка = Истина; + Менеджер = Задачи[Мета.Имя]; + + Иначе + МетаРодитель = Мета.Родитель(); + Если МетаРодитель<>Неопределено И Метаданные.РегистрыРасчета.Содержит(МетаРодитель) Тогда + // Перерасчет + ЭтоНабор = Истина; + Менеджер = РегистрыРасчета[МетаРодитель.Имя].Перерасчеты[Мета.Имя]; + КонецЕсли; + + КонецЕсли; + + Возврат Новый Структура("ИмяТаблицы, Метаданные, Менеджер, ЭтоНабор, ЭтоСсылка, ЭтоКонстанта, ЭтоПоследовательность, ЭтоКоллекция", + ИмяТаблицы, Мета, Менеджер, + ЭтоНабор, ЭтоСсылка, ЭтоКонстанта, ЭтоПоследовательность, ЭтоКоллекция); + +КонецФункции + +// Возвращает таблицу, описывающую измерения для регистрации изменений набора данных +// +// Параметры: +// - ИмяТаблицы - Имя таблицы, например "РегистрСведений.КурсыВалют" +// - ВсеИзмерения - Флаг того, что для регистра сведений получаем все измерения, а не +// только основные и ведущие +// +// Возвращает таблицу с колонками: +// - Имя - Строка имени измерения +// - ТипЗначения - ОписаниеТипов +// - Заголовок - Представление для измерения +// +Функция ИзмеренияНабораЗаписей(ИмяТаблицы, ВсеИзмерения=Ложь) Экспорт + + Если ТипЗнч(ИмяТаблицы)=Тип("Строка") Тогда + Мета = МетаданныеПоПолномуИмени(ИмяТаблицы); + Иначе + Мета = ИмяТаблицы; + КонецЕсли; + + // Определяем ключевые поля + Измерения = Новый ТаблицаЗначений; + Колонки = Измерения.Колонки; + Колонки.Добавить("Имя"); + Колонки.Добавить("ТипЗначения"); + Колонки.Добавить("Заголовок"); + + Если Не ВсеИзмерения Тогда + // Что-то регистрируемое + НеУчитывать = "НомерСообщения, Узел,"; + + Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ " + Мета.ПолноеИмя() + ".Изменения ГДЕ ЛОЖЬ"); + ПустойРезультат = Запрос.Выполнить(); + Для Каждого КолонкаРезультата Из ПустойРезультат.Колонки Цикл + ИмяКолонки = КолонкаРезультата.Имя; + Если Найти(НеУчитывать, ИмяКолонки + ",")=0 Тогда + Строка = Измерения.Добавить(); + Строка.Имя = ИмяКолонки; + Строка.ТипЗначения = КолонкаРезультата.ТипЗначения; + + МетаИзм = Мета.Измерения.Найти(ИмяКолонки); + Строка.Заголовок = ?(МетаИзм=Неопределено, ИмяКолонки, МетаИзм.Представление()); + КонецЕсли; + КонецЦикла; + + Возврат Измерения; + КонецЕсли; + + // Все измерения + + ЭтоРегистрСведений = Метаданные.РегистрыСведений.Содержит(Мета); + + // Регистратор + Если Метаданные.РегистрыНакопления.Содержит(Мета) + Или Метаданные.РегистрыБухгалтерии.Содержит(Мета) + Или Метаданные.РегистрыРасчета.Содержит(Мета) + Или (ЭтоРегистрСведений И Мета.РежимЗаписи=Метаданные.СвойстваОбъектов.РежимЗаписиРегистра.ПодчинениеРегистратору) + Или Метаданные.Последовательности.Содержит(Мета) + Тогда + Строка = Измерения.Добавить(); + Строка.Имя = "Регистратор"; + Строка.ТипЗначения = Документы.ТипВсеСсылки(); + Строка.Заголовок = "Регистратор"; + КонецЕсли; + + // Период + Если ЭтоРегистрСведений И Мета.ОсновнойОтборПоПериоду Тогда + Строка = Измерения.Добавить(); + Строка.Имя = "Период"; + Строка.ТипЗначения = Новый ОписаниеТипов("Дата"); + Строка.Заголовок = "Период"; + КонецЕсли; + + // Измерения + Если ЭтоРегистрСведений Тогда + Для Каждого МетаИзм Из Мета.Измерения Цикл + Строка = Измерения.Добавить(); + Строка.Имя = МетаИзм.Имя; + Строка.ТипЗначения = МетаИзм.Тип; + Строка.Заголовок = МетаИзм.Представление(); + КонецЦикла; + КонецЕсли; + + // Перерасчет + Если Метаданные.РегистрыРасчета.Содержит(Мета.Родитель()) Тогда + Строка = Измерения.Добавить(); + Строка.Имя = "ОбъектПерерасчета"; + Строка.ТипЗначения = Документы.ТипВсеСсылки(); + Строка.Заголовок = "Объект перерасчета"; + КонецЕсли; + + Возврат Измерения; +КонецФункции + +// Модифицирует таблицу формы, добавляя туда колонки +// +// Параметры: +// - ТаблицаФормы - Элемент, связанный с данными, в который будут добавлены колонки данных +// - СохранятьИмена - Список имен колонок, которые будут сохранены, через запятую. +// - Добавлять - Коллекция добавляемых колонок или перечислимое с атрибутами Имя, ТипЗначения, Заголовок +// - ГруппаКолонок - Группа колонок, в которую происходит добавление +// +Процедура ДобавитьКолонкиВТаблицуФормы(ТаблицаФормы, СохранятьИмена, Добавлять, ГруппаКолонок=Неопределено) Экспорт + + Форма = ФормаЭлементаФормы(ТаблицаФормы); + ЭлементыФормы = Форма.Элементы; + ИмяРеквизитаТаблицы = ТаблицаФормы.ПутьКДанным; + + Сохраняемые = Новый Структура(СохранятьИмена); + СохраняемыеПутиДанных = Новый Соответствие; + Для Каждого Элемент Из Сохраняемые Цикл + СохраняемыеПутиДанных.Вставить(ИмяРеквизитаТаблицы + "." + Элемент.Ключ, Истина); + КонецЦикла; + + ЭтоДинамическийСписок = Ложь; + Для Каждого Реквизит Из Форма.ПолучитьРеквизиты() Цикл + Если Реквизит.Имя = ИмяРеквизитаТаблицы И Реквизит.ТипЗначения.СодержитТип(Тип("ДинамическийСписок")) Тогда + ЭтоДинамическийСписок = Истина; + Прервать; + КонецЕсли; + КонецЦикла; + + // Динамический пересоздает реквизиты сам + Если Не ЭтоДинамическийСписок Тогда + УдаляемыеИмена = Новый Массив; + + // Удаляем все реквизиты, которые не перечислены в СохранятьИмена + Для Каждого Реквизит Из Форма.ПолучитьРеквизиты(ИмяРеквизитаТаблицы) Цикл + ТекИмя = Реквизит.Имя; + Если Не Сохраняемые.Свойство(ТекИмя) Тогда + УдаляемыеИмена.Добавить(Реквизит.Путь + "." + ТекИмя); + КонецЕсли; + КонецЦикла; + + Добавляемые = Новый Массив; + Для Каждого Колонка Из Добавлять Цикл + ТекИмя = Колонка.Имя; + Если Не Сохраняемые.Свойство(ТекИмя) Тогда + Добавляемые.Добавить( Новый РеквизитФормы(ТекИмя, Колонка.ТипЗначения, ИмяРеквизитаТаблицы, Колонка.Заголовок) ); + КонецЕсли; + КонецЦикла; + + Форма.ИзменитьРеквизиты(Добавляемые, УдаляемыеИмена); + КонецЕсли; + + // Удаляем элементы + Родитель = ?(ГруппаКолонок=Неопределено, ТаблицаФормы, ГруппаКолонок); + + Удалять = Новый Массив; + Для Каждого Элемент Из Родитель.ПодчиненныеЭлементы Цикл + Удалять.Добавить(Элемент); + КонецЦикла; + Для Каждого Элемент Из Удалять Цикл + Если ТипЗнч(Элемент)<>Тип("ГруппаФормы") И СохраняемыеПутиДанных[Элемент.ПутьКДанным]=Неопределено Тогда + ЭлементыФормы.Удалить(Элемент); + КонецЕсли; + КонецЦикла; + + // Создаем элементы + Префикс = ТаблицаФормы.Имя; + Для Каждого Колонка Из Добавлять Цикл + ТекИмя = Колонка.Имя; + ЭлФормы = ЭлементыФормы.Вставить(Префикс + ТекИмя, Тип("ПолеФормы"), Родитель); + ЭлФормы.Вид = ВидПоляФормы.ПолеВвода; + ЭлФормы.ПутьКДанным = ИмяРеквизитаТаблицы + "." + ТекИмя; + ЭлФормы.Заголовок = Колонка.Заголовок; + КонецЦикла; + +КонецПроцедуры + +// Возвращает подробное представление объекта. +// +// Параметры: +// - ОбъектПредставления - Объект, представление которого получаем +// +Функция ПредставлениеСсылки(ОбъектПредставления) Экспорт + + Если ТипЗнч(ОбъектПредставления)=Тип("Строка") Тогда + // Метаданные + Мета = Метаданные.НайтиПоПолномуИмени(ОбъектПредставления); + Результат = Мета.Представление(); + Если Метаданные.Константы.Содержит(Мета) Тогда + Результат = Результат + " (константа)"; + КонецЕсли; + Возврат Результат; + КонецЕсли; + + // Ссылка + Результат = ""; + Если Метаданные.ОбщиеМодули.Найти("ОбщегоНазначения")<>Неопределено Тогда + Попытка + Результат = Вычислить("ОбщегоНазначения.ПредметСтрокой(ОбъектПредставления)"); + Исключение + КонецПопытки; + КонецЕсли; + + Если ПустаяСтрока(Результат) И ОбъектПредставления<>Неопределено И Не ОбъектПредставления.Пустая() Тогда + Мета = ОбъектПредставления.Метаданные(); + Если Метаданные.Документы.Содержит(Мета) Тогда + Результат = Строка(ОбъектПредставления); + Иначе + Представление = Мета.ПредставлениеОбъекта; + Если ПустаяСтрока(Представление) Тогда + Представление = Мета.Представление(); + КонецЕсли; + Результат = Строка(ОбъектПредставления); + Если Не ПустаяСтрока(Представление) Тогда + Результат = Результат + " (" + Представление + ")"; + КонецЕсли; + КонецЕсли; + КонецЕсли; + + Если ПустаяСтрока(Результат) Тогда + Результат = НСтр("ru = 'не задано'"); + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Возвращает флаг того, что работа происходит в файловой базе +// +Функция ЭтоФайловаяБаза() Экспорт + Возврат Найти(СтрокаСоединенияИнформационнойБазы(), "File=")>0; +КонецФункции + +// Читает текущие данные из динамического списка по его настройкам и возвращает в виде таблицы значений +// +// Параметры: +// - ИсточникДанных - ДинамическийСписок, реквизит формы +// +Функция ТекущиеДанныеДинамическогоСписка(ИсточникДанных) Экспорт + + СхемаКомпоновки = Новый СхемаКомпоновкиДанных; + + Источник = СхемаКомпоновки.ИсточникиДанных.Добавить(); + Источник.Имя = "Источник"; + Источник.ТипИсточникаДанных = "local"; + + Набор = СхемаКомпоновки.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); + Набор.Запрос = ИсточникДанных.ТекстЗапроса; + Набор.АвтоЗаполнениеДоступныхПолей = Истина; + Набор.ИсточникДанных = Источник.Имя; + Набор.Имя = Источник.Имя; + + ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновки); + Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных; + Компоновщик.Инициализировать(ИсточникНастроек); + + ТекНастройки = Компоновщик.Настройки; + + // Выбранные поля + Для Каждого Элемент из ТекНастройки.Выбор.ДоступныеПоляВыбора.Элементы Цикл + Если Не Элемент.Папка Тогда + Поле = ТекНастройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных")); + Поле.Использование = Истина; + Поле.Поле = Элемент.Поле; + КонецЕсли; + КонецЦикла; + Группа = ТекНастройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных")); + Группа.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных")); + + // Отбор + СкопироватьОтборКомпоновкиДанных(ТекНастройки.Отбор, ИсточникДанных.Отбор); + + // Выводим + КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; + Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновки, ТекНастройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); + Процессор = Новый ПроцессорКомпоновкиДанных; + Процессор.Инициализировать(Макет); + Вывод = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; + + Результат = Новый ТаблицаЗначений; + Вывод.УстановитьОбъект(Результат); + Вывод.Вывести(Процессор); + + Возврат Результат; +КонецФункции + +// Читаем настройки из общего хранилища +// +Процедура ПрочитатьНастройки(КлючНастройки="") Экспорт + + КлючОбъекта = Метаданные().ПолноеИмя() + ".Форма.Форма"; + + ТекущиеНастройки = ХранилищеОбщихНастроек.Загрузить(КлючОбъекта); + Если ТипЗнч(ТекущиеНастройки)<>Тип("Соответствие") Тогда + // Умолчания + ТекущиеНастройки = Новый Соответствие; + ТекущиеНастройки.Вставить("НастройкаАвторегистрацияДвижений", Ложь); + ТекущиеНастройки.Вставить("НастройкаАвторегистрацияПоследовательностей", Ложь); + ТекущиеНастройки.Вставить("НастройкаАдресВнешнейОбработкиЗапросов", ""); + ТекущиеНастройки.Вставить("НастройкаКонтрольВыгрузкиОбъектов", Истина); // Проверять через БСП + ТекущиеНастройки.Вставить("НастройкаВариантНомераСообщения", 0); // Регистрировать как новое + КонецЕсли; + + НастройкаАвторегистрацияДвижений = ТекущиеНастройки["НастройкаАвторегистрацияДвижений"]; + НастройкаАвторегистрацияПоследовательностей = ТекущиеНастройки["НастройкаАвторегистрацияПоследовательностей"]; + НастройкаАдресВнешнейОбработкиЗапросов = ТекущиеНастройки["НастройкаАдресВнешнейОбработкиЗапросов"]; + НастройкаКонтрольВыгрузкиОбъектов = ТекущиеНастройки["НастройкаКонтрольВыгрузкиОбъектов"]; + НастройкаВариантНомераСообщения = ТекущиеНастройки["НастройкаВариантНомераСообщения"]; + + ПроверитьКорректностьНастроек(КлючНастройки); +КонецПроцедуры + +// Устанавливаем флаг поддержки БСП +// +Процедура ПрочитатьПризнакПоддержкиБСП() Экспорт + КонфигурацияПоддерживаетБСП = БСП_ДоступнаТребуемаяВерсия(); +КонецПроцедуры + +// Пишем настройки в общее хранилище +// +Процедура СохранитьНастройки(КлючНастройки="") Экспорт + + КлючОбъекта = Метаданные().ПолноеИмя() + ".Форма.Форма"; + + ТекущиеНастройки = Новый Соответствие; + ТекущиеНастройки.Вставить("НастройкаАвторегистрацияДвижений", НастройкаАвторегистрацияДвижений); + ТекущиеНастройки.Вставить("НастройкаАвторегистрацияПоследовательностей", НастройкаАвторегистрацияПоследовательностей); + ТекущиеНастройки.Вставить("НастройкаАдресВнешнейОбработкиЗапросов", НастройкаАдресВнешнейОбработкиЗапросов); + ТекущиеНастройки.Вставить("НастройкаКонтрольВыгрузкиОбъектов", НастройкаКонтрольВыгрузкиОбъектов); + ТекущиеНастройки.Вставить("НастройкаВариантНомераСообщения", НастройкаВариантНомераСообщения); + + ХранилищеОбщихНастроек.Сохранить(КлючОбъекта, "", ТекущиеНастройки) +КонецПроцедуры + +// Проверяем настройки на корректность, сбрасываем в случае нарушения. +// Возвращает структуру с ключом - именем настройки, значением содержит описанием ошибки или Неопределено +// при отсутствии ошибки для данного параметра +// +Функция ПроверитьКорректностьНастроек(КлючНастройки="") Экспорт + + Результат = Новый Структура("ЕстьОшибки, + |НастройкаАвторегистрацияДвижений, НастройкаАвторегистрацияПоследовательностей, + |НастройкаАдресВнешнейОбработкиЗапросов, НастройкаКонтрольВыгрузкиОбъектов, + |НастройкаВариантНомераСообщения", + Ложь); + + // Доступность внешней обработки + Если ПустаяСтрока(НастройкаАдресВнешнейОбработкиЗапросов) Тогда + // Убираем возможные пробелы, вариант отключен + НастройкаАдресВнешнейОбработкиЗапросов = ""; + + ИначеЕсли НРег(Прав(СокрЛП(НастройкаАдресВнешнейОбработкиЗапросов), 4))=".epf" Тогда + // Файл обработки + Файл = Новый Файл(НастройкаАдресВнешнейОбработкиЗапросов); + Если Не Файл.Существует() Тогда + Текст = НСтр("ru='Файл ""%1"" не доступен %2'"); + + Текст = СтрЗаменить(Текст, "%1", НастройкаАдресВнешнейОбработкиЗапросов); + Если ЭтоФайловаяБаза() Тогда + РасположениеФайла = ""; + Иначе + РасположениеФайла = НСтр("ru='на сервере'"); + КонецЕсли; + + Текст = СтрЗаменить(Текст, "%2", РасположениеФайла); + Результат.НастройкаАдресВнешнейОбработкиЗапросов = Текст; + + Результат.ЕстьОшибки = Истина; + КонецЕсли; + + Иначе + // В составе конфигурации + Если Метаданные.Обработки.Найти(НастройкаАдресВнешнейОбработкиЗапросов)=Неопределено Тогда + Текст = НСтр("ru='Обработка ""%1"" не найдена в составе конфигурации'"); + Результат.НастройкаАдресВнешнейОбработкиЗапросов = СтрЗаменить(Текст, "%1", НастройкаАдресВнешнейОбработкиЗапросов); + + Результат.ЕстьОшибки = Истина; + КонецЕсли; + + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Служебное для регистрации в подключаемых обработках +// +Функция СведенияОВнешнейОбработке() Экспорт + + Инфо = Новый Структура( + "Вид, Команды, БезопасныйРежим, Назначение, Наименование, Версия, Информация, ВерсияБСП", + "СозданиеСвязанныхОбъектов", Новый ТаблицаЗначений, Истина, Новый Массив); + + Инфо.Наименование = НСтр("ru='Регистрация изменений для обмена данными'"); + Инфо.Версия = "0.1"; + Инфо.ВерсияБСП = "1.2.1.4"; + Инфо.Информация = НСтр("ru='" + + "Обработка для управления регистрацией объектов на узлах обмена до формирования выгрузки. " + + "При работе в составе конфигурации с БСП версии 2.1.2.0 и старше производит контроль " + + "ограничений миграции данных для узлов обмена." + + "'"); + + Инфо.Назначение.Добавить("ПланыОбмена.*"); + Инфо.Назначение.Добавить("Константы.*"); + Инфо.Назначение.Добавить("Справочники.*"); + Инфо.Назначение.Добавить("Документы.*"); + Инфо.Назначение.Добавить("Последовательности.*"); + Инфо.Назначение.Добавить("ПланыВидовХарактеристик.*"); + Инфо.Назначение.Добавить("ПланыСчетов.*"); + Инфо.Назначение.Добавить("ПланыВидовРасчета.*"); + Инфо.Назначение.Добавить("РегистрыСведений.*"); + Инфо.Назначение.Добавить("РегистрыНакопления.*"); + Инфо.Назначение.Добавить("РегистрыБухгалтерии.*"); + Инфо.Назначение.Добавить("РегистрыРасчета.*"); + Инфо.Назначение.Добавить("БизнесПроцессы.*"); + Инфо.Назначение.Добавить("Задачи.*"); + + Колонки = Инфо.Команды.Колонки; + ТипСтрока = Новый ОписаниеТипов("Строка"); + Колонки.Добавить("Представление", ТипСтрока); + Колонки.Добавить("Идентификатор", ТипСтрока); + Колонки.Добавить("Использование", ТипСтрока); + Колонки.Добавить("Модификатор", ТипСтрока); + Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); + + // Единственная команда, что делать - определяем по типу переданного + Команда = Инфо.Команды.Добавить(); + Команда.Представление = НСтр("ru='Редактирование регистрации изменений объекта'"); + Команда.Идентификатор = "ОткрытьФормуРедактированияРегистрации"; + Команда.Использование = "ОткрытиеФормы"; + + Возврат Инфо; +КонецФункции + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// + +// +// Копирует отбор компоновки данных +// +Процедура СкопироватьОтборКомпоновкиДанных(ГруппаПриемник, ГруппаИсточник) + + КоллекцияИсточник = ГруппаИсточник.Элементы; + КоллекцияПриемник = ГруппаПриемник.Элементы; + Для Каждого Элемент Из КоллекцияИсточник Цикл + ТипЭлемента = ТипЗнч(Элемент); + НовыйЭлемент = КоллекцияПриемник.Добавить(ТипЭлемента); + + ЗаполнитьЗначенияСвойств(НовыйЭлемент, Элемент); + Если ТипЭлемента=Тип("ГруппаЭлементовОтбораКомпоновкиДанных") Тогда + СкопироватьОтборКомпоновкиДанных(НовыйЭлемент, Элемент) + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +// Выполняет непосредственное действие с конечным объектом +// +Процедура ВыполнитьКомандуРегистрацииОбъекта(Команда, Узел, ОбъектРегистрации) + + Если ТипЗнч(Команда)=Тип("Булево") Тогда + Если Команда Тогда + // Регистрация + Если НастройкаВариантНомераСообщения=1 Тогда + // Как отправленного + Команда = 1 + Узел.НомерОтправленного; + Иначе + // Как нового + ПланыОбмена.ЗарегистрироватьИзменения(Узел, ОбъектРегистрации); + КонецЕсли; + Иначе + // Отмена регистрации + ПланыОбмена.УдалитьРегистрациюИзменений(Узел, ОбъектРегистрации); + КонецЕсли; + КонецЕсли; + + Если ТипЗнч(Команда)=Тип("Число") Тогда + // Одиночная регистрация с указанным номером сообщения + ПланыОбмена.ЗарегистрироватьИзменения(Узел, ОбъектРегистрации); + Если Команда>0 Тогда + Выборка = ПланыОбмена.ВыбратьИзменения(Узел, Команда, ОбъектРегистрации); + Пока Выборка.Следующий() Цикл + // Выбираем изменения для простановки номера сообщения обмена данными + ; + КонецЦикла; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +// Возвращает управляемую форму, которой принадлежит элемент +// +Функция ФормаЭлементаФормы(ЭлементФормы) + Результат = ЭлементФормы; + ТипыФормы = Новый ОписаниеТипов("УправляемаяФорма"); + Пока Не ТипыФормы.СодержитТип(ТипЗнч(Результат)) Цикл + Результат = Результат.Родитель; + КонецЦикла; + Возврат Результат; +КонецФункции + +// Внутренняя для формирования группы метаданных (например справочников) в дереве метаданных +// +Процедура СформироватьУровеньМетаданных(ТекущийНомерСтроки, Параметры, ИндексКартинки, ИндексКартинкиУзлов, ДобавлятьПодчиненные, ИмяМета, ПредставлениеМета) + + ПредставленияУровня = Новый Массив; + Авторегистрации = Новый Массив; + ИменаУровня = Новый Массив; + + ВсеСтроки = Параметры.Строки; + МетаПлан = Параметры.ПланОбмена; + + СтрокаГруппа = ВсеСтроки.Добавить(); + СтрокаГруппа.ИдентификаторСтроки = ТекущийНомерСтроки; + + СтрокаГруппа.МетаПолноеИмя = ИмяМета; + СтрокаГруппа.Наименование = ПредставлениеМета; + СтрокаГруппа.ИндексКартинки = ИндексКартинки; + + Строки = СтрокаГруппа.Строки; + БылиПодчиненные = Ложь; + + Для Каждого Мета Из Метаданные[ИмяМета] Цикл + + Если МетаПлан=Неопределено Тогда + // Без учета плана обмена + БылиПодчиненные = Истина; + МетаПолноеИмя = Мета.ПолноеИмя(); + Наименование = Мета.Представление(); + Если ДобавлятьПодчиненные Тогда + НовСтрока = Строки.Добавить(); + НовСтрока.МетаПолноеИмя = МетаПолноеИмя; + НовСтрока.Наименование = Наименование ; + НовСтрока.ИндексКартинки = ИндексКартинкиУзлов; + + ТекущийНомерСтроки = ТекущийНомерСтроки + 1; + НовСтрока.ИдентификаторСтроки = ТекущийНомерСтроки; + КонецЕсли; + ИменаУровня.Добавить(МетаПолноеИмя); + ПредставленияУровня.Добавить(Наименование); + + Иначе + Элемент = МетаПлан.Состав.Найти(Мета); + Если Элемент<>Неопределено Тогда + БылиПодчиненные = Истина; + МетаПолноеИмя = Мета.ПолноеИмя(); + Наименование = Мета.Представление(); + Авторегистрация = ?(Элемент.Авторегистрация=АвтоРегистрацияИзменений.Запретить, 1, 2); + Если ДобавлятьПодчиненные Тогда + НовСтрока = Строки.Добавить(); + НовСтрока.МетаПолноеИмя = МетаПолноеИмя; + НовСтрока.Наименование = Наименование ; + НовСтрока.ИндексКартинки = ИндексКартинкиУзлов; + НовСтрока.Авторегистрация = Авторегистрация; + + ТекущийНомерСтроки = ТекущийНомерСтроки + 1; + НовСтрока.ИдентификаторСтроки = ТекущийНомерСтроки; + КонецЕсли; + ИменаУровня.Добавить(МетаПолноеИмя); + ПредставленияУровня.Добавить(Наименование); + Авторегистрации.Добавить(Авторегистрация); + КонецЕсли; + КонецЕсли; + + КонецЦикла; + + Если БылиПодчиненные Тогда + Строки.Сортировать("Наименование"); + Параметры.СтруктураИмен.Вставить(ИмяМета, ИменаУровня); + Параметры.СтруктураПредставлений.Вставить(ИмяМета, ПредставленияУровня); + Если Не ДобавлятьПодчиненные Тогда + Параметры.СтруктураАвторегистрации.Вставить(ИмяМета, Авторегистрации); + КонецЕсли; + Иначе + // Виды объектов без регистрации не вставляем + ВсеСтроки.Удалить(СтрокаГруппа); + КонецЕсли; + +КонецПроцедуры + +// Накапливаем результаты регистраций +// +Процедура ДобавитьРезультаты(Приемник, Источник) + Приемник.Успешно = Приемник.Успешно + Источник.Успешно; + Приемник.Всего = Приемник.Всего + Источник.Всего; +КонецПроцедуры + +// Возвращает массив дополнительно регистрируемых объектов согласно флагам +// +Функция ПолучитьДополнительныеОбъектыРегистрации(ОбъектРегистрации, УзелКонтроляАвторегистрации, БезАвторегистрации, ИмяТаблицы=Неопределено) + Результат = Новый Массив; + + // Смотрим на глобальные параметры + Если (Не НастройкаАвторегистрацияДвижений) И (Не НастройкаАвторегистрацияПоследовательностей) Тогда + Возврат Результат; + КонецЕсли; + + ТипЗначения = ТипЗнч(ОбъектРегистрации); + НаВходеИмя = ТипЗначения=Тип("Строка"); + Если НаВходеИмя Тогда + Описание = ХарактеристикиПоМетаданным(ОбъектРегистрации); + ИначеЕсли ТипЗначения=Тип("Структура") Тогда + Описание = ХарактеристикиПоМетаданным(ИмяТаблицы); + Если Описание.ЭтоПоследовательность Тогда + Возврат Результат; + КонецЕсли; + Иначе + Описание = ХарактеристикиПоМетаданным(ОбъектРегистрации.Метаданные()); + КонецЕсли; + + МетаОбъект = Описание.Метаданные; + + // Коллекцию рекурсивно + Если Описание.ЭтоКоллекция Тогда + Для Каждого Мета Из МетаОбъект Цикл + ДополнительныйНабор = ПолучитьДополнительныеОбъектыРегистрации(Мета.ПолноеИмя(), УзелКонтроляАвторегистрации, БезАвторегистрации, ИмяТаблицы); + Для Каждого Элемент Из ДополнительныйНабор Цикл + Результат.Добавить(Элемент); + КонецЦикла; + КонецЦикла; + Возврат Результат; + КонецЕсли; + + // Одиночное + СоставУзла = УзелКонтроляАвторегистрации.Метаданные().Состав; + + // Документы. Могут влиять на последовательности и движения + Если Метаданные.Документы.Содержит(МетаОбъект) Тогда + + Если НастройкаАвторегистрацияДвижений Тогда + Для Каждого Мета Из МетаОбъект.Движения Цикл + + ЭлементСостава = СоставУзла.Найти(Мета); + Если ЭлементСостава<>Неопределено И (БезАвторегистрации Или ЭлементСостава.Авторегистрация=АвтоРегистрацияИзменений.Разрешить) Тогда + Если НаВходеИмя Тогда + Результат.Добавить(Мета); + Иначе + Описание = ХарактеристикиПоМетаданным(Мета); + Набор = Описание.Менеджер.СоздатьНаборЗаписей(); + Набор.Отбор.Регистратор.Установить(ОбъектРегистрации); + Набор.Прочитать(); + Результат.Добавить(Набор); + // И проверим полученный набор рекурсивно + ДополнительныйНабор = ПолучитьДополнительныеОбъектыРегистрации(Набор, УзелКонтроляАвторегистрации, БезАвторегистрации, ИмяТаблицы); + Для Каждого Элемент Из ДополнительныйНабор Цикл + Результат.Добавить(Элемент); + КонецЦикла; + КонецЕсли; + КонецЕсли; + + КонецЦикла; + КонецЕсли; + + Если НастройкаАвторегистрацияПоследовательностей Тогда + Для Каждого Мета Из Метаданные.Последовательности Цикл + + Описание = ХарактеристикиПоМетаданным(Мета); + Если Мета.Документы.Содержит(МетаОбъект) Тогда + // Последовательность регистрируется для данного документа + ЭлементСостава = СоставУзла.Найти(Мета); + Если ЭлементСостава<>Неопределено И (БезАвторегистрации Или ЭлементСостава.Авторегистрация=АвтоРегистрацияИзменений.Разрешить) Тогда + // Регистрируется на этом узле + Если НаВходеИмя Тогда + Результат.Добавить(Мета); + Иначе + Набор = Описание.Менеджер.СоздатьНаборЗаписей(); + Набор.Отбор.Регистратор.Установить(ОбъектРегистрации); + Набор.Прочитать(); + Результат.Добавить(Набор); + КонецЕсли; + КонецЕсли; + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + + // Записи регистров. Могут влиять на последовательности + ИначеЕсли НастройкаАвторегистрацияПоследовательностей И ( + Метаданные.РегистрыСведений.Содержит(МетаОбъект) + Или Метаданные.РегистрыНакопления.Содержит(МетаОбъект) + Или Метаданные.РегистрыБухгалтерии.Содержит(МетаОбъект) + Или Метаданные.РегистрыРасчета.Содержит(МетаОбъект) + ) Тогда + Для Каждого Мета Из Метаданные.Последовательности Цикл + Если Мета.Движения.Содержит(МетаОбъект) Тогда + // Последовательность регистрируется для набора записей + ЭлементСостава = СоставУзла.Найти(Мета); + Если ЭлементСостава<>Неопределено И (БезАвторегистрации Или ЭлементСостава.Авторегистрация=АвтоРегистрацияИзменений.Разрешить) Тогда + Результат.Добавить(Мета); + КонецЕсли; + КонецЕсли; + КонецЦикла; + + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Преобразует строку в число +// +// Параметры: +// Текст - Строка - строковое представление числа +// +// Возвращаемое значение: +// Число - преобразованная строка +// Неопределено - если строка не может быть преобразована +// +Функция СтрокаВЧисло(Знач Текст) + ТекстЧисла = СокрЛП(СтрЗаменить(Текст, Символы.НПП, "")); + Позиция = 1; + + Пока Сред(ТекстЧисла, Позиция, 1)="0" Цикл + Позиция = Позиция + 1; + КонецЦикла; + + ТекстЧисла = Сред(ТекстЧисла, Позиция); + + // Проверяем на результат по умолчанию + Если ТекстЧисла="0" Тогда + Результат = 0; + Иначе + ТипЧисло = Новый ОписаниеТипов("Число"); + Результат = ТипЧисло.ПривестиЗначение(ТекстЧисла); + Если Результат=0 Тогда + // Результат по умолчанию обработан выше, это ошибка преобразования + Результат = Неопределено; + КонецЕсли; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Возвращает флаг того, что БСП в текущей конфигурации обеспечивает функционал +// +Функция БСП_ДоступнаТребуемаяВерсия() Экспорт + + // Ищем БСП 2.1.2 и старше + Попытка + ЧастиВерсии = Вычислить("СтандартныеПодсистемыСервер.ВерсияБиблиотеки()"); + Исключение + // Отсутствует или поломан метод определения версии, считаем БСП недоступной + Возврат Ложь; + КонецПопытки; + + ЧастиВерсии = СтрЗаменить(ЧастиВерсии, ".", Символы.ПС); + + НужнаяВерсия = Новый Массив; + НужнаяВерсия.Добавить(2); + НужнаяВерсия.Добавить(1); + НужнаяВерсия.Добавить(2); + + Для Индекс=0 По НужнаяВерсия.ВГраница() Цикл + ЧастьТекущейВерсии = СтрокаВЧисло(СтрПолучитьСтроку(ЧастиВерсии, Индекс + 1)); + ЧастьНужнойВерсии = НужнаяВерсия[Индекс]; + + Если ЧастьТекущейВерсии=Неопределено Тогда + Возврат Ложь; + ИначеЕсли ЧастьТекущейВерсии>ЧастьНужнойВерсии Тогда + Возврат Истина; + ИначеЕсли ЧастьТекущейВерсии<ЧастьНужнойВерсии Тогда + Возврат Ложь; + КонецЕсли; + КонецЦикла; + + Возврат Истина; +КонецФункции + +// Возвращает флаг контроля объекта в БСП +// +Функция БСП_КонтрольВыгрузкиОбъекта(Узлы, ОбъектРегистрации) + Отправка = ОтправкаЭлементаДанных.Авто; + Выполнить("ОбменДаннымиСобытия.ПриОтправкеДанныхКорреспонденту(ОбъектРегистрации, Отправка, , Узлы)"); + Возврат Отправка<>ОтправкаЭлементаДанных.Удалить; +КонецФункции + +// Проверяет ссылку на возможность регистрации изменения в БСП. +// Возвращает структуру с полями "Всего" и "Успешно", описывающей количества регистраций +// +Функция БСП_РегистрацияИзмененийСсылки(Узел, Ссылка, БезУчетаАвторегистрации=Истина) + + Результат = Новый Структура("Всего, Успешно", 0, 0); + + Если БезУчетаАвторегистрации Тогда + СоставУзла = Неопределено; + Иначе + СоставУзла = Узел.Метаданные().Состав; + КонецЕсли; + + ЭлементСостава = ?(СоставУзла=Неопределено, Неопределено, СоставУзла.Найти(Ссылка.Метаданные())); + Если ЭлементСостава=Неопределено Или ЭлементСостава.Авторегистрация=АвтоРегистрацияИзменений.Разрешить Тогда + // Сам объект + Результат.Всего = 1; + ОбъектРегистрации = Ссылка.ПолучитьОбъект(); + // Для битых ссылок ОбъектРегистрации будет Неопределено + Если ОбъектРегистрации=Неопределено Или БСП_КонтрольВыгрузкиОбъекта(Узел, ОбъектРегистрации) Тогда + ВыполнитьКомандуРегистрацииОбъекта(Истина, Узел, Ссылка); + Результат.Успешно = 1; + КонецЕсли; + ОбъектРегистрации = Неопределено; + КонецЕсли; + + // Смотрим опциональные варианты + Если Результат.Успешно>0 Тогда + Для Каждого Элемент Из ПолучитьДополнительныеОбъектыРегистрации(Ссылка, Узел, БезУчетаАвторегистрации) Цикл + Результат.Всего = Результат.Всего + 1; + Если БСП_КонтрольВыгрузкиОбъекта(Узел, Элемент) Тогда + ВыполнитьКомандуРегистрацииОбъекта(Истина, Узел, Элемент); + Результат.Успешно = Результат.Успешно + 1; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Проверяет набор значений на возможность регистрации изменения в БСП. +// Возвращает структуру с полями "Всего" и "Успешно", описывающей количества регистраций +// +Функция БСП_РегистрацияИзмененийНабора(Узел, СтруктураПолей, Описание, БезУчетаАвторегистрации=Истина) + + Результат = Новый Структура("Всего, Успешно", 0, 0); + + Если БезУчетаАвторегистрации Тогда + СоставУзла = Неопределено; + Иначе + СоставУзла = Узел.Метаданные().Состав; + КонецЕсли; + + ЭлементСостава = ?(СоставУзла=Неопределено, Неопределено, СоставУзла.Найти(Описание.Метаданные)); + Если ЭлементСостава=Неопределено Или ЭлементСостава.Авторегистрация=АвтоРегистрацияИзменений.Разрешить Тогда + Результат.Всего = 1; + + Набор = Описание.Менеджер.СоздатьНаборЗаписей(); + Для Каждого КлючЗначение Из СтруктураПолей Цикл + Набор.Отбор[КлючЗначение.Ключ].Установить(КлючЗначение.Значение); + КонецЦикла; + Набор.Прочитать(); + + Если БСП_КонтрольВыгрузкиОбъекта(Узел, Набор) Тогда + ВыполнитьКомандуРегистрацииОбъекта(Истина, Узел, Набор); + Результат.Успешно = 1; + КонецЕсли; + + КонецЕсли; + + // Смотрим опциональные варианты + Если Результат.Успешно>0 Тогда + Для Каждого Элемент Из ПолучитьДополнительныеОбъектыРегистрации(Набор, Узел, БезУчетаАвторегистрации) Цикл + Результат.Всего = Результат.Всего + 1; + Если БСП_КонтрольВыгрузкиОбъекта(Узел, Элемент) Тогда + ВыполнитьКомандуРегистрацииОбъекта(Истина, Узел, Элемент); + Результат.Успешно = Результат.Успешно + 1; + КонецЕсли; + КонецЦикла; + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Проверяет константу на возможность регистрации изменения в БСП. +// Возвращает структуру с полями "Всего" и "Успешно", описывающей количества регистраций +// +Функция БСП_РегистрацияИзмененийКонстанты(Узел, Описание, БезУчетаАвторегистрации=Истина) + + Результат = Новый Структура("Всего, Успешно", 0, 0); + + Если БезУчетаАвторегистрации Тогда + СоставУзла = Неопределено; + Иначе + СоставУзла = Узел.Метаданные().Состав; + КонецЕсли; + + ЭлементСостава = ?(СоставУзла=Неопределено, Неопределено, СоставУзла.Найти(Описание.Метаданные)); + Если ЭлементСостава=Неопределено Или ЭлементСостава.Авторегистрация=АвтоРегистрацияИзменений.Разрешить Тогда + Результат.Всего = 1; + ОбъектРегистрации = Описание.Менеджер.СоздатьМенеджерЗначения(); + Если БСП_КонтрольВыгрузкиОбъекта(Узел, ОбъектРегистрации) Тогда + ВыполнитьКомандуРегистрацииОбъекта(Истина, Узел, ОбъектРегистрации); + Результат.Успешно = 1; + КонецЕсли; + + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Проверяет набор метаданных на возможность регистрации изменения в БСП. +// Возвращает структуру с полями "Всего" и "Успешно", описывающей количества регистраций +// +Функция БСП_РегистрацияИзмененийМетаданных(Узел, Описание, БезУчетаАвторегистрации) + + Результат = Новый Структура("Всего, Успешно", 0, 0); + + Если Описание.ЭтоКоллекция Тогда + Для Каждого МетаВид Из Описание.Метаданные Цикл + ТекОписание = ХарактеристикиПоМетаданным(МетаВид); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийМетаданных(Узел, ТекОписание, БезУчетаАвторегистрации) ); + КонецЦикла; + Иначе; + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийОбъектаМетаданных(Узел, Описание, БезУчетаАвторегистрации) ); + КонецЕсли; + + Возврат Результат; +КонецФункции + +// Проверяет объект метаданных на возможность регистрации изменения в БСП. +// Возвращает структуру с полями "Всего" и "Успешно", описывающей количества регистраций +// +Функция БСП_РегистрацияИзмененийОбъектаМетаданных(Узел, Описание, БезУчетаАвторегистрации) + + Результат = Новый Структура("Всего, Успешно", 0, 0); + + ЭлементСостава = Узел.Метаданные().Состав.Найти(Описание.Метаданные); + Если ЭлементСостава=Неопределено Тогда + // Вообще не регистрируется + Возврат Результат; + КонецЕсли; + + Если (Не БезУчетаАвторегистрации) И ЭлементСостава.Авторегистрация<>АвтоРегистрацияИзменений.Разрешить Тогда + // Отсечение по авторегистрации + Возврат Результат; + КонецЕсли; + + ТекИмяТаблицы = Описание.ИмяТаблицы; + Если Описание.ЭтоКонстанта Тогда + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийКонстанты(Узел, Описание) ); + Возврат Результат; + + ИначеЕсли Описание.ЭтоСсылка Тогда + ПоляИзмерений = "Ссылка"; + + ИначеЕсли Описание.ЭтоНабор Тогда + ПоляИзмерений = ""; + Для Каждого Строка Из ИзмеренияНабораЗаписей(ТекИмяТаблицы) Цикл + ПоляИзмерений = ПоляИзмерений + "," + Строка.Имя + КонецЦикла; + ПоляИзмерений = Сред(ПоляИзмерений, 2); + + Иначе + Возврат Результат; + КонецЕсли; + + Запрос = Новый Запрос(" + |ВЫБРАТЬ РАЗЛИЧНЫЕ + | " + ?(ПустаяСтрока(ПоляИзмерений), "*", ПоляИзмерений) + " + |ИЗ + | " + ТекИмяТаблицы + " + |"); + Выборка = Запрос.Выполнить().Выбрать(); + Пока Выборка.Следующий() Цикл + Если Описание.ЭтоНабор Тогда + Данные = Новый Структура(ПоляИзмерений); + ЗаполнитьЗначенияСвойств(Данные, Выборка); + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийНабора(Узел, Данные, Описание) ); + ИначеЕсли Описание.ЭтоСсылка Тогда + ДобавитьРезультаты(Результат, БСП_РегистрацияИзмененийСсылки(Узел, Выборка.Ссылка, БезУчетаАвторегистрации) ); + КонецЕсли; + КонецЦикла; + + Возврат Результат; +КонецФункции + +#КонецЕсли diff --git a/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/РегистрацияИзмененийДляОбменаДанными.mdo b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/РегистрацияИзмененийДляОбменаДанными.mdo new file mode 100644 index 000000000..1ee1356b9 --- /dev/null +++ b/SSL/src/DataProcessors/РегистрацияИзмененийДляОбменаДанными/РегистрацияИзмененийДляОбменаДанными.mdo @@ -0,0 +1,178 @@ + + + + + + + РегистрацияИзмененийДляОбменаДанными + + ru + Регистрация изменений для обмена данными + + true + DataProcessor.РегистрацияИзмененийДляОбменаДанными.Form.Форма + DataProcessor.РегистрацияИзмененийДляОбменаДанными.Form.СообщениеОбОбычномИнтерфейсе + + НастройкаАвторегистрацияПоследовательностей + + ru + Авторегистрация последовательностей + + + Boolean + + + ru + Авторегистрация последовательностей + + + + + + НастройкаАвторегистрацияДвижений + + ru + Авторегистрация движений + + + Boolean + + + ru + Авторегистрация движений + + + + + + НастройкаАдресВнешнейОбработкиЗапросов + + ru + Адрес внешней обработки запросов + + + String + + + + ru + Адрес внешней обработки запросов + + + + + + НастройкаВариантНомераСообщения + + ru + Настройка вариант номера сообщения + + + Number + + 10 + + + + + + + НастройкаКонтрольВыгрузкиОбъектов + + ru + Конфигурация может контролировать выгрузку объектов + + При использовании в составе БСП 2.1.2 и старше + + Boolean + + + + + + КонфигурацияПоддерживаетБСП + + ru + Конфигурация поддерживает БСП + + Вычисляется при чтении настроек, ограничивает варианты настроек + + Boolean + + + + + + ВыборУзлаПланаОбмена + + ru + Выбор узла плана обмена + + PersonalComputer + MobileDevice + + + Форма + + ru + Регистрация изменений для обмена данными + + PersonalComputer + MobileDevice + + + НомераСообщенийУзлаПланаОбмена + + ru + Номера сообщений узла плана обмена + + PersonalComputer + MobileDevice + + + СообщениеОбОбычномИнтерфейсе + + ru + Сообщение об обычном интерфейсе + + Ordinary + PersonalComputer + MobileDevice + + + ВыборКонстанты + + ru + Выбор константы + + PersonalComputer + MobileDevice + + + ВыборОбъектовОтбором + + ru + Выбор объектов отбором + + PersonalComputer + MobileDevice + + + УзлыРегистрацииОбъекта + + ru + Узлы регистрации объекта + + PersonalComputer + MobileDevice + + + Настройки + + ru + Настройки + + PersonalComputer + MobileDevice + + diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ВыполнениеРегламентныхЗаданий/Form.form b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ВыполнениеРегламентныхЗаданий/Form.form index b24d142f0..647620e6c 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ВыполнениеРегламентныхЗаданий/Form.form +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ВыполнениеРегламентныхЗаданий/Form.form @@ -737,6 +737,10 @@ OnCreateAtServer ПриСозданииНаСервере + + OnClose + ПриЗакрытии + Abort Cancel Close @@ -748,7 +752,7 @@ SaveValues Yes 75 - DontBlock + LockOwner Use true true diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ВыполнениеРегламентныхЗаданий/Module.bsl b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ВыполнениеРегламентныхЗаданий/Module.bsl index 0e0e4b873..9c2635596 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ВыполнениеРегламентныхЗаданий/Module.bsl +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ВыполнениеРегламентныхЗаданий/Module.bsl @@ -21,6 +21,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ПриЗакрытии() + + ПрекратитьРаботуСистемы(Ложь); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ @@ -29,9 +36,7 @@ ПараметрыФормы = Новый Структура("СкрытьКомандуЗапускаОтдельногоСеанса", Истина); - ОткрытьФормуМодально( - "Обработка.РегламентныеИФоновыеЗадания.Форма.НастройкаВыполненияРегламентныхЗаданий", - ПараметрыФормы); + ОткрытьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.НастройкаВыполненияРегламентныхЗаданий", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -48,7 +53,7 @@ &НаКлиенте Процедура ПрекратитьВыполнениеИЗавершитьСеансВыполнить() - Закрыть(); + ПрекратитьРаботуСистемы(Ложь); КонецПроцедуры @@ -64,7 +69,10 @@ Результат = ВыполнитьРегламентныеЗаданияСервер(ПараметрЗапуска); Если Результат.ПрекратитьВыполнение Тогда - Закрыть(?(Результат.Перезапустить, "Перезапустить", Неопределено)); + Если Результат = "Перезапустить" Тогда + ПрекратитьРаботуСистемы(Истина, " /C""" + ПараметрЗапуска + """"); + КонецЕсли; + ПрекратитьРаботуСистемы(Ложь); КонецЕсли; КонецЕсли; @@ -145,4 +153,3 @@ ЗначениеВРеквизитФормы(НоваяТаблицаЗаданий, "ТаблицаРегламентныхЗаданий"); КонецПроцедуры - diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/НастройкаВыполненияРегламентныхЗаданий/Help/ru.html b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/НастройкаВыполненияРегламентныхЗаданий/Help/ru.html index a795fe545..c2d25d049 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/НастройкаВыполненияРегламентныхЗаданий/Help/ru.html +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/НастройкаВыполненияРегламентныхЗаданий/Help/ru.html @@ -1,4 +1,4 @@ - +

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

            diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/НастройкаВыполненияРегламентныхЗаданий/Module.bsl b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/НастройкаВыполненияРегламентныхЗаданий/Module.bsl index ce9d6b4a8..7403c7b05 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/НастройкаВыполненияРегламентныхЗаданий/Module.bsl +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/НастройкаВыполненияРегламентныхЗаданий/Module.bsl @@ -8,7 +8,7 @@ Возврат; КонецЕсли; - Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + Если НЕ РегламентныеЗаданияСлужебный.ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий() Тогда Отказ = Истина; КонецЕсли; diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html index 83dedb838..162879b0f 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Help/ru.html @@ -1,4 +1,4 @@ - +

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

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

            1. Группа свойств "Основное".

            diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Module.bsl b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Module.bsl index 2cef7b885..37034e6b5 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Module.bsl +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентноеЗадание/Module.bsl @@ -22,7 +22,8 @@ ВызватьИсключение НСтр("ru = 'Неверные параметры открытия формы ""Регламентное задание"".'"); КонецЕсли; - Элементы.ИмяПользователя.Доступность = НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая(); + Элементы.ИмяПользователя.Доступность = + НЕ РегламентныеЗаданияСлужебный.ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий(); Если Действие = "Добавить" Тогда diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Form.form b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Form.form index 07fcb7f68..37f9b35ec 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Form.form +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Form.form @@ -3119,10 +3119,10 @@ - ИнформационнаяБазаФайловая + ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий <key>ru</key> - <value>Информационная база файловая</value> + <value>Информационная база файловая без менеджера фоновых заданий</value> 16 diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Module.bsl b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Module.bsl index 27189b806..cec6faf2c 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Module.bsl +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/РегламентныеИФоновыеЗадания/Module.bsl @@ -15,11 +15,13 @@ |выполняется только администраторами.'"); КонецЕсли; - ИнформационнаяБазаФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая(); + ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий = + РегламентныеЗаданияСлужебный.ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий(); + ПустойИдентификатор = Строка(Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000")); ТекстНеОпределено = РегламентныеЗаданияСлужебный.ТекстНеОпределено(); - Если ИнформационнаяБазаФайловая Тогда + Если ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий Тогда Элементы.ИмяПользователя.Видимость = Ложь; Если НЕ СтандартныеПодсистемыСервер.ЭтоБазоваяВерсияКонфигурации() Тогда Элементы.ТаблицаРегламентныеЗаданияНастройкаВыполнения.Видимость = Истина; @@ -212,7 +214,7 @@ ПроцедураУжеВыполняется = Неопределено; ТекущиеДанные = ТаблицаРегламентныеЗадания.НайтиПоИдентификатору(ВыделеннаяСтрока); - Если ИнформационнаяБазаФайловая Тогда + Если ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий Тогда МоментЗапуска = Неопределено; МоментОкончания = Неопределено; @@ -227,8 +229,7 @@ НачалоСеанса, , ОбновитьВсе, - ПроцедураУжеВыполняется - ); + ПроцедураУжеВыполняется); Если ПроцедураВыполнена Тогда ПоказатьОповещениеПользователя( @@ -248,9 +249,7 @@ | уже выполняется в сеансе %2, открытом %3.'"), ТекущиеДанные.Наименование, Строка(НомерСеанса), - Строка(НачалоСеанса) - ) - ); + Строка(НачалоСеанса))); Иначе Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки.Удалить( Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки.Найти(ВыделеннаяСтрока)); @@ -295,9 +294,7 @@ | уже выполняется в фоновом задании ""%2"", начатом %3.'"), ТекущиеДанные.Наименование, ПредставлениеФоновогоЗадания, - Строка(МоментЗапуска) - ) - ); + Строка(МоментЗапуска))); Иначе Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки.Удалить( Элементы.ТаблицаРегламентныеЗадания.ВыделенныеСтроки.Найти(ВыделеннаяСтрока)); @@ -312,8 +309,7 @@ ЗаголовокТекстаПроОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Задания выполнены с ошибками (%1 из %2)'"), Формат(КоличествоОшибок, "ЧГ="), - Формат(ВыделенныеСтроки.Количество(), "ЧГ=") - ); + Формат(ВыделенныеСтроки.Количество(), "ЧГ=")); ТекстВсехОшибок = Новый ТекстовыйДокумент; ТекстВсехОшибок.ДобавитьСтроку(ЗаголовокТекстаПроОшибки + ":"); @@ -356,9 +352,7 @@ ПараметрыФормы = Новый Структура("СкрытьКомандуЗапускаОтдельногоСеанса", Истина); - ОткрытьФормуМодально( - "Обработка.РегламентныеИФоновыеЗадания.Форма.НастройкаВыполненияРегламентныхЗаданий", - ПараметрыФормы); + ОткрытьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.НастройкаВыполненияРегламентныхЗаданий", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -518,7 +512,7 @@ ПараметрыФормы.Вставить("Идентификатор", Элементы.ТаблицаФоновыеЗадания.ТекущиеДанные.Идентификатор); ПараметрыФормы.Вставить("СвойстваФоновогоЗадания", ЗначенияТекущихДанных); - ОткрытьФормуМодально("Обработка.РегламентныеИФоновыеЗадания.Форма.ФоновоеЗадание", ПараметрыФормы); + ОткрытьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.ФоновоеЗадание", ПараметрыФормы, ЭтаФорма); КонецЕсли; КонецПроцедуры @@ -650,7 +644,7 @@ ОбновитьВсе = Ложь, ПроцедураУжеВыполняется = Неопределено) - Если ИнформационнаяБазаФайловая Тогда + Если ИнформационнаяБазаФайловаяБезМенеджераФоновыхЗаданий Тогда МоментЗапуска = ТекущаяДатаСеанса(); КонецЕсли; @@ -708,7 +702,7 @@ ПараметрыФормы.Вставить("Идентификатор", Элементы.ТаблицаРегламентныеЗадания.ТекущиеДанные.Идентификатор); ПараметрыФормы.Вставить("Действие", Действие); - ОткрытьФормуМодально("Обработка.РегламентныеИФоновыеЗадания.Форма.РегламентноеЗадание", ПараметрыФормы); + ОткрытьФорму("Обработка.РегламентныеИФоновыеЗадания.Форма.РегламентноеЗадание", ПараметрыФормы, ЭтаФорма); КонецЕсли; КонецПроцедуры @@ -736,10 +730,33 @@ ТекущиеЗадания = РегламентныеЗадания.ПолучитьРегламентныеЗадания(); Таблица = ТаблицаРегламентныеЗадания; + ЗаданияВМоделиСервиса = Новый Соответствие; + ПодсистемаРаботаВМоделиСервиса = Метаданные.Подсистемы.СтандартныеПодсистемы.Подсистемы.Найти("РаботаВМоделиСервиса"); + Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() И ПодсистемаРаботаВМоделиСервиса <> Неопределено Тогда + Для каждого ОбъектМетаданных Из Метаданные.РегламентныеЗадания Цикл + Если ПодсистемаРаботаВМоделиСервиса.Состав.Содержит(ОбъектМетаданных) Тогда + ЗаданияВМоделиСервиса.Вставить(ОбъектМетаданных.Имя, Истина); + Продолжить; + КонецЕсли; + Для каждого Подсистема Из ПодсистемаРаботаВМоделиСервиса.Подсистемы Цикл + Если Подсистема.Состав.Содержит(ОбъектМетаданных) Тогда + ЗаданияВМоделиСервиса.Вставить(ОбъектМетаданных.Имя, Истина); + Продолжить; + КонецЕсли; + КонецЦикла; + КонецЦикла; + КонецЕсли; + Если ИдентификаторРегламентногоЗадания = Неопределено Тогда Индекс = 0; Для каждого Задание ИЗ ТекущиеЗадания Цикл + Если НЕ ОбщегоНазначенияПовтИсп.РазделениеВключено() + И ЗаданияВМоделиСервиса[Задание.Метаданные.Имя] <> Неопределено Тогда + + Продолжить; + КонецЕсли; + Идентификатор = Строка(Задание.УникальныйИдентификатор); Если Индекс >= Таблица.Количество() diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ФоновоеЗадание/Help/ru.html b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ФоновоеЗадание/Help/ru.html index 9983b0f26..547488046 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ФоновоеЗадание/Help/ru.html +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Forms/ФоновоеЗадание/Help/ru.html @@ -1,4 +1,4 @@ - +

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

            1. Группа свойств "Основное".

            diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Help/ru.html b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Help/ru.html index 4788315b6..c095b2706 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Help/ru.html +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/Help/ru.html @@ -1,4 +1,4 @@ - +

            В целях администрирования регламентных и фоновых заданий система предоставляет следующие возможности:

            1. Контроль выполнения регламентных заданий.
            2. Регламентные задания. @@ -10,7 +10,7 @@

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

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

              -

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

              +

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

            Наименование свойства
            @@ -28,7 +28,7 @@

            Только для файловой ИБ. Открывает форму настройки выполнения регламентных заданий.

            Команда Описание
            Обновить Обновляет список регламентных заданий (и список фоновых с учетом заданного отбора, т.к. списки связаны).
            Добавить
            Запустить отдельный сеанс для выполнения регламентных заданий

            Только для файловой ИБ. Запускает отдельный сеанс для выполнения регламентных заданий. Фактически, производится запуск отдельного сеанса с параметрами, такими, что сеанс открывается только для выполнения регламентных заданий, считает текущий сеанс родительским и при его завершении автоматически закрывается.

             

            -

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

            +

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

            diff --git a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/РегламентныеИФоновыеЗадания.mdo b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/РегламентныеИФоновыеЗадания.mdo index 14760b825..68b11464e 100644 --- a/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/РегламентныеИФоновыеЗадания.mdo +++ b/SSL/src/DataProcessors/РегламентныеИФоновыеЗадания/РегламентныеИФоновыеЗадания.mdo @@ -11,6 +11,7 @@ trueDataProcessor.РегламентныеИФоновыеЗадания.Form.РегламентныеИФоновыеЗадания + true ru @@ -22,7 +23,6 @@ ru Регламентные и фоновые задания - true PersonalComputer MobileDevice diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИнформационнойБазыИзРезервнойКопии/Help/ru.html b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИнформационнойБазыИзРезервнойКопии/Help/ru.html index f118abbdd..e927b27c4 100644 --- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИнформационнойБазыИзРезервнойКопии/Help/ru.html +++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИнформационнойБазыИзРезервнойКопии/Help/ru.html @@ -1,4 +1,4 @@ - +

            Выполняет восстановление данных из резервной копии.

            Обязательное заполнение: Путь к файлу с резервной копией. В данном поле необходимо выбрать файл, из которого будет восстановлена информационная база. Примечание: в данном помощнике при восстановлении данных можно использовать только архивы формата .zip, содержащие один файл - файл информационной базы 1cv8.cd. Лучше всего использовать архивы, созданные помощником создания резервной копии.

            Также предоставляет возможность сделать резервную копию базы перед ее восстановлением - таким образом, можно сохранить те данные, которые имеются на данный момент. Для формирования резервной копии необходимо установить флажок "Сделать резервную копию перед восстановлением данных". Кроме того, потребуется указать каталог, куда будет сохранена резервная копия.

            diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИнформационнойБазыИзРезервнойКопии/Module.bsl b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИнформационнойБазыИзРезервнойКопии/Module.bsl index df178acc8..13c9e0d4f 100644 --- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИнформационнойБазыИзРезервнойКопии/Module.bsl +++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/ВосстановлениеДанныхИнформационнойБазыИзРезервнойКопии/Module.bsl @@ -3,11 +3,14 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; // Отказ устанавливается в ПриОткрытии(). + КонецЕсли; + Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда ВызватьИсключение НСтр("ru = 'В клиент-серверном варианте работы резервное копирование следует выполнять сторонними средствами (средствами СУБД).'"); КонецЕсли; @@ -16,6 +19,21 @@ КонецПроцедуры +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Резервное копирование программы недоступно в клиенте под управлением ОС Linux.'"); + Предупреждение(ТекстСообщения); + Возврат; + КонецЕсли; + + АдминистраторИБ = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИнформацияОПользователе.Имя; + ИмяФайлаЗапускаПриложенияВРежимеПредприятия = ПолучитьИмяФайлаЗапускаПриложенияВРежимеПредприятия(); + +КонецПроцедуры + &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) @@ -29,20 +47,11 @@ Процедура ПриЗакрытии() ОтключитьОбработчикОжидания("ИстечениеВремениОжидания"); - ОтключитьОбработчикОжидания("ПроверкаНаЕдинственностьПодключения"); + ОтключитьОбработчикОжидания("ПроверкаНаЕдинственностьПодключения"); ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей"); КонецПроцедуры -&НаКлиенте -Процедура ПриОткрытии(Отказ) - - АдминистраторИБ = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИнформацияОПользователе.Имя; - ИмяФайлаЗапускаПриложенияВРежимеПредприятия = ПолучитьИмяФайлаЗапускаПриложенияВРежимеПредприятия(); - -КонецПроцедуры - - //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -66,14 +75,14 @@ &НаКлиенте Процедура НадписьСписокДействий1Нажатие(Элемент) - ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); + ОткрытьФорму("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей", , ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура СписокПользователейНажатие(Элемент) - ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); + ОткрытьФорму("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей", , ЭтаФорма); КонецПроцедуры @@ -87,7 +96,7 @@ &НаКлиенте Процедура НадписьПерейтиВЖурналРегистрации1Нажатие(Элемент) - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации"); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", , ЭтаФорма); КонецПроцедуры @@ -205,7 +214,7 @@ "Ошибка", Строка(ТекущаяДата) + " " + ТекстСообщения + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Код ошибки regsvr32: %1. - | (Код ошибки 5 означает, что недостаточно прав доступа. Выполните командну от имени пользователя с правами администратора на локальной машине.) + | (Код ошибки 5 означает, что недостаточно прав доступа. Выполните команду от имени пользователя с правами администратора на локальной машине.) | |Текст команды: |%2'"), СтрокаФайла, ТекстКоманды)); @@ -226,7 +235,6 @@ КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -263,7 +271,7 @@ КонецПроцедуры -// Подключает обработкчик ожидания истечения таймаута перед принудительным стартом резервного копирования/восстановления данных. +// Подключает обработчик ожидания истечения таймаута перед принудительным стартом резервного копирования/восстановления данных. &НаКлиенте Процедура УстановитьОбработчикОжиданияИстеченияТаймаутаРезервногоКопирования() @@ -340,7 +348,7 @@ КонецЕсли; Если (Объект.ПроводитьРезервноеКопированиеПриВосстановленииДанных И ПустаяСтрока(Объект.КаталогСРезервнымиКопиями)) Тогда - ТекстСообщения = НСтр("ru = 'Не выбран каталог для резервной копии.'"); + ТекстСообщения = НСтр("ru = 'Не выбран каталог для резервной копии.'"); Попытка ТестовыйФайл = Новый ЗаписьXML; ТестовыйФайл.ОткрытьФайл(Объект.КаталогСРезервнымиКопиями + "/test.test1С"); @@ -357,7 +365,7 @@ КонецЕсли; Если Объект.ПроводитьРезервноеКопированиеПриВосстановленииДанных И НайтиФайлы(Объект.КаталогСРезервнымиКопиями).Количество() = 0 Тогда - ТекстСообщения = НСтр("ru = 'Выбран несуществующий каталог для резервных копий.'"); + ТекстСообщения = НСтр("ru = 'Выбран несуществующий каталог для резервных копий.'"); Возврат Ложь; КонецЕсли; @@ -596,10 +604,10 @@ Результат = СтрЗаменить(Результат, "[ИмяАдминистратораОбновления]" , ПодготовитьТекст(ИмяПользователя())); Результат = СтрЗаменить(Результат, "[СоздаватьРезервнуюКопию]" ,"true"); - Результат = СтрЗаменить(Результат, "[КаталогРезервнойКопии]",ПодготовитьТекст(Объект.ФайлЗагрузкиРезервнойКопии)); + Результат = СтрЗаменить(Результат, "[КаталогРезервнойКопии]",ПодготовитьТекст(Объект.ФайлЗагрузкиРезервнойКопии)); СтрокаКаталога = ПроверитьКаталогНаУказаниеКорневогоЭлемента(Объект.КаталогСРезервнымиКопиями); - Результат = СтрЗаменить(Результат, "[КаталогРезервнойКопии2]" ,ПодготовитьТекст(СтрокаКаталога+"\backup"+СтрокаКаталогаИзДаты())); + Результат = СтрЗаменить(Результат, "[КаталогРезервнойКопии2]" ,ПодготовитьТекст(СтрокаКаталога+"\backup"+СтрокаКаталогаИзДаты())); Результат = СтрЗаменить(Результат, "[ПроводитьДопРезервноеКопирование]",?(Объект.ПроводитьРезервноеКопированиеПриВосстановленииДанных,"true","false")); Результат = СтрЗаменить(Результат, "[ВосстанавливатьИнформационнуюБазу]" , "false"); Результат = СтрЗаменить(Результат, "[БлокироватьСоединенияИБ]" , ?(СтруктураПараметров.ИнформационнаяБазаФайловая, "false", "true")); diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Form.form b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Form.form index 353f4561d..329f2ed9b 100644 --- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Form.form +++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Form.form @@ -23,7 +23,7 @@ НадписьДатаПроведенияПоследнегоРезервногоКопированияРасширеннаяПодсказка - 291 + 293 Label true true @@ -62,7 +62,7 @@ ГруппаИнформацииОПоследнемРезервномКопированииРасширеннаяПодсказка - 290 + 292 Label true true @@ -93,7 +93,7 @@ НадписьПроведенияРезервногоКопированияРасширеннаяПодсказка - 292 + 294 Label true true @@ -135,7 +135,7 @@ ПереключательИнтерактивногоРезервногоКопированияРасширеннаяПодсказка - 294 + 296 Label true true @@ -200,7 +200,7 @@ ГруппаПереключателяРасширеннаяПодсказка - 293 + 295 Label true true @@ -234,7 +234,7 @@ НадписьКаталогРасширеннаяПодсказка - 297 + 299 Label true true @@ -268,7 +268,7 @@ None ПутьККаталогуАрхивовРасширеннаяПодсказка - 298 + 300 Label true true @@ -316,7 +316,7 @@ ГруппаКаталогаРасширеннаяПодсказка - 296 + 298 Label true true @@ -347,7 +347,7 @@ НадписьРекомендацииПоВыборуПутиРасширеннаяПодсказка - 300 + 302 Label true true @@ -394,7 +394,7 @@ АдминистраторИБРасширеннаяПодсказка - 304 + 306 Label true true @@ -436,7 +436,7 @@ ПарольАдминистратораИБРасширеннаяПодсказка - 306 + 308 Label true true @@ -483,7 +483,7 @@ false ГруппаАвторизацииПерваяРасширеннаяПодсказка - 303 + 305 Label true true @@ -523,7 +523,7 @@ КартинкаПредупреждениеРасширеннаяПодсказка - 310 + 312 Label true true @@ -561,7 +561,7 @@ ГруппаКартинкиРасширеннаяПодсказка - 309 + 311 Label true true @@ -597,7 +597,7 @@ НадписьРаботыПользователейРасширеннаяПодсказка - 312 + 314 Label true true @@ -633,7 +633,7 @@ НадписьСписокДействийРасширеннаяПодсказка - 313 + 315 Label true true @@ -676,7 +676,7 @@ ГруппаНадписейРасширеннаяПодсказка - 311 + 313 Label true true @@ -709,7 +709,7 @@ АктивныеПользователиРасширеннаяПодсказка - 308 + 310 Label true true @@ -740,7 +740,7 @@ НадписьНетАктивныхПользователейРасширеннаяПодсказка - 314 + 316 Label true true @@ -775,7 +775,7 @@ СтраницаКопированиеСейчасРасширеннаяПодсказка - 302 + 304 Label true true @@ -815,7 +815,7 @@ ПериодОтложенногоОповещенияРасширеннаяПодсказка - 318 + 320 Label true true @@ -860,7 +860,7 @@ None ЕдиницаИзмеренияПериодаОповещенияРасширеннаяПодсказка - 320 + 322 Label true true @@ -914,7 +914,7 @@ Группа3РасширеннаяПодсказка - 317 + 319 Label true true @@ -948,7 +948,7 @@ НадписьПояснениеПараметровКопированияРасширеннаяПодсказка - 323 + 325 Label true true @@ -979,7 +979,7 @@ Группа2РасширеннаяПодсказка - 322 + 324 Label true true @@ -1012,7 +1012,7 @@ Right ВыполнитьПриЗавершенииРаботыРасширеннаяПодсказка - 324 + 326 Label true true @@ -1047,7 +1047,7 @@ ГруппаПериодаОтложенногоКопированияРасширеннаяПодсказка - 316 + 318 Label true true @@ -1082,7 +1082,7 @@ АдминистраторИБ1РасширеннаяПодсказка - 327 + 329 Label true true @@ -1124,7 +1124,7 @@ ПарольАдминистратораИБ1РасширеннаяПодсказка - 329 + 331 Label true true @@ -1170,7 +1170,7 @@ false ГруппаАвторизацииВтораяРасширеннаяПодсказка - 326 + 328 Label true true @@ -1205,7 +1205,7 @@ СтраницаКопированиеПозднееРасширеннаяПодсказка - 315 + 317 Label true true @@ -1238,7 +1238,7 @@ АдминистраторИБ2РасширеннаяПодсказка - 333 + 335 Label true true @@ -1280,7 +1280,7 @@ ПарольАдминистратораИБ2РасширеннаяПодсказка - 335 + 337 Label true true @@ -1326,7 +1326,7 @@ false ГруппаАвторизацииТретьяРасширеннаяПодсказка - 332 + 334 Label true true @@ -1356,7 +1356,7 @@ Декорация4РасширеннаяПодсказка - 337 + 339 Label true true @@ -1391,7 +1391,7 @@ СтраницаПустаяРасширеннаяПодсказка - 331 + 333 Label true true @@ -1420,7 +1420,7 @@ ПараметрыИнтерактивногоРезервногоКопированияРасширеннаяПодсказка - 301 + 303 Label true true @@ -1443,7 +1443,7 @@ Декорация1РасширеннаяПодсказка - 338 + 340 Label true true @@ -1478,7 +1478,7 @@ НадписьПояснениеКИнтерактивномуКопированиюРасширеннаяПодсказка - 339 + 341 Label true true @@ -1513,7 +1513,7 @@ СтраницаВыполненияРезервногоКопированияРасширеннаяПодсказка - 289 + 291 Label true true @@ -1547,7 +1547,7 @@ НадписьПоясненияРасширеннаяПодсказка - 342 + 344 Label true true @@ -1591,7 +1591,7 @@ ГруппаПоясненияРасширеннаяПодсказка - 341 + 343 Label true true @@ -1624,7 +1624,7 @@ Декорация5РасширеннаяПодсказка - 345 + 347 Label true true @@ -1662,7 +1662,7 @@ ГруппаКартинкиАктивныхПользователейРасширеннаяПодсказка - 344 + 346 Label true true @@ -1697,7 +1697,7 @@ СписокПользователейРасширеннаяПодсказка - 347 + 349 Label true true @@ -1733,7 +1733,7 @@ КоличествоАктивныхПользователейРасширеннаяПодсказка - 348 + 350 Label true true @@ -1769,7 +1769,7 @@ ГруппаНадписиАктивныхПользователейРасширеннаяПодсказка - 346 + 348 Label true true @@ -1801,7 +1801,7 @@ ГруппаАктивныхПользователейРасширеннаяПодсказка - 343 + 345 Label true true @@ -1833,7 +1833,7 @@ НадписьОтключениеПользователейРасширеннаяПодсказка - 349 + 351 Label true true @@ -1863,7 +1863,7 @@ НадписьВремяОжиданияРезервногоКопированияРасширеннаяПодсказка - 350 + 352 Label true true @@ -1900,7 +1900,7 @@ СтраницаИнформацииИВыполненияРезервногоКопированияРасширеннаяПодсказка - 340 + 342 Label true true @@ -1925,7 +1925,7 @@ 99 <key>ru</key> - <value>Резервное копирование проведено успешно!</value> + <value>Резервное копирование проведено успешно</value> true true @@ -1934,7 +1934,7 @@ НадписьУспешногоКопированияРасширеннаяПодсказка - 353 + 355 Label true true @@ -1953,121 +1953,24 @@ true true - System.SystemFont + System.DefaultGUIFont + 10.0 + true + false + false + false Left - true - true - - true - - - <key>ru</key> - <value>Группа объявления о успешном РК</value> - - - ru - Группа объявления о успешном РК - - - ГруппаОбъявленияОУспешномРКРасширеннаяПодсказка - 352 - Label - true - true - - Left - - - UsualGroup - - Auto - true - true - Auto - Auto - - - - ГруппаБлагодарностиЗаПользование - 101 - - НадписьБлагодарность - 102 - - <key>ru</key> - <value>Спасибо, что воспользовались помощником резервного копирования базы</value> - - true - true - - true - - - НадписьБлагодарностьРасширеннаяПодсказка - 355 - Label - true - true - - Left - - - - НадписьБлагодарностьКонтекстноеМеню - 103 - true - - Label - true - true - - Left - - - - НадписьОбъясненияПутиКопирования - 207 - - <key>ru</key> - <value>Файл с резервной копией:</value> - - true - true - - true - - - НадписьОбъясненияПутиКопированияРасширеннаяПодсказка - 356 - Label - true - true - - Left - - - - НадписьОбъясненияПутиКопированияКонтекстноеМеню - 208 - true - - Label - true - true - - Style.ПоясняющийТекст - - - Left - - ТекстПути 260 + + <key>ru</key> + <value>Резервная копия базы сохранена на диск</value> + true true @@ -2076,10 +1979,10 @@ ТекстПути - None + Top ТекстПутиРасширеннаяПодсказка - 357 + 356 Label true true @@ -2113,6 +2016,43 @@ Normal + + НадписьИнформацияОВосстановлении + 285 + + <key>ru</key> + <value>Для восстановления данных из резервной копии можно воспользоваться командой "Восстановление из резервной копии" раздела Администрирование.</value> + + true + true + + true + + + НадписьИнформацияОВосстановленииРасширеннаяПодсказка + 358 + Label + true + true + + Left + + + + НадписьИнформацияОВосстановленииКонтекстноеМеню + 286 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + true true @@ -2120,14 +2060,14 @@ <key>ru</key> - <value>Группа благодарности за пользование</value> + <value>Группа объявления о успешном РК</value> ru - Группа благодарности за пользование + Группа объявления о успешном РК - ГруппаБлагодарностиЗаПользованиеРасширеннаяПодсказка + ГруппаОбъявленияОУспешномРКРасширеннаяПодсказка 354 Label true @@ -2161,7 +2101,7 @@ СтраницаУспешногоВыполненияКопированияРасширеннаяПодсказка - 351 + 353 Label true true @@ -2214,7 +2154,12 @@ true true - System.SystemFont + System.DefaultGUIFont + 10.0 + true + false + false + false Left @@ -3120,7 +3065,7 @@ СтраницыПомощникаРасширеннаяПодсказка - 288 + 290 Label true true @@ -3151,7 +3096,7 @@ НазадРасширеннаяПодсказка - 285 + 287 Label true true @@ -3181,7 +3126,7 @@ ДалееРасширеннаяПодсказка - 286 + 288 Label true true @@ -3211,7 +3156,7 @@ ОтменаРасширеннаяПодсказка - 287 + 289 Label true true diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Help/ru.html b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Help/ru.html index 4b2db74f1..28ba2a1a4 100644 --- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Help/ru.html +++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Help/ru.html @@ -1,4 +1,4 @@ - +

            Основная форма создания резервной копии информационной базы.

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

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

            diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Module.bsl b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Module.bsl index 74233a6e8..39e0c07a4 100644 --- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Module.bsl +++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Forms/РезервноеКопированиеИнформационнойБазы/Module.bsl @@ -1,42 +1,23 @@ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ -&НаКлиенте -Процедура ПриОткрытии(Отказ) - - ИмяФайлаЗапускаПриложенияВРежимеПредприятия = ПолучитьИмяФайлаЗапускаПриложенияВРежимеПредприятия(); - - АдминистраторИБ = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИнформацияОПользователе.Имя; - Если ТипВызова = 1 или ТипВызова = 2 Тогда - Если ПараметрыРезервногоКопированияИБ.Свойство("ПарольАдминистратораИБ") Тогда - ПарольАдминистратораИБ = ПараметрыРезервногоКопированияИБ.ПарольАдминистратораИБ; - КонецЕсли; - КонецЕсли; - - Если Не ПустаяСтрока(ТекстПути) Тогда - ПриОткрытииНовойСтраницы(Элементы.СтраницыПомощника.ТекущаяСтраница, ТекстПути); - Иначе - ПриОткрытииНовойСтраницы(Элементы.СтраницыПомощника.ТекущаяСтраница); - КонецЕсли; - - УстановитьЗаголовокКнопкиДалее(Истина); - -КонецПроцедуры - &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Возврат; // Отказ устанавливается в ПриОткрытии(). + КонецЕсли; + Если НЕ ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда ВызватьИсключение НСтр("ru = 'В клиент-серверном варианте работы резервное копирование следует выполнять сторонними средствами (средствами СУБД).'"); КонецЕсли; - + НастройкиРезервногоКопирования = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); Объект.КодТипаРезервногоКопирования = НастройкиРезервногоКопирования.ВыборПунктаНастройки; - Объект.КодТипаИнтерактивногоРезервногоКопирования = 1; + Объект.КодТипаИнтерактивногоРезервногоКопирования = 1; Объект.ОчисткаКаталогаСРезервнымиКопиямиПриПереполнении = Истина; Объект.ПериодХраненияРезервныхКопий = 1; Объект.ЕдиницаИзмеренияПериодаХраненияРезервныхКопий = "Месяц"; @@ -70,7 +51,7 @@ КонецЕсли; Если Параметры.ТипВызова = 2 Тогда - Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницыПомощника.ПодчиненныеЭлементы[Параметры.ТекущаяСтраница]; + Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницыПомощника.ПодчиненныеЭлементы[Параметры.ТекущаяСтраница]; Объект.КодТипаРезервногоКопирования = 3; КонецЕсли; @@ -78,9 +59,9 @@ Объект.КаталогСРезервнымиКопиями =НастройкиРезервногоКопирования.КаталогХраненияРезервныхКопий; Если НастройкиРезервногоКопирования.ПервыйЗапуск Тогда - ТекстЗаголовка = НСтр("ru = 'Резервное копирование еще ни разу не проводилось'"); + ТекстЗаголовка = НСтр("ru = 'Резервное копирование еще ни разу не проводилось'"); Иначе - ТекстЗаголовка = НСтр("ru = 'В последний раз резервное копирование проводилось: %1'"); + ТекстЗаголовка = НСтр("ru = 'В последний раз резервное копирование проводилось: %1'"); МассивПараметров = Новый Массив; МассивПараметров.Добавить(Формат(РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования().ДатаПоследнегоРезервногоКопирования,"ДЛФ=ДДВ")); ТекстЗаголовка = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтрокуИзМассива(ТекстЗаголовка,МассивПараметров); @@ -97,6 +78,36 @@ КонецПроцедуры +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Отказ = Истина; + ТекстСообщения = НСтр("ru = 'Резервное копирование программы недоступно в клиенте под управлением ОС Linux.'"); + Предупреждение(ТекстСообщения); + Возврат; + КонецЕсли; + + ИмяФайлаЗапускаПриложенияВРежимеПредприятия = ПолучитьИмяФайлаЗапускаПриложенияВРежимеПредприятия(); + + ПараметрыРаботыКлиента = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента(); + АдминистраторИБ = ПараметрыРаботыКлиента.ИнформацияОПользователе.Имя; + Если ТипВызова = 1 Или ТипВызова = 2 Тогда + Если ПараметрыРаботыКлиента.РезервноеКопированиеИБ.Свойство("ПарольАдминистратораИБ") Тогда + ПарольАдминистратораИБ = ПараметрыРаботыКлиента.РезервноеКопированиеИБ.ПарольАдминистратораИБ; + КонецЕсли; + КонецЕсли; + + Если Не ПустаяСтрока(ТекстПути) Тогда + ПриОткрытииНовойСтраницы(Элементы.СтраницыПомощника.ТекущаяСтраница, ТекстПути); + Иначе + ПриОткрытииНовойСтраницы(Элементы.СтраницыПомощника.ТекущаяСтраница); + КонецЕсли; + + УстановитьЗаголовокКнопкиДалее(Истина); + +КонецПроцедуры + &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) @@ -115,33 +126,33 @@ ОтключитьОбработчикОжидания("ЗавершитьРаботуПользователей"); Если ПараметрыРезервногоКопированияИБ.ПроцессВыполняется Тогда - РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ПроцессВыполняется", Ложь, ПараметрыРезервногоКопированияИБ); + ПараметрыРезервногоКопированияИБ.ПроцессВыполняется = Ложь; + РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ПроцессВыполняется", Ложь); КонецЕсли; КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ФОРМЫ &НаКлиенте Процедура НадписьСписокДействийНажатие(Элемент) - ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); + ОткрытьФорму("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей", , ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура СписокПользователейНажатие(Элемент) - ОткрытьФормуМодально("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей"); + ОткрытьФорму("Обработка.АктивныеПользователи.Форма.ФормаСпискаАктивныхПользователей", , ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура НадписьЖурналРегистрацииНажатие(Элемент) - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации"); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", , ЭтаФорма); КонецПроцедуры @@ -161,7 +172,7 @@ УстановитьЗаголовокКнопкиДалее(Ложь); Элементы.ПараметрыИнтерактивногоРезервногоКопирования.ТекущаяСтраница = Элементы.ПараметрыИнтерактивногоРезервногоКопирования.ПодчиненныеЭлементы.СтраницаПустая; Элементы.НадписьПояснениеКИнтерактивномуКопированию.Заголовок = НСтр("ru = 'Нажмите ""Готово"", чтобы закрыть помощник. Резервное копирование начнется перед закрытием программы.'"); - КонецЕсли; + КонецЕсли; КонецПроцедуры @@ -178,7 +189,7 @@ &НаКлиенте Процедура НадписьПерейтиВЖурналРегистрации1Нажатие(Элемент) - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации"); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", , ЭтаФорма); КонецПроцедуры @@ -200,7 +211,7 @@ ОчиститьСообщения(); ИнформацияОбОшибке = ""; - Если Не ПроверитьЗаполнениеРеквизитов(ИнформацияОбОшибке) и Не ПустаяСтрока(ИнформацияОбОшибке) Тогда + Если Не ПроверитьЗаполнениеРеквизитов(ИнформацияОбОшибке) и Не ПустаяСтрока(ИнформацияОбОшибке) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ИнформацияОбОшибке); Возврат; КонецЕсли; @@ -209,7 +220,7 @@ Если ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.СтраницаВыполненияРезервногоКопирования Тогда ОбработатьВыборРежимаИнтерактивногоКопирования(); - УстановитьПутьАрхиваСКопиями(Объект.КаталогСРезервнымиКопиями, ПараметрыРезервногоКопированияИБ); + УстановитьПутьАрхиваСКопиями(Объект.КаталогСРезервнымиКопиями); ИначеЕсли ТекущаяСтраницаПомощника = Элементы.СтраницыПомощника.ПодчиненныеЭлементы.ДополнительныеНастройки Тогда ОбработатьВыборРежимаИнтерактивногоКопирования(); @@ -253,9 +264,9 @@ // Параметры : // НоваяСтраницаПомощника - страница , которую необходимо открыть в данный момент. &НаКлиенте -Процедура ПриОткрытииНовойСтраницы(НоваяСтраница, ТекстПути = "") +Процедура ПриОткрытииНовойСтраницы(НоваяСтраница, ТекстПути = "") - ПодчиненныеСтраницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы; + ПодчиненныеСтраницы = Элементы.СтраницыПомощника.ПодчиненныеЭлементы; Если НоваяСтраница = ПодчиненныеСтраницы.СтраницаВыполненияРезервногоКопирования Тогда Элементы.АктивныеПользователи.Видимость = ПолучитьДоступность(); @@ -265,14 +276,15 @@ ИначеЕсли НоваяСтраница = ПодчиненныеСтраницы.СтраницаИнформацииИВыполненияРезервногоКопирования Тогда - РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ПроцессВыполняется", Истина, ПараметрыРезервногоКопированияИБ); + ПараметрыРезервногоКопированияИБ.ПроцессВыполняется = Истина; + РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ПроцессВыполняется", Истина); Элементы.Отмена.Доступность = Истина; ОбновитьКоличествоАктивныхПользователей(); УстановитьЗаголовокКнопкиДалее(Истина); Элементы.Назад.Видимость = Ложь; Элементы.Далее.Доступность = Ложь; - + ИнформацияОбОшибке = ""; Если Не ПроверитьЗаполнениеРеквизитов(ИнформацияОбОшибке) и Не ПустаяСтрока(ИнформацияОбОшибке) Тогда Элементы.СтраницыПомощника.ТекущаяСтраница = Элементы.СтраницаОшибокПриКопировании; @@ -319,9 +331,10 @@ ИЛИ НоваяСтраница = ПодчиненныеСтраницы.СтраницаУспешногоВыполненияКопирования Тогда Элементы.Далее.Видимость= Ложь; Элементы.Отмена.Заголовок = НСтр("ru = 'Закрыть'"); - ПараметрыРезервногоКопирования = ПолучитьНастройкиРезервногоКопирования(); - ПараметрыРезервногоКопированияИБ = ПараметрыРезервногоКопирования; - УстановитьРезультатРезервногоКопирования(ПараметрыРезервногоКопирования); + Элементы.Отмена.КнопкаПоУмолчанию = Истина; + ПараметрыРезервногоКопирования = ПолучитьНастройкиРезервногоКопирования(); + РезервноеКопированиеИБКлиент.ЗаполнитьЗначенияГлобальныхПеременных(ПараметрыРезервногоКопирования); + УстановитьРезультатРезервногоКопирования(); ИначеЕсли НоваяСтраница = ПодчиненныеСтраницы.ДополнительныеНастройки Тогда Элементы.Назад.Видимость = Истина; АдминистраторИБ = СтандартныеПодсистемыКлиентПовтИсп.ПараметрыРаботыКлиента().ИнформацияОПользователе.Имя; @@ -331,8 +344,8 @@ Иначе Элементы.ПояснениеКДалее.Заголовок = НСтр("ru = 'Нажмите ""Готово"", чтобы завершить настройку резервного копирования'"); УстановитьЗаголовокКнопкиДалее(Ложь); - КонецЕсли; - КонецЕсли; + КонецЕсли; + КонецЕсли; Если НоваяСтраница = Неопределено Тогда Закрыть(); @@ -343,9 +356,9 @@ КонецПроцедуры &НаСервереБезКонтекста -Процедура УстановитьРезультатРезервногоКопирования(ПараметрыРезервногоКопирования) +Процедура УстановитьРезультатРезервногоКопирования() - РезервноеКопированиеИБСервер.УстановитьРезультатРезервногоКопирования(ПараметрыРезервногоКопирования); + РезервноеКопированиеИБСервер.УстановитьРезультатРезервногоКопирования(); КонецПроцедуры @@ -422,9 +435,7 @@ РезервноеКопированиеИБВызовСервера.УстановитьПараметрыРезервногоКопирования(ПараметрыРезервногоКопирования); - ПараметрыРезервногоКопированияИБ = ПараметрыРезервногоКопирования; - - КонецЕсли; + КонецЕсли; Возврат Результат; @@ -492,7 +503,8 @@ ТекущаяДата = ОбщегоНазначенияКлиент.ДатаСеанса(); ПериодОтложенногоКопирования = ТекущаяДата + (Объект.ПериодОтложенногоОповещения*ПолучитьПериодОтложенногоКопирования()); ДатаОтложенногоРезервногоКопирования = ПериодОтложенногоКопирования; - РезервноеКопированиеИБКлиент.ПодключитьОжиданиеРезервногоКопирования(); + ПараметрыРезервногоКопированияИБ.ОтложенноеРезервноеКопирование = Истина; + РезервноеКопированиеИБВызовСервера.УстановитьЗначениеНастройки("ОтложенноеРезервноеКопирование", Истина); ОповещениеПользователю(НСтр("ru ='Резервное копирование будет проведено через указанный срок.'")); ИначеЕсли КодПереключателя = 3 Тогда @@ -603,7 +615,7 @@ &НаКлиенте Процедура НачатьРезервноеКопирование() - ПриИзмененииВремениОповещения(0, 0, ПараметрыРезервногоКопированияИБ); + ПриИзмененииВремениОповещения(0, 0); ИмяГлавногоФайлаСкрипта = СформироватьФайлыСкриптаОбновления(); ОбщегоНазначенияКлиент.ДобавитьСообщениеДляЖурналаРегистрации(РезервноеКопированиеИБКлиент.СобытиеЖурналаРегистрации(), @@ -637,6 +649,7 @@ КонецЕсли; КонецЕсли; + Возврат Истина; КонецФункции @@ -650,7 +663,7 @@ // Возвращает страницу, которая должна быть показана пользователю при открытии окна помощника. // Если ПолныеПрава - тогда попадаем на функциональную страницу. -// Если нет - тогда на информационную страницу с просьбой обратиться к сис. администратору. +// Если нет - тогда на информационную страницу с просьбой обратиться к системному администратору. // Состав элементов функциональной страницы зависит от архитектуры информационной базы. &НаСервере Функция ОпределитьСтраницуПоПравамИАрхитектуре() @@ -669,7 +682,7 @@ КонецФункции &НаСервереБезКонтекста -Процедура ПриИзмененииВремениОповещения(ПараметрКоличества, ПараметрТипа, ПараметрыРезервногоКопированияИБНаКлиенте) +Процедура ПриИзмененииВремениОповещения(ПараметрКоличества, ПараметрТипа) ПараметрыОповещенияОРезервномКопировании = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); ТекущаяДата = ТекущаяДатаСеанса(); @@ -685,8 +698,7 @@ РезервноеКопированиеИБСервер.ПолучитьВременнойПараметрПоСтроке(ПараметрТипа)); КонецЕсли; ПараметрыОповещенияОРезервномКопировании.НастроеноПользователем = Истина; - ПараметрыРезервногоКопированияИБНаКлиенте = ПараметрыОповещенияОРезервномКопировании; - РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(ПараметрыОповещенияОРезервномКопировании); + РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(ПараметрыОповещенияОРезервномКопировании); Конецпроцедуры @@ -701,11 +713,10 @@ КонецПроцедуры &НаСервереБезКонтекста -Процедура УстановитьПутьАрхиваСКопиями(Путь, ПараметрыРезервногоКопированияИБНаКлиенте) +Процедура УстановитьПутьАрхиваСКопиями(Путь) НастройкиПути = РезервноеКопированиеИБСервер.ПолучитьНастройкиРезервногоКопирования(); НастройкиПути.КаталогХраненияРезервныхКопий = Путь; - ПараметрыРезервногоКопированияИБНаКлиенте = НастройкиПути; РезервноеКопированиеИБСервер.УстановитьПараметрыРезервногоКопирования(НастройкиПути); КонецПроцедуры @@ -736,7 +747,7 @@ СтруктураПараметров.Вставить("ИнформационнаяБазаФайловая" , ПараметрыРаботыКлиента.ИнформационнаяБазаФайловая); СтруктураПараметров.Вставить("ПараметрыСкрипта" , ПолучитьПараметрыАутентификацииАдминистратораОбновления()); - ИменаМакетов = "ДопФайлРезервногоКопирования"; + ИменаМакетов = "ДопФайлРезервногоКопирования"; ИменаМакетов = ИменаМакетов + ",ЗаставкаРезервногоКопирования"; ТекстыМакетов = ПолучитьТекстыМакетов(ИменаМакетов, СтруктураПараметров, СообщенияДляЖурналаРегистрации); @@ -871,7 +882,7 @@ Результат = СтрЗаменить(Результат, "[СоздаватьРезервнуюКопию]" ,"true"); СтрокаКаталога = ПроверитьКаталогНаУказаниеКорневогоЭлемента(Объект.КаталогСРезервнымиКопиями); - Результат = СтрЗаменить(Результат, "[КаталогРезервнойКопии]" ,ПодготовитьТекст(СтрокаКаталога+"\backup"+СтрокаКаталогаИзДаты())); + Результат = СтрЗаменить(Результат, "[КаталогРезервнойКопии]" ,ПодготовитьТекст(СтрокаКаталога+"\backup"+СтрокаКаталогаИзДаты())); Результат = СтрЗаменить(Результат, "[ВосстанавливатьИнформационнуюБазу]" , "false"); Результат = СтрЗаменить(Результат, "[БлокироватьСоединенияИБ]" , ?(СтруктураПараметров.ИнформационнаяБазаФайловая, "false", "true")); Результат = СтрЗаменить(Результат, "[ИмяCOMСоединителя]" , ПодготовитьТекст(СтруктураПараметров.ИмяCOMСоединителя)); diff --git a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаРезервногоКопирования/Template.txt b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаРезервногоКопирования/Template.txt index 4661ee4d7..090a4ec0d 100644 --- a/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаРезервногоКопирования/Template.txt +++ b/SSL/src/DataProcessors/РезервноеКопированиеИБ/Templates/МакетФайлаРезервногоКопирования/Template.txt @@ -240,7 +240,6 @@ function finalize(success) { allowConnections(false); // Разрешение подключений } - write1CEventLog(); // Запись всей информации из log-файла в журнал регистрации setResult(success); @@ -359,28 +358,28 @@ function writeEventLog(success) function backupDB() { try - { - - var NewTextFile = oFileSystemObject.CreateTextFile(backupFileName,false); - - NewTextFile.Write(String.fromCharCode(80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)); - NewTextFile.Close(); - - var ZIPFile = oFileSystemObject.GetAbsolutePathName(backupFileName); - var dFolder = oShellApplication.NameSpace(ZIPFile); - var file = oFileSystemObject.GetAbsolutePathName(BaseFileName); - var FolderNameSpace = oFileSystemObject.GetParentFolderName(file); - var Folder = oShellApplication.Namespace(FolderNameSpace); - var FolderItemNameSpace = oFileSystemObject.GetFileName(file); - var FolderItem = Folder.ParseName(FolderItemNameSpace); - - if (!createBackup) - return 0; + { + + var NewTextFile = oFileSystemObject.CreateTextFile(backupFileName,false); - dFolder.CopyHere(file); - - ret = 0; - log(format("Попытка создания резервной копии", ret), ret != 0); + NewTextFile.Write(String.fromCharCode(80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)); + NewTextFile.Close(); + + var ZIPFile = oFileSystemObject.GetAbsolutePathName(backupFileName); + var dFolder = oShellApplication.NameSpace(ZIPFile); + var file = oFileSystemObject.GetAbsolutePathName(BaseFileName); + var FolderNameSpace = oFileSystemObject.GetParentFolderName(file); + var Folder = oShellApplication.Namespace(FolderNameSpace); + var FolderItemNameSpace = oFileSystemObject.GetFileName(file); + var FolderItem = Folder.ParseName(FolderItemNameSpace); + + if (!createBackup) + return 0; + + dFolder.CopyHere(file); + + ret = 0; + log(format("Попытка создания резервной копии", ret), ret != 0); } catch(e) { @@ -395,13 +394,22 @@ function backupDB() return ret; } +// Ожидать создания файла резервной копии, начатое в backupDB() function WaitUntilFinish() { var FileArchiveObject = new ActiveXObject("Scripting.FileSystemObject"); - FileArchive = FileArchiveObject.GetFile(backupFileName); - + try + { + FileArchive = FileArchiveObject.GetFile(backupFileName); + } + catch(e) + { + // файл резервной копии не найден, ожидаем далее + return -1; + } FileSize = FileArchive.size / 1024; + // файл все еще не начал создаваться, возможно выполняется интерактив, ожидаем далее if (FileSize < 5) return -1; @@ -417,20 +425,18 @@ function doAllowConnections(updateAndFillDB) var connection = createConnection(); if (connection == null) return (useComConnector ? 1 : 0); - - - try - { - connection.СоединенияИБ.РазрешитьРаботуПользователей(); - connectionsDenied = false; - } - catch(e) - { - CollectGarbage(); // предотвращает исключение out of memory - log(format("Исключение при вызове СоединенияИБ.РазрешитьРаботуПользователей: {0}, {1}.", e.name, e.message), true); - return 3; - } + try + { + connection.СоединенияИБ.РазрешитьРаботуПользователей(); + connectionsDenied = false; + } + catch(e) + { + CollectGarbage(); // предотвращает исключение out of memory + log(format("Исключение при вызове СоединенияИБ.РазрешитьРаботуПользователей: {0}, {1}.", e.name, e.message), true); + return 3; + } return 0; } diff --git a/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Forms/ОсновнаяФорма/Module.bsl b/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Forms/ОсновнаяФорма/Module.bsl index 940fd92f0..0b256ae38 100644 --- a/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Forms/ОсновнаяФорма/Module.bsl +++ b/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Forms/ОсновнаяФорма/Module.bsl @@ -7,6 +7,10 @@ Возврат; КонецЕсли; + Если НЕ Параметры.Свойство("ОткрытаПоСценарию") Тогда + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + КонецЕсли; + Если НЕ УправлениеИтогамиИАгрегатамиСлужебный.НадоСдвинутьГраницуИтогов() Тогда Отказ = Истина; // Период уже был установлен в сеансе другого пользователя. Возврат; diff --git a/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Help/ru.html b/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Help/ru.html index 743d171ef..83c742003 100644 --- a/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Help/ru.html +++ b/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/Help/ru.html @@ -1,4 +1,4 @@ - +

            Управление итогами включает в себя процедуры, связанные с итогами регистров накопления и бухгалтерии, а также агрегатами оборотных регистров накопления. Управление итогами разделяется на два режима:

            Для переключения режимов служит гиперссылка в правом нижнем углу формы. Форма запоминает режим открытия.

            diff --git a/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/СдвигГраницыИтоговПриЗавершенииРаботы.mdo b/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/СдвигГраницыИтоговПриЗавершенииРаботы.mdo index 4b7a3de37..cbc69ec82 100644 --- a/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/СдвигГраницыИтоговПриЗавершенииРаботы.mdo +++ b/SSL/src/DataProcessors/СдвигГраницыИтоговПриЗавершенииРаботы/СдвигГраницыИтоговПриЗавершенииРаботы.mdo @@ -9,7 +9,6 @@ ru Сдвиг границы итогов при завершении работы - true DataProcessor.СдвигГраницыИтоговПриЗавершенииРаботы.Form.ОсновнаяФорма diff --git a/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Module.bsl index 12260f1b0..89178771c 100644 --- a/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/СогласиеНаОбработкуПерсональныхДанных/Forms/Форма/Module.bsl @@ -27,6 +27,11 @@ ВариантПечатиСогласия = "ВыводитьБланк"; КонецЕсли; + Если ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент() Тогда + Элементы.ФормаПечатьMSWord.Видимость = Ложь; + Элементы.ФормаПечатьOOWritter.Видимость = Ложь; + КонецЕсли; + КонецПроцедуры &НаКлиенте diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаАвтоматическогоСопоставления/Form.form b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаАвтоматическогоСопоставления/Form.form index c017ac56a..96073e40c 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаАвтоматическогоСопоставления/Form.form +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаАвтоматическогоСопоставления/Form.form @@ -363,7 +363,7 @@ OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner true true Vertical diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаАвтоматическогоСопоставления/Module.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаАвтоматическогоСопоставления/Module.bsl index 6427df813..6e839d17f 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаАвтоматическогоСопоставления/Module.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаАвтоматическогоСопоставления/Module.bsl @@ -35,14 +35,14 @@ &НаКлиенте Процедура ВыполнитьСопоставление(Команда) - ЭтаФорма.Закрыть(СписокПолейСопоставления.Скопировать()); + ОповеститьОВыборе(СписокПолейСопоставления.Скопировать()); КонецПроцедуры &НаКлиенте Процедура Отмена(Команда) - ЭтаФорма.Закрыть(Неопределено); + ОповеститьОВыборе(Неопределено); КонецПроцедуры @@ -65,4 +65,3 @@ КонецЕсли; КонецПроцедуры - diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицы/Form.form b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицы/Form.form index ae700d0d0..a1da6f0d3 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицы/Form.form +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицы/Form.form @@ -305,7 +305,7 @@ OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner true true true diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицы/Module.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицы/Module.bsl index 59a70b63c..d4de52e4a 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицы/Module.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицы/Module.bsl @@ -30,13 +30,13 @@ КонецЕсли; - ЭтаФорма.Закрыть(СписокПолей.Скопировать()); + ОповеститьОВыборе(СписокПолей.Скопировать()); КонецПроцедуры &НаКлиенте Процедура Отмена(Команда) - ЭтаФорма.Закрыть(Неопределено); + ОповеститьОВыборе(Неопределено); КонецПроцедуры diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицыСопоставления/Form.form b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицыСопоставления/Form.form index dd80fb56a..5793d4c62 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицыСопоставления/Form.form +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицыСопоставления/Form.form @@ -411,7 +411,7 @@ OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner true true true diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицыСопоставления/Module.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицыСопоставления/Module.bsl index 31df17681..5bcf7e898 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицыСопоставления/Module.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаПолейТаблицыСопоставления/Module.bsl @@ -39,7 +39,7 @@ Если Не Отказ Тогда - ЭтаФорма.Закрыть(СписокПолей.Скопировать()); + ОповеститьОВыборе(СписокПолей.Скопировать()); КонецЕсли; @@ -48,7 +48,7 @@ &НаКлиенте Процедура Отмена(Команда) - ЭтаФорма.Закрыть(Неопределено); + ОповеститьОВыборе(Неопределено); КонецПроцедуры diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаСортировки/Form.form b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаСортировки/Form.form index 44b67e040..d4a708713 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаСортировки/Form.form +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаСортировки/Form.form @@ -375,7 +375,7 @@ OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner true true true diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаСортировки/Module.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаСортировки/Module.bsl index 1cedc2b92..09d7e56cc 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаСортировки/Module.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/НастройкаСортировки/Module.bsl @@ -18,13 +18,13 @@ &НаКлиенте Процедура Применить(Команда) - ЭтаФорма.Закрыть(ТаблицаСортировки); + ОповеститьОВыборе(ТаблицаСортировки); КонецПроцедуры &НаКлиенте Процедура Отменить(Команда) - ЭтаФорма.Закрыть(Неопределено); + ОповеститьОВыборе(Неопределено); КонецПроцедуры diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/РезультатАвтоматическогоСопоставления/Form.form b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/РезультатАвтоматическогоСопоставления/Form.form index 2143dee9a..e20e5babe 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/РезультатАвтоматическогоСопоставления/Form.form +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/РезультатАвтоматическогоСопоставления/Form.form @@ -1,20 +1,937 @@ - КоманднаяПанельТаблицы - 69 - - УстановитьПометки - 70 + ПанельОсновная + 76 + + СопоставлениеОбъектов + 77 + + КоманднаяПанельТаблицы + 69 + + УстановитьПометки + 70 + true + true + + true + + false + + УстановитьПометкиРасширеннаяПодсказка + 154 + Label + true + true + + Left + + + Form.Command.УстановитьПометки + Normal + Auto + true + true + UserCmds + Auto + + + СнятьПометки + 68 + true + true + + true + + false + + СнятьПометкиРасширеннаяПодсказка + 155 + Label + true + true + + Left + + + Form.Command.СнятьПометки + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Командная панель таблицы</value> + + + ru + Командная панель таблицы + + + КоманднаяПанельТаблицыРасширеннаяПодсказка + 153 + Label + true + true + + Left + + + CommandBar + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектов + 31 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов + + false + None + Add + CancelSearch + Change + Copy + CopyToClipboard + Delete + EndEdit + Find + MoveDown + MoveUp + OutputList + SelectAll + SortListAsc + SortListDesc + + ТаблицаАвтоматическиСопоставленныхОбъектовПометка + 36 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.Пометка + + + ТаблицаАвтоматическиСопоставленныхОбъектовПометкаРасширеннаяПодсказка + 166 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПометкаКонтекстноеМеню + 37 + true + + CheckBoxField + Auto + true + Left + true + + + + ПоляПриемника + 66 + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникИндексКартинки + 72 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникИндексКартинки + + true + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникИндексКартинкиРасширеннаяПодсказка + 169 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникИндексКартинкиКонтекстноеМеню + 73 + true + + PictureField + true + Auto + Left + + true + true + true + true + + CommonPicture.КоллекцияКартинокСопоставлениеОбъектов + + + + 1 + + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле1 + 46 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле1 + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле1РасширеннаяПодсказка + 171 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле1КонтекстноеМеню + 47 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле2 + 48 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле2 + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле2РасширеннаяПодсказка + 173 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле2КонтекстноеМеню + 49 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле3 + 50 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле3 + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле3РасширеннаяПодсказка + 175 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле3КонтекстноеМеню + 51 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле4 + 52 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле4 + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле4РасширеннаяПодсказка + 177 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле4КонтекстноеМеню + 53 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле5 + 54 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле5 + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле5РасширеннаяПодсказка + 179 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле5КонтекстноеМеню + 55 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Поля приемника</value> + + + ru + Поля приемника + + true + + ПоляПриемникаРасширеннаяПодсказка + 168 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + + ПоляИсточника + 67 + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникИндексКартинки + 74 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникИндексКартинки + + None + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникИндексКартинкиРасширеннаяПодсказка + 182 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникИндексКартинкиКонтекстноеМеню + 75 + true + + PictureField + true + Auto + Left + + true + true + true + true + + CommonPicture.КоллекцияКартинокСопоставлениеОбъектов + + + + 1 + + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле1 + 56 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле1 + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле1РасширеннаяПодсказка + 184 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле1КонтекстноеМеню + 57 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле2 + 58 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле2 + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле2РасширеннаяПодсказка + 186 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле2КонтекстноеМеню + 59 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле3 + 60 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле3 + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле3РасширеннаяПодсказка + 188 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле3КонтекстноеМеню + 61 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле4 + 62 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле4 + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле4РасширеннаяПодсказка + 190 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле4КонтекстноеМеню + 63 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле5 + 64 + true + true + + true + + + Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле5 + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле5РасширеннаяПодсказка + 192 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле5КонтекстноеМеню + 65 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Поля источника</value> + + + ru + Поля приемника + + true + + ПоляИсточникаРасширеннаяПодсказка + 181 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + None + + ТаблицаАвтоматическиСопоставленныхОбъектовКоманднаяПанель + 33 + Left + + + ТаблицаАвтоматическиСопоставленныхОбъектовСтрокаПоиска + 157 + + ТаблицаАвтоматическиСопоставленныхОбъектовСтрокаПоискаРасширеннаяПодсказка + 159 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовСтрокаПоискаКонтекстноеМеню + 158 + true + + ТаблицаАвтоматическиСопоставленныхОбъектов + + true + + + + ТаблицаАвтоматическиСопоставленныхОбъектовСостояниеПросмотра + 160 + + ТаблицаАвтоматическиСопоставленныхОбъектовСостояниеПросмотраРасширеннаяПодсказка + 162 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовСостояниеПросмотраКонтекстноеМеню + 161 + true + + ViewStatusAddition + ТаблицаАвтоматическиСопоставленныхОбъектов + + true + + + + ТаблицаАвтоматическиСопоставленныхОбъектовУправлениеПоиском + 163 + + ТаблицаАвтоматическиСопоставленныхОбъектовУправлениеПоискомРасширеннаяПодсказка + 165 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовУправлениеПоискомКонтекстноеМеню + 164 + true + + SearchControlAddition + ТаблицаАвтоматическиСопоставленныхОбъектов + + true + + + + ТаблицаАвтоматическиСопоставленныхОбъектовРасширеннаяПодсказка + 156 + Label + true + true + + Left + + + + ТаблицаАвтоматическиСопоставленныхОбъектовКонтекстноеМеню + 32 + true + + HierarchicalList + true + true + true + MultiRow + Row +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + None + None + None + true + +
            + + КоманднаяПанельФормы + 71 + + Применить + 14 + true + true + + true + + false + + ПрименитьРасширеннаяПодсказка + 203 + Label + true + true + + Left + + + Form.Command.Применить + Auto + true + true + true + UserCmds + Auto + + + Отмена + 30 + true + true + + true + + false + + ОтменаРасширеннаяПодсказка + 204 + Label + true + true + + Left + + + Form.Command.Отмена + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + КоманднаяПанельФормыРасширеннаяПодсказка + 202 + Label + true + true + + Left + + + CommandBar + + Right + + true true true - false + + <key>ru</key> + <value>Сопоставление объектов</value> + + + ru + Сопоставление объектов + + true - УстановитьПометкиРасширеннаяПодсказка - 77 + СопоставлениеОбъектовРасширеннаяПодсказка + 152 Label true true @@ -22,26 +939,243 @@ Left
            - Form.Command.УстановитьПометки - Normal - Auto - true - true - UserCmds - Auto + Page + + Vertical + auto +
            - - СнятьПометки - 68 + + ОжиданиеСопоставленияОбъектов + 119 + + Рамка + 120 + + ГруппировкаСообщения + 121 + + ГруппаКартинки + 122 + + Декорация14 + 123 + true + true + + true + + + Декорация14РасширеннаяПодсказка + 209 + Label + true + true + + Left + + + + Декорация14КонтекстноеМеню + 124 + true + + 8 + true + 3 + true + false + + + CommonPicture.СинхронизацияДанныхАнализДанных48 + + + + true + true + + true + + + <key>ru</key> + <value>Группа картинки</value> + + + ru + Группа картинки + + + ГруппаКартинкиРасширеннаяПодсказка + 208 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаСообщения + 125 + + Декорация15 + 126 + + <key>ru</key> + <value>Поиск одинаковых данных...</value> + + true + true + + true + + + Декорация15РасширеннаяПодсказка + 211 + Label + true + true + + Left + + + + Декорация15КонтекстноеМеню + 127 + true + + Label + true + 3 + true + false + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Группа сообщения</value> + + + ru + Группа сообщения + + + ГруппаСообщенияРасширеннаяПодсказка + 210 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + ru + Группировка сообщения + + + ГруппировкаСообщенияРасширеннаяПодсказка + 207 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Рамка</value> + + true + true + true + + РамкаРасширеннаяПодсказка + 206 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + Auto + Auto + + true true true - false + + <key>ru</key> + <value>Ожидание сопоставления объектов</value> + + + ru + Ожидание сопоставления объектов + + true - СнятьПометкиРасширеннаяПодсказка - 78 + ОжиданиеСопоставленияОбъектовРасширеннаяПодсказка + 205 Label true true @@ -49,13 +1183,600 @@ Left - Form.Command.СнятьПометки - Normal - Auto - true - true - UserCmds - Auto + Page + + Vertical + auto + + + + ОшибкаСопоставленияОбъектов + 128 + + Рамка1 + 129 + + ГруппировкаСообщения1 + 130 + + ГруппаКартинки1 + 131 + + Декорация3 + 132 + true + true + + true + + + Декорация3РасширеннаяПодсказка + 216 + Label + true + true + + Left + + + + Декорация3КонтекстноеМеню + 133 + true + + 8 + true + 3 + true + false + + + CommonPicture.Предупреждение32 + + + + true + true + + true + + + <key>ru</key> + <value>Группа картинки</value> + + + ru + Группа картинки + + + ГруппаКартинки1РасширеннаяПодсказка + 215 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаСообщения1 + 134 + + Декорация4 + 135 + + <key>ru</key> + <value>Не удалось выполнить поиск одинаковых данных.</value> + + true + true + + true + + + Декорация4РасширеннаяПодсказка + 218 + Label + true + true + + Left + + + + Декорация4КонтекстноеМеню + 136 + true + + Label + true + 3 + true + false + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Группа сообщения</value> + + + ru + Группа сообщения + + + ГруппаСообщения1РасширеннаяПодсказка + 217 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + ru + Группировка сообщения + + + ГруппировкаСообщения1РасширеннаяПодсказка + 214 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Рамка</value> + + true + true + true + + Рамка1РасширеннаяПодсказка + 213 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + Auto + Auto + + + + КоманднаяПанельФормы2 + 148 + + Закрыть1 + 150 + true + true + + true + + + Закрыть1РасширеннаяПодсказка + 220 + Label + true + true + + Left + + + Form.Command.Закрыть + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + КоманднаяПанельФормы2РасширеннаяПодсказка + 219 + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Ошибка сопоставления объектов</value> + + + ru + Ошибка сопоставления объектов + + true + + ОшибкаСопоставленияОбъектовРасширеннаяПодсказка + 212 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + ПустойРезультатСопоставленияОбъектов + 137 + + Рамка2 + 138 + + ГруппировкаСообщения2 + 139 + + ГруппаКартинки2 + 140 + + Декорация5 + 141 + true + true + + true + + + Декорация5РасширеннаяПодсказка + 225 + Label + true + true + + Left + + + + Декорация5КонтекстноеМеню + 142 + true + + 8 + true + 3 + true + false + + + CommonPicture.Информация32 + + + + true + true + + true + + + <key>ru</key> + <value>Группа картинки</value> + + + ru + Группа картинки + + + ГруппаКартинки2РасширеннаяПодсказка + 224 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаСообщения2 + 143 + + Декорация6 + 144 + + <key>ru</key> + <value>Одинаковые данные не найдены. +Попробуйте задать другие условия поиска.</value> + + true + true + + true + + + Декорация6РасширеннаяПодсказка + 227 + Label + true + true + + Left + + + + Декорация6КонтекстноеМеню + 145 + true + + Label + true + 3 + true + false + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Группа сообщения</value> + + + ru + Группа сообщения + + + ГруппаСообщения2РасширеннаяПодсказка + 226 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + ru + Группировка сообщения + + + ГруппировкаСообщения2РасширеннаяПодсказка + 223 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Рамка</value> + + true + true + true + + Рамка2РасширеннаяПодсказка + 222 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + Auto + Auto + + + + КоманднаяПанельФормы1 + 146 + + Закрыть + 149 + true + true + + true + + + ЗакрытьРасширеннаяПодсказка + 229 + Label + true + true + + Left + + + Form.Command.Закрыть + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + true + + КоманднаяПанельФормы1РасширеннаяПодсказка + 228 + Label + true + true + + Left + + + CommandBar + + Right + + + true + true + + true + + + <key>ru</key> + <value>Пустой результат сопоставления объектов</value> + + + ru + Ошибка сопоставления объектов + + true + + ПустойРезультатСопоставленияОбъектовРасширеннаяПодсказка + 221 + Label + true + true + + Left + + + Page + + Vertical + auto + true true @@ -64,839 +1785,12 @@ <key>ru</key> - <value>Командная панель таблицы</value> + <value>Панель основная</value> - - ru - Командная панель таблицы - - - КоманднаяПанельТаблицыРасширеннаяПодсказка - 76 - Label - true - true - - Left - - - CommandBar - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектов - 31 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов - - false - None - Add - CancelSearch - Change - Copy - CopyToClipboard - Delete - EndEdit - Find - MoveDown - MoveUp - OutputList - SelectAll - SortListAsc - SortListDesc - - ТаблицаАвтоматическиСопоставленныхОбъектовПометка - 36 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.Пометка - - - ТаблицаАвтоматическиСопоставленныхОбъектовПометкаРасширеннаяПодсказка - 89 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПометкаКонтекстноеМеню - 37 - true - - CheckBoxField - Auto - true - Left - true - - - - ПоляПриемника - 66 - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникИндексКартинки - 72 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникИндексКартинки - - true - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникИндексКартинкиРасширеннаяПодсказка - 92 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникИндексКартинкиКонтекстноеМеню - 73 - true - - PictureField - true - Auto - Left - - true - true - true - true - - CommonPicture.КоллекцияКартинокСопоставлениеОбъектов - - - - 1 - - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле1 - 46 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле1 - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле1РасширеннаяПодсказка - 94 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле1КонтекстноеМеню - 47 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле2 - 48 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле2 - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле2РасширеннаяПодсказка - 96 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле2КонтекстноеМеню - 49 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле3 - 50 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле3 - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле3РасширеннаяПодсказка - 98 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле3КонтекстноеМеню - 51 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле4 - 52 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле4 - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле4РасширеннаяПодсказка - 100 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле4КонтекстноеМеню - 53 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле5 - 54 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ПриемникПоле5 - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле5РасширеннаяПодсказка - 102 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовПриемникПоле5КонтекстноеМеню - 55 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - true - true - - true - - - <key>ru</key> - <value>Поля приемника</value> - - - ru - Поля приемника - - true - - ПоляПриемникаРасширеннаяПодсказка - 91 - Label - true - true - - Left - - - ColumnGroup - - InCell - auto - true - - - - ПоляИсточника - 67 - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникИндексКартинки - 74 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникИндексКартинки - - None - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникИндексКартинкиРасширеннаяПодсказка - 105 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникИндексКартинкиКонтекстноеМеню - 75 - true - - PictureField - true - Auto - Left - - true - true - true - true - - CommonPicture.КоллекцияКартинокСопоставлениеОбъектов - - - - 1 - - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле1 - 56 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле1 - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле1РасширеннаяПодсказка - 107 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле1КонтекстноеМеню - 57 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле2 - 58 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле2 - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле2РасширеннаяПодсказка - 109 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле2КонтекстноеМеню - 59 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле3 - 60 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле3 - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле3РасширеннаяПодсказка - 111 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле3КонтекстноеМеню - 61 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле4 - 62 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле4 - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле4РасширеннаяПодсказка - 113 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле4КонтекстноеМеню - 63 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле5 - 64 - true - true - - true - - - Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.ИсточникПоле5 - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле5РасширеннаяПодсказка - 115 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовИсточникПоле5КонтекстноеМеню - 65 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - true - true - - true - - - <key>ru</key> - <value>Поля источника</value> - - - ru - Поля приемника - - true - - ПоляИсточникаРасширеннаяПодсказка - 104 - Label - true - true - - Left - - - ColumnGroup - - InCell - auto - true - - - None - - ТаблицаАвтоматическиСопоставленныхОбъектовКоманднаяПанель - 33 - Left - - - ТаблицаАвтоматическиСопоставленныхОбъектовСтрокаПоиска - 80 - - ТаблицаАвтоматическиСопоставленныхОбъектовСтрокаПоискаРасширеннаяПодсказка - 82 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовСтрокаПоискаКонтекстноеМеню - 81 - true - - ТаблицаАвтоматическиСопоставленныхОбъектов - - true - - - - ТаблицаАвтоматическиСопоставленныхОбъектовСостояниеПросмотра - 83 - - ТаблицаАвтоматическиСопоставленныхОбъектовСостояниеПросмотраРасширеннаяПодсказка - 85 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовСостояниеПросмотраКонтекстноеМеню - 84 - true - - ViewStatusAddition - ТаблицаАвтоматическиСопоставленныхОбъектов - - true - - - - ТаблицаАвтоматическиСопоставленныхОбъектовУправлениеПоиском - 86 - - ТаблицаАвтоматическиСопоставленныхОбъектовУправлениеПоискомРасширеннаяПодсказка - 88 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовУправлениеПоискомКонтекстноеМеню - 87 - true - - SearchControlAddition - ТаблицаАвтоматическиСопоставленныхОбъектов - - true - - - - ТаблицаАвтоматическиСопоставленныхОбъектовРасширеннаяПодсказка - 79 - Label - true - true - - Left - - - - ТаблицаАвтоматическиСопоставленныхОбъектовКонтекстноеМеню - 32 - true - - HierarchicalList - true - true - true - MultiRow - Row -
            true
            - 1 - 1 - AutoUse - AutoUse - true - true - true - Auto - Auto - true - true - true - true - None - None - None - true - -
            - - КоманднаяПанельФормы - 71 - - Применить - 14 - true - true - - true - - false - - ПрименитьРасширеннаяПодсказка - 126 - Label - true - true - - Left - - - Form.Command.Применить - Auto - true - true - true - UserCmds - Auto - - - Отмена - 30 - true - true - - true - - false - - ОтменаРасширеннаяПодсказка - 127 - Label - true - true - - Left - - - Form.Command.Отмена - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - true - КоманднаяПанельФормыРасширеннаяПодсказка - 125 + ПанельОсновнаяРасширеннаяПодсказка + 151 Label true true @@ -904,9 +1798,9 @@ Left - CommandBar - - Right + Pages + + Auto None @@ -928,12 +1822,11 @@ OnCreateAtServer ПриСозданииНаСервере - DontBlock + LockOwner true true Vertical true - true true UseIfNecessary auto @@ -953,10 +1846,10 @@
            true
            - ТаблицаАвтоматическиСопоставленныхОбъектовПустая + ПустойРезультат <key>ru</key> - <value>Таблица автоматически сопоставленных объектов пустая</value> + <value>Пустой результат</value> 2 @@ -969,6 +1862,390 @@ true + + ТаблицаПереходов + + <key>ru</key> + <value>Таблица переходов</value> + + 3 + + ValueTable + + + true + + + true + + + ПорядковыйНомерПерехода + + <key>ru</key> + <value>Порядковый номер перехода</value> + + 1 + + Number + + 3 + 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 + + String + + + + true + + + true + + + + ИмяОбработчикаПриПереходеДалее + + <key>ru</key> + <value>Имя обработчика при переходе далее</value> + + 6 + + String + + + + true + + + true + + + + ИмяОбработчикаПриПереходеНазад + + <key>ru</key> + <value>Имя обработчика при переходе назад</value> + + 7 + + String + + + + true + + + true + + + + ДлительнаяОперация + + <key>ru</key> + <value>Длительная операция</value> + + 8 + + Boolean + + + true + + + true + + + + ИмяОбработчикаДлительнойОперации + + <key>ru</key> + <value>Имя обработчика длительной операции</value> + + 9 + + String + + + + true + + + true + + + + + ПорядковыйНомерПерехода + + <key>ru</key> + <value>Порядковый номер перехода</value> + + 4 + + Number + + 3 + true + + + + 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 + + Boolean + + + true + + + true + + + + ИдентификаторЗадания + + <key>ru</key> + <value>Идентификатор задания</value> + + 8 + + + true + + + true + + + + МаксимальноеКоличествоПользовательскихПолей + + <key>ru</key> + <value>Максимальное количество пользовательских полей</value> + + 9 + + Number + + 10 + + + + true + + + true + + + + СписокИспользуемыхПолей + + <key>ru</key> + <value>Список используемых полей</value> + + 10 + + ValueList + + + true + + + true + + + + + + + СписокПолейТаблицы + + <key>ru</key> + <value>Список полей таблицы</value> + + 11 + + ValueList + + + true + + + true + + + + + + + АдресВременногоХранилищаТаблицыНеутвержденныхСвязей + + <key>ru</key> + <value>Адрес временного хранилища таблицы неутвержденных связей</value> + + 12 + + String + + + + true + + + true + + + + СписокПолейСопоставления + + <key>ru</key> + <value>Список полей сопоставления</value> + + 13 + + ValueList + + + true + + + true + + + + + + + ВыдаватьПредупреждениеПриЗакрытииФормы + + <key>ru</key> + <value>Выдавать предупреждение при закрытии формы</value> + + 14 + + Boolean + + + true + + + true + + Применить @@ -1065,6 +2342,28 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>Закрыть</name> + <title> + <key>ru</key> + <value>Закрыть</value> + + 5 + + ru + Закрыть + + + true + + + + ЗакрытьФорму + + + Auto + Auto + diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/РезультатАвтоматическогоСопоставления/Module.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/РезультатАвтоматическогоСопоставления/Module.bsl index 10e26b192..c5addf5aa 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/РезультатАвтоматическогоСопоставления/Module.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/РезультатАвтоматическогоСопоставления/Module.bsl @@ -1,5 +1,3 @@ -&НаКлиенте -Перем мВыдаватьПредупреждениеПриЗакрытииФормы; //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -11,7 +9,7 @@ Возврат; КонецЕсли; - мВыдаватьПредупреждениеПриЗакрытииФормы = Истина; + ВыдаватьПредупреждениеПриЗакрытииФормы = Истина; // проверка, что форма открыта программно Если Не Параметры.Свойство("ИмяФайлаСообщенияОбмена") Тогда @@ -25,47 +23,26 @@ // инициализируем обработку переданными параметрами ЗаполнитьЗначенияСвойств(Объект, Параметры,, "СписокИспользуемыхПолей, СписокПолейТаблицы"); - ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); + МаксимальноеКоличествоПользовательскихПолей = Параметры.МаксимальноеКоличествоПользовательскихПолей; + АдресВременногоХранилищаТаблицыНеутвержденныхСвязей = Параметры.АдресВременногоХранилищаТаблицыНеутвержденныхСвязей; + СписокИспользуемыхПолей = Параметры.СписокИспользуемыхПолей; + СписокПолейТаблицы = Параметры.СписокПолейТаблицы; + СписокПолейСопоставления = Параметры.СписокПолейСопоставления; - // определяем свойство "СписокИспользуемыхПолей" - ОбработкаОбъект.СписокИспользуемыхПолей.Очистить(); - ОбщегоНазначенияКлиентСервер.ЗаполнитьКоллекциюСвойств(Параметры.СписокИспользуемыхПолей, ОбработкаОбъект.СписокИспользуемыхПолей); - - // определяем свойство "СписокПолейТаблицы" - ОбработкаОбъект.СписокПолейТаблицы.Очистить(); - ОбщегоНазначенияКлиентСервер.ЗаполнитьКоллекциюСвойств(Параметры.СписокПолейТаблицы, ОбработкаОбъект.СписокПолейТаблицы); - - // загружаем таблицу неутвержденных связей - ТаблицаНеутвержденныхСвязей = ПолучитьИзВременногоХранилища(Параметры.АдресВременногоХранилищаТаблицыНеутвержденныхСвязей); - УдалитьИзВременногоХранилища(Параметры.АдресВременногоХранилищаТаблицыНеутвержденныхСвязей); - ОбработкаОбъект.ТаблицаНеутвержденныхСвязей.Загрузить(ТаблицаНеутвержденныхСвязей); - - // получаем таблицу автоматического сопоставления объектов - ОбработкаОбъект.ВыполнитьАвтоматическоеСопоставлениеОбъектов(Отказ, Параметры.СписокПолейСопоставления); - - ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); - - // устанавливаем заголовки и видимость полей таблицы на форме - УстановитьВидимостьПолейТаблицы("ТаблицаАвтоматическиСопоставленныхОбъектов", Параметры.МаксимальноеКоличествоПользовательскихПолей); - - // установка заголока формы + // установка заголовка формы Заголовок = Параметры.Заголовок; - ТаблицаАвтоматическиСопоставленныхОбъектовПустая = (Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.Количество() = 0); + СценарийАвтоматическогоСопоставленияОбъектов(); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) - Если ТаблицаАвтоматическиСопоставленныхОбъектовПустая Тогда - - Отказ = Истина; - - Предупреждение(НСтр("ru = 'Одинаковые данные не найдены. - |Попробуйте задать другие условия сопоставления.'") - ); - КонецЕсли; + ПорядковыйНомерПерехода = 0; + + // Позиционируемся на втором шаге помощника + УстановитьПорядковыйНомерПерехода(2); КонецПроцедуры @@ -73,7 +50,7 @@ Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) Если Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.Количество() > 0 - И мВыдаватьПредупреждениеПриЗакрытииФормы = Истина Тогда + И ВыдаватьПредупреждениеПриЗакрытииФормы = Истина Тогда Предупреждение(НСтр("ru = 'Форма содержит данные автоматического сопоставления. Действие отменено.'")); @@ -89,19 +66,19 @@ &НаКлиенте Процедура Применить(Команда) - мВыдаватьПредупреждениеПриЗакрытииФормы = Ложь; + ВыдаватьПредупреждениеПриЗакрытииФормы = Ложь; // контекстный вызов сервера - Закрыть(ПоместитьТаблицуАвтоматическиСопоставленныхОбъектовВоВременноеХранилище()); + ОповеститьОВыборе(ПоместитьТаблицуАвтоматическиСопоставленныхОбъектовВоВременноеХранилище()); КонецПроцедуры &НаКлиенте Процедура Отмена(Команда) - мВыдаватьПредупреждениеПриЗакрытииФормы = Ложь; + ВыдаватьПредупреждениеПриЗакрытииФормы = Ложь; - Закрыть(Неопределено); + ОповеститьОВыборе(Неопределено); КонецПроцедуры @@ -119,6 +96,268 @@ КонецПроцедуры +&НаКлиенте +Процедура ЗакрытьФорму(Команда) + + ВыдаватьПредупреждениеПриЗакрытииФормы = Ложь; + + ОповеститьОВыборе(Неопределено); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ (Поставляемая часть) + +&НаКлиенте +Процедура ИзменитьПорядковыйНомерПерехода(Итератор) + + ОчиститьСообщения(); + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + Итератор); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПорядковыйНомерПерехода(Знач Значение) + + ЭтоПереходДалее = (Значение > ПорядковыйНомерПерехода); + + ПорядковыйНомерПерехода = Значение; + + Если ПорядковыйНомерПерехода < 0 Тогда + + ПорядковыйНомерПерехода = 0; + + КонецЕсли; + + ПорядковыйНомерПереходаПриИзменении(ЭтоПереходДалее); + +КонецПроцедуры + +&НаКлиенте +Процедура ПорядковыйНомерПереходаПриИзменении(Знач ЭтоПереходДалее) + + // Выполняем обработчики событий перехода + ВыполнитьОбработчикиСобытийПерехода(ЭтоПереходДалее); + + // Устанавливаем отображение страниц + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + Элементы.ПанельОсновная.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяОсновнойСтраницы]; + + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяСтраницыДекорации) Тогда + + Элементы.ПанельСинхронизацииДанных.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяСтраницыДекорации]; + + КонецЕсли; + + Если ЭтоПереходДалее И СтрокаПереходаТекущая.ДлительнаяОперация Тогда + + ПодключитьОбработчикОжидания("ВыполнитьОбработчикДлительнойОперации", 0.1, Истина); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбработчикиСобытийПерехода(Знач ЭтоПереходДалее) + + // Обработчики событий переходов + Если ЭтоПереходДалее Тогда + + СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - 1)); + + Если СтрокиПерехода.Количество() > 0 Тогда + + СтрокаПерехода = СтрокиПерехода[0]; + + // обработчик ПриПереходеДалее + Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеДалее) + И Не СтрокаПерехода.ДлительнаяОперация Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеДалее); + + Отказ = Ложь; + + А = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + Иначе + + СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода + 1)); + + Если СтрокиПерехода.Количество() > 0 Тогда + + СтрокаПерехода = СтрокиПерехода[0]; + + // обработчик ПриПереходеНазад + Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеНазад) + И Не СтрокаПерехода.ДлительнаяОперация Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеНазад); + + Отказ = Ложь; + + А = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + Если СтрокаПереходаТекущая.ДлительнаяОперация И Не ЭтоПереходДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + Возврат; + КонецЕсли; + + // обработчик ПриОткрытии + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии) Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПропуститьСтраницу, ЭтоПереходДалее)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии); + + Отказ = Ложь; + ПропуститьСтраницу = Ложь; + + А = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + ИначеЕсли ПропуститьСтраницу Тогда + + Если ЭтоПереходДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + Иначе + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбработчикДлительнойОперации() + + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + // обработчик ОбработкаДлительнойОперации + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации) Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПерейтиДалее)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации); + + Отказ = Ложь; + ПерейтиДалее = Истина; + + А = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + ИначеЕсли ПерейтиДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + КонецЕсли; + + Иначе + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ТаблицаПереходовНоваяСтрока(ПорядковыйНомерПерехода, + ИмяОсновнойСтраницы, + ИмяСтраницыНавигации = "", + ИмяСтраницыДекорации = "", + ИмяОбработчикаПриОткрытии = "", + ИмяОбработчикаПриПереходеДалее = "", + ИмяОбработчикаПриПереходеНазад = "", + ДлительнаяОперация = Ложь, + ИмяОбработчикаДлительнойОперации = "") + НоваяСтрока = ТаблицаПереходов.Добавить(); + + НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; + НоваяСтрока.ИмяОсновнойСтраницы = ИмяОсновнойСтраницы; + НоваяСтрока.ИмяСтраницыДекорации = ИмяСтраницыДекорации; + НоваяСтрока.ИмяСтраницыНавигации = ИмяСтраницыНавигации; + + НоваяСтрока.ИмяОбработчикаПриПереходеДалее = ИмяОбработчикаПриПереходеДалее; + НоваяСтрока.ИмяОбработчикаПриПереходеНазад = ИмяОбработчикаПриПереходеНазад; + НоваяСтрока.ИмяОбработчикаПриОткрытии = ИмяОбработчикаПриОткрытии; + + НоваяСтрока.ДлительнаяОперация = ДлительнаяОперация; + НоваяСтрока.ИмяОбработчикаДлительнойОперации = ИмяОбработчикаДлительнойОперации; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -130,13 +369,13 @@ КонецФункции &НаСервере -Процедура УстановитьВидимостьПолейТаблицы(Знач ИмяТаблицыФормы, Знач МаксимальноеКоличествоПользовательскихПолей) +Процедура УстановитьВидимостьПолейТаблицы(Знач ИмяТаблицыФормы, Знач МаксКоличествоПользовательскихПолей) ИмяПоляИсточника = СтрЗаменить("#ИмяТаблицыФормы#ИсточникПолеNN","#ИмяТаблицыФормы#", ИмяТаблицыФормы); ИмяПоляПриемника = СтрЗаменить("#ИмяТаблицыФормы#ПриемникПолеNN","#ИмяТаблицыФормы#", ИмяТаблицыФормы); // снимаем видимость всех полей таблицы сопоставления - Для НомерПоля = 1 По МаксимальноеКоличествоПользовательскихПолей Цикл + Для НомерПоля = 1 По МаксКоличествоПользовательскихПолей Цикл ПолеИсточника = СтрЗаменить(ИмяПоляИсточника, "NN", Строка(НомерПоля)); ПолеПриемника = СтрЗаменить(ИмяПоляПриемника, "NN", Строка(НомерПоля)); @@ -176,3 +415,243 @@ Объект.ТаблицаАвтоматическиСопоставленныхОбъектов.Загрузить(ТаблицаЗначений); КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиДалее() + + ИзменитьПорядковыйНомерПерехода(+1); + +КонецПроцедуры + +&НаКлиенте +Процедура ПерейтиНазад() + + ИзменитьПорядковыйНомерПерехода(-1); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики ожидания + +&НаКлиенте +Процедура ОбработчикОжиданияФоновогоЗадания() + + ДлительнаяОперацияЗавершена = Ложь; + + Состояние = ОбменДаннымиВызовСервера.СостояниеЗадания(ИдентификаторЗадания); + + Если Состояние = "Активно" Тогда + + ПодключитьОбработчикОжидания("ОбработчикОжиданияФоновогоЗадания", 5, Истина); + + ИначеЕсли Состояние = "Завершено" Тогда + + ДлительнаяОперация = Ложь; + ДлительнаяОперацияЗавершена = Истина; + + ПерейтиДалее(); + + Иначе // ЗавершеноАварийно + + ДлительнаяОперация = Ложь; + + ПерейтиНазад(); + + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики событий переходов + +// Страница 0: Ошибка автоматического сопоставления +// +&НаКлиенте +Функция Подключаемый_ОшибкаСопоставленияОбъектов_ПриОткрытии(Отказ, ПропуститьСтраницу, ЭтоПереходДалее) + + Элементы.Закрыть1.КнопкаПоУмолчанию = Истина; + +КонецФункции + + +// Страница 1 (ожидание): Сопоставление объектов +// +&НаКлиенте +Функция Подключаемый_ОжиданиеСопоставленияОбъектов_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) + + ВыполнитьСопоставлениеОбъектов(Отказ); + +КонецФункции + +// Страница 1 (ожидание): Сопоставление объектов +// +&НаКлиенте +Функция Подключаемый_ОжиданиеСопоставленияОбъектовДлительнаяОперация_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) + + Если ДлительнаяОперация Тогда + + ПерейтиДалее = Ложь; + + ПодключитьОбработчикОжидания("ОбработчикОжиданияФоновогоЗадания", 5, Истина); + + КонецЕсли; + +КонецФункции + +// Страница 1 (ожидание): Сопоставление объектов +// +&НаКлиенте +Функция Подключаемый_ОжиданиеСопоставленияОбъектовДлительнаяОперацияОкончание_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) + + Если ДлительнаяОперацияЗавершена Тогда + + ВыполнитьСопоставлениеОбъектовОкончание(Отказ); + + КонецЕсли; + +КонецФункции + +// Страница 1: Сопоставление объектов +// +&НаСервере +Процедура ВыполнитьСопоставлениеОбъектов(Отказ) + + ДлительнаяОперация = Ложь; + ДлительнаяОперацияЗавершена = Ложь; + ИдентификаторЗадания = Неопределено; + АдресВременногоХранилища = ""; + + Попытка + + РеквизитыФормы = Новый Структура; + РеквизитыФормы.Вставить("СписокИспользуемыхПолей", СписокИспользуемыхПолей); + РеквизитыФормы.Вставить("СписокПолейТаблицы", СписокПолейТаблицы); + РеквизитыФормы.Вставить("СписокПолейСопоставления", СписокПолейСопоставления); + + ПараметрыМетода = Новый Структура; + ПараметрыМетода.Вставить("КонтекстОбъекта", ОбменДаннымиСервер.ПолучитьКонтекстОбъекта(РеквизитФормыВЗначение("Объект"))); + ПараметрыМетода.Вставить("РеквизитыФормы", РеквизитыФормы); + ПараметрыМетода.Вставить("ТаблицаНеутвержденныхСвязей", ПолучитьИзВременногоХранилища(АдресВременногоХранилищаТаблицыНеутвержденныхСвязей)); + + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + + РезультатСопоставления = Обработки.СопоставлениеОбъектовИнформационныхБаз.РезультатАвтоматическогоСопоставленияОбъектов(ПараметрыМетода); + ПослеСопоставленияОбъектов(РезультатСопоставления); + + Иначе + + Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне( + УникальныйИдентификатор, + "Обработки.СопоставлениеОбъектовИнформационныхБаз.ВыполнитьАвтоматическоеСопоставлениеОбъектов", + ПараметрыМетода, + НСтр("ru = 'Автоматическое сопоставление объектов'") + ); + + Если Результат.ЗаданиеВыполнено Тогда + + ПослеСопоставленияОбъектов(ПолучитьИзВременногоХранилища(Результат.АдресХранилища)); + + Иначе + + ДлительнаяОперация = Истина; + ИдентификаторЗадания = Результат.ИдентификаторЗадания; + АдресВременногоХранилища = Результат.АдресХранилища; + + КонецЕсли; + + КонецЕсли; + + Исключение + Отказ = Истина; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Помощник сопоставления объектов.Автоматическое сопоставление'"), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + Возврат; + КонецПопытки; + +КонецПроцедуры + +// Страница 1: Сопоставление объектов +// +&НаСервере +Процедура ВыполнитьСопоставлениеОбъектовОкончание(Отказ) + + Попытка + ПослеСопоставленияОбъектов(ПолучитьИзВременногоХранилища(АдресВременногоХранилища)); + Исключение + Отказ = Истина; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Помощник сопоставления объектов.Автоматическое сопоставление'"), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + Возврат; + КонецПопытки; + +КонецПроцедуры + +// Страница 1: Сопоставление объектов +// +&НаСервере +Процедура ПослеСопоставленияОбъектов(Знач РезультатСопоставления) + + ОбработкаОбъект = Обработки.СопоставлениеОбъектовИнформационныхБаз.Создать(); + ОбменДаннымиСервер.ЗагрузитьКонтекстОбъекта(РезультатСопоставления.КонтекстОбъекта, ОбработкаОбъект); + ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); + + ПустойРезультат = РезультатСопоставления.ПустойРезультат; + + Если Не ПустойРезультат Тогда + + Модифицированность = Истина; + + // устанавливаем заголовки и видимость полей таблицы на форме + УстановитьВидимостьПолейТаблицы("ТаблицаАвтоматическиСопоставленныхОбъектов", МаксимальноеКоличествоПользовательскихПолей); + + КонецЕсли; + +КонецПроцедуры + + +// Страница 2: Работа с результатом автоматического сопоставления +// +&НаКлиенте +Функция Подключаемый_СопоставлениеОбъектов_ПриОткрытии(Отказ, ПропуститьСтраницу, ЭтоПереходДалее) + + Элементы.Применить.КнопкаПоУмолчанию = Истина; + + Если ПустойРезультат Тогда + ПропуститьСтраницу = Истина; + КонецЕсли; + +КонецФункции + + +// Страница 3: Пустой результат автоматического сопоставления +// +&НаКлиенте +Функция Подключаемый_ПустойРезультатСопоставленияОбъектовПустойРезультатСопоставленияОбъектов_ПриОткрытии(Отказ, ПропуститьСтраницу, ЭтоПереходДалее) + + Элементы.Закрыть.КнопкаПоУмолчанию = Истина; + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// Инициализация переходов помощника + +&НаСервере +Процедура СценарийАвтоматическогоСопоставленияОбъектов() + + ТаблицаПереходов.Очистить(); + + ТаблицаПереходовНоваяСтрока(1, "ОшибкаСопоставленияОбъектов",,, "ОшибкаСопоставленияОбъектов_ПриОткрытии"); + + // Ожидание сопоставления объектов + ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСопоставленияОбъектов",,,,,, Истина, "ОжиданиеСопоставленияОбъектов_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСопоставленияОбъектов",,,,,, Истина, "ОжиданиеСопоставленияОбъектовДлительнаяОперация_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСопоставленияОбъектов",,,,,, Истина, "ОжиданиеСопоставленияОбъектовДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); + + // Работа с результатом автоматического сопоставления + ТаблицаПереходовНоваяСтрока(5, "СопоставлениеОбъектов",,, "СопоставлениеОбъектов_ПриОткрытии"); + + ТаблицаПереходовНоваяСтрока(6, "ПустойРезультатСопоставленияОбъектов",,, "ПустойРезультатСопоставленияОбъектовПустойРезультатСопоставленияОбъектов_ПриОткрытии"); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Form.form b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Form.form index f6feb4003..8e1e9d557 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Form.form +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Form.form @@ -19,7 +19,7 @@ ПояснениеРасширеннаяПодсказка - 319 + 339 Label true true @@ -63,7 +63,7 @@ ОтборПоСтатусуСопоставленияРасширеннаяПодсказка - 321 + 341 Label true true @@ -108,7 +108,7 @@ ГруппаЗаголовкаТаблицыРасширеннаяПодсказка - 320 + 340 Label true true @@ -142,7 +142,7 @@ true ЗаписатьИЗакрытьРасширеннаяПодсказка - 325 + 345 Label true true @@ -169,7 +169,7 @@ true ЗаписатьОбновитьРасширеннаяПодсказка - 326 + 346 Label true true @@ -199,7 +199,7 @@ true ВыполнитьАвтоматическоеСопоставлениеРасширеннаяПодсказка - 328 + 348 Label true true @@ -226,7 +226,7 @@ true ДобавитьСопоставлениеРасширеннаяПодсказка - 329 + 349 Label true true @@ -253,7 +253,7 @@ true ОтменитьСопоставлениеРасширеннаяПодсказка - 330 + 350 Label true true @@ -284,7 +284,7 @@ ГруппаСвязиРасширеннаяПодсказка - 327 + 347 Label true true @@ -305,7 +305,7 @@ true ОбновитьРасширеннаяПодсказка - 331 + 351 Label true true @@ -335,7 +335,7 @@ НайтиРасширеннаяПодсказка - 333 + 353 Label true true @@ -362,7 +362,7 @@ ОтменитьПоискРасширеннаяПодсказка - 334 + 354 Label true true @@ -390,7 +390,7 @@ true СортировкаРасширеннаяПодсказка - 335 + 355 Label true true @@ -422,7 +422,7 @@ ГруппаНайтиРасширеннаяПодсказка - 332 + 352 Label true true @@ -443,7 +443,7 @@ true ВыполнитьЗагрузкуДанныхРасширеннаяПодсказка - 336 + 356 Label true true @@ -474,7 +474,7 @@ true ИзменитьСписокПолейТаблицыРасширеннаяПодсказка - 338 + 358 Label true true @@ -506,7 +506,7 @@ ПодменюНастройкиРасширеннаяПодсказка - 337 + 357 Label true true @@ -529,7 +529,7 @@ ФормаВывестиСписокРасширеннаяПодсказка - 340 + 360 Label true true @@ -556,7 +556,7 @@ ФормаКопироватьВБуферОбменаРасширеннаяПодсказка - 341 + 361 Label true true @@ -588,7 +588,7 @@ ФормаГруппаВывестиСписокРасширеннаяПодсказка - 339 + 359 Label true true @@ -609,7 +609,7 @@ КоманднаяПанельРасширеннаяПодсказка - 324 + 344 Label true true @@ -638,7 +638,7 @@ КнопкиТаблицыРасширеннаяПодсказка - 323 + 343 Label true true @@ -655,379 +655,704 @@ Auto - - ТаблицаСопоставления - 22 - - Style.ПоясняющийТекст - - true - true - - true - - - ТаблицаСопоставления - - true - false - None - Add - Change - Copy - Delete - EndEdit - MoveDown - MoveUp - SelectAll - SortListAsc - SortListDesc + + ПанельОсновная + 318 - ДанныеЭтойПрограммы - 306 - - ПоляПриемника - 69 - - ТаблицаСопоставленияПриемникИндексКартинки - 285 - true - true - - true - - - ТаблицаСопоставления.ПриемникИндексКартинки - - true - None - - ТаблицаСопоставленияПриемникИндексКартинкиРасширеннаяПодсказка - 364 - Label - true - true - - Left - - - - ТаблицаСопоставленияПриемникИндексКартинкиКонтекстноеМеню - 286 - true - - PictureField - true - DontShow - Auto - Left - - true - true - true - true - - CommonPicture.КоллекцияКартинокСопоставлениеОбъектов - - - - 1 - - - - - ТаблицаСопоставленияПриемникПоле1 - 48 - true - true - - true - - - ТаблицаСопоставления.ПриемникПоле1 - - - ТаблицаСопоставленияПриемникПоле1РасширеннаяПодсказка - 366 - Label - true - true - - Left - - - - ТаблицаСопоставленияПриемникПоле1КонтекстноеМеню - 49 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаСопоставленияПриемникПоле2 - 50 - true - true - - true - - - ТаблицаСопоставления.ПриемникПоле2 - - - ТаблицаСопоставленияПриемникПоле2РасширеннаяПодсказка - 368 - Label - true - true - - Left - - - - ТаблицаСопоставленияПриемникПоле2КонтекстноеМеню - 51 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаСопоставленияПриемникПоле3 - 52 - true - true - - true - - - ТаблицаСопоставления.ПриемникПоле3 - - - ТаблицаСопоставленияПриемникПоле3РасширеннаяПодсказка - 370 - Label - true - true - - Left - - - - ТаблицаСопоставленияПриемникПоле3КонтекстноеМеню - 53 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаСопоставленияПриемникПоле4 - 54 - true - true - - true - - - ТаблицаСопоставления.ПриемникПоле4 - - - ТаблицаСопоставленияПриемникПоле4РасширеннаяПодсказка - 372 - Label - true - true - - Left - - - - ТаблицаСопоставленияПриемникПоле4КонтекстноеМеню - 55 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаСопоставленияПриемникПоле5 - 56 - true - true - - true - - - ТаблицаСопоставления.ПриемникПоле5 - - - ТаблицаСопоставленияПриемникПоле5РасширеннаяПодсказка - 374 - Label - true - true - - Left - - - - ТаблицаСопоставленияПриемникПоле5КонтекстноеМеню - 57 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - + СопоставлениеОбъектов + 321 + + ТаблицаСопоставления + 22 + + Style.ПоясняющийТекст + true true true - - <key>ru</key> - <value>Поля приемника</value> - - - ru - Поля источника - - - ПоляПриемникаРасширеннаяПодсказка - 363 - Label - true - true - - Left - - - ColumnGroup - - InCell - auto - true - - - true - true - - true - - - <key>ru</key> - <value><Эта программа></value> - - - System.DefaultGUIFont - true - false - false - false - - - ru - Данные этой программы - - - ДанныеЭтойПрограммыРасширеннаяПодсказка - 362 - Label - true - true - - Left - - - ColumnGroup - - Vertical - auto - true - true - - - - ДанныеВторойПрограммы - 307 - - ПоляИсточника - 68 - - ТаблицаСопоставленияИсточникИндексКартинки - 283 + + ТаблицаСопоставления + + false + None + Add + Change + Copy + Delete + EndEdit + MoveDown + MoveUp + SelectAll + SortListAsc + SortListDesc + + ДанныеЭтойПрограммы + 306 + + ПоляПриемника + 69 + + ТаблицаСопоставленияПриемникИндексКартинки + 285 + true + true + + true + + + ТаблицаСопоставления.ПриемникИндексКартинки + + true + None + + ТаблицаСопоставленияПриемникИндексКартинкиРасширеннаяПодсказка + 386 + Label + true + true + + Left + + + + ТаблицаСопоставленияПриемникИндексКартинкиКонтекстноеМеню + 286 + true + + PictureField + true + DontShow + Auto + Left + + true + true + true + true + + CommonPicture.КоллекцияКартинокСопоставлениеОбъектов + + + + 1 + + + + + ТаблицаСопоставленияПриемникПоле1 + 48 + true + true + + true + + + ТаблицаСопоставления.ПриемникПоле1 + + + ТаблицаСопоставленияПриемникПоле1РасширеннаяПодсказка + 388 + Label + true + true + + Left + + + + ТаблицаСопоставленияПриемникПоле1КонтекстноеМеню + 49 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаСопоставленияПриемникПоле2 + 50 + true + true + + true + + + ТаблицаСопоставления.ПриемникПоле2 + + + ТаблицаСопоставленияПриемникПоле2РасширеннаяПодсказка + 390 + Label + true + true + + Left + + + + ТаблицаСопоставленияПриемникПоле2КонтекстноеМеню + 51 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаСопоставленияПриемникПоле3 + 52 + true + true + + true + + + ТаблицаСопоставления.ПриемникПоле3 + + + ТаблицаСопоставленияПриемникПоле3РасширеннаяПодсказка + 392 + Label + true + true + + Left + + + + ТаблицаСопоставленияПриемникПоле3КонтекстноеМеню + 53 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаСопоставленияПриемникПоле4 + 54 + true + true + + true + + + ТаблицаСопоставления.ПриемникПоле4 + + + ТаблицаСопоставленияПриемникПоле4РасширеннаяПодсказка + 394 + Label + true + true + + Left + + + + ТаблицаСопоставленияПриемникПоле4КонтекстноеМеню + 55 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаСопоставленияПриемникПоле5 + 56 + true + true + + true + + + ТаблицаСопоставления.ПриемникПоле5 + + + ТаблицаСопоставленияПриемникПоле5РасширеннаяПодсказка + 396 + Label + true + true + + Left + + + + ТаблицаСопоставленияПриемникПоле5КонтекстноеМеню + 57 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Поля приемника</value> + + + ru + Поля источника + + + ПоляПриемникаРасширеннаяПодсказка + 385 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + true true true - - ТаблицаСопоставления.ИсточникИндексКартинки - + + <key>ru</key> + <value><Эта программа></value> + + + System.DefaultGUIFont + true + false + false + false + + + ru + Данные этой программы + - ТаблицаСопоставленияИсточникИндексКартинкиРасширеннаяПодсказка - 378 + ДанныеЭтойПрограммыРасширеннаяПодсказка + 384 + Label + true + true + + Left + + + ColumnGroup + + Vertical + auto + true + true + + + + ДанныеВторойПрограммы + 307 + + ПоляИсточника + 68 + + ТаблицаСопоставленияИсточникИндексКартинки + 283 + true + true + + true + + + ТаблицаСопоставления.ИсточникИндексКартинки + + + ТаблицаСопоставленияИсточникИндексКартинкиРасширеннаяПодсказка + 400 + Label + true + true + + Left + + + + ТаблицаСопоставленияИсточникИндексКартинкиКонтекстноеМеню + 284 + true + + PictureField + true + Auto + Left + + true + true + true + true + + CommonPicture.КоллекцияКартинокСопоставлениеОбъектов + + + + 1 + + + + + ТаблицаСопоставленияИсточникПоле1 + 58 + true + true + + true + + + ТаблицаСопоставления.ИсточникПоле1 + + + ТаблицаСопоставленияИсточникПоле1РасширеннаяПодсказка + 402 + Label + true + true + + Left + + + + ТаблицаСопоставленияИсточникПоле1КонтекстноеМеню + 59 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаСопоставленияИсточникПоле2 + 60 + true + true + + true + + + ТаблицаСопоставления.ИсточникПоле2 + + + ТаблицаСопоставленияИсточникПоле2РасширеннаяПодсказка + 404 + Label + true + true + + Left + + + + ТаблицаСопоставленияИсточникПоле2КонтекстноеМеню + 61 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаСопоставленияИсточникПоле3 + 62 + true + true + + true + + + ТаблицаСопоставления.ИсточникПоле3 + + + ТаблицаСопоставленияИсточникПоле3РасширеннаяПодсказка + 406 + Label + true + true + + Left + + + + ТаблицаСопоставленияИсточникПоле3КонтекстноеМеню + 63 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаСопоставленияИсточникПоле4 + 64 + true + true + + true + + + ТаблицаСопоставления.ИсточникПоле4 + + + ТаблицаСопоставленияИсточникПоле4РасширеннаяПодсказка + 408 + Label + true + true + + Left + + + + ТаблицаСопоставленияИсточникПоле4КонтекстноеМеню + 65 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + ТаблицаСопоставленияИсточникПоле5 + 66 + true + true + + true + + + ТаблицаСопоставления.ИсточникПоле5 + + + ТаблицаСопоставленияИсточникПоле5РасширеннаяПодсказка + 410 + Label + true + true + + Left + + + + ТаблицаСопоставленияИсточникПоле5КонтекстноеМеню + 67 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Поля источника</value> + + + ru + Поля источника + + + ПоляИсточникаРасширеннаяПодсказка + 399 + Label + true + true + + Left + + + ColumnGroup + + InCell + auto + true + + + true + true + + true + + + <key>ru</key> + <value><Вторая программа></value> + + + System.DefaultGUIFont + true + false + false + false + + + ru + Данные второй программы + + + ДанныеВторойПрограммыРасширеннаяПодсказка + 398 + Label + true + true + + Left + + + ColumnGroup + + Vertical + auto + true + true + + + None + + ТаблицаСопоставленияКоманднаяПанель + 24 + Left + true + + + Selection + ТаблицаСопоставленияВыбор + + + ТаблицаСопоставленияСтрокаПоиска + 375 + + ТаблицаСопоставленияСтрокаПоискаРасширеннаяПодсказка + 377 Label true true @@ -1036,41 +1361,20 @@ - ТаблицаСопоставленияИсточникИндексКартинкиКонтекстноеМеню - 284 + ТаблицаСопоставленияСтрокаПоискаКонтекстноеМеню + 376 true - PictureField - true - Auto - Left - + ТаблицаСопоставления + true - true - true - true - - CommonPicture.КоллекцияКартинокСопоставлениеОбъектов - - - - 1 - - - - ТаблицаСопоставленияИсточникПоле1 - 58 - true - true - - true - - - ТаблицаСопоставления.ИсточникПоле1 - + + + ТаблицаСопоставленияСостояниеПросмотра + 378 - ТаблицаСопоставленияИсточникПоле1РасширеннаяПодсказка + ТаблицаСопоставленияСостояниеПросмотраРасширеннаяПодсказка 380 Label true @@ -1080,80 +1384,544 @@ - ТаблицаСопоставленияИсточникПоле1КонтекстноеМеню - 59 + ТаблицаСопоставленияСостояниеПросмотраКонтекстноеМеню + 379 true - InputField - Auto - true - Left - true - + ViewStatusAddition + ТаблицаСопоставления + + true + + + + ТаблицаСопоставленияУправлениеПоиском + 381 + + ТаблицаСопоставленияУправлениеПоискомРасширеннаяПодсказка + 383 + Label true true - true - true - true - true - Normal - - - - ТаблицаСопоставленияИсточникПоле2 - 60 - true - true - - true - - - ТаблицаСопоставления.ИсточникПоле2 - - - ТаблицаСопоставленияИсточникПоле2РасширеннаяПодсказка + + Left + + + + ТаблицаСопоставленияУправлениеПоискомКонтекстноеМеню 382 - Label - true - true - - Left - - - - ТаблицаСопоставленияИсточникПоле2КонтекстноеМеню - 61 true - InputField - Auto - true - Left - true - + SearchControlAddition + ТаблицаСопоставления + + true + + + + ТаблицаСопоставленияРасширеннаяПодсказка + 374 + Label + true + true + + Left + + + + ТаблицаСопоставленияКонтекстноеМеню + 23 + + ТаблицаСопоставленияКонтекстноеМенюГруппаСвязи + 296 + + КонтекстноеМенюТаблицаСопоставленияДобавитьСопоставление + 279 + true + true + + true + + false + + КонтекстноеМенюТаблицаСопоставленияДобавитьСопоставлениеРасширеннаяПодсказка + 365 + Label + true + true + + Left + + + Form.Command.ДобавитьСопоставление + Normal + Auto + true + true + UserCmds + Auto + + + КонтекстноеМенюТаблицаСопоставленияОтменитьСопоставление + 280 + true + true + + true + + false + + КонтекстноеМенюТаблицаСопоставленияОтменитьСопоставлениеРасширеннаяПодсказка + 366 + Label + true + true + + Left + + + Form.Command.ОтменитьСопоставление + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Таблица сопоставления контекстное меню группа связи</value> + + + ru + Таблица сопоставления контекстное меню группа связи + + + ТаблицаСопоставленияКонтекстноеМенюГруппаСвязиРасширеннаяПодсказка + 364 + Label + true + true + + Left + + + + + + ТаблицаСопоставленияКонтекстноеМенюГруппаНайти + 297 + + ТаблицаСопоставленияКонтекстноеМенюНайти + 289 + true + true + + true + + + ТаблицаСопоставленияКонтекстноеМенюНайтиРасширеннаяПодсказка + 368 + Label + true + true + + Left + + + Form.Item.ТаблицаСопоставления.StandardCommand.Find + Normal + Auto + true + true + UserCmds + Auto + + + ТаблицаСопоставленияКонтекстноеМенюОтменитьПоиск + 290 + true + true + + true + + + ТаблицаСопоставленияКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка + 369 + Label + true + true + + Left + + + Form.Item.ТаблицаСопоставления.StandardCommand.CancelSearch + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Таблица сопоставления контекстное меню группа найти</value> + + + ru + Таблица сопоставления контекстное меню группа найти + + + ТаблицаСопоставленияКонтекстноеМенюГруппаНайтиРасширеннаяПодсказка + 367 + Label + true + true + + Left + + + + + + ТаблицаСопоставленияКонтекстноеМенюСортировка + 291 + true + true + + true + + + ТаблицаСопоставленияКонтекстноеМенюСортировкаРасширеннаяПодсказка + 370 + Label + true + true + + Left + + + Form.Command.Сортировка + Normal + Auto true true - true - true - true - true - Normal - - - - ТаблицаСопоставленияИсточникПоле3 - 62 + UserCmds + Auto + + + ТаблицаСопоставленияКонтекстноеМенюГруппаВывестиСписок + 311 + + ТаблицаСопоставленияКонтекстноеМенюВывестиСписок + 312 + true + true + + true + + + ТаблицаСопоставленияКонтекстноеМенюВывестиСписокРасширеннаяПодсказка + 372 + Label + true + true + + Left + + + Form.Item.ТаблицаСопоставления.StandardCommand.OutputList + Normal + Auto + true + true + UserCmds + Auto + + + ТаблицаСопоставленияКонтекстноеМенюКопироватьВБуферОбмена + 313 + true + true + + true + + + ТаблицаСопоставленияКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка + 373 + Label + true + true + + Left + + + Form.Item.ТаблицаСопоставления.StandardCommand.CopyToClipboard + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Таблица сопоставления контекстное меню группа вывести список</value> + + + ru + Таблица сопоставления контекстное меню группа вывести список + + + ТаблицаСопоставленияКонтекстноеМенюГруппаВывестиСписокРасширеннаяПодсказка + 371 + Label + true + true + + Left + + + + + + true + true + true + true + true + true + MultiRow + Row +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + true + Auto + Auto + true + true + true + true + None + None + None + true + + + true + true + + true + + + <key>ru</key> + <value>Сопоставление объектов</value> + + + ru + Сопоставление объектов + + true + + СопоставлениеОбъектовРасширеннаяПодсказка + 363 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + ОжиданиеСопоставленияОбъектов + 320 + + Рамка + 336 + + ГруппировкаСообщения + 329 + + ГруппаКартинки + 330 + + Декорация14 + 331 + true + true + + true + + + Декорация14РасширеннаяПодсказка + 424 + Label + true + true + + Left + + + + Декорация14КонтекстноеМеню + 332 + true + + 8 + true + 3 + true + false + + + CommonPicture.СинхронизацияДанныхАнализДанных48 + + + + true + true + + true + + + <key>ru</key> + <value>Группа картинки</value> + + + ru + Группа картинки + + + ГруппаКартинкиРасширеннаяПодсказка + 423 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаСообщения + 333 + + Декорация15 + 334 + + <key>ru</key> + <value>Выполняется анализ данных...</value> + + true + true + + true + + + Декорация15РасширеннаяПодсказка + 426 + Label + true + true + + Left + + + + Декорация15КонтекстноеМеню + 335 + true + + Label + true + 3 + true + false + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Группа сообщения</value> + + + ru + Группа сообщения + + + ГруппаСообщенияРасширеннаяПодсказка + 425 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + true true true - - ТаблицаСопоставления.ИсточникПоле3 - + + ru + Группировка сообщения + - ТаблицаСопоставленияИсточникПоле3РасширеннаяПодсказка - 384 + ГруппировкаСообщенияРасширеннаяПодсказка + 422 Label true true @@ -1161,106 +1929,14 @@ Left - - ТаблицаСопоставленияИсточникПоле3КонтекстноеМеню - 63 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаСопоставленияИсточникПоле4 - 64 - true - true - - true - - - ТаблицаСопоставления.ИсточникПоле4 - - - ТаблицаСопоставленияИсточникПоле4РасширеннаяПодсказка - 386 - Label - true - true - - Left - - - - ТаблицаСопоставленияИсточникПоле4КонтекстноеМеню - 65 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal - - - - ТаблицаСопоставленияИсточникПоле5 - 66 - true - true - - true - - - ТаблицаСопоставления.ИсточникПоле5 - - - ТаблицаСопоставленияИсточникПоле5РасширеннаяПодсказка - 388 - Label - true - true - - Left - - - - ТаблицаСопоставленияИсточникПоле5КонтекстноеМеню - 67 - true - - InputField - Auto - true - Left - true - - true - true - true - true - true - true - Normal + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto true @@ -1270,15 +1946,14 @@ <key>ru</key> - <value>Поля источника</value> + <value>Рамка</value> - - ru - Поля источника - + true + true + true - ПоляИсточникаРасширеннаяПодсказка - 377 + РамкаРасширеннаяПодсказка + 421 Label true true @@ -1286,11 +1961,15 @@ Left - ColumnGroup - - InCell - auto - true + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + Auto + Auto true @@ -1300,22 +1979,16 @@ <key>ru</key> - <value><Вторая программа></value> + <value>Ожидание сопоставления объектов</value> - - System.DefaultGUIFont - true - false - false - false - ru - Данные второй программы + Ожидание сопоставления объектов + true - ДанныеВторойПрограммыРасширеннаяПодсказка - 376 + ОжиданиеСопоставленияОбъектовРасширеннаяПодсказка + 420 Label true true @@ -1323,31 +1996,243 @@ Left - ColumnGroup - + Page + Vertical auto - true - true - None - - ТаблицаСопоставленияКоманднаяПанель - 24 - Left - true - - - Selection - ТаблицаСопоставленияВыбор - - - ТаблицаСопоставленияСтрокаПоиска - 353 + + ОшибкаСопоставленияОбъектов + 319 + + Рамка1 + 337 + + ГруппировкаСообщения1 + 322 + + ГруппаКартинки1 + 323 + + Декорация3 + 324 + true + true + + true + + + Декорация3РасширеннаяПодсказка + 431 + Label + true + true + + Left + + + + Декорация3КонтекстноеМеню + 325 + true + + 8 + true + 3 + true + false + + + CommonPicture.Предупреждение32 + + + + true + true + + true + + + <key>ru</key> + <value>Группа картинки</value> + + + ru + Группа картинки + + + ГруппаКартинки1РасширеннаяПодсказка + 430 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаСообщения1 + 326 + + Декорация4 + 327 + + <key>ru</key> + <value>Не удалось выполнить анализ данных.</value> + + true + true + + true + + + Декорация4РасширеннаяПодсказка + 433 + Label + true + true + + Left + + + + Декорация4КонтекстноеМеню + 328 + true + + Label + true + 3 + true + false + + Left + Center + + + true + true + + true + + + <key>ru</key> + <value>Группа сообщения</value> + + + ru + Группа сообщения + + + ГруппаСообщения1РасширеннаяПодсказка + 432 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + ru + Группировка сообщения + + + ГруппировкаСообщения1РасширеннаяПодсказка + 429 + Label + true + true + + Left + + + UsualGroup + + Auto + NormalSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Рамка</value> + + true + true + true + + Рамка1РасширеннаяПодсказка + 428 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + StrongSeparation + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Ошибка сопоставления объектов</value> + + + ru + Ошибка сопоставления объектов + + true - ТаблицаСопоставленияСтрокаПоискаРасширеннаяПодсказка - 355 + ОшибкаСопоставленияОбъектовРасширеннаяПодсказка + 427 Label true true @@ -1355,67 +2240,25 @@ Left - - ТаблицаСопоставленияСтрокаПоискаКонтекстноеМеню - 354 - true - - ТаблицаСопоставления - - true + Page + + Vertical + auto - - - ТаблицаСопоставленияСостояниеПросмотра - 356 - - ТаблицаСопоставленияСостояниеПросмотраРасширеннаяПодсказка - 358 - Label - true - true - - Left - - - - ТаблицаСопоставленияСостояниеПросмотраКонтекстноеМеню - 357 - true - - ViewStatusAddition - ТаблицаСопоставления - - true - - - - ТаблицаСопоставленияУправлениеПоиском - 359 - - ТаблицаСопоставленияУправлениеПоискомРасширеннаяПодсказка - 361 - Label - true - true - - Left - - - - ТаблицаСопоставленияУправлениеПоискомКонтекстноеМеню - 360 - true - - SearchControlAddition - ТаблицаСопоставления - - true - - + + true + true + + true + + + <key>ru</key> + <value>Панель основная</value> + + true - ТаблицаСопоставленияРасширеннаяПодсказка - 352 + ПанельОсновнаяРасширеннаяПодсказка + 362 Label true true @@ -1423,305 +2266,10 @@ Left - - ТаблицаСопоставленияКонтекстноеМеню - 23 - - ТаблицаСопоставленияКонтекстноеМенюГруппаСвязи - 296 - - КонтекстноеМенюТаблицаСопоставленияДобавитьСопоставление - 279 - true - true - - true - - false - - КонтекстноеМенюТаблицаСопоставленияДобавитьСопоставлениеРасширеннаяПодсказка - 343 - Label - true - true - - Left - - - Form.Command.ДобавитьСопоставление - Normal - Auto - true - true - UserCmds - Auto - - - КонтекстноеМенюТаблицаСопоставленияОтменитьСопоставление - 280 - true - true - - true - - false - - КонтекстноеМенюТаблицаСопоставленияОтменитьСопоставлениеРасширеннаяПодсказка - 344 - Label - true - true - - Left - - - Form.Command.ОтменитьСопоставление - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Таблица сопоставления контекстное меню группа связи</value> - - - ru - Таблица сопоставления контекстное меню группа связи - - - ТаблицаСопоставленияКонтекстноеМенюГруппаСвязиРасширеннаяПодсказка - 342 - Label - true - true - - Left - - - - - - ТаблицаСопоставленияКонтекстноеМенюГруппаНайти - 297 - - ТаблицаСопоставленияКонтекстноеМенюНайти - 289 - true - true - - true - - - ТаблицаСопоставленияКонтекстноеМенюНайтиРасширеннаяПодсказка - 346 - Label - true - true - - Left - - - Form.Item.ТаблицаСопоставления.StandardCommand.Find - Normal - Auto - true - true - UserCmds - Auto - - - ТаблицаСопоставленияКонтекстноеМенюОтменитьПоиск - 290 - true - true - - true - - - ТаблицаСопоставленияКонтекстноеМенюОтменитьПоискРасширеннаяПодсказка - 347 - Label - true - true - - Left - - - Form.Item.ТаблицаСопоставления.StandardCommand.CancelSearch - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Таблица сопоставления контекстное меню группа найти</value> - - - ru - Таблица сопоставления контекстное меню группа найти - - - ТаблицаСопоставленияКонтекстноеМенюГруппаНайтиРасширеннаяПодсказка - 345 - Label - true - true - - Left - - - - - - ТаблицаСопоставленияКонтекстноеМенюСортировка - 291 - true - true - - true - - - ТаблицаСопоставленияКонтекстноеМенюСортировкаРасширеннаяПодсказка - 348 - Label - true - true - - Left - - - Form.Command.Сортировка - Normal - Auto - true - true - UserCmds - Auto - - - ТаблицаСопоставленияКонтекстноеМенюГруппаВывестиСписок - 311 - - ТаблицаСопоставленияКонтекстноеМенюВывестиСписок - 312 - true - true - - true - - - ТаблицаСопоставленияКонтекстноеМенюВывестиСписокРасширеннаяПодсказка - 350 - Label - true - true - - Left - - - Form.Item.ТаблицаСопоставления.StandardCommand.OutputList - Normal - Auto - true - true - UserCmds - Auto - - - ТаблицаСопоставленияКонтекстноеМенюКопироватьВБуферОбмена - 313 - true - true - - true - - - ТаблицаСопоставленияКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка - 351 - Label - true - true - - Left - - - Form.Item.ТаблицаСопоставления.StandardCommand.CopyToClipboard - Normal - Auto - true - true - UserCmds - Auto - - true - true - - true - - - <key>ru</key> - <value>Таблица сопоставления контекстное меню группа вывести список</value> - - - ru - Таблица сопоставления контекстное меню группа вывести список - - - ТаблицаСопоставленияКонтекстноеМенюГруппаВывестиСписокРасширеннаяПодсказка - 349 - Label - true - true - - Left - - - - - - true - true - true - true - true - true - MultiRow - Row -
            true
            - 1 - 1 - AutoUse - AutoUse - true - true - true - Auto - Auto - true - true - true - true - None - None - None - true - + Pages + + Auto + ИнформацияДайджестаСопоставления @@ -1740,7 +2288,7 @@ КартинкаИнформацияОНаличииНесопоставленныхОбъектовРасширеннаяПодсказка - 399 + 435 Label true true @@ -1777,7 +2325,7 @@ КоличествоОбъектовСопоставленныхРасширеннаяПодсказка - 400 + 436 Label true true @@ -1827,7 +2375,7 @@ НадписьШтРасширеннаяПодсказка - 402 + 438 Label true true @@ -1860,7 +2408,7 @@ КоличествоОбъектовНесопоставленныхРасширеннаяПодсказка - 403 + 439 Label true true @@ -1910,7 +2458,7 @@ НадписьШт1РасширеннаяПодсказка - 405 + 441 Label true true @@ -1945,7 +2493,7 @@ ИнформацияДайджестаСопоставленияРасширеннаяПодсказка - 398 + 434 Label true true @@ -1977,7 +2525,7 @@ СтраницаСопоставленияРасширеннаяПодсказка - 318 + 338 Label true true @@ -2003,6 +2551,10 @@ Left true + + ChoiceProcessing + ОбработкаВыбора + OnOpen ПриОткрытии @@ -2034,7 +2586,6 @@ true Vertical true - true true UseIfNecessary auto @@ -2703,6 +3254,361 @@ true + + ТаблицаПереходов + + <key>ru</key> + <value>Таблица переходов</value> + + 12 + + ValueTable + + + true + + + true + + + ПорядковыйНомерПерехода + + <key>ru</key> + <value>Порядковый номер перехода</value> + + 1 + + Number + + 3 + 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 + + String + + + + true + + + true + + + + ИмяОбработчикаПриПереходеДалее + + <key>ru</key> + <value>Имя обработчика при переходе далее</value> + + 6 + + String + + + + true + + + true + + + + ИмяОбработчикаПриПереходеНазад + + <key>ru</key> + <value>Имя обработчика при переходе назад</value> + + 7 + + String + + + + true + + + true + + + + ДлительнаяОперация + + <key>ru</key> + <value>Длительная операция</value> + + 8 + + Boolean + + + true + + + true + + + + ИмяОбработчикаДлительнойОперации + + <key>ru</key> + <value>Имя обработчика длительной операции</value> + + 9 + + String + + + + true + + + true + + + + + ПорядковыйНомерПерехода + + <key>ru</key> + <value>Порядковый номер перехода</value> + + 13 + + Number + + 3 + true + + + + true + + + true + + + + ИдентификаторЗадания + + <key>ru</key> + <value>Идентификатор задания</value> + + 14 + + + true + + + true + + + + ДлительнаяОперация + + <key>ru</key> + <value>Длительная операция</value> + + 15 + + Boolean + + + true + + + true + + + + ДлительнаяОперацияЗавершена + + <key>ru</key> + <value>Длительная операция завершена</value> + + 16 + + Boolean + + + true + + + true + + + + АдресВременногоХранилища + + <key>ru</key> + <value>Адрес временного хранилища</value> + + 17 + + String + + + + true + + + true + + + + ПрименитьТаблицуНеутвержденныхЗаписей + + <key>ru</key> + <value>Применить таблицу неутвержденных записей</value> + + 18 + + Boolean + + + 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> + + 21 + + Boolean + + + true + + + true + + + + ВыдаватьПредупреждениеПриЗакрытииФормы + + <key>ru</key> + <value>Выдавать предупреждение при закрытии формы</value> + + 22 + + Boolean + + + true + + + true + + ДобавитьСопоставление diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Module.bsl index d7322672e..4f8c1dc13 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/Форма/Module.bsl @@ -1,5 +1,3 @@ -&НаКлиенте -Перем ВыдаватьПредупреждениеПриЗакрытииФормы; //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -17,11 +15,7 @@ // проверка, что форма открыта программно Если Не Параметры.Свойство("ИмяФайлаСообщенияОбмена") Тогда - - НСтрока = НСтр("ru = 'Форма обработки не может быть открыта интерактивно.'"); - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтрока,,,, Отказ); - Возврат; - + ВызватьИсключение НСтр("ru = 'Обработка не предназначена для непосредственного использования.'"); КонецЕсли; ВыполнятьСопоставлениеДанных = Истина; @@ -55,7 +49,7 @@ // установка отбора по умолчанию ОтборПоСтатусуСопоставления = "НесопоставленныеОбъекты"; - // установка заголока формы + // установка заголовка формы ПредставлениеДанных = Строка(Метаданные.НайтиПоТипу(Тип(Объект.ТипПриемникаСтрокой))); Заголовок = НСтр("ru = 'Сопоставление данных ""[ПредставлениеДанных]""'"); Заголовок = СтрЗаменить(Заголовок, "[ПредставлениеДанных]", ПредставлениеДанных); @@ -84,6 +78,14 @@ НаименованиеЭтойПрограммы, НаименованиеВторойПрограммы ); + + СценарийВыполненияСопоставленияОбъектов(); + + ПрименитьТаблицуНеутвержденныхЗаписей = Ложь; + ПрименитьРезультатАвтоматическогоСопоставления = Ложь; + АдресТаблицыАвтоматическиСопоставленныхОбъектов = ""; + ЗаписатьИЗакрыть = Ложь; + КонецПроцедуры &НаКлиенте @@ -91,16 +93,20 @@ ВыдаватьПредупреждениеПриЗакрытииФормы = Истина; - Обновить(Неопределено); - // устанавливает флаг модифицированности формы ПодключитьОбработчикОжидания("УстановитьМодифицированностьФормы", 2); + ОбновитьТаблицуСопоставления() + КонецПроцедуры &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) + Если ЗаписатьИЗакрыть Тогда + Возврат; + КонецЕсли; + Если Объект.ТаблицаНеутвержденныхСвязей.Количество() > 0 Тогда Если ВыдаватьПредупреждениеПриЗакрытииФормы = Истина Тогда @@ -129,14 +135,11 @@ ВыдаватьПредупреждениеПриЗакрытииФормы = Истина; - // применяем таблицу неутвержденных связей - ПрименитьТаблицуНеутвержденныхЗаписей(Отказ); + ЗаписатьИЗакрыть = Истина; - Если Отказ Тогда - - Предупреждение(НСтр("ru = 'Возникли ошибки.'")); - - КонецЕсли; + ОбновитьТаблицуСопоставления(); + + Отказ = Истина; КонецЕсли; @@ -153,6 +156,115 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаАвтоматическогоСопоставления") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("СписокЗначений") Тогда + Возврат; + КонецЕсли; + + // выполняем автоматическое сопоставление объектов + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ИмяТаблицыПриемника", Объект.ИмяТаблицыПриемника); + ПараметрыФормы.Вставить("ИмяФайлаСообщенияОбмена", Объект.ИмяФайлаСообщенияОбмена); + ПараметрыФормы.Вставить("ИмяТипаОбъектаТаблицыИсточника", Объект.ИмяТипаОбъектаТаблицыИсточника); + ПараметрыФормы.Вставить("ТипИсточникаСтрокой", Объект.ТипИсточникаСтрокой); + ПараметрыФормы.Вставить("ТипПриемникаСтрокой", Объект.ТипПриемникаСтрокой); + ПараметрыФормы.Вставить("ПоляТаблицыПриемника", Объект.ПоляТаблицыПриемника); + ПараметрыФормы.Вставить("ПоляПоискаТаблицыПриемника", Объект.ПоляПоискаТаблицыПриемника); + ПараметрыФормы.Вставить("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы); + ПараметрыФормы.Вставить("СписокПолейТаблицы", Объект.СписокПолейТаблицы.Скопировать()); + ПараметрыФормы.Вставить("СписокИспользуемыхПолей", Объект.СписокИспользуемыхПолей.Скопировать()); + ПараметрыФормы.Вставить("СписокПолейСопоставления", ВыбранноеЗначение.Скопировать()); + ПараметрыФормы.Вставить("МаксимальноеКоличествоПользовательскихПолей", МаксимальноеКоличествоПользовательскихПолей()); + ПараметрыФормы.Вставить("Заголовок", Заголовок); + + ПараметрыФормы.Вставить("АдресВременногоХранилищаТаблицыНеутвержденныхСвязей", ПоместитьТаблицуНеутвержденныхСвязейВоВременноеХранилище()); + + // открываем форму выполнения автоматического сопоставления объектов + ОткрытьФорму("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.РезультатАвтоматическогоСопоставления", ПараметрыФормы, ЭтаФорма); + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.РезультатАвтоматическогоСопоставления") Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") + И Не ПустаяСтрока(ВыбранноеЗначение) Тогда + + ПрименитьРезультатАвтоматическогоСопоставления = Истина; + АдресТаблицыАвтоматическиСопоставленныхОбъектов = ВыбранноеЗначение; + + ОбновитьТаблицуСопоставления(); + + КонецЕсли; + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаПолейТаблицы") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("СписокЗначений") Тогда + Возврат; + КонецЕсли; + + Объект.СписокИспользуемыхПолей = ВыбранноеЗначение.Скопировать(); + УстановитьВидимостьПолейТаблицы("ТаблицаСопоставления"); // Видимость и заголовки полей таблицы сопоставления. + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаПолейТаблицыСопоставления") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("СписокЗначений") Тогда + Возврат; + КонецЕсли; + + Объект.СписокПолейТаблицы = ВыбранноеЗначение.Скопировать(); + + ЗаполнитьСписокОтмеченнымиЭлементами(Объект.СписокПолейТаблицы, Объект.СписокИспользуемыхПолей); + + // формируем Таблицу сортировки + ЗаполнитьТаблицуСортировки(Объект.СписокИспользуемыхПолей); + + // обновляем таблицу сопоставления с учетом новых полей таблицы + ОбновитьТаблицуСопоставления(); + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаСортировки") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("ДанныеФормыКоллекция") Тогда + Возврат; + КонецЕсли; + + Объект.ТаблицаСортировки.Очистить(); + + // заполняем коллекцию формы полученными настройками + Для Каждого СтрокаТаблицы ИЗ ВыбранноеЗначение Цикл + ЗаполнитьЗначенияСвойств(Объект.ТаблицаСортировки.Добавить(), СтрокаТаблицы); + КонецЦикла; + + // сортируем таблицу сопоставления + ВыполнитьСортировкуТаблицы(); + + // обновляем отбор в таблицах + УстановитьОтборТабличныхЧастей(); + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.ФормаВыбораСвязиСопоставления") Тогда + + Если ВыбранноеЗначение = Неопределено Тогда + Возврат; // отказались от выбора связи для сопоставления + КонецЕсли; + + ИдентификаторСтрокиНачала = Элементы.ТаблицаСопоставления.ТекущаяСтрока; + + // вызов сервера + НайденныеСтроки = ТаблицаСопоставления.НайтиСтроки(Новый Структура("НомерПоПорядку", ВыбранноеЗначение)); + + ИдентификаторСтрокиОкончания = НайденныеСтроки[0].ПолучитьИдентификатор(); + + // обрабатываем полученное сопоставление + ДобавитьНеутвержденноеСопоставлениеНаКлиенте(ИдентификаторСтрокиНачала, ИдентификаторСтрокиОкончания); + + // переводим фокус ввода на таблицу сопоставления + ТекущийЭлемент = Элементы.ТаблицаСопоставления; + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -181,31 +293,7 @@ &НаКлиенте Процедура Обновить(Команда) - Отказ = Ложь; - - // проверка на количество пользовательских полей для отображения - ВыполнитьПроверкуЗаданияПользовательскихПолей(Отказ, Объект.СписокИспользуемыхПолей.ВыгрузитьЗначения()); - - Если Отказ Тогда - Возврат; - КонецЕсли; - - // оповещение состояния - Состояние(НСтр("ru = 'Выполняется сопоставление объектов. Пожалуйста, подождите...'")); - - ВыполнитьОбновлениеНаСервере(Отказ); - - // устанавливаем текущий отбор в табличной части сопоставления - УстановитьОтборТабличныхЧастей(); - - // устанавливаем видимость и заголовки полей таблицы сопоставления - УстановитьВидимостьПолейТаблицы("ТаблицаСопоставления"); - - Если Отказ Тогда - - Предупреждение(НСтр("ru = 'При выполнении операции сопоставления возникли ошибки.'")); - - КонецЕсли; + ОбновитьТаблицуСопоставления(); КонецПроцедуры @@ -222,56 +310,10 @@ КонецЕсли; // получаем список полей сопоставления от пользователя - ПараметрыДляФормы = Новый Структура("СписокПолейСопоставления", Объект.СписокПолейТаблицы.Скопировать()); - - СписокПолейСопоставления = ОткрытьФормуМодально("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаАвтоматическогоСопоставления", ПараметрыДляФормы, ЭтаФорма); - - Если ТипЗнч(СписокПолейСопоставления) <> Тип("СписокЗначений") Тогда - Возврат; - КонецЕсли; - - // выполняем автоматическое сопоставление объектов ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("ИмяТаблицыПриемника", Объект.ИмяТаблицыПриемника); - ПараметрыФормы.Вставить("ИмяФайлаСообщенияОбмена", Объект.ИмяФайлаСообщенияОбмена); - ПараметрыФормы.Вставить("ИмяТипаОбъектаТаблицыИсточника", Объект.ИмяТипаОбъектаТаблицыИсточника); - ПараметрыФормы.Вставить("ТипИсточникаСтрокой", Объект.ТипИсточникаСтрокой); - ПараметрыФормы.Вставить("ТипПриемникаСтрокой", Объект.ТипПриемникаСтрокой); - ПараметрыФормы.Вставить("ПоляТаблицыПриемника", Объект.ПоляТаблицыПриемника); - ПараметрыФормы.Вставить("ПоляПоискаТаблицыПриемника", Объект.ПоляПоискаТаблицыПриемника); - ПараметрыФормы.Вставить("УзелИнформационнойБазы", Объект.УзелИнформационнойБазы); - ПараметрыФормы.Вставить("СписокПолейТаблицы", Объект.СписокПолейТаблицы.Скопировать()); - ПараметрыФормы.Вставить("СписокИспользуемыхПолей", Объект.СписокИспользуемыхПолей.Скопировать()); - ПараметрыФормы.Вставить("СписокПолейСопоставления", СписокПолейСопоставления.Скопировать()); - ПараметрыФормы.Вставить("МаксимальноеКоличествоПользовательскихПолей", МаксимальноеКоличествоПользовательскихПолей()); - ПараметрыФормы.Вставить("Заголовок", Заголовок); + ПараметрыФормы.Вставить("СписокПолейСопоставления", Объект.СписокПолейТаблицы.Скопировать()); - ПараметрыФормы.Вставить("АдресВременногоХранилищаТаблицыНеутвержденныхСвязей", ПоместитьТаблицуНеутвержденныхСвязейВоВременноеХранилище()); - - Состояние(НСтр("ru = 'Выполняется автоматическое сопоставление. Пожалуйста, подождите...'")); - - // открываем форму выполнения автоматического сопоставления объектов - АдресВременногоХранилища = ОткрытьФормуМодально("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.РезультатАвтоматическогоСопоставления", ПараметрыФормы, ЭтаФорма); - - Если ТипЗнч(АдресВременногоХранилища) = Тип("Строка") Тогда - - // Применяем результат и обновляем таблицу сопоставления с учетом полученного сопоставления объектов - ПрименитьРезультатАвтоматическогоСопоставленияОбъектовИОбновить(Отказ, АдресВременногоХранилища); - - Если Не Отказ Тогда - - // устанавливаем текущий отбор - УстановитьОтборТабличныхЧастей(); - - КонецЕсли; - - КонецЕсли; - - Если Отказ Тогда - - Предупреждение(НСтр("ru = 'Во время выполнения автоматического сопоставления возникли ошибки.'")); - - КонецЕсли; + ОткрытьФорму("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаАвтоматическогоСопоставления", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -280,7 +322,7 @@ Отказ = Ложь; - НСтрока = НСтр("ru = 'Выполнить загрузку данных в информационную базу?'"); + НСтрока = НСтр("ru = 'Получить данные в информационную базу?'"); Ответ = Вопрос(НСтрока, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Да); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; @@ -288,7 +330,7 @@ Если Объект.ДанныеУспешноЗагружены Тогда - НСтрока = НСтр("ru = 'Данные уже были успешно загружены. Выполнить загрузку данных повторно?'"); + НСтрока = НСтр("ru = 'Данные уже были получены. Выполнить получение данных повторно?'"); Ответ = Вопрос(НСтрока, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Нет); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; @@ -297,17 +339,14 @@ КонецЕсли; // оповещение состояния - Состояние(НСтр("ru = 'Выполняется загрузка данных. Пожалуйста, подождите...'")); + Состояние(НСтр("ru = 'Выполняется получение данных. Пожалуйста, подождите...'")); // выполняем загрузку данных на сервере ВыполнитьЗагрузкуДанныхНаСервере(Отказ); - // обновляем данные в таблице сопоставления - Обновить(Команда); - Если Отказ Тогда - НСтрока = НСтр("ru = 'При загрузке данных возникли ошибки. + НСтрока = НСтр("ru = 'При получении данных возникли ошибки. |Перейти в журнал регистрации?'"); // Ответ = Вопрос(НСтрока, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Нет); @@ -316,83 +355,41 @@ ОбменДаннымиКлиент.ПерейтиВЖурналРегистрацииСобытийДанныхМодально(Объект.УзелИнформационнойБазы, ЭтаФорма, "ЗагрузкаДанных"); КонецЕсли; - + Возврат; КонецЕсли; + // обновляем данные в таблице сопоставления + ОбновитьТаблицуСопоставления(); + КонецПроцедуры &НаКлиенте Процедура ИзменитьПоляТаблицы(Команда) - ПараметрыДляФормы = Новый Структура("СписокПолей", Объект.СписокИспользуемыхПолей.Скопировать()); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("СписокПолей", Объект.СписокИспользуемыхПолей.Скопировать()); - СписокПолейФормыНастройки = ОткрытьФормуМодально("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаПолейТаблицы", ПараметрыДляФормы, ЭтаФорма); - - Если ТипЗнч(СписокПолейФормыНастройки) <> Тип("СписокЗначений") Тогда - - Возврат; - - КонецЕсли; - - Объект.СписокИспользуемыхПолей = СписокПолейФормыНастройки.Скопировать(); - - // устанавливаем видимость и заголовки полей таблицы сопоставления - УстановитьВидимостьПолейТаблицы("ТаблицаСопоставления"); + ОткрытьФорму("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаПолейТаблицы", ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура НастройкаСпискаПолейТаблицы(Команда) - Отказ = Ложь; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("СписокПолей", Объект.СписокПолейТаблицы.Скопировать()); - ПараметрыДляФормы = Новый Структура("СписокПолей", Объект.СписокПолейТаблицы.Скопировать()); - - СписокПолейФормыНастройки = ОткрытьФормуМодально("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаПолейТаблицыСопоставления", ПараметрыДляФормы, ЭтаФорма); - - Если ТипЗнч(СписокПолейФормыНастройки) <> Тип("СписокЗначений") Тогда - Возврат; - КонецЕсли; - - Объект.СписокПолейТаблицы = СписокПолейФормыНастройки.Скопировать(); - - ЗаполнитьСписокОтмеченнымиЭлементами(Объект.СписокПолейТаблицы, Объект.СписокИспользуемыхПолей); - - // формируем Таблицу сортировки - ЗаполнитьТаблицуСортировки(Объект.СписокИспользуемыхПолей); - - // обновляем таблицу сопоставления с учетом новых полей таблицы - Обновить(Команда); + ОткрытьФорму("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаПолейТаблицыСопоставления", ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура Сортировка(Команда) - ПараметрыДляФормы = Новый Структура("ТаблицаСортировки", Объект.ТаблицаСортировки); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ТаблицаСортировки", Объект.ТаблицаСортировки); - ТаблицаСортировкиРезультат = ОткрытьФормуМодально("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаСортировки", ПараметрыДляФормы, ЭтаФорма); - - Если ТипЗнч(ТаблицаСортировкиРезультат) <> Тип("ДанныеФормыКоллекция") Тогда - - Возврат; - - КонецЕсли; - - Объект.ТаблицаСортировки.Очистить(); - - // заполняем коллекцию формы полученными настройками - Для Каждого СтрокаТаблицы ИЗ ТаблицаСортировкиРезультат Цикл - - ЗаполнитьЗначенияСвойств(Объект.ТаблицаСортировки.Добавить(), СтрокаТаблицы); - - КонецЦикла; - - // сортируем таблицу сопоставления - ВыполнитьСортировкуТаблицы(); - - // обновляем отбор в таблицах - УстановитьОтборТабличныхЧастей(); + ОткрытьФорму("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.НастройкаСортировки", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -418,19 +415,9 @@ &НаКлиенте Процедура ЗаписатьОбновить(Команда) - Отказ = Ложь; + ПрименитьТаблицуНеутвержденныхЗаписей = Истина; - // применяем таблицу неутвержденных связей - ПрименитьТаблицуНеутвержденныхЗаписейИОбновить(Отказ); - - // устанавливаем текущий отбор в табличной части сопоставления - УстановитьОтборТабличныхЧастей(); - - Если Отказ Тогда - Предупреждение(НСтр("ru = 'Возникли ошибки.'")); - Иначе - Модифицированность = Ложь; - КонецЕсли; + ОбновитьТаблицуСопоставления(); КонецПроцедуры @@ -442,122 +429,273 @@ КонецПроцедуры +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ (Поставляемая часть) + +&НаКлиенте +Процедура ИзменитьПорядковыйНомерПерехода(Итератор) + + ОчиститьСообщения(); + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + Итератор); + +КонецПроцедуры + +&НаКлиенте +Процедура УстановитьПорядковыйНомерПерехода(Знач Значение) + + ЭтоПереходДалее = (Значение > ПорядковыйНомерПерехода); + + ПорядковыйНомерПерехода = Значение; + + Если ПорядковыйНомерПерехода < 0 Тогда + + ПорядковыйНомерПерехода = 0; + + КонецЕсли; + + ПорядковыйНомерПереходаПриИзменении(ЭтоПереходДалее); + +КонецПроцедуры + +&НаКлиенте +Процедура ПорядковыйНомерПереходаПриИзменении(Знач ЭтоПереходДалее) + + // Выполняем обработчики событий перехода + ВыполнитьОбработчикиСобытийПерехода(ЭтоПереходДалее); + + // Устанавливаем отображение страниц + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + Элементы.ПанельОсновная.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяОсновнойСтраницы]; + + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяСтраницыДекорации) Тогда + + Элементы.ПанельСинхронизацииДанных.ТекущаяСтраница = Элементы[СтрокаПереходаТекущая.ИмяСтраницыДекорации]; + + КонецЕсли; + + Если ЭтоПереходДалее И СтрокаПереходаТекущая.ДлительнаяОперация Тогда + + ПодключитьОбработчикОжидания("ВыполнитьОбработчикДлительнойОперации", 0.1, Истина); + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбработчикиСобытийПерехода(Знач ЭтоПереходДалее) + + // Обработчики событий переходов + Если ЭтоПереходДалее Тогда + + СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода - 1)); + + Если СтрокиПерехода.Количество() > 0 Тогда + + СтрокаПерехода = СтрокиПерехода[0]; + + // обработчик ПриПереходеДалее + Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеДалее) + И Не СтрокаПерехода.ДлительнаяОперация Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеДалее); + + Отказ = Ложь; + + А = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + Иначе + + СтрокиПерехода = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода + 1)); + + Если СтрокиПерехода.Количество() > 0 Тогда + + СтрокаПерехода = СтрокиПерехода[0]; + + // обработчик ПриПереходеНазад + Если Не ПустаяСтрока(СтрокаПерехода.ИмяОбработчикаПриПереходеНазад) + И Не СтрокаПерехода.ДлительнаяОперация Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПерехода.ИмяОбработчикаПриПереходеНазад); + + Отказ = Ложь; + + А = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + Если СтрокаПереходаТекущая.ДлительнаяОперация И Не ЭтоПереходДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + Возврат; + КонецЕсли; + + // обработчик ПриОткрытии + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии) Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПропуститьСтраницу, ЭтоПереходДалее)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаПриОткрытии); + + Отказ = Ложь; + ПропуститьСтраницу = Ложь; + + А = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + ИначеЕсли ПропуститьСтраницу Тогда + + Если ЭтоПереходДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + Иначе + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ВыполнитьОбработчикДлительнойОперации() + + СтрокиПереходаТекущие = ТаблицаПереходов.НайтиСтроки(Новый Структура("ПорядковыйНомерПерехода", ПорядковыйНомерПерехода)); + + Если СтрокиПереходаТекущие.Количество() = 0 Тогда + ВызватьИсключение НСтр("ru = 'Не определена страница для отображения.'"); + КонецЕсли; + + СтрокаПереходаТекущая = СтрокиПереходаТекущие[0]; + + // обработчик ОбработкаДлительнойОперации + Если Не ПустаяСтрока(СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации) Тогда + + ИмяПроцедуры = "Подключаемый_[ИмяОбработчика](Отказ, ПерейтиДалее)"; + ИмяПроцедуры = СтрЗаменить(ИмяПроцедуры, "[ИмяОбработчика]", СтрокаПереходаТекущая.ИмяОбработчикаДлительнойОперации); + + Отказ = Ложь; + ПерейтиДалее = Истина; + + А = Вычислить(ИмяПроцедуры); + + Если Отказ Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода - 1); + + Возврат; + + ИначеЕсли ПерейтиДалее Тогда + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + КонецЕсли; + + Иначе + + УстановитьПорядковыйНомерПерехода(ПорядковыйНомерПерехода + 1); + + Возврат; + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ТаблицаПереходовНоваяСтрока(ПорядковыйНомерПерехода, + ИмяОсновнойСтраницы, + ИмяСтраницыНавигации = "", + ИмяСтраницыДекорации = "", + ИмяОбработчикаПриОткрытии = "", + ИмяОбработчикаПриПереходеДалее = "", + ИмяОбработчикаПриПереходеНазад = "", + ДлительнаяОперация = Ложь, + ИмяОбработчикаДлительнойОперации = "") + НоваяСтрока = ТаблицаПереходов.Добавить(); + + НоваяСтрока.ПорядковыйНомерПерехода = ПорядковыйНомерПерехода; + НоваяСтрока.ИмяОсновнойСтраницы = ИмяОсновнойСтраницы; + НоваяСтрока.ИмяСтраницыДекорации = ИмяСтраницыДекорации; + НоваяСтрока.ИмяСтраницыНавигации = ИмяСтраницыНавигации; + + НоваяСтрока.ИмяОбработчикаПриПереходеДалее = ИмяОбработчикаПриПереходеДалее; + НоваяСтрока.ИмяОбработчикаПриПереходеНазад = ИмяОбработчикаПриПереходеНазад; + НоваяСтрока.ИмяОбработчикаПриОткрытии = ИмяОбработчикаПриОткрытии; + + НоваяСтрока.ДлительнаяОперация = ДлительнаяОперация; + НоваяСтрока.ИмяОбработчикаДлительнойОперации = ИмяОбработчикаДлительнойОперации; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -&НаСервере -Процедура ВыполнитьОбновлениеНаСервере(Отказ) +&НаКлиенте +Процедура ПерейтиДалее() - ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); - - // выполняем сопоставление объектов - ОбработкаОбъект.ВыполнитьСопоставлениеОбъектов(Отказ); - - // {Дайджест сопоставления} - КоличествоОбъектовВИсточнике = ОбработкаОбъект.КоличествоОбъектовВИсточнике(); - КоличествоОбъектовВПриемнике = ОбработкаОбъект.КоличествоОбъектовВПриемнике(); - КоличествоОбъектовСопоставленных = ОбработкаОбъект.КоличествоОбъектовСопоставленных(); - КоличествоОбъектовНесопоставленных = ОбработкаОбъект.КоличествоОбъектовНесопоставленных(); - ПроцентСопоставленияОбъектов = ОбработкаОбъект.ПроцентСопоставленияОбъектов(); - ИндексКартинки = ОбменДаннымиСервер.ИндексКартинкиТаблицыИнформацииСтатистики(КоличествоОбъектовНесопоставленных, Объект.ДанныеУспешноЗагружены); - - Если Не Отказ Тогда - - ТаблицаСопоставления.Загрузить(ОбработкаОбъект.ТаблицаСопоставления()); - - ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); - - КонецЕсли; + ИзменитьПорядковыйНомерПерехода(+1); КонецПроцедуры -&НаСервере -Процедура ПрименитьРезультатАвтоматическогоСопоставленияОбъектовИОбновить(Отказ, Знач АдресВременногоХранилища) +&НаКлиенте +Процедура ПерейтиНазад() - Если ЭтоАдресВременногоХранилища(АдресВременногоХранилища) Тогда - - ТаблицаАвтоматическиСопоставленныхОбъектовПользователя = ПолучитьИзВременногоХранилища(АдресВременногоХранилища); - - УдалитьИзВременногоХранилища(АдресВременногоХранилища); - - Если ТаблицаАвтоматическиСопоставленныхОбъектовПользователя.Количество() = 0 Тогда - Возврат; // таблица пустая; выходим - КонецЕсли; - - ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); - - // дополняем таблицу неутвержденных связей - Для Каждого СтрокаТаблицы ИЗ ТаблицаАвтоматическиСопоставленныхОбъектовПользователя Цикл - - ЗаполнитьЗначенияСвойств(ОбработкаОбъект.ТаблицаНеутвержденныхСвязей.Добавить(), СтрокаТаблицы); - - КонецЦикла; - - // получаем таблицу сопоставления с учетом обновления таблицы неутвержденных связей - ОбработкаОбъект.ВыполнитьСопоставлениеОбъектов(Отказ); - - // {Дайджест сопоставления} - КоличествоОбъектовВИсточнике = ОбработкаОбъект.КоличествоОбъектовВИсточнике(); - КоличествоОбъектовВПриемнике = ОбработкаОбъект.КоличествоОбъектовВПриемнике(); - КоличествоОбъектовСопоставленных = ОбработкаОбъект.КоличествоОбъектовСопоставленных(); - КоличествоОбъектовНесопоставленных = ОбработкаОбъект.КоличествоОбъектовНесопоставленных(); - ПроцентСопоставленияОбъектов = ОбработкаОбъект.ПроцентСопоставленияОбъектов(); - ИндексКартинки = ОбменДаннымиСервер.ИндексКартинкиТаблицыИнформацииСтатистики(КоличествоОбъектовНесопоставленных, Объект.ДанныеУспешноЗагружены); - - Если Не Отказ Тогда - - ТаблицаСопоставления.Загрузить(ОбработкаОбъект.ТаблицаСопоставления()); - - ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); - - КонецЕсли; - - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Процедура ПрименитьТаблицуНеутвержденныхЗаписейИОбновить(Отказ) - - ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); - - // применяем таблицу неутвержденных связей к базе данных - ОбработкаОбъект.ПрименитьТаблицуНеутвержденныхЗаписей(Отказ); - - Если Не Отказ Тогда - - // получаем таблицу сопоставления с учетом обновления таблицы неутвержденных связей - ОбработкаОбъект.ВыполнитьСопоставлениеОбъектов(Отказ); - - // {Дайджест сопоставления} - КоличествоОбъектовВИсточнике = ОбработкаОбъект.КоличествоОбъектовВИсточнике(); - КоличествоОбъектовВПриемнике = ОбработкаОбъект.КоличествоОбъектовВПриемнике(); - КоличествоОбъектовСопоставленных = ОбработкаОбъект.КоличествоОбъектовСопоставленных(); - КоличествоОбъектовНесопоставленных = ОбработкаОбъект.КоличествоОбъектовНесопоставленных(); - ПроцентСопоставленияОбъектов = ОбработкаОбъект.ПроцентСопоставленияОбъектов(); - ИндексКартинки = ОбменДаннымиСервер.ИндексКартинкиТаблицыИнформацииСтатистики(КоличествоОбъектовНесопоставленных, Объект.ДанныеУспешноЗагружены); - - КонецЕсли; - - Если Не Отказ Тогда - - ТаблицаСопоставления.Загрузить(ОбработкаОбъект.ТаблицаСопоставления()); - - ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); - - КонецЕсли; - -КонецПроцедуры - -&НаСервере -Процедура ПрименитьТаблицуНеутвержденныхЗаписей(Отказ) - - ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); - - // применяем таблицу неутвержденных связей к базе данных - ОбработкаОбъект.ПрименитьТаблицуНеутвержденныхЗаписей(Отказ); - - ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); + ИзменитьПорядковыйНомерПерехода(-1); КонецПроцедуры @@ -682,7 +820,7 @@ &НаСервере Функция ПоместитьТаблицуНеутвержденныхСвязейВоВременноеХранилище() - Возврат ПоместитьВоВременноеХранилище(Объект.ТаблицаНеутвержденныхСвязей.Выгрузить()); + Возврат ПоместитьВоВременноеХранилище(Объект.ТаблицаНеутвержденныхСвязей.Выгрузить(), УникальныйИдентификатор); КонецФункции @@ -702,6 +840,19 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбновитьТаблицуСопоставления() + + Элементы.КнопкиТаблицы.Доступность = Ложь; + Элементы.ГруппаЗаголовкаТаблицы.Доступность = Ложь; + + ПорядковыйНомерПерехода = 0; + + // Позиционируемся на втором шаге помощника + УстановитьПорядковыйНомерПерехода(2); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // Прикладные @@ -845,7 +996,7 @@ ПараметрыОтбора = Новый Структура("СтатусСопоставления", ?(ТекущиеДанные.СтатусСопоставления = -1, 1, -1)); // вызов сервера - ПараметрыФормы = Новый Структура(); + ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("АдресВременногоХранилища", ПолучитьАдресВременногоХранилищаТаблицыВыбораСвязи(ПараметрыОтбора)); ПараметрыФормы.Вставить("НомерПоПорядкуСтрокиНачала", ТекущиеДанные.НомерПоПорядку); ПараметрыФормы.Вставить("СписокИспользуемыхПолей", Объект.СписокИспользуемыхПолей.Скопировать()); @@ -854,24 +1005,7 @@ ПараметрыФормы.Вставить("Программа1", ?(ТекущиеДанные.СтатусСопоставления = -1, НаименованиеВторойПрограммы, НаименованиеЭтойПрограммы)); ПараметрыФормы.Вставить("Программа2", ?(ТекущиеДанные.СтатусСопоставления = -1, НаименованиеЭтойПрограммы, НаименованиеВторойПрограммы)); - // вызов сервера - НомерПоПорядкуСтрокиОкончания = ОткрытьФормуМодально("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.ФормаВыбораСвязиСопоставления", ПараметрыФормы, ЭтаФорма); - - Если НомерПоПорядкуСтрокиОкончания = Неопределено Тогда - Возврат; // отказались от выбора связи для сопоставления - КонецЕсли; - - // вызов сервера - НайденныеСтроки = ТаблицаСопоставления.НайтиСтроки(Новый Структура("НомерПоПорядку", НомерПоПорядкуСтрокиОкончания)); - - ИдентификаторСтрокиОкончания = НайденныеСтроки[0].ПолучитьИдентификатор(); - - // обрабатываем полученное сопоставление - ДобавитьНеутвержденноеСопоставлениеНаКлиенте(ИдентификаторСтрокиНачала, ИдентификаторСтрокиОкончания); - - // переводим фокус ввода на таблицу сопоставления - ТекущийЭлемент = Элементы.ТаблицаСопоставления; - + ОткрытьФорму("Обработка.СопоставлениеОбъектовИнформационныхБаз.Форма.ФормаВыбораСвязиСопоставления", ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте @@ -1046,3 +1180,244 @@ КонецФункции +//////////////////////////////////////////////////////////////////////////////// +// Обработчики ожидания + +&НаКлиенте +Процедура ОбработчикОжиданияФоновогоЗадания() + + ДлительнаяОперацияЗавершена = Ложь; + + Состояние = ОбменДаннымиВызовСервера.СостояниеЗадания(ИдентификаторЗадания); + + Если Состояние = "Активно" Тогда + + ПодключитьОбработчикОжидания("ОбработчикОжиданияФоновогоЗадания", 5, Истина); + + ИначеЕсли Состояние = "Завершено" Тогда + + ДлительнаяОперация = Ложь; + ДлительнаяОперацияЗавершена = Истина; + + ПерейтиДалее(); + + Иначе // ЗавершеноАварийно + + ДлительнаяОперация = Ложь; + + ПерейтиНазад(); + + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Обработчики событий переходов + +// Страница 0: Ошибка сопоставления объектов +// +&НаКлиенте +Функция Подключаемый_ОшибкаСопоставленияОбъектов_ПриОткрытии(Отказ, ПропуститьСтраницу, ЭтоПереходДалее) + + ПрименитьТаблицуНеутвержденныхЗаписей = Ложь; + ПрименитьРезультатАвтоматическогоСопоставления = Ложь; + АдресТаблицыАвтоматическиСопоставленныхОбъектов = ""; + ЗаписатьИЗакрыть = Ложь; + + Элементы.КнопкиТаблицы.Доступность = Истина; + Элементы.ГруппаЗаголовкаТаблицы.Доступность = Истина; + +КонецФункции + + +// Страница 1 (ожидание): Сопоставление объектов +// +&НаКлиенте +Функция Подключаемый_ОжиданиеСопоставленияОбъектов_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) + + // проверка на количество пользовательских полей для отображения + ВыполнитьПроверкуЗаданияПользовательскихПолей(Отказ, Объект.СписокИспользуемыхПолей.ВыгрузитьЗначения()); + + Если Отказ Тогда + Возврат Неопределено; + КонецЕсли; + + ВыполнитьСопоставлениеОбъектов(Отказ); + +КонецФункции + +// Страница 1 (ожидание): Сопоставление объектов +// +&НаКлиенте +Функция Подключаемый_ОжиданиеСопоставленияОбъектовДлительнаяОперация_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) + + Если ДлительнаяОперация Тогда + + ПерейтиДалее = Ложь; + + ПодключитьОбработчикОжидания("ОбработчикОжиданияФоновогоЗадания", 5, Истина); + + КонецЕсли; + +КонецФункции + +// Страница 1 (ожидание): Сопоставление объектов +// +&НаКлиенте +Функция Подключаемый_ОжиданиеСопоставленияОбъектовДлительнаяОперацияОкончание_ОбработкаДлительнойОперации(Отказ, ПерейтиДалее) + + Если ЗаписатьИЗакрыть Тогда + ПерейтиДалее = Ложь; + Закрыть(); + Возврат Неопределено; + КонецЕсли; + + Если ДлительнаяОперацияЗавершена Тогда + + ВыполнитьСопоставлениеОбъектовОкончание(Отказ); + + КонецЕсли; + + Элементы.КнопкиТаблицы.Доступность = Истина; + Элементы.ГруппаЗаголовкаТаблицы.Доступность = Истина; + + // устанавливаем текущий отбор в табличной части сопоставления + УстановитьОтборТабличныхЧастей(); + + // устанавливаем видимость и заголовки полей таблицы сопоставления + УстановитьВидимостьПолейТаблицы("ТаблицаСопоставления"); + +КонецФункции + +// Страница 1: Сопоставление объектов +// +&НаСервере +Процедура ВыполнитьСопоставлениеОбъектов(Отказ) + + ДлительнаяОперация = Ложь; + ДлительнаяОперацияЗавершена = Ложь; + ИдентификаторЗадания = Неопределено; + АдресВременногоХранилища = ""; + + Попытка + + РеквизитыФормы = Новый Структура; + РеквизитыФормы.Вставить("ТолькоПрименитьТаблицуНеутвержденныхЗаписей", ЗаписатьИЗакрыть); + РеквизитыФормы.Вставить("ПрименитьТаблицуНеутвержденныхЗаписей", ПрименитьТаблицуНеутвержденныхЗаписей); + РеквизитыФормы.Вставить("ПрименитьРезультатАвтоматическогоСопоставления", ПрименитьРезультатАвтоматическогоСопоставления); + + ПараметрыМетода = Новый Структура; + ПараметрыМетода.Вставить("КонтекстОбъекта", ОбменДаннымиСервер.ПолучитьКонтекстОбъекта(РеквизитФормыВЗначение("Объект"))); + ПараметрыМетода.Вставить("РеквизитыФормы", РеквизитыФормы); + + Если ПрименитьРезультатАвтоматическогоСопоставления Тогда + ПараметрыМетода.Вставить("ТаблицаАвтоматическиСопоставленныхОбъектов", ПолучитьИзВременногоХранилища(АдресТаблицыАвтоматическиСопоставленныхОбъектов)); + КонецЕсли; + + Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда + + РезультатСопоставления = Обработки.СопоставлениеОбъектовИнформационныхБаз.РезультатСопоставленияОбъектов(ПараметрыМетода); + ПослеСопоставленияОбъектов(РезультатСопоставления); + + Иначе + + Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне( + УникальныйИдентификатор, + "Обработки.СопоставлениеОбъектовИнформационныхБаз.ВыполнитьСопоставлениеОбъектов", + ПараметрыМетода, + НСтр("ru = 'Сопоставление объектов'") + ); + + Если Результат.ЗаданиеВыполнено Тогда + + ПослеСопоставленияОбъектов(ПолучитьИзВременногоХранилища(Результат.АдресХранилища)); + + Иначе + + ДлительнаяОперация = Истина; + ИдентификаторЗадания = Результат.ИдентификаторЗадания; + АдресВременногоХранилища = Результат.АдресХранилища; + + КонецЕсли; + + КонецЕсли; + + Исключение + Отказ = Истина; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Помощник сопоставления объектов.Анализ данных'"), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + Возврат; + КонецПопытки; + +КонецПроцедуры + +// Страница 1: Сопоставление объектов +// +&НаСервере +Процедура ВыполнитьСопоставлениеОбъектовОкончание(Отказ) + + Попытка + ПослеСопоставленияОбъектов(ПолучитьИзВременногоХранилища(АдресВременногоХранилища)); + Исключение + Отказ = Истина; + ЗаписьЖурналаРегистрации(НСтр("ru = 'Помощник сопоставления объектов.Анализ данных'"), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); + Возврат; + КонецПопытки; + +КонецПроцедуры + +// Страница 1: Сопоставление объектов +// +&НаСервере +Процедура ПослеСопоставленияОбъектов(Знач РезультатСопоставления) + + Если ЗаписатьИЗакрыть Тогда + Возврат; + КонецЕсли; + + // {Дайджест сопоставления} + КоличествоОбъектовВИсточнике = РезультатСопоставления.КоличествоОбъектовВИсточнике; + КоличествоОбъектовВПриемнике = РезультатСопоставления.КоличествоОбъектовВПриемнике; + КоличествоОбъектовСопоставленных = РезультатСопоставления.КоличествоОбъектовСопоставленных; + КоличествоОбъектовНесопоставленных = РезультатСопоставления.КоличествоОбъектовНесопоставленных; + ПроцентСопоставленияОбъектов = РезультатСопоставления.ПроцентСопоставленияОбъектов; + ИндексКартинки = ОбменДаннымиСервер.ИндексКартинкиТаблицыИнформацииСтатистики(КоличествоОбъектовНесопоставленных, Объект.ДанныеУспешноЗагружены); + + ТаблицаСопоставления.Загрузить(РезультатСопоставления.ТаблицаСопоставления); + + ОбработкаОбъект = Обработки.СопоставлениеОбъектовИнформационныхБаз.Создать(); + ОбменДаннымиСервер.ЗагрузитьКонтекстОбъекта(РезультатСопоставления.КонтекстОбъекта, ОбработкаОбъект); + ЗначениеВРеквизитФормы(ОбработкаОбъект, "Объект"); + + Если ПрименитьТаблицуНеутвержденныхЗаписей Тогда + Модифицированность = Ложь; + КонецЕсли; + + ПрименитьТаблицуНеутвержденныхЗаписей = Ложь; + ПрименитьРезультатАвтоматическогоСопоставления = Ложь; + АдресТаблицыАвтоматическиСопоставленныхОбъектов = ""; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// Инициализация переходов помощника + +&НаСервере +Процедура СценарийВыполненияСопоставленияОбъектов() + + ТаблицаПереходов.Очистить(); + + ТаблицаПереходовНоваяСтрока(1, "ОшибкаСопоставленияОбъектов",,, "ОшибкаСопоставленияОбъектов_ПриОткрытии"); + + // Ожидание сопоставления объектов + ТаблицаПереходовНоваяСтрока(2, "ОжиданиеСопоставленияОбъектов",,,,,, Истина, "ОжиданиеСопоставленияОбъектов_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(3, "ОжиданиеСопоставленияОбъектов",,,,,, Истина, "ОжиданиеСопоставленияОбъектовДлительнаяОперация_ОбработкаДлительнойОперации"); + ТаблицаПереходовНоваяСтрока(4, "ОжиданиеСопоставленияОбъектов",,,,,, Истина, "ОжиданиеСопоставленияОбъектовДлительнаяОперацияОкончание_ОбработкаДлительнойОперации"); + + // Работа с таблицей сопоставления объектов + ТаблицаПереходовНоваяСтрока(5, "СопоставлениеОбъектов"); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/ФормаВыбораСвязиСопоставления/Form.form b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/ФормаВыбораСвязиСопоставления/Form.form index afec8014f..b1a371cf6 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/ФормаВыбораСвязиСопоставления/Form.form +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/ФормаВыбораСвязиСопоставления/Form.form @@ -972,7 +972,7 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoUrl>true</autoUrl> <group>Vertical</group> diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/ФормаВыбораСвязиСопоставления/Module.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/ФормаВыбораСвязиСопоставления/Module.bsl index 87d80eb7c..cd4e5211c 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/ФормаВыбораСвязиСопоставления/Module.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Forms/ФормаВыбораСвязиСопоставления/Module.bsl @@ -48,7 +48,7 @@ Возврат; КонецЕсли; - ЭтаФорма.Закрыть(ТекущиеДанные.НомерПоПорядку); + ОповеститьОВыборе(ТекущиеДанные.НомерПоПорядку); КонецПроцедуры diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Help/ru.html b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Help/ru.html index cb4a07318..f12df74a2 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Help/ru.html +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Помощник интерактивного обмена данными предназначен для выполнения выгрузки и загрузки данных с возможностью предварительного просмотра и сопоставления загружаемых данных. По команде <strong>Автоматическое сопоставление (по умолчанию)</strong> выполняется процесс сопоставления объектов. По команде <strong>Выполнить сопоставление</strong> открывается форма для предварительно просмотра загружаемых данных и выполнения сопоставления объектов вручную. Сопоставленные вручную объекты двух ИБ запоминаются и при выполнении следующего обмена, сопоставляются автоматически. При использовании интерактивного режима загрузки, рекомендуется вначале выполнять автоматическое сопоставление, а затем выполнять сопоставление вручную для объектов, которые не были сопоставлены автоматически.</p> <p>Режим интерактивного обмена данными следует использовать в случае, когда до начала обмена один и тот же объект мог быть введен независимо в обеих обменивающихся ИБ. Другими словами, интерактивный режим обмена следует выбирать при первом обмене данными между ИБ, учет в которых уже ведется. Поскольку вероятность существования в таких ИБ одних и тех же объектов очень высока. В этом случае интерактивный режим позволит такие объекты сопоставить вручную. </p> <h3>Порядок сопоставления объектов</h3> diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ManagerModule.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ManagerModule.bsl index e69de29bb..b54447cd0 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ManagerModule.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ManagerModule.bsl @@ -0,0 +1,111 @@ +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +Процедура ВыполнитьСопоставлениеОбъектов(Параметры, АдресВременногоХранилища) Экспорт + + ПоместитьВоВременноеХранилище(РезультатСопоставленияОбъектов(Параметры), АдресВременногоХранилища); + +КонецПроцедуры + +Функция РезультатСопоставленияОбъектов(Параметры) Экспорт + + СопоставлениеОбъектов = Обработки.СопоставлениеОбъектовИнформационныхБаз.Создать(); + ОбменДаннымиСервер.ЗагрузитьКонтекстОбъекта(Параметры.КонтекстОбъекта, СопоставлениеОбъектов); + + Отказ = Ложь; + + // Применяем таблицу неутвержденных связей к базе данных + Если Параметры.РеквизитыФормы.ТолькоПрименитьТаблицуНеутвержденныхЗаписей Тогда + + СопоставлениеОбъектов.ПрименитьТаблицуНеутвержденныхЗаписей(Отказ); + + Если Отказ Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки в процессе сопоставления объектов.'"); + КонецЕсли; + + Возврат Неопределено; + КонецЕсли; + + // Применяем результаты автоматического сопоставления объектов, полученные пользователем + Если Параметры.РеквизитыФормы.ПрименитьРезультатАвтоматическогоСопоставления Тогда + + // дополняем таблицу неутвержденных связей + Для Каждого СтрокаТаблицы ИЗ Параметры.ТаблицаАвтоматическиСопоставленныхОбъектов Цикл + + ЗаполнитьЗначенияСвойств(СопоставлениеОбъектов.ТаблицаНеутвержденныхСвязей.Добавить(), СтрокаТаблицы); + + КонецЦикла; + + КонецЕсли; + + // Применяем таблицу неутвержденных связей к базе данных + Если Параметры.РеквизитыФормы.ПрименитьТаблицуНеутвержденныхЗаписей Тогда + + СопоставлениеОбъектов.ПрименитьТаблицуНеутвержденныхЗаписей(Отказ); + + Если Отказ Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки в процессе сопоставления объектов.'"); + КонецЕсли; + + КонецЕсли; + + // Получаем таблицу сопоставления + СопоставлениеОбъектов.ВыполнитьСопоставлениеОбъектов(Отказ); + + Если Отказ Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки в процессе сопоставления объектов.'"); + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("КоличествоОбъектовВИсточнике", СопоставлениеОбъектов.КоличествоОбъектовВИсточнике()); + Результат.Вставить("КоличествоОбъектовВПриемнике", СопоставлениеОбъектов.КоличествоОбъектовВПриемнике()); + Результат.Вставить("КоличествоОбъектовСопоставленных", СопоставлениеОбъектов.КоличествоОбъектовСопоставленных()); + Результат.Вставить("КоличествоОбъектовНесопоставленных", СопоставлениеОбъектов.КоличествоОбъектовНесопоставленных()); + Результат.Вставить("ПроцентСопоставленияОбъектов", СопоставлениеОбъектов.ПроцентСопоставленияОбъектов()); + Результат.Вставить("ТаблицаСопоставления", СопоставлениеОбъектов.ТаблицаСопоставления()); + + Результат.Вставить("КонтекстОбъекта", ОбменДаннымиСервер.ПолучитьКонтекстОбъекта(СопоставлениеОбъектов)); + + Возврат Результат; +КонецФункции + +// + +Процедура ВыполнитьАвтоматическоеСопоставлениеОбъектов(Параметры, АдресВременногоХранилища) Экспорт + + ПоместитьВоВременноеХранилище(РезультатАвтоматическогоСопоставленияОбъектов(Параметры), АдресВременногоХранилища); + +КонецПроцедуры + +Функция РезультатАвтоматическогоСопоставленияОбъектов(Параметры) Экспорт + + СопоставлениеОбъектов = Обработки.СопоставлениеОбъектовИнформационныхБаз.Создать(); + ОбменДаннымиСервер.ЗагрузитьКонтекстОбъекта(Параметры.КонтекстОбъекта, СопоставлениеОбъектов); + + // определяем свойство "СписокИспользуемыхПолей" + СопоставлениеОбъектов.СписокИспользуемыхПолей.Очистить(); + ОбщегоНазначенияКлиентСервер.ЗаполнитьКоллекциюСвойств(Параметры.РеквизитыФормы.СписокИспользуемыхПолей, СопоставлениеОбъектов.СписокИспользуемыхПолей); + + // определяем свойство "СписокПолейТаблицы" + СопоставлениеОбъектов.СписокПолейТаблицы.Очистить(); + ОбщегоНазначенияКлиентСервер.ЗаполнитьКоллекциюСвойств(Параметры.РеквизитыФормы.СписокПолейТаблицы, СопоставлениеОбъектов.СписокПолейТаблицы); + + // загружаем таблицу неутвержденных связей + СопоставлениеОбъектов.ТаблицаНеутвержденныхСвязей.Загрузить(Параметры.ТаблицаНеутвержденныхСвязей); + + Отказ = Ложь; + + // получаем таблицу автоматического сопоставления объектов + СопоставлениеОбъектов.ВыполнитьАвтоматическоеСопоставлениеОбъектов(Отказ, Параметры.РеквизитыФормы.СписокПолейСопоставления); + + Если Отказ Тогда + ВызватьИсключение НСтр("ru = 'Возникли ошибки в процессе автоматического сопоставления объектов.'"); + КонецЕсли; + + Результат = Новый Структура; + Результат.Вставить("ПустойРезультат", СопоставлениеОбъектов.ТаблицаАвтоматическиСопоставленныхОбъектов.Количество() = 0); + Результат.Вставить("КонтекстОбъекта", ОбменДаннымиСервер.ПолучитьКонтекстОбъекта(СопоставлениеОбъектов)); + + Возврат Результат; +КонецФункции + +#КонецЕсли diff --git a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl index f4a5323a7..e412f3240 100644 --- a/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl +++ b/SSL/src/DataProcessors/СопоставлениеОбъектовИнформационныхБаз/ObjectModule.bsl @@ -96,16 +96,16 @@ КонецЦикла; + ЗафиксироватьТранзакцию(); Исключение - + ЗаписьЖурналаРегистрации(НСтр("ru = 'Обмен данными'"), + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) + ); Отказ = Истина; ОтменитьТранзакцию(); Возврат; - КонецПопытки; - ЗафиксироватьТранзакцию(); - ТаблицаНеутвержденныхСвязей.Очистить(); КонецПроцедуры @@ -1829,8 +1829,7 @@ ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Для объекта метаданных ""%1"" не определен реквизит с именем ""%2""'"), ОбъектМетаданных.ПолноеИмя(), - Строка(Элемент.Значение) - ); + Строка(Элемент.Значение)); КонецЕсли; Представление = ""; @@ -1839,8 +1838,7 @@ Представление = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1 %2", ?(ПустаяСтрока(Реквизит.Синоним), Реквизит.Имя, СокрЛП(Реквизит.Синоним)), - ОбменДаннымиСервер.СтрокаНеограниченнойДлины() - ); + ОбменДаннымиСервер.СтрокаНеограниченнойДлины()); Иначе Представление = СокрЛП(Реквизит.Синоним); @@ -1889,4 +1887,4 @@ КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/СписокРеспондента/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/СписокРеспондента/Forms/Форма/Module.bsl index a2553f5a6..d13e9e26d 100644 --- a/SSL/src/DataProcessors/СписокРеспондента/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/СписокРеспондента/Forms/Форма/Module.bsl @@ -7,6 +7,10 @@ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; + + Если ОбщегоНазначения.ПриСозданииФормыНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ) Тогда + Возврат; + КонецЕсли; ТекущийПользователь = Пользователи.АвторизованныйПользователь(); Если ТипЗнч(ТекущийПользователь) <> Тип("СправочникСсылка.ВнешниеПользователи") Тогда diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/Forms/Форма/Form.form b/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/Forms/Форма/Form.form new file mode 100644 index 000000000..643681dc9 --- /dev/null +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/Forms/Форма/Form.form @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:form="http://g5.1c.ru/v8/dt/form"> + <autoCommandBar> + <name>ФормаКоманднаяПанель</name> + <id>-1</id> + <horizontalAlign>Left</horizontalAlign> + <autoFill>true</autoFill> + </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> + <windowOpeningMode>DontBlock</windowOpeningMode> + <saveWindowSettings>true</saveWindowSettings> + <autoTitle>true</autoTitle> + <autoUrl>true</autoUrl> + <group>Vertical</group> + <autoFillCheck>true</autoFillCheck> + <allowFormCustomize>true</allowFormCustomize> + <enabled>true</enabled> + <verticalScroll>UseIfNecessary</verticalScroll> + <showTitle>auto</showTitle> + <showCloseButton>true</showCloseButton> + <attributes> + <name>Объект</name> + <id>1</id> + <valueType> + <types>String</types> + <stringQualifiers/> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <main>true</main> + </attributes> + <commandInterface> + <navigationPanel/> + <commandBar/> + </commandInterface> +</form:Form> diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/Forms/Форма/Module.bsl new file mode 100644 index 000000000..60eabfdab --- /dev/null +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/Forms/Форма/Module.bsl @@ -0,0 +1,11 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/ObjectModule.bsl b/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/ObjectModule.bsl index f455da241..8c900c2de 100644 --- a/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/ObjectModule.bsl @@ -254,17 +254,17 @@ Функция СоздатьВременныйКаталогСообщенийОбмена() - ВременныйКаталогСообщенийОбмена = Новый Файл(ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогВременныхФайлов(), ОбменДаннымиСервер.ИмяВременногоКаталогаСообщенийОбмена())); - // создаем временный каталог для сообщений обмена Попытка - СоздатьКаталог(ИмяКаталогаСообщенияОбмена()); + ИмяВременногоКаталога = ОбменДаннымиСервер.СоздатьВременныйКаталогСообщенийОбмена(); Исключение ПолучитьСообщениеОбОшибке(4); ДополнитьСообщениеОбОшибке(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат Ложь; КонецПопытки; + ВременныйКаталогСообщенийОбмена = Новый Файл(ИмяВременногоКаталога); + ИмяФайлаСообщения = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ИмяКаталогаСообщенияОбмена(), ШаблонИмениФайлаСообщения + ".xml"); ВременныйФайлСообщенияОбмена = Новый Файл(ИмяФайлаСообщения); diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/ТранспортСообщенийОбменаEMAIL.mdo b/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/ТранспортСообщенийОбменаEMAIL.mdo index c8012a8cb..a989d3bb0 100644 --- a/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/ТранспортСообщенийОбменаEMAIL.mdo +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаEMAIL/ТранспортСообщенийОбменаEMAIL.mdo @@ -9,6 +9,7 @@ <key>ru</key> <value>Транспорт сообщения обмена через E-mail</value> </synonym> + <defaultForm>DataProcessor.ТранспортСообщенийОбменаEMAIL.Form.Форма</defaultForm> <attributes uuid="ab178a93-8570-43b6-ae42-f34a7cc4f359"> <name>EMAILМаксимальныйДопустимыйРазмерСообщения</name> <synonym> @@ -96,4 +97,13 @@ <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> </attributes> + <forms uuid="14e20d48-635e-4c52-9099-e743323fc190"> + <name>Форма</name> + <synonym> + <key>ru</key> + <value>Форма</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> </mdclass:DataProcessor> diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/Forms/Форма/Form.form b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/Forms/Форма/Form.form new file mode 100644 index 000000000..643681dc9 --- /dev/null +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/Forms/Форма/Form.form @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:form="http://g5.1c.ru/v8/dt/form"> + <autoCommandBar> + <name>ФормаКоманднаяПанель</name> + <id>-1</id> + <horizontalAlign>Left</horizontalAlign> + <autoFill>true</autoFill> + </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> + <windowOpeningMode>DontBlock</windowOpeningMode> + <saveWindowSettings>true</saveWindowSettings> + <autoTitle>true</autoTitle> + <autoUrl>true</autoUrl> + <group>Vertical</group> + <autoFillCheck>true</autoFillCheck> + <allowFormCustomize>true</allowFormCustomize> + <enabled>true</enabled> + <verticalScroll>UseIfNecessary</verticalScroll> + <showTitle>auto</showTitle> + <showCloseButton>true</showCloseButton> + <attributes> + <name>Объект</name> + <id>1</id> + <valueType> + <types>String</types> + <stringQualifiers/> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <main>true</main> + </attributes> + <commandInterface> + <navigationPanel/> + <commandBar/> + </commandInterface> +</form:Form> diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/Forms/Форма/Module.bsl new file mode 100644 index 000000000..60eabfdab --- /dev/null +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/Forms/Форма/Module.bsl @@ -0,0 +1,11 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ObjectModule.bsl b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ObjectModule.bsl index 89af94569..c0597f54b 100644 --- a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ObjectModule.bsl @@ -252,19 +252,17 @@ Если ИспользоватьВременныйКаталогДляОтправкиИПриемаСообщений Тогда - ИмяВременногоКаталога = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогВременныхФайлов(), ОбменДаннымиСервер.ИмяВременногоКаталогаСообщенийОбмена()); - - ВременныйКаталогСообщенийОбмена = Новый Файл(ИмяВременногоКаталога); - // создаем временный каталог для сообщений обмена Попытка - СоздатьКаталог(ИмяКаталогаСообщенияОбмена()); + ИмяВременногоКаталога = ОбменДаннымиСервер.СоздатьВременныйКаталогСообщенийОбмена(); Исключение ПолучитьСообщениеОбОшибке(6); ДополнитьСообщениеОбОшибке(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат Ложь; КонецПопытки; + ВременныйКаталогСообщенийОбмена = Новый Файл(ИмяВременногоКаталога); + Иначе ВременныйКаталогСообщенийОбмена = Новый Файл(ИмяКаталогаОбменаИнформацией()); @@ -492,8 +490,7 @@ СтрокаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(СтрокаСообщения, ИмяФайлаИсточника, ИмяФайлаПриемника, - КраткоеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); УстановитьСтрокуСообщенияОбОшибке(СтрокаСообщения); Возврат Ложь @@ -581,4 +578,4 @@ ИмяОбъекта = НСтр("ru = 'Обработка: %1'"); ИмяОбъекта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ИмяОбъекта, Метаданные().Имя); -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ТранспортСообщенийОбменаFILE.mdo b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ТранспортСообщенийОбменаFILE.mdo index 0bca87199..b49840326 100644 --- a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ТранспортСообщенийОбменаFILE.mdo +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFILE/ТранспортСообщенийОбменаFILE.mdo @@ -9,6 +9,7 @@ <key>ru</key> <value>Транспорт сообщений обмена через общий сетевой ресурс</value> </synonym> + <defaultForm>DataProcessor.ТранспортСообщенийОбменаFILE.Form.Форма</defaultForm> <attributes uuid="8f44ebad-1160-474e-a566-fb9da55ffcba"> <name>FILEКаталогОбменаИнформацией</name> <synonym> @@ -73,4 +74,13 @@ <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> </attributes> + <forms uuid="64484611-b32c-4155-a063-7df5a3f924dd"> + <name>Форма</name> + <synonym> + <key>ru</key> + <value>Форма</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> </mdclass:DataProcessor> diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/Forms/Форма/Form.form b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/Forms/Форма/Form.form new file mode 100644 index 000000000..643681dc9 --- /dev/null +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/Forms/Форма/Form.form @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:form="http://g5.1c.ru/v8/dt/form"> + <autoCommandBar> + <name>ФормаКоманднаяПанель</name> + <id>-1</id> + <horizontalAlign>Left</horizontalAlign> + <autoFill>true</autoFill> + </autoCommandBar> + <handlers> + <event>OnCreateAtServer</event> + <name>ПриСозданииНаСервере</name> + </handlers> + <windowOpeningMode>DontBlock</windowOpeningMode> + <saveWindowSettings>true</saveWindowSettings> + <autoTitle>true</autoTitle> + <autoUrl>true</autoUrl> + <group>Vertical</group> + <autoFillCheck>true</autoFillCheck> + <allowFormCustomize>true</allowFormCustomize> + <enabled>true</enabled> + <verticalScroll>UseIfNecessary</verticalScroll> + <showTitle>auto</showTitle> + <showCloseButton>true</showCloseButton> + <attributes> + <name>Объект</name> + <id>1</id> + <valueType> + <types>String</types> + <stringQualifiers/> + </valueType> + <view> + <common>true</common> + </view> + <edit> + <common>true</common> + </edit> + <main>true</main> + </attributes> + <commandInterface> + <navigationPanel/> + <commandBar/> + </commandInterface> +</form:Form> diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/Forms/Форма/Module.bsl new file mode 100644 index 000000000..60eabfdab --- /dev/null +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/Forms/Форма/Module.bsl @@ -0,0 +1,11 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'"); + +КонецПроцедуры diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/ObjectModule.bsl b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/ObjectModule.bsl index 186f903e1..d86a13eea 100644 --- a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/ObjectModule.bsl +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/ObjectModule.bsl @@ -259,23 +259,22 @@ Функция СоздатьВременныйКаталогСообщенийОбмена() - ВременныйКаталогСообщенийОбмена = Новый Файл(ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(КаталогВременныхФайлов(), ОбменДаннымиСервер.ИмяВременногоКаталогаСообщенийОбмена())); - // создаем временный каталог для сообщений обмена Попытка - СоздатьКаталог(ИмяКаталогаСообщенияОбмена()); + ИмяВременногоКаталога = ОбменДаннымиСервер.СоздатьВременныйКаталогСообщенийОбмена(); Исключение ПолучитьСообщениеОбОшибке(4); ДополнитьСообщениеОбОшибке(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат Ложь; КонецПопытки; + ВременныйКаталогСообщенийОбмена = Новый Файл(ИмяВременногоКаталога); + ИмяФайлаСообщения = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ИмяКаталогаСообщенияОбмена(), ШаблонИмениФайлаСообщения + ".xml"); ВременныйФайлСообщенияОбмена = Новый Файл(ИмяФайлаСообщения); Возврат Истина; - КонецФункции Функция УдалитьВременныйКаталогСообщенийОбмена() diff --git a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/ТранспортСообщенийОбменаFTP.mdo b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/ТранспортСообщенийОбменаFTP.mdo index d4958c870..6d4dc5c3c 100644 --- a/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/ТранспортСообщенийОбменаFTP.mdo +++ b/SSL/src/DataProcessors/ТранспортСообщенийОбменаFTP/ТранспортСообщенийОбменаFTP.mdo @@ -9,6 +9,7 @@ <key>ru</key> <value>Транспорт сообщений обмена через FTP</value> </synonym> + <defaultForm>DataProcessor.ТранспортСообщенийОбменаFTP.Form.Форма</defaultForm> <attributes uuid="821b93bd-f0dd-4468-972a-d9b2b4de72f1"> <name>FTPСжиматьФайлИсходящегоСообщения</name> <synonym> @@ -149,4 +150,13 @@ <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> </attributes> + <forms uuid="e4ea640f-e3a4-44ad-b17d-51f32136372e"> + <name>Форма</name> + <synonym> + <key>ru</key> + <value>Форма</value> + </synonym> + <usePurposes>PersonalComputer</usePurposes> + <usePurposes>MobileDevice</usePurposes> + </forms> </mdclass:DataProcessor> diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl index f1e053f50..a82d0deb3 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Forms/ОсновнаяФорма/Module.bsl @@ -228,9 +228,7 @@ ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("Ключ", ОписаниеЗначения.Значение); - ОткрытьФормуМодально( - ОписаниеЗначения.Представление + ".ФормаЗаписи", - ПараметрыФормы); + ОткрытьФорму(ОписаниеЗначения.Представление + ".ФормаЗаписи", ПараметрыФормы, ЭтаФорма); Иначе ОткрытьЗначение(Значение); КонецЕсли; @@ -306,7 +304,7 @@ КонецПроцедуры -// Возвращает веть дерева в ветви СтрокиДерева по значению Значение. +// Возвращает ветвь дерева в ветви СтрокиДерева по значению Значение. // Если ветвь не найдена - создается новая. &НаСервере Функция НайтиИлиДобавитьВетвьДерева(СтрокиДерева, Значение, Представление, Пометка) diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html index 9da49816d..791eef6e5 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Удаление помеченных объектов доступно пользователю с административными правами. Удаление выполняется с контролем целостности информационной базы. Это значит, что если на тот или иной объект системы (документ, элемент справочника и т.д.) ссылаются другие объекты то удаление объекта не будет выполнено. Тем не менее, следует помнить, что удаление объектов - необратимая операция. </p> <p>Удаление помеченных ранее объектов можно выполнить двумя способами:</p> <ul><li>"<strong>Автоматическое удаление всех объектов</strong>" - производится попытка автоматического удаления всех объектов, помеченных на удаление. diff --git a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl index 78e917593..6750506d9 100644 --- a/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl +++ b/SSL/src/DataProcessors/УдалениеПомеченныхОбъектов/ManagerModule.bsl @@ -109,8 +109,7 @@ Исключение РезультатУдаления.Значение = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не удалось установить монопольный режим (%1)'"), - КраткоеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат РезультатУдаления; КонецПопытки; @@ -322,4 +321,4 @@ Возврат РезультатУдаления; КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Form.form b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Form.form index 25af06b0e..70fc442bc 100644 --- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Form.form +++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Form.form @@ -30,7 +30,7 @@ </handlers> <extendedTooltip> <name>ИмяФайлаПравилРасширеннаяПодсказка</name> - <id>225</id> + <id>242</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -83,7 +83,7 @@ </userVisible> <extendedTooltip> <name>ФормаЗагрузитьПравилаРасширеннаяПодсказка</name> - <id>227</id> + <id>244</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -115,7 +115,7 @@ </toolTip> <extendedTooltip> <name>ГруппаФайлаПравилРасширеннаяПодсказка</name> - <id>224</id> + <id>241</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -150,7 +150,7 @@ </handlers> <extendedTooltip> <name>ПрямаяВыгрузкаРасширеннаяПодсказка</name> - <id>228</id> + <id>245</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -217,7 +217,7 @@ </handlers> <extendedTooltip> <name>ИмяФайлаДанныхРасширеннаяПодсказка</name> - <id>232</id> + <id>249</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -278,7 +278,7 @@ </handlers> <extendedTooltip> <name>АрхивироватьФайлРасширеннаяПодсказка</name> - <id>234</id> + <id>251</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -311,7 +311,7 @@ </dataPath> <extendedTooltip> <name>ПарольДляСжатияФайлаОбменаРасширеннаяПодсказка</name> - <id>236</id> + <id>253</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -353,7 +353,7 @@ </toolTip> <extendedTooltip> <name>ВыгрузкаВФайлРасширеннаяПодсказка</name> - <id>231</id> + <id>248</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -394,7 +394,7 @@ </handlers> <extendedTooltip> <name>ТипИнформационнойБазыДляПодключенияРасширеннаяПодсказка</name> - <id>240</id> + <id>257</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -465,7 +465,7 @@ </handlers> <extendedTooltip> <name>ВерсияПлатформыИнформационнойБазыДляПодключенияРасширеннаяПодсказка</name> - <id>242</id> + <id>259</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -532,7 +532,7 @@ <horizontalStretch>true</horizontalStretch> <extendedTooltip> <name>ТипПлатформаРасширеннаяПодсказка</name> - <id>239</id> + <id>256</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -568,7 +568,7 @@ </dataPath> <extendedTooltip> <name>КаталогИнформационнойБазыДляПодключенияРасширеннаяПодсказка</name> - <id>246</id> + <id>263</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -621,7 +621,7 @@ </toolTip> <extendedTooltip> <name>ФайловаяБазаРасширеннаяПодсказка</name> - <id>245</id> + <id>262</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -654,7 +654,7 @@ </dataPath> <extendedTooltip> <name>ИмяСервераИнформационнойБазыДляПодключенияРасширеннаяПодсказка</name> - <id>249</id> + <id>266</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -699,7 +699,7 @@ </dataPath> <extendedTooltip> <name>ИмяИнформационнойБазыНаСервереДляПодключенияРасширеннаяПодсказка</name> - <id>251</id> + <id>268</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -738,7 +738,7 @@ </toolTip> <extendedTooltip> <name>БазаНаСервереРасширеннаяПодсказка</name> - <id>248</id> + <id>265</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -766,7 +766,7 @@ </toolTip> <extendedTooltip> <name>ТипБазыРасширеннаяПодсказка</name> - <id>244</id> + <id>261</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -804,7 +804,7 @@ </handlers> <extendedTooltip> <name>АутентификацияWindowsИнформационнойБазыДляПодключенияРасширеннаяПодсказка</name> - <id>254</id> + <id>271</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -834,7 +834,7 @@ </userVisible> <extendedTooltip> <name>ТестПодключенияРасширеннаяПодсказка</name> - <id>256</id> + <id>273</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -862,7 +862,7 @@ </toolTip> <extendedTooltip> <name>АутентификацияТестРасширеннаяПодсказка</name> - <id>253</id> + <id>270</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -899,7 +899,7 @@ </dataPath> <extendedTooltip> <name>ПользовательИнформационнойБазыДляПодключенияРасширеннаяПодсказка</name> - <id>258</id> + <id>275</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -945,7 +945,7 @@ </dataPath> <extendedTooltip> <name>ПарольИнформационнойБазыДляПодключенияРасширеннаяПодсказка</name> - <id>260</id> + <id>277</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -986,7 +986,7 @@ </toolTip> <extendedTooltip> <name>ПользовательПарольРасширеннаяПодсказка</name> - <id>257</id> + <id>274</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1010,7 +1010,7 @@ </userVisible> <extendedTooltip> <name>ВыгрузкаВИБПриемникРасширеннаяПодсказка</name> - <id>238</id> + <id>255</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1039,7 +1039,7 @@ </toolTip> <extendedTooltip> <name>ПараметрыВыгрузкиРасширеннаяПодсказка</name> - <id>230</id> + <id>247</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1052,21 +1052,87 @@ <currentRowUse>Auto</currentRowUse> </extInfo> </items> - <items xsi:type="form:Button"> - <name>ФормаВыполнитьВыгрузку</name> - <id>191</id> - <title> - <key>ru</key> - <value>Выгрузить данные</value> - + + ГруппаКомандыВыгрузки + 216 + + ФормаВыполнитьВыгрузку + 191 + + <key>ru</key> + <value>Выгрузить данные</value> + + true + false + + true + + + ФормаВыполнитьВыгрузкуРасширеннаяПодсказка + 280 + Label + true + true + + Left + + + UsualButton + Form.Command.ВыполнитьВыгрузку + Normal + Auto + true + true + UserCmds + Auto + + + НадписьПояснениеВыгрузки + 217 + + <key>ru</key> + <value>Для выгрузки данных необходимо прочитать правила обмена</value> + + true + true + + true + + + НадписьПояснениеВыгрузкиРасширеннаяПодсказка + 281 + Label + true + true + + Left + + + + НадписьПояснениеВыгрузкиКонтекстноеМеню + 218 + true + + Label + true + true + + 69 + 81 + 133 + + + Left + + true true true - ФормаВыполнитьВыгрузкуРасширеннаяПодсказка - 262 + ГруппаКомандыВыгрузкиРасширеннаяПодсказка + 279 Label true true @@ -1074,14 +1140,14 @@ Left - UsualButton - Form.Command.ВыполнитьВыгрузку - Normal - Auto - true - true - UserCmds - Auto + UsualGroup + + Auto + true + true + Auto + Auto + ПанельВыгрузки @@ -1109,7 +1175,7 @@ ПериодВыгрузкиРасширеннаяПодсказка - 266 + 285 Label true true @@ -1152,7 +1218,7 @@ ГруппаПериодаВыгрузкиРасширеннаяПодсказка - 265 + 284 Label true true @@ -1198,7 +1264,7 @@ None ПометкаРасширеннаяПодсказка - 284 + 303 Label true true @@ -1231,7 +1297,7 @@ ПВДРасширеннаяПодсказка - 286 + 305 Label true true @@ -1267,7 +1333,7 @@ ГруппаПометкиРасширеннаяПодсказка - 283 + 302 Label true true @@ -1299,7 +1365,7 @@ СсылкаНаУзелОбменаРасширеннаяПодсказка - 288 + 307 Label true true @@ -1340,7 +1406,7 @@ ТаблицаПравилВыгрузкиЭтоГруппаРасширеннаяПодсказка - 290 + 309 Label true true @@ -1373,7 +1439,7 @@ ТаблицаПравилВыгрузкиВыгрузкаОтметитьВсеРасширеннаяПодсказка - 268 + 287 Label true true @@ -1399,7 +1465,7 @@ ТаблицаПравилВыгрузкиВыгрузкаОтменитьВсеРасширеннаяПодсказка - 269 + 288 Label true true @@ -1428,7 +1494,7 @@ ТаблицаПравилВыгрузкиВыгрузкаОчиститьУзлыОбменаРасширеннаяПодсказка - 271 + 290 Label true true @@ -1454,7 +1520,7 @@ ТаблицаПравилВыгрузкиВыгрузкаУстановитьУзелОбменаРасширеннаяПодсказка - 272 + 291 Label true true @@ -1485,7 +1551,7 @@ УзлыОбменаРасширеннаяПодсказка - 270 + 289 Label true true @@ -1511,10 +1577,10 @@ ТаблицаПравилВыгрузкиСтрокаПоиска - 274 + 293 ТаблицаПравилВыгрузкиСтрокаПоискаРасширеннаяПодсказка - 276 + 295 Label true true @@ -1524,7 +1590,7 @@ ТаблицаПравилВыгрузкиСтрокаПоискаКонтекстноеМеню - 275 + 294 true ТаблицаПравилВыгрузки @@ -1534,10 +1600,10 @@ ТаблицаПравилВыгрузкиСостояниеПросмотра - 277 + 296 ТаблицаПравилВыгрузкиСостояниеПросмотраРасширеннаяПодсказка - 279 + 298 Label true true @@ -1547,7 +1613,7 @@ ТаблицаПравилВыгрузкиСостояниеПросмотраКонтекстноеМеню - 278 + 297 true ViewStatusAddition @@ -1558,10 +1624,10 @@ ТаблицаПравилВыгрузкиУправлениеПоиском - 280 + 299 ТаблицаПравилВыгрузкиУправлениеПоискомРасширеннаяПодсказка - 282 + 301 Label true true @@ -1571,7 +1637,7 @@ ТаблицаПравилВыгрузкиУправлениеПоискомКонтекстноеМеню - 281 + 300 true SearchControlAddition @@ -1582,7 +1648,7 @@ ТаблицаПравилВыгрузкиРасширеннаяПодсказка - 273 + 292 Label true true @@ -1635,7 +1701,7 @@ ВыгружаемыеДанныеРасширеннаяПодсказка - 264 + 283 Label true true @@ -1677,7 +1743,7 @@ ТаблицаНастройкиПараметровНаименованиеРасширеннаяПодсказка - 313 + 332 Label true true @@ -1718,7 +1784,7 @@ ТаблицаНастройкиПараметровЗначениеРасширеннаяПодсказка - 315 + 334 Label true true @@ -1758,7 +1824,7 @@ ТаблицаНастройкиПараметровВосстановитьПараметрыРасширеннаяПодсказка - 301 + 320 Label true true @@ -1784,7 +1850,7 @@ ТаблицаНастройкиПараметровСохранитьПараметрыРасширеннаяПодсказка - 302 + 321 Label true true @@ -1804,10 +1870,10 @@ ТаблицаНастройкиПараметровСтрокаПоиска - 304 + 323 ТаблицаНастройкиПараметровСтрокаПоискаРасширеннаяПодсказка - 306 + 325 Label true true @@ -1817,7 +1883,7 @@ ТаблицаНастройкиПараметровСтрокаПоискаКонтекстноеМеню - 305 + 324 true ТаблицаНастройкиПараметров @@ -1827,10 +1893,10 @@ ТаблицаНастройкиПараметровСостояниеПросмотра - 307 + 326 ТаблицаНастройкиПараметровСостояниеПросмотраРасширеннаяПодсказка - 309 + 328 Label true true @@ -1840,7 +1906,7 @@ ТаблицаНастройкиПараметровСостояниеПросмотраКонтекстноеМеню - 308 + 327 true ViewStatusAddition @@ -1851,10 +1917,10 @@ ТаблицаНастройкиПараметровУправлениеПоиском - 310 + 329 ТаблицаНастройкиПараметровУправлениеПоискомРасширеннаяПодсказка - 312 + 331 Label true true @@ -1864,7 +1930,7 @@ ТаблицаНастройкиПараметровУправлениеПоискомКонтекстноеМеню - 311 + 330 true SearchControlAddition @@ -1875,7 +1941,7 @@ ТаблицаНастройкиПараметровРасширеннаяПодсказка - 303 + 322 Label true true @@ -1929,7 +1995,7 @@ ПараметрыРасширеннаяПодсказка - 300 + 319 Label true true @@ -1960,7 +2026,7 @@ None КомментарийРасширеннаяПодсказка - 326 + 345 Label true true @@ -2004,7 +2070,7 @@ ЗакладкаКомментарийРасширеннаяПодсказка - 325 + 344 Label true true @@ -2033,7 +2099,7 @@ ПанельВыгрузкиРасширеннаяПодсказка - 263 + 282 Label true true @@ -2050,79 +2116,6 @@ ОтладкаВыгрузки 57 - - ФлагРежимОтладкиОбработчиковВыгрузки - 54 - - <key>ru</key> - <value>Режим отладки обработчиков выгрузки</value> - - true - true - - true - - - Объект.ФлагРежимОтладкиОбработчиков - - Right - - OnChange - ФлагРежимОтладкиОбработчиковВыгрузкиПриИзменении - - - ФлагРежимОтладкиОбработчиковВыгрузкиРасширеннаяПодсказка - 329 - Label - true - true - - Left - - - - ФлагРежимОтладкиОбработчиковВыгрузкиКонтекстноеМеню - 55 - true - - CheckBoxField - Enter - true - Left - true - - - - НастройкаОтладкиВыгрузки - 56 - - <key>ru</key> - <value>Настройка отладки выгрузки...</value> - - true - true - - true - - - НастройкаОтладкиВыгрузкиРасширеннаяПодсказка - 331 - Label - true - true - - Left - - - UsualButton - Form.Command.НастройкаОтладкиВыгрузки - Normal - Auto - true - true - UserCmds - Auto - true true @@ -2134,7 +2127,7 @@ ОтладкаВыгрузкиРасширеннаяПодсказка - 328 + 347 Label true true @@ -2151,6 +2144,216 @@ Auto + + СтраницыОтладкиВыгрузки + 221 + + ГруппаВыгрузкаОтладкаДоступна + 222 + + ФлагРежимОтладкиОбработчиковВыгрузки + 54 + + <key>ru</key> + <value>Режим отладки обработчиков выгрузки</value> + + true + true + + true + + + Объект.ФлагРежимОтладкиОбработчиков + + Right + + OnChange + ФлагРежимОтладкиОбработчиковВыгрузкиПриИзменении + + + ФлагРежимОтладкиОбработчиковВыгрузкиРасширеннаяПодсказка + 350 + Label + true + true + + Left + + + + ФлагРежимОтладкиОбработчиковВыгрузкиКонтекстноеМеню + 55 + true + + CheckBoxField + Enter + true + Left + true + + + + НастройкаОтладкиВыгрузки + 56 + + <key>ru</key> + <value>Настройка отладки выгрузки...</value> + + true + true + + true + + + НастройкаОтладкиВыгрузкиРасширеннаяПодсказка + 352 + Label + true + true + + Left + + + UsualButton + Form.Command.НастройкаОтладкиВыгрузки + Normal + Auto + true + true + UserCmds + Auto + + true + true + + true + + + ГруппаВыгрузкаОтладкаДоступнаРасширеннаяПодсказка + 349 + Label + true + true + + Left + + + Page + + auto + + + + ГруппаВыгрузкаВебКлиент + 223 + + ДекорацияИнформацияВыгрузка + 224 + true + true + + true + + + ДекорацияИнформацияВыгрузкаРасширеннаяПодсказка + 354 + Label + true + true + + Left + + + + ДекорацияИнформацияВыгрузкаКонтекстноеМеню + 225 + true + + 2 + true + 1 + true + + + + + + ДекорацияОтладкаВыгрузки + 219 + + <key>ru</key> + <value>Возможности отладки недоступны при использовании веб-клиента</value> + + true + true + + true + + + ДекорацияОтладкаВыгрузкиРасширеннаяПодсказка + 355 + Label + true + true + + Left + + + + ДекорацияОтладкаВыгрузкиКонтекстноеМеню + 220 + true + + Label + true + true + + 69 + 81 + 133 + + + Left + + + true + true + + true + + + ГруппаВыгрузкаВебКлиентРасширеннаяПодсказка + 353 + Label + true + true + + Left + + + Page + + + true + true + + true + + + СтраницыОтладкиВыгрузкиРасширеннаяПодсказка + 348 + Label + true + true + + Left + + + Pages + + Auto + + true true @@ -2166,7 +2369,7 @@ ВыгрузкаРасширеннаяПодсказка - 223 + 240 Label true true @@ -2197,7 +2400,7 @@ ФормаВыполнитьЗагрузкуРасширеннаяПодсказка - 333 + 357 Label true true @@ -2235,7 +2438,7 @@ ИмяФайлаОбменаРасширеннаяПодсказка - 334 + 358 Label true true @@ -2291,7 +2494,7 @@ ПарольДляРаспаковкиФайлаОбменаРасширеннаяПодсказка - 336 + 360 Label true true @@ -2340,7 +2543,7 @@ ИспользоватьТранзакцииРасширеннаяПодсказка - 338 + 362 Label true true @@ -2377,7 +2580,7 @@ КоличествоОбъектовНаТранзакциюРасширеннаяПодсказка - 340 + 364 Label true true @@ -2419,7 +2622,7 @@ Right ЗагружатьДанныеВРежимеОбменаРасширеннаяПодсказка - 342 + 366 Label true true @@ -2453,7 +2656,7 @@ Right ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъектыРасширеннаяПодсказка - 344 + 368 Label true true @@ -2487,7 +2690,7 @@ Right ОбъектыПоСсылкеЗагружатьБезПометкиУдаленияРасширеннаяПодсказка - 346 + 370 Label true true @@ -2521,7 +2724,7 @@ Right ОптимизированнаяЗаписьОбъектовРасширеннаяПодсказка - 348 + 372 Label true true @@ -2555,7 +2758,7 @@ Right ЗаписыватьРегистрыНаборамиЗаписейРасширеннаяПодсказка - 350 + 374 Label true true @@ -2589,7 +2792,7 @@ Right ОбрезатьСтрокиСправаРасширеннаяПодсказка - 352 + 376 Label true true @@ -2626,7 +2829,7 @@ НастройкаАвтоматическойЗагрузкиДанныхРасширеннаяПодсказка - 354 + 378 Label true true @@ -2694,7 +2897,7 @@ ВерсияПравилОбменаРасширеннаяПодсказка - 358 + 382 Label true true @@ -2731,7 +2934,7 @@ ПолучитьИнформациюОФайлеОбменаРасширеннаяПодсказка - 360 + 384 Label true true @@ -2759,7 +2962,7 @@ ВерсияПравилГруппаРасширеннаяПодсказка - 357 + 381 Label true true @@ -2789,7 +2992,7 @@ ДатаВыгрузкиДанныхРасширеннаяПодсказка - 361 + 385 Label true true @@ -2829,7 +3032,7 @@ ПериодВыгрузкиДанныхРасширеннаяПодсказка - 363 + 387 Label true true @@ -2867,7 +3070,7 @@ Left КомментарийЗагрузкиРасширеннаяПодсказка - 365 + 389 Label true true @@ -2911,7 +3114,7 @@ ИнформацияОФайлеОбменаРасширеннаяПодсказка - 356 + 380 Label true true @@ -2932,31 +3135,92 @@ - ОтладкаЗагрузки - 92 - - ФлагРежимОтладкиОбработчиковЗагрузки - 90 - - <key>ru</key> - <value>Режим отладки обработчиков загрузки</value> - + СтраницыОтладкиЗагрузки + 226 + + ГруппаЗагрузкаОтладкаДоступна + 227 + + ФлагРежимОтладкиОбработчиковЗагрузки + 90 + + <key>ru</key> + <value>Режим отладки обработчиков загрузки</value> + + true + true + + true + + + Объект.ФлагРежимОтладкиОбработчиков + + Right + + OnChange + ФлагРежимОтладкиОбработчиковЗагрузкиПриИзменении + + + ФлагРежимОтладкиОбработчиковЗагрузкиРасширеннаяПодсказка + 393 + Label + true + true + + Left + + + + ФлагРежимОтладкиОбработчиковЗагрузкиКонтекстноеМеню + 91 + true + + CheckBoxField + Enter + true + Left + true + + + + НастройкаОтладкиЗагрузки + 93 + + <key>ru</key> + <value>Настройка отладки загрузки...</value> + + true + true + + true + + + НастройкаОтладкиЗагрузкиРасширеннаяПодсказка + 395 + Label + true + true + + Left + + + UsualButton + Form.Command.НастройкаОтладкиЗагрузки + Normal + Auto + true + true + UserCmds + Auto + true true true - - Объект.ФлагРежимОтладкиОбработчиков - - Right - - OnChange - ФлагРежимОтладкиОбработчиковЗагрузкиПриИзменении - - ФлагРежимОтладкиОбработчиковЗагрузкиРасширеннаяПодсказка - 368 + ГруппаЗагрузкаОтладкаДоступнаРасширеннаяПодсказка + 392 Label true true @@ -2964,33 +3228,86 @@ Left - - ФлагРежимОтладкиОбработчиковЗагрузкиКонтекстноеМеню - 91 - true - - CheckBoxField - Enter - true - Left - true - + Page + - - НастройкаОтладкиЗагрузки - 93 - - <key>ru</key> - <value>Настройка отладки загрузки...</value> - + + ГруппаЗагрузкаВебКлиент + 228 + + ДекорацияИнформацияЗагрузка + 229 + true + true + + true + + + ДекорацияИнформацияЗагрузкаРасширеннаяПодсказка + 397 + Label + true + true + + Left + + + + ДекорацияИнформацияЗагрузкаКонтекстноеМеню + 230 + true + + 2 + true + 1 + true + false + + + + + + ДекорацияОтладкаЗагрузки + 231 + + <key>ru</key> + <value>Возможности отладки недоступны при использовании веб-клиента</value> + + true + true + + true + + + ДекорацияОтладкаЗагрузкиРасширеннаяПодсказка + 398 + Label + true + true + + Left + + + + ДекорацияОтладкаЗагрузкиКонтекстноеМеню + 232 + true + + Label + true + true + + Left + + true true true - НастройкаОтладкиЗагрузкиРасширеннаяПодсказка - 370 + ГруппаЗагрузкаВебКлиентРасширеннаяПодсказка + 396 Label true true @@ -2998,27 +3315,17 @@ Left - UsualButton - Form.Command.НастройкаОтладкиЗагрузки - Normal - Auto - true - true - UserCmds - Auto + Page + true true true - - ru - Отладка загрузки - - ОтладкаЗагрузкиРасширеннаяПодсказка - 367 + СтраницыОтладкиЗагрузкиРасширеннаяПодсказка + 391 Label true true @@ -3026,12 +3333,8 @@ Left - UsualGroup - - Auto - true - true - Auto + Pages + Auto @@ -3050,7 +3353,7 @@ ЗагрузкаРасширеннаяПодсказка - 332 + 356 Label true true @@ -3085,7 +3388,7 @@ ФлагРежимОтладкиРасширеннаяПодсказка - 372 + 400 Label true true @@ -3119,7 +3422,7 @@ Right ВыводВОкноСообщенийИнформационныхСообщенийРасширеннаяПодсказка - 374 + 402 Label true true @@ -3156,7 +3459,7 @@ КоличествоОбработанныхОбъектовДляОбновленияСтатусаРасширеннаяПодсказка - 376 + 404 Label true true @@ -3205,7 +3508,7 @@ Right ВыполнитьОбменДаннымиВОптимизированномФорматеРасширеннаяПодсказка - 379 + 407 Label true true @@ -3239,7 +3542,7 @@ Right ИспользоватьТранзакцииПриВыгрузкеДляПлановОбменаРасширеннаяПодсказка - 381 + 409 Label true true @@ -3276,7 +3579,7 @@ КоличествоЭлементовВТранзакцииПриВыгрузкеДляПлановОбменаРасширеннаяПодсказка - 383 + 411 Label true true @@ -3322,7 +3625,7 @@ Right ВыгружатьТолькоРазрешенныеРасширеннаяПодсказка - 385 + 413 Label true true @@ -3360,7 +3663,7 @@ Right ВестиДополнительныйКонтрольЗаписиВXMLРасширеннаяПодсказка - 387 + 415 Label true true @@ -3401,7 +3704,7 @@ ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузкиРасширеннаяПодсказка - 389 + 417 Label true true @@ -3473,7 +3776,7 @@ НастройкиВыгрузкиДанныхРасширеннаяПодсказка - 378 + 406 Label true true @@ -3513,7 +3816,7 @@ ИмяФайлаПротоколаОбменаРасширеннаяПодсказка - 392 + 420 Label true true @@ -3568,7 +3871,7 @@ ИмяФайлаПротоколаОбменаЗагрузкаРасширеннаяПодсказка - 394 + 422 Label true true @@ -3620,7 +3923,7 @@ Right ДописыватьДанныеВПротоколОбменаРасширеннаяПодсказка - 396 + 424 Label true true @@ -3654,7 +3957,7 @@ Right ВыводВПротоколИнформационныхСообщенийРасширеннаяПодсказка - 398 + 426 Label true true @@ -3688,7 +3991,7 @@ Right ОткрыватьПротоколыОбменаПослеВыполненияОперацийРасширеннаяПодсказка - 400 + 428 Label true true @@ -3723,7 +4026,7 @@ ПротоколОбменаРасширеннаяПодсказка - 391 + 419 Label true true @@ -3758,7 +4061,7 @@ НастройкиОбменаДаннымиРасширеннаяПодсказка - 371 + 399 Label true true @@ -3789,7 +4092,7 @@ НадписьПредупреждениеПользователяРасширеннаяПодсказка - 403 + 431 Label true true @@ -3830,7 +4133,7 @@ Right УдалятьОбъектыНаКоторыеЕстьПраваДоступаРасширеннаяПодсказка - 404 + 432 Label true true @@ -3871,7 +4174,7 @@ ПериодУдаленияРасширеннаяПодсказка - 406 + 434 Label true true @@ -3928,7 +4231,7 @@ None МетаданныеДляУдаленияПометкаРасширеннаяПодсказка - 422 + 450 Label true true @@ -3965,7 +4268,7 @@ МетаданныеДляУдаленияПредставлениеРасширеннаяПодсказка - 424 + 452 Label true true @@ -4009,7 +4312,7 @@ ГруппаМетаданныхРасширеннаяПодсказка - 421 + 449 Label true true @@ -4037,7 +4340,7 @@ УдаляемыеДанныеУдалениеОтметитьВсеРасширеннаяПодсказка - 408 + 436 Label true true @@ -4063,7 +4366,7 @@ УдаляемыеДанныеУдалениеОтменитьВсеРасширеннаяПодсказка - 409 + 437 Label true true @@ -4089,7 +4392,7 @@ УдаляемыеДанныеУдалениеУдалитьРасширеннаяПодсказка - 410 + 438 Label true true @@ -4113,10 +4416,10 @@ УдаляемыеДанныеСтрокаПоиска - 412 + 440 УдаляемыеДанныеСтрокаПоискаРасширеннаяПодсказка - 414 + 442 Label true true @@ -4126,7 +4429,7 @@ УдаляемыеДанныеСтрокаПоискаКонтекстноеМеню - 413 + 441 true УдаляемыеДанные @@ -4136,10 +4439,10 @@ УдаляемыеДанныеСостояниеПросмотра - 415 + 443 УдаляемыеДанныеСостояниеПросмотраРасширеннаяПодсказка - 417 + 445 Label true true @@ -4149,7 +4452,7 @@ УдаляемыеДанныеСостояниеПросмотраКонтекстноеМеню - 416 + 444 true ViewStatusAddition @@ -4160,10 +4463,10 @@ УдаляемыеДанныеУправлениеПоиском - 418 + 446 УдаляемыеДанныеУправлениеПоискомРасширеннаяПодсказка - 420 + 448 Label true true @@ -4173,7 +4476,7 @@ УдаляемыеДанныеУправлениеПоискомКонтекстноеМеню - 419 + 447 true SearchControlAddition @@ -4184,7 +4487,7 @@ УдаляемыеДанныеРасширеннаяПодсказка - 411 + 439 Label true true @@ -4237,7 +4540,7 @@ НастройкаУдалениеДанныхРасширеннаяПодсказка - 402 + 430 Label true true @@ -4266,7 +4569,7 @@ ГлавнаяПанельФормыРасширеннаяПодсказка - 222 + 239 Label true true @@ -4297,7 +4600,7 @@ ФормаВосстановитьРасширеннаяПодсказка - 216 + 233 Label true true @@ -4324,7 +4627,7 @@ ФормаСохранитьРасширеннаяПодсказка - 217 + 234 Label true true @@ -4354,7 +4657,7 @@ ФормаНаКлиентеРасширеннаяПодсказка - 219 + 236 Label true true @@ -4380,7 +4683,7 @@ ФормаНаСервереРасширеннаяПодсказка - 220 + 237 Label true true @@ -4411,7 +4714,7 @@ РежимОбработкиРасширеннаяПодсказка - 218 + 235 Label true true @@ -4435,7 +4738,7 @@ ФормаСправкаРасширеннаяПодсказка - 221 + 238 Label true true @@ -5152,19 +5455,6 @@ ПериодВыгрузки - - Реквизит1 - 16 - - ValueTable - - - true - - - true - - ПрочитатьПравилаОбмена @@ -5191,7 +5481,7 @@ <name>ТестПодключения</name> <title> <key>ru</key> - <value>Тест подключения...</value> + <value>Проверить подключение</value> 2 @@ -5201,9 +5491,6 @@ true - - CommonPicture.ЗаполнитьФорму - ТестПодключения @@ -5506,7 +5793,7 @@ 17 ru - Выполнить выгрузку + Выполнить выгрузку данных в файл или в базу приемник true diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Items/ДекорацияИнформацияВыгрузка/Picture.png b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Items/ДекорацияИнформацияВыгрузка/Picture.png new file mode 100644 index 000000000..24fea1254 Binary files /dev/null and b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Items/ДекорацияИнформацияВыгрузка/Picture.png differ diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Items/ДекорацияИнформацияЗагрузка/Picture.png b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Items/ДекорацияИнформацияЗагрузка/Picture.png new file mode 100644 index 000000000..24fea1254 Binary files /dev/null and b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Items/ДекорацияИнформацияЗагрузка/Picture.png differ diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl index 589743ba9..160821c93 100644 --- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl +++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/УправляемаяФорма/Module.bsl @@ -76,9 +76,14 @@ КонецЕсли; - //Установить видимость реквизитов формы - УстановитьДоступность(); - + УстановитьДоступностьКомандОтладки(); + + #Если ВебКлиент Тогда + Элементы.СтраницыОтладкиВыгрузки.ТекущаяСтраница = Элементы.СтраницыОтладкиВыгрузки.ПодчиненныеЭлементы.ГруппаВыгрузкаВебКлиент; + Элементы.СтраницыОтладкиЗагрузки.ТекущаяСтраница = Элементы.СтраницыОтладкиЗагрузки.ПодчиненныеЭлементы.ГруппаЗагрузкаВебКлиент; + Объект.ФлагРежимОтладкиОбработчиков = Ложь; + #КонецЕсли + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -182,7 +187,7 @@ ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); - ДиалогВыбораФайла.Заголовок = НСтр("ru = 'Выбор каталога информационной базы'"); + ДиалогВыбораФайла.Заголовок = НСтр("ru = 'Выберите каталог информационной базы'"); ДиалогВыбораФайла.Каталог = Объект.КаталогИнформационнойБазыДляПодключения; ДиалогВыбораФайла.ПроверятьСуществованиеФайла = Истина; @@ -226,13 +231,14 @@ &НаКлиенте Процедура ИмяФайлаПравилПриИзменении(Элемент) - Если ПустаяСтрока(ИмяФайлаПравил) Тогда + Файл = Новый Файл(ИмяФайлаПравил); + Если ПустаяСтрока(ИмяФайлаПравил) Или Не Файл.Существует() Тогда + СообщитьПользователю(НСтр("ru = 'Не найден файл правил обмена'"), "ИмяФайлаПравил"); Возврат; КонецЕсли; - Файл = Новый Файл(ИмяФайлаПравил); - Если Не Файл.Существует() Тогда - Возврат; + Если ИменаФайловПравилИОбменаСовпадают() Тогда + Возврат; КонецЕсли; ОтветПользователя = Вопрос(НСтр("ru = 'Загрузить правила обмена данными?'"), РежимДиалогаВопрос.ДаНет, 15, КодВозвратаДиалога.Да); @@ -244,7 +250,7 @@ Иначе - ПравилаЗагружены = Ложь; + УстановитьПризнакЗагрузкиПравил(Ложь); КонецЕсли; @@ -274,14 +280,14 @@ &НаКлиенте Процедура ФлагРежимОтладкиОбработчиковЗагрузкиПриИзменении(Элемент) - УстановитьДоступность(); + УстановитьДоступностьКомандОтладки(); КонецПроцедуры &НаКлиенте Процедура ФлагРежимОтладкиОбработчиковВыгрузкиПриИзменении(Элемент) - УстановитьДоступность(); + УстановитьДоступностьКомандОтладки(); КонецПроцедуры @@ -295,13 +301,13 @@ &НаКлиенте Процедура ИмяФайлаДанныхПриИзменении(Элемент) - Если Не ПустаяСтрока(Объект.ИмяФайлаПравилОбмена) - И Врег(СокрЛП(Объект.ИмяФайлаПравилОбмена)) = Врег(СокрЛП(Объект.ИмяФайлаОбмена)) Тогда - - Предупреждение(НСтр("ru = 'Файл правил обмена не может совпадать с файлом данных. Выберите другой файл для выгрузки данных.'")); - + Если ПустоеЗначениеРеквизита(ИмяФайлаДанных, "ИмяФайлаДанных", Элементы.ИмяФайлаДанных.Заголовок) + Или ИменаФайловПравилИОбменаСовпадают() Тогда + Возврат; КонецЕсли; + Объект.ИмяФайлаОбмена = ИмяФайлаДанных; + Файл = Новый Файл(Объект.ИмяФайлаОбмена); АрхивироватьФайл = (ВРЕГ(Файл.Расширение) = ВРЕГ(".zip")); @@ -314,8 +320,7 @@ ТипБазы.ТекущаяСтраница = ?(Объект.ТипИнформационнойБазыДляПодключения, ТипБазы.ПодчиненныеЭлементы.ФайловаяБаза, - ТипБазы.ПодчиненныеЭлементы.БазаНаСервере - ); + ТипБазы.ПодчиненныеЭлементы.БазаНаСервере); КонецПроцедуры @@ -416,14 +421,8 @@ &НаКлиенте Процедура ТестПодключения(Команда) - РезультатПодключения = ВыполнитьПодключениеКИБПриемникуНаСервере(); + ВыполнитьПодключениеКИБПриемникуНаСервере(); - Если РезультатПодключения <> Неопределено Тогда - - Предупреждение(НСтр("ru = 'Подключение к информационной базе приемнику произошло успешно.'")); - - КонецЕсли; - КонецПроцедуры &НаКлиенте @@ -437,16 +436,6 @@ Возврат; КонецЕсли; - Иначе - - Файл = Новый Файл(Объект.ИмяФайлаОбмена); - - Если Не Файл.Существует() Тогда - - ОчиститьДанныеОФайлеДляЗагрузкиДанных(); - - КонецЕсли; - КонецЕсли; Попытка @@ -456,6 +445,7 @@ Исключение + СообщитьПользователю(НСтр("ru = 'Не удалось прочитать файл обмена.'")); ОчиститьДанныеОФайлеДляЗагрузкиДанных(); КонецПопытки; @@ -553,21 +543,7 @@ &НаКлиенте Процедура НастройкаОтладкиВыгрузки(Команда) - #Если ВебКлиент Тогда - Предупреждение(НСтр("ru = 'Возможности отладки недоступны при использовании Веб-клиента'")); - Возврат; - #КонецЕсли - - Если Не ПравилаЗагружены Тогда - - Предупреждение(НСтр("ru = 'Необходимо прочитать правила обмена'")); - Возврат; - - Иначе - - Объект.ИмяФайлаПравилОбмена = ИмяФайлаНаСервереИлиКлиенте(ИмяФайлаПравил, АдресФайлаПравилВХранилище); - - КонецЕсли; + Объект.ИмяФайлаПравилОбмена = ИмяФайлаНаСервереИлиКлиенте(ИмяФайлаПравил, АдресФайлаПравилВХранилище); ОткрытьФормуНастройкиОтладкиОбработчиков(Истина); @@ -608,25 +584,18 @@ &НаКлиенте Процедура НастройкаОтладкиЗагрузки(Команда) - #Если ВебКлиент Тогда - Предупреждение(НСтр("ru = 'Возможности отладки недоступны при использовании Веб-клиента'")); - Возврат; - #КонецЕсли - АдресФайлаОбменаВХранилище = ""; ИмяФайлаДляРасширения = ""; Если ЭтоКлиент Тогда - Предупреждение(НСтр("ru = 'Выберите файл обмена данными.'")); Если Не ПоместитьФайл(АдресФайлаОбменаВХранилище, "Файл обмена",ИмяФайлаДляРасширения,,УникальныйИдентификатор) Тогда Возврат; КонецЕсли; Иначе - Если ПустаяСтрока(ИмяФайлаОбмена) Тогда - Предупреждение(НСтр("ru = 'Не задан файл обмена данными.'")); + Если ПустоеЗначениеРеквизита(ИмяФайлаОбмена, "ИмяФайлаОбмена", Элементы.ИмяФайлаОбмена.Заголовок) Тогда Возврат; КонецЕсли; @@ -661,7 +630,6 @@ &НаКлиенте Процедура ПрочитатьПравилаОбмена(Команда) - АдресФайлаПравилВХранилище = ""; ИмяФайлаДляРасширения = ""; Если ЭтоКлиент Тогда @@ -672,25 +640,23 @@ Иначе - Если ПустаяСтрока(Объект.ИмяФайлаПравилОбмена) Тогда - Предупреждение(НСтр("ru = 'Выберите файл правил обмена.'")); + АдресФайлаПравилВХранилище = ""; + Если ПустоеЗначениеРеквизита(Объект.ИмяФайлаПравилОбмена, "ИмяФайлаПравил", Элементы.ИмяФайлаПравил.Заголовок) Тогда Возврат; КонецЕсли; КонецЕсли; - Объект.ФлагОшибки = Ложь; - Состояние(НСтр("ru = 'Выполняется чтение правил обмена. Пожалуйста, подождите...'")); ВыполнитьЗагрузкуПравилОбмена(АдресФайлаПравилВХранилище, ИмяфайлаДляРасширения); - Если Не Объект.ФлагОшибки Тогда + Если Объект.ФлагОшибки Тогда - ПравилаЗагружены = Истина; + УстановитьПризнакЗагрузкиПравил(Ложь); Иначе - ПравилаЗагружены = Ложь; + УстановитьПризнакЗагрузкиПравил(Истина); КонецЕсли; @@ -737,15 +703,6 @@ КонецПроцедуры -&НаКлиенте -Процедура УстановитьДоступность() - - //Доступность кнопок настройки отладки обработчиков - Элементы.НастройкаОтладкиВыгрузки.Доступность = Объект.ФлагРежимОтладкиОбработчиков; - Элементы.НастройкаОтладкиЗагрузки.Доступность = Объект.ФлагРежимОтладкиОбработчиков; - -КонецПроцедуры - &НаКлиенте Процедура АрхивироватьФайлПриИзмененииЗначения() @@ -778,6 +735,23 @@ КонецПроцедуры +&НаКлиенте +Функция ИменаФайловПравилИОбменаСовпадают() + + Если Врег(СокрЛП(Объект.ИмяФайлаПравилОбмена)) = Врег(СокрЛП(ИмяФайлаДанных)) Тогда + + СообщитьПользователю(НСтр("ru = 'Файл правил обмена не может совпадать с файлом данных. + |Выберите другой файл для выгрузки данных.'")); + Возврат Истина; + + Иначе + + Возврат Ложь; + + КонецЕсли; + +КонецФункции + // Заполняет дерево метаданных, доступных для удаления. &НаСервере Процедура ЗаполнитьСписокТиповДоступныхДляУдаления() @@ -868,15 +842,14 @@ ЗагрузитьПравилаОбменаИПараметрыНаСервере(АдресФайлаПравилВХранилище, ИмяФайлаДляРасширения); - Если Не Объект.ФлагОшибки Тогда + Если Объект.ФлагОшибки Тогда - ПравилаЗагружены = Истина; - - РазвернутьСтрокиДерева(Объект.ТаблицаПравилВыгрузки, Элементы.ТаблицаПравилВыгрузки, "Включить"); + УстановитьПризнакЗагрузкиПравил(Ложь); Иначе - ПравилаЗагружены = Ложь; + УстановитьПризнакЗагрузкиПравил(Истина); + РазвернутьСтрокиДерева(Объект.ТаблицаПравилВыгрузки, Элементы.ТаблицаПравилВыгрузки, "Включить"); КонецЕсли; @@ -952,6 +925,7 @@ ОбъектДляСервера.ЗагрузитьПравилаОбмена(); ОбъектДляСервера.ИнициализироватьПервоначальныеЗначенияПараметров(); ОбъектДляСервера.Параметры.Очистить(); + Объект.ФлагОшибки = ОбъектДляСервера.ФлагОшибки; Если ЭтоКлиент Тогда @@ -1039,7 +1013,7 @@ Если РезультатПодключения <> Неопределено Тогда - Сообщить(НСтр("ru = 'Подключение к информационной базе приемнику произошло успешно.'")); + СообщитьПользователю(НСтр("ru = 'Подключение успешно установлено.'")); КонецЕсли; @@ -1136,7 +1110,7 @@ Если Не ФайлНаСервере.Существует() Тогда - Сообщить(НСтр("ru = 'Не найден файл обмена на сервере.'")); + СообщитьПользователю(НСтр("ru = 'Не найден файл обмена на сервере.'"), "ИмяФайлаОбмена"); Возврат; КонецЕсли; @@ -1256,15 +1230,13 @@ Если ЭтоКлиент Тогда - Предупреждение(НСтр("ru = 'Выберите файл обмена данными.'")); Если Не ПоместитьФайл(АдресФайла, "Файл обмена", ИмяФайлаДляРасширения,,УникальныйИдентификатор) Тогда Возврат; КонецЕсли; Иначе - Если ПустаяСтрока(ИмяФайлаОбмена) Тогда - Предупреждение(НСтр("ru = 'Выберите файл обмена данными на сервере.'")); + Если ПустоеЗначениеРеквизита(ИмяФайлаОбмена, "ИмяФайлаОбмена", Элементы.ИмяФайлаОбмена.Заголовок) Тогда Возврат; КонецЕсли; @@ -1310,13 +1282,15 @@ ЗначениеВРеквизитФормы(ОбъектДляСервера, "Объект"); ПравилаЗагружены = Ложь; + Элементы.ФормаВыполнитьВыгрузку.Доступность = Ложь; + Элементы.НадписьПояснениеВыгрузки.Видимость = Истина; + Элементы.ГруппаВыгрузкаОтладкаДоступна.Доступность = Ложь; КонецПроцедуры &НаСервере Функция ИмяФайлаНаСервереИлиКлиенте(ИмяРеквизита ,Знач АдресФайла = "", Знач ИмяФайлаДляРасширения = ".xml", - СоздатьНовый = Ложь, ПроверятьСуществование = Истина - ) + СоздатьНовый = Ложь, ПроверятьСуществование = Истина) ИмяФайла = Неопределено; @@ -1333,7 +1307,7 @@ Иначе Расширение = РасширениеФайла(ИмяФайлаДляРасширения); - ДвоичныеДанные = ПолучитьИзВременногоХранилища (АдресФайла); + ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресФайла); АдресНаСервере = ПолучитьИмяВременногоФайла(Расширение); ДвоичныеДанные.Записать(АдресНаСервере); ИмяФайла = АдресНаСервере; @@ -1346,7 +1320,7 @@ Если Не ФайлНаСервере.Существует() И ПроверятьСуществование Тогда - Сообщить(НСтр("ru = 'Указанный файл не существует.'")); + СообщитьПользователю(НСтр("ru = 'Указанный файл не существует.'")); Иначе @@ -1393,23 +1367,13 @@ &НаКлиенте Процедура ВыполнитьВыгрузкуИзФормы() - Если Не ПравилаЗагружены Тогда - - Предупреждение(НСтр("ru = 'Необходимо прочитать правила обмена'")); - Возврат; - - КонецЕсли; - // запомним файл правил и файл выгрузки ДобавитьСтрокуКСпискуВыбора(Элементы.ИмяФайлаПравил.СписокВыбора, ИмяФайлаПравил, ПравилаОбмена); Если НЕ Объект.НепосредственноеЧтениеВИБПриемнике и Не ЭтоКлиент Тогда - Если Врег(СокрЛП(Объект.ИмяФайлаПравилОбмена)) = Врег(СокрЛП(Объект.ИмяФайлаОбмена)) Тогда - - Предупреждение(НСтр("ru = 'Файл правил обмена не может совпадать с файлом данных. Выберите другой файл для выгрузки данных.'")); + Если ИменаФайловПравилИОбменаСовпадают() Тогда Возврат; - КонецЕсли; ДобавитьСтрокуКСпискуВыбора(Элементы.ИмяФайлаДанных.СписокВыбора, ИмяФайлаДанных, ВыгрузкаДанныхВФайл); @@ -1449,7 +1413,7 @@ Если ИмяВременногоФайлаДанных = Неопределено Тогда Возврат Неопределено; - Сообщить(НСтр("ru = 'Не определен файл данных'")); + СообщитьПользователю(НСтр("ru = 'Не определен файл данных'")); Иначе @@ -1473,7 +1437,7 @@ Если Не Файл.Существует() Тогда - Сообщить(НСтр("ru = 'Файл внешней обработки отладчиков событий не существует на сервере'")); + СообщитьПользователю(НСтр("ru = 'Файл внешней обработки отладчиков событий не существует на сервере'")); Возврат Неопределено; КонецЕсли; @@ -1482,7 +1446,7 @@ Если Отказ Тогда - Сообщить(НСтр("ru = 'Не удалось выгрузить обработчики событий'")); + СообщитьПользователю(НСтр("ru = 'Не удалось выгрузить обработчики событий'")); Возврат ""; КонецЕсли; @@ -1524,6 +1488,14 @@ КонецФункции +&НаКлиенте +Процедура УстановитьДоступностьКомандОтладки(); + + Элементы.НастройкаОтладкиЗагрузки.Доступность = Объект.ФлагРежимОтладкиОбработчиков; + Элементы.НастройкаОтладкиВыгрузки.Доступность = Объект.ФлагРежимОтладкиОбработчиков; + +КонецПроцедуры + // Изменяет дерево ПВД в соответствии с деревом на форме. // &НаСервере @@ -1564,8 +1536,7 @@ ПараметрыВыгрузки.ТекущаяСтраница = ?(ПрямаяВыгрузка = 0, ПараметрыВыгрузки.ПодчиненныеЭлементы.ВыгрузкаВФайл, - ПараметрыВыгрузки.ПодчиненныеЭлементы.ВыгрузкаВИБПриемник - ); + ПараметрыВыгрузки.ПодчиненныеЭлементы.ВыгрузкаВИБПриемник); Объект.НепосредственноеЧтениеВИБПриемнике = ?(ПрямаяВыгрузка = 1, Истина, Ложь); @@ -1624,7 +1595,7 @@ Элементы.ИмяФайлаДанных.Видимость = Не ЭтоКлиент; Элементы.ИмяФайлаОбмена.Видимость = Не ЭтоКлиент; - ПравилаЗагружены = Ложь; + УстановитьПризнакЗагрузкиПравил(Ложь); КонецПроцедуры @@ -1680,5 +1651,42 @@ КонецФункции +&НаКлиенте +Функция ПустоеЗначениеРеквизита(Реквизит, ПутьКДанным, Заголовок) + + Если ПустаяСтрока(Реквизит) Тогда + + ТекстСообщения = Нстр("ru = 'Поле ""%1"" не заполнено'"); + ТекстСообщения = СтрЗаменить(ТекстСообщения, "%1", Заголовок); + + СообщитьПользователю(ТекстСообщения, ПутьКДанным); + + Возврат Истина; + + Иначе + + Возврат Ложь; + + КонецЕсли; + +КонецФункции +&НаКлиенте +Процедура УстановитьПризнакЗагрузкиПравил(Признак) + + ПравилаЗагружены = Признак; + Элементы.ФормаВыполнитьВыгрузку.Доступность = Признак; + Элементы.НадписьПояснениеВыгрузки.Видимость = Не Признак; + Элементы.ГруппаВыгрузкаОтладкаДоступна.Доступность = Признак; + +КонецПроцедуры +&НаКлиентеНаСервереБезКонтекста +Процедура СообщитьПользователю(Текст, ПутьКДанным = "") + + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = Текст; + Сообщение.ПутьКДанным = ПутьКДанным; + Сообщение.Сообщить(); + +КонецПроцедуры \ No newline at end of file diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/Форма/Form.oform b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/Форма/Form.oform index c07391208..76beb039e 100644 Binary files a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/Форма/Form.oform and b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/Форма/Form.oform differ diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/ФормаНастройкиОтладкиОбработчиков/Form.oform b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/ФормаНастройкиОтладкиОбработчиков/Form.oform index 5d72c0f01..277446808 100644 Binary files a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/ФормаНастройкиОтладкиОбработчиков/Form.oform and b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/ФормаНастройкиОтладкиОбработчиков/Form.oform differ diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/ФормаРедактораТекстовогоДокумента/Form.oform b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/ФормаРедактораТекстовогоДокумента/Form.oform index b9ff198c9..0522c4d79 100644 Binary files a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/ФормаРедактораТекстовогоДокумента/Form.oform and b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Forms/ФормаРедактораТекстовогоДокумента/Form.oform differ diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Help/ru.html b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Help/ru.html index 54157d8b2..fbb75cb50 100644 --- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Help/ru.html +++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/Help/ru.html @@ -1,4 +1,4 @@ - +

            Обработка "Универсальный обмен данными в формате XML" предназначена для загрузки и выгрузки данных в файл из любой конфигурации, реализованной на платформе 1С:Предприятие 8.

            Режим работы

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

            diff --git a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl index 92cb30d5d..1df1a8a9c 100644 --- a/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl +++ b/SSL/src/DataProcessors/УниверсальныйОбменДаннымиXML/ObjectModule.bsl @@ -6016,8 +6016,7 @@ НппСсылки = 0, ИзвестнаяСсылкаУникальногоИдентификатора = Неопределено, ПараметрыОбъекта = Неопределено, - ИмяПКО = "" - ) + ИмяПКО = "") ПоискПоДатеНаРавенство = Ложь; @@ -6612,7 +6611,7 @@ Если Движения.Количество()=0 Тогда Движения.Прочитать(); КонецЕсли; - + Если Очистить И Движения.Количество() <> 0 Тогда @@ -8311,10 +8310,7 @@ // // Переменные-заглушки для поддержки механизма отладки кода обработчиков событий // (поддержка интерфейса процедуры-обертки обработчика). - Перем ТипПриемника; - Перем Пусто; - Перем Выражение; - Перем НеЗамещать; + Перем ТипПриемника, Пусто, Выражение, НеЗамещать, УзелСвойства, ПКОСвойств; // Инициализация значения Значение = Неопределено; @@ -8918,7 +8914,7 @@ // Обработчик ПередВыгрузкой - Если ПКС.ЕстьОбработчикПередВыгрузкой Тогда + Если ПКС.ЕстьОбработчикПередВыгрузкой Тогда Отказ = Ложь; @@ -9361,7 +9357,7 @@ // Обработчик ПередВыгрузкой - Если ПКО.ЕстьОбработчикПередВыгрузкой Тогда + Если ПКО.ЕстьОбработчикПередВыгрузкой Тогда Попытка @@ -9386,8 +9382,8 @@ КонецЕсли; - // Возможно такие данные уже выгружались - Если Не ВсеОбъектыВыгружены Тогда + // Возможно такие данные уже выгружались + Если Не ВсеОбъектыВыгружены Тогда Нпп = 0; @@ -9459,12 +9455,12 @@ Если СтруктураСвойств <> Неопределено И КоличествоЭлементовСоответствияЗначений > 0 И СтруктураСвойств.ВозможенПоискПоПредопределенным Тогда - - Попытка + + Если ЭтоПлатформа83БезРежимаСовместимости() Тогда + ИмяПредопределенногоИсточник = ИмяПредопределенного(Источник); + Иначе ИмяПредопределенногоИсточник = СтруктураСвойств.Менеджер.ПолучитьИмяПредопределенного(Источник); - Исключение - ИмяПредопределенногоИсточник = ""; - КонецПопытки; + КонецЕсли; Иначе @@ -9513,7 +9509,7 @@ КонецЕсли; - КонецЕсли; + КонецЕсли; КонецЕсли; @@ -9601,7 +9597,7 @@ КонецЕсли; - Если Приемник = Неопределено Тогда + Если Приемник = Неопределено Тогда Приемник = СоздатьУзел("Объект"); @@ -9849,7 +9845,7 @@ // Глобальный обработчик ПередВыгрузкойОбъекта - Если ЕстьГлобальныйОбработчикПередВыгрузкойОбъекта Тогда + Если ЕстьГлобальныйОбработчикПередВыгрузкойОбъекта Тогда Попытка @@ -10490,7 +10486,7 @@ Выборка = ПолучитьВыборкуДляВыгрузкиПоПроизвольномуАлгоритму(ВыборкаДанных); - Если Выборка <> Неопределено Тогда + Если Выборка <> Неопределено Тогда Пока Выборка.Следующий() Цикл @@ -11956,7 +11952,7 @@ // Выход ИначеЕсли (ИмяУзла = "ПравилаОбмена") И (ПравилаОбмена.ТипУзла = одТипУзлаXML_КонецЭлемента) Тогда - Если РежимОбмена <> "Загрузка" Тогда + Если РежимОбмена <> "Загрузка" Тогда ПравилаОбмена.Закрыть(); КонецЕсли; Прервать; @@ -12549,19 +12545,19 @@ #КонецЕсли ИмяИсходногоФайлаОбмена = ИмяФайлаОбмена; - Если АрхивироватьФайл Тогда + Если АрхивироватьФайл Тогда ИмяФайлаОбмена = СтрЗаменить(ИмяФайлаОбмена, ".xml", ".zip"); КонецЕсли; Архиватор = Новый ЗаписьZipФайла(ИмяФайлаОбмена, ПарольДляСжатияФайлаОбмена, "Файл обмена данными"); Архиватор.Добавить(ИмяИсходногоФайлаОбмена); - Архиватор.Записать(); + Архиватор.Записать(); УдалитьФайлы(ИмяИсходногоФайлаОбмена); - Исключение + Исключение - КонецПопытки; + КонецПопытки; КонецПроцедуры @@ -12683,7 +12679,7 @@ УзелПараметра = СоздатьУзел("ЗначениеПараметра"); УстановитьАтрибут(УзелПараметра, "Имя", Имя); - УстановитьАтрибут(УзелПараметра, "Тип", Строка(ТипЗнч(ИсходноеЗначениеПараметра))); + УстановитьАтрибут(УзелПараметра, "Тип", одТипЗначенияСтрокой(ИсходноеЗначениеПараметра)); ЭтоNULL = Ложь; Пусто = одПустое(ИсходноеЗначениеПараметра, ЭтоNULL); @@ -14216,6 +14212,42 @@ КонецФункции + +// Возвращает Истина, если конфигурация запущена под управлением платформы 1С:Предприятие 8.3 без использования режима совместимости +// с версией 8.3.2 или более ранней. +// +Функция ЭтоПлатформа83БезРежимаСовместимости() + + Информация = Новый СистемнаяИнформация; + Возврат Лев(Информация.ВерсияПриложения, 3) = "8.3" + И (Метаданные.РежимСовместимости = Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать + Или (Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_1 + И Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_2_13 + И Вычислить("Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_2_16") + И Вычислить("Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_3_1") + И Вычислить("Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.Версия8_3_2"))); + +КонецФункции + +Функция ИмяПредопределенного(Ссылка) + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Ссылка", Ссылка); + Запрос.Текст = + "ВЫБРАТЬ + | ИмяПредопределенныхДанных Как ИмяПредопределенныхДанных + |ИЗ + | " + Ссылка.Метаданные().ПолноеИмя() + " КАК ПсевдонимЗаданнойТаблицы + |ГДЕ + | ПсевдонимЗаданнойТаблицы.Ссылка = &Ссылка + |"; + Выборка = Запрос.Выполнить().Выбрать(); + Выборка.Следующий(); + + Возврат Выборка.ИмяПредопределенныхДанных; + +КонецФункции + //////////////////////////////////////////////////////////////////////////////// // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ @@ -14224,4 +14256,4 @@ ИнициализацияСтруктурыИменОбработчиков(); -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Form.form b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Form.form index 5feaa6fc0..cfa12fd22 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Form.form +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Form.form @@ -17,7 +17,7 @@ ГруппаУстановкаПериодаРассчитанныхИтогов 278 - УстановитьПериодРасчитанныхИтогов + УстановитьПериодРассчитанныхИтогов 219 true true @@ -26,7 +26,7 @@ false - УстановитьПериодРасчитанныхИтоговРасширеннаяПодсказка + УстановитьПериодРассчитанныхИтоговРасширеннаяПодсказка 334 Label true @@ -36,7 +36,7 @@ UsualButton - Form.Command.УстановитьПериодРасчитанныхИтогов + Form.Command.УстановитьПериодРассчитанныхИтогов Normal Auto 25 @@ -3153,6 +3153,10 @@ Right true + + ChoiceProcessing + ОбработкаВыбора + OnLoadDataFromSettingsAtServer ПриЗагрузкеДанныхИзНастроекНаСервере @@ -4349,7 +4353,7 @@ Auto
            - УстановитьПериодРасчитанныхИтогов + УстановитьПериодРассчитанныхИтогов <key>ru</key> <value>Установить период рассчитанных итогов</value> @@ -4364,7 +4368,7 @@ </use> <action xsi:type="form:FormCommandHandlerContainer"> <handler> - <name>УстановитьПериодРасчитанныхИтогов</name> + <name>УстановитьПериодРассчитанныхИтогов</name> </handler> </action> <currentRowUse>Auto</currentRowUse> diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Module.bsl b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Module.bsl index 0ac53f066..2d7f7b3de 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ОсновнаяФорма/Module.bsl @@ -1,3 +1,6 @@ +&НаКлиенте +Перем КонтекстВыбора; + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -27,7 +30,7 @@ Если СписокИтогов.Количество() = 0 Тогда Элементы.ГруппаИтогов.Доступность = Ложь; - Элементы.УстановитьПериодРасчитанныхИтогов.Доступность = Ложь; + Элементы.УстановитьПериодРассчитанныхИтогов.Доступность = Ложь; Элементы.ВключитьИспользованиеИтогов.Доступность = Ложь; КонецЕсли; @@ -46,8 +49,7 @@ Элементы.ОписаниеУстановкиПериода.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( Элементы.ОписаниеУстановкиПериода.Заголовок, Формат(ОкончаниеПериода(ДобавитьМесяц(РассчитатьИтогиНа, -1)), "DLF=D"), - Формат(ОкончаниеПериода(РассчитатьИтогиНа), "DLF=D") - ); + Формат(ОкончаниеПериода(РассчитатьИтогиНа), "DLF=D")); КонецПроцедуры @@ -56,6 +58,77 @@ УстановитьРасширенныйРежим(); КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.УправлениеИтогамиИАгрегатами.Форма.ФормаВыбораПериода") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + ПараметрыИтогов = Новый Структура; + ПараметрыИтогов.Вставить("ОбрабатыватьЗаголовок", НСтр("ru='Установка периода рассчитанных итогов ...'")); + ПараметрыИтогов.Вставить("ПослеПроцесса", НСтр("ru='Установка периода рассчитанных итогов завершена'")); + ПараметрыИтогов.Вставить("Действие", "УстановитьПериодИтогов"); + ПараметрыИтогов.Вставить("МассивСтрок", Элементы.СписокИтогов.ВыделенныеСтроки); + ПараметрыИтогов.Вставить("Поле", "ПериодИтогов"); + ПараметрыИтогов.Вставить("Значение1", ВыбранноеЗначение.ПериодДляРегистровНакопления); + ПараметрыИтогов.Вставить("Значение2", ВыбранноеЗначение.ПериодДляРегистровБухгалтерии); + ПараметрыИтогов.Вставить("ТекстСообщенияОбОшибке", НСтр("ru='Ошибка установки периода рассчитанных итогов.'")); + + УправлениеИтогами(ПараметрыИтогов); + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Обработка.УправлениеИтогамиИАгрегатами.Форма.ФормаПараметровПерестроения") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + Если КонтекстВыбора = "ПерестроитьАгрегаты" Тогда + + ОтносительныйРазмер = ВыбранноеЗначение.ОтносительныйРазмер; + МинимальныйЭффект = ВыбранноеЗначение.МинимальныйЭффект; + + ПараметрыИтогов = Новый Структура; + ПараметрыИтогов.Вставить("ОбрабатыватьЗаголовок", НСтр("ru='Перестроение агрегатов ...'")); + ПараметрыИтогов.Вставить("ПослеПроцесса", НСтр("ru='Перестроение агрегатов завершено'")); + ПараметрыИтогов.Вставить("Действие", "ПерестроитьАгрегаты"); + ПараметрыИтогов.Вставить("МассивСтрок", Элементы.АгрегатыПоРегистрам.ВыделенныеСтроки); + ПараметрыИтогов.Вставить("Поле", "Наименование"); + ПараметрыИтогов.Вставить("Значение1", ВыбранноеЗначение.ОтносительныйРазмер); + ПараметрыИтогов.Вставить("Значение2", ВыбранноеЗначение.МинимальныйЭффект); + ПараметрыИтогов.Вставить("ТекстСообщенияОбОшибке", НСтр("ru='Ошибка перестроения агрегатов.'")); + + УправлениеАгрегатом(ПараметрыИтогов); + + ИначеЕсли КонтекстВыбора = "АгрегатыОптимальные" Тогда + + ОптимальныйОтносительныйРазмер = ВыбранноеЗначение.ОтносительныйРазмер; + ПутьКОптимальнымАгрегатам = ВыборПутиККаталогу(ПутьКОптимальнымАгрегатам); + + Если ПустаяСтрока(ПутьКОптимальнымАгрегатам) Тогда + Возврат; + КонецЕсли; + + ПараметрыИтогов = Новый Структура; + ПараметрыИтогов.Вставить("ОбрабатыватьЗаголовок", НСтр("ru='Получение списка оптимальных агрегатов ...'")); + ПараметрыИтогов.Вставить("ПослеПроцесса", НСтр("ru='Получение списка оптимальных агрегатов завершено'")); + ПараметрыИтогов.Вставить("Действие", "ПолучитьОптимальныеАгрегаты"); + ПараметрыИтогов.Вставить("МассивСтрок", Элементы.АгрегатыПоРегистрам.ВыделенныеСтроки); + ПараметрыИтогов.Вставить("Поле", "Наименование"); + ПараметрыИтогов.Вставить("Значение1", ВыбранноеЗначение.ОтносительныйРазмер); + ПараметрыИтогов.Вставить("Значение2", Неопределено); + ПараметрыИтогов.Вставить("ТекстСообщенияОбОшибке", НСтр("ru='Ошибка получения списка оптимальных агрегатов.'")); + + УправлениеАгрегатом(ПараметрыИтогов); + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -196,23 +269,7 @@ ПараметрыФормы.РегБухгалтерии = ПараметрыФормы.РегБухгалтерии ИЛИ ИнформацияПоРегистру.Тип = 1; КонецЦикла; - Результат = ОткрытьФормуМодально("Обработка.УправлениеИтогамиИАгрегатами.Форма.ФормаВыбораПериода", ПараметрыФормы); - - Если ТипЗнч(Результат) <> Тип("Структура") Тогда - Возврат; - КонецЕсли; - - ПараметрыИтогов = Новый Структура; - ПараметрыИтогов.Вставить("ОбрабатыватьЗаголовок", НСтр("ru='Установка периода рассчитанных итогов ...'")); - ПараметрыИтогов.Вставить("ПослеПроцесса", НСтр("ru='Установка периода рассчитанных итогов завершена'")); - ПараметрыИтогов.Вставить("Действие", "УстановитьПериодИтогов"); - ПараметрыИтогов.Вставить("МассивСтрок", Элементы.СписокИтогов.ВыделенныеСтроки); - ПараметрыИтогов.Вставить("Поле", "ПериодИтогов"); - ПараметрыИтогов.Вставить("Значение1", Результат.ПериодДляРегНакоп); - ПараметрыИтогов.Вставить("Значение2", Результат.ПериодДляРегБухг); - ПараметрыИтогов.Вставить("ТекстСообщенияОбОшибке", НСтр("ru='Ошибка установки периода рассчитанных итогов.'")); - - УправлениеИтогами(ПараметрыИтогов); + ОткрытьФорму("Обработка.УправлениеИтогамиИАгрегатами.Форма.ФормаВыбораПериода", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -352,23 +409,14 @@ &НаКлиенте Процедура ПерестроитьАгрегаты(Команда) - Результат = ПолучитьПараметрыПерестроения(Истина); + КонтекстВыбора = "ПерестроитьАгрегаты"; - Если ТипЗнч(Результат) <> Тип("Структура") Тогда - Возврат; - КонецЕсли; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОтносительныйРазмер", ОтносительныйРазмер); + ПараметрыФормы.Вставить("МинимальныйЭффект", МинимальныйЭффект); + ПараметрыФормы.Вставить("РежимПерестроения", Истина); - ПараметрыИтогов = Новый Структура; - ПараметрыИтогов.Вставить("ОбрабатыватьЗаголовок", НСтр("ru='Перестроение агрегатов ...'")); - ПараметрыИтогов.Вставить("ПослеПроцесса", НСтр("ru='Перестроение агрегатов завершено'")); - ПараметрыИтогов.Вставить("Действие", "ПерестроитьАгрегаты"); - ПараметрыИтогов.Вставить("МассивСтрок", Элементы.АгрегатыПоРегистрам.ВыделенныеСтроки); - ПараметрыИтогов.Вставить("Поле", "Наименование"); - ПараметрыИтогов.Вставить("Значение1", Результат.ОтносительныйРазмер); - ПараметрыИтогов.Вставить("Значение2", Результат.МинимальныйЭффект); - ПараметрыИтогов.Вставить("ТекстСообщенияОбОшибке", НСтр("ru='Ошибка перестроения агрегатов.'")); - - УправлениеАгрегатом(ПараметрыИтогов); + ОткрытьФорму("Обработка.УправлениеИтогамиИАгрегатами.Форма.ФормаПараметровПерестроения", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -418,34 +466,19 @@ &НаКлиенте Процедура АгрегатыОптимальные(Команда) - Результат = ПолучитьПараметрыПерестроения(Ложь); + КонтекстВыбора = "АгрегатыОптимальные"; - Если ТипЗнч(Результат) <> Тип("Структура") Тогда - Возврат; - КонецЕсли; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОтносительныйРазмер", ОптимальныйОтносительныйРазмер); + ПараметрыФормы.Вставить("МинимальныйЭффект", 0); + ПараметрыФормы.Вставить("РежимПерестроения", Ложь); - ПутьКОптимальнымАгрегатам = ВыборПутиККаталогу(ПутьКОптимальнымАгрегатам); - - Если ПустаяСтрока(ПутьКОптимальнымАгрегатам) Тогда - Возврат; - КонецЕсли; - - ПараметрыИтогов = Новый Структура; - ПараметрыИтогов.Вставить("ОбрабатыватьЗаголовок", НСтр("ru='Получение списка оптимальных агрегатов ...'")); - ПараметрыИтогов.Вставить("ПослеПроцесса", НСтр("ru='Получение списка оптимальных агрегатов завершено'")); - ПараметрыИтогов.Вставить("Действие", "ПолучитьОптимальныеАгрегаты"); - ПараметрыИтогов.Вставить("МассивСтрок", Элементы.АгрегатыПоРегистрам.ВыделенныеСтроки); - ПараметрыИтогов.Вставить("Поле", "Наименование"); - ПараметрыИтогов.Вставить("Значение1", Результат.ОтносительныйРазмер); - ПараметрыИтогов.Вставить("Значение2", Неопределено); - ПараметрыИтогов.Вставить("ТекстСообщенияОбОшибке", НСтр("ru='Ошибка получения списка оптимальных агрегатов.'")); - - УправлениеАгрегатом(ПараметрыИтогов); + ОткрытьФорму("Обработка.УправлениеИтогамиИАгрегатами.Форма.ФормаПараметровПерестроения", ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте -Процедура УстановитьПериодРасчитанныхИтогов(Команда) +Процедура УстановитьПериодРассчитанныхИтогов(Команда) Результат = Истина; ОчиститьСообщения(); @@ -737,7 +770,7 @@ Если СтрокаТаблицы.ОборотныйРег Тогда СтрокаТаблицы.ИспользоватьТекущиеИтоги = Регистр.ПолучитьИспользованиеТекущихИтогов(); - СтрокаТаблицы.ПериодИтогов = Регистр.ПолучитьПериодРассчитанныхИтогов(); + СтрокаТаблицы.ПериодИтогов = УправлениеИтогамиИАгрегатамиСлужебный.ПолучитьПериодРассчитанныхИтогов(Регистр); СтрокаТаблицы.АгрегатыИтоги = 2; Иначе @@ -847,7 +880,7 @@ Дата = Значение2; КонецЕсли; - Менеджер.УстановитьПериодРассчитанныхИтогов(Дата); + УправлениеИтогамиИАгрегатамиСлужебный.УстановитьПериодРассчитанныхИтогов(Менеджер, Дата); ИначеЕсли ВРег(Действие) = ВРег("ПересчитатьИтоги") Тогда Менеджер.ПересчитатьИтоги(); @@ -938,7 +971,7 @@ ОптимальныеАгрегаты = МенеджерРегистра.ОпределитьОптимальныеАгрегаты(ЗначениеДействия1); ЗначениеДействия1 = Ложь; - НайденыеАгрегаты = Новый Соответствие; + НайденныеАгрегаты = Новый Соответствие; МетаданныеАгрегаты = МетаданныеРегистра.Агрегаты; Для Индекс1=0 По ОптимальныеАгрегаты.Агрегаты.ВГраница() Цикл @@ -948,11 +981,11 @@ Если ОптимальныеАгрегаты.Агрегаты[Индекс1].Периодичность = МетаданныеАгрегаты[Индекс2].Периодичность - И НайденыеАгрегаты[Индекс2] = Неопределено + И НайденныеАгрегаты[Индекс2] = Неопределено И ИзмеренияАгрегатовРавны(ОптимальныеАгрегаты.Агрегаты[Индекс1], МетаданныеАгрегаты[Индекс2]) Тогда - НайденыеАгрегаты.Вставить(Индекс2, Истина); + НайденныеАгрегаты.Вставить(Индекс2, Истина); ЗначениеДействия1 = Истина; Прервать; КонецЕсли; @@ -967,11 +1000,11 @@ Если ОптимальныеАгрегаты.Агрегаты[Индекс1].Периодичность = ПериодичностьАгрегатаРегистраНакопления.Авто - И НайденыеАгрегаты[Индекс2] = Неопределено + И НайденныеАгрегаты[Индекс2] = Неопределено И ИзмеренияАгрегатовРавны(ОптимальныеАгрегаты.Агрегаты[Индекс1], МетаданныеАгрегаты[Индекс2]) Тогда - НайденыеАгрегаты.Вставить(Индекс2, Истина); + НайденныеАгрегаты.Вставить(Индекс2, Истина); ЗначениеДействия1 = Истина; Прервать; КонецЕсли; @@ -1231,31 +1264,6 @@ КонецПроцедуры -&НаКлиенте -Функция ПолучитьПараметрыПерестроения(Знач РежимПерестроения) - - ПараметрыФормы = Новый Структура; - ПараметрыФормы.Вставить("ОтносительныйРазмер", ?(РежимПерестроения, ОтносительныйРазмер, ОптимальныйОтносительныйРазмер)); - ПараметрыФормы.Вставить("МинимальныйЭффект", ?(РежимПерестроения, МинимальныйЭффект, 0)); - ПараметрыФормы.Вставить("РежимПерестроения", РежимПерестроения); - - Результат = ОткрытьФормуМодально("Обработка.УправлениеИтогамиИАгрегатами.Форма.ФормаПараметровПерестроения", ПараметрыФормы); - - Если ТипЗнч(Результат) = Тип("Структура") Тогда - Если РежимПерестроения Тогда - ОтносительныйРазмер = Результат.ОтносительныйРазмер; - МинимальныйЭффект = Результат.МинимальныйЭффект; - Иначе - ОптимальныйОтносительныйРазмер = Результат.ОтносительныйРазмер; - КонецЕсли; - - Возврат Результат; - Иначе - Возврат Результат; - КонецЕсли; - -КонецФункции - &НаКлиенте Функция СохранитьОптимальныеНастройкиАгрегатов(Знач ИмяМетаданного, Знач АдресФайлаВоВременномХранилище, Знач Поле) @@ -1328,4 +1336,3 @@ Возврат Каталог; КонецФункции - diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Form.form b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Form.form index b9e978084..81435127e 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Form.form +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Form.form @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form"> <items xsi:type="form:FormField"> - <name>ПериодДляРегНакоп</name> + <name>ПериодДляРегистровНакопления</name> <id>10</id> <visible>true</visible> <enabled>true</enabled> @@ -9,14 +9,14 @@ <common>true</common> </userVisible> <dataPath xsi:type="form:DataPath"> - <segments>ПериодДляРегНакоп</segments> + <segments>ПериодДляРегистровНакопления</segments> </dataPath> <handlers> <event>OnChange</event> - <name>ПериодДляРегНакопПриИзменении</name> + <name>ПериодДляРегистровНакопленияПриИзменении</name> </handlers> <extendedTooltip> - <name>ПериодДляРегНакопРасширеннаяПодсказка</name> + <name>ПериодДляРегистровНакопленияРасширеннаяПодсказка</name> <id>15</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> @@ -26,7 +26,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>ПериодДляРегНакопКонтекстноеМеню</name> + <name>ПериодДляРегистровНакопленияКонтекстноеМеню</name> <id>11</id> <autoFill>true</autoFill> </contextMenu> @@ -45,7 +45,7 @@ </extInfo> </items> <items xsi:type="form:FormField"> - <name>ПериодДляРегБухг</name> + <name>ПериодДляРегистровБухгалтерии</name> <id>8</id> <visible>true</visible> <enabled>true</enabled> @@ -53,14 +53,14 @@ <common>true</common> </userVisible> <dataPath xsi:type="form:DataPath"> - <segments>ПериодДляРегБухг</segments> + <segments>ПериодДляРегистровБухгалтерии</segments> </dataPath> <handlers> <event>OnChange</event> - <name>ПериодДляРегБухгПриИзменении</name> + <name>ПериодДляРегистровБухгалтерииПриИзменении</name> </handlers> <extendedTooltip> - <name>ПериодДляРегБухгРасширеннаяПодсказка</name> + <name>ПериодДляРегистровБухгалтерииРасширеннаяПодсказка</name> <id>17</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> @@ -70,7 +70,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>ПериодДляРегБухгКонтекстноеМеню</name> + <name>ПериодДляРегистровБухгалтерииКонтекстноеМеню</name> <id>9</id> <autoFill>true</autoFill> </contextMenu> @@ -181,7 +181,7 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> <autoUrl>true</autoUrl> @@ -192,7 +192,7 @@ <showTitle>auto</showTitle> <showCloseButton>true</showCloseButton> <attributes> - <name>ПериодДляРегНакоп</name> + <name>ПериодДляРегистровНакопления</name> <title> <key>ru</key> <value>Период итогов для регистров накопления</value> @@ -212,7 +212,7 @@ </edit> </attributes> <attributes> - <name>ПериодДляРегБухг</name> + <name>ПериодДляРегистровБухгалтерии</name> <title> <key>ru</key> <value>Период итогов для регистров бухгалтерии</value> diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Help/ru.html b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Help/ru.html index 3aa02d4eb..555b60978 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Help/ru.html +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В данном диалоге можно ввести границы периода рассчитанных итогов для регистров накопления или бухгалтерии.</p> <p>По умолчанию предлагаются следующие даты для установки границы рассчитанных итогов:</p> <ul><li> diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Module.bsl b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Module.bsl index acd3ff2e7..f51064046 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаВыбораПериода/Module.bsl @@ -8,11 +8,11 @@ Возврат; КонецЕсли; - ПериодДляРегНакоп = КонецПериода(ДобавитьМесяц(ТекущаяДатаСеанса(), -1)); - ПериодДляРегБухг = КонецПериода(ТекущаяДатаСеанса()); + ПериодДляРегистровНакопления = КонецПериода(ДобавитьМесяц(ТекущаяДатаСеанса(), -1)); + ПериодДляРегистровБухгалтерии = КонецПериода(ТекущаяДатаСеанса()); - Элементы.ПериодДляРегБухг.Доступность = Параметры.РегБухгалтерии; - Элементы.ПериодДляРегНакоп.Доступность = Параметры.РегНакопления; + Элементы.ПериодДляРегистровБухгалтерии.Доступность = Параметры.РегБухгалтерии; + Элементы.ПериодДляРегистровНакопления.Доступность = Параметры.РегНакопления; КонецПроцедуры @@ -20,16 +20,16 @@ // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ &НаКлиенте -Процедура ПериодДляРегНакопПриИзменении(Элемент) +Процедура ПериодДляРегистровНакопленияПриИзменении(Элемент) - ПериодДляРегНакоп = КонецПериода(ПериодДляРегНакоп); + ПериодДляРегистровНакопления = КонецПериода(ПериодДляРегистровНакопления); КонецПроцедуры &НаКлиенте -Процедура ПериодДляРегБухгПриИзменении(Элемент) +Процедура ПериодДляРегистровБухгалтерииПриИзменении(Элемент) - ПериодДляРегБухг = КонецПериода(ПериодДляРегБухг); + ПериодДляРегистровБухгалтерии = КонецПериода(ПериодДляРегистровБухгалтерии); КонецПроцедуры @@ -39,12 +39,10 @@ &НаКлиенте Процедура ОК(Команда) - Результат = Новый Структура("ПериодДляРегНакоп, ПериодДляРегБухг"); + РезультатВыбора = Новый Структура("ПериодДляРегистровНакопления, ПериодДляРегистровБухгалтерии"); + ЗаполнитьЗначенияСвойств(РезультатВыбора, ЭтаФорма); - Результат.ПериодДляРегНакоп = ПериодДляРегНакоп; - Результат.ПериодДляРегБухг = ПериодДляРегБухг; - - Закрыть(Результат); + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Form.form b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Form.form index 708ad26fd..b6335efff 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Form.form +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Form.form @@ -152,7 +152,7 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoUrl>true</autoUrl> <group>Vertical</group> diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Help/ru.html b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Help/ru.html index 348a7c802..fa74305d1 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Help/ru.html +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В данной форме задаются параметры перестроения использования агрегатов и получения списка оптимальных агрегатов.</p> <ul><li> <div><strong>Максимальный относительный размер</strong> - максимальная сумма размеров агрегатов в процентах от таблицы движений. Если не указан или равен нулю, то нет ограничения размера агрегатов.</div> diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Module.bsl b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Module.bsl index 739cc7a04..0daad9e7e 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Forms/ФормаПараметровПерестроения/Module.bsl @@ -23,10 +23,9 @@ &НаКлиенте Процедура ОК(Команда) - Результат = Новый Структура("ОтносительныйРазмер, МинимальныйЭффект"); - Результат.ОтносительныйРазмер = ОтносительныйРазмер; - Результат.МинимальныйЭффект = МинимальныйЭффект; + РезультатВыбора = Новый Структура("ОтносительныйРазмер, МинимальныйЭффект"); + ЗаполнитьЗначенияСвойств(РезультатВыбора, ЭтаФорма); - Закрыть(Результат); + ОповеститьОВыборе(РезультатВыбора); КонецПроцедуры diff --git a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Help/ru.html b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Help/ru.html index 743d171ef..83c742003 100644 --- a/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Help/ru.html +++ b/SSL/src/DataProcessors/УправлениеИтогамиИАгрегатами/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Управление итогами включает в себя процедуры, связанные с итогами регистров накопления и бухгалтерии, а также агрегатами оборотных регистров накопления. Управление итогами разделяется на два режима:</p> <ul><li><strong><a href="#Simple">Частно используемые возможности</a></strong> - позволяют "одним нажатием" выполнить наиболее частые действия, возникающие при обслуживании системы. </li><li><strong><a href="#Full">Полные возможности</a></strong> - позволяет выполнять все операции как с одним регистром, так и с произвольным списком регистров.</li></ul><p>Для переключения режимов служит гиперссылка в правом нижнем углу формы. Форма запоминает режим открытия.</p> diff --git a/SSL/src/DataProcessors/УправлениеПолнотекстовымПоиском/Forms/Форма/Module.bsl b/SSL/src/DataProcessors/УправлениеПолнотекстовымПоиском/Forms/Форма/Module.bsl index ee7f2998e..f157ccf34 100644 --- a/SSL/src/DataProcessors/УправлениеПолнотекстовымПоиском/Forms/Форма/Module.bsl +++ b/SSL/src/DataProcessors/УправлениеПолнотекстовымПоиском/Forms/Форма/Module.bsl @@ -19,8 +19,7 @@ Процедура ОбновитьИндекс(Команда) Состояние( НСтр("ru = 'Идет обновление полнотекстового индекса... - |Пожалуйста, подождите.'") - ); + |Пожалуйста, подождите.'")); ОбновитьИндексСервер(); @@ -31,8 +30,7 @@ Процедура ОчиститьИндекс(Команда) Состояние( НСтр("ru = 'Идет очистка полнотекстового индекса... - |Пожалуйста, подождите.'") - ); + |Пожалуйста, подождите.'")); ОчиститьИндексСервер(); diff --git a/SSL/src/DataProcessors/УправлениеПолнотекстовымПоиском/Help/ru.html b/SSL/src/DataProcessors/УправлениеПолнотекстовымПоиском/Help/ru.html index bd5e89d55..a064b6ccb 100644 --- a/SSL/src/DataProcessors/УправлениеПолнотекстовымПоиском/Help/ru.html +++ b/SSL/src/DataProcessors/УправлениеПолнотекстовымПоиском/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Данная обработка позволяет управлять индексом полнотекстового поиска, обновлять и очищать его.<br>В клиент-серверном варианте обновление полнотекстового индекса выполняется автоматически.</p> <h2><a name="Команды">Команды:</a></h2> <p></p> diff --git a/SSL/src/DocumentJournals/Взаимодействия/Commands/ВзаимодействияПоКонтакту/CommandModule.bsl b/SSL/src/DocumentJournals/Взаимодействия/Commands/ВзаимодействияПоКонтакту/CommandModule.bsl index b39b74553..6d4b5190a 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Commands/ВзаимодействияПоКонтакту/CommandModule.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Commands/ВзаимодействияПоКонтакту/CommandModule.bsl @@ -19,7 +19,6 @@ ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Источник.КлючУникальности, - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DocumentJournals/Взаимодействия/Commands/ВзаимодействияПоПредмету/CommandModule.bsl b/SSL/src/DocumentJournals/Взаимодействия/Commands/ВзаимодействияПоПредмету/CommandModule.bsl index 2b6fd2ba0..e50886b51 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Commands/ВзаимодействияПоПредмету/CommandModule.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Commands/ВзаимодействияПоПредмету/CommandModule.bsl @@ -35,7 +35,6 @@ ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Источник.КлючУникальности, - ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/DocumentJournals/Взаимодействия/Commands/ЗапланироватьВстречу/CommandModule.bsl b/SSL/src/DocumentJournals/Взаимодействия/Commands/ЗапланироватьВстречу/CommandModule.bsl index fb1747ad7..f482daec4 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Commands/ЗапланироватьВстречу/CommandModule.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Commands/ЗапланироватьВстречу/CommandModule.bsl @@ -3,7 +3,6 @@ Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ВзаимодействияКлиент.СоздатьВзаимодействиеИлиПредмет( - "Документ.Встреча.ФормаОбъекта", ПараметрКоманды, ПараметрыВыполненияКоманды.Источник - ); + "Документ.Встреча.ФормаОбъекта", ПараметрКоманды, ПараметрыВыполненияКоманды.Источник); КонецПроцедуры diff --git a/SSL/src/DocumentJournals/Взаимодействия/Commands/НаписатьSMS/CommandModule.bsl b/SSL/src/DocumentJournals/Взаимодействия/Commands/НаписатьSMS/CommandModule.bsl new file mode 100644 index 000000000..a5a7201e0 --- /dev/null +++ b/SSL/src/DocumentJournals/Взаимодействия/Commands/НаписатьSMS/CommandModule.bsl @@ -0,0 +1,8 @@ + +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + + ВзаимодействияКлиент.СоздатьВзаимодействиеИлиПредмет( + "Документ.СообщениеSMS.ФормаОбъекта", ПараметрКоманды, ПараметрыВыполненияКоманды.Источник); + +КонецПроцедуры diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ПараметрыЭлектронногоПисьма/Form.form b/SSL/src/DocumentJournals/Взаимодействия/Forms/ПараметрыЭлектронногоПисьма/Form.form index eb286d0d3..cecedfb49 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ПараметрыЭлектронногоПисьма/Form.form +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ПараметрыЭлектронногоПисьма/Form.form @@ -519,7 +519,7 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoUrl>true</autoUrl> <group>Vertical</group> diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ПараметрыЭлектронногоПисьма/Module.bsl b/SSL/src/DocumentJournals/Взаимодействия/Forms/ПараметрыЭлектронногоПисьма/Module.bsl index 6c14e3982..2c8291b22 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ПараметрыЭлектронногоПисьма/Module.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ПараметрыЭлектронногоПисьма/Module.bsl @@ -3,12 +3,11 @@ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; - ЗаполнитьРеквзитыФормыИзПараметров(Параметры); + ЗаполнитьРеквизитыФормыИзПараметров(Параметры); УправлениеДоступностью(); КонецПроцедуры @@ -33,14 +32,22 @@ КонецЕсли; Если ТипПисьма = "ЭлектронноеПисьмоИсходящее" И ОтправленоПолучено = Дата(1,1,1) И Модифицированность Тогда - Закрыть(Новый Структура("УведомитьОДоставке, УведомитьОПрочтении, ВключатьТелоИсходногоПисьма,Папка", - УведомитьОДоставке, - УведомитьОПрочтении, - ВключатьТелоИсходногоПисьма)); + + РезультатВыбора = Новый Структура; + РезультатВыбора.Вставить("УведомитьОДоставке", УведомитьОДоставке); + РезультатВыбора.Вставить("УведомитьОПрочтении", УведомитьОПрочтении); + РезультатВыбора.Вставить("ВключатьТелоИсходногоПисьма", ВключатьТелоИсходногоПисьма); + РезультатВыбора.Вставить("Папка", Неопределено); + + Иначе - Закрыть(); + + РезультатВыбора = Неопределено; + КонецЕсли; + ОповеститьОВыборе(РезультатВыбора); + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -58,7 +65,7 @@ КонецПроцедуры &НаСервере -Процедура ЗаполнитьРеквзитыФормыИзПараметров(Параметры) +Процедура ЗаполнитьРеквизитыФормыИзПараметров(Параметры) ЗаполнитьРеквизитФормыИзПараметра(Параметры,"ВнутреннийНомер"); ЗаполнитьРеквизитФормыИзПараметра(Параметры,"ЗаголовкиИнтернета"); diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Form.form b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Form.form index 0e8c6830b..7db8d4f46 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Form.form +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Form.form @@ -25,7 +25,7 @@ </handlers> <extendedTooltip> <name>ТипВзаимодействияРасширеннаяПодсказка</name> - <id>416</id> + <id>417</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -102,6 +102,15 @@ <value>ЗапланированныеВзаимодействия</value> </value> </choiceList> + <choiceList> + <presentation> + <key>ru</key> + <value>Сообщения SMS</value> + </presentation> + <value xsi:type="core:StringValue"> + <value>СообщенияSMS</value> + </value> + </choiceList> <choiceList> <presentation> <key>ru</key> @@ -185,7 +194,7 @@ </handlers> <extendedTooltip> <name>СтатусРасширеннаяПодсказка</name> - <id>418</id> + <id>419</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -274,7 +283,7 @@ </handlers> <extendedTooltip> <name>ПользовательРасширеннаяПодсказка</name> - <id>420</id> + <id>421</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -313,7 +322,7 @@ </userVisible> <extendedTooltip> <name>ОтступРасширеннаяПодсказка</name> - <id>422</id> + <id>423</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -355,7 +364,7 @@ </handlers> <extendedTooltip> <name>СтрокаПоискаРасширеннаяПодсказка</name> - <id>423</id> + <id>424</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -401,7 +410,7 @@ <enableContentChange>true</enableContentChange> <extendedTooltip> <name>ГруппаФильтрыРасширеннаяПодсказка</name> - <id>415</id> + <id>416</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -440,7 +449,7 @@ </userVisible> <extendedTooltip> <name>УстановитьВариантНавигацииПоПредметуРасширеннаяПодсказка</name> - <id>429</id> + <id>430</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -466,7 +475,7 @@ </userVisible> <extendedTooltip> <name>УстановитьВариантНавигацииПоКонтактуРасширеннаяПодсказка</name> - <id>430</id> + <id>431</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -492,7 +501,7 @@ </userVisible> <extendedTooltip> <name>УстановитьВариантНавигацииПоЗакладкамРасширеннаяПодсказка</name> - <id>431</id> + <id>432</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -518,7 +527,7 @@ </userVisible> <extendedTooltip> <name>УстановитьВариантНавигацииПоПапкамРасширеннаяПодсказка</name> - <id>432</id> + <id>433</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -549,7 +558,7 @@ </toolTip> <extendedTooltip> <name>ВыборВариантаНавигацииРасширеннаяПодсказка</name> - <id>428</id> + <id>429</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -581,7 +590,7 @@ </toolTip> <extendedTooltip> <name>КоманднаяПанельВариантаНавигацииРасширеннаяПодсказка</name> - <id>427</id> + <id>428</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -641,7 +650,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>КонтактыПредставлениеРасширеннаяПодсказка</name> - <id>457</id> + <id>458</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -689,7 +698,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>КонтактыНомерКартинкиРасширеннаяПодсказка</name> - <id>459</id> + <id>460</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -731,7 +740,7 @@ <enableContentChange>true</enableContentChange> <extendedTooltip> <name>КонтактыГруппаРасширеннаяПодсказка</name> - <id>456</id> + <id>457</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -768,10 +777,10 @@ </handlers> <searchStringAddition> <name>КонтактыСтрокаПоиска</name> - <id>447</id> + <id>448</id> <extendedTooltip> <name>КонтактыСтрокаПоискаРасширеннаяПодсказка</name> - <id>449</id> + <id>450</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -781,7 +790,7 @@ </extendedTooltip> <contextMenu> <name>КонтактыСтрокаПоискаКонтекстноеМеню</name> - <id>448</id> + <id>449</id> <autoFill>true</autoFill> </contextMenu> <source>Контакты</source> @@ -791,10 +800,10 @@ </searchStringAddition> <viewStatusAddition> <name>КонтактыСостояниеПросмотра</name> - <id>450</id> + <id>451</id> <extendedTooltip> <name>КонтактыСостояниеПросмотраРасширеннаяПодсказка</name> - <id>452</id> + <id>453</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -804,7 +813,7 @@ </extendedTooltip> <contextMenu> <name>КонтактыСостояниеПросмотраКонтекстноеМеню</name> - <id>451</id> + <id>452</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -815,10 +824,10 @@ </viewStatusAddition> <searchControlAddition> <name>КонтактыУправлениеПоиском</name> - <id>453</id> + <id>454</id> <extendedTooltip> <name>КонтактыУправлениеПоискомРасширеннаяПодсказка</name> - <id>455</id> + <id>456</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -828,7 +837,7 @@ </extendedTooltip> <contextMenu> <name>КонтактыУправлениеПоискомКонтекстноеМеню</name> - <id>454</id> + <id>455</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -839,7 +848,7 @@ </searchControlAddition> <extendedTooltip> <name>КонтактыРасширеннаяПодсказка</name> - <id>446</id> + <id>447</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -863,7 +872,7 @@ </userVisible> <extendedTooltip> <name>КонтактыКонтекстноеМенюРассмотреноРасширеннаяПодсказка</name> - <id>436</id> + <id>437</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -889,7 +898,7 @@ </userVisible> <extendedTooltip> <name>КонтактыКонтекстноеМенюОтложитьРассмотрениеРасширеннаяПодсказка</name> - <id>437</id> + <id>438</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -915,7 +924,7 @@ </userVisible> <extendedTooltip> <name>КонтактыКонтекстноеМенюОтветственныйРасширеннаяПодсказка</name> - <id>438</id> + <id>439</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -941,7 +950,7 @@ </userVisible> <extendedTooltip> <name>КонтактыКонтекстноеМенюПредметРасширеннаяПодсказка</name> - <id>439</id> + <id>440</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -972,7 +981,7 @@ </toolTip> <extendedTooltip> <name>КонтактыКонтекстноеМенюГруппаРассмотреноРасширеннаяПодсказка</name> - <id>435</id> + <id>436</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -992,7 +1001,7 @@ </userVisible> <extendedTooltip> <name>КонтактыКонтекстноеМенюДобавитьВЗакладкиРасширеннаяПодсказка</name> - <id>440</id> + <id>441</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1018,7 +1027,7 @@ </userVisible> <extendedTooltip> <name>КонтактыКонтекстноеМенюИзменитьЗначениеПанелиНавигацииРасширеннаяПодсказка</name> - <id>441</id> + <id>442</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1047,7 +1056,7 @@ </userVisible> <extendedTooltip> <name>КонтактыКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка</name> - <id>443</id> + <id>444</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1073,7 +1082,7 @@ </userVisible> <extendedTooltip> <name>КонтактыКонтекстноеМенюОбновитьРасширеннаяПодсказка</name> - <id>444</id> + <id>445</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1099,7 +1108,7 @@ </userVisible> <extendedTooltip> <name>КонтактыКонтекстноеМенюВывестиСписокРасширеннаяПодсказка</name> - <id>445</id> + <id>446</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1130,7 +1139,7 @@ </toolTip> <extendedTooltip> <name>КонтактыКонтекстноеМенюГруппаОбновитьРасширеннаяПодсказка</name> - <id>442</id> + <id>443</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1192,7 +1201,7 @@ <enableContentChange>true</enableContentChange> <extendedTooltip> <name>СтраницаКонтактРасширеннаяПодсказка</name> - <id>434</id> + <id>435</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1250,7 +1259,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ПредметыПредставлениеРасширеннаяПодсказка</name> - <id>492</id> + <id>493</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1292,7 +1301,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ПредметыНомерКартинкиРасширеннаяПодсказка</name> - <id>494</id> + <id>495</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1339,7 +1348,7 @@ <enableContentChange>true</enableContentChange> <extendedTooltip> <name>ПредметыГруппаКолонокРасширеннаяПодсказка</name> - <id>491</id> + <id>492</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1385,10 +1394,10 @@ </handlers> <searchStringAddition> <name>ПредметыСтрокаПоиска</name> - <id>482</id> + <id>483</id> <extendedTooltip> <name>ПредметыСтрокаПоискаРасширеннаяПодсказка</name> - <id>484</id> + <id>485</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1398,7 +1407,7 @@ </extendedTooltip> <contextMenu> <name>ПредметыСтрокаПоискаКонтекстноеМеню</name> - <id>483</id> + <id>484</id> <autoFill>true</autoFill> </contextMenu> <source>Предметы</source> @@ -1408,10 +1417,10 @@ </searchStringAddition> <viewStatusAddition> <name>ПредметыСостояниеПросмотра</name> - <id>485</id> + <id>486</id> <extendedTooltip> <name>ПредметыСостояниеПросмотраРасширеннаяПодсказка</name> - <id>487</id> + <id>488</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1421,7 +1430,7 @@ </extendedTooltip> <contextMenu> <name>ПредметыСостояниеПросмотраКонтекстноеМеню</name> - <id>486</id> + <id>487</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -1432,10 +1441,10 @@ </viewStatusAddition> <searchControlAddition> <name>ПредметыУправлениеПоиском</name> - <id>488</id> + <id>489</id> <extendedTooltip> <name>ПредметыУправлениеПоискомРасширеннаяПодсказка</name> - <id>490</id> + <id>491</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1445,7 +1454,7 @@ </extendedTooltip> <contextMenu> <name>ПредметыУправлениеПоискомКонтекстноеМеню</name> - <id>489</id> + <id>490</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -1456,7 +1465,7 @@ </searchControlAddition> <extendedTooltip> <name>ПредметыРасширеннаяПодсказка</name> - <id>481</id> + <id>482</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1480,7 +1489,7 @@ </userVisible> <extendedTooltip> <name>ПредметыРассмотреноРасширеннаяПодсказка</name> - <id>471</id> + <id>472</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1506,7 +1515,7 @@ </userVisible> <extendedTooltip> <name>ПредметыОтложитьРассмотрениеРасширеннаяПодсказка</name> - <id>472</id> + <id>473</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1532,7 +1541,7 @@ </userVisible> <extendedTooltip> <name>ПредметыОтветственныйРасширеннаяПодсказка</name> - <id>473</id> + <id>474</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1558,7 +1567,7 @@ </userVisible> <extendedTooltip> <name>ПредметыПредметРасширеннаяПодсказка</name> - <id>474</id> + <id>475</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1589,7 +1598,7 @@ </toolTip> <extendedTooltip> <name>ПредметыКонтекстноеМенюГруппаРассмотреноРасширеннаяПодсказка</name> - <id>470</id> + <id>471</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1609,7 +1618,7 @@ </userVisible> <extendedTooltip> <name>ПредметыКонтекстноеМенюДобавитьВЗакладкиРасширеннаяПодсказка</name> - <id>475</id> + <id>476</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1635,7 +1644,7 @@ </userVisible> <extendedTooltip> <name>ПредметыКонтекстноеМенюИзменитьЗначениеПанелиНавигацииРасширеннаяПодсказка</name> - <id>476</id> + <id>477</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1664,7 +1673,7 @@ </userVisible> <extendedTooltip> <name>ПредметыКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка</name> - <id>478</id> + <id>479</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1690,7 +1699,7 @@ </userVisible> <extendedTooltip> <name>ПредметыКонтекстноеМенюОбновитьРасширеннаяПодсказка</name> - <id>479</id> + <id>480</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1716,7 +1725,7 @@ </userVisible> <extendedTooltip> <name>ПредметыКонтекстноеМенюВывестиСписокРасширеннаяПодсказка</name> - <id>480</id> + <id>481</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1747,7 +1756,7 @@ </toolTip> <extendedTooltip> <name>ПредметыКонтекстноеМенюГруппаОбновитьРасширеннаяПодсказка</name> - <id>477</id> + <id>478</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1811,7 +1820,7 @@ </handlers> <extendedTooltip> <name>ПоказыватьВсеАктивныеПредметыРасширеннаяПодсказка</name> - <id>504</id> + <id>505</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1846,7 +1855,7 @@ </toolTip> <extendedTooltip> <name>СтраницаПредметРасширеннаяПодсказка</name> - <id>469</id> + <id>470</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1896,7 +1905,7 @@ </dataPath> <extendedTooltip> <name>ЗакладкиНаименованиеРасширеннаяПодсказка</name> - <id>524</id> + <id>525</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1929,10 +1938,10 @@ </handlers> <searchStringAddition> <name>ЗакладкиСтрокаПоиска</name> - <id>515</id> + <id>516</id> <extendedTooltip> <name>ЗакладкиСтрокаПоискаРасширеннаяПодсказка</name> - <id>517</id> + <id>518</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1942,7 +1951,7 @@ </extendedTooltip> <contextMenu> <name>ЗакладкиСтрокаПоискаКонтекстноеМеню</name> - <id>516</id> + <id>517</id> <autoFill>true</autoFill> </contextMenu> <source>Закладки</source> @@ -1952,10 +1961,10 @@ </searchStringAddition> <viewStatusAddition> <name>ЗакладкиСостояниеПросмотра</name> - <id>518</id> + <id>519</id> <extendedTooltip> <name>ЗакладкиСостояниеПросмотраРасширеннаяПодсказка</name> - <id>520</id> + <id>521</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1965,7 +1974,7 @@ </extendedTooltip> <contextMenu> <name>ЗакладкиСостояниеПросмотраКонтекстноеМеню</name> - <id>519</id> + <id>520</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -1976,10 +1985,10 @@ </viewStatusAddition> <searchControlAddition> <name>ЗакладкиУправлениеПоиском</name> - <id>521</id> + <id>522</id> <extendedTooltip> <name>ЗакладкиУправлениеПоискомРасширеннаяПодсказка</name> - <id>523</id> + <id>524</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -1989,7 +1998,7 @@ </extendedTooltip> <contextMenu> <name>ЗакладкиУправлениеПоискомКонтекстноеМеню</name> - <id>522</id> + <id>523</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -2000,7 +2009,7 @@ </searchControlAddition> <extendedTooltip> <name>ЗакладкиРасширеннаяПодсказка</name> - <id>514</id> + <id>515</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2021,7 +2030,7 @@ </userVisible> <extendedTooltip> <name>ЗакладкиКонтекстноеМенюРассмотреноРасширеннаяПодсказка</name> - <id>507</id> + <id>508</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2047,7 +2056,7 @@ </userVisible> <extendedTooltip> <name>ЗакладкиКонтекстноеМенюОтложитьРассмотрениеРасширеннаяПодсказка</name> - <id>508</id> + <id>509</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2073,7 +2082,7 @@ </userVisible> <extendedTooltip> <name>ЗакладкиОтветственныйРасширеннаяПодсказка</name> - <id>509</id> + <id>510</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2099,7 +2108,7 @@ </userVisible> <extendedTooltip> <name>ЗакладкиКонтекстноеМенюПредметРасширеннаяПодсказка</name> - <id>510</id> + <id>511</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2128,7 +2137,7 @@ </userVisible> <extendedTooltip> <name>ЗакладкиОбновитьРасширеннаяПодсказка</name> - <id>512</id> + <id>513</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2154,7 +2163,7 @@ </userVisible> <extendedTooltip> <name>ЗакладкиВывестиСписокРасширеннаяПодсказка</name> - <id>513</id> + <id>514</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2185,7 +2194,7 @@ </toolTip> <extendedTooltip> <name>ЗакладкиКонтекстноеМенюСтандартныеКомандыРасширеннаяПодсказка</name> - <id>511</id> + <id>512</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2252,7 +2261,7 @@ </toolTip> <extendedTooltip> <name>СтраницаЗакладкиРасширеннаяПодсказка</name> - <id>506</id> + <id>507</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2310,7 +2319,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>СвойстваПредставлениеРасширеннаяПодсказка</name> - <id>556</id> + <id>557</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2350,7 +2359,7 @@ </dataPath> <extendedTooltip> <name>СвойстваНомерКартинкиРасширеннаяПодсказка</name> - <id>558</id> + <id>559</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2395,7 +2404,7 @@ </toolTip> <extendedTooltip> <name>СвойстваГруппаКолонокРасширеннаяПодсказка</name> - <id>555</id> + <id>556</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2429,10 +2438,10 @@ </handlers> <searchStringAddition> <name>СвойстваСтрокаПоиска</name> - <id>546</id> + <id>547</id> <extendedTooltip> <name>СвойстваСтрокаПоискаРасширеннаяПодсказка</name> - <id>548</id> + <id>549</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2442,7 +2451,7 @@ </extendedTooltip> <contextMenu> <name>СвойстваСтрокаПоискаКонтекстноеМеню</name> - <id>547</id> + <id>548</id> <autoFill>true</autoFill> </contextMenu> <source>Свойства</source> @@ -2452,10 +2461,10 @@ </searchStringAddition> <viewStatusAddition> <name>СвойстваСостояниеПросмотра</name> - <id>549</id> + <id>550</id> <extendedTooltip> <name>СвойстваСостояниеПросмотраРасширеннаяПодсказка</name> - <id>551</id> + <id>552</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2465,7 +2474,7 @@ </extendedTooltip> <contextMenu> <name>СвойстваСостояниеПросмотраКонтекстноеМеню</name> - <id>550</id> + <id>551</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -2476,10 +2485,10 @@ </viewStatusAddition> <searchControlAddition> <name>СвойстваУправлениеПоиском</name> - <id>552</id> + <id>553</id> <extendedTooltip> <name>СвойстваУправлениеПоискомРасширеннаяПодсказка</name> - <id>554</id> + <id>555</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2489,7 +2498,7 @@ </extendedTooltip> <contextMenu> <name>СвойстваУправлениеПоискомКонтекстноеМеню</name> - <id>553</id> + <id>554</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -2500,7 +2509,7 @@ </searchControlAddition> <extendedTooltip> <name>СвойстваРасширеннаяПодсказка</name> - <id>545</id> + <id>546</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2524,7 +2533,7 @@ </userVisible> <extendedTooltip> <name>СвойстваКонтекстноеМенюРассмотреноРасширеннаяПодсказка</name> - <id>536</id> + <id>537</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2550,7 +2559,7 @@ </userVisible> <extendedTooltip> <name>СвойстваКонтекстноеМенюОтложитьРассмотрениеРасширеннаяПодсказка</name> - <id>537</id> + <id>538</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2576,7 +2585,7 @@ </userVisible> <extendedTooltip> <name>СвойстваКонтекстноеМенюОтветственныйРасширеннаяПодсказка</name> - <id>538</id> + <id>539</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2602,7 +2611,7 @@ </userVisible> <extendedTooltip> <name>СвойстваКонтекстноеМенюПредметРасширеннаяПодсказка</name> - <id>539</id> + <id>540</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2633,7 +2642,7 @@ </toolTip> <extendedTooltip> <name>СвойстваКонтекстноеМенюГруппаРассмотреноРасширеннаяПодсказка</name> - <id>535</id> + <id>536</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2653,7 +2662,7 @@ </userVisible> <extendedTooltip> <name>СвойстваКонтекстноеМенюДобавитьВЗакладкиРасширеннаяПодсказка</name> - <id>540</id> + <id>541</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2682,7 +2691,7 @@ </userVisible> <extendedTooltip> <name>СвойстваКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка</name> - <id>542</id> + <id>543</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2708,7 +2717,7 @@ </userVisible> <extendedTooltip> <name>СвойстваКонтекстноеМенюОбновитьРасширеннаяПодсказка</name> - <id>543</id> + <id>544</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2734,7 +2743,7 @@ </userVisible> <extendedTooltip> <name>СвойстваКонтекстноеМенюВывестиСписокРасширеннаяПодсказка</name> - <id>544</id> + <id>545</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2765,7 +2774,7 @@ </toolTip> <extendedTooltip> <name>СвойстваКонтекстноеМенюГруппаОбновитьРасширеннаяПодсказка</name> - <id>541</id> + <id>542</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2825,7 +2834,7 @@ </toolTip> <extendedTooltip> <name>СтраницаСвойстваРасширеннаяПодсказка</name> - <id>534</id> + <id>535</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2883,7 +2892,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>РеквизитыПредметаНомерКартинкиРасширеннаяПодсказка</name> - <id>591</id> + <id>592</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2926,7 +2935,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>РеквизитыПредметаПредставлениеРасширеннаяПодсказка</name> - <id>593</id> + <id>594</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2970,7 +2979,7 @@ <enableContentChange>true</enableContentChange> <extendedTooltip> <name>РеквизитыПредметаГруппаКолонокРасширеннаяПодсказка</name> - <id>590</id> + <id>591</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3020,10 +3029,10 @@ </handlers> <searchStringAddition> <name>РеквизитыПредметаСтрокаПоиска</name> - <id>581</id> + <id>582</id> <extendedTooltip> <name>РеквизитыПредметаСтрокаПоискаРасширеннаяПодсказка</name> - <id>583</id> + <id>584</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3033,7 +3042,7 @@ </extendedTooltip> <contextMenu> <name>РеквизитыПредметаСтрокаПоискаКонтекстноеМеню</name> - <id>582</id> + <id>583</id> <autoFill>true</autoFill> </contextMenu> <source>РеквизитыПредмета</source> @@ -3043,10 +3052,10 @@ </searchStringAddition> <viewStatusAddition> <name>РеквизитыПредметаСостояниеПросмотра</name> - <id>584</id> + <id>585</id> <extendedTooltip> <name>РеквизитыПредметаСостояниеПросмотраРасширеннаяПодсказка</name> - <id>586</id> + <id>587</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3056,7 +3065,7 @@ </extendedTooltip> <contextMenu> <name>РеквизитыПредметаСостояниеПросмотраКонтекстноеМеню</name> - <id>585</id> + <id>586</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -3067,10 +3076,10 @@ </viewStatusAddition> <searchControlAddition> <name>РеквизитыПредметаУправлениеПоиском</name> - <id>587</id> + <id>588</id> <extendedTooltip> <name>РеквизитыПредметаУправлениеПоискомРасширеннаяПодсказка</name> - <id>589</id> + <id>590</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3080,7 +3089,7 @@ </extendedTooltip> <contextMenu> <name>РеквизитыПредметаУправлениеПоискомКонтекстноеМеню</name> - <id>588</id> + <id>589</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -3091,7 +3100,7 @@ </searchControlAddition> <extendedTooltip> <name>РеквизитыПредметаРасширеннаяПодсказка</name> - <id>580</id> + <id>581</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3115,7 +3124,7 @@ </userVisible> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюРассмотреноРасширеннаяПодсказка</name> - <id>570</id> + <id>571</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3141,7 +3150,7 @@ </userVisible> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюОтложитьРассмотрениеРасширеннаяПодсказка</name> - <id>571</id> + <id>572</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3167,7 +3176,7 @@ </userVisible> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюОтветственныйРасширеннаяПодсказка</name> - <id>572</id> + <id>573</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3193,7 +3202,7 @@ </userVisible> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюПредметРасширеннаяПодсказка</name> - <id>573</id> + <id>574</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3224,7 +3233,7 @@ </toolTip> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюГруппаРассмотреноРасширеннаяПодсказка</name> - <id>569</id> + <id>570</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3244,7 +3253,7 @@ </userVisible> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюДобавитьВЗакладкиРасширеннаяПодсказка</name> - <id>574</id> + <id>575</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3270,7 +3279,7 @@ </userVisible> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюИзменитьЗначениеПанелиНавигацииРасширеннаяПодсказка</name> - <id>575</id> + <id>576</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3299,7 +3308,7 @@ </userVisible> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка</name> - <id>577</id> + <id>578</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3325,7 +3334,7 @@ </userVisible> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюОбновитьРасширеннаяПодсказка</name> - <id>578</id> + <id>579</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3351,7 +3360,7 @@ </userVisible> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюВывестиСписокРасширеннаяПодсказка</name> - <id>579</id> + <id>580</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3382,7 +3391,7 @@ </toolTip> <extendedTooltip> <name>РеквизитыПредметаКонтекстноеМенюГруппаОбновитьРасширеннаяПодсказка</name> - <id>576</id> + <id>577</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3444,7 +3453,7 @@ </handlers> <extendedTooltip> <name>ПоказыватьВсеАктивныеПредметыРеквизитыПредметаРасширеннаяПодсказка</name> - <id>603</id> + <id>604</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3479,7 +3488,7 @@ </toolTip> <extendedTooltip> <name>СтраницаРеквизитыПредметаРасширеннаяПодсказка</name> - <id>568</id> + <id>569</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3535,7 +3544,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ПапкиНомерКартинкиРасширеннаяПодсказка</name> - <id>632</id> + <id>633</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3578,7 +3587,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ПапкиПредставлениеРасширеннаяПодсказка</name> - <id>634</id> + <id>635</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3622,7 +3631,7 @@ <enableContentChange>true</enableContentChange> <extendedTooltip> <name>ПапкиГруппаКолонокРасширеннаяПодсказка</name> - <id>631</id> + <id>632</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3680,10 +3689,10 @@ </handlers> <searchStringAddition> <name>ПапкиСтрокаПоиска</name> - <id>622</id> + <id>623</id> <extendedTooltip> <name>ПапкиСтрокаПоискаРасширеннаяПодсказка</name> - <id>624</id> + <id>625</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3693,7 +3702,7 @@ </extendedTooltip> <contextMenu> <name>ПапкиСтрокаПоискаКонтекстноеМеню</name> - <id>623</id> + <id>624</id> <autoFill>true</autoFill> </contextMenu> <source>Папки</source> @@ -3703,10 +3712,10 @@ </searchStringAddition> <viewStatusAddition> <name>ПапкиСостояниеПросмотра</name> - <id>625</id> + <id>626</id> <extendedTooltip> <name>ПапкиСостояниеПросмотраРасширеннаяПодсказка</name> - <id>627</id> + <id>628</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3716,7 +3725,7 @@ </extendedTooltip> <contextMenu> <name>ПапкиСостояниеПросмотраКонтекстноеМеню</name> - <id>626</id> + <id>627</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -3727,10 +3736,10 @@ </viewStatusAddition> <searchControlAddition> <name>ПапкиУправлениеПоиском</name> - <id>628</id> + <id>629</id> <extendedTooltip> <name>ПапкиУправлениеПоискомРасширеннаяПодсказка</name> - <id>630</id> + <id>631</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3740,7 +3749,7 @@ </extendedTooltip> <contextMenu> <name>ПапкиУправлениеПоискомКонтекстноеМеню</name> - <id>629</id> + <id>630</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -3751,7 +3760,7 @@ </searchControlAddition> <extendedTooltip> <name>ПапкиРасширеннаяПодсказка</name> - <id>621</id> + <id>622</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3775,7 +3784,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюРассмотреноРасширеннаяПодсказка</name> - <id>607</id> + <id>608</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3801,7 +3810,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюОтложитьРассмотрениеРасширеннаяПодсказка</name> - <id>608</id> + <id>609</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3827,7 +3836,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюОтветственныйРасширеннаяПодсказка</name> - <id>609</id> + <id>610</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3858,7 +3867,7 @@ </toolTip> <extendedTooltip> <name>ПапкиКонтекстноеМенюГруппаРассмотреноРасширеннаяПодсказка</name> - <id>606</id> + <id>607</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3878,7 +3887,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюДобавитьВЗакладкиРасширеннаяПодсказка</name> - <id>610</id> + <id>611</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3904,7 +3913,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюПрименитьПравилаОбработкиРасширеннаяПодсказка</name> - <id>611</id> + <id>612</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3930,7 +3939,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюПеренестиВПапкуРасширеннаяПодсказка</name> - <id>612</id> + <id>613</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3963,7 +3972,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюДобавитьРасширеннаяПодсказка</name> - <id>614</id> + <id>615</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -3989,7 +3998,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюИзменитьЗначениеПанелиНавигацииРасширеннаяПодсказка</name> - <id>615</id> + <id>616</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4015,7 +4024,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюУдалитьРасширеннаяПодсказка</name> - <id>616</id> + <id>617</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4046,7 +4055,7 @@ </toolTip> <extendedTooltip> <name>ПапкиКонтекстноеМенюГруппаИзменитьРасширеннаяПодсказка</name> - <id>613</id> + <id>614</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4069,7 +4078,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка</name> - <id>618</id> + <id>619</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4095,7 +4104,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюОбновитьРасширеннаяПодсказка</name> - <id>619</id> + <id>620</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4121,7 +4130,7 @@ </userVisible> <extendedTooltip> <name>ПапкиКонтекстноеМенюВывестиСписокРасширеннаяПодсказка</name> - <id>620</id> + <id>621</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4152,7 +4161,7 @@ </toolTip> <extendedTooltip> <name>ПапкиКонтекстноеМенюГруппаОбновитьРасширеннаяПодсказка</name> - <id>617</id> + <id>618</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4212,7 +4221,7 @@ </toolTip> <extendedTooltip> <name>СтраницаПапкиРасширеннаяПодсказка</name> - <id>605</id> + <id>606</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4269,7 +4278,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>КатегорииНомерКартинкиРасширеннаяПодсказка</name> - <id>666</id> + <id>667</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4315,7 +4324,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>КатегорииПредставлениеРасширеннаяПодсказка</name> - <id>668</id> + <id>669</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4352,7 +4361,7 @@ <readOnly>true</readOnly> <extendedTooltip> <name>КатегорииГруппаКолонокРасширеннаяПодсказка</name> - <id>665</id> + <id>666</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4378,10 +4387,10 @@ </handlers> <searchStringAddition> <name>КатегорииСтрокаПоиска</name> - <id>656</id> + <id>657</id> <extendedTooltip> <name>КатегорииСтрокаПоискаРасширеннаяПодсказка</name> - <id>658</id> + <id>659</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4391,7 +4400,7 @@ </extendedTooltip> <contextMenu> <name>КатегорииСтрокаПоискаКонтекстноеМеню</name> - <id>657</id> + <id>658</id> <autoFill>true</autoFill> </contextMenu> <source>Категории</source> @@ -4401,10 +4410,10 @@ </searchStringAddition> <viewStatusAddition> <name>КатегорииСостояниеПросмотра</name> - <id>659</id> + <id>660</id> <extendedTooltip> <name>КатегорииСостояниеПросмотраРасширеннаяПодсказка</name> - <id>661</id> + <id>662</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4414,7 +4423,7 @@ </extendedTooltip> <contextMenu> <name>КатегорииСостояниеПросмотраКонтекстноеМеню</name> - <id>660</id> + <id>661</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -4425,10 +4434,10 @@ </viewStatusAddition> <searchControlAddition> <name>КатегорииУправлениеПоиском</name> - <id>662</id> + <id>663</id> <extendedTooltip> <name>КатегорииУправлениеПоискомРасширеннаяПодсказка</name> - <id>664</id> + <id>665</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4438,7 +4447,7 @@ </extendedTooltip> <contextMenu> <name>КатегорииУправлениеПоискомКонтекстноеМеню</name> - <id>663</id> + <id>664</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -4449,7 +4458,7 @@ </searchControlAddition> <extendedTooltip> <name>КатегорииРасширеннаяПодсказка</name> - <id>655</id> + <id>656</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4473,7 +4482,7 @@ </userVisible> <extendedTooltip> <name>КатегорииКонтекстноеМенюРассмотреноРасширеннаяПодсказка</name> - <id>646</id> + <id>647</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4499,7 +4508,7 @@ </userVisible> <extendedTooltip> <name>КатегорииКонтекстноеМенюОтложитьРассмотрениеРасширеннаяПодсказка</name> - <id>647</id> + <id>648</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4525,7 +4534,7 @@ </userVisible> <extendedTooltip> <name>КатегорииКонтекстноеМенюОтветственныйРасширеннаяПодсказка</name> - <id>648</id> + <id>649</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4551,7 +4560,7 @@ </userVisible> <extendedTooltip> <name>КатегорииКонтекстноеМенюПредметРасширеннаяПодсказка</name> - <id>649</id> + <id>650</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4582,7 +4591,7 @@ </toolTip> <extendedTooltip> <name>КатегорииКонтекстноеМенюГруппаРассмотреноРасширеннаяПодсказка</name> - <id>645</id> + <id>646</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4602,7 +4611,7 @@ </userVisible> <extendedTooltip> <name>КатегорииКонтекстноеМенюДобавитьВЗакладкиРасширеннаяПодсказка</name> - <id>650</id> + <id>651</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4631,7 +4640,7 @@ </userVisible> <extendedTooltip> <name>КатегорииКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка</name> - <id>652</id> + <id>653</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4657,7 +4666,7 @@ </userVisible> <extendedTooltip> <name>КатегорииКонтекстноеМенюОбновитьРасширеннаяПодсказка</name> - <id>653</id> + <id>654</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4683,7 +4692,7 @@ </userVisible> <extendedTooltip> <name>КатегорииКонтекстноеМенюВывестиСписокРасширеннаяПодсказка</name> - <id>654</id> + <id>655</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4714,7 +4723,7 @@ </toolTip> <extendedTooltip> <name>КатегорииКонтекстноеМенюГруппаОбновитьРасширеннаяПодсказка</name> - <id>651</id> + <id>652</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4774,7 +4783,7 @@ </toolTip> <extendedTooltip> <name>СтраницаКатегорииРасширеннаяПодсказка</name> - <id>644</id> + <id>645</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4803,7 +4812,7 @@ </toolTip> <extendedTooltip> <name>СтраницыПанелиНавигацииРасширеннаяПодсказка</name> - <id>433</id> + <id>434</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4831,7 +4840,7 @@ </toolTip> <extendedTooltip> <name>ГруппаПанельНавигацииРасширеннаяПодсказка</name> - <id>426</id> + <id>427</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4884,7 +4893,7 @@ </dataPath> <extendedTooltip> <name>ВажностьНомерКартинкиРасширеннаяПодсказка</name> - <id>730</id> + <id>732</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4934,7 +4943,7 @@ </toolTip> <extendedTooltip> <name>ЕстьВложенияРасширеннаяПодсказка</name> - <id>732</id> + <id>734</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -4981,7 +4990,7 @@ </dataPath> <extendedTooltip> <name>НомерКартинкиРасширеннаяПодсказка</name> - <id>734</id> + <id>736</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5027,7 +5036,7 @@ </dataPath> <extendedTooltip> <name>ДатаРасширеннаяПодсказка</name> - <id>736</id> + <id>738</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5062,7 +5071,7 @@ </dataPath> <extendedTooltip> <name>УчастникиРасширеннаяПодсказка</name> - <id>738</id> + <id>740</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5098,7 +5107,7 @@ </dataPath> <extendedTooltip> <name>ТемаРасширеннаяПодсказка</name> - <id>740</id> + <id>742</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5137,7 +5146,7 @@ </userVisible> <extendedTooltip> <name>СписокСоздатьВстречуРасширеннаяПодсказка</name> - <id>693</id> + <id>694</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5163,7 +5172,7 @@ </userVisible> <extendedTooltip> <name>СписокСоздатьЗапланированноеВзаимодействиеРасширеннаяПодсказка</name> - <id>694</id> + <id>695</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5189,7 +5198,7 @@ </userVisible> <extendedTooltip> <name>СписокСоздатьТелефонныйЗвонокРасширеннаяПодсказка</name> - <id>695</id> + <id>696</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5205,6 +5214,35 @@ <placementArea>UserCmds</placementArea> <representationInContextMenu>Auto</representationInContextMenu> </items> + <items xsi:type="form:Button"> + <name>СписокСоздатьСообщениеSMS</name> + <id>415</id> + <visible>true</visible> + <enabled>true</enabled> + <userVisible> + <common>true</common> + </userVisible> + <extendedTooltip> + <name>СписокСоздатьСообщениеSMSРасширеннаяПодсказка</name> + <id>697</id> + <type>Label</type> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <extInfo xsi:type="form:LabelDecorationExtInfo"> + <horizontalAlign>Left</horizontalAlign> + </extInfo> + </extendedTooltip> + <commandName>Form.Command.СоздатьСообщениеSMS</commandName> + <buttonImportance>Normal</buttonImportance> + <representation>Auto</representation> + <autoMaxWidth>true</autoMaxWidth> + <autoMaxHeight>true</autoMaxHeight> + <placementArea>UserCmds</placementArea> + <picture xsi:type="core:PictureRef"> + <picture>StdPicture.CreateListItem</picture> + </picture> + <representationInContextMenu>Auto</representationInContextMenu> + </items> <items xsi:type="form:Button"> <name>СписокСоздатьЭлектронноеПисьмо</name> <id>47</id> @@ -5215,7 +5253,7 @@ </userVisible> <extendedTooltip> <name>СписокСоздатьЭлектронноеПисьмоРасширеннаяПодсказка</name> - <id>696</id> + <id>698</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5246,7 +5284,7 @@ </toolTip> <extendedTooltip> <name>ГруппаСоздатьРасширеннаяПодсказка</name> - <id>692</id> + <id>693</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5277,7 +5315,7 @@ </userVisible> <extendedTooltip> <name>СписокСоздатьЭлектронноеПисьмоОтдельнаяКнопкаРасширеннаяПодсказка</name> - <id>697</id> + <id>699</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5306,7 +5344,7 @@ </userVisible> <extendedTooltip> <name>СписокОтправитьПолучитьПочтуРасширеннаяПодсказка</name> - <id>698</id> + <id>700</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5335,7 +5373,7 @@ </userVisible> <extendedTooltip> <name>СписокРассмотреноРасширеннаяПодсказка</name> - <id>700</id> + <id>702</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5361,7 +5399,7 @@ </userVisible> <extendedTooltip> <name>СписокОтложитьРассмотрениеРасширеннаяПодсказка</name> - <id>701</id> + <id>703</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5387,7 +5425,7 @@ </userVisible> <extendedTooltip> <name>СписокНеРассмотреноРасширеннаяПодсказка</name> - <id>702</id> + <id>704</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5414,7 +5452,7 @@ </userVisible> <extendedTooltip> <name>СписокОтветственныйРасширеннаяПодсказка</name> - <id>703</id> + <id>705</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5440,7 +5478,7 @@ </userVisible> <extendedTooltip> <name>СписокПредметРасширеннаяПодсказка</name> - <id>704</id> + <id>706</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5471,7 +5509,7 @@ </toolTip> <extendedTooltip> <name>ГруппаРассмотреноРасширеннаяПодсказка</name> - <id>699</id> + <id>701</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5494,7 +5532,7 @@ </userVisible> <extendedTooltip> <name>ИзменитьРасширеннаяПодсказка</name> - <id>706</id> + <id>708</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5520,7 +5558,7 @@ </userVisible> <extendedTooltip> <name>СкопироватьРасширеннаяПодсказка</name> - <id>707</id> + <id>709</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5550,7 +5588,7 @@ </userVisible> <extendedTooltip> <name>УстановитьПометкуУдаленияРасширеннаяПодсказка</name> - <id>709</id> + <id>711</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5582,7 +5620,7 @@ </toolTip> <extendedTooltip> <name>ГруппаСписокУстановитьПометкуУдаленияРасширеннаяПодсказка</name> - <id>708</id> + <id>710</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5605,7 +5643,7 @@ </userVisible> <extendedTooltip> <name>НайтиРасширеннаяПодсказка</name> - <id>711</id> + <id>713</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5632,7 +5670,7 @@ </userVisible> <extendedTooltip> <name>ОтменитьПоискРасширеннаяПодсказка</name> - <id>712</id> + <id>714</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5659,7 +5697,7 @@ </userVisible> <extendedTooltip> <name>УстановитьИнтервалДатРасширеннаяПодсказка</name> - <id>713</id> + <id>715</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5690,7 +5728,7 @@ </toolTip> <extendedTooltip> <name>ГруппаНайтиРасширеннаяПодсказка</name> - <id>710</id> + <id>712</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5715,7 +5753,7 @@ </toolTip> <extendedTooltip> <name>ГруппаКомандыСпискаРасширеннаяПодсказка</name> - <id>705</id> + <id>707</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5735,7 +5773,7 @@ </userVisible> <extendedTooltip> <name>СписокОбновитьРасширеннаяПодсказка</name> - <id>714</id> + <id>716</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5762,7 +5800,7 @@ </userVisible> <extendedTooltip> <name>СписокНастройкаСпискаРасширеннаяПодсказка</name> - <id>715</id> + <id>717</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5788,7 +5826,7 @@ </userVisible> <extendedTooltip> <name>СписокВывестиСписокРасширеннаяПодсказка</name> - <id>716</id> + <id>718</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5814,7 +5852,7 @@ </userVisible> <extendedTooltip> <name>СписокСправкаРасширеннаяПодсказка</name> - <id>717</id> + <id>719</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5840,7 +5878,7 @@ </userVisible> <extendedTooltip> <name>СписокИзменитьФормуРасширеннаяПодсказка</name> - <id>718</id> + <id>720</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5866,7 +5904,7 @@ </userVisible> <extendedTooltip> <name>ФормаПерсональныеНастройкиРасширеннаяПодсказка</name> - <id>719</id> + <id>721</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5907,10 +5945,10 @@ </handlers> <searchStringAddition> <name>СписокСтрокаПоиска</name> - <id>721</id> + <id>723</id> <extendedTooltip> <name>СписокСтрокаПоискаРасширеннаяПодсказка</name> - <id>723</id> + <id>725</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5920,7 +5958,7 @@ </extendedTooltip> <contextMenu> <name>СписокСтрокаПоискаКонтекстноеМеню</name> - <id>722</id> + <id>724</id> <autoFill>true</autoFill> </contextMenu> <source>Список</source> @@ -5930,10 +5968,10 @@ </searchStringAddition> <viewStatusAddition> <name>СписокСостояниеПросмотра</name> - <id>724</id> + <id>726</id> <extendedTooltip> <name>СписокСостояниеПросмотраРасширеннаяПодсказка</name> - <id>726</id> + <id>728</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5943,7 +5981,7 @@ </extendedTooltip> <contextMenu> <name>СписокСостояниеПросмотраКонтекстноеМеню</name> - <id>725</id> + <id>727</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -5954,10 +5992,10 @@ </viewStatusAddition> <searchControlAddition> <name>СписокУправлениеПоиском</name> - <id>727</id> + <id>729</id> <extendedTooltip> <name>СписокУправлениеПоискомРасширеннаяПодсказка</name> - <id>729</id> + <id>731</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -5967,7 +6005,7 @@ </extendedTooltip> <contextMenu> <name>СписокУправлениеПоискомКонтекстноеМеню</name> - <id>728</id> + <id>730</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -5978,7 +6016,7 @@ </searchControlAddition> <extendedTooltip> <name>СписокРасширеннаяПодсказка</name> - <id>720</id> + <id>722</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6002,7 +6040,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюУстановитьПризнакРассмотреноРасширеннаяПодсказка</name> - <id>682</id> + <id>683</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6028,7 +6066,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюОтложитьРассмотрениеСписокРасширеннаяПодсказка</name> - <id>683</id> + <id>684</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6054,7 +6092,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюПредметСписокРасширеннаяПодсказка</name> - <id>684</id> + <id>685</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6085,7 +6123,7 @@ </toolTip> <extendedTooltip> <name>СписокКонтекстноеМенюГруппаРассмотрениеПредметРасширеннаяПодсказка</name> - <id>681</id> + <id>682</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6105,7 +6143,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюДобавитьВЗакладкиРасширеннаяПодсказка</name> - <id>685</id> + <id>686</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6131,7 +6169,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюИзменитьРасширеннаяПодсказка</name> - <id>686</id> + <id>687</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6157,7 +6195,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюПеренестиВПапкуРасширеннаяПодсказка</name> - <id>687</id> + <id>688</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6183,7 +6221,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюВзаимодействияПоПредметуРасширеннаяПодсказка</name> - <id>688</id> + <id>689</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6212,7 +6250,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюУстановитьПометкуУдаленияРасширеннаяПодсказка</name> - <id>690</id> + <id>691</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6238,7 +6276,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюСкопироватьРасширеннаяПодсказка</name> - <id>691</id> + <id>692</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6269,7 +6307,7 @@ </toolTip> <extendedTooltip> <name>СписокКонтекстноеМенюГруппаУдалитьКопироватьРасширеннаяПодсказка</name> - <id>689</id> + <id>690</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6332,7 +6370,7 @@ </toolTip> <extendedTooltip> <name>СтраницаСписокОбычнаяРасширеннаяПодсказка</name> - <id>680</id> + <id>681</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6376,7 +6414,7 @@ </dataPath> <extendedTooltip> <name>ВажностьНомерКартинкиВходящиеРасширеннаяПодсказка</name> - <id>800</id> + <id>802</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6426,7 +6464,7 @@ </toolTip> <extendedTooltip> <name>ЕстьВложенияВходящиеРасширеннаяПодсказка</name> - <id>802</id> + <id>804</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6473,7 +6511,7 @@ </dataPath> <extendedTooltip> <name>НомерКартинкиВходящиеРасширеннаяПодсказка</name> - <id>804</id> + <id>806</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6523,7 +6561,7 @@ </dataPath> <extendedTooltip> <name>УчастникиВходящиеРасширеннаяПодсказка</name> - <id>806</id> + <id>808</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6560,7 +6598,7 @@ </dataPath> <extendedTooltip> <name>ТемаВходящиеРасширеннаяПодсказка</name> - <id>808</id> + <id>810</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6600,7 +6638,7 @@ </dataPath> <extendedTooltip> <name>ПолученоОтправленоРасширеннаяПодсказка</name> - <id>810</id> + <id>812</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6644,7 +6682,7 @@ </dataPath> <extendedTooltip> <name>РазмерВходящиеРасширеннаяПодсказка</name> - <id>812</id> + <id>814</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6684,7 +6722,7 @@ </userVisible> <extendedTooltip> <name>СписокСоздатьЭлектронноеПисьмоВходящиеРасширеннаяПодсказка</name> - <id>764</id> + <id>766</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6713,7 +6751,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеОтветитьРасширеннаяПодсказка</name> - <id>765</id> + <id>767</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6742,7 +6780,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеОтветитьВсемРасширеннаяПодсказка</name> - <id>766</id> + <id>768</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6768,7 +6806,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеПереслатьРасширеннаяПодсказка</name> - <id>767</id> + <id>769</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6794,7 +6832,7 @@ </userVisible> <extendedTooltip> <name>СписокОтправитьПолучитьПочтуВходящиеРасширеннаяПодсказка</name> - <id>768</id> + <id>770</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6823,7 +6861,7 @@ </userVisible> <extendedTooltip> <name>СписокРассмотреноВходящиеРасширеннаяПодсказка</name> - <id>770</id> + <id>772</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6849,7 +6887,7 @@ </userVisible> <extendedTooltip> <name>СписокОтложитьРассмотрениеВходящиеРасширеннаяПодсказка</name> - <id>771</id> + <id>773</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6875,7 +6913,7 @@ </userVisible> <extendedTooltip> <name>СписокНеРассмотреноВходящиеРасширеннаяПодсказка</name> - <id>772</id> + <id>774</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6902,7 +6940,7 @@ </userVisible> <extendedTooltip> <name>СписокОтветственныйВходящиеРасширеннаяПодсказка</name> - <id>773</id> + <id>775</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6928,7 +6966,7 @@ </userVisible> <extendedTooltip> <name>СписокПредметВходящиеРасширеннаяПодсказка</name> - <id>774</id> + <id>776</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6959,7 +6997,7 @@ </toolTip> <extendedTooltip> <name>СписокВходящиеГруппаРассмотреноРасширеннаяПодсказка</name> - <id>769</id> + <id>771</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -6982,7 +7020,7 @@ </userVisible> <extendedTooltip> <name>ИзменитьВходящиеРасширеннаяПодсказка</name> - <id>776</id> + <id>778</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7008,7 +7046,7 @@ </userVisible> <extendedTooltip> <name>СкопироватьВходящиеРасширеннаяПодсказка</name> - <id>777</id> + <id>779</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7037,7 +7075,7 @@ </userVisible> <extendedTooltip> <name>УстановитьПометкуУдаленияВходящиеРасширеннаяПодсказка</name> - <id>779</id> + <id>781</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7069,7 +7107,7 @@ </toolTip> <extendedTooltip> <name>ГруппаСписокУстановитьПометкуУдаленияВходящиеРасширеннаяПодсказка</name> - <id>778</id> + <id>780</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7092,7 +7130,7 @@ </userVisible> <extendedTooltip> <name>НайтиВходящиеРасширеннаяПодсказка</name> - <id>781</id> + <id>783</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7119,7 +7157,7 @@ </userVisible> <extendedTooltip> <name>ОтменитьПоискВходящиеРасширеннаяПодсказка</name> - <id>782</id> + <id>784</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7146,7 +7184,7 @@ </userVisible> <extendedTooltip> <name>УстановитьИнтервалДатВходящиеРасширеннаяПодсказка</name> - <id>783</id> + <id>785</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7177,7 +7215,7 @@ </toolTip> <extendedTooltip> <name>ГруппаНайтиВходящиеРасширеннаяПодсказка</name> - <id>780</id> + <id>782</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7205,7 +7243,7 @@ </toolTip> <extendedTooltip> <name>ГруппаОтменитьПоискВходящиеРасширеннаяПодсказка</name> - <id>784</id> + <id>786</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7230,7 +7268,7 @@ </toolTip> <extendedTooltip> <name>ГруппаКомандыСпискаВходящиеРасширеннаяПодсказка</name> - <id>775</id> + <id>777</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7250,7 +7288,7 @@ </userVisible> <extendedTooltip> <name>СписокОбновитьВходящиеРасширеннаяПодсказка</name> - <id>785</id> + <id>787</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7277,7 +7315,7 @@ </userVisible> <extendedTooltip> <name>СписокНастройкаСпискаВходящиеРасширеннаяПодсказка</name> - <id>786</id> + <id>788</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7303,7 +7341,7 @@ </userVisible> <extendedTooltip> <name>СписокВывестиСписокВходящиеРасширеннаяПодсказка</name> - <id>787</id> + <id>789</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7329,7 +7367,7 @@ </userVisible> <extendedTooltip> <name>СписокСправкаВходящиеРасширеннаяПодсказка</name> - <id>788</id> + <id>790</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7355,7 +7393,7 @@ </userVisible> <extendedTooltip> <name>ФормаПерсональныеНастройкиВходящиеРасширеннаяПодсказка</name> - <id>789</id> + <id>791</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7396,10 +7434,10 @@ </handlers> <searchStringAddition> <name>СписокВходящиеСтрокаПоиска</name> - <id>791</id> + <id>793</id> <extendedTooltip> <name>СписокВходящиеСтрокаПоискаРасширеннаяПодсказка</name> - <id>793</id> + <id>795</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7409,7 +7447,7 @@ </extendedTooltip> <contextMenu> <name>СписокВходящиеСтрокаПоискаКонтекстноеМеню</name> - <id>792</id> + <id>794</id> <autoFill>true</autoFill> </contextMenu> <source>СписокВходящие</source> @@ -7419,10 +7457,10 @@ </searchStringAddition> <viewStatusAddition> <name>СписокВходящиеСостояниеПросмотра</name> - <id>794</id> + <id>796</id> <extendedTooltip> <name>СписокВходящиеСостояниеПросмотраРасширеннаяПодсказка</name> - <id>796</id> + <id>798</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7432,7 +7470,7 @@ </extendedTooltip> <contextMenu> <name>СписокВходящиеСостояниеПросмотраКонтекстноеМеню</name> - <id>795</id> + <id>797</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -7443,10 +7481,10 @@ </viewStatusAddition> <searchControlAddition> <name>СписокВходящиеУправлениеПоиском</name> - <id>797</id> + <id>799</id> <extendedTooltip> <name>СписокВходящиеУправлениеПоискомРасширеннаяПодсказка</name> - <id>799</id> + <id>801</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7456,7 +7494,7 @@ </extendedTooltip> <contextMenu> <name>СписокВходящиеУправлениеПоискомКонтекстноеМеню</name> - <id>798</id> + <id>800</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -7467,7 +7505,7 @@ </searchControlAddition> <extendedTooltip> <name>СписокВходящиеРасширеннаяПодсказка</name> - <id>790</id> + <id>792</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7488,7 +7526,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюОтветитьРасширеннаяПодсказка</name> - <id>751</id> + <id>753</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7514,7 +7552,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюОтветитьВсемРасширеннаяПодсказка</name> - <id>752</id> + <id>754</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7540,7 +7578,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюПереслатьРасширеннаяПодсказка</name> - <id>753</id> + <id>755</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7566,7 +7604,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюИзменитьРасширеннаяПодсказка</name> - <id>754</id> + <id>756</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7595,7 +7633,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюУстановитьПризнакРассмотреноРасширеннаяПодсказка</name> - <id>756</id> + <id>758</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7621,7 +7659,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюОтложитьРассмотрениеСписокРасширеннаяПодсказка</name> - <id>757</id> + <id>759</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7647,7 +7685,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюПредметСписокРасширеннаяПодсказка</name> - <id>758</id> + <id>760</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7678,7 +7716,7 @@ </toolTip> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюГруппаРассмотрениеПредметРасширеннаяПодсказка</name> - <id>755</id> + <id>757</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7698,7 +7736,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюДобавитьВЗакладкиВходящиеРасширеннаяПодсказка</name> - <id>759</id> + <id>761</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7724,7 +7762,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюПеренестиВПапкуВходящиеРасширеннаяПодсказка</name> - <id>760</id> + <id>762</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7750,7 +7788,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюВзаимодействияПоПредметуРасширеннаяПодсказка</name> - <id>761</id> + <id>763</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7779,7 +7817,7 @@ </userVisible> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюУстановитьПометкуУдаленияРасширеннаяПодсказка</name> - <id>763</id> + <id>765</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7810,7 +7848,7 @@ </toolTip> <extendedTooltip> <name>СписокВходящиеКонтекстноеМенюГруппаКопироватьУдалитьРасширеннаяПодсказка</name> - <id>762</id> + <id>764</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7872,7 +7910,7 @@ </toolTip> <extendedTooltip> <name>СтраницаСписокВходящиеРасширеннаяПодсказка</name> - <id>750</id> + <id>752</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7916,7 +7954,7 @@ </dataPath> <extendedTooltip> <name>ВажностьНомерКартинкиИсходящиеРасширеннаяПодсказка</name> - <id>869</id> + <id>871</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -7966,7 +8004,7 @@ </toolTip> <extendedTooltip> <name>ЕстьВложенияИсходящиеРасширеннаяПодсказка</name> - <id>871</id> + <id>873</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8013,7 +8051,7 @@ </dataPath> <extendedTooltip> <name>НомерКартинкиИсходящиеРасширеннаяПодсказка</name> - <id>873</id> + <id>875</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8063,7 +8101,7 @@ </dataPath> <extendedTooltip> <name>УчастникиИсходящиеРасширеннаяПодсказка</name> - <id>875</id> + <id>877</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8099,7 +8137,7 @@ </dataPath> <extendedTooltip> <name>ТемаИсходящиеРасширеннаяПодсказка</name> - <id>877</id> + <id>879</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8139,7 +8177,7 @@ </dataPath> <extendedTooltip> <name>ПолученоОтправленоИсходящиеРасширеннаяПодсказка</name> - <id>879</id> + <id>881</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8183,7 +8221,7 @@ </dataPath> <extendedTooltip> <name>РазмерИсходящиеРасширеннаяПодсказка</name> - <id>881</id> + <id>883</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8223,7 +8261,7 @@ </userVisible> <extendedTooltip> <name>СписокСоздатьЭлектронноеПисьмоИсходящиеРасширеннаяПодсказка</name> - <id>836</id> + <id>838</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8252,7 +8290,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеПереслатьРасширеннаяПодсказка</name> - <id>837</id> + <id>839</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8278,7 +8316,7 @@ </userVisible> <extendedTooltip> <name>СписокОтправитьПолучитьПочтуИсходящиеРасширеннаяПодсказка</name> - <id>838</id> + <id>840</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8307,7 +8345,7 @@ </userVisible> <extendedTooltip> <name>СписокРассмотреноИсходящиеРасширеннаяПодсказка</name> - <id>840</id> + <id>842</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8333,7 +8371,7 @@ </userVisible> <extendedTooltip> <name>СписокОтложитьРассмотрениеИсходящиеРасширеннаяПодсказка</name> - <id>841</id> + <id>843</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8359,7 +8397,7 @@ </userVisible> <extendedTooltip> <name>СписокНеРассмотреноИсходящиеРасширеннаяПодсказка</name> - <id>842</id> + <id>844</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8386,7 +8424,7 @@ </userVisible> <extendedTooltip> <name>СписокОтветственныйИсходящиеРасширеннаяПодсказка</name> - <id>843</id> + <id>845</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8412,7 +8450,7 @@ </userVisible> <extendedTooltip> <name>СписокПредметИсходящиеРасширеннаяПодсказка</name> - <id>844</id> + <id>846</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8443,7 +8481,7 @@ </toolTip> <extendedTooltip> <name>СписокИсходящиеРассмотреноРасширеннаяПодсказка</name> - <id>839</id> + <id>841</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8466,7 +8504,7 @@ </userVisible> <extendedTooltip> <name>ИзменитьИсходящиеРасширеннаяПодсказка</name> - <id>846</id> + <id>848</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8492,7 +8530,7 @@ </userVisible> <extendedTooltip> <name>СкопироватьИсходящиеРасширеннаяПодсказка</name> - <id>847</id> + <id>849</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8521,7 +8559,7 @@ </userVisible> <extendedTooltip> <name>УстановитьПометкуУдаленияИсходящиеРасширеннаяПодсказка</name> - <id>849</id> + <id>851</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8553,7 +8591,7 @@ </toolTip> <extendedTooltip> <name>ГруппаСписокУстановитьПометкуУдаленияИсходящиеРасширеннаяПодсказка</name> - <id>848</id> + <id>850</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8576,7 +8614,7 @@ </userVisible> <extendedTooltip> <name>НайтиИсходящиеРасширеннаяПодсказка</name> - <id>851</id> + <id>853</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8603,7 +8641,7 @@ </userVisible> <extendedTooltip> <name>ОтменитьПоискИсходящиеРасширеннаяПодсказка</name> - <id>852</id> + <id>854</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8630,7 +8668,7 @@ </userVisible> <extendedTooltip> <name>УстановитьИнтервалДатИсходящиеРасширеннаяПодсказка</name> - <id>853</id> + <id>855</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8661,7 +8699,7 @@ </toolTip> <extendedTooltip> <name>ГруппаНайтиИсходящиеРасширеннаяПодсказка</name> - <id>850</id> + <id>852</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8686,7 +8724,7 @@ </toolTip> <extendedTooltip> <name>ГруппаКомандыСпискаИсходящиеРасширеннаяПодсказка</name> - <id>845</id> + <id>847</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8706,7 +8744,7 @@ </userVisible> <extendedTooltip> <name>СписокОбновитьИсходящиеРасширеннаяПодсказка</name> - <id>854</id> + <id>856</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8733,7 +8771,7 @@ </userVisible> <extendedTooltip> <name>СписокНастройкаСпискаИсходящиеРасширеннаяПодсказка</name> - <id>855</id> + <id>857</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8759,7 +8797,7 @@ </userVisible> <extendedTooltip> <name>СписокВывестиСписокИсходящиеРасширеннаяПодсказка</name> - <id>856</id> + <id>858</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8785,7 +8823,7 @@ </userVisible> <extendedTooltip> <name>СписокСправкаИсходящиеРасширеннаяПодсказка</name> - <id>857</id> + <id>859</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8811,7 +8849,7 @@ </userVisible> <extendedTooltip> <name>ФормаПерсональныеНастройкиИсходящиеРасширеннаяПодсказка</name> - <id>858</id> + <id>860</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8852,10 +8890,10 @@ </handlers> <searchStringAddition> <name>СписокИсходящиеСтрокаПоиска</name> - <id>860</id> + <id>862</id> <extendedTooltip> <name>СписокИсходящиеСтрокаПоискаРасширеннаяПодсказка</name> - <id>862</id> + <id>864</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8865,7 +8903,7 @@ </extendedTooltip> <contextMenu> <name>СписокИсходящиеСтрокаПоискаКонтекстноеМеню</name> - <id>861</id> + <id>863</id> <autoFill>true</autoFill> </contextMenu> <source>СписокИсходящие</source> @@ -8875,10 +8913,10 @@ </searchStringAddition> <viewStatusAddition> <name>СписокИсходящиеСостояниеПросмотра</name> - <id>863</id> + <id>865</id> <extendedTooltip> <name>СписокИсходящиеСостояниеПросмотраРасширеннаяПодсказка</name> - <id>865</id> + <id>867</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8888,7 +8926,7 @@ </extendedTooltip> <contextMenu> <name>СписокИсходящиеСостояниеПросмотраКонтекстноеМеню</name> - <id>864</id> + <id>866</id> <autoFill>true</autoFill> </contextMenu> <type>ViewStatusAddition</type> @@ -8899,10 +8937,10 @@ </viewStatusAddition> <searchControlAddition> <name>СписокИсходящиеУправлениеПоиском</name> - <id>866</id> + <id>868</id> <extendedTooltip> <name>СписокИсходящиеУправлениеПоискомРасширеннаяПодсказка</name> - <id>868</id> + <id>870</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8912,7 +8950,7 @@ </extendedTooltip> <contextMenu> <name>СписокИсходящиеУправлениеПоискомКонтекстноеМеню</name> - <id>867</id> + <id>869</id> <autoFill>true</autoFill> </contextMenu> <type>SearchControlAddition</type> @@ -8923,7 +8961,7 @@ </searchControlAddition> <extendedTooltip> <name>СписокИсходящиеРасширеннаяПодсказка</name> - <id>859</id> + <id>861</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8944,7 +8982,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюПереслатьРасширеннаяПодсказка</name> - <id>823</id> + <id>825</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8970,7 +9008,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюИзменитьРасширеннаяПодсказка</name> - <id>824</id> + <id>826</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -8996,7 +9034,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюДобавитьВЗакладкиИсходящиеРасширеннаяПодсказка</name> - <id>825</id> + <id>827</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9022,7 +9060,7 @@ </userVisible> <extendedTooltip> <name>СписокКонтекстноеМенюПеренестиВПапкуИсходящиеРасширеннаяПодсказка</name> - <id>826</id> + <id>828</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9051,7 +9089,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюУстановитьПризнакРассмотреноРасширеннаяПодсказка</name> - <id>828</id> + <id>830</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9077,7 +9115,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюОтложитьРассмотрениеСписокРасширеннаяПодсказка</name> - <id>829</id> + <id>831</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9103,7 +9141,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюПредметСписокРасширеннаяПодсказка</name> - <id>830</id> + <id>832</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9134,7 +9172,7 @@ </toolTip> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюГруппаРассмотрениеПредметРасширеннаяПодсказка</name> - <id>827</id> + <id>829</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9154,7 +9192,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюДобавитьВЗакладкиРасширеннаяПодсказка</name> - <id>831</id> + <id>833</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9180,7 +9218,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюПеренестиВПапкуРасширеннаяПодсказка</name> - <id>832</id> + <id>834</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9206,7 +9244,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюВзаимодействияПоПредметуРасширеннаяПодсказка</name> - <id>833</id> + <id>835</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9235,7 +9273,7 @@ </userVisible> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюУстановитьПометкуУдаленияРасширеннаяПодсказка</name> - <id>835</id> + <id>837</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9266,7 +9304,7 @@ </toolTip> <extendedTooltip> <name>СписокИсходящиеКонтекстноеМенюГруппаУдалитьРасширеннаяПодсказка</name> - <id>834</id> + <id>836</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9328,7 +9366,7 @@ </toolTip> <extendedTooltip> <name>СтраницаСписокИсходящиеРасширеннаяПодсказка</name> - <id>822</id> + <id>824</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9357,7 +9395,7 @@ </toolTip> <extendedTooltip> <name>СтраницыСписокРасширеннаяПодсказка</name> - <id>679</id> + <id>680</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9390,7 +9428,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ПредпросмотрОбычныйТекстРасширеннаяПодсказка</name> - <id>893</id> + <id>895</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9433,7 +9471,7 @@ <readOnly>true</readOnly> <extendedTooltip> <name>СтраницаПредпросмотрОбычныйТекстРасширеннаяПодсказка</name> - <id>892</id> + <id>894</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9464,7 +9502,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ПредпросмотрHTMLРасширеннаяПодсказка</name> - <id>896</id> + <id>898</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9510,7 +9548,7 @@ </toolTip> <extendedTooltip> <name>СтраницаПредпросмотрHTMLРасширеннаяПодсказка</name> - <id>895</id> + <id>897</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9539,7 +9577,7 @@ </toolTip> <extendedTooltip> <name>СтраницыПредпросмотрРасширеннаяПодсказка</name> - <id>891</id> + <id>893</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9566,7 +9604,7 @@ <titleLocation>None</titleLocation> <extendedTooltip> <name>ОписаниеНайденоППРасширеннаяПодсказка</name> - <id>898</id> + <id>900</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9607,7 +9645,7 @@ </toolTip> <extendedTooltip> <name>ГруппаСписокРасширеннаяПодсказка</name> - <id>678</id> + <id>679</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9640,7 +9678,7 @@ </toolTip> <extendedTooltip> <name>ГруппаОсновноеРасширеннаяПодсказка</name> - <id>425</id> + <id>426</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -9663,6 +9701,10 @@ <id>-1</id> <horizontalAlign>Left</horizontalAlign> </autoCommandBar> + <handlers> + <event>ChoiceProcessing</event> + <name>ОбработкаВыбора</name> + </handlers> <handlers> <event>NotificationProcessing</event> <name>ОбработкаОповещения</name> @@ -9741,22 +9783,61 @@ <queryText>ВЫБРАТЬ ВЫБОР КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.Встреча - ТОГДА 0 + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 10 + ИНАЧЕ 0 + КОНЕЦ КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.ЗапланированноеВзаимодействие - ТОГДА 1 + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 11 + ИНАЧЕ 1 + КОНЕЦ КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.ТелефонныйЗвонок - ТОГДА 2 + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 12 + ИНАЧЕ 2 + КОНЕЦ КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.ЭлектронноеПисьмоВходящее - ТОГДА 3 - ИНАЧЕ 4 - КОНЕЦ + ВЫБОР - КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления - ТОГДА 10 - ИНАЧЕ ВЫБОР - КОГДА ЖурналДокументовВзаимодействия.Рассмотрено - ТОГДА 5 - ИНАЧЕ 0 - КОНЕЦ + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 13 + ИНАЧЕ 3 + КОНЕЦ + КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.ЭлектронноеПисьмоИсходящее + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 14 + ИНАЧЕ ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Черновик) + ТОГДА 15 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее) + ТОГДА 16 + ИНАЧЕ 4 + КОНЕЦ + КОНЕЦ + КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.СообщениеSMS + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 22 + ИНАЧЕ ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Черновик) + ТОГДА 17 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Исходящее) + ТОГДА 18 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Доставляется) + ТОГДА 19 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.ЧастичноДоставлено) + ТОГДА 21 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.НеДоставлено) + ТОГДА 23 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Доставлено) + ТОГДА 24 + ИНАЧЕ 17 + КОНЕЦ + КОНЕЦ КОНЕЦ КАК НомерКартинки, ЖурналДокументовВзаимодействия.Ссылка, ЖурналДокументовВзаимодействия.Дата, @@ -9780,8 +9861,10 @@ ВЫРАЗИТЬ(ЖурналДокументовВзаимодействия.Размер / 1024 КАК ЧИСЛО(10, 2)) КАК Размер, ЖурналДокументовВзаимодействия.Важность, ВЫБОР - КОГДА ЖурналДокументовВзаимодействия.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиВзаимодействия.Высокая) ТОГДА 2 - КОГДА ЖурналДокументовВзаимодействия.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиВзаимодействия.Низкая) ТОГДА 0 + КОГДА ЖурналДокументовВзаимодействия.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиВзаимодействия.Высокая) + ТОГДА 2 + КОГДА ЖурналДокументовВзаимодействия.Важность = ЗНАЧЕНИЕ(Перечисление.ВариантыВажностиВзаимодействия.Низкая) + ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК ВажностьНомерКартинки ИЗ @@ -9828,6 +9911,7 @@ <types>DocumentRef.ТелефонныйЗвонок</types> <types>DocumentRef.Встреча</types> <types>String</types> + <types>DocumentRef.СообщениеSMS</types> <types>TypeDescription</types> <stringQualifiers/> </valueType> @@ -11999,6 +12083,29 @@ <currentRowUse>Auto</currentRowUse> <selectedRowsUse>Auto</selectedRowsUse> </formCommands> + <formCommands> + <name>СоздатьСообщениеSMS</name> + <title> + <key>ru</key> + <value>Сообщение SMS</value> + + 29 + + ru + Создать сообщение SMS + + + true + + + + СоздатьСообщениеSMS + + + FunctionalOption.ИспользоватьПрочиеВзаимодействия + Auto + Auto + diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl index 9c1b1d8e2..797d97300 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСписка/Module.bsl @@ -1,3 +1,6 @@ +&НаКлиенте +Перем КонтекстВыбора; + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -7,6 +10,14 @@ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; + + Если ОбщегоНазначения.ПриСозданииФормыНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ) Тогда + Возврат; + КонецЕсли; + + Если Параметры.Свойство("РежимВыбора") И Параметры.РежимВыбора = Истина Тогда + РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца; + КонецЕсли; ИнформационнаяБазаФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая(); @@ -21,7 +32,7 @@ Для Каждого ТипПредмета Из Метаданные.Документы.ЭлектронноеПисьмоИсходящее.Реквизиты.Предмет.Тип.Типы() Цикл Если ТолькоПочта И (ТипПредмета = Тип("ДокументСсылка.Встреча") ИЛИ ТипПредмета = Тип("ДокументСсылка.ТелефонныйЗвонок") ИЛИ - ТипПредмета = Тип("ДокументСсылка.ЗапланированноеВзаимодействие")) Тогда + ТипПредмета = Тип("ДокументСсылка.ЗапланированноеВзаимодействие") ИЛИ ТипПредмета = Тип("ДокументСсылка.СообщениеSMS")) Тогда Продолжить; КонецЕсли; СписокВыбораТипаПредмета.Добавить(Метаданные.НайтиПоТипу(ТипПредмета).ПолноеИмя(), Строка(ТипПредмета)); @@ -124,6 +135,65 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если КонтекстВыбора = "ОтветственныйВыполнить" Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + УстановитьОтветственного(ВыбранноеЗначение, Неопределено); + КонецЕсли; + + ВосстановитьРаскрытыеУзлыДерева(); + + ИначеЕсли КонтекстВыбора = "ОтветственныйСписок" Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + ИмяТекущегоЭлемента = ТекущийЭлементСписок().Имя; + УстановитьОтветственного(ВыбранноеЗначение, Элементы[ИмяТекущегоЭлемента].ВыделенныеСтроки); + КонецЕсли; + + ВосстановитьРаскрытыеУзлыДерева(); + + ИначеЕсли КонтекстВыбора = "ПредметВыполнить" Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + УстановитьПредмет(ВыбранноеЗначение, Неопределено); + КонецЕсли; + + ВосстановитьРаскрытыеУзлыДерева(); + + ИначеЕсли КонтекстВыбора = "ПредметСписок" Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + ИмяТекущегоЭлемента = ТекущийЭлементСписок().Имя; + УстановитьПредмет(ВыбранноеЗначение, Элементы[ИмяТекущегоЭлемента].ВыделенныеСтроки); + КонецЕсли; + + ВосстановитьРаскрытыеУзлыДерева(); + + ИначеЕсли КонтекстВыбора = "ПеренестиВПапку" Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + + ИмяТекущегоЭлемента = ТекущийЭлемент.Имя; + ПапкиТекущиеДанные = Элементы.Папки.ТекущиеДанные; + + Если Лев(ИмяТекущегоЭлемента,6) = "Список" Тогда + ВыполнитьПереносВПапкуМассиваПисем(Элементы[ИмяТекущегоЭлемента].ВыделенныеСтроки, ВыбранноеЗначение); + Иначе + УстановитьРодителяУПапки(ПапкиТекущиеДанные.Значение, ВыбранноеЗначение); + КонецЕсли; + + ВосстановитьРаскрытыеУзлыДерева(); + + КонецЕсли; + + КонецЕсли; + + КонтекстВыбора = Неопределено; +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -302,7 +372,8 @@ СтруктураПараметры.Вставить("Родитель", ТекущиеДанные.Значение); КонецЕсли; - ОткрытьФормуМодально("Справочник.ПапкиЭлектронныхПисем.ФормаОбъекта",Новый Структура("ЗначенияЗаполнения",СтруктураПараметры), ЭтаФорма); + ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", СтруктураПараметры); + ОткрытьФорму("Справочник.ПапкиЭлектронныхПисем.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -703,7 +774,8 @@ КонецЕсли; - ОткрытьФормуМодально("Документ.ЭлектронноеПисьмоИсходящее.ФормаОбъекта", Новый Структура("Вложения",СписокИменФайлов), ЭтаФорма); + ПараметрыФормы = Новый Структура("Вложения", СписокИменФайлов); + ОткрытьФорму("Документ.ЭлектронноеПисьмоИсходящее.ФормаОбъекта", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -856,15 +928,12 @@ &НаКлиенте Процедура ОтветственныйВыполнить(Команда) - ВыбранныйОтветственный = ОткрытьФормуМодально("Справочник.Пользователи.Форма.ФормаСписка", - Новый Структура("РежимВыбора",Истина)); - Если ВыбранныйОтветственный <> Неопределено Тогда - - УстановитьОтветственного(ВыбранныйОтветственный,Неопределено); - - КонецЕсли; + КонтекстВыбора = "ОтветственныйВыполнить"; - ВосстановитьРаскрытыеУзлыДерева(); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора",Истина); + + ОткрытьФорму("Справочник.Пользователи.Форма.ФормаСписка", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -876,15 +945,12 @@ Возврат; КонецЕсли; - ВыбранныйОтветственный = ОткрытьФормуМодально("Справочник.Пользователи.Форма.ФормаСписка", - Новый Структура("РежимВыбора",Истина)); - Если ВыбранныйОтветственный <> Неопределено Тогда - - УстановитьОтветственного(ВыбранныйОтветственный,Элементы[ИмяТекущегоЭлемента].ВыделенныеСтроки); - - КонецЕсли; + КонтекстВыбора = "ОтветственныйСписок"; - ВосстановитьРаскрытыеУзлыДерева(); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора",Истина); + + ОткрытьФорму("Справочник.Пользователи.Форма.ФормаСписка", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -977,12 +1043,12 @@ Возврат; КонецЕсли; - Предмет = ОткрытьФормуМодально(ВыбранныйТипПредмета.Значение + ".ФормаВыбора"); - Если Предмет <> Неопределено Тогда - УстановитьПредмет(Предмет,Неопределено); - КонецЕсли; + КонтекстВыбора = "ПредметВыполнить"; - ВосстановитьРаскрытыеУзлыДерева(); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + + ОткрытьФорму(ВыбранныйТипПредмета.Значение + ".ФормаВыбора", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -999,12 +1065,12 @@ Возврат; КонецЕсли; - Предмет = ОткрытьФормуМодально(ВыбранныйТипПредмета.Значение + ".ФормаВыбора"); - Если Предмет <> Неопределено Тогда - УстановитьПредмет(Предмет,Элементы[ИмяТекущегоЭлемента].ВыделенныеСтроки); - КонецЕсли; + КонтекстВыбора = "ПредметСписок"; - ВосстановитьРаскрытыеУзлыДерева(); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + + ОткрытьФорму(ВыбранныйТипПредмета.Значение + ".ФормаВыбора", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -1062,7 +1128,7 @@ КонецЕсли; ДатаОтработки = ОбщегоНазначенияКлиент.ДатаСеанса(); - Если ВвестиДату(ДатаОтработки, "Отработать после") Тогда + Если ВвестиДату(ДатаОтработки, "Отработать после", ЧастиДаты.ДатаВремя) Тогда ОтложитьРассмотрение(ДатаОтработки,Неопределено); КонецЕсли; @@ -1079,7 +1145,7 @@ КонецЕсли; ДатаОтработки = ОбщегоНазначенияКлиент.ДатаСеанса(); - Если ВвестиДату(ДатаОтработки, "Отработать после") Тогда + Если ВвестиДату(ДатаОтработки, "Отработать после", ЧастиДаты.ДатаВремя) Тогда ОтложитьРассмотрение(ДатаОтработки, Элементы[ИмяТекущегоЭлемента].ВыделенныеСтроки); КонецЕсли; @@ -1115,6 +1181,13 @@ КонецПроцедуры +&НаКлиенте +Процедура СоздатьСообщениеSMS(Команда) + + СоздатьНовоеВзаимодействие("СообщениеSMS"); + +КонецПроцедуры + &НаКлиенте Процедура ПрименитьПравилаОбработки(Команда) @@ -1160,19 +1233,13 @@ КонецЕсли; КонецЕсли; - ВыбраннаяПапка = ОткрытьФормуМодально("Справочник.ПапкиЭлектронныхПисем.ФормаВыбора", - Новый Структура("Отбор",Новый Структура("Владелец", ПапкиТекущиеДанные.УчетнаяЗапись))); - Если ВыбраннаяПапка <> Неопределено Тогда - - Если Лев(ИмяТекущегоЭлемента,6) = "Список" Тогда - ВыполнитьПереносВПапкуМассиваПисем(Элементы[ИмяТекущегоЭлемента].ВыделенныеСтроки, ВыбраннаяПапка); - Иначе - УстановитьРодителяУПапки(ПапкиТекущиеДанные.Значение, ВыбраннаяПапка); - КонецЕсли; - - ВосстановитьРаскрытыеУзлыДерева(); - - КонецЕсли; + КонтекстВыбора = "ПеренестиВПапку"; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Отбор", Новый Структура("Владелец", ПапкиТекущиеДанные.УчетнаяЗапись)); + ПараметрыФормы.Вставить("РежимВыбора", Истина); + + ОткрытьФорму("Справочник.ПапкиЭлектронныхПисем.ФормаВыбора", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -1312,8 +1379,9 @@ Если НЕ ТекущиеДанные.ЭтоГруппа Тогда ИзменитьОтборСписок("Закладки",Новый Структура("Значение", ТекущиеДанные.Ссылка), ИмяТекущейСтраницы); Иначе - ГруппаОтбора = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора(Список.Отбор.Элементы, - "Отбор панели навигации", ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ); + ГруппаОтбора = ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора( + ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список).Элементы, + "Отбор панели навигации", ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ); КонецЕсли; КонецЕсли; ИначеЕсли Элементы.СтраницыПанелиНавигации.ТекущаяСтраница = Элементы.СтраницаСвойства Тогда @@ -1361,8 +1429,10 @@ &НаСервере Функция СоздатьГруппуОтбораПанелиНавигации() - Возврат ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора(Список.Отбор.Элементы,"Отбор панели навигации", - ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ); + Возврат ОбщегоНазначенияКлиентСервер.СоздатьГруппуЭлементовОтбора( + ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список).Элементы, + "Отбор панели навигации", + ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ); КонецФункции @@ -1412,7 +1482,7 @@ КонецФункции &НаСервере -Процедура УправлениеВидиомстьюСписков(ТекущаяСтраницаСписок) +Процедура УправлениеВидимостьюСписков(ТекущаяСтраницаСписок) Элементы.Список.Видимость = (ТекущаяСтраницаСписок = Элементы.СтраницаСписокОбычная); Элементы.СписокИсходящие.Видимость = (ТекущаяСтраницаСписок = Элементы.СтраницаСписокИсходящие); @@ -1428,7 +1498,7 @@ Если ДанныеДляОбработки.Значение = Нстр("ru = 'Все'") Тогда - Список.Отбор.Элементы.Удалить(ГруппаОтбора); + ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список).Элементы.Удалить(ГруппаОтбора); Возврат; КонецЕсли; @@ -1436,7 +1506,7 @@ Если ИмяТаблицы <> "Папки" И Элементы.СтраницыСписок.ТекущаяСтраница <> Элементы.СтраницаСписокОбычная Тогда ИмяСтраницыСписка = Элементы.СтраницаСписокОбычная.Имя; Элементы.СтраницыСписок.ТекущаяСтраница = Элементы.СтраницаСписокОбычная; - УправлениеВидиомстьюСписков(Элементы.СтраницаСписокОбычная); + УправлениеВидимостьюСписков(Элементы.СтраницаСписокОбычная); КонецЕсли; Если ИмяТаблицы = "Предметы" Тогда @@ -1468,6 +1538,7 @@ СписокТипов.Добавить(Тип("ДокументСсылка.ТелефонныйЗвонок")); СписокТипов.Добавить(Тип("ДокументСсылка.ЭлектронноеПисьмоВходящее")); СписокТипов.Добавить(Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее")); + СписокТипов.Добавить(Тип("ДокументСсылка.СообщениеSMS")); ПравоеЗначение = СписокТипов; @@ -1582,7 +1653,7 @@ СтраницаСписок = ОпределитьСтраницуСпискаДляПапки(ДанныеДляОбработки.Значение); Если Элементы.СтраницыСписок.ТекущаяСтраница <> СтраницаСписок Тогда Элементы.СтраницыСписок.ТекущаяСтраница = СтраницаСписок; - УправлениеВидиомстьюСписков(СтраницаСписок); + УправлениеВидимостьюСписков(СтраницаСписок); КонецЕсли; Иначе @@ -1593,7 +1664,7 @@ Если Элементы.СтраницыСписок.ТекущаяСтраница <> Элементы.СтраницаСписокОбычная Тогда Элементы.СтраницыСписок.ТекущаяСтраница = Элементы.СтраницаСписокОбычная; - УправлениеВидиомстьюСписков(Элементы.СтраницаСписокОбычная); + УправлениеВидимостьюСписков(Элементы.СтраницаСписокОбычная); КонецЕсли; КонецЕсли; @@ -1824,7 +1895,11 @@ Иначе ИмяТекущейСтраницы = Элементы.СтраницаПредпросмотрОбычныйТекст.Имя; - Предпросмотр = СсылкаДокументВзаимодействий.Описание; + Если ТипЗнч(СсылкаДокументВзаимодействий) = Тип("ДокументСсылка.СообщениеSMS") Тогда + Предпросмотр = СсылкаДокументВзаимодействий.ТекстСообщения; + Иначе + Предпросмотр = СсылкаДокументВзаимодействий.Описание; + КонецЕсли; ПредпросмотрHTML = ""; КонецЕсли; @@ -1880,15 +1955,16 @@ Элементы.СписокСоздатьВстречу.Видимость = НЕ ЭтоПапки; Элементы.СписокСоздатьЗапланированноеВзаимодействие.Видимость = НЕ ЭтоПапки; Элементы.СписокСоздатьТелефонныйЗвонок.Видимость = НЕ ЭтоПапки; + Элементы.СписокСоздатьСообщениеSMS.Видимость = НЕ ЭтоПапки; КонецПроцедуры &НаСервере Процедура УстановитьЗаголовокВидаПанелиНавигации() - Для каждого ПодчиченныйЭлемент Из Элементы.ВыборВариантаНавигации.ПодчиненныеЭлементы Цикл - Если ТипЗнч(ПодчиченныйЭлемент) = Тип("КнопкаФормы") Тогда - ПодчиченныйЭлемент.Пометка = Ложь; + Для каждого ПодчиненныйЭлемент Из Элементы.ВыборВариантаНавигации.ПодчиненныеЭлементы Цикл + Если ТипЗнч(ПодчиненныйЭлемент) = Тип("КнопкаФормы") Тогда + ПодчиненныйЭлемент.Пометка = Ложь; КонецЕсли; КонецЦикла; @@ -2232,6 +2308,7 @@ | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ТелефонныйЗвонок) | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ЭлектронноеПисьмоИсходящее) | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ЭлектронноеПисьмоВходящее) + | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.СообщениеSMS) | ТОГДА &СтрокаПредметНеУказан | ИНАЧЕ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) | КОНЕЦ @@ -2260,6 +2337,7 @@ | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ТелефонныйЗвонок) | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ЭлектронноеПисьмоИсходящее) | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ЭлектронноеПисьмоВходящее) + | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.СообщениеSMS) | ТОГДА &СтрокаПредметНеУказан | ИНАЧЕ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) | КОНЕЦ @@ -2281,7 +2359,8 @@ | ИЛИ ПредметыНеРассмотрено.Значение ССЫЛКА Документ.ЗапланированноеВзаимодействие | ИЛИ ПредметыНеРассмотрено.Значение ССЫЛКА Документ.ТелефонныйЗвонок | ИЛИ ПредметыНеРассмотрено.Значение ССЫЛКА Документ.ЭлектронноеПисьмоВходящее - | ИЛИ ПредметыНеРассмотрено.Значение ССЫЛКА Документ.ЭлектронноеПисьмоИсходящее) + | ИЛИ ПредметыНеРассмотрено.Значение ССЫЛКА Документ.ЭлектронноеПисьмоИсходящее + | ИЛИ ПредметыНеРассмотрено.Значение ССЫЛКА Документ.СообщениеSMS) | |ОБЪЕДИНИТЬ ВСЕ | @@ -2312,6 +2391,7 @@ | КОГДА ТИПЗНАЧЕНИЯ(ПредметыРассмотрено.Значение) = ТИП(Документ.ТелефонныйЗвонок) ТОГДА 3 | КОГДА ТИПЗНАЧЕНИЯ(ПредметыРассмотрено.Значение) = ТИП(Документ.ЭлектронноеПисьмоИсходящее) ТОГДА 5 | КОГДА ТИПЗНАЧЕНИЯ(ПредметыРассмотрено.Значение) = ТИП(Документ.ЭлектронноеПисьмоВходящее) ТОГДА 4 + | КОГДА ТИПЗНАЧЕНИЯ(ПредметыРассмотрено.Значение) = ТИП(Документ.СообщениеSMS) ТОГДА 9 | ИНАЧЕ 7 | КОНЕЦ | КОНЕЦ КАК НомерКартинки @@ -3047,6 +3127,7 @@ | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ТелефонныйЗвонок) | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ЭлектронноеПисьмоИсходящее) | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ЭлектронноеПисьмоВходящее) + | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.СообщениеSMS) | ТОГДА &ПрочиеВопросы | ИНАЧЕ &ПрочиеПредметы | КОНЕЦ @@ -3074,6 +3155,7 @@ | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ТелефонныйЗвонок) | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ЭлектронноеПисьмоИсходящее) | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.ЭлектронноеПисьмоВходящее) + | ИЛИ ТИПЗНАЧЕНИЯ(ПредметыВзаимодействий.Предмет) = ТИП(Документ.СообщениеSMS) | ТОГДА &ПрочиеВопросы | ИНАЧЕ &ПрочиеПредметы | КОНЕЦ @@ -3107,7 +3189,7 @@ | РеквизитыПредмета.Значение, | РеквизитыПредмета.НеРассмотрено, | РеквизитыПредмета.РеквизитДопУпорядочивания - |ПОМЕСТИТЬ РеквзитыПредметаСоединения + |ПОМЕСТИТЬ РеквизитыПредметаСоединения |ИЗ |РеквизитыПредмета КАК РеквизитыПредмета | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ЖурналДокументов.Взаимодействия КАК Взаимодействия @@ -3117,7 +3199,8 @@ | ИЛИ РеквизитыПредмета.Значение ССЫЛКА Документ.ЗапланированноеВзаимодействие | ИЛИ РеквизитыПредмета.Значение ССЫЛКА Документ.ТелефонныйЗвонок | ИЛИ РеквизитыПредмета.Значение ССЫЛКА Документ.ЭлектронноеПисьмоВходящее - | ИЛИ РеквизитыПредмета.Значение ССЫЛКА Документ.ЭлектронноеПисьмоИсходящее) + | ИЛИ РеквизитыПредмета.Значение ССЫЛКА Документ.ЭлектронноеПисьмоИсходящее + | ИЛИ РеквизитыПредмета.Значение ССЫЛКА Документ.СообщениеSMS) | |ОБЪЕДИНИТЬ ВСЕ | @@ -3146,10 +3229,11 @@ | КОГДА ТИПЗНАЧЕНИЯ(РеквизитыПредмета.Значение) = ТИП(Документ.ТелефонныйЗвонок) ТОГДА 3 | КОГДА ТИПЗНАЧЕНИЯ(РеквизитыПредмета.Значение) = ТИП(Документ.ЭлектронноеПисьмоИсходящее) ТОГДА 5 | КОГДА ТИПЗНАЧЕНИЯ(РеквизитыПредмета.Значение) = ТИП(Документ.ЭлектронноеПисьмоВходящее) ТОГДА 4 + | КОГДА ТИПЗНАЧЕНИЯ(РеквизитыПредмета.Значение) = ТИП(Документ.СообщениеSMS) ТОГДА 9 | ИНАЧЕ 7 | КОНЕЦ КАК НомерКартинки |ИЗ - | РеквзитыПредметаСоединения КАК РеквизитыПредмета + | РеквизитыПредметаСоединения КАК РеквизитыПредмета | ЛЕВОЕ СОЕДИНЕНИЕ ЖурналДокументов.Взаимодействия КАК Взаимодействия | ПО РеквизитыПредмета.Значение = Взаимодействия.Ссылка | @@ -3238,7 +3322,7 @@ &НаСервере Функция ПолучитьТекстЗапросаПоОтборуСписка(Запрос) - Если Список.Отбор.Элементы.Количество() > 0 Тогда + Если ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список).Элементы.Количество() > 0 Тогда СхемаОтборВзаимодействия = ЖурналыДокументов.Взаимодействия.ПолучитьМакет("СхемаОтборВзаимодействия"); @@ -3247,7 +3331,7 @@ КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаОтборВзаимодействия)); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаОтборВзаимодействия.НастройкиПоУмолчанию); - СкопироватьОтбор(КомпоновщикНастроек.Настройки.Отбор,Список.Отбор,,, Истина); + СкопироватьОтбор(КомпоновщикНастроек.Настройки.Отбор, ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список),,, Истина); Если ЗначениеЗаполнено(Элементы.Список.Период.ДатаНачала) ИЛИ ЗначениеЗаполнено(Элементы.Список.Период.ДатаОкончания) Тогда КомпоновщикНастроек.Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Интервал", Элементы.Список.Период); @@ -3845,8 +3929,9 @@ Возврат Результат; КонецЕсли; - ГруппаОтбораПоПанелиНавигации = ОбщегоНазначенияКлиентСервер.НайтиЭлементОтбораПоПредставлению(Список.Отбор.Элементы, - "Отбор панели навигации"); + ГруппаОтбораПоПанелиНавигации = ОбщегоНазначенияКлиентСервер.НайтиЭлементОтбораПоПредставлению( + ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список).Элементы, + "Отбор панели навигации"); Если ГруппаОтбораПоПанелиНавигации = Неопределено Тогда Результат.ТекстСообщенияОшибка = НСтр("ru = 'Не выбран элемент для добавления в закладки.'"); Возврат Результат; @@ -4106,9 +4191,9 @@ КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаОтбора)); КомпоновщикНастроек.ЗагрузитьНастройки(СхемаОтбора.НастройкиПоУмолчанию); - СкопироватьОтбор(КомпоновщикНастроек.Настройки.Отбор, Список.Отбор); + СкопироватьОтбор(КомпоновщикНастроек.Настройки.Отбор, ВзаимодействияКлиентСервер.ОтборДинамическогоСписка(Список)); - //Добавим отбор с видом сравнения НЕ для групповых комманд + //Добавим отбор с видом сравнения НЕ для групповых команд Если ЗначениеРеквизитаДопОтбора <> Неопределено Тогда ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяРеквизитаДопОтбора); @@ -4170,7 +4255,7 @@ КонецПроцедуры -// Обновить индекс полнотектового поиска. +// Обновить индекс полнотекстового поиска. &НаСервереБезКонтекста Процедура ОбновитьИндексППД() @@ -4219,8 +4304,7 @@ РасширенныйПоиск = Истина; ТекстОповещения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Найдено %1 %2.'"), ?(ТолькоПочта,НСтр("ru = 'писем'"), НСтр("ru = 'взаимодействий'")) + ": ", - Строка(КоличествоЭлементовНайдено) - ); + Строка(КоличествоЭлементовНайдено)); ПоказатьОповещениеПользователя(ТекстОповещения); ТекущиеДанные = ТекущийЭлементСписок().ТекущиеДанные; Если ТекущиеДанные <> Неопределено Тогда @@ -4269,8 +4353,7 @@ Список, "Поиск", Документы.ЭлектронноеПисьмоВходящее.ПустаяСсылка(), - ВидСравненияКомпоновкиДанных.Равно,, Истина - ); + ВидСравненияКомпоновкиДанных.Равно,, Истина); Элементы.СтрокаПоиска.ЦветФона = ЦветаСтиля.ОшибкаПолнотекстовыйПоискФон; Возврат НСтр("ru = 'Слишком много результатов, уточните запрос.'"); КонецЕсли; @@ -4281,8 +4364,7 @@ Список, "Поиск", Документы.ЭлектронноеПисьмоВходящее.ПустаяСсылка(), - ВидСравненияКомпоновкиДанных.Равно,, Истина - ); + ВидСравненияКомпоновкиДанных.Равно,, Истина); Элементы.СтрокаПоиска.ЦветФона = ЦветаСтиля.ОшибкаПолнотекстовыйПоискФон; Возврат НСтр("ru = 'Ничего не найдено'"); КонецЕсли; @@ -4324,8 +4406,7 @@ Список, "Поиск", Документы.ЭлектронноеПисьмоВходящее.ПустаяСсылка(), - ВидСравненияКомпоновкиДанных.Равно,, Истина - ); + ВидСравненияКомпоновкиДанных.Равно,, Истина); Элементы.СтрокаПоиска.ЦветФона = ЦветаСтиля.ОшибкаПолнотекстовыйПоискФон; Возврат НСтр("ru = 'Ничего не найдено.'"); КонецЕсли; @@ -4345,15 +4426,13 @@ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( "ИсторияПоискаВзаимодействия", , - Элементы.СтрокаПоиска.СписокВыбора.ВыгрузитьЗначения() - ); + Элементы.СтрокаПоиска.СписокВыбора.ВыгрузитьЗначения()); ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Поиск", ОписанияНайденоПП.Выгрузить(,"Взаимодействие").ВыгрузитьКолонку("Взаимодействие"), - ВидСравненияКомпоновкиДанных.ВСписке,, Истина - ); + ВидСравненияКомпоновкиДанных.ВСписке,, Истина); Элементы.СтрокаПоиска.ЦветФона = ЦветаСтиля.ЦветФонаПоля; Возврат Неопределено; @@ -4554,4 +4633,3 @@ КонецЦикла; КонецПроцедуры - diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Form.form b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Form.form index 9878e0e61..62ed300d0 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Form.form +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Form.form @@ -17,7 +17,7 @@ ПереключитьРежимПросмотраРасширеннаяПодсказка - 147 + 148 Label true true @@ -53,7 +53,7 @@ ТипВзаимодействияРасширеннаяПодсказка - 148 + 149 Label true true @@ -192,6 +192,15 @@ ВходящиеЗвонки + + + ru + Сообщения SMS + + + СообщенияSMS + + Normal
            @@ -212,7 +221,7 @@ СтатусРасширеннаяПодсказка - 150 + 151 Label true true @@ -300,7 +309,7 @@ ОтветственныйРасширеннаяПодсказка - 152 + 153 Label true true @@ -319,8 +328,10 @@ Left true + 35 true true + false true true true @@ -340,7 +351,7 @@ true ГруппаФильтрыРасширеннаяПодсказка - 146 + 147 Label true true @@ -391,7 +402,7 @@ ДатаРасширеннаяПодсказка - 197 + 199 Label true true @@ -436,7 +447,7 @@ УчастникиРасширеннаяПодсказка - 199 + 201 Label true true @@ -480,7 +491,7 @@ ТемаРасширеннаяПодсказка - 201 + 203 Label true true @@ -524,7 +535,7 @@ СписокСоздатьЭлектронноеПисьмоОтдельнаяКнопкаРасширеннаяПодсказка - 160 + 161 Label true true @@ -556,7 +567,7 @@ СписокСоздатьВстречуРасширеннаяПодсказка - 162 + 163 Label true true @@ -582,7 +593,7 @@ СписокСоздатьЗапланированноеВзаимодействиеРасширеннаяПодсказка - 163 + 164 Label true true @@ -598,6 +609,32 @@ UserCmds Auto
            + + СписокСоздатьСообщениеSMS + 146 + true + true + + true + + + СписокСоздатьСообщениеSMSРасширеннаяПодсказка + 165 + Label + true + true + + Left + + + Form.Command.СоздатьСообщениеSMS + Normal + Auto + true + true + UserCmds + Auto + СписокСоздатьТелефонныйЗвонок 94 @@ -608,7 +645,7 @@ СписокСоздатьТелефонныйЗвонокРасширеннаяПодсказка - 164 + 166 Label true true @@ -634,7 +671,7 @@ СписокСоздатьЭлектронноеПисьмоРасширеннаяПодсказка - 165 + 167 Label true true @@ -665,7 +702,7 @@ ГруппаСоздатьРасширеннаяПодсказка - 161 + 162 Label true true @@ -696,7 +733,7 @@ false КомандаРассмотреноРасширеннаяПодсказка - 167 + 169 Label true true @@ -722,7 +759,7 @@ СписокНеРассмотреноРасширеннаяПодсказка - 168 + 170 Label true true @@ -750,7 +787,7 @@ false ОтложитьРассмотрениеРасширеннаяПодсказка - 169 + 171 Label true true @@ -777,7 +814,7 @@ false КомандаОтветственныйРасширеннаяПодсказка - 170 + 172 Label true true @@ -804,7 +841,7 @@ false КомандаПредметРасширеннаяПодсказка - 171 + 173 Label true true @@ -835,7 +872,7 @@ ГруппаКомандыВзаимодействийРасширеннаяПодсказка - 166 + 168 Label true true @@ -861,7 +898,7 @@ НайтиРасширеннаяПодсказка - 174 + 176 Label true true @@ -887,7 +924,7 @@ ОтменитьПоискРасширеннаяПодсказка - 175 + 177 Label true true @@ -913,7 +950,7 @@ УстановитьИнтервалДатРасширеннаяПодсказка - 176 + 178 Label true true @@ -944,7 +981,7 @@ ГруппаНайтиРасширеннаяПодсказка - 173 + 175 Label true true @@ -964,7 +1001,7 @@ ИзменитьРасширеннаяПодсказка - 177 + 179 Label true true @@ -990,7 +1027,7 @@ СкопироватьРасширеннаяПодсказка - 178 + 180 Label true true @@ -1020,7 +1057,7 @@ УстановитьПометкуУдаленияРасширеннаяПодсказка - 180 + 182 Label true true @@ -1052,7 +1089,7 @@ ГруппаСписокУстановитьПометкуУдаленияРасширеннаяПодсказка - 179 + 181 Label true true @@ -1077,7 +1114,7 @@ ГруппаКомандыСпискаРасширеннаяПодсказка - 172 + 174 Label true true @@ -1097,7 +1134,7 @@ СписокОбновитьРасширеннаяПодсказка - 181 + 183 Label true true @@ -1123,7 +1160,7 @@ СписокПереключитьРежимПросмотраРасширеннаяПодсказка - 182 + 184 Label true true @@ -1150,7 +1187,7 @@ СписокНастройкаСпискаРасширеннаяПодсказка - 183 + 185 Label true true @@ -1176,7 +1213,7 @@ СписокВывестиСписокРасширеннаяПодсказка - 184 + 186 Label true true @@ -1202,7 +1239,7 @@ СписокСправкаРасширеннаяПодсказка - 185 + 187 Label true true @@ -1228,7 +1265,7 @@ СписокИзменитьФормуРасширеннаяПодсказка - 186 + 188 Label true true @@ -1252,10 +1289,10 @@ СписокСтрокаПоиска - 188 + 190 СписокСтрокаПоискаРасширеннаяПодсказка - 190 + 192 Label true true @@ -1265,7 +1302,7 @@ СписокСтрокаПоискаКонтекстноеМеню - 189 + 191 true Список @@ -1275,10 +1312,10 @@ СписокСостояниеПросмотра - 191 + 193 СписокСостояниеПросмотраРасширеннаяПодсказка - 193 + 195 Label true true @@ -1288,7 +1325,7 @@ СписокСостояниеПросмотраКонтекстноеМеню - 192 + 194 true ViewStatusAddition @@ -1299,10 +1336,10 @@ СписокУправлениеПоиском - 194 + 196 СписокУправлениеПоискомРасширеннаяПодсказка - 196 + 198 Label true true @@ -1312,7 +1349,7 @@ СписокУправлениеПоискомКонтекстноеМеню - 195 + 197 true SearchControlAddition @@ -1323,7 +1360,7 @@ СписокРасширеннаяПодсказка - 187 + 189 Label true true @@ -1345,7 +1382,7 @@ false ОтложитьРасширеннаяПодсказка - 156 + 157 Label true true @@ -1372,7 +1409,7 @@ false УстановитьРассмотреноРасширеннаяПодсказка - 157 + 158 Label true true @@ -1399,7 +1436,7 @@ false УстановитьОтветственногоРасширеннаяПодсказка - 158 + 159 Label true true @@ -1426,7 +1463,7 @@ false УстановитьПредметРасширеннаяПодсказка - 159 + 160 Label true true @@ -1497,7 +1534,7 @@ СтраницаСписокРасширеннаяПодсказка - 155 + 156 Label true true @@ -1553,7 +1590,7 @@ None ДеревоВзаимодействийНомерКартинкиРасширеннаяПодсказка - 242 + 244 Label true true @@ -1598,7 +1635,7 @@ ДеревоВзаимодействийДатаРасширеннаяПодсказка - 244 + 246 Label true true @@ -1643,7 +1680,7 @@ ДатаКартинкаРасширеннаяПодсказка - 241 + 243 Label true true @@ -1671,7 +1708,7 @@ ДеревоВзаимодействийУчастникиРасширеннаяПодсказка - 246 + 248 Label true true @@ -1714,7 +1751,7 @@ ДеревоВзаимодействийТемаРасширеннаяПодсказка - 248 + 250 Label true true @@ -1763,7 +1800,7 @@ СписокСоздатьЭлектронноеПисьмоОтдельнаяКнопкаДеревоРасширеннаяПодсказка - 212 + 214 Label true true @@ -1795,7 +1832,7 @@ СписокСоздатьВстречуДеревоРасширеннаяПодсказка - 214 + 216 Label true true @@ -1821,7 +1858,7 @@ СписокСоздатьЗапланированноеВзаимодействиеДеревоРасширеннаяПодсказка - 215 + 217 Label true true @@ -1847,7 +1884,7 @@ СписокСоздатьТелефонныйЗвонокДеревоРасширеннаяПодсказка - 216 + 218 Label true true @@ -1873,7 +1910,7 @@ СписокСоздатьЭлектронноеПисьмоДеревоРасширеннаяПодсказка - 217 + 219 Label true true @@ -1904,7 +1941,7 @@ ГруппаСоздатьДеревоРасширеннаяПодсказка - 213 + 215 Label true true @@ -1935,7 +1972,7 @@ false КомандаРассмотреноДеревоРасширеннаяПодсказка - 219 + 221 Label true true @@ -1961,7 +1998,7 @@ ДеревоВзаимодействийНеРассмотреноРасширеннаяПодсказка - 220 + 222 Label true true @@ -1989,7 +2026,7 @@ false ОтложитьРассмотрениеДеревоРасширеннаяПодсказка - 221 + 223 Label true true @@ -2016,7 +2053,7 @@ false КомандаОтветственныйДеревоРасширеннаяПодсказка - 222 + 224 Label true true @@ -2043,7 +2080,7 @@ false КомандаПредметДеревоРасширеннаяПодсказка - 223 + 225 Label true true @@ -2074,7 +2111,7 @@ ГруппаКомандыВзаимодействийДеревоРасширеннаяПодсказка - 218 + 220 Label true true @@ -2094,7 +2131,7 @@ ДеревоВзаимодействийУстановитьИнтервалРасширеннаяПодсказка - 224 + 226 Label true true @@ -2123,7 +2160,7 @@ ДеревоВзаимодействийИзменитьРасширеннаяПодсказка - 226 + 228 Label true true @@ -2149,7 +2186,7 @@ ДеревоВзаимодействийСкопироватьРасширеннаяПодсказка - 227 + 229 Label true true @@ -2180,7 +2217,7 @@ ДеревоВзаимодействийУдалитьРасширеннаяПодсказка - 228 + 230 Label true true @@ -2215,7 +2252,7 @@ ГруппаСтандартныеКомандыДеревоРасширеннаяПодсказка - 225 + 227 Label true true @@ -2235,7 +2272,7 @@ ДеревоВзаимодействийПереключитьРежимПросмотраРасширеннаяПодсказка - 229 + 231 Label true true @@ -2266,7 +2303,7 @@ ОбновитьДеревоРасширеннаяПодсказка - 230 + 232 Label true true @@ -2306,10 +2343,10 @@ ДеревоВзаимодействийСтрокаПоиска - 232 + 234 ДеревоВзаимодействийСтрокаПоискаРасширеннаяПодсказка - 234 + 236 Label true true @@ -2319,7 +2356,7 @@ ДеревоВзаимодействийСтрокаПоискаКонтекстноеМеню - 233 + 235 true ДеревоВзаимодействий @@ -2329,10 +2366,10 @@ ДеревоВзаимодействийСостояниеПросмотра - 235 + 237 ДеревоВзаимодействийСостояниеПросмотраРасширеннаяПодсказка - 237 + 239 Label true true @@ -2342,7 +2379,7 @@ ДеревоВзаимодействийСостояниеПросмотраКонтекстноеМеню - 236 + 238 true ViewStatusAddition @@ -2353,10 +2390,10 @@ ДеревоВзаимодействийУправлениеПоиском - 238 + 240 ДеревоВзаимодействийУправлениеПоискомРасширеннаяПодсказка - 240 + 242 Label true true @@ -2366,7 +2403,7 @@ ДеревоВзаимодействийУправлениеПоискомКонтекстноеМеню - 239 + 241 true SearchControlAddition @@ -2377,7 +2414,7 @@ ДеревоВзаимодействийРасширеннаяПодсказка - 231 + 233 Label true true @@ -2440,7 +2477,7 @@ СтраницаДеревоРасширеннаяПодсказка - 211 + 213 Label true true @@ -2469,7 +2506,7 @@ СтраницыСписокДеревоРасширеннаяПодсказка - 154 + 155 Label true true @@ -2487,6 +2524,10 @@ -1 Left + + ChoiceProcessing + ОбработкаВыбора + NotificationProcessing ОбработкаОповещения @@ -2551,22 +2592,61 @@ ВЫБРАТЬ ВЫБОР КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.Встреча - ТОГДА 0 + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 10 + ИНАЧЕ 0 + КОНЕЦ КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.ЗапланированноеВзаимодействие - ТОГДА 1 + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 11 + ИНАЧЕ 1 + КОНЕЦ КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.ТелефонныйЗвонок - ТОГДА 2 + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 12 + ИНАЧЕ 2 + КОНЕЦ КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.ЭлектронноеПисьмоВходящее - ТОГДА 3 - ИНАЧЕ 4 - КОНЕЦ + ВЫБОР - КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления - ТОГДА 10 - ИНАЧЕ ВЫБОР - КОГДА ЖурналДокументовВзаимодействия.Рассмотрено - ТОГДА 5 - ИНАЧЕ 0 - КОНЕЦ + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 13 + ИНАЧЕ 3 + КОНЕЦ + КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.ЭлектронноеПисьмоИсходящее + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 14 + ИНАЧЕ ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Черновик) + ТОГДА 15 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее) + ТОГДА 16 + ИНАЧЕ 4 + КОНЕЦ + КОНЕЦ + КОГДА ЖурналДокументовВзаимодействия.Ссылка ССЫЛКА Документ.СообщениеSMS + ТОГДА ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.ПометкаУдаления + ТОГДА 22 + ИНАЧЕ ВЫБОР + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Черновик) + ТОГДА 17 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Исходящее) + ТОГДА 18 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Доставляется) + ТОГДА 19 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.ЧастичноДоставлено) + ТОГДА 21 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.НеДоставлено) + ТОГДА 23 + КОГДА ЖурналДокументовВзаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Доставлено) + ТОГДА 24 + ИНАЧЕ 17 + КОНЕЦ + КОНЕЦ КОНЕЦ КАК НомерКартинки, ЖурналДокументовВзаимодействия.Ссылка, ЖурналДокументовВзаимодействия.Дата, @@ -2689,6 +2769,7 @@ DocumentRef.ЭлектронноеПисьмоВходящее DocumentRef.ТелефонныйЗвонок DocumentRef.Встреча + DocumentRef.СообщениеSMS true @@ -2746,6 +2827,7 @@ DocumentRef.ЭлектронноеПисьмоВходящее DocumentRef.ТелефонныйЗвонок DocumentRef.Встреча + DocumentRef.СообщениеSMS true @@ -3316,6 +3398,32 @@ Auto Auto + + СоздатьСообщениеSMS + + <key>ru</key> + <value>Сообщение SMS</value> + + 13 + + ru + Создать сообщение SMS + + + true + + + StdPicture.CreateListItem + + + + СоздатьСообщениеSMS + + + FunctionalOption.ИспользоватьПрочиеВзаимодействия + Auto + Auto + diff --git a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Module.bsl b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Module.bsl index c3da142db..d36a23d8f 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Module.bsl +++ b/SSL/src/DocumentJournals/Взаимодействия/Forms/ФормаСпискаПараметрическая/Module.bsl @@ -1,3 +1,5 @@ +&НаКлиенте +Перем КонтекстВыбора; //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -32,9 +34,8 @@ КонецЕсли; КонецЕсли; - ОтборПоПредмету = Истина; - ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Предмет", - ПредметДляОтбора,ВидСравненияКомпоновкиДанных.Равно,,Истина); + Параметры.Отбор.Удалить("Предмет"); + УстановитьОтборПоПредмету(); ИначеЕсли Параметры.Отбор.Свойство("Контакт") Тогда @@ -67,7 +68,13 @@ Статус = "Все"; КонецЕсли; Ответственный = Настройки.Получить("Ответственный"); + Если Ответственный <> Неопределено Тогда + Настройки.Удалить("Ответственный"); + КонецЕсли; ВВидеДерева = Настройки.Получить("ВВидеДерева"); + Если ВВидеДерева <> Неопределено Тогда + Настройки.Удалить("ВВидеДерева"); + КонецЕсли; Взаимодействия.ПриЗагрузкеТипаВзаимодействийИзНастроек(ЭтаФорма, Настройки); @@ -82,12 +89,65 @@ Если Элементы.СтраницыСписокДерево.ТекущаяСтраница = Элементы.СтраницаДерево Тогда ЗаполнитьДеревоВзаимодействийКлиент(); Иначе - УстановитьОтборПоКонтакту(); + Если ОтборПоПредмету Тогда + УстановитьОтборПоПредмету(); + Иначе + УстановитьОтборПоКонтакту(); + КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Справочник.Пользователи.Форма.ФормаСписка") Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + + ВыполненаЗамена = Ложь; + УстановитьОтветственного(ВыбранноеЗначение, ВыполненаЗамена); + + Если Элементы.СтраницыСписокДерево.ТекущаяСтраница = Элементы.СтраницаСписок Тогда + Если ВыполненаЗамена Тогда + Элементы.Список.Обновить(); + КонецЕсли; + Иначе + Если ВыполненаЗамена Тогда + РазвернутьВсеСтрокиДерева(); + КонецЕсли; + КонецЕсли; + + КонецЕсли; + + ИначеЕсли КонтекстВыбора = "ПредметВыполнить" Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + + Если ОтборПоПредмету И ПредметДляОтбора = ВыбранноеЗначение Тогда + Возврат; + КонецЕсли; + + ВыполненаЗамена = Ложь; + УстановитьПредмет(ВыбранноеЗначение, ВыполненаЗамена); + + Если Элементы.СтраницыСписокДерево.ТекущаяСтраница = Элементы.СтраницаСписок Тогда + Если ВыполненаЗамена Тогда + Элементы.Список.Обновить(); + КонецЕсли; + Иначе + Если ВыполненаЗамена Тогда + РазвернутьВсеСтрокиДерева(); + КонецЕсли; + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -196,17 +256,17 @@ ИначеЕсли ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.Встреча") Тогда - ОткрытьФормуМодально("Документ.Встреча.ФормаОбъекта", + ОткрытьФорму("Документ.Встреча.ФормаОбъекта", Новый Структура("ЗначениеКопирования", ТекущиеДанные.Ссылка), ЭтаФорма); ИначеЕсли ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ЗапланированноеВзаимодействие") Тогда - ОткрытьФормуМодально("Документ.ЗапланированноеВзаимодействие.ФормаОбъекта", + ОткрытьФорму("Документ.ЗапланированноеВзаимодействие.ФормаОбъекта", Новый Структура("ЗначениеКопирования", ТекущиеДанные.Ссылка), ЭтаФорма); ИначеЕсли ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ТелефонныйЗвонок") Тогда - ОткрытьФормуМодально("Документ.ТелефонныйЗвонок.ФормаОбъекта", + ОткрытьФорму("Документ.ТелефонныйЗвонок.ФормаОбъекта", Новый Структура("ЗначениеКопирования",ТекущиеДанные.Ссылка), ЭтаФорма); КонецЕсли; @@ -272,30 +332,13 @@ Если НЕ ВыборКорректен() Тогда Возврат; КонецЕсли; - - ВыбранныйОтветственный = - ОткрытьФормуМодально("Справочник.Пользователи.Форма.ФормаСписка", Новый Структура("РежимВыбора",Истина)); - Если ВыбранныйОтветственный <> Неопределено Тогда - - ВыполненаЗамена = Ложь; - УстановитьОтветственного(ВыбранныйОтветственный,ВыполненаЗамена); - - Если Элементы.СтраницыСписокДерево.ТекущаяСтраница = Элементы.СтраницаСписок Тогда - - Если ВыполненаЗамена Тогда - Элементы.Список.Обновить(); - КонецЕсли; - - Иначе - - Если ВыполненаЗамена Тогда - РазвернутьВсеСтрокиДерева(); - КонецЕсли; - - КонецЕсли; - - КонецЕсли; + КонтекстВыбора = Неопределено; + + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + + ОткрытьФорму("Справочник.Пользователи.Форма.ФормаСписка", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -313,33 +356,12 @@ Возврат; КонецЕсли; - ВыбранныйПредмет = - ОткрытьФормуМодально(ВыбранныйТипПредмета.Значение + ".ФормаВыбора"); + КонтекстВыбора = "ПредметВыполнить"; - Если ВыбранныйПредмет <> Неопределено Тогда - - Если ОтборПоПредмету И ПредметДляОтбора = ВыбранныйПредмет Тогда - Возврат; - КонецЕсли; - - ВыполненаЗамена = Ложь; - УстановитьПредмет(ВыбранныйПредмет,ВыполненаЗамена); - - Если Элементы.СтраницыСписокДерево.ТекущаяСтраница = Элементы.СтраницаСписок Тогда - - Если ВыполненаЗамена Тогда - Элементы.Список.Обновить(); - КонецЕсли; - - Иначе - - Если ВыполненаЗамена Тогда - РазвернутьВсеСтрокиДерева(); - КонецЕсли; - - КонецЕсли; - - КонецЕсли; + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("РежимВыбора", Истина); + + ОткрытьФорму(ВыбранныйТипПредмета.Значение + ".ФормаВыбора", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -424,6 +446,13 @@ КонецПроцедуры +&НаКлиенте +Процедура СоздатьСообщениеSMS(Команда) + + СоздатьНовоеВзаимодействие("СообщениеSMS"); + +КонецПроцедуры + &НаКлиенте Процедура ПереключитьРежимПросмотра(Команда) @@ -833,6 +862,11 @@ ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ОтборНастройщикаКомпоновок, "Входящий",ВидСравненияКомпоновкиДанных.Равно,Истина); + ИначеЕсли ТипВзаимодействия = "СообщенияSMS" Тогда + + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(ОтборНастройщикаКомпоновок, + "Тип",ВидСравненияКомпоновкиДанных.Равно,Тип("ДокументСсылка.СообщениеSMS")); + КонецЕсли; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаОтбора, КомпоновщикНастроек.ПолучитьНастройки(),,, @@ -983,6 +1017,15 @@ |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ + | СообщениеSMSАдресаты.Ссылка + |ИЗ + | Документ.СообщениеSMS.Адресаты КАК СообщениеSMSАдресаты + |ГДЕ + | СообщениеSMSАдресаты.Контакт В(&Контакт) + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ | ТелефонныйЗвонок.Ссылка |ИЗ | Документ.ТелефонныйЗвонок КАК ТелефонныйЗвонок @@ -1016,7 +1059,6 @@ |ГДЕ | ЗапланированноеВзаимодействиеУчастники.Контакт В(&Контакт)"); - МассивПараметрКонтакт = ПолучитьПараметрКонтактВЗависимостиОтТипа(Контакт); Если МассивПараметрКонтакт.Количество() = 0 Тогда МассивПараметрКонтакт.Добавить(Контакт); @@ -1026,9 +1068,17 @@ СписокОтбора = Новый СписокЗначений; СписокОтбора.ЗагрузитьЗначения( - Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка") - ); + Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка")); ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Ссылка",СписокОтбора,ВидСравненияКомпоновкиДанных.ВСписке,,Истина); КонецПроцедуры + +&НаСервере +Процедура УстановитьОтборПоПредмету() + + ОтборПоПредмету = Истина; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Предмет", + ПредметДляОтбора,ВидСравненияКомпоновкиДанных.Равно,,Истина); + +КонецПроцедуры diff --git a/SSL/src/DocumentJournals/Взаимодействия/Templates/ИерархияВзаимодействийКонтакт/Template.dcs b/SSL/src/DocumentJournals/Взаимодействия/Templates/ИерархияВзаимодействийКонтакт/Template.dcs index fc6256dc4..24f57c35a 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Templates/ИерархияВзаимодействийКонтакт/Template.dcs +++ b/SSL/src/DocumentJournals/Взаимодействия/Templates/ИерархияВзаимодействийКонтакт/Template.dcs @@ -74,6 +74,19 @@ ВстречаУчастники.Контакт В(&Контакт) {ГДЕ (Встреча.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания)} + +ОБЪЕДИНИТЬ ВСЕ + +ВЫБРАТЬ + СообщениеSMSАдресаты.Ссылка КАК Ссылка +ИЗ + Документ.СообщениеSMS.Адресаты КАК СообщениеSMSАдресаты + ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СообщениеSMS КАК СообщениеSMS + ПО СообщениеSMSАдресаты.Ссылка = СообщениеSMS.Ссылка +ГДЕ + СообщениеSMSАдресаты.Контакт В(&Контакт) +{ГДЕ + (СообщениеSMS.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания)} ОБЪЕДИНИТЬ ВСЕ @@ -149,22 +162,61 @@ ВЫБРАТЬ ВЫБОР КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.Встреча - ТОГДА 0 + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 10 + ИНАЧЕ 0 + КОНЕЦ КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.ЗапланированноеВзаимодействие - ТОГДА 1 + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 11 + ИНАЧЕ 1 + КОНЕЦ КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.ТелефонныйЗвонок - ТОГДА 2 + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 12 + ИНАЧЕ 2 + КОНЕЦ КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.ЭлектронноеПисьмоВходящее - ТОГДА 3 - ИНАЧЕ 4 - КОНЕЦ + ВЫБОР - КОГДА Взаимодействия.ПометкаУдаления - ТОГДА 10 - ИНАЧЕ ВЫБОР - КОГДА Взаимодействия.Рассмотрено - ТОГДА 5 - ИНАЧЕ 0 - КОНЕЦ + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 13 + ИНАЧЕ 3 + КОНЕЦ + КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.ЭлектронноеПисьмоИсходящее + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 14 + ИНАЧЕ ВЫБОР + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Черновик) + ТОГДА 15 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее) + ТОГДА 16 + ИНАЧЕ 4 + КОНЕЦ + КОНЕЦ + КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.СообщениеSMS + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 22 + ИНАЧЕ ВЫБОР + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Черновик) + ТОГДА 17 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Исходящее) + ТОГДА 18 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Доставляется) + ТОГДА 19 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.ЧастичноДоставлено) + ТОГДА 21 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.НеДоставлено) + ТОГДА 23 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Доставлено) + ТОГДА 24 + ИНАЧЕ 17 + КОНЕЦ + КОНЕЦ КОНЕЦ КАК НомерКартинки, Взаимодействия.Ссылка КАК Ссылка, Взаимодействия.Ответственный КАК Ответственный, diff --git a/SSL/src/DocumentJournals/Взаимодействия/Templates/ИерархияВзаимодействийПредмет/Template.dcs b/SSL/src/DocumentJournals/Взаимодействия/Templates/ИерархияВзаимодействийПредмет/Template.dcs index ff90019e1..1dba64940 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Templates/ИерархияВзаимодействийПредмет/Template.dcs +++ b/SSL/src/DocumentJournals/Взаимодействия/Templates/ИерархияВзаимодействийПредмет/Template.dcs @@ -86,22 +86,61 @@ ВЫБРАТЬ ВЫБОР КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.Встреча - ТОГДА 0 + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 10 + ИНАЧЕ 0 + КОНЕЦ КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.ЗапланированноеВзаимодействие - ТОГДА 1 + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 11 + ИНАЧЕ 1 + КОНЕЦ КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.ТелефонныйЗвонок - ТОГДА 2 + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 12 + ИНАЧЕ 2 + КОНЕЦ КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.ЭлектронноеПисьмоВходящее - ТОГДА 3 - ИНАЧЕ 4 - КОНЕЦ + ВЫБОР - КОГДА Взаимодействия.ПометкаУдаления - ТОГДА 10 - ИНАЧЕ ВЫБОР - КОГДА Взаимодействия.Рассмотрено - ТОГДА 5 - ИНАЧЕ 0 - КОНЕЦ + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 13 + ИНАЧЕ 3 + КОНЕЦ + КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.ЭлектронноеПисьмоИсходящее + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 14 + ИНАЧЕ ВЫБОР + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Черновик) + ТОГДА 15 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Исходящее) + ТОГДА 16 + ИНАЧЕ 4 + КОНЕЦ + КОНЕЦ + КОГДА Взаимодействия.Ссылка ССЫЛКА Документ.СообщениеSMS + ТОГДА ВЫБОР + КОГДА Взаимодействия.ПометкаУдаления + ТОГДА 22 + ИНАЧЕ ВЫБОР + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Черновик) + ТОГДА 17 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Исходящее) + ТОГДА 18 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Доставляется) + ТОГДА 19 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.ЧастичноДоставлено) + ТОГДА 21 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.НеДоставлено) + ТОГДА 23 + КОГДА Взаимодействия.СтатусИсходящегоПисьма = ЗНАЧЕНИЕ(Перечисление.СостоянияДокументаСообщениеSMS.Доставлено) + ТОГДА 24 + ИНАЧЕ 17 + КОНЕЦ + КОНЕЦ КОНЕЦ КАК НомерКартинки, Взаимодействия.Ссылка КАК Ссылка, Взаимодействия.Ответственный КАК Ответственный, diff --git a/SSL/src/DocumentJournals/Взаимодействия/Взаимодействия.mdo b/SSL/src/DocumentJournals/Взаимодействия/Взаимодействия.mdo index e334b283c..2f23998f3 100644 --- a/SSL/src/DocumentJournals/Взаимодействия/Взаимодействия.mdo +++ b/SSL/src/DocumentJournals/Взаимодействия/Взаимодействия.mdo @@ -17,6 +17,7 @@ Document.ЭлектронноеПисьмоВходящее Document.ЭлектронноеПисьмоИсходящее Document.ЗапланированноеВзаимодействие + Document.СообщениеSMS Use Type @@ -79,6 +80,7 @@ Document.ТелефонныйЗвонок.Attribute.Автор Document.ЗапланированноеВзаимодействие.Attribute.Автор Document.ЭлектронноеПисьмоИсходящее.Attribute.Автор + Document.СообщениеSMS.Attribute.Автор Входящий @@ -99,6 +101,7 @@ Document.Встреча.Attribute.Тема Document.ЗапланированноеВзаимодействие.Attribute.Тема Document.ТелефонныйЗвонок.Attribute.Тема + Document.СообщениеSMS.Attribute.Тема Ответственный @@ -112,6 +115,7 @@ Document.ЭлектронноеПисьмоВходящее.Attribute.Ответственный Document.ЭлектронноеПисьмоИсходящее.Attribute.Ответственный Document.ЗапланированноеВзаимодействие.Attribute.Ответственный + Document.СообщениеSMS.Attribute.Ответственный Рассмотрено @@ -125,6 +129,7 @@ Document.ЭлектронноеПисьмоВходящее.Attribute.Рассмотрено Document.ЭлектронноеПисьмоИсходящее.Attribute.Рассмотрено Document.ЗапланированноеВзаимодействие.Attribute.Рассмотрено + Document.СообщениеSMS.Attribute.Рассмотрено РассмотретьПосле @@ -137,6 +142,7 @@ Document.ЭлектронноеПисьмоВходящее.Attribute.РассмотретьПосле Document.ЗапланированноеВзаимодействие.Attribute.РассмотретьПосле Document.ЭлектронноеПисьмоИсходящее.Attribute.РассмотретьПосле + Document.СообщениеSMS.Attribute.РассмотретьПосле Участники @@ -149,6 +155,7 @@ Document.ЭлектронноеПисьмоИсходящее.Attribute.СписокПолучателейПисьма Document.ЭлектронноеПисьмоВходящее.Attribute.ОтправительПредставление Document.ЗапланированноеВзаимодействие.Attribute.СписокУчастников + Document.СообщениеSMS.Attribute.СписокУчастников СтатусИсходящегоПисьма @@ -157,6 +164,7 @@ Статус исходящего письма Document.ЭлектронноеПисьмоИсходящее.Attribute.СтатусПисьма + Document.СообщениеSMS.Attribute.Состояние УчетнаяЗапись @@ -188,6 +196,7 @@ Document.ТелефонныйЗвонок.Attribute.ВзаимодействиеОснование Document.ЭлектронноеПисьмоВходящее.Attribute.ВзаимодействиеОснование Document.ЭлектронноеПисьмоИсходящее.Attribute.ВзаимодействиеОснование + Document.СообщениеSMS.Attribute.ВзаимодействиеОснование ПолученоОтправлено @@ -218,6 +227,7 @@ Document.ТелефонныйЗвонок.Attribute.Важность Document.ЭлектронноеПисьмоВходящее.Attribute.Важность Document.ЭлектронноеПисьмоИсходящее.Attribute.Важность + Document.СообщениеSMS.Attribute.Важность ФормаСписка @@ -312,7 +322,7 @@ ВзаимодействияПоКонтакту ru - Взаимодействия по контакту + Взаимодействия FormNavigationPanelGoTo @@ -408,7 +418,7 @@ ВзаимодействияПоПредмету ru - Взаимодействия по предмету + Взаимодействия FormNavigationPanelGoTo @@ -424,4 +434,25 @@ Перейти к просмотру списка взаимодействий + + НаписатьSMS + + ru + Написать SMS + + CommandGroup.Взаимодействия + + DocumentRef.ЭлектронноеПисьмоИсходящее + DocumentRef.ЗапланированноеВзаимодействие + DocumentRef.ЭлектронноеПисьмоВходящее + DocumentRef.ТелефонныйЗвонок + DocumentRef.Встреча + DocumentRef.СообщениеSMS + CatalogRef.Пользователи + + Auto + + CommonPicture.НаписатьSMS + + diff --git a/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Help/ru.html b/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Help/ru.html index 37cae2a49..e6755cec2 100644 --- a/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Help/ru.html +++ b/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Help/ru.html @@ -1,4 +1,4 @@ - +

             

            Документ предназначен для ответов на вопросы анкеты.

             

            diff --git a/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Module.bsl index c9cd940a1..2ca5bc05e 100644 --- a/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/Анкета/Forms/ФормаДокумента/Module.bsl @@ -315,7 +315,7 @@ // // Параметры // ВопросШаблона - СправочникСсылка.ВопросыШаблонаАнкет - вопрос шаблона анкеты, -// для которого устанавливаются значения реквзитов +// для которого устанавливаются значения реквизитов // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты // ДеревоАнкетыСервер - ДеревоЗначений - дерево значений, содержащее шаблон анкеты @@ -339,7 +339,7 @@ // // Параметры // Вопрос - СправочникСсылка.ВопросыШаблонаАнкет - вопрос шаблона анкеты, -// для которого устанавливаются значения реквзитов +// для которого устанавливаются значения реквизитов // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты @@ -357,10 +357,10 @@ ПараметрыОтвета = НайтиОтветВМассиве(ВыборкаВопрос.Ответ,ВариантыОтветовНаВопрос); Если ПараметрыОтвета <> Неопределено Тогда - ЭтаФорма[ИмяВопроса + "_Реквизит_" + ПараметрыОтвета.ПорядковыйНомерРеквзита] = Истина; + ЭтаФорма[ИмяВопроса + "_Реквизит_" + ПараметрыОтвета.ПорядковыйНомерРеквизита] = Истина; Если ПараметрыОтвета.ТребуетОткрытогоОтвета Тогда - ЭтаФорма[ИмяВопроса + "_Комментарий_" + ПараметрыОтвета.ПорядковыйНомерРеквзита] = ВыборкаВопрос.ОткрытыйОтвет; + ЭтаФорма[ИмяВопроса + "_Комментарий_" + ПараметрыОтвета.ПорядковыйНомерРеквизита] = ВыборкаВопрос.ОткрытыйОтвет; КонецЕсли; КонецЕсли; @@ -395,7 +395,7 @@ // // Параметры // Вопрос - СправочникСсылка.ВопросыШаблонаАнкет - вопрос шаблона анкеты, -// для которого устанавливаются значения реквзитов +// для которого устанавливаются значения реквизитов // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты @@ -426,7 +426,7 @@ // // Параметры // Вопрос - СправочникСсылка.ВопросыШаблонаАнкет - вопрос шаблона анкеты, -// для которого устанавливаются значения реквзитов +// для которого устанавливаются значения реквизитов // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты @@ -460,7 +460,7 @@ // // Параметры // Вопрос - СправочникСсылка.ВопросыШаблонаАнкет - вопрос шаблона анкеты, -// для которого устанавливаются значения реквзитов +// для которого устанавливаются значения реквизитов // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты @@ -491,7 +491,7 @@ // // Параметры // Вопрос - СправочникСсылка.ВопросыШаблонаАнкет - вопрос шаблона анкеты, -// для которого устанавливаются значения реквзитов +// для которого устанавливаются значения реквизитов // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты @@ -525,7 +525,7 @@ // // Параметры // Вопрос - СправочникСсылка.ВопросыШаблонаАнкет - вопрос шаблона анкеты, -// для которого устанавливаются значения реквзитов +// для которого устанавливаются значения реквизитов // ВыборкаВопрос - ВыборкаИзРезультатаЗапроса - выборка, содержащая значения ответов // на вопрос шаблона анкеты // СтрокаДерева - СтрокаДереваЗначений - строка дерева значений, содержащая данные вопроса шаблона анкеты @@ -578,7 +578,7 @@ КонецФункции -// Преобразовает данные в форме заполнения ответы в данные табличной части +// Преобразовывает данные в форме заполнения ответы в данные табличной части // &НаСервере Процедура ПреобразоватьРезультатыЗаполненияРазделаВТабличнуюЧасть() @@ -742,7 +742,7 @@ КонецПроцедуры //Получает ответы, данные респондентом на табличный вопрос с предопределенными ответами в строках и колонках и -// аккумулирует их в общейтаблице ответов. +// аккумулирует их в общей таблице ответов. // // Параметры // СтрокаДерева - СтрокаДереваЗначений - строка дерева шаблона анкеты @@ -793,7 +793,7 @@ КонецПроцедуры //Получает ответы, данные респондентом на табличный вопрос с предопределенными ответами в колонках и -// аккамулирует их в общей таблице ответов. +// аккумулирует их в общей таблице ответов. // // Параметры // СтрокаДерева - СтрокаДереваЗначений - строка дерева шаблона анкеты @@ -841,7 +841,7 @@ КонецПроцедуры //Получает ответы, данные респондентом на простой вопрос и -// аккамулирует их в общей таблице ответов. +// аккумулирует их в общей таблице ответов. // // Параметры // СтрокаДерева - СтрокаДереваЗначений - строка дерева шаблона анкеты @@ -929,7 +929,7 @@ // Добавляет пустые элементы в Коллекцию // // Параметры -// Таблица - Коллекция - коллеция в которую добавляются строки +// Таблица - Коллекция - коллекция в которую добавляются строки // ЧислоСтрок - Число - число добавляемых строк // &НаСервереБезКонтекста @@ -1083,7 +1083,7 @@ // // Параметры // Ответ - Характеристика.ВопросыДляАнкетирования - ответ, который ищем. -// МассивОтветов - Массив - масссив строк таблицы значений +// МассивОтветов - Массив - массив строк таблицы значений. // // Возвращаемое значение: // Структура - в структуре содержатся номер реквизита и признак необходимости открытого ответа. @@ -1097,7 +1097,7 @@ Если МассивОтветов[инд - 1].Ответ = Ответ Тогда - СтруктураВозврата.Вставить("ПорядковыйНомерРеквзита",инд); + СтруктураВозврата.Вставить("ПорядковыйНомерРеквизита",инд); СтруктураВозврата.Вставить("ТребуетОткрытогоОтвета",МассивОтветов[инд - 1].ТребуетОткрытогоОтвета); Возврат СтруктураВозврата; КонецЕсли; @@ -1174,9 +1174,9 @@ Элементы[ПодчиненныйВопрос.ИмяЭлементаПодчиненногоВопроса].ТолькоПросмотр = (НЕ ЭтаФорма[ИмяВопроса]); Если СтрЧислоВхождений(ПодчиненныйВопрос.ИмяЭлементаПодчиненногоВопроса,"Реквизит") = 0 Тогда - //У флажка и переключателя нет свойства АвтоотметкаНезаполенного. + //У флажка и переключателя нет свойства АвтоОтметкаНезаполненного. Попытка - Элементы[ПодчиненныйВопрос.ИмяЭлементаПодчиненногоВопроса].АвтоотметкаНезаполненного = (ЭтаФорма[ИмяВопроса] И ПодчиненныйВопрос.Обязательный); + Элементы[ПодчиненныйВопрос.ИмяЭлементаПодчиненногоВопроса].АвтоОтметкаНезаполненного = (ЭтаФорма[ИмяВопроса] И ПодчиненныйВопрос.Обязательный); Исключение КонецПопытки; @@ -1192,7 +1192,7 @@ КонецПроцедуры -//Устанавливает доступность и видимость реквзитов в зависимости от вида формы +//Устанавливает доступность и видимость реквизитов в зависимости от вида формы &НаСервере Процедура ДействияВЗависимостиОтВидаФормы() @@ -1232,7 +1232,7 @@ КонецПроцедуры -//Устанваливает обработчик события при изменения для простых и табличных вопросов +//Устанавливает обработчик события при изменении для простых и табличных вопросов &НаСервере Процедура УстановитьОбработчикСобытияПриИзмененииДляВопросов() diff --git a/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Form.form b/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Form.form index 262fda785..2300e6dcb 100644 --- a/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Form.form +++ b/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Form.form @@ -22,7 +22,7 @@ ПредметРасширеннаяПодсказка - 110 + 117 Label true true @@ -66,7 +66,7 @@ ВажностьРасширеннаяПодсказка - 112 + 119 Label true true @@ -108,7 +108,7 @@ ОтветственныйРасширеннаяПодсказка - 114 + 121 Label true true @@ -148,7 +148,7 @@ ГруппаПредметВажностьОтветственныйРасширеннаяПодсказка - 109 + 116 Label true true @@ -193,7 +193,7 @@
            ДатаНачалаРасширеннаяПодсказка - 118 + 125 Label true true @@ -241,7 +241,7 @@ ВремяНачалаРасширеннаяПодсказка - 120 + 127 Label true true @@ -260,10 +260,6 @@ Left true - - StartListChoice - ВремяНачалаНачалоВыбораИзСписка - 13 true true @@ -296,7 +292,7 @@ true ГруппаНачалаРасширеннаяПодсказка - 117 + 124 Label true true @@ -337,7 +333,7 @@ ДатаОкончанияРасширеннаяПодсказка - 123 + 130 Label true true @@ -385,7 +381,7 @@ ВремяОкончанияРасширеннаяПодсказка - 125 + 132 Label true true @@ -404,10 +400,6 @@ Left true - - StartListChoice - ВремяОкончанияНачалоВыбораИзСписка - 13 true true @@ -440,7 +432,7 @@ true ГруппаОкончаниеРасширеннаяПодсказка - 122 + 129 Label true true @@ -473,7 +465,7 @@ РассмотретьПослеРасширеннаяПодсказка - 128 + 135 Label true true @@ -523,7 +515,7 @@ РассмотреноРасширеннаяПодсказка - 130 + 137 Label true true @@ -558,7 +550,7 @@ ГруппаИсполнениеРасширеннаяПодсказка - 127 + 134 Label true true @@ -592,7 +584,7 @@ true ГруппаПериодПроведенияРасширеннаяПодсказка - 116 + 123 Label true true @@ -625,7 +617,7 @@ ГруппаПериодПредметВажностьРасширеннаяПодсказка - 108 + 115 Label true true @@ -659,7 +651,7 @@ МестоПроведенияВстречиРасширеннаяПодсказка - 132 + 139 Label true true @@ -701,7 +693,7 @@ ТемаРасширеннаяПодсказка - 134 + 141 Label true true @@ -742,7 +734,7 @@ ГруппаШапкаРасширеннаяПодсказка - 107 + 114 Label true true @@ -780,7 +772,7 @@ None ОписаниеРасширеннаяПодсказка - 138 + 145 Label true true @@ -824,7 +816,7 @@ true СтраницаОписаниеРасширеннаяПодсказка - 137 + 144 Label true true @@ -856,7 +848,7 @@ СтраницаДополнительныеРеквизитыРасширеннаяПодсказка - 140 + 147 Label true true @@ -887,7 +879,7 @@ None КомментарийРасширеннаяПодсказка - 142 + 149 Label true true @@ -930,7 +922,7 @@ СтраницаКомментарийРасширеннаяПодсказка - 141 + 148 Label true true @@ -959,7 +951,7 @@ СтраницыОписаниеДополнительноРасширеннаяПодсказка - 136 + 143 Label true true @@ -990,7 +982,7 @@ ДекорацияЗаголовокУчастникиРасширеннаяПодсказка - 145 + 152 Label true true @@ -1020,7 +1012,7 @@ ДекорацияУчастникиПустаяРасширеннаяПодсказка - 146 + 153 Label true true @@ -1061,7 +1053,7 @@ ДекорацияКонтактыНеЗаполненыРасширеннаяПодсказка - 149 + 156 Label true true @@ -1099,7 +1091,7 @@ СтраницаКонтактыНеЗаполненыРасширеннаяПодсказка - 148 + 155 Label true true @@ -1126,7 +1118,7 @@ ДекорацияКонтактыЗаполненыРасширеннаяПодсказка - 151 + 158 Label true true @@ -1164,7 +1156,7 @@ СтраницаКонтактыЗаполненыРасширеннаяПодсказка - 150 + 157 Label true true @@ -1193,7 +1185,7 @@ СтраницыУказаныКонтактыРасширеннаяПодсказка - 147 + 154 Label true true @@ -1221,7 +1213,7 @@ ГруппаЗаголовокУчастникиРасширеннаяПодсказка - 144 + 151 Label true true @@ -1275,7 +1267,7 @@ ПредставлениеКонтактаРасширеннаяПодсказка - 164 + 171 Label true true @@ -1316,7 +1308,7 @@ КакСвязатьсяРасширеннаяПодсказка - 166 + 173 Label true true @@ -1361,7 +1353,7 @@ КонтактРасширеннаяПодсказка - 168 + 175 Label true true @@ -1408,7 +1400,7 @@ false СоздатьКонтактРасширеннаяПодсказка - 153 + 160 Label true true @@ -1437,10 +1429,10 @@ УчастникиСтрокаПоиска - 155 + 162 УчастникиСтрокаПоискаРасширеннаяПодсказка - 157 + 164 Label true true @@ -1450,7 +1442,7 @@ УчастникиСтрокаПоискаКонтекстноеМеню - 156 + 163 true Участники @@ -1460,10 +1452,10 @@ УчастникиСостояниеПросмотра - 158 + 165 УчастникиСостояниеПросмотраРасширеннаяПодсказка - 160 + 167 Label true true @@ -1473,7 +1465,7 @@ УчастникиСостояниеПросмотраКонтекстноеМеню - 159 + 166 true ViewStatusAddition @@ -1484,10 +1476,10 @@ УчастникиУправлениеПоиском - 161 + 168 УчастникиУправлениеПоискомРасширеннаяПодсказка - 163 + 170 Label true true @@ -1497,7 +1489,7 @@ УчастникиУправлениеПоискомКонтекстноеМеню - 162 + 169 true SearchControlAddition @@ -1508,7 +1500,7 @@ УчастникиРасширеннаяПодсказка - 154 + 161 Label true true @@ -1562,7 +1554,7 @@ ГруппаУчастникиРасширеннаяПодсказка - 152 + 159 Label true true @@ -1582,22 +1574,18 @@
            ГруппаАвторДатаРегистрации - 78 - - Автор - 81 + 107 + + ДекорацияПустаяПодвал + 108 true true true - - Объект.Автор - - Left - АвторРасширеннаяПодсказка - 179 + ДекорацияПустаяПодвалРасширеннаяПодсказка + 186 Label true true @@ -1606,32 +1594,25 @@ - АвторКонтекстноеМеню - 82 + ДекорацияПустаяПодвалКонтекстноеМеню + 109 true - InputField - true - Left - Enter - true - Left - true - - 25 - true - true - false - true - true - true - true - Normal + Label + true + true + true + + Right Дата - 83 + 110 + + <key>ru</key> + <value>Создан</value> + true true @@ -1643,7 +1624,7 @@ Left ДатаРасширеннаяПодсказка - 181 + 187 Label true true @@ -1653,30 +1634,67 @@ ДатаКонтекстноеМеню - 84 + 111 true - InputField + LabelField true Left Enter true Left true - + 13 true true false - true ru - ДФ='dd MMMM yyyy "г."' + ДЛФ=DT - true - true - true - Normal + + + + Автор + 112 + true + true + + true + + + Объект.Автор + + Left + + АвторРасширеннаяПодсказка + 189 + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 113 + true + + LabelField + true + Left + Enter + true + Left + true + + 25 + true + true + false + true true @@ -1694,7 +1712,7 @@ ГруппаАвторДатаРегистрацииРасширеннаяПодсказка - 178 + 185 Label true true @@ -1733,7 +1751,7 @@ FillCheckProcessingAtServer ОбработкаПроверкиЗаполненияНаСервере - DontBlock + LockOwner true true true diff --git a/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Module.bsl index 24bf5a185..97723c1d1 100644 --- a/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/Встреча/Forms/ФормаДокумента/Module.bsl @@ -27,6 +27,9 @@ ПриСозданииИПриЧтенииНаСервере(); + Взаимодействия.ЗаполнитьСписокВыбораВремени(Элементы.ВремяНачала, 1800); + Взаимодействия.ЗаполнитьСписокВыбораВремени(Элементы.ВремяОкончания, 1800); + КонецПроцедуры &НаСервере @@ -60,7 +63,8 @@ ВзаимодействияКлиент.ОтработатьОповещение(ЭтаФорма, ИмяСобытия, Параметр, Источник); ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "Встреча"); - + ПроверитьДоступностьСозданияКонтакта(); + КонецПроцедуры &НаСервере @@ -116,40 +120,6 @@ КонецПроцедуры -&НаКлиенте -Процедура ВремяНачалаНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка) - - СтандартнаяОбработка = Ложь; - - ВыбранноеВремя = ВзаимодействияКлиент.ВыбратьВремя(ЭтаФорма, Элемент, ВремяНачала, 1800); - - Если ВыбранноеВремя = Неопределено Тогда - Возврат; - КонецЕсли; - - ВремяНачала = ВыбранноеВремя; - - ВремяНачалаПриИзменении(Элемент); - -КонецПроцедуры - -&НаКлиенте -Процедура ВремяОкончанияНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка) - - СтандартнаяОбработка = Ложь; - - ВыбранноеВремя = ВзаимодействияКлиент.ВыбратьВремя(ЭтаФорма, Элемент, ВремяОкончания, 1800); - - Если ВыбранноеВремя = Неопределено Тогда - Возврат; - КонецЕсли; - - ВремяОкончания = ВыбранноеВремя; - - ВремяОкончанияПриИзменении(Элемент); - -КонецПроцедуры - &НаКлиенте Процедура ВремяНачалаПриИзменении(Элемент) @@ -164,7 +134,7 @@ Если НачалоДня(Объект.ДатаОкончания) + ВыделитьВремя(ВремяОкончания) < Объект.ДатаНачала Тогда ОчиститьСообщения(); - Сообщить(НСтр("ru='Время окончания не может быть меньше времени начала.'")); + ОбщегоНазначенияКлиентСервер.СообщитьПользователю((НСтр("ru='Время окончания не может быть меньше времени начала.'"))); ВремяОкончания = ВремяНачала + 1800; Объект.ДатаОкончания = НачалоДня(Объект.ДатаОкончания) + ВыделитьВремя(ВремяОкончания); Возврат; @@ -189,7 +159,7 @@ Если НачалоДня(ДатаОкончания) + ВыделитьВремя(ВремяОкончания) < Объект.ДатаНачала Тогда ОчиститьСообщения(); - Сообщить(НСтр("ru='Дата окончания не может быть меньше даты начала.'")); + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru='Дата окончания не может быть меньше даты начала.'")); ДатаОкончания = Объект.ДатаНачала; Объект.ДатаОкончания = НачалоДня(ДатаОкончания) + ВыделитьВремя(ВремяОкончания); Возврат; @@ -229,15 +199,16 @@ СтандартнаяОбработка = Ложь; текДанные = Элементы.Участники.ТекущиеДанные; - Если ВзаимодействияКлиент.ВыбратьКонтакт(Предмет, текДанные.КакСвязаться, текДанные.ПредставлениеКонтакта, - текДанные.Контакт, Ложь, Ложь, Истина) Тогда - - ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект,ЭтаФорма,"ЗапланированноеВзаимодействие"); - Модифицированность = Истина; - ПроверитьДоступностьСозданияКонтакта(); - - КонецЕсли; + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ТолькоEmail", Ложь); + ПараметрыОткрытия.Вставить("ТолькоТелефон", Ложь); + ПараметрыОткрытия.Вставить("ЗаменятьПустыеАдресИПредставление", Истина); + ПараметрыОткрытия.Вставить("ДляФормыУточненияКонтактов", Ложь); + + ВзаимодействияКлиент.ВыбратьКонтакт(Предмет, текДанные.КакСвязаться, текДанные.ПредставлениеКонтакта, + текДанные.Контакт, ПараметрыОткрытия) + КонецПроцедуры &НаКлиенте @@ -271,8 +242,7 @@ текДанные = Элементы.Участники.ТекущиеДанные; Если текДанные <> Неопределено Тогда ВзаимодействияКлиент.СоздатьКонтакт( - текДанные.ПредставлениеКонтакта, текДанные.КакСвязаться, Объект.Ссылка, СписокИнтерактивноСоздаваемыхКонтактов - ); + текДанные.ПредставлениеКонтакта, текДанные.КакСвязаться, Объект.Ссылка, СписокИнтерактивноСоздаваемыхКонтактов); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Documents/Встреча/Встреча.mdo b/SSL/src/Documents/Встреча/Встреча.mdo index 2cd539691..b3e14dbb8 100644 --- a/SSL/src/Documents/Встреча/Встреча.mdo +++ b/SSL/src/Documents/Встреча/Встреча.mdo @@ -101,6 +101,7 @@ Document.ЭлектронноеПисьмоВходящее Document.ЭлектронноеПисьмоИсходящее Document.ЗапланированноеВзаимодействие + Document.СообщениеSMS Use Use @@ -368,6 +369,7 @@ DocumentRef.ЭлектронноеПисьмоВходящее DocumentRef.ТелефонныйЗвонок DocumentRef.Встреча + DocumentRef.СообщениеSMS ru diff --git a/SSL/src/Documents/ЗапланированноеВзаимодействие/Forms/ФормаДокумента/Form.form b/SSL/src/Documents/ЗапланированноеВзаимодействие/Forms/ФормаДокумента/Form.form index cfc9f4ea3..f46291ee6 100644 --- a/SSL/src/Documents/ЗапланированноеВзаимодействие/Forms/ФормаДокумента/Form.form +++ b/SSL/src/Documents/ЗапланированноеВзаимодействие/Forms/ФормаДокумента/Form.form @@ -19,7 +19,7 @@ ПредметРасширеннаяПодсказка - 94 + 101 Label true true @@ -63,7 +63,7 @@ ОтветственныйРасширеннаяПодсказка - 96 + 103 Label true true @@ -107,7 +107,7 @@ ГруппаПредметОтветственныйРасширеннаяПодсказка - 93 + 100 Label true true @@ -141,7 +141,7 @@ ВажностьРасширеннаяПодсказка - 99 + 106 Label true true @@ -186,7 +186,7 @@ РассмотретьПослеРасширеннаяПодсказка - 102 + 109 Label true true @@ -236,7 +236,7 @@ РассмотреноРасширеннаяПодсказка - 104 + 111 Label true true @@ -271,7 +271,7 @@ ГруппаОтработатьРасширеннаяПодсказка - 101 + 108 Label true true @@ -303,7 +303,7 @@ ГруппаВажностьОтработатьРасширеннаяПодсказка - 98 + 105 Label true true @@ -336,7 +336,7 @@ ГруппаРеквизитыВзаимодействияРасширеннаяПодсказка - 92 + 99 Label true true @@ -366,7 +366,7 @@ ТемаРасширеннаяПодсказка - 106 + 113 Label true true @@ -416,7 +416,7 @@ None ОписаниеРасширеннаяПодсказка - 110 + 117 Label true true @@ -459,7 +459,7 @@ true СтраницаОписаниеРасширеннаяПодсказка - 109 + 116 Label true true @@ -491,7 +491,7 @@ СтраницаДополнительныеРеквизитыРасширеннаяПодсказка - 112 + 119 Label true true @@ -522,7 +522,7 @@ None КомментарийРасширеннаяПодсказка - 114 + 121 Label true true @@ -565,7 +565,7 @@ СтраницаКомментарийРасширеннаяПодсказка - 113 + 120 Label true true @@ -594,7 +594,7 @@ СтраницыОписаниеДополнительноРасширеннаяПодсказка - 108 + 115 Label true true @@ -625,7 +625,7 @@ ДекорацияЗаголовокУчастникиРасширеннаяПодсказка - 117 + 124 Label true true @@ -655,7 +655,7 @@ ДекорацияУчастникиПустаяРасширеннаяПодсказка - 118 + 125 Label true true @@ -696,7 +696,7 @@ ДекорацияКонтактыНеЗаполненыРасширеннаяПодсказка - 121 + 128 Label true true @@ -734,7 +734,7 @@ СтраницаКонтактыНеЗаполненыРасширеннаяПодсказка - 120 + 127 Label true true @@ -761,7 +761,7 @@ ДекорацияКонтактыЗаполненыРасширеннаяПодсказка - 123 + 130 Label true true @@ -799,7 +799,7 @@ СтраницаКонтактыЗаполненыРасширеннаяПодсказка - 122 + 129 Label true true @@ -828,7 +828,7 @@ СтраницыУказаныКонтактыРасширеннаяПодсказка - 119 + 126 Label true true @@ -856,7 +856,7 @@ ГруппаЗаголовокУчастникиРасширеннаяПодсказка - 116 + 123 Label true true @@ -907,7 +907,7 @@ ПредставлениеКонтактаРасширеннаяПодсказка - 136 + 143 Label true true @@ -947,7 +947,7 @@ КакСвязатьсяРасширеннаяПодсказка - 138 + 145 Label true true @@ -991,7 +991,7 @@ КонтактРасширеннаяПодсказка - 140 + 147 Label true true @@ -1036,7 +1036,7 @@ false СоздатьКонтактРасширеннаяПодсказка - 125 + 132 Label true true @@ -1065,10 +1065,10 @@ УчастникиСтрокаПоиска - 127 + 134 УчастникиСтрокаПоискаРасширеннаяПодсказка - 129 + 136 Label true true @@ -1078,7 +1078,7 @@ УчастникиСтрокаПоискаКонтекстноеМеню - 128 + 135 true Участники @@ -1088,10 +1088,10 @@ УчастникиСостояниеПросмотра - 130 + 137 УчастникиСостояниеПросмотраРасширеннаяПодсказка - 132 + 139 Label true true @@ -1101,7 +1101,7 @@ УчастникиСостояниеПросмотраКонтекстноеМеню - 131 + 138 true ViewStatusAddition @@ -1112,10 +1112,10 @@ УчастникиУправлениеПоиском - 133 + 140 УчастникиУправлениеПоискомРасширеннаяПодсказка - 135 + 142 Label true true @@ -1125,7 +1125,7 @@ УчастникиУправлениеПоискомКонтекстноеМеню - 134 + 141 true SearchControlAddition @@ -1136,7 +1136,7 @@ УчастникиРасширеннаяПодсказка - 126 + 133 Label true true @@ -1189,7 +1189,7 @@ ГруппаУчастникиРасширеннаяПодсказка - 124 + 131 Label true true @@ -1209,22 +1209,18 @@ ГруппаАвторДатаРегистрации - 56 - - Автор - 59 + 92 + + ДекорацияПодвалПустая + 93 true true true - - Объект.Автор - - Left - АвторРасширеннаяПодсказка - 151 + ДекорацияПодвалПустаяРасширеннаяПодсказка + 158 Label true true @@ -1233,32 +1229,25 @@ - АвторКонтекстноеМеню - 60 + ДекорацияПодвалПустаяКонтекстноеМеню + 94 true - InputField - true - Left - Enter - true - Left - true - - 25 - true - true - false - true - true - true - true - Normal + Label + true + true + true + + Right Дата - 61 + 95 + + <key>ru</key> + <value>Создан</value> + true true @@ -1270,7 +1259,7 @@ Left ДатаРасширеннаяПодсказка - 153 + 159 Label true true @@ -1280,30 +1269,67 @@ ДатаКонтекстноеМеню - 62 + 96 true - InputField + LabelField true Left Enter true Left true - + 13 true true false - true ru - ДФ='dd MMMM yyyy "г."' + ДЛФ=DT - true - true - true - Normal + + + + Автор + 97 + true + true + + true + + + Объект.Автор + + Left + + АвторРасширеннаяПодсказка + 161 + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 98 + true + + LabelField + true + Left + Enter + true + Left + true + + 25 + true + true + false + true true @@ -1321,7 +1347,7 @@ ГруппаАвторДатаРегистрацииРасширеннаяПодсказка - 150 + 157 Label true true @@ -1360,7 +1386,7 @@ FillCheckProcessingAtServer ОбработкаПроверкиЗаполненияНаСервере - DontBlock + LockOwner true true true diff --git a/SSL/src/Documents/ЗапланированноеВзаимодействие/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/ЗапланированноеВзаимодействие/Forms/ФормаДокумента/Module.bsl index 14d24cb51..359356554 100644 --- a/SSL/src/Documents/ЗапланированноеВзаимодействие/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/ЗапланированноеВзаимодействие/Forms/ФормаДокумента/Module.bsl @@ -59,7 +59,8 @@ ВзаимодействияКлиент.ОтработатьОповещение(ЭтаФорма, ИмяСобытия, Параметр, Источник); ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "ЗапланированноеВзаимодействие"); - + ПроверитьДоступностьСозданияКонтакта(); + КонецПроцедуры &НаСервере @@ -137,12 +138,15 @@ СтандартнаяОбработка = Ложь; текДанные = Элементы.Участники.ТекущиеДанные; - Если ВзаимодействияКлиент.ВыбратьКонтакт(Предмет, текДанные.КакСвязаться, - текДанные.ПредставлениеКонтакта, текДанные.Контакт, Ложь, Ложь, Истина) Тогда - ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "ЗапланированноеВзаимодействие"); - Модифицированность = Истина; - ПроверитьДоступностьСозданияКонтакта(); - КонецЕсли; + + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ТолькоEmail", Ложь); + ПараметрыОткрытия.Вставить("ТолькоТелефон", Ложь); + ПараметрыОткрытия.Вставить("ЗаменятьПустыеАдресИПредставление", Истина); + ПараметрыОткрытия.Вставить("ДляФормыУточненияКонтактов", Ложь); + + ВзаимодействияКлиент.ВыбратьКонтакт(Предмет, текДанные.КакСвязаться, + текДанные.ПредставлениеКонтакта, текДанные.Контакт, ПараметрыОткрытия); КонецПроцедуры @@ -183,8 +187,7 @@ текДанные = Элементы.Участники.ТекущиеДанные; Если текДанные <> Неопределено Тогда ВзаимодействияКлиент.СоздатьКонтакт( - текДанные.ПредставлениеКонтакта, текДанные.КакСвязаться, Объект.Ссылка, СписокИнтерактивноСоздаваемыхКонтактов - ); + текДанные.ПредставлениеКонтакта, текДанные.КакСвязаться, Объект.Ссылка, СписокИнтерактивноСоздаваемыхКонтактов); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/Documents/ЗапланированноеВзаимодействие/ЗапланированноеВзаимодействие.mdo b/SSL/src/Documents/ЗапланированноеВзаимодействие/ЗапланированноеВзаимодействие.mdo index 57e747563..230776940 100644 --- a/SSL/src/Documents/ЗапланированноеВзаимодействие/ЗапланированноеВзаимодействие.mdo +++ b/SSL/src/Documents/ЗапланированноеВзаимодействие/ЗапланированноеВзаимодействие.mdo @@ -100,6 +100,7 @@ Document.ТелефонныйЗвонок Document.ЭлектронноеПисьмоВходящее Document.ЭлектронноеПисьмоИсходящее + Document.СообщениеSMS Use Use @@ -300,6 +301,7 @@ DocumentRef.ЭлектронноеПисьмоВходящее DocumentRef.ТелефонныйЗвонок DocumentRef.Встреча + DocumentRef.СообщениеSMS ru diff --git a/SSL/src/Documents/НазначениеОпросов/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/НазначениеОпросов/Forms/ФормаДокумента/Module.bsl index 401519572..f151c15a8 100644 --- a/SSL/src/Documents/НазначениеОпросов/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/НазначениеОпросов/Forms/ФормаДокумента/Module.bsl @@ -142,7 +142,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -//Обрабатывет изменение типа респондента +// Обрабатывает изменение типа респондента &НаКлиенте Процедура ОбработатьИзменениеТипаРеспондента() diff --git a/SSL/src/Documents/СообщениеSMS/Forms/ФормаДокумента/ConditionalAppearance.dcssca b/SSL/src/Documents/СообщениеSMS/Forms/ФормаДокумента/ConditionalAppearance.dcssca new file mode 100644 index 000000000..ec102ad19 --- /dev/null +++ b/SSL/src/Documents/СообщениеSMS/Forms/ФормаДокумента/ConditionalAppearance.dcssca @@ -0,0 +1,48 @@ + + + + + + Тема + + + + + ТемаРедактировалась + Equal + false + + + Объект.Тема + NotFilled + + + + + ОтметкаНезаполненного + false + + + + + + + Статус + + + + + Объект.Состояние + InList + Перечисление.СтатусыСообщенияSMS.НеДоставлено + Перечисление.СтатусыСообщенияSMS.ЧастичноДоставлено + + + + + ЦветТекста + style:ПросроченныеДанныеЦвет + + + + diff --git a/SSL/src/Documents/СообщениеSMS/Forms/ФормаДокумента/Form.form b/SSL/src/Documents/СообщениеSMS/Forms/ФормаДокумента/Form.form new file mode 100644 index 000000000..e60533291 --- /dev/null +++ b/SSL/src/Documents/СообщениеSMS/Forms/ФормаДокумента/Form.form @@ -0,0 +1,2215 @@ + + + + ГруппаРеквизитыШапки + 6 + + ГруппаПредметОтветственный + 7 + + Предмет + 8 + true + true + + true + + + Предмет + + + ПредметРасширеннаяПодсказка + 119 + Label + true + true + + Left + + + + ПредметКонтекстноеМеню + 9 + true + + InputField + Enter + true + Left + true + + 30 + true + true + false + true + true + true + true + true + Normal + + + + Ответственный + 12 + true + true + + true + + + Объект.Ответственный + + + ОтветственныйРасширеннаяПодсказка + 121 + Label + true + true + + Left + + + + ОтветственныйКонтекстноеМеню + 13 + true + + InputField + Enter + true + Left + true + + 30 + true + true + false + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Группа предмет ответственный</value> + + + ru + Предмет, важность, место проведения + + + ГруппаПредметОтветственныйРасширеннаяПодсказка + 118 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаИсполнениеВажность + 14 + + ГруппаИсполнение + 25 + + НаКонтроле + 92 + + <key>ru</key> + <value>На контроле, рассмотреть после</value> + + true + true + + true + + + НаКонтроле + + Right + + OnChange + НаКонтролеПриИзменении + + + НаКонтролеРасширеннаяПодсказка + 125 + Label + true + true + + Left + + + + НаКонтролеКонтекстноеМеню + 93 + true + + CheckBoxField + Enter + true + Left + true + + + + РассмотретьПосле + 26 + true + true + + true + + + Объект.РассмотретьПосле + + None + + РассмотретьПослеРасширеннаяПодсказка + 127 + Label + true + true + + Left + + + + РассмотретьПослеКонтекстноеМеню + 27 + true + + InputField + Enter + true + Left + true + + + ChoiceProcessing + РассмотретьПослеОбработкаВыбора + + true + true + true + true + true + true + Normal + + + true + true + + true + + + <key>ru</key> + <value>Исполнение</value> + + + ru + Исполнение + + 43 + false + + ГруппаИсполнениеРасширеннаяПодсказка + 124 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ОтправлятьВТранслите + 71 + + <key>ru</key> + <value>Преобразовать кириллические символы в латинские</value> + + true + true + + true + + + Объект.ОтправлятьВТранслите + + Right + + OnChange + ОтправлятьВТранслитеПриИзменении + + + ОтправлятьВТранслитеРасширеннаяПодсказка + 129 + Label + true + true + + Left + + + + ОтправлятьВТранслитеКонтекстноеМеню + 72 + true + + CheckBoxField + Enter + true + Left + true + + + true + true + + true + + + <key>ru</key> + <value>Время проведения</value> + + + ru + Группа исполнение важность + + true + false + + ГруппаИсполнениеВажностьРасширеннаяПодсказка + 123 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Период, предмет, важность</value> + + + ru + Период, предмет, важность + + + ГруппаРеквизитыШапкиРасширеннаяПодсказка + 117 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ГруппаСтатусПреобразовывать + 100 + true + true + + true + + + <key>ru</key> + <value>Группа статус преобразовывать</value> + + false + + ГруппаСтатусПреобразовыватьРасширеннаяПодсказка + 131 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ГруппаДекорацийТекстСообщения + 77 + + ДекорацияЗаголовокТекстСообщения + 78 + + <key>ru</key> + <value>Текст сообщения: </value> + + true + true + + true + + + ДекорацияЗаголовокТекстСообщенияРасширеннаяПодсказка + 133 + Label + true + true + + Left + + + + ДекорацияЗаголовокТекстСообщенияКонтекстноеМеню + 79 + true + + Label + true + true + + Left + + + + ДекорацияОтступ + 80 + true + true + + true + + + ДекорацияОтступРасширеннаяПодсказка + 134 + Label + true + true + + Left + + + + ДекорацияОтступКонтекстноеМеню + 81 + true + + Label + true + true + true + + Left + + + + ОсталосьСимволов + 82 + true + true + + true + + + ОсталосьСимволов + + None + + ОсталосьСимволовРасширеннаяПодсказка + 135 + Label + true + true + + Left + + + + ОсталосьСимволовКонтекстноеМеню + 83 + true + + InputField + true + false + Right + Enter + true + Left + true + + true + true + false + false + false + false + false + false + false + false + false + false + false + true + true + + Style.ПоясняющийТекст + + + Style.FormBackColor + + + Style.FormBackColor + + Normal + + + true + true + + true + + + <key>ru</key> + <value>Группа декораций текст сообщения</value> + + true + + ГруппаДекорацийТекстСообщенияРасширеннаяПодсказка + 132 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ТекстСообщения + 75 + true + true + + true + + + Объект.ТекстСообщения + + None + + ТекстСообщенияРасширеннаяПодсказка + 137 + Label + true + true + + Left + + + + ТекстСообщенияКонтекстноеМеню + 76 + true + + InputField + Enter + true + Left + true + + + TextEditEnd + ТекстСообщенияОкончаниеВводаТекста + + 50 + true + true + false + true + true + true + true + Normal + + + + ГруппаАдресатыКонтакты + 66 + + ГруппаЗаголовокАдресаты + 32 + + ДекорацияАдресатыЗаголовк + 106 + + <key>ru</key> + <value>Адресаты:</value> + + true + true + + true + + + ДекорацияАдресатыЗаголовкРасширеннаяПодсказка + 141 + Label + true + true + + Left + + + + ДекорацияАдресатыЗаголовкКонтекстноеМеню + 107 + true + + Label + true + true + + Left + + + + ДекорацияАдресатыПустая + 35 + true + true + + true + + + ДекорацияАдресатыПустаяРасширеннаяПодсказка + 142 + Label + true + true + + Left + + + + ДекорацияАдресатыПустаяКонтекстноеМеню + 36 + true + + Label + true + true + true + + Left + + + + СтраницыУказаныКонтакты + 37 + + СтраницаКонтактыНеЗаполнены + 38 + + ДекорацияКонтактыНеЗаполнены + 39 + + <key>ru</key> + <value>Не все контакты подобраны</value> + + true + true + + true + + + ДекорацияКонтактыНеЗаполненыРасширеннаяПодсказка + 145 + Label + true + true + + Left + + + + ДекорацияКонтактыНеЗаполненыКонтекстноеМеню + 40 + true + + Label + true + true + + Style.FieldSelectionBackColor + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница контакты не заполнены</value> + + + ru + Страница контакты не заполнены + + + СтраницаКонтактыНеЗаполненыРасширеннаяПодсказка + 144 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + СтраницаКонтактыЗаполнены + 41 + + ДекорацияКонтактыЗаполнены + 42 + true + true + + true + + + ДекорацияКонтактыЗаполненыРасширеннаяПодсказка + 147 + Label + true + true + + Left + + + + ДекорацияКонтактыЗаполненыКонтекстноеМеню + 43 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Страница контакты заполнены</value> + + + ru + Страница контакты заполнены + + + СтраницаКонтактыЗаполненыРасширеннаяПодсказка + 146 + Label + true + true + + Left + + + Page + + Vertical + auto + + + true + true + + true + + + <key>ru</key> + <value>Страницы указаны контакты</value> + + + ru + Страницы указаны контакты + + + СтраницыУказаныКонтактыРасширеннаяПодсказка + 143 + Label + true + true + + Left + + + Pages + + Auto + + + true + true + + true + + + ГруппаЗаголовокАдресатыРасширеннаяПодсказка + 140 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ГруппаАдресаты + 44 + + Адресаты + 45 + true + true + + true + + + Объект.Адресаты + + false + None + Change + Copy + EndEdit + SelectAll + + АдресатыПредставлениеКонтакта + 59 + true + true + + true + + + Объект.Адресаты.ПредставлениеКонтакта + + + OnChange + ПредставлениеКонтактаПриИзменении + + + АдресатыПредставлениеКонтактаРасширеннаяПодсказка + 161 + Label + true + true + + Left + + + + АдресатыПредставлениеКонтактаКонтекстноеМеню + 60 + true + + InputField + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + АдресатыКакСвязаться + 61 + + <key>ru</key> + <value>Номер телефона</value> + + true + true + + true + + + Объект.Адресаты.КакСвязаться + + + АдресатыКакСвязатьсяРасширеннаяПодсказка + 163 + Label + true + true + + Left + + + + АдресатыКакСвязатьсяКонтекстноеМеню + 62 + true + + InputField + Auto + true + Left + true + + ru + Номер телефона в формате "+xx (xxx) xxxxxxx" + + + true + true + true + true + true + true + Normal + + + + АдресатыКонтакт + 57 + true + true + + true + + + Объект.Адресаты.Контакт + + + OnChange + КонтактПриИзменении + + + АдресатыКонтактРасширеннаяПодсказка + 165 + Label + true + true + + Left + + + + АдресатыКонтактКонтекстноеМеню + 58 + true + + InputField + Auto + true + Left + true + + + StartChoice + КонтактНачалоВыбора + + true + true + true + true + true + true + Normal + + + + АдресатыСостояниеСообщения + 96 + true + true + + true + + + Объект.Адресаты.СостояниеСообщения + + + АдресатыСостояниеСообщенияРасширеннаяПодсказка + 167 + Label + true + true + + Left + + + + АдресатыСостояниеСообщенияКонтекстноеМеню + 97 + true + + InputField + true + Auto + true + Left + true + + true + true + true + true + true + true + Normal + + + + АдресатыКоманднаяПанель + 47 + + СоздатьКонтакт + 54 + true + false + + true + + false + + СоздатьКонтактРасширеннаяПодсказка + 149 + Label + true + true + + Left + + + Form.Command.СоздатьКонтакт + Normal + Auto + true + true + UserCmds + Auto + + + АдресатыПроверитьСтатусыДоставки + 91 + + <key>ru</key> + <value>Проверить состояние доставки</value> + + true + true + + true + + + АдресатыПроверитьСтатусыДоставкиРасширеннаяПодсказка + 150 + Label + true + true + + Left + + + Form.Command.ПроверитьСтатусыДоставки + Normal + Auto + true + true + UserCmds + Auto + + Left + true + + + OnEditEnd + АдресатыПриОкончанииРедактирования + + + OnActivateRow + АдресатыПриАктивизацииСтроки + + + OnChange + АдресатыПриИзменении + + + АдресатыСтрокаПоиска + 152 + + АдресатыСтрокаПоискаРасширеннаяПодсказка + 154 + Label + true + true + + Left + + + + АдресатыСтрокаПоискаКонтекстноеМеню + 153 + true + + Адресаты + + true + + + + АдресатыСостояниеПросмотра + 155 + + АдресатыСостояниеПросмотраРасширеннаяПодсказка + 157 + Label + true + true + + Left + + + + АдресатыСостояниеПросмотраКонтекстноеМеню + 156 + true + + ViewStatusAddition + Адресаты + + true + + + + АдресатыУправлениеПоиском + 158 + + АдресатыУправлениеПоискомРасширеннаяПодсказка + 160 + Label + true + true + + Left + + + + АдресатыУправлениеПоискомКонтекстноеМеню + 159 + true + + SearchControlAddition + Адресаты + + true + + + + АдресатыРасширеннаяПодсказка + 151 + Label + true + true + + Left + + + + АдресатыКонтекстноеМеню + 46 + true + + true + true + true + true + 3 + true + MultiRow +
            true
            + 1 + 1 + AutoUse + AutoUse + true + true + false + true + Auto + Auto + true + true + true + true + None + None + None + true + +
            + true + true + + true + + + <key>ru</key> + <value>Участники встречи</value> + + + ru + Участники встречи + + + ГруппаАдресатыРасширеннаяПодсказка + 148 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + +
            + true + true + + true + + + <key>ru</key> + <value>Адресаты</value> + + + ru + Группа адресаты контакты + + + ГруппаАдресатыКонтактыРасширеннаяПодсказка + 139 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + +
            + + Комментарии + 108 + true + true + + true + + + Объект.Комментарий + + Left + + КомментарииРасширеннаяПодсказка + 177 + Label + true + true + + Left + + + + КомментарииКонтекстноеМеню + 109 + true + + InputField + Enter + true + Left + true + + + StartChoice + КомментарииНачалоВыбора + + true + 2 + true + true + false + true + true + true + true + true + true + true + Normal + + + + ГруппаАдресатыПодвал + 103 + + СтраницыКонтактыДопРеквизитыКомментарий + 65 + + СтраницаДополнительныеРеквизиты + 67 + true + true + + true + + + <key>ru</key> + <value>Дополнительно</value> + + + ru + Страница дополнительные реквизиты + + + СтраницаДополнительныеРеквизитыРасширеннаяПодсказка + 181 + Label + true + true + + Left + + + Page + + Vertical + auto + + + + СтраницаКомментарий + 68 + true + true + + true + + + <key>ru</key> + <value>Комментарий</value> + + + ru + Комментарий + + + СтраницаКомментарийРасширеннаяПодсказка + 182 + Label + true + true + + Left + + + Page + + Vertical + auto + + + true + true + + true + + + <key>ru</key> + <value>Страницы контакты доп реквизиты комментарий</value> + + + СтраницыКонтактыДопРеквизитыКомментарийРасширеннаяПодсказка + 180 + Label + true + true + + Left + + + Pages + + TabsOnTop + Auto + + + + ГруппаАвторДатаРегистрации + 1 + + Статус + 98 + + System.DefaultGUIFont + + true + true + + true + + + Объект.Состояние + + + СтатусРасширеннаяПодсказка + 184 + Label + true + true + + Left + + + + СтатусКонтекстноеМеню + 99 + true + + LabelField + Enter + true + Left + true + + 23 + true + true + false + + System.DefaultGUIFont + true + false + false + false + + + + + ДекорацияПустаяПодвал + 104 + true + true + + true + + + ДекорацияПустаяПодвалРасширеннаяПодсказка + 186 + Label + true + true + + Left + + + + ДекорацияПустаяПодвалКонтекстноеМеню + 105 + true + + Label + true + true + true + + Left + + + + Дата + 4 + + <key>ru</key> + <value>Создан</value> + + true + true + + true + + + Объект.Date + + Left + + ДатаРасширеннаяПодсказка + 187 + Label + true + true + + Left + + + + ДатаКонтекстноеМеню + 5 + true + + LabelField + true + Left + Enter + true + Left + true + + 13 + true + true + true + + ru + ДЛФ=DT + + + + + Автор + 2 + true + true + + true + + + Объект.Автор + + Left + + АвторРасширеннаяПодсказка + 189 + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 3 + true + + LabelField + true + Left + Enter + true + Left + true + + true + true + true + true + + + true + true + + true + + + <key>ru</key> + <value>Автор, дата регистрации</value> + + + ru + Автор, дата регистрации + + + ГруппаАвторДатаРегистрацииРасширеннаяПодсказка + 183 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + true + true + + true + + + ru + Группа адресаты подвал + + + ГруппаАдресатыПодвалРасширеннаяПодсказка + 179 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + NormalSeparation + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаСправка + 89 + true + true + + true + + + ФормаСправкаРасширеннаяПодсказка + 110 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + + + ФормаОтправить + 84 + true + true + + true + + true + + ФормаОтправитьРасширеннаяПодсказка + 111 + Label + true + true + + Left + + + Form.Command.Отправить + Auto + true + true + true + UserCmds + Auto + + + ФормаЗаписатьИЗакрыть + 85 + true + true + + true + + + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 112 + Label + true + true + + Left + + + Form.StandardCommand.WriteAndClose + Normal + PictureAndText + true + true + UserCmds + Auto + + + ФормаЗаписать + 86 + true + true + + true + + + ФормаЗаписатьРасширеннаяПодсказка + 113 + Label + true + true + + Left + + + Form.StandardCommand.Write + Normal + Auto + true + true + UserCmds + Auto + + + ФормаУстановитьПометкуУдаления + 88 + true + true + + true + + + ФормаУстановитьПометкуУдаленияРасширеннаяПодсказка + 114 + Label + true + true + + Left + + + Form.StandardCommand.SetDeletionMark + Normal + Auto + true + true + UserCmds + Auto + + + ФормаПеречитать + 87 + true + true + + true + + + ФормаПеречитатьРасширеннаяПодсказка + 115 + Label + true + true + + Left + + + Form.StandardCommand.Reread + Normal + Auto + true + true + UserCmds + Auto + + + ГруппаГлобальныеКоманды + 90 + true + true + + true + + + <key>ru</key> + <value>Группа глобальные команды</value> + + + ГруппаГлобальныеКомандыРасширеннаяПодсказка + 116 + Label + true + true + + Left + + + + FormCommandPanelGlobalCommands + + + Left + + + NotificationProcessing + ОбработкаОповещения + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + + FillCheckProcessingAtServer + ОбработкаПроверкиЗаполненияНаСервере + + DontBlock + true + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + Объект + 1 + + DocumentObject.СообщениеSMS + + + true + + + true + + + Объект.RegisterRecords + +
            true
            + true +
            + + Предмет + + <key>ru</key> + <value>Предмет</value> + + 2 + + DocumentRef.ЭлектронноеПисьмоИсходящее + DocumentRef.ЗапланированноеВзаимодействие + DocumentRef.ЭлектронноеПисьмоВходящее + DocumentRef.ТелефонныйЗвонок + DocumentRef.Встреча + DocumentRef.СообщениеSMS + + + true + + + true + + + + СписокИнтерактивноСоздаваемыхКонтактов + + <key>ru</key> + <value>Список интерактивно создаваемых контактов</value> + + 3 + + ValueList + + + true + + + true + + + + + + + ВзаимодействиеОснование + + <key>ru</key> + <value>Взаимодействие основание</value> + + 4 + + DocumentRef.ЭлектронноеПисьмоИсходящее + DocumentRef.ЗапланированноеВзаимодействие + DocumentRef.ЭлектронноеПисьмоВходящее + DocumentRef.ТелефонныйЗвонок + DocumentRef.Встреча + DocumentRef.СообщениеSMS + + + true + + + true + + + + ОсталосьСимволов + + <key>ru</key> + <value>Осталось символов</value> + + 5 + + String + + 70 + + + + true + + + true + + + + НеобходимоОповещение + + <key>ru</key> + <value>Необходимо оповещение</value> + + 7 + + Boolean + + + true + + + true + + + + ИнформационнаяБазаФайловая + + <key>ru</key> + <value>Информационная база файловая</value> + + 6 + + Boolean + + + true + + + true + + + + НаКонтроле + + <key>ru</key> + <value>На контроле</value> + + 8 + + Boolean + + + true + + + true + + FunctionalOption.ИспользоватьПризнакРассмотрено + + + ТемаРедактировалась + + <key>ru</key> + <value>Тема редактировалась</value> + + 9 + + Boolean + + + true + + + true + + + + СоздатьКонтакт + + <key>ru</key> + <value>Создать контакт</value> + + 1 + + ru + Создать контакт + + + true + + Ctrl+S + + StdPicture.AddListItem + + + + СоздатьКонтактВыполнить + + + Text + Auto + Auto + + + Отправить + + <key>ru</key> + <value>Отправить</value> + + 2 + + ru + Отправить + + + true + + + + Отправить + + + Auto + Auto + + + ПроверитьСтатусыДоставки + + <key>ru</key> + <value>Проверить статусы доставки</value> + + 3 + + ru + Проверить статусы доставки + + + true + + + + ПроверитьСтатусыДоставки + + + Auto + Auto + + + Адресаты + + + + Текст + + String + + + + + Предмет + + + + + + InformationRegister.ПредметыПапкиВзаимодействий.StandardCommand.OpenByValue.Взаимодействие + + + + + + Document.СообщениеSMS.StandardCommand.CreateBasedOn + + + + + + + AfterWrite + ПослеЗаписи + + + AfterWriteAtServer + ПослеЗаписиНаСервере + + + OnReadAtServer + ПриЧтенииНаСервере + + + BeforeWriteAtServer + ПередЗаписьюНаСервере + + + OnWriteAtServer + ПриЗаписиНаСервере + + true + +
            diff --git a/SSL/src/Documents/СообщениеSMS/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/СообщениеSMS/Forms/ФормаДокумента/Module.bsl new file mode 100644 index 000000000..628a821ac --- /dev/null +++ b/SSL/src/Documents/СообщениеSMS/Forms/ФормаДокумента/Module.bsl @@ -0,0 +1,465 @@ + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест". + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + Объект.Состояние = Перечисления.СостоянияДокументаСообщениеSMS.Черновик; + ПриСозданииЧтенииНаСервере(); + КонецЕсли; + + Если НЕ ИнформационнаяБазаФайловая Тогда + Элементы.АдресатыПроверитьСтатусыДоставки.Видимость = Ложь; + КонецЕсли; + + Если Объект.Ссылка.Пустая() Тогда + Взаимодействия.УстановитьПредметПоДаннымЗаполнения(Параметры, Предмет); + КонецЕсли; + Взаимодействия.ЗаполнитьСписокВыбораДляРассмотретьПосле(Элементы.РассмотретьПосле.СписокВыбора); + + //Определим типы контактов, которые можно создать + СписокИнтерактивноСоздаваемыхКонтактов = Взаимодействия.СоздатьСписокЗначенийИнтерактивноСоздаваемыхКонтактов(); + Элементы.СоздатьКонтакт.Видимость = СписокИнтерактивноСоздаваемыхКонтактов.Количество() > 0; + + //подготовить оповещения взаимодействий + Взаимодействия.ПодготовитьОповещения(ЭтаФорма, Параметры); + + // СтандартныеПодсистемы.Свойства + УправлениеСвойствами.ПриСозданииНаСервере(ЭтаФорма, , "СтраницаДополнительныеРеквизиты"); + // Конец СтандартныеПодсистемы.Свойства + +КонецПроцедуры + +&НаСервере +Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + Взаимодействия.ПриЗаписиВзаимодействияИзФормы(ТекущийОбъект, Предмет); + +КонецПроцедуры + +&НаСервере +Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) + + Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначения.ПолучитьКартинкуКомментария(Объект.Комментарий); + +КонецПроцедуры + +&НаСервере +Процедура ПриЧтенииНаСервере(ТекущийОбъект) + + Предмет = Взаимодействия.ПолучитьЗначениеПредмета(Объект.Ссылка); + + // СтандартныеПодсистемы.Свойства + УправлениеСвойствами.ПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект); + // Конец СтандартныеПодсистемы.Свойства + + ПриСозданииЧтенииНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + #Если Не ВебКлиент Тогда + ПроверитьДоступностьСозданияКонтакта(); + #КонецЕсли + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + + // СтандартныеПодсистемы.Свойства + Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтаФорма, ИмяСобытия, Параметр) Тогда + ОбновитьЭлементыДополнительныхРеквизитов(); + КонецЕсли; + // Конец СтандартныеПодсистемы.Свойства + + ВзаимодействияКлиент.ОтработатьОповещение(ЭтаФорма, ИмяСобытия, Параметр, Источник); + ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "СообщениеSMS"); + ПроверитьДоступностьСозданияКонтакта() + +КонецПроцедуры + +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, РежимЗаписи) + + // СтандартныеПодсистемы.Свойства + УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтаФорма, ТекущийОбъект); + // Конец СтандартныеПодсистемы.Свойства + + Взаимодействия.ПередЗаписьюВзаимодействияИзФормы(ЭтаФорма, ТекущийОбъект); + +КонецПроцедуры + +&НаКлиенте +Процедура ПослеЗаписи(ПараметрыЗаписи) + + ВзаимодействияКлиент.ВзаимодействиеПредметПослеЗаписи(ЭтаФорма, Объект, ПараметрыЗаписи, "СообщениеSMS"); + ПроверитьДоступностьСозданияКонтакта(); + +КонецПроцедуры + +&НаСервере +Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты) + + // СтандартныеПодсистемы.Свойства + УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтаФорма, Отказ, ПроверяемыеРеквизиты); + // Конец СтандартныеПодсистемы.Свойства + + ПроверитьЗаполнениеСпискаАдресатов(Отказ); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + +&НаКлиенте +Процедура РассмотретьПослеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) + + ВзаимодействияКлиент.ОбработатьВыборВПолеРассмотретьПосле( + Объект.РассмотретьПосле, ВыбранноеЗначение, СтандартнаяОбработка, Модифицированность); + +КонецПроцедуры + +&НаКлиенте +Процедура НаКонтролеПриИзменении() + + Объект.Рассмотрено = НЕ НаКонтроле; + УправлениеДоступностью(ЭтаФорма); + Модифицированность = Истина; + +КонецПроцедуры + +&НаКлиенте +Процедура ТекстСообщенияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, СтандартнаяОбработка) + + ОсталосьСимволов = ВзаимодействияКлиентСервер.СформироватьИнформационнуюНадписьКоличествоСимволовСообщений( + Объект.ОтправлятьВТранслите, + Текст); + Объект.ТекстСообщения = Текст; + +КонецПроцедуры + +&НаКлиенте +Процедура КомментарииНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + ОбщегоНазначенияКлиент.ОткрытьФормуРедактированияКомментария(Элемент.ТекстРедактирования, Объект.Комментарий, Модифицированность); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтправлятьВТранслитеПриИзменении(Элемент) + + ОсталосьСимволов = ВзаимодействияКлиентСервер.СформироватьИнформационнуюНадписьКоличествоСимволовСообщений( + Объект.ОтправлятьВТранслите, + Объект.ТекстСообщения) + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ Адресаты + +&НаКлиенте +Процедура АдресатыПриИзменении(Элемент) + + ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "СообщениеSMS"); + +КонецПроцедуры + +&НаКлиенте +Процедура АдресатыПриАктивизацииСтроки(Элемент) + + ПроверитьДоступностьСозданияКонтакта(); + +КонецПроцедуры + +&НаКлиенте +Процедура КонтактНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + текДанные = Элементы.Адресаты.ТекущиеДанные; + + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ТолькоEmail", Ложь); + ПараметрыОткрытия.Вставить("ТолькоТелефон", Истина); + ПараметрыОткрытия.Вставить("ЗаменятьПустыеАдресИПредставление", Истина); + ПараметрыОткрытия.Вставить("ДляФормыУточненияКонтактов", Ложь); + + ВзаимодействияКлиент.ВыбратьКонтакт(Предмет, текДанные.КакСвязаться, текДанные.ПредставлениеКонтакта, + текДанные.Контакт, ПараметрыОткрытия); + +КонецПроцедуры + +&НаКлиенте +Процедура ПредставлениеКонтактаПриИзменении(Элемент) + + ПроверитьДоступностьСозданияКонтакта(); + +КонецПроцедуры + +&НаКлиенте +Процедура КонтактПриИзменении(Элемент) + + ПроверитьДоступностьСозданияКонтакта(); + ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "СообщениеSMS"); + +КонецПроцедуры + +&НаКлиенте +Процедура АдресатыПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования) + + ТекущиеДанные = Элементы.Адресаты.ТекущиеДанные; + Если ТекущиеДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + Если НЕ ЗначениеЗаполнено(ТекущиеДанные.СостояниеСообщения) Тогда + ТекущиеДанные.СостояниеСообщения = ПредопределенноеЗначение("Перечисление.СостоянияСообщенияSMS.Черновик"); + КонецЕсли; + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + +&НаКлиенте +Процедура СоздатьКонтактВыполнить() + + текДанные = Элементы.Адресаты.ТекущиеДанные; + Если текДанные <> Неопределено Тогда + ВзаимодействияКлиент.СоздатьКонтакт( + текДанные.ПредставлениеКонтакта, текДанные.КакСвязаться, Объект.Ссылка, СписокИнтерактивноСоздаваемыхКонтактов); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура Отправить(Команда) + + ОчиститьСообщения(); + + Если ПроверитьЗаполнение() Тогда + ОтправитьВыполнить(); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПроверитьСтатусыДоставки(Команда) + + ОчиститьСообщения(); + ПроверитьСтатусыДоставкиСервер(); + +КонецПроцедуры + +// СтандартныеПодсистемы.Свойства + +&НаКлиенте +Процедура Подключаемый_РедактироватьСоставСвойств() + + УправлениеСвойствамиКлиент.РедактироватьСоставСвойств(ЭтаФорма); + +КонецПроцедуры + +// Конец СтандартныеПодсистемы.Свойства + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +//////////////////////////////////////////////////////////////////////////////// +// Подсистема Свойства + +&НаСервере +Процедура ОбновитьЭлементыДополнительныхРеквизитов() + + УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтаФорма); + +КонецПроцедуры + +/////////////////////////////////////////////////////////////////////////////// +// Прочее + +&НаКлиенте +Процедура ПроверитьДоступностьСозданияКонтакта() + + текДанные = Элементы.Адресаты.ТекущиеДанные; + Элементы.СоздатьКонтакт.Доступность = (Не Объект.Ссылка.Пустая()) И + ((текДанные <> Неопределено) И (НЕ ЗначениеЗаполнено(текДанные.Контакт))); + +КонецПроцедуры + +&НаСервере +Процедура ПриСозданииЧтенииНаСервере() + + ИнформационнаяБазаФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая(); + ОбработатьПереданныеПараметры(Параметры); + ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "СообщениеSMS"); + Элементы.РассмотретьПосле.Доступность = НЕ Объект.Рассмотрено; + ОсталосьСимволов = ВзаимодействияКлиентСервер.СформироватьИнформационнуюНадписьКоличествоСимволовСообщений( + Объект.ОтправлятьВТранслите, + Объект.ТекстСообщения); + Элементы.СтраницаКомментарий.Картинка = ОбщегоНазначения.ПолучитьКартинкуКомментария(Объект.Комментарий); + НаКонтроле = НЕ Объект.Рассмотрено; + УправлениеДоступностью(ЭтаФорма); + +КонецПроцедуры + +&НаКлиенте +Процедура ОтправитьВыполнить() + + ОчиститьСообщения(); + + Если ИнформационнаяБазаФайловая Тогда + КоличествоОтправленных = ВыполнитьОтправкуНаСервере(); + Если НЕ КоличествоОтправленных > 0 Тогда + Возврат; + КонецЕсли; + Иначе + ВзаимодействияКлиентСервер.УстановитьСостояниеИсходящееДокументСообщениеSMS(Объект); + КонецЕсли; + + Записать(); + Закрыть(); + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьЗаполнениеСпискаАдресатов(Отказ) + + Для Каждого Адресат Из Объект.Адресаты Цикл + ПроверитьЗаполнениеТелефона(Адресат, Отказ); + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьЗаполнениеТелефона(Адресат, Отказ) + + Если ПустаяСтрока(Адресат.КакСвязаться) Тогда + ОбщегоНазначенияКлиентСервер.СообщитьПользователю( + НСтр("ru = 'Не указан номер телефона'"), + , + ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Адресаты", Адресат.НомерСтроки, "КакСвязаться"), + , + Отказ); + Возврат; + КонецЕсли; + + СтруктураПолей = ВзаимодействияКлиентСервер.СтруктураПолейПоПредставлениюТелефона(Адресат.КакСвязаться); + Если Не ВзаимодействияКлиентСервер.КорректноВведенНомерТелефона(СтруктураПолей) Тогда + ОбщегоНазначенияКлиентСервер.СообщитьПользователю( + НСтр("ru = 'Номер телефона должен быть указан в формате ""+xx (xxx) xxxxxxx"".'"), + , + ОбщегоНазначенияКлиентСервер.ПутьКТабличнойЧасти("Объект.Адресаты", Адресат.НомерСтроки, "КакСвязаться"), + , + Отказ); + Возврат; + Иначе + Адресат.НомерДляОтправки = ?(ЛЕВ(СтруктураПолей.КодСтраны,1)= "+", СтруктураПолей.КодСтраны,"+" + СтруктураПолей.КодСтраны) + + СтруктураПолей.КодГорода + СтруктураПолей.НомерТелефона; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Функция ВыполнитьОтправкуНаСервере() + + Возврат Взаимодействия.ОтправкаSMSПоДокументу(Объект); + +КонецФункции + +&НаКлиентеНаСервереБезКонтекста +Процедура УправлениеДоступностью(Форма) + + СообщениеОтправлено = Форма.Объект.Состояние <> ПредопределенноеЗначение("Перечисление.СостоянияДокументаСообщениеSMS.Черновик") И + Форма.Объект.Состояние <> ПредопределенноеЗначение("Перечисление.СостоянияДокументаСообщениеSMS.Исходящее"); + + Форма.Элементы.ФормаОтправить.Доступность = (НЕ СообщениеОтправлено И Форма.ИнформационнаяБазаФайловая) ИЛИ + (НЕ Форма.ИнформационнаяБазаФайловая И + Форма.Объект.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияДокументаСообщениеSMS.Черновик")); + Форма.Элементы.Адресаты.ТолькоПросмотр = СообщениеОтправлено; + Форма.Элементы.ОтправлятьВТранслите.Доступность = НЕ СообщениеОтправлено; + Форма.Элементы.ТекстСообщения.ТолькоПросмотр = СообщениеОтправлено; + Форма.Элементы.РассмотретьПосле.Доступность = Форма.НаКонтроле; + + Форма.Элементы.АдресатыПроверитьСтатусыДоставки.Доступность = Форма.ИнформационнаяБазаФайловая И + СообщениеОтправлено И + Форма.Объект.Состояние = ПредопределенноеЗначение("Перечисление.СостоянияДокументаСообщениеSMS.Доставляется"); + + +КонецПроцедуры + +&НаСервере +Процедура ПроверитьСтатусыДоставкиСервер() + + Если Не ОтправкаSMS.НастройкаОтправкиSMSВыполнена() Тогда + ОбщегоНазначенияКлиентСервер.СообщитьПользователю(НСтр("ru = 'Не выполнены настройки отправки SMS.'"),,"Объект"); + Возврат; + КонецЕсли; + + Взаимодействия.ПроверитьСтатусыДоставкиSMS(Объект, Модифицированность); + УправлениеДоступностью(ЭтаФорма); + +КонецПроцедуры + +&НаСервере +Процедура ОбработатьПереданныеПараметры(Параметры) + + Если Объект.Ссылка.Пустая() Тогда + + Если Параметры.Свойство("Текст") И НЕ ПустаяСтрока(Параметры.Текст) Тогда + + Объект.ТекстСообщения = Параметры.Текст; + + КонецЕсли; + + Если Параметры.Адресаты <> Неопределено Тогда + + Если ТипЗнч(Параметры.Адресаты) = Тип("Строка") И НЕ ПустаяСтрока(Параметры.Адресаты) Тогда + + НоваяСтрока = Объект.Адресаты.Добавить(); + НоваяСтрока.Адрес = Параметры.Кому; + + ИначеЕсли ТипЗнч(Параметры.Адресаты) = Тип("СписокЗначений") Тогда + + Для Каждого ЭлементСписка Из Параметры.Адресаты Цикл + НоваяСтрока = Объект.Адресаты.Добавить(); + НоваяСтрока.КакСвязаться = ЭлементСписка.Значение; + НоваяСтрока.Представление = ЭлементСписка.Представление; + КонецЦикла; + + ИначеЕсли ТипЗнч(Параметры.Адресаты) = Тип("Массив") Тогда + + Для Каждого ЭлементМассива Из Параметры.Адресаты Цикл + + НоваяСтрока = Объект.Адресаты.Добавить(); + НоваяСтрока.КакСвязаться = ЭлементМассива.Телефон; + НоваяСтрока.ПредставлениеКонтакта = ЭлементМассива.Представление; + НоваяСтрока.Контакт = ЭлементМассива.ИсточникКонтактнойИнформации; + + КонецЦикла; + + КонецЕсли; + + КонецЕсли; + + Если Параметры.Свойство("Предмет") Тогда + Предмет = Параметры.Предмет; + КонецЕсли; + + Если Параметры.Свойство("ОтправлятьВТранслите") Тогда + Объект.ОтправлятьВТранслите = Параметры.ОтправлятьВТранслите; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + diff --git a/SSL/src/Documents/СообщениеSMS/ManagerModule.bsl b/SSL/src/Documents/СообщениеSMS/ManagerModule.bsl new file mode 100644 index 000000000..14dfe15ba --- /dev/null +++ b/SSL/src/Documents/СообщениеSMS/ManagerModule.bsl @@ -0,0 +1,33 @@ +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +// Получает массив структур, адресатов документа Сообщение SMS +// +// Параметры +// Ссылка - Документ.СообщениеSMS - документ, для которого получаем массив контактов +// +// Возвращаемое значение: +// Массив - адресаты сообщения SMS +// +Функция ПолучитьКонтакты(Ссылка) Экспорт + + Возврат Взаимодействия.ПолучитьУчастниковПоТаблице(Ссылка); + +КонецФункции + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ + +Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка) + + Взаимодействия.ОбработкаПолученияДанныхВыбора( + ДанныеВыбора, + Параметры, + СтандартнаяОбработка, + "СообщениеSMS"); + +КонецПроцедуры + +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/Documents/СообщениеSMS/ObjectModule.bsl b/SSL/src/Documents/СообщениеSMS/ObjectModule.bsl new file mode 100644 index 000000000..c38bda5dc --- /dev/null +++ b/SSL/src/Documents/СообщениеSMS/ObjectModule.bsl @@ -0,0 +1,51 @@ + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда +//////////////////////////////////////////////////////////////////////////////// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС + +//Процедура формирует строки списка участников +// +// Параметры +// Контакты - Массив - массив структур, описывающих участников взаимодействия +// +Процедура ЗаполнитьКонтакты(Контакты) Экспорт + + Взаимодействия.ЗаполнитьКонтактыДляВстречи(Контакты, Адресаты, Перечисления.ТипыКонтактнойИнформации.Телефон); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ + +Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) + + Взаимодействия.ЗаполнитьРеквизитыПоУмолчанию(ЭтотОбъект, ДанныеЗаполнения); + +КонецПроцедуры + +Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) + + Если ОбменДанными.Загрузка Тогда + Возврат; + КонецЕсли; + + Тема = ВзаимодействияКлиентСервер.ТемаПоТекстуСообщения(ТекстСообщения); + Взаимодействия.СформироватьСписокУчастников(ЭтотОбъект); + +КонецПроцедуры + +Процедура ПриКопировании(ОбъектКопирования) + + РассмотретьПосле = Неопределено; + Рассмотрено = Истина; + Ответственный = Пользователи.ТекущийПользователь(); + Автор = Пользователи.ТекущийПользователь(); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ + + + +#КонецЕсли \ No newline at end of file diff --git a/SSL/src/Documents/СообщениеSMS/СообщениеSMS.mdo b/SSL/src/Documents/СообщениеSMS/СообщениеSMS.mdo new file mode 100644 index 000000000..869c346a7 --- /dev/null +++ b/SSL/src/Documents/СообщениеSMS/СообщениеSMS.mdo @@ -0,0 +1,771 @@ + + + + + + + + + + СообщениеSMS + + ru + Сообщение SMS + + true + Document.СообщениеSMS.StandardAttribute.Number + DontUse + + Use + Posted + + Use + + + + + Use + Ref + + Use + + + + + Use + DeletionMark + + Use + + + + + Use + Date + + ru + Дата создания сообщения SMS. + + + ShowError + Use + + + + + Use + Number + + ru + Номер сообщения SMS. + + + + + Use + + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.StandardAttribute.Ref + + -1 + -1 + Document.СообщениеSMS.TabularSection.ДополнительныеРеквизиты + Document.СообщениеSMS.TabularSection.ДополнительныеРеквизиты.StandardAttribute.Ref + Document.СообщениеSMS.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + Document.СообщениеSMS.TabularSection.ДополнительныеРеквизиты.Attribute.Значение + -1 + -1 + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.Свойство + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.StandardAttribute.Ref + + -1 + -1 + InformationRegister.ДополнительныеСведения + InformationRegister.ДополнительныеСведения.Dimension.Объект + InformationRegister.ДополнительныеСведения.Dimension.Свойство + InformationRegister.ДополнительныеСведения.Resource.Значение + -1 + -1 + + Document.Встреча + Document.ЗапланированноеВзаимодействие + Document.ТелефонныйЗвонок + Document.ЭлектронноеПисьмоВходящее + Document.ЭлектронноеПисьмоИсходящее + Document.СообщениеSMS + Use + Use + + ru + Сообщения SMS + + String + 11 + Year + true + true + Document.СообщениеSMS.Form.ФормаДокумента + Deny + true + true + + Автор + + ru + Автор + + + CatalogRef.Пользователи + + + ru + Пользователь, создавший сообщение SMS. + + + + + Use + Use + + + Важность + + ru + Важность + + + EnumRef.ВариантыВажностиВзаимодействия + + + ru + Отметка о важности SMS. Устанавливается в "Обычное" + + + + true + + Enum.ВариантыВажностиВзаимодействия.EnumValue.Обычная + + Use + + + Ответственный + + ru + Ответственный + + + CatalogRef.Пользователи + + + ru + Ответственный за работу по SMS + + + + ShowError + + Use + Use + + + Рассмотрено + + ru + Рассмотрено + + + Boolean + + + ru + Признак, указывающий, что сообщение SMS не требует дальнейшего внимания + + + + true + + true + + Use + + + РассмотретьПосле + + ru + Рассмотреть после + + + Date + + + + ru + Плановые дата и время работы по сообщению SMS + + + + + 0001-01-01T00:00:00 + + Use + + + СписокУчастников + + ru + Список участников + + + String + + 1024 + + + + ru + Список адресатов SMS. Используется для отображения в списке документов. + + + + + Use + Use + + + ВзаимодействиеОснование + + ru + Взаимодействие основание + + + DocumentRef.ЭлектронноеПисьмоИсходящее + DocumentRef.ЗапланированноеВзаимодействие + DocumentRef.ЭлектронноеПисьмоВходящее + DocumentRef.ТелефонныйЗвонок + DocumentRef.Встреча + DocumentRef.СообщениеSMS + + + ru + Документ - взаимодействие, на основании которого был создано сообщение SMS + + + + + Use + Use + + + Тема + + ru + Тема + + + String + + 1024 + + + + ru + Тема, которой посвящено SMS. Формируется автоматически из первых трех слов сообщения. + + + + + Use + Use + + + Комментарий + + ru + Комментарий + + + String + + + + ru + Произвольный текст + + true + true + + + + Use + Use + + + ОтправлятьВТранслите + + ru + Отправлять в транслите + + + Boolean + + + ru + Признак того, что сообщение необходимо отправить в транслите. + + + + + Use + + + ТекстСообщения + + ru + Текст сообщения + + + String + + + + ru + Текст сообщения SMS. + + true + + + ShowError + + Use + Use + + + Состояние + + ru + Состояние + + + EnumRef.СостоянияДокументаСообщениеSMS + + + ru + Итоговое состояние сообщения SMS. Формируется на основании состояний отдельных сообщений адресатам. + + + + true + + Use + Use + + + ФормаДокумента + + ru + Форма документа + + PersonalComputer + MobileDevice + + + + + + + Адресаты + + ru + Адресаты + + + ru + Адресаты сообщения SMS, + + ShowError + + Use + LineNumber + + Use + + + + + Контакт + + ru + Контакт + + + CatalogRef.Пользователи + + + ru + Адресат SMS + + + + Use + Index + Use + + + ПредставлениеКонтакта + + ru + Представление контакта + + + String + + 100 + + + + ru + Строковое представление адресата SMS + + + + ShowError + Use + Use + + + КакСвязаться + + ru + Как связаться + + + String + + 100 + + + + ru + Номер телефона в формате "+xx (xxx) xxxxxxx" + + + + Use + Use + + + НомерДляОтправки + + ru + Номер для отправки + + + String + + 30 + + + + ru + Преобразованный в формат +xxxxxxxxxxxx номер из поля "Как связаться" + + + + Use + Use + + + ИдентификаторСообщения + + ru + Идентификатор сообщения + + + String + + 20 + + + + ru + Идентификатор сообщения, который передал провайдер. По нему можно получать статус доставки сообщения + + + + Use + Use + + + ТекстОшибки + + ru + Текст ошибки + + + String + + 500 + + + + ru + Текст ошибки, который передал провайдер при отправке или получении статуса доставки сообщения SMS. + + + + Use + Use + + + СостояниеСообщения + + ru + Состояние сообщения + + + EnumRef.СостоянияСообщенияSMS + + + ru + Состояние сообщения SMS адресату. + + + + Use + Index + Use + + + + + + + + НаборыЗначенийДоступа + + ru + Наборы значений доступа + + + Use + LineNumber + + Use + + + + + НомерНабора + + ru + Номер набора + + + Number + + 4 + true + + + + ru + Число, объединяющие несколько строк в один набор. +Результаты проверок строк в наборе объединяется по логическому "И", +а результаты проверок наборов объекта по логическому "ИЛИ" + + + + Use + + + ВидДоступа + + ru + Вид доступа + + Незаполненные значения нужно допустить, чтобы избежать ошибок при записи проверяемых объектов + + ChartOfCharacteristicTypesRef.ВидыДоступа + + + ru + Вид доступа по которому проверяется разрешенность значения доступа + + + + Use + + + ЗначениеДоступа + + ru + Значение доступа + + Незаполненные значения нужно допустить, чтобы избежать ошибок при записи проверяемых объектов + + AnyRef + + + ru + Ссылка на значение, например, на организацию, контрагента, ... + + + + Use + + + Чтение + + ru + Чтение использует номер набора + + + Boolean + + + ru + Использовать наборы при проверке ограничения чтения + + + + Use + + + Добавление + + ru + Добавление использует номер набора + + + Boolean + + + ru + Использовать наборы при проверке ограничения добавления + + + + Use + + + Изменение + + ru + Изменение использует номер набора + + + Boolean + + + ru + Использовать наборы при проверке ограничения изменения + + + + Use + + + Удаление + + ru + Удаление использует номер набора + + + Boolean + + + ru + Использовать наборы при проверке ограничения удаления + + + + Use + + + + + + + + ДополнительныеРеквизиты + + ru + Дополнительные реквизиты + + + Use + LineNumber + + Use + + + + + Свойство + + ru + Свойство + + + ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения + + + ru + Дополнительный реквизит + + + + Use + Use + + + Значение + + ru + Значение + + + Characteristic.ДополнительныеРеквизитыИСведения + + + ru + Значение дополнительного реквизита + + + + + Отбор.Владелец + Document.СообщениеSMS.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + + Use + Use + + + ТекстоваяСтрока + + ru + Текстовая строка + + + String + + + + ru + Полный текст строкового дополнительного реквизита + + + + Use + Use + + + diff --git a/SSL/src/Documents/ТелефонныйЗвонок/Forms/ФормаДокумента/Form.form b/SSL/src/Documents/ТелефонныйЗвонок/Forms/ФормаДокумента/Form.form index 8af0a4aef..39f256abb 100644 --- a/SSL/src/Documents/ТелефонныйЗвонок/Forms/ФормаДокумента/Form.form +++ b/SSL/src/Documents/ТелефонныйЗвонок/Forms/ФормаДокумента/Form.form @@ -27,7 +27,7 @@ АбонентПредставлениеРасширеннаяПодсказка - 94 + 101 Label true true @@ -73,7 +73,7 @@ АбонентКакСвязатьсяРасширеннаяПодсказка - 96 + 103 Label true true @@ -123,7 +123,7 @@ АбонентКонтактРасширеннаяПодсказка - 98 + 105 Label true true @@ -171,7 +171,7 @@ Right ВходящийРасширеннаяПодсказка - 100 + 107 Label true true @@ -206,7 +206,7 @@
            ГруппаВажностьВходящийОтработатьРасширеннаяПодсказка - 93 + 100 Label true true @@ -240,7 +240,7 @@ ПредметРасширеннаяПодсказка - 103 + 110 Label true true @@ -284,7 +284,7 @@ ОтветственныйРасширеннаяПодсказка - 105 + 112 Label true true @@ -333,7 +333,7 @@ ДекорацияВажностьРасширеннаяПодсказка - 109 + 116 Label true true @@ -368,7 +368,7 @@ None ВажностьЗаполненыРасширеннаяПодсказка - 110 + 117 Label true true @@ -413,7 +413,7 @@ СтраницаКонтактыЗаполненыРасширеннаяПодсказка - 108 + 115 Label true true @@ -446,7 +446,7 @@ ДекорацияКонтактыНеЗаполненыРасширеннаяПодсказка - 114 + 121 Label true true @@ -485,7 +485,7 @@ true ГруппаКонтактыНеЗаполненыРасширеннаяПодсказка - 113 + 120 Label true true @@ -516,7 +516,7 @@ ВажностьРасширеннаяПодсказка - 115 + 122 Label true true @@ -561,7 +561,7 @@ true СтраницаКонтактыНеЗаполненыРасширеннаяПодсказка - 112 + 119 Label true true @@ -590,7 +590,7 @@ true СтраницыУказаныКонтактыРасширеннаяПодсказка - 107 + 114 Label true true @@ -619,7 +619,7 @@ РассмотретьПослеРасширеннаяПодсказка - 118 + 125 Label true true @@ -673,7 +673,7 @@ РассмотреноРасширеннаяПодсказка - 120 + 127 Label true true @@ -708,7 +708,7 @@ ГруппаОтработатьРасширеннаяПодсказка - 117 + 124 Label true true @@ -736,7 +736,7 @@ ГруппаПредметВажностьОтветственныйРасширеннаяПодсказка - 102 + 109 Label true true @@ -765,7 +765,7 @@ ГруппаШапкаРасширеннаяПодсказка - 92 + 99 Label true true @@ -795,7 +795,7 @@ ТемаРасширеннаяПодсказка - 122 + 129 Label true true @@ -842,7 +842,7 @@ ГруппаТемаКакРасширеннаяПодсказка - 124 + 131 Label true true @@ -880,7 +880,7 @@ None ОписаниеРасширеннаяПодсказка - 127 + 134 Label true true @@ -923,7 +923,7 @@ true СтраницаОписаниеРасширеннаяПодсказка - 126 + 133 Label true true @@ -955,7 +955,7 @@ СтраницаДополнительныеРеквизитыРасширеннаяПодсказка - 129 + 136 Label true true @@ -986,7 +986,7 @@ None КомментарийРасширеннаяПодсказка - 131 + 138 Label true true @@ -1029,7 +1029,7 @@ СтраницаКомментарийРасширеннаяПодсказка - 130 + 137 Label true true @@ -1058,7 +1058,7 @@ СтраницыОписаниеДополнительноРасширеннаяПодсказка - 125 + 132 Label true true @@ -1074,22 +1074,18 @@
            ГруппаАвторДатаРегистрации - 55 - - Автор - 38 + 91 + + ДекорацияПустаяПодвал + 92 true true true - - Объект.Автор - - Left - АвторРасширеннаяПодсказка - 134 + ДекорацияПустаяПодвалРасширеннаяПодсказка + 141 Label true true @@ -1098,32 +1094,25 @@ - АвторКонтекстноеМеню - 39 + ДекорацияПустаяПодвалКонтекстноеМеню + 93 true - InputField - true - Left - Enter - true - Left - true - - 25 - true - true - false - true - true - true - true - Normal + Label + true + true + true + + Right Дата - 53 + 94 + + <key>ru</key> + <value>Создан</value> + true true @@ -1135,7 +1124,7 @@ Left ДатаРасширеннаяПодсказка - 136 + 142 Label true true @@ -1145,30 +1134,67 @@ ДатаКонтекстноеМеню - 54 + 95 true - InputField + LabelField true Left Enter true Left true - + 13 true true false - true ru - ДФ='dd MMMM yyyy "г."' + ДЛФ=DT - true - true - true - Normal + + + + Автор + 96 + true + true + + true + + + Объект.Автор + + Left + + АвторРасширеннаяПодсказка + 144 + Label + true + true + + Left + + + + АвторКонтекстноеМеню + 97 + true + + LabelField + true + Left + Enter + true + Left + true + + 25 + true + true + false + true true @@ -1186,7 +1212,7 @@ ГруппаАвторДатаРегистрацииРасширеннаяПодсказка - 133 + 140 Label true true @@ -1217,7 +1243,7 @@ false СоздатьКонтактРасширеннаяПодсказка - 91 + 98 Label true true @@ -1252,7 +1278,7 @@ FillCheckProcessingAtServer ОбработкаПроверкиЗаполненияНаСервере - DontBlock + LockOwner true true true diff --git a/SSL/src/Documents/ТелефонныйЗвонок/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/ТелефонныйЗвонок/Forms/ФормаДокумента/Module.bsl index 6ca215c88..885d10b6f 100644 --- a/SSL/src/Documents/ТелефонныйЗвонок/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/ТелефонныйЗвонок/Forms/ФормаДокумента/Module.bsl @@ -96,7 +96,8 @@ ВзаимодействияКлиент.ОтработатьОповещение(ЭтаФорма,ИмяСобытия, Параметр, Источник); ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "ТелефонныйЗвонок"); - + ПроверитьДоступностьСозданияКонтакта(); + КонецПроцедуры &НаСервере @@ -122,12 +123,15 @@ Процедура КонтактНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; - Если ВзаимодействияКлиент.ВыбратьКонтакт(Предмет, Объект.АбонентКакСвязаться, - Объект.АбонентПредставление, Объект.АбонентКонтакт, Ложь, Ложь, Истина) Тогда - ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект,ЭтаФорма,"ТелефонныйЗвонок"); - Модифицированность = Истина; - ПроверитьДоступностьСозданияКонтакта(); - КонецЕсли; + + ПараметрыОткрытия = Новый Структура; + ПараметрыОткрытия.Вставить("ТолькоEmail", Ложь); + ПараметрыОткрытия.Вставить("ТолькоТелефон", Ложь); + ПараметрыОткрытия.Вставить("ЗаменятьПустыеАдресИПредставление", Истина); + ПараметрыОткрытия.Вставить("ДляФормыУточненияКонтактов", Ложь); + + ВзаимодействияКлиент.ВыбратьКонтакт(Предмет, Объект.АбонентКакСвязаться, + Объект.АбонентПредставление, Объект.АбонентКонтакт, ПараметрыОткрытия); КонецПроцедуры @@ -169,8 +173,7 @@ Процедура СоздатьКонтактВыполнить() ВзаимодействияКлиент.СоздатьКонтакт( - Объект.АбонентПредставление, Объект.АбонентКакСвязаться, Объект.Ссылка, СписокИнтерактивноСоздаваемыхКонтактов - ); + Объект.АбонентПредставление, Объект.АбонентКакСвязаться, Объект.Ссылка, СписокИнтерактивноСоздаваемыхКонтактов); КонецПроцедуры diff --git a/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo b/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo index 5d12b58ff..c64fe0e46 100644 --- a/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo +++ b/SSL/src/Documents/ТелефонныйЗвонок/ТелефонныйЗвонок.mdo @@ -99,6 +99,7 @@ Document.ЭлектронноеПисьмоВходящее Document.ЭлектронноеПисьмоИсходящее Document.ЗапланированноеВзаимодействие + Document.СообщениеSMS Use Use @@ -364,6 +365,7 @@ DocumentRef.ЭлектронноеПисьмоВходящее DocumentRef.ТелефонныйЗвонок DocumentRef.Встреча + DocumentRef.СообщениеSMS ru diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Form.form b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Form.form index 11e181fc7..e1c70c080 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Form.form +++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Form.form @@ -13,6 +13,8 @@ true None + Copy + Create Дата 4 @@ -204,6 +206,10 @@ 3 Left + + BeforeAddRow + СписокПередНачаломДобавления + СписокСтрокаПоиска 15 @@ -334,6 +340,8 @@ Left true + Copy + Create LockOwner true true diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаСписка/Module.bsl b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Module.bsl similarity index 99% rename from SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаСписка/Module.bsl rename to SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Module.bsl index 98a0d67ac..1e1fa233c 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаВыбора/Module.bsl @@ -1,3 +1,4 @@ + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаДокумента/Form.form b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаДокумента/Form.form index 178be69e4..6ef157313 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаДокумента/Form.form +++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаДокумента/Form.form @@ -2024,6 +2024,10 @@ Left + + ChoiceProcessing + ОбработкаВыбора + NotificationProcessing ОбработкаОповещения diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаДокумента/Module.bsl index 2e26d5a91..9e251f027 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаДокумента/Module.bsl @@ -113,6 +113,22 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.УточнениеКонтактов") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Массив") Тогда + Возврат; + КонецЕсли; + + ЗаполнитьУточненныеКонтакты(ВыбранноеЗначение); + Модифицированность = Истина; + + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, РежимЗаписи, РежимПроведения) @@ -209,20 +225,14 @@ спсПолучатели.Добавить( УправлениеЭлектроннойПочтойКлиент.ТаблицуКонтактовВМассив(Объект.ПолучателиОтвета), "Ответ"); - ПараметрыОткрытия = Новый Структура; - ПараметрыОткрытия.Вставить("УчетнаяЗапись", Объект.УчетнаяЗапись); - ПараметрыОткрытия.Вставить("СписокВыбранных", спсПолучатели); - ПараметрыОткрытия.Вставить("Предмет", Предмет); - ПараметрыОткрытия.Вставить("Письмо", Объект.Ссылка); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("УчетнаяЗапись", Объект.УчетнаяЗапись); + ПараметрыФормы.Вставить("СписокВыбранных", спсПолучатели); + ПараметрыФормы.Вставить("Предмет", Предмет); + ПараметрыФормы.Вставить("Письмо", Объект.Ссылка); // Откроем форму для редактирования списка адресатов - Результат = ОткрытьФормуМодально("ОбщаяФорма.УточнениеКонтактов", ПараметрыОткрытия); - Если ТипЗнч(Результат) <> Тип("Массив") Тогда - Возврат; - КонецЕсли; - - ЗаполнитьУточненныеКонтакты(Результат); - Модифицированность = Истина; + ОткрытьФорму("ОбщаяФорма.УточнениеКонтактов", ПараметрыФормы, ЭтаФорма); КонецПроцедуры @@ -357,28 +367,29 @@ ТекстЗаголовкиИнтернета = Новый ТекстовыйДокумент; ТекстЗаголовкиИнтернета.ДобавитьСтроку(Объект.ВнутреннийЗаголовок); - СтруктураПараметры = Новый Структура; - СтруктураПараметры.Вставить("Создано", Объект.Дата); - СтруктураПараметры.Вставить("Получено", Объект.ДатаПолучения); - СтруктураПараметры.Вставить("УведомитьОДоставке", Объект.УведомитьОДоставке); - СтруктураПараметры.Вставить("УведомитьОПрочтении", Объект.УведомитьОПрочтении); - СтруктураПараметры.Вставить("ЗаголовкиИнтернета", ТекстЗаголовкиИнтернета); - СтруктураПараметры.Вставить("Письмо", Объект.Ссылка); - СтруктураПараметры.Вставить("ТипПисьма", "ЭлектронноеПисьмоВходящее"); - СтруктураПараметры.Вставить("Кодировка", Объект.Кодировка); - СтруктураПараметры.Вставить("ВнутреннийНомер", Объект.Номер); - СтруктураПараметры.Вставить("УчетнаяЗапись", Объект.УчетнаяЗапись); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("Создано", Объект.Дата); + ПараметрыФормы.Вставить("Получено", Объект.ДатаПолучения); + ПараметрыФормы.Вставить("УведомитьОДоставке", Объект.УведомитьОДоставке); + ПараметрыФормы.Вставить("УведомитьОПрочтении", Объект.УведомитьОПрочтении); + ПараметрыФормы.Вставить("ЗаголовкиИнтернета", ТекстЗаголовкиИнтернета); + ПараметрыФормы.Вставить("Письмо", Объект.Ссылка); + ПараметрыФормы.Вставить("ТипПисьма", "ЭлектронноеПисьмоВходящее"); + ПараметрыФормы.Вставить("Кодировка", Объект.Кодировка); + ПараметрыФормы.Вставить("ВнутреннийНомер", Объект.Номер); + ПараметрыФормы.Вставить("УчетнаяЗапись", Объект.УчетнаяЗапись); - ОткрытьФормуМодально("ЖурналДокументов.Взаимодействия.Форма.ПараметрыЭлектронногоПисьма", - СтруктураПараметры, ЭтаФорма); + ОткрытьФорму("ЖурналДокументов.Взаимодействия.Форма.ПараметрыЭлектронногоПисьма", ПараметрыФормы, ЭтаФорма); КонецПроцедуры &НаКлиенте Процедура СвязанныеВзаимодействияВыполнить() - ОткрытьФормуМодально("ЖурналДокументов.Взаимодействия.ФормаСписка", - Новый Структура("ОбъектОтбора", Объект.Предмет)); + ПараметрыФормы = Новый Структура; + ПараметрыФормы.Вставить("ОбъектОтбора", Объект.Предмет); + + ОткрытьФорму("ЖурналДокументов.Взаимодействия.ФормаСписка", ПараметрыФормы, ЭтаФорма); КонецПроцедуры diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаСписка/Form.form b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаСписка/Form.form index a5997d36f..f32837bee 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаСписка/Form.form +++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/Forms/ФормаСписка/Form.form @@ -135,10 +135,6 @@ 3 Left - - BeforeAddRow - СписокПередНачаломДобавления - СписокСтрокаПоиска 13 diff --git a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ЭлектронноеПисьмоВходящее.mdo b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ЭлектронноеПисьмоВходящее.mdo index 1643d6bf2..53522aeaf 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ЭлектронноеПисьмоВходящее.mdo +++ b/SSL/src/Documents/ЭлектронноеПисьмоВходящее/ЭлектронноеПисьмоВходящее.mdo @@ -717,7 +717,7 @@ PersonalComputer MobileDevice - + ФормаСписка ru diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Form.form b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Form.form index 268853e5e..ff8238a19 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Form.form +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Form.form @@ -26,7 +26,7 @@ ОтправительПредставлениеРасширеннаяПодсказка - 303 + 305 Label true true @@ -70,7 +70,7 @@ СписокПолучателейПисьмаРасширеннаяПодсказка - 305 + 307 Label true true @@ -127,7 +127,7 @@ СписокПолучателейКопийРасширеннаяПодсказка - 307 + 309 Label true true @@ -188,7 +188,7 @@ СписокПолучателейСкрытыхКопийРасширеннаяПодсказка - 309 + 311 Label true true @@ -248,7 +248,7 @@ ГруппаПолучателиРасширеннаяПодсказка - 302 + 304 Label true true @@ -282,7 +282,7 @@ ПредметРасширеннаяПодсказка - 312 + 314 Label true true @@ -337,7 +337,7 @@ ДекорацияВажностьРасширеннаяПодсказка - 318 + 320 Label true true @@ -372,7 +372,7 @@ None ВажностьЗаполненыРасширеннаяПодсказка - 319 + 321 Label true true @@ -417,7 +417,7 @@ СтраницаКонтактыЗаполненыРасширеннаяПодсказка - 317 + 319 Label true true @@ -446,7 +446,7 @@ УточнитьКонтактыРасширеннаяПодсказка - 323 + 325 Label true true @@ -479,7 +479,7 @@ true ГруппаКонтактыНеЗаполненыРасширеннаяПодсказка - 322 + 324 Label true true @@ -510,7 +510,7 @@ ВажностьРасширеннаяПодсказка - 324 + 326 Label true true @@ -555,7 +555,7 @@ true СтраницаКонтактыНеЗаполненыРасширеннаяПодсказка - 321 + 323 Label true true @@ -584,7 +584,7 @@ true СтраницыУказаныКонтактыРасширеннаяПодсказка - 316 + 318 Label true true @@ -612,7 +612,7 @@ ГруппаВажностьУточнениеКонтактовРасширеннаяПодсказка - 315 + 317 Label true true @@ -644,7 +644,7 @@ ГруппаВажностьОтработкаРасширеннаяПодсказка - 314 + 316 Label true true @@ -674,7 +674,7 @@ ОтветственныйРасширеннаяПодсказка - 326 + 328 Label true true @@ -726,7 +726,7 @@ НаКонтролеРасширеннаяПодсказка - 329 + 331 Label true true @@ -760,7 +760,7 @@ None РассмотретьПослеРасширеннаяПодсказка - 331 + 333 Label true true @@ -808,7 +808,7 @@ ГруппаНаКонтролеРасширеннаяПодсказка - 328 + 330 Label true true @@ -841,7 +841,7 @@ false ГруппаПрочееРасширеннаяПодсказка - 311 + 313 Label true true @@ -874,7 +874,7 @@ ГруппаПолучателиПрочееРасширеннаяПодсказка - 301 + 303 Label true true @@ -909,7 +909,7 @@ ДекорацияТемаРасширеннаяПодсказка - 334 + 336 Label true true @@ -944,7 +944,7 @@ None ТемаРасширеннаяПодсказка - 335 + 337 Label true true @@ -982,7 +982,7 @@ ГруппаТемаРасширеннаяПодсказка - 333 + 335 Label true true @@ -1010,7 +1010,7 @@ ГруппаШапкаРасширеннаяПодсказка - 300 + 302 Label true true @@ -1044,7 +1044,7 @@ ДобавитьВложениеСкрепкаРасширеннаяПодсказка - 339 + 341 Label true true @@ -1092,7 +1092,7 @@ ВложенияПодписанЭЦПРасширеннаяПодсказка - 355 + 357 Label true true @@ -1141,7 +1141,7 @@ None ИндексКартинкиРасширеннаяПодсказка - 358 + 360 Label true true @@ -1187,7 +1187,7 @@ ИмяФайлаРасширеннаяПодсказка - 360 + 362 Label true true @@ -1220,7 +1220,7 @@ ГруппаРасширеннаяПодсказка - 357 + 359 Label true true @@ -1248,7 +1248,7 @@ РазмерПредставлениеРасширеннаяПодсказка - 362 + 364 Label true true @@ -1307,10 +1307,10 @@ ВложенияСтрокаПоиска - 346 + 348 ВложенияСтрокаПоискаРасширеннаяПодсказка - 348 + 350 Label true true @@ -1320,7 +1320,7 @@ ВложенияСтрокаПоискаКонтекстноеМеню - 347 + 349 true Вложения @@ -1330,10 +1330,10 @@ ВложенияСостояниеПросмотра - 349 + 351 ВложенияСостояниеПросмотраРасширеннаяПодсказка - 351 + 353 Label true true @@ -1343,7 +1343,7 @@ ВложенияСостояниеПросмотраКонтекстноеМеню - 350 + 352 true ViewStatusAddition @@ -1354,10 +1354,10 @@ ВложенияУправлениеПоиском - 352 + 354 ВложенияУправлениеПоискомРасширеннаяПодсказка - 354 + 356 Label true true @@ -1367,7 +1367,7 @@ ВложенияУправлениеПоискомКонтекстноеМеню - 353 + 355 true SearchControlAddition @@ -1378,7 +1378,7 @@ ВложенияРасширеннаяПодсказка - 345 + 347 Label true true @@ -1400,7 +1400,7 @@ false ДобавитьВложениеРасширеннаяПодсказка - 340 + 342 Label true true @@ -1427,7 +1427,7 @@ false ОткрытьВложениеРасширеннаяПодсказка - 341 + 343 Label true true @@ -1454,7 +1454,7 @@ false СохранитьВложениеРасширеннаяПодсказка - 342 + 344 Label true true @@ -1485,7 +1485,7 @@ false УдалитьВложениеРасширеннаяПодсказка - 343 + 345 Label true true @@ -1511,7 +1511,7 @@ ВложенияКонтекстноеМенюСвойстваВложенияРасширеннаяПодсказка - 344 + 346 Label true true @@ -1578,7 +1578,7 @@ СтраницаРедактированиеРасширеннаяПодсказка - 338 + 340 Label true true @@ -1602,7 +1602,7 @@ ДобавитьВложениеГиперссылкаРасширеннаяПодсказка - 373 + 375 Label true true @@ -1639,7 +1639,7 @@ 1 СтраницаДобавитьРасширеннаяПодсказка - 372 + 374 Label true true @@ -1668,7 +1668,7 @@ СтраницыВложенияРасширеннаяПодсказка - 337 + 339 Label true true @@ -1710,7 +1710,7 @@ None ТекстПисьмаРасширеннаяПодсказка - 379 + 381 Label true true @@ -1757,7 +1757,7 @@ true СтраницаОбычныйТекстРасширеннаяПодсказка - 378 + 380 Label true true @@ -1792,7 +1792,7 @@ ГруппаКоманднаяПанельФорматированногоДокументаРасширеннаяПодсказка - 382 + 384 Label true true @@ -1820,7 +1820,7 @@ None ТекстПисьмаФорматированныйДокументРасширеннаяПодсказка - 383 + 385 Label true true @@ -1862,7 +1862,7 @@ СтраницаФорматированныйДокументРасширеннаяПодсказка - 381 + 383 Label true true @@ -1891,7 +1891,7 @@ СтраницыТекстПисьмаРасширеннаяПодсказка - 377 + 379 Label true true @@ -1925,7 +1925,7 @@ None ТекстВходящегоПисьмаРасширеннаяПодсказка - 386 + 388 Label true true @@ -1972,7 +1972,7 @@ ГруппаВходящееРасширеннаяПодсказка - 385 + 387 Label true true @@ -2006,7 +2006,7 @@ НомерРасширеннаяПодсказка - 389 + 391 Label true true @@ -2049,7 +2049,7 @@ ДатаОтправленияРасширеннаяПодсказка - 391 + 393 Label true true @@ -2102,7 +2102,7 @@ ГруппаОтправленоНомерРасширеннаяПодсказка - 388 + 390 Label true true @@ -2134,7 +2134,7 @@ СтраницаПисьмоРасширеннаяПодсказка - 376 + 378 Label true true @@ -2168,7 +2168,7 @@ true СтраницаОписаниеРасширеннаяПодсказка - 375 + 377 Label true true @@ -2200,7 +2200,7 @@ СтраницаДополнительныеРеквизитыРасширеннаяПодсказка - 393 + 395 Label true true @@ -2231,7 +2231,7 @@ None КомментарийРасширеннаяПодсказка - 395 + 397 Label true true @@ -2274,7 +2274,7 @@ СтраницаКомментарийРасширеннаяПодсказка - 394 + 396 Label true true @@ -2303,7 +2303,7 @@ СтраницыОписаниеДополнительноРасширеннаяПодсказка - 374 + 376 Label true true @@ -2331,7 +2331,7 @@ false СправкаРасширеннаяПодсказка - 286 + 287 Label true true @@ -2358,7 +2358,7 @@ false ОтправитьРасширеннаяПодсказка - 287 + 288 Label true true @@ -2384,7 +2384,7 @@ ФормаЗаписатьИЗакрытьРасширеннаяПодсказка - 288 + 289 Label true true @@ -2411,7 +2411,7 @@ false ЗаписатьРасширеннаяПодсказка - 289 + 290 Label true true @@ -2437,7 +2437,7 @@ ФормаПеречитатьРасширеннаяПодсказка - 290 + 291 Label true true @@ -2464,7 +2464,7 @@ ФормаУстановитьПометкуУдаленияРасширеннаяПодсказка - 291 + 292 Label true true @@ -2492,7 +2492,7 @@ false ИзменитьФормуРасширеннаяПодсказка - 292 + 293 Label true true @@ -2508,6 +2508,33 @@ UserCmds Auto + + ФормаВставитьВнешнююСсылкуНаОбъектИнформационнойБазы + 286 + true + true + + true + + + ФормаВставитьВнешнююСсылкуНаОбъектИнформационнойБазыРасширеннаяПодсказка + 294 + Label + true + true + + Left + + + Form.Command.ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Дополнительно 154 @@ -2519,7 +2546,7 @@ false ДополнительноРасширеннаяПодсказка - 293 + 295 Label true true @@ -2546,7 +2573,7 @@ ФормаУточнитьКонтактыРасширеннаяПодсказка - 294 + 296 Label true true @@ -2573,7 +2600,7 @@ ОтображатьТекстПисьмаОснованияРасширеннаяПодсказка - 295 + 297 Label true true @@ -2602,7 +2629,7 @@ ФормаHTMLРасширеннаяПодсказка - 297 + 299 Label true true @@ -2628,7 +2655,7 @@ ФормаОбычныйТекстРасширеннаяПодсказка - 298 + 300 Label true true @@ -2658,7 +2685,7 @@ ФорматСообщенияРасширеннаяПодсказка - 296 + 298 Label true true @@ -2690,7 +2717,7 @@ ГруппаГлобальныеКомандыРасширеннаяПодсказка - 299 + 301 Label true true @@ -2704,6 +2731,10 @@ Left + + ChoiceProcessing + ОбработкаВыбора + NotificationProcessing ОбработкаОповещения @@ -3595,6 +3626,30 @@ Auto Auto + + ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы + + <key>ru</key> + <value>Вставить внешнюю ссылку на объект информационной базы</value> + + 3 + + ru + Вставить внешнюю ссылку на объект информационной базы + + + true + + Ctrl+Shift+V + + + ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы + + + true + Auto + Auto + УчетнаяЗапись @@ -3614,10 +3669,7 @@ Тело - - String - - + diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl index eff008b73..f0dd320ee 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормаДокумента/Module.bsl @@ -61,6 +61,71 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Перем СтрокаНачало, СтрокаКонец, КолонкаНачало, КолонкаКонец; + Перем НачалоВыделения, КонецВыделения; + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("Документ.ЭлектронноеПисьмоИсходящее.Форма.ФормированиеВнешнейСсылкиНаОбъект") Тогда + + Если ФорматСообщения = ПредопределенноеЗначение("Перечисление.СпособыРедактированияЭлектронныхПисем.ОбычныйТекст") Тогда + Элементы.ТекстПисьма.ПолучитьГраницыВыделения(СтрокаНачало, КолонкаНачало, СтрокаКонец, КолонкаКонец); + ТекстовыйДокумент = Новый ТекстовыйДокумент; + ТекстовыйДокумент.УстановитьТекст(ТекстПисьма); + СтрокаВставки = ТекстовыйДокумент.ПолучитьСтроку(СтрокаНачало); + СтрокаВставки = Лев(СтрокаВставки, КолонкаНачало - 1) + ВыбранноеЗначение + Прав(СтрокаВставки,СтрДлина(СтрокаВставки) - КолонкаКонец + 1); + ТекстовыйДокумент.ЗаменитьСтроку(СтрокаНачало, СтрокаВставки); + ТекстПисьма = ТекстовыйДокумент.ПолучитьТекст(); + Иначе + + Элементы.ТекстПисьмаФорматированныйДокумент.ПолучитьГраницыВыделения(НачалоВыделения, КонецВыделения); + ТекстПисьмаФорматированныйДокумент.Вставить(НачалоВыделения, ВыбранноеЗначение); + + КонецЕсли; + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ЖурналДокументов.Взаимодействия.Форма.ПараметрыЭлектронногоПисьма") Тогда + + Если ВыбранноеЗначение <> Неопределено И Объект.СтатусПисьма <> ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Отправлено") Тогда + + Объект.УведомитьОДоставке = ВыбранноеЗначение.УведомитьОДоставке; + Объект.УведомитьОПрочтении = ВыбранноеЗначение.УведомитьОПрочтении; + Объект.ВключатьТелоИсходногоПисьма = ВыбранноеЗначение.ВключатьТелоИсходногоПисьма; + Модифицированность = Истина; + + КонецЕсли; + + ИначеЕсли ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.АдреснаяКнига") + ИЛИ ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ОбщаяФорма.УточнениеКонтактов") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Массив") И ТипЗнч(ВыбранноеЗначение) <> Тип("Соответствие") Тогда + Возврат; + КонецЕсли; + + // Получим список адресатов + СоответствиеТабличныхЧастей = Новый Соответствие; + СоответствиеТабличныхЧастей.Вставить("Кому", Объект.ПолучателиПисьма); + СоответствиеТабличныхЧастей.Вставить("Копии", Объект.ПолучателиКопий); + СоответствиеТабличныхЧастей.Вставить("Скрытые", Объект.ПолучателиСкрытыхКопий); + СоответствиеТабличныхЧастей.Вставить("Ответ", Объект.ПолучателиОтвета); + + ДляПодбора = (Объект.СтатусПисьма <> ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Отправлено")); + + // Заполним адресатов + Если ДляПодбора Тогда + ЗаполнитьПодобранныхПолучателей(СоответствиеТабличныхЧастей, ВыбранноеЗначение); + Иначе + ЗаполнитьУточненныеКонтакты(ВыбранноеЗначение); + КонецЕсли; + + // Установим признак модифицированности + ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "ЭлектронноеПисьмоИсходящее"); + Модифицированность = Истина; + + КонецЕсли; + +КонецПроцедуры + &НаСервере Процедура ПриЧтенииНаСервере(ТекущийОбъект) @@ -381,7 +446,7 @@ ГруппаПодбора = НСтр("ru = 'Скрытые'"); КонецЕсли; - РедактироватьСписокПолучателей(Истина,ГруппаПодбора); + РедактироватьСписокПолучателей(Истина, ГруппаПодбора); Иначе @@ -569,7 +634,6 @@ КонецПроцедуры - //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ Вложения @@ -708,7 +772,7 @@ Если Объект.СтатусПисьма <> ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Отправлено") Тогда - РедактироватьСписокПолучателей(Истина,НСтр("ru = 'Копии'")); + РедактироватьСписокПолучателей(Истина, НСтр("ru = 'Копии'")); Иначе @@ -740,16 +804,14 @@ СтруктураПараметры.Вставить("ВключатьТелоИсходногоПисьма", Объект.ВключатьТелоИсходногоПисьма); СтруктураПараметры.Вставить("УчетнаяЗапись", Объект.УчетнаяЗапись); - Результат = ОткрытьФормуМодально("ЖурналДокументов.Взаимодействия.Форма.ПараметрыЭлектронногоПисьма", - СтруктураПараметры, ЭтаФорма); - Если Результат <> Неопределено И Объект.СтатусПисьма <> ПредопределенноеЗначение("Перечисление.СтатусыИсходящегоЭлектронногоПисьма.Отправлено") Тогда - - Объект.УведомитьОДоставке = Результат.УведомитьОДоставке; - Объект.УведомитьОПрочтении = Результат.УведомитьОПрочтении; - Объект.ВключатьТелоИсходногоПисьма = Результат.ВключатьТелоИсходногоПисьма; - Модифицированность = Истина; - - КонецЕсли; + ОткрытьФорму("ЖурналДокументов.Взаимодействия.Форма.ПараметрыЭлектронногоПисьма", СтруктураПараметры, ЭтаФорма); + +КонецПроцедуры + +&НаКлиенте +Процедура ВставитьВнешнююСсылкуНаОбъектИнформационнойБазы(Команда) + + ОткрытьФорму("Документ.ЭлектронноеПисьмоИсходящее.Форма.ФормированиеВнешнейСсылкиНаОбъект",,ЭтаФорма); КонецПроцедуры @@ -1347,7 +1409,7 @@ Объект.ТекстHTML = Взаимодействия.ОбработатьТекстHTMLДляФорматированногоДокумента( Объект.Ссылка, Объект.ТекстHTML,СтруктураВложений); ТекстПисьмаФорматированныйДокумент.УстановитьHTML(Объект.ТекстHTML, СтруктураВложений); - ИначеЕсли ПараметрыРаботыПользователяПользователя.Подпись <> Неопределено Тогда + ИначеЕсли ПараметрыРаботыПользователяПользователя.Подпись <> Неопределено И Параметры.Тело = Неопределено Тогда ТекстПисьмаФорматированныйДокумент = ПараметрыРаботыПользователяПользователя.Подпись; КонецЕсли; @@ -1359,7 +1421,7 @@ ТекстПисьма = Объект.Текст; Если Объект.Ссылка.Пустая() И ПараметрыРаботыПользователяПользователя.Подпись <> Неопределено Тогда - ТекстПисьма = ПараметрыРаботыПользователяПользователя.Подпись; + ТекстПисьма = ТекстПисьма + ПараметрыРаботыПользователяПользователя.Подпись; КонецЕсли; Объект.Кодировка = "UTF-8"; @@ -1406,8 +1468,12 @@ Объект.Тема = Параметры.Тема; КонецЕсли; - Если НЕ ПустаяСтрока(Параметры.Тело) Тогда + Если ТипЗнч(Параметры.Тело) = Тип("Структура") Тогда + ТекстПисьмаФорматированныйДокумент.УстановитьHTML(Параметры.Тело.ТекстHTML, Параметры.Тело.СтруктураВложений); + Объект.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.HTMLСКартинками; + ИначеЕсли ТипЗнч(Параметры.Тело) = Тип("Строка") И Не ПустаяСтрока(Параметры.Тело) Тогда Объект.Текст = Параметры.Тело; + Объект.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст; КонецЕсли; Если Параметры.Свойство("Кому") И Параметры.Кому <> Неопределено Тогда @@ -1681,7 +1747,7 @@ МассивОписанияТиповКонтактов = ВзаимодействияКлиентСервер.ПолучитьМассивОписанияВозможныхКонтактов(); ТекстЗапроса = - "ВЫБРАТЬ РАЗЛИЧНЫЕ + "ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ | Таблица.Ссылка КАК Контакт, | ПРЕДСТАВЛЕНИЕ(Таблица.Ссылка) КАК Представление, | ТаблицаКонтактнаяИнформация.АдресЭП КАК АдресЭП @@ -1877,7 +1943,7 @@ КонецПроцедуры &НаКлиенте -Процедура РедактироватьСписокПолучателей(ДляПодбора,ГруппаПодбора = "") +Процедура РедактироватьСписокПолучателей(ДляПодбора, ГруппаПодбора = "") // Получим список адресатов СоответствиеТабличныхЧастей = Новый Соответствие; @@ -1901,22 +1967,9 @@ // Откроем форму для редактирования списка адресатов ИмяОбщейФормы = ?(ДляПодбора, "ОбщаяФорма.АдреснаяКнига", "ОбщаяФорма.УточнениеКонтактов"); - Результат = ОткрытьФормуМодально(ИмяОбщейФормы, ПараметрыОткрытия); - Если (ТипЗнч(Результат) <> Тип("Массив")) И (ТипЗнч(Результат) <> Тип("Соответствие")) Тогда - Возврат; - КонецЕсли; - - // Заполним адресатов - Если ДляПодбора Тогда - ЗаполнитьПодобранныхПолучателей(СоответствиеТабличныхЧастей, Результат); - Иначе - ЗаполнитьУточненныеКонтакты(Результат); - КонецЕсли; - // Установим признак модифицированности - ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Объект, ЭтаФорма, "ЭлектронноеПисьмоИсходящее"); - Модифицированность = Истина; - + ОткрытьФорму(ИмяОбщейФормы, ПараметрыОткрытия, ЭтаФорма); + КонецПроцедуры &НаКлиенте diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормированиеВнешнейСсылкиНаОбъект/Form.form b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормированиеВнешнейСсылкиНаОбъект/Form.form new file mode 100644 index 000000000..e1aa86dad --- /dev/null +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормированиеВнешнейСсылкиНаОбъект/Form.form @@ -0,0 +1,568 @@ + + + + <key>ru</key> + <value>Формирование внешней ссылки на объект</value> + + + ГруппаШапка + 5 + + ГруппаАдрес + 16 + + АдресПубликацииИнформационнойБазыВИнтернете + 1 + true + true + + true + + + АдресПубликацииИнформационнойБазыВИнтернете + + Top + + OnChange + АдресПубликацииИнформационнойБазыВИнтернетеПриИзменении + + + АдресПубликацииИнформационнойБазыВИнтернетеРасширеннаяПодсказка + 21 + Label + true + true + + Left + + + + АдресПубликацииИнформационнойБазыВИнтернетеКонтекстноеМеню + 2 + true + + InputField + Enter + true + Left + true + + 40 + true + true + false + true + true + true + true + Normal + + + + ДекорацияАдрес + 17 + + <key>ru</key> + <value>Адрес, по которому информационная база доступна внешнему пользователю. Если значение не заполнено, обратитесь к администратору системы.</value> + + true + true + + true + + + ДекорацияАдресРасширеннаяПодсказка + 23 + Label + true + true + + Left + + + + ДекорацияАдресКонтекстноеМеню + 18 + true + + Label + true + 3 + true + false + false + + Style.ПоясняющийТекст + + + Left + Top + + + true + true + + true + + + <key>ru</key> + <value>Группа адрес</value> + + + ru + Группа адрес + + 40 + + ГруппаАдресРасширеннаяПодсказка + 20 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + + ГруппаСсылкаНаОбъект + 13 + + СсылкаНаОбъект + 3 + + <key>ru</key> + <value>Внутренняя ссылка на объект</value> + + true + true + + true + + + СсылкаНаОбъект + + Top + + OnChange + СсылкаНаОбъектПриИзменении + + + СсылкаНаОбъектРасширеннаяПодсказка + 25 + Label + true + true + + Left + + + + СсылкаНаОбъектКонтекстноеМеню + 4 + true + + InputField + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + + + ДекорацияПодсказкаСсылкаНаОбъект + 14 + + <key>ru</key> + <value>Для получения внутренней ссылки необходимо открыть форму объекта, выполнить комаду "Получить ссылку..."(Ctrl+F11) , полученную ссылку скопировать в буфер и вставить в это поле.</value> + + true + true + + true + + + ДекорацияПодсказкаСсылкаНаОбъектРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + + ДекорацияПодсказкаСсылкаНаОбъектКонтекстноеМеню + 15 + true + + Label + true + 3 + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + <key>ru</key> + <value>Группа ссылка на объект</value> + + + ru + Группа ссылка на объект + + 50 + false + + ГруппаСсылкаНаОбъектРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + UsualGroup + + Vertical + Auto + true + true + Auto + Auto + + + true + true + + true + + + <key>ru</key> + <value>Группа шапка</value> + + + ru + Группа шапка + + + ГруппаШапкаРасширеннаяПодсказка + 19 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ФормируемаяСсылка + 6 + true + + true + + + СформированнаяСсылка + + + ФормируемаяСсылкаРасширеннаяПодсказка + 28 + Label + true + true + + Left + + + + ФормируемаяСсылкаКонтекстноеМеню + 7 + true + + InputField + true + Enter + true + Left + true + + true + true + true + true + true + true + Normal + + System.DefaultGUIFont + + + + + ГруппаПодвал + 12 + + ДекорацияПустая + 10 + true + true + + true + + + ДекорацияПустаяРасширеннаяПодсказка + 31 + Label + true + true + + Left + + + + ДекорацияПустаяКонтекстноеМеню + 11 + true + + Label + true + true + true + + Left + + + + ГруппаВставить + 9 + + Вставить + 8 + true + true + + true + + + ВставитьРасширеннаяПодсказка + 33 + Label + true + true + + Left + + + Form.Command.Вставить + Auto + true + true + true + UserCmds + Auto + + true + true + + true + + + <key>ru</key> + <value>Группа вставить</value> + + + ru + Группа вставить + + 9 + false + + ГруппаВставитьРасширеннаяПодсказка + 32 + Label + true + true + + Left + + + CommandBar + + Left + + + true + true + + true + + + <key>ru</key> + <value>Группа подвал</value> + + + ru + Группа подвал + + + ГруппаПодвалРасширеннаяПодсказка + 30 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + Left + + + OnOpen + ПриОткрытии + + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + АдресПубликацииИнформационнойБазыВИнтернете + + <key>ru</key> + <value>Адрес публикации информационной базы в интернете</value> + + 1 + + String + + + + true + + + true + + + + СсылкаНаОбъект + + <key>ru</key> + <value>Ссылка на объект</value> + + 2 + + String + + 250 + + + + true + + + true + + + + СформированнаяСсылка + + <key>ru</key> + <value>Сформированная ссылка</value> + + 3 + + String + + + + true + + + true + + + + Вставить + + <key>ru</key> + <value>Вставить</value> + + 1 + + ru + Вставить + + + true + + + + Вставить + + + Auto + Auto + + + + + + diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормированиеВнешнейСсылкиНаОбъект/Module.bsl b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормированиеВнешнейСсылкиНаОбъект/Module.bsl new file mode 100644 index 000000000..c670ece38 --- /dev/null +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/Forms/ФормированиеВнешнейСсылкиНаОбъект/Module.bsl @@ -0,0 +1,59 @@ + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + АдресПубликацииИнформационнойБазыВИнтернете = Взаимодействия.АдресПубликацииИнформационнойБазыВИнтернете(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПриОткрытии(Отказ) + + СформироватьАдресСсылки(); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ + +&НаКлиенте +Процедура АдресПубликацииИнформационнойБазыВИнтернетеПриИзменении(Элемент) + + СформироватьАдресСсылки(); + +КонецПроцедуры + +&НаКлиенте +Процедура СсылкаНаОбъектПриИзменении(Элемент) + + СформироватьАдресСсылки(); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ КОМАНД ФОРМЫ + +&НаКлиенте +Процедура Вставить(Команда) + + ОповеститьОВыборе(СформированнаяСсылка); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////////// +// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ + +&НаКлиенте +Процедура СформироватьАдресСсылки() + + СформированнаяСсылка = АдресПубликацииИнформационнойБазыВИнтернете + "#"+ СсылкаНаОбъект; + +КонецПроцедуры + diff --git a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo index 45e632e4f..0a5fbe8ef 100644 --- a/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo +++ b/SSL/src/Documents/ЭлектронноеПисьмоИсходящее/ЭлектронноеПисьмоИсходящее.mdo @@ -99,6 +99,7 @@ Document.Встреча Document.ТелефонныйЗвонок Document.ЗапланированноеВзаимодействие + Document.СообщениеSMS Use Managed Use @@ -598,6 +599,7 @@ DocumentRef.ЭлектронноеПисьмоВходящее DocumentRef.ТелефонныйЗвонок DocumentRef.Встреча + DocumentRef.СообщениеSMS ru @@ -763,6 +765,15 @@ PersonalComputer MobileDevice + + ФормированиеВнешнейСсылкиНаОбъект + + ru + Формирование внешней ссылки на объект + + PersonalComputer + MobileDevice + diff --git a/SSL/src/Enums/СостоянияДокументаСообщениеSMS/СостоянияДокументаСообщениеSMS.mdo b/SSL/src/Enums/СостоянияДокументаСообщениеSMS/СостоянияДокументаСообщениеSMS.mdo new file mode 100644 index 000000000..9ff3d2246 --- /dev/null +++ b/SSL/src/Enums/СостоянияДокументаСообщениеSMS/СостоянияДокументаСообщениеSMS.mdo @@ -0,0 +1,73 @@ + + + + + + + + СостоянияДокументаСообщениеSMS + + ru + Состояния документа сообщение SMS + + + Use + Order + + Use + + + + + Use + Ref + + Use + + + + true + BothWays + + Черновик + + ru + Черновик + + + + Исходящее + + ru + Исходящее + + + + Доставляется + + ru + Доставляется + + + + Доставлено + + ru + Доставлено + + + + ЧастичноДоставлено + + ru + Частично доставлено + + + + НеДоставлено + + ru + Не доставлено + + + diff --git a/SSL/src/Enums/СостоянияСообщенияSMS/СостоянияСообщенияSMS.mdo b/SSL/src/Enums/СостоянияСообщенияSMS/СостоянияСообщенияSMS.mdo new file mode 100644 index 000000000..39609189e --- /dev/null +++ b/SSL/src/Enums/СостоянияСообщенияSMS/СостоянияСообщенияSMS.mdo @@ -0,0 +1,101 @@ + + + + + + + + СостоянияСообщенияSMS + + ru + Состояния сообщения SMS + + + Use + Order + + Use + + + + + Use + Ref + + Use + + + + true + BothWays + + Черновик + + ru + Черновик + + + + Исходящее + + ru + Исходящее + + + + НеУдалосьПередатьПровайдеру + + ru + Не удалось передать провайдеру + + + + НеОтправленоПровайдером + + ru + Не отправлено провайдером + + + + ОтправляетсяПровайдером + + ru + Отправляется провайдером + + + + ОтправленоПровайдером + + ru + Отправлено провайдером + + + + Доставлено + + ru + Доставлено + + + + НеДоставлено + + ru + Не доставлено + + + + НеОпознаноПровайдером + + ru + Не опознано провайдером + + + + ОшибкаПолученияСтатусаУПровайдера + + ru + Ошибка получения статуса у провайдера + + + diff --git a/SSL/src/Enums/УдалитьВидыПоставляемыхДанных/УдалитьВидыПоставляемыхДанных.mdo b/SSL/src/Enums/УдалитьВидыПоставляемыхДанных/УдалитьВидыПоставляемыхДанных.mdo deleted file mode 100644 index 35d2bc4e7..000000000 --- a/SSL/src/Enums/УдалитьВидыПоставляемыхДанных/УдалитьВидыПоставляемыхДанных.mdo +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - - - УдалитьВидыПоставляемыхДанных - - ru - (Не используется)Виды поставляемых данных - - - Use - Order - - Use - - - - - Use - Ref - - Use - - - - true - BothWays - - РегистрСведений_АдресныеСокращения - - ru - Адресные сокращения - - - - РегистрСведений_АдресныйКлассификатор - - ru - Адресный классификатор - - - - РегистрСведений_ДанныеПроизводственногоКалендаря - - ru - Данные производственного календаря - - - - РегистрСведений_СтавкаРефинансированияЦБ - - ru - Ставки рефинансирования ЦБ РФ - - - - Справочник_Банки - - ru - Справочник банков РФ - - - - Справочник_ЕдиныеНормыАмортизационныхОтчисленийОсновныхФондов - - ru - Единые нормы амортизации основных фондов - - - - Справочник_КлассификаторЕдиницИзмерения - - ru - Общероссийский классификатор единиц измерения - - - - Справочник_ОбщероссийскийКлассификаторОсновныхФондов - - ru - Общероссийский классификатор основных фондов - - - - Справочник_СтраныМира - - ru - Общероссийский классификатор стран мира - - - - Справочник_ПроизводственныеКалендари - - ru - Производственные календари - - - diff --git a/SSL/src/EventSubscriptions/ВыполнитьДействияПередЗаписьюПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПередЗаписьюПрисоединенногоФайлаВзаимодействия.mdo b/SSL/src/EventSubscriptions/ВыполнитьДействияПередЗаписьюПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПередЗаписьюПрисоединенногоФайлаВзаимодействия.mdo index 3a5bc9645..3df33ff84 100644 --- a/SSL/src/EventSubscriptions/ВыполнитьДействияПередЗаписьюПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПередЗаписьюПрисоединенногоФайлаВзаимодействия.mdo +++ b/SSL/src/EventSubscriptions/ВыполнитьДействияПередЗаписьюПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПередЗаписьюПрисоединенногоФайлаВзаимодействия.mdo @@ -6,6 +6,7 @@ Выполнить действия перед записью присоединенного файла (Взаимодействия) + CatalogObject.СообщениеSMSПрисоединенныеФайлы CatalogObject.ВстречаПрисоединенныеФайлы CatalogObject.ТелефонныйЗвонокПрисоединенныеФайлы CatalogObject.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы diff --git a/SSL/src/EventSubscriptions/ВыполнитьДействияПередУдалениемПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПередУдалениемПрисоединенногоФайлаВзаимодействия.mdo b/SSL/src/EventSubscriptions/ВыполнитьДействияПередУдалениемПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПередУдалениемПрисоединенногоФайлаВзаимодействия.mdo index ba32717b4..266e67bbb 100644 --- a/SSL/src/EventSubscriptions/ВыполнитьДействияПередУдалениемПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПередУдалениемПрисоединенногоФайлаВзаимодействия.mdo +++ b/SSL/src/EventSubscriptions/ВыполнитьДействияПередУдалениемПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПередУдалениемПрисоединенногоФайлаВзаимодействия.mdo @@ -6,6 +6,7 @@ Выполнить действия перед удалением присоединенного файла (Взаимодействия) + CatalogObject.СообщениеSMSПрисоединенныеФайлы CatalogObject.ВстречаПрисоединенныеФайлы CatalogObject.ТелефонныйЗвонокПрисоединенныеФайлы CatalogObject.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы diff --git a/SSL/src/EventSubscriptions/ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия.mdo b/SSL/src/EventSubscriptions/ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия.mdo index 5e9e0bd72..8e434c45c 100644 --- a/SSL/src/EventSubscriptions/ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия.mdo +++ b/SSL/src/EventSubscriptions/ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия/ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействия.mdo @@ -6,6 +6,7 @@ Выполнить действия при записи присоединенного файла (Взаимодействия) + CatalogObject.СообщениеSMSПрисоединенныеФайлы CatalogObject.ВстречаПрисоединенныеФайлы CatalogObject.ТелефонныйЗвонокПрисоединенныеФайлы CatalogObject.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы diff --git a/SSL/src/EventSubscriptions/ЗаписатьВерсиюОбъектаПриОбменеДанными/ЗаписатьВерсиюОбъектаПриОбменеДанными.mdo b/SSL/src/EventSubscriptions/ЗаписатьВерсиюОбъектаПриОбменеДанными/ЗаписатьВерсиюОбъектаПриОбменеДанными.mdo new file mode 100644 index 000000000..c21b3d908 --- /dev/null +++ b/SSL/src/EventSubscriptions/ЗаписатьВерсиюОбъектаПриОбменеДанными/ЗаписатьВерсиюОбъектаПриОбменеДанными.mdo @@ -0,0 +1,20 @@ + + + ЗаписатьВерсиюОбъектаПриОбменеДанными + + ru + Записать версию объекта при обмене данными + + Запись версии объекта при обмене данными + + BusinessProcessObject + ChartOfCalculationTypesObject + ChartOfAccountsObject + ChartOfCharacteristicTypesObject + CatalogObject + TaskObject + DocumentObject + + OnWrite + CommonModule.ВерсионированиеОбъектовСобытия.ЗаписатьВерсиюОбъектаПриОбменеДанными + diff --git a/SSL/src/EventSubscriptions/ЗаполнитьКонтактнуюИнформацию/ЗаполнитьКонтактнуюИнформацию.mdo b/SSL/src/EventSubscriptions/ЗаполнитьКонтактнуюИнформацию/ЗаполнитьКонтактнуюИнформацию.mdo index a24ca7b71..616ade0fc 100644 --- a/SSL/src/EventSubscriptions/ЗаполнитьКонтактнуюИнформацию/ЗаполнитьКонтактнуюИнформацию.mdo +++ b/SSL/src/EventSubscriptions/ЗаполнитьКонтактнуюИнформацию/ЗаполнитьКонтактнуюИнформацию.mdo @@ -10,5 +10,5 @@ CatalogObject.Пользователи Filling - CommonModule.УправлениеКонтактнойИнформациейСобытия.ОбработкаЗаполненияКИ + CommonModule.УправлениеКонтактнойИнформацией.ОбработкаЗаполненияКонтактнойИнформации diff --git a/SSL/src/EventSubscriptions/КонтрольНеразделенныхНаборовЗаписейПриЗаписи/КонтрольНеразделенныхНаборовЗаписейПриЗаписи.mdo b/SSL/src/EventSubscriptions/КонтрольНеразделенныхНаборовЗаписейПриЗаписи/КонтрольНеразделенныхНаборовЗаписейПриЗаписи.mdo index ea8309793..8fd97e616 100644 --- a/SSL/src/EventSubscriptions/КонтрольНеразделенныхНаборовЗаписейПриЗаписи/КонтрольНеразделенныхНаборовЗаписейПриЗаписи.mdo +++ b/SSL/src/EventSubscriptions/КонтрольНеразделенныхНаборовЗаписейПриЗаписи/КонтрольНеразделенныхНаборовЗаписейПриЗаписи.mdo @@ -11,7 +11,7 @@ InformationRegisterRecordSet.УдалитьОбластиДанных InformationRegisterRecordSet.УдалитьБлокировкиСеансовОбластиДанных InformationRegisterRecordSet.ПравилаДляОбменаДанными - InformationRegisterRecordSet.УдалитьСвязиПоставляемыхДанных + InformationRegisterRecordSet.УдалитьСтраныМира InformationRegisterRecordSet.ВерсииПодсистем InformationRegisterRecordSet.СообщенияОбменаДанными InformationRegisterRecordSet.АдресныйКлассификатор @@ -21,7 +21,6 @@ InformationRegisterRecordSet.НастройкиОтправителя InformationRegisterRecordSet.ОбластиТребующиеОбработкиПоставляемыхДанных InformationRegisterRecordSet.НастройкиТранспортаОбменаОбластейДанных - InformationRegisterRecordSet.УдалитьКурсыВалютПоКлассификатору InformationRegisterRecordSet.АдресныеСокращения InformationRegisterRecordSet.УдалитьОчередьЗаданий InformationRegisterRecordSet.УдалитьЗамерыВремени diff --git a/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo b/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo index c6bf7d74e..6cd9a1c9c 100644 --- a/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo +++ b/SSL/src/EventSubscriptions/КонтрольНеразделенныхОбъектовПриЗаписи/КонтрольНеразделенныхОбъектовПриЗаписи.mdo @@ -7,7 +7,6 @@ CatalogObject.ШаблоныЗаданийОчереди - CatalogObject.СтраныМира ConstantValueManager.МаксимальныйРазмерФайла ConstantValueManager.НезависимоеИспользованиеДополнительныхОтчетовИОбработокВМоделиСервиса ConstantValueManager.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы @@ -38,24 +37,24 @@ ConstantValueManager.АдресАгентаСервиса ConstantValueManager.ВнутреннийАдресМенеджераСервиса CatalogObject.ПоставляемыеДополнительныеОтчетыИОбработки - ConstantValueManager.АдресВебСервисаОбменаДанными ConstantValueManager.ИзвлекатьТекстыФайловНаСервере ConstantValueManager.ИмяПользователяАгентаСервиса - ConstantValueManager.ВыполнитьЗагрузкуПараметровРаботыПрограммы + ConstantValueManager.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском CatalogObject.ОбщиеДанныеИнформационногоЦентра CatalogObject.СценарииОбменовДанными ConstantValueManager.РазрешитьВыполнениеДополнительныхОтчетовИОбработокРегламентнымиЗаданиямиВМоделиСервиса ConstantValueManager.ОбщийКаталогВременныхФайлов CatalogObject.ТипыИнформацииИнформационногоЦентра ConstantValueManager.ХранитьФайлыВТомахНаДиске + ConstantValueManager.ИмяПользователяКонференцииИнформационногоЦентра CatalogObject.ОчередьЗаданий ConstantValueManager.СообщениеОбменаДаннымиИзГлавногоУзла ConstantValueManager.ОбщийКаталогВременныхФайловLinux ConstantValueManager.ИспользоватьСинхронизациюДанныхВМоделиСервисаСПриложениемВИнтернете ConstantValueManager.ПараметрыАдминистрированияИБ ConstantValueManager.ИспользоватьАвтономнуюРаботуВМоделиСервиса - CatalogObject.УдалитьКлассификаторВалют ConstantValueManager.ЭтоАвтономноеРабочееМесто + ConstantValueManager.ПарольПользователяКонференцииИнформационногоЦентра ConstantValueManager.ИспользоватьДополнительныеОтчетыИОбработки ConstantValueManager.НастройкаАвтономногоРабочегоМестаЗавершена ChartOfCharacteristicTypesObject.РазделыДатЗапретаИзменения @@ -64,6 +63,7 @@ CatalogObject.КлючевыеОперации ConstantValueManager.ОценкаПроизводительностиПериодЗаписи ConstantValueManager.СписокРасширенийФайловOpenDocument + ConstantValueManager.АдресУправленияКонференцией ConstantValueManager.МинимальныйИнтервалРегламентныхЗаданийДополнительныхОтчетовИОбработокВМоделиСервиса ConstantValueManager.ИспользоватьРазделениеПоОбластямДанных ConstantValueManager.ИспользоватьСинхронизациюДанныхВМоделиСервисаСЛокальнойПрограммой @@ -82,7 +82,7 @@ CatalogObject.ИдентификаторыОбъектовМетаданных ConstantValueManager.РежимИспользованияИнформационнойБазы ConstantValueManager.ВыполнятьЗамерыПроизводительности - ConstantValueManager.ЗапуститьОбновлениеИнформационнойБазы + ConstantValueManager.ЗагрузитьСообщениеОбменаДанными ExchangePlanObject.ОбменСообщениями ConstantValueManager.МаксимальноеКоличествоИсполняющихФоновыхЗаданий ConstantValueManager.НастройкаПроксиСервера diff --git a/SSL/src/EventSubscriptions/УстановитьПометкуУдаленияПрисоединенныхФайловВзаимодействия/УстановитьПометкуУдаленияПрисоединенныхФайловВзаимодействия.mdo b/SSL/src/EventSubscriptions/УстановитьПометкуУдаленияПрисоединенныхФайловВзаимодействия/УстановитьПометкуУдаленияПрисоединенныхФайловВзаимодействия.mdo index 37fcc14e1..f91683d24 100644 --- a/SSL/src/EventSubscriptions/УстановитьПометкуУдаленияПрисоединенныхФайловВзаимодействия/УстановитьПометкуУдаленияПрисоединенныхФайловВзаимодействия.mdo +++ b/SSL/src/EventSubscriptions/УстановитьПометкуУдаленияПрисоединенныхФайловВзаимодействия/УстановитьПометкуУдаленияПрисоединенныхФайловВзаимодействия.mdo @@ -9,6 +9,7 @@ DocumentObject.Встреча DocumentObject.ЭлектронноеПисьмоВходящее DocumentObject.ЗапланированноеВзаимодействие + DocumentObject.СообщениеSMS DocumentObject.ТелефонныйЗвонок DocumentObject.ЭлектронноеПисьмоИсходящее diff --git a/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаУзла/Form.form b/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаУзла/Form.form index 017c51c65..f85e6398a 100644 --- a/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаУзла/Form.form +++ b/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаУзла/Form.form @@ -13,7 +13,7 @@ НаименованиеРасширеннаяПодсказка - 11 + 13 Label true true @@ -58,7 +58,7 @@ ИнформационноеСообщениеРасширеннаяПодсказка - 14 + 16 Label true true @@ -92,7 +92,7 @@ СделатьЭтуКонечнуюТочкуВедомойРасширеннаяПодсказка - 15 + 17 Label true true @@ -120,7 +120,7 @@ ГруппаИнформационныхСообщенийРасширеннаяПодсказка - 13 + 15 Label true true @@ -142,6 +142,38 @@ ФормаКоманднаяПанель -1 + + ФормаОбщаяКомандаНастроитьПараметрыТранспортаСообщенийОбмена + 11 + true + true + + true + + + Объект.Ref + + + ФормаОбщаяКомандаНастроитьПараметрыТранспортаСообщенийОбменаРасширеннаяПодсказка + 12 + Label + true + true + + Left + + + CommonCommand.НастроитьПараметрыТранспортаСообщенийОбмена + Normal + PictureAndText + true + true + UserCmds + + CommonPicture.СинхронизацияДанныхНастройка + + Auto + Left true @@ -157,6 +189,9 @@ OnClose ПриЗакрытии + Copy + Delete + SetDeletionMark LockOwner true true diff --git a/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаУзла/Module.bsl b/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаУзла/Module.bsl index 1e4ec2bd1..0079e0108 100644 --- a/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаУзла/Module.bsl +++ b/SSL/src/ExchangePlans/ОбменСообщениями/Forms/ФормаУзла/Module.bsl @@ -17,16 +17,13 @@ Если Объект.Заблокирована Тогда Элементы.ИнформационноеСообщение.Заголовок - = НСтр("ru = 'Эта конечная точка заблокирована.'" - ); + = НСтр("ru = 'Эта конечная точка заблокирована.'"); ИначеЕсли Объект.Ведущая Тогда Элементы.ИнформационноеСообщение.Заголовок - = НСтр("ru = 'Эта конечная точка является ведущей, т.е. инициирует отправку и получение сообщений обмена для текущей информационной системы.'" - ); + = НСтр("ru = 'Эта конечная точка является ведущей, т.е. инициирует отправку и получение сообщений обмена для текущей информационной системы.'"); Иначе Элементы.ИнформационноеСообщение.Заголовок - = НСтр("ru = 'Эта конечная точка является ведомой, т.е. выполняет отправку и получение сообщений обмена только по требованию текущей информационной системы.'" - ); + = НСтр("ru = 'Эта конечная точка является ведомой, т.е. выполняет отправку и получение сообщений обмена только по требованию текущей информационной системы.'"); КонецЕсли; Элементы.СделатьЭтуКонечнуюТочкуВедомой.Видимость = Объект.Ведущая И Не Объект.Заблокирована; diff --git a/SSL/src/ExchangePlans/ОбменСообщениями/ManagerModule.bsl b/SSL/src/ExchangePlans/ОбменСообщениями/ManagerModule.bsl index 67892944a..d945f8f2c 100644 --- a/SSL/src/ExchangePlans/ОбменСообщениями/ManagerModule.bsl +++ b/SSL/src/ExchangePlans/ОбменСообщениями/ManagerModule.bsl @@ -196,27 +196,6 @@ //////////////////////////////////////////////////////////////////////////////// // Обработчики событий для обмена без использования правил обмена -// Обработчик события коллизий изменений объектов. -// Условие возникновения: -// Событие возникает при загрузке данных, -// в случае коллизии изменений загружаемого объекта. -// Коллизия изменений возникает, когда в информационной базе -// зарегистрированы изменения для загружаемого объекта. -// -// Параметры: -// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена для которого выполняется загрузка данных. -// Объект – объект, для которого возникла коллизия изменений. -// -// Возвращаемое значение: -// Тип: Булево. Истина – загружаемый объект будет записан в информационную базу; -// Ложь – загружаемый объект записан не будет. -// -Функция ПрименитьОбъектПриКоллизииИзменений(УзелИнформационнойБазы, Объект) Экспорт - - Возврат Ложь; - -КонецФункции - // Определяет режим удаления объектов при загрузке данных. // // Возвращающее значение: diff --git a/SSL/src/FunctionalOptions/ИспользоватьПризнакРассмотрено/ИспользоватьПризнакРассмотрено.mdo b/SSL/src/FunctionalOptions/ИспользоватьПризнакРассмотрено/ИспользоватьПризнакРассмотрено.mdo index afafd35ce..62df5977a 100644 --- a/SSL/src/FunctionalOptions/ИспользоватьПризнакРассмотрено/ИспользоватьПризнакРассмотрено.mdo +++ b/SSL/src/FunctionalOptions/ИспользоватьПризнакРассмотрено/ИспользоватьПризнакРассмотрено.mdo @@ -17,4 +17,5 @@ Document.ЭлектронноеПисьмоВходящее.Attribute.РассмотретьПосле Document.ЭлектронноеПисьмоИсходящее.Attribute.Рассмотрено Document.ЭлектронноеПисьмоИсходящее.Attribute.РассмотретьПосле + Document.СообщениеSMS.Attribute.Рассмотрено diff --git a/SSL/src/FunctionalOptions/ИспользоватьПрочиеВзаимодействия/ИспользоватьПрочиеВзаимодействия.mdo b/SSL/src/FunctionalOptions/ИспользоватьПрочиеВзаимодействия/ИспользоватьПрочиеВзаимодействия.mdo index 7d6b5b617..693c3a452 100644 --- a/SSL/src/FunctionalOptions/ИспользоватьПрочиеВзаимодействия/ИспользоватьПрочиеВзаимодействия.mdo +++ b/SSL/src/FunctionalOptions/ИспользоватьПрочиеВзаимодействия/ИспользоватьПрочиеВзаимодействия.mdo @@ -16,4 +16,7 @@ DocumentJournal.Взаимодействия.Command.ЗапланироватьВстречу DocumentJournal.Взаимодействия.Command.ЗапланироватьВзаимодействие DocumentJournal.Взаимодействия.Command.Позвонить + Catalog.СообщениеSMSПрисоединенныеФайлы + Document.СообщениеSMS + DocumentJournal.Взаимодействия.Command.НаписатьSMS diff --git a/SSL/src/FunctionalOptions/ПоддержкаРезервногоКопирования/ПоддержкаРезервногоКопирования.mdo b/SSL/src/FunctionalOptions/ПоддержкаРезервногоКопирования/ПоддержкаРезервногоКопирования.mdo index c2c08bb47..b7d4dcd86 100644 --- a/SSL/src/FunctionalOptions/ПоддержкаРезервногоКопирования/ПоддержкаРезервногоКопирования.mdo +++ b/SSL/src/FunctionalOptions/ПоддержкаРезервногоКопирования/ПоддержкаРезервногоКопирования.mdo @@ -7,7 +7,6 @@ Constant.ПоддержкаРезервногоКопирования true - CommonForm.НастройкиРезервногоКопированияПриложений CommonForm.СозданиеРезервнойКопии CommonCommand.СоздатьРезервнуюКопию InformationRegister.УдалитьОбластиКРезервномуКопированию diff --git a/SSL/src/FunctionalOptions/СтандартныеПодсистемыВАвтономномРежиме/СтандартныеПодсистемыВАвтономномРежиме.mdo b/SSL/src/FunctionalOptions/СтандартныеПодсистемыВАвтономномРежиме/СтандартныеПодсистемыВАвтономномРежиме.mdo index 056ecfcf2..3d032a395 100644 --- a/SSL/src/FunctionalOptions/СтандартныеПодсистемыВАвтономномРежиме/СтандартныеПодсистемыВАвтономномРежиме.mdo +++ b/SSL/src/FunctionalOptions/СтандартныеПодсистемыВАвтономномРежиме/СтандартныеПодсистемыВАвтономномРежиме.mdo @@ -12,4 +12,5 @@ DataProcessor.НастройкаРезервногоКопированияИБ DataProcessor.РезервноеКопированиеИБ DataProcessor.ПанельАдминистрированияБСП.Command.СинхронизацияДанных + CommonForm.АвтономнаяРабота diff --git a/SSL/src/FunctionalOptions/СтандартныеПодсистемыВМоделиСервиса/СтандартныеПодсистемыВМоделиСервиса.mdo b/SSL/src/FunctionalOptions/СтандартныеПодсистемыВМоделиСервиса/СтандартныеПодсистемыВМоделиСервиса.mdo index 10914d995..fbb12e30c 100644 --- a/SSL/src/FunctionalOptions/СтандартныеПодсистемыВМоделиСервиса/СтандартныеПодсистемыВМоделиСервиса.mdo +++ b/SSL/src/FunctionalOptions/СтандартныеПодсистемыВМоделиСервиса/СтандартныеПодсистемыВМоделиСервиса.mdo @@ -7,8 +7,6 @@ Constant.ИспользоватьРазделениеПоОбластямДанных true - Catalog.УдалитьКлассификаторВалют - InformationRegister.УдалитьКурсыВалютПоКлассификатору CommonForm.ВходВОбластьДанных CommonForm.ЗагрузкаДанныхВОбласть CommonCommand.ВыгрузитьДанныеВЛокальнуюВерсию @@ -16,7 +14,6 @@ InformationRegister.УдалитьБлокировкиСеансовОбластиДанных InformationRegister.НеразделенныеПользователи InformationRegister.УдалитьОчередьЗаданий - InformationRegister.УдалитьСвязиПоставляемыхДанных DataProcessor.АвтоматическоеИзвлечениеТекстовДляВсехОбластейДанных CommonCommand.ДобавитьПользователейСервиса Constant.КлючОбластиДанных @@ -34,4 +31,5 @@ InformationRegister.ВерсииПодсистемОбластейДанных InformationRegister.ОчередьИзвлеченияТекста InformationRegister.ОбластиДанных + Constant.ДатаПоследнегоСтартаКлиентскогоСеанса diff --git a/SSL/src/InformationRegisters/АдресныеСокращения/АдресныеСокращения.mdo b/SSL/src/InformationRegisters/АдресныеСокращения/АдресныеСокращения.mdo index d6ee56be1..345294d4e 100644 --- a/SSL/src/InformationRegisters/АдресныеСокращения/АдресныеСокращения.mdo +++ b/SSL/src/InformationRegisters/АдресныеСокращения/АдресныеСокращения.mdo @@ -14,7 +14,6 @@ ru Адресные сокращения - true Use Active diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Commands/АдресныйКлассификатор/CommandModule.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Commands/АдресныйКлассификатор/CommandModule.bsl index 89f93fb05..b376cb691 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Commands/АдресныйКлассификатор/CommandModule.bsl +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Commands/АдресныйКлассификатор/CommandModule.bsl @@ -2,6 +2,5 @@ &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ОткрытьФорму("РегистрСведений.АдресныйКлассификатор.Форма.АдресныйКлассификатор",, - ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно - ); + ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Form.form b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Form.form index 57aaf8256..702db92b8 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Form.form +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Form.form @@ -14,9 +14,13 @@ КодПользователя + + ru + Код пользователя для авторизации на сайте фирмы 1С + КодПользователяРасширеннаяПодсказка - 21 + 23 Label true true @@ -30,6 +34,7 @@ true InputField + true Enter true Left @@ -37,6 +42,7 @@ true true + true true true true @@ -54,9 +60,13 @@ Пароль + + ru + Пароль для регистрации на сайте фирмы 1С + ПарольРасширеннаяПодсказка - 23 + 25 Label true true @@ -98,7 +108,7 @@ Right ЗапомнитьИмяИПарольРасширеннаяПодсказка - 25 + 27 Label true true @@ -133,7 +143,7 @@ ВведитеДанныеРасширеннаяПодсказка - 20 + 22 Label true true @@ -155,7 +165,7 @@ ПерейтиКРегистрацииНаСайте - 14 + 17 <key>ru</key> <value>Перейти к регистрации на сайте поддержки пользователей</value> @@ -167,7 +177,7 @@ </userVisible> <extendedTooltip> <name>ПерейтиКРегистрацииНаСайтеРасширеннаяПодсказка</name> - <id>27</id> + <id>29</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -177,7 +187,7 @@ </extendedTooltip> <contextMenu> <name>ПерейтиКРегистрацииНаСайтеКонтекстноеМеню</name> - <id>15</id> + <id>18</id> <autoFill>true</autoFill> </contextMenu> <type>Label</type> @@ -208,7 +218,7 @@ <skipOnInput>false</skipOnInput> <extendedTooltip> <name>ПродолжитьРасширеннаяПодсказка</name> - <id>17</id> + <id>19</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -235,7 +245,7 @@ <skipOnInput>false</skipOnInput> <extendedTooltip> <name>ОтменаРасширеннаяПодсказка</name> - <id>18</id> + <id>20</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -262,7 +272,7 @@ <skipOnInput>false</skipOnInput> <extendedTooltip> <name>СправкаРасширеннаяПодсказка</name> - <id>19</id> + <id>21</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -284,7 +294,7 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> <autoUrl>true</autoUrl> @@ -348,24 +358,6 @@ <common>true</common> </edit> </attributes> - <attributes> - <name>СсылкаНаПользовательскийСайт</name> - <title> - <key>ru</key> - <value>Ссылка на пользовательский сайт</value> - - 2 - - String - - - - true - - - true - - СохранитьДанныеАутентификацииИПродолжить diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Help/ru.html b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Help/ru.html index ab7b7fe38..270fa20a9 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Help/ru.html +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Help/ru.html @@ -1,2 +1,2 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Для загрузки <a href="InformationRegister.АдресныйКлассификатор/Help">адресного классификатора</a> с сайта "1С" необходимо ввести данные регистрации на <a href="http://users.v8.1c.ru/">сайте поддержки пользователей 1С:Предприятия</a>: код пользователя и пароль.</p></body></html> \ No newline at end of file diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Module.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Module.bsl index 8bddf9210..6e16697d0 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Module.bsl +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АвторизацияНаПользовательскомСайте/Module.bsl @@ -1,10 +1,11 @@ -//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +// &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; @@ -13,42 +14,44 @@ КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ +// &НаКлиенте Процедура ПерейтиКРегистрацииНаСайтеНажатие(Элемент) ЗапуститьПриложение("http://users.v8.1c.ru/"); КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ - -// Обработчик события нажатия на кнопку "Продолжить" // -// Параметр закрытия формы: Неопределено - пользователь отказался от ввода пароля -// Структура - -// ключ "Статус", булево - истина или ложь в зависмости от успеха вызова -// ключ "КодПользователя", строка - в случае если статус Истина содержит -// код пользователя -// ключ "Пароль", строка - в случае если статус Истина содержит пароль + +// Кнопка "Продолжить", выполнение выбора. +// +// Результат выбора: Неопределено, если пользователь отказался от ввода пароля, или структура с полями: +// Статус - истина или ложь в зависимости от успеха вызова +// КодПользователя - строка кода пользователя, имеет смысл только если Статус=Истина +// Пароль - строка пароля, имеет смысл только если Статус=Истина &НаКлиенте Процедура СохранитьДанныеАутентификацииИПродолжитьВыполнить() - СохранитьДанныеАутентификацииИПродолжитьВыполнитьНаСервере(); - Закрыть(Новый Структура("Статус, КодПользователя ,Пароль", Истина, КодПользователя, Пароль)); + СохраняемыйПароль = ?(ЗапомнитьПароль, Пароль, Неопределено); + СохранитьДанныеАутентификации(КодПользователя, СохраняемыйПароль); + + Результат = Новый Структура("Статус, КодПользователя ,Пароль", Истина, КодПользователя, Пароль); + ОповеститьОВыборе(Результат); КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ +// -&НаСервере -Процедура СохранитьДанныеАутентификацииИПродолжитьВыполнитьНаСервере() - - АдресныйКлассификатор.СохранитьПараметрыАутентификации(КодПользователя, ?(ЗапомнитьПароль, Пароль, Неопределено)); - +&НаСервереБезКонтекста +Процедура СохранитьДанныеАутентификации(Код, Пароль) + АдресныйКлассификатор.СохранитьПараметрыАутентификации(Код, Пароль); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Help/ru.html b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Help/ru.html index 9352d768f..65ad34433 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Help/ru.html +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Help/ru.html @@ -1,2 +1,2 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>На форме выводится сводная информация об имеющихся в системе адресных сведениях, а также доступны основные операции по управлению ими: загрузка, очистка и проверка обновлений через Интернет.</p></body></html> \ No newline at end of file diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Module.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Module.bsl index fc018807e..0600a8ea6 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Module.bsl +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/АдресныйКлассификатор/Module.bsl @@ -36,7 +36,7 @@ &НаКлиенте Процедура ОчиститьАдресныйКлассификатор(Команда) - АдресныйКлассификаторКлиент.ОчиститьКлассификатор(); + АдресныйКлассификаторКлиент.ОчиститьКлассификатор(ЭтаФорма); КонецПроцедуры &НаКлиенте @@ -52,14 +52,12 @@ Результат = Новый Структура("Заголовок, КоличествоЗагруженных", НСтр("ru = 'Адресный классификатор не заполнен.'"), - АдресныйКлассификатор.ЧислоЗаполненныхАдресныхОбъектов() - ); + АдресныйКлассификатор.ЧислоЗаполненныхАдресныхОбъектов()); Если Результат.КоличествоЗагруженных>0 Тогда Результат.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Загружено регионов: %1.'"), - Результат.КоличествоЗагруженных - ); + Результат.КоличествоЗагруженных); КонецЕсли; Возврат Результат; diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Form.form b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Form.form index dc73e1eec..dbab58c9b 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Form.form +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Form.form @@ -614,6 +614,10 @@ <dataPath xsi:type="form:DataPath"> <segments>ДискИТС</segments> </dataPath> + <toolTip> + <key>ru</key> + <value>Путь к файлам диска ИТС</value> + </toolTip> <extendedTooltip> <name>ДискИТСРасширеннаяПодсказка</name> <id>113</id> @@ -693,6 +697,10 @@ <dataPath xsi:type="form:DataPath"> <segments>ПутьКФайламДанныхНаДиске</segments> </dataPath> + <toolTip> + <key>ru</key> + <value>Путь к файлам адресного классификатора, полученных из другого источника</value> + </toolTip> <extendedTooltip> <name>ПутьКФайламДанныхНаДискеРасширеннаяПодсказка</name> <id>116</id> diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Help/ru.html b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Help/ru.html index 70add594c..a5b53ee1a 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Help/ru.html +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Перед тем как начать загрузку <a href="InformationRegister.АдресныйКлассификатор/Help">адресного классификатора</a>, необходимо выбрать регионы РФ, адресные сведения по которым необходимо загрузить в программу. Загрузка адресного классификатора по всем регионам может занять длительное время.</p> <p>Затем выберите один из трех вариантов, откуда будут загружаться адресные сведения: с сайта поддержки пользователей 1С:Предприятия фирмы "1С", с диска информационно-технологического сопровождения (1С:ИТС), или из файлов, полученных каким-либо способом от ГНИВЦ ФНС РФ. </p> <p>Для загрузки адресного классификатора с сайта фирмы "1С" необходим доступ в сеть Интернет, а также данные регистрации на <a href="http://users.v8.1c.ru/">сайте поддержки пользователей 1С:Предприятие</a> (код пользователя и пароль).</p> diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl index 52a48d959..71b9b10db 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ЗагрузкаАдресногоКлассификатора/Module.bsl @@ -77,8 +77,7 @@ Иначе СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Файлы адресных сведений не найдены в каталоге ""%1"".'"), - ПутьКФайламДанныхНаДиске - ); + ПутьКФайламДанныхНаДиске); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю, , "ПутьКФайламДанныхНаДиске"); КонецЕсли; КонецЕсли; @@ -111,8 +110,7 @@ СообщениеПользователю = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Файлы адресных сведений не найдены: ""%1"". |Проверьте правильность указанного пути к диску 1С:ИТС.'"), - ДискИТС - ); + ДискИТС); ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю, , "ДискИТС"); КонецЕсли; КонецЕсли; @@ -276,8 +274,7 @@ КонецЦикла; ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( - "ПараметрыЗагрузкиАдресногоКлассификатора", "ЗагружаемыеРегионы", МассивЗагружаемыхАО - ); + "ПараметрыЗагрузкиАдресногоКлассификатора", "ЗагружаемыеРегионы", МассивЗагружаемыхАО); ИсточникКЛАДР = Новый Структура("ИсточникДанныхДляЗагрузки"); ИсточникКЛАДР.ИсточникДанныхДляЗагрузки = ИсточникДанныхДляЗагрузки; @@ -289,8 +286,7 @@ КонецЕсли; ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( - "ПараметрыЗагрузкиАдресногоКлассификатора", "ИсточникКЛАДР", ИсточникКЛАДР - ); + "ПараметрыЗагрузкиАдресногоКлассификатора", "ИсточникКЛАДР", ИсточникКЛАДР); КонецПроцедуры @@ -334,7 +330,7 @@ // Возвращает: // -1, если при старте загрузки произошла ошибка, // 0, если загружено успешно -// 1, если стартована фоновая загрузка +// 1, если запущена фоновая загрузка // &НаКлиенте Функция ЗагрузитьКЛАДР() @@ -459,8 +455,7 @@ // Процесс продолжается ДлительныеОперацииКлиент.ОбновитьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", - ПараметрыОбработчикаОжидания.ТекущийИнтервал, Истина - ); + ПараметрыОбработчикаОжидания.ТекущийИнтервал, Истина); КонецЕсли; КонецЕсли; @@ -639,8 +634,7 @@ ПараметрыЗагрузки = Новый Структура( "АдресныеОбъекты, ПутьКДанным, ПутьКДаннымНаСервере, ВерсияЗагружаемогоКЛАДР, ИсточникДанныхДляЗагрузки, ДоступныеВерсии", - АдресныеОбъекты, ПутьКДанным, ПутьКДаннымНаСервере, ВерсияЗагружаемогоКЛАДР, ИсточникДанныхДляЗагрузки, ДоступныеВерсии - ); + АдресныеОбъекты, ПутьКДанным, ПутьКДаннымНаСервере, ВерсияЗагружаемогоКЛАДР, ИсточникДанныхДляЗагрузки, ДоступныеВерсии); Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); @@ -704,7 +698,7 @@ КонецЕсли; КонецЕсли; - ДанныеАутентификации = Новый Структура("КодПользователя ,Пароль", КодПользователя, Пароль); + ДанныеАутентификации = Новый Структура("КодПользователя, Пароль", КодПользователя, Пароль); Возврат Истина; КонецФункции @@ -724,8 +718,7 @@ ТекстСтатусаЗагрузки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Загрузка файлов адресных сведений с веб-сервера: |%1 %2.'"), - АдресныеСведения.Наименование, АдресныеСведения.Сокращение - ); + АдресныеСведения.Наименование, АдресныеСведения.Сокращение); УстановитьСтатусЗагрузки(ТекстСтатусаЗагрузки); Результат = АдресныйКлассификаторКлиент.ЗагрузитьКЛАДРСВебСервера(АдресныйОбъект, ДанныеАутентификации, ПутьКДанным); Если Не Результат.Статус Тогда @@ -886,3 +879,4 @@ ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания); КонецПроцедуры + diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Help/ru.html b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Help/ru.html index 329c75d9a..4a58a06fb 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Help/ru.html +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Help/ru.html @@ -1,2 +1,2 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Для удаления всех адресных сведений по выбранным регионам из <a href="InformationRegister.АдресныйКлассификатор/Help">адресного классификатора</a>, нажмите<strong> </strong>кнопку <strong>Очистить<em>.</em></strong></p></body></html> \ No newline at end of file diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Module.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Module.bsl index eec2db5f0..5955fd80f 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Module.bsl +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ОчисткаАдресногоКлассификатора/Module.bsl @@ -58,7 +58,7 @@ КонецПроцедуры // Обработчик события нажатия на кнопку "Очистить" -// Проверяет корректность данных и вызывает диалог поддверждения +// Проверяет корректность данных и вызывает диалог подтверждения // очистки адресных сведений. // &НаКлиенте @@ -136,7 +136,7 @@ КонецФункции -// Удалает адресные сведения по выбранным адресным объектам +// Удаляет адресные сведения по выбранным адресным объектам // &НаСервере Процедура ОчиститьАдресныеСведения() diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss index e7070816a..e43e21797 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">Наименование</left> - <comparisonType>NotEqual</comparisonType> - <right xsi:type="xs:string"/> - </item> <viewMode>Normal</viewMode> <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Form.form b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Form.form index 9c031502e..aaaaaaeca 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Form.form +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Form.form @@ -687,6 +687,7 @@ <verticalScrollBar>AutoUse</verticalScrollBar> <horizontalLines>true</horizontalLines> <verticalLines>true</verticalLines> + <horizontalLinesBWA>false</horizontalLinesBWA> <initialListView>Auto</initialListView> <horizontalStretch>true</horizontalStretch> <verticalStretch>true</verticalStretch> diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Module.bsl b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Module.bsl index 89da7b8b9..0f9d9e257 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Module.bsl +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Forms/ФормаВыбора/Module.bsl @@ -27,7 +27,7 @@ Если ИспользоватьСохраненныеНастройки Тогда // Восстанавливаем значение флага "Скрывать неактуальные адреса" из настроек и даем возможность управления - СкрыватьНеактуальныеАдреса = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ВводАдреса", "СкрыватьНеактуальныеАдреса", Ложь); + СкрыватьНеактуальныеАдреса = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("КонтактнаяИнформация.ВводАдреса", "СкрыватьНеактуальныеАдреса", Ложь); Иначе СкрыватьНеактуальныеАдреса = Параметры.СкрыватьНеактуальныеАдреса; КонецЕсли; @@ -38,14 +38,16 @@ // Колонка неактуальной картинки Элементы.Актуальность.Видимость = Не ИспользоватьСохраненныеНастройки; - // Установим отбор - Параметры.Отбор = ПолучитьОграниченияПоУровню(Параметры.Уровень); + // Установим отбор по входным параметрам + Для Каждого КлючЗначение Из ПолучитьОграниченияПоУровню(Параметры.Уровень) Цикл + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, КлючЗначение.Ключ, КлючЗначение.Значение); + КонецЦикла; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, "Наименование", "", ВидСравненияКомпоновкиДанных.НеРавно); // Установим текущую строку Поля = ПолучитьПоляПоУровню(Параметры.Уровень + 1); СтруктураОтбора = АдресныйКлассификатор.ВернутьСтруктуруАдресногоКлассификатораПоАдреснымЭлементам( - Поля.Регион, Поля.Район, Поля.Город, Поля.НаселенныйПункт, Поля.Улица - ); + Поля.Регион, Поля.Район, Поля.Город, Поля.НаселенныйПункт, Поля.Улица); Если СтруктураОтбора.ТипАдресногоЭлемента = Параметры.Уровень Тогда Параметры.ТекущаяСтрока = РегистрыСведений.АдресныйКлассификатор.СоздатьКлючЗаписи(СтруктураОтбора); КонецЕсли; @@ -83,8 +85,7 @@ Элементы.СкрыватьНеактуальныеАдреса.Пометка = СкрыватьНеактуальныеАдреса; ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, - "ПризнакАктуальности", 0, ВидСравненияКомпоновкиДанных.Равно, "Признак актуальности", СкрыватьНеактуальныеАдреса - ); + "ПризнакАктуальности", 0, ВидСравненияКомпоновкиДанных.Равно, "Признак актуальности", СкрыватьНеактуальныеАдреса); ЭтаФорма.ОбновитьОтображениеДанных(); КонецЕсли; КонецПроцедуры @@ -104,8 +105,7 @@ ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru='%1 %2 не актуален. |Продолжить?'"), - ТекущиеДанные.Наименование, ТекущиеДанные.Сокращение - ); + ТекущиеДанные.Наименование, ТекущиеДанные.Сокращение); Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет); Если Ответ<>КодВозвратаДиалога.Да Тогда Возврат; @@ -147,8 +147,7 @@ Поля = ПолучитьПоляПоУровню(Уровень); Ограничения = АдресныйКлассификатор.ВернутьСтруктуруОграниченийПоРодителю( - Поля.Регион, Поля.Район, Поля.Город, Поля.НаселенныйПункт, Поля.Улица, 0, Уровень - ); + Поля.Регион, Поля.Район, Поля.Город, Поля.НаселенныйПункт, Поля.Улица, 0, Уровень); Если СкрыватьНеактуальныеАдреса Тогда Ограничения.Вставить("ПризнакАктуальности", 0); @@ -187,8 +186,7 @@ // Вычисляемые Результат.Вставить("Представление", СокрЛП( - ?(ПустаяСтрока(Результат.Наименование), "", СокрЛП(Результат.Наименование) + " " + СокрЛП(Результат.Сокращение)) - )); + ?(ПустаяСтрока(Результат.Наименование), "", СокрЛП(Результат.Наименование) + " " + СокрЛП(Результат.Сокращение)))); Результат.Вставить("ПолноеНаименование", Результат.Представление); // Структура адреса @@ -196,8 +194,7 @@ Если ИспользоватьСохраненныеНастройки Тогда СтруктураАдреса.Вставить("СкрыватьНеактуальныеАдреса", - ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("ВводАдреса", "СкрыватьНеактуальныеАдреса", Ложь) - ); + ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить("КонтактнаяИнформация.ВводАдреса", "СкрыватьНеактуальныеАдреса", Ложь)); КонецЕсли; СтруктураПолей = ИсправитьПоля(СтруктураАдреса, Уровень); @@ -230,14 +227,12 @@ КонецЕсли; СтруктураПроверки = АдресныйКлассификатор.ПроверитьСоответствиеАдресаКЛАДРу( - "", Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус - ); + "", Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус); // Очищаем не подходящие поля Если СтруктураПроверки.ЕстьОшибки Тогда АдресныйКлассификатор.ОчиститьПотомковПоУровнюАдресногоЭлемента( - Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус, Квартира, Уровень - ); + Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус, Квартира, Уровень); КонецЕсли; // Заполняем или исправляем промежуточные поля @@ -275,8 +270,7 @@ // Проверяем ещё раз и возвращаем структуру ошибок СтруктураПроверки = АдресныйКлассификатор.ПроверитьСоответствиеАдресаКЛАДРу( - "", Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус - ); + "", Регион, Район, Город, НаселенныйПункт, Улица, Дом, Корпус); СтруктураПроверки.Вставить("СтруктураАдреса", СтруктураАдреса); Возврат СтруктураПроверки; diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/Help/ru.html b/SSL/src/InformationRegisters/АдресныйКлассификатор/Help/ru.html index 17e8fdf16..fcdb769a6 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/Help/ru.html +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/Help/ru.html @@ -1,2 +1,2 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В адресном классификаторе хранятся адресные сведения, необходимые для работы в программе. Для всех регионов РФ имеется возможность <a href="InformationRegister.АдресныйКлассификатор.Form.ЗагрузкаАдресногоКлассификатора/Help">загрузки адресных сведений</a> с сайта поддержки пользователей системы "1С:Предприятие" фирмы "1С", с диска информационно-технологического сопровождения (1С:ИТС), а также из файлов, распространяемых ГНИВЦ ФНС РФ. </p></body></html> \ No newline at end of file diff --git a/SSL/src/InformationRegisters/АдресныйКлассификатор/АдресныйКлассификатор.mdo b/SSL/src/InformationRegisters/АдресныйКлассификатор/АдресныйКлассификатор.mdo index 6da9e760c..9f8290e5f 100644 --- a/SSL/src/InformationRegisters/АдресныйКлассификатор/АдресныйКлассификатор.mdo +++ b/SSL/src/InformationRegisters/АдресныйКлассификатор/АдресныйКлассификатор.mdo @@ -14,7 +14,6 @@ <key>ru</key> <value>Адресный классификатор</value> </synonym> - <useStandardCommands>true</useStandardCommands> <standardAttributes> <dataHistory>Use</dataHistory> <name>Active</name> @@ -199,8 +198,6 @@ </toolTip> <minValue xsi:type="core:UndefinedValue"/> <maxValue xsi:type="core:UndefinedValue"/> - <indexing>Index</indexing> - <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> <fillValue xsi:type="core:NumberValue"> <value>0</value> diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ОтчетПоВерсиямОбъекта/Module.bsl b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ОтчетПоВерсиямОбъекта/Module.bsl index e74efd2ff..658340979 100644 --- a/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ОтчетПоВерсиямОбъекта/Module.bsl +++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Forms/ОтчетПоВерсиямОбъекта/Module.bsl @@ -16,7 +16,7 @@ ЦветКрасноФиолетовый = ЦветаСтиля.ЗаголовокУдаленногоРеквизитаФон; Если ТипЗнч(Параметры.СравниваемыеВерсии) = Тип("Массив") Тогда - // номера версий из регистра ВерсииОбъеков для сравнения, + // номера версий из регистра ВерсииОбъектов для сравнения, // или одна версия если отчет по одному объекту СравниваемыеВерсии = Новый ФиксированныйМассив(СортироватьПоВозрастанию(Параметры.СравниваемыеВерсии)); @@ -34,8 +34,8 @@ СтрокаНомераВерсий = Лев(СтрокаНомераВерсий, СтрДлина(СтрокаНомераВерсий) - 2); Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Сравнение версий объекта ""%1"" (№№ %2)'"), - СсылкаНаОбъект, + НСтр("ru = 'Сравнение версий ""%1"" (№№ %2)'"), + ОбщегоНазначения.ПредметСтрокой(СсылкаНаОбъект), СтрокаНомераВерсий); Иначе Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( @@ -123,7 +123,7 @@ Макет = Неопределено; КонецЕсли; - ОписаниеВерсии = ПолучитьОписаниеПоВерсии(ИдентификаторВерсии); + ОписаниеВерсии = ПолучитьОписаниеПоВерсии(ИдентификаторВерсии).Описание; Если Макет = Неопределено Тогда ВерсияОбъекта = РазборВерсии(ИдентификаторВерсии, СсылкаНаОбъект); @@ -135,7 +135,9 @@ // вывод списка изменившихся реквизитов ТЧОтчета.Область("C2").ШиринаКолонки = 30; - ВывестиШапкуПоВерсии(ТЧОтчета, ОписаниеВерсии, 3); + ВывестиШапкуПоВерсии(ТЧОтчета, ОписаниеВерсии, 4, 3); + ВывестиШапкуПоВерсии(ТЧОтчета, ВерсияОбъекта.Комментарий, 5, 3); + ЧислоВыведенныхСтрок = ВывестиРеквизитыПоРазобранномуОбъекту(ТЧОтчета, ВерсияОбъекта); ЧислоВыведенныхСтрок = ВывестиТабличныеЧастиПоРазобранномуОбъекту(ТЧОтчета, ВерсияОбъекта, ЧислоВыведенныхСтрок+7); Иначе @@ -358,18 +360,22 @@ // Выводит шапку отчета при выводе отчета по версии объекта // -Процедура ВывестиШапкуПоВерсии(ТЧОтчета, знач Текст, знач НомерКолонки) +Процедура ВывестиШапкуПоВерсии(ТЧОтчета, знач Текст, Знач НомерСтроки, Знач НомерКолонки) - ТЧОтчета.Область("C"+Строка(НомерКолонки)).ШиринаКолонки = 50; - - Регион = "R4C"+Строка(НомерКолонки); - ТЧОтчета.Область(Регион).Текст = Текст; - ТЧОтчета.Область(Регион).ЦветФона = ЦветСветлоСерый; - ТЧОтчета.Область(Регион).Шрифт = Новый Шрифт(, 8, Истина, , , ); - ТЧОтчета.Область(Регион).ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); - ТЧОтчета.Область(Регион).ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); - ТЧОтчета.Область(Регион).ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); - ТЧОтчета.Область(Регион).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); + Если Не ПустаяСтрока(Текст) Тогда + + ТЧОтчета.Область("C"+Строка(НомерКолонки)).ШиринаКолонки = 50; + + Регион = "R" + Строка(НомерСтроки) + "C"+Строка(НомерКолонки); + ТЧОтчета.Область(Регион).Текст = Текст; + ТЧОтчета.Область(Регион).ЦветФона = ЦветСветлоСерый; + ТЧОтчета.Область(Регион).Шрифт = Новый Шрифт(, 8, Истина, , , ); + ТЧОтчета.Область(Регион).ГраницаСверху = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); + ТЧОтчета.Область(Регион).ГраницаСнизу = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); + ТЧОтчета.Область(Регион).ГраницаСлева = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); + ТЧОтчета.Область(Регион).ГраницаСправа = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная); + + КонецЕсли; КонецПроцедуры @@ -506,9 +512,10 @@ СтрокаТЧ = СсылкаНаВерсиюТаблицы[Индекс-1]; ПараметрыОтбора = Новый Структура; - Для Каждого ЭлементКоллекции Из СсылкаНаВерсиюТаблицы.Колонки Цикл - Если (ЭлементКоллекции.Имя <> "Версионирование_ИдСтроки") И (ЭлементКоллекции.Имя <> "Версионирование_Модификация") Тогда - ПараметрыОтбора.Вставить(ЭлементКоллекции.Имя, СтрокаТЧ[ЭлементКоллекции.Имя]); + ОбщиеКолонки = НайтиОбщиеКолонки(СсылкаНаВерсиюТаблицы, ТаблицаИзмененийТабличныхЧастей[ИмяТаблицы][НомерПредыдущейВерсии]); + Для Каждого ИмяКолонки Из ОбщиеКолонки Цикл + Если (ИмяКолонки <> "Версионирование_ИдСтроки") И (ИмяКолонки <> "Версионирование_Модификация") Тогда + ПараметрыОтбора.Вставить(ИмяКолонки, СтрокаТЧ[ИмяКолонки]); КонецЕсли; КонецЦикла; @@ -537,10 +544,10 @@ // передаем скомпонованную информацию в спец блок для вывода данных в отчет ВывестиРезультатыКомпоновкиВОтчет(ТаблицаИзмененийРеквизитов, - ТаблицаИзмененийТабличныхЧастей, - счетчикУникальныйИд, - МассивНомеровВерсий, - ТЧОтчета); + ТаблицаИзмененийТабличныхЧастей, + счетчикУникальныйИд, + МассивНомеровВерсий, + ТЧОтчета); ШаблонЛегенда = ОбщийШаблон.ПолучитьОбласть("Легенда"); ТЧОтчета.Вывести(ШаблонЛегенда); @@ -878,18 +885,46 @@ ОбластьВерсии = ОбщийШаблон.ПолучитьОбласть("ЗаголовокВерсии"); ТЧОтчета.Присоединить(ПустаяЯчейка); ТЧОтчета.Присоединить(ОбластьВерсии); - ОбластьВерсии = ОбщийШаблон.ПолучитьОбласть("ПредставлениеВерсии"); + КомментарииКВерсиям = Новый Структура; + ЕстьКомментарии = Ложь; + ИндексПоВерсиям = ЧислоВерсий; Пока ИндексПоВерсиям > 0 Цикл - ОбластьВерсии.Параметры.ПредставлениеВерсии = - ПолучитьОписаниеПоВерсии(МассивНомеровВерсий[ИндексПоВерсиям-1]); + + СведенияОВерсии = ПолучитьОписаниеПоВерсии(МассивНомеровВерсий[ИндексПоВерсиям-1]); + ОбластьВерсии.Параметры.ПредставлениеВерсии = СведенияОВерсии.Описание; + + КомментарииКВерсиям.Вставить("Комментарий" + ИндексПоВерсиям, СведенияОВерсии.Комментарий); + Если Не ПустаяСтрока(СведенияОВерсии.Комментарий) Тогда + ЕстьКомментарии = Истина; + КонецЕсли; + ТЧОтчета.Присоединить(ОбластьВерсии); ТЧОтчета.Область("C"+Строка(ИндексПоВерсиям+2)).ШиринаКолонки = 50; ИндексПоВерсиям = ИндексПоВерсиям - 1; + КонецЦикла; + Если ЕстьКомментарии Тогда + + ОбластьКомментарий = ОбщийШаблон.ПолучитьОбласть("ЗаголовокКомментарий"); + ТЧОтчета.Вывести(ПустаяЯчейка); + ТЧОтчета.Присоединить(ОбластьКомментарий); + ОбластьКомментарий = ОбщийШаблон.ПолучитьОбласть("Комментарий"); + + ИндексПоВерсиям = ЧислоВерсий; + Пока ИндексПоВерсиям > 0 Цикл + + ОбластьКомментарий.Параметры.Комментарий = КомментарииКВерсиям["Комментарий" + ИндексПоВерсиям]; + ТЧОтчета.Присоединить(ОбластьКомментарий); + ИндексПоВерсиям = ИндексПоВерсиям - 1; + + КонецЦикла; + + КонецЕсли; + ОбластьСвободнаяСтрока = ОбщийШаблон.ПолучитьОбласть("СвободнаяСтрока"); ТЧОтчета.Вывести(ОбластьСвободнаяСтрока); @@ -1173,6 +1208,7 @@ Результат.Вставить("ИмяОбъекта", Строка(Ссылка)); Результат.Вставить("АвторИзменения", СокрЛП(Строка(СведенияОВерсии.АвторВерсии))); Результат.Вставить("ДатаИзменения", СведенияОВерсии.ДатаВерсии); + Результат.Вставить("Комментарий", СведенияОВерсии.Комментарий); Возврат Результат; @@ -1600,7 +1636,9 @@ СведенияОВерсии = ВерсионированиеОбъектов.СведенияОВерсииОбъекта(СсылкаНаОбъект, НомерВерсии); Описание = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '№ %1 / (%2) / %3'"), НомерВерсии, Строка(СведенияОВерсии.ДатаВерсии), СокрЛП(Строка(СведенияОВерсии.АвторВерсии))); - Возврат Описание; + СведенияОВерсии.Вставить("Описание", Описание); + + Возврат СведенияОВерсии; КонецФункции @@ -2089,6 +2127,9 @@ &НаСервере Функция СтрокиИмеютРазличия(Строка1, Строка2, ПроверяемыеКолонки) Для Каждого Колонка Из ПроверяемыеКолонки Цикл + Если ТипЗнч(Строка1[Колонка]) = Тип("ХранилищеЗначения") Тогда + Продолжить; // реквизиты с типом ХранилищеЗначения не сравниваем. + КонецЕсли; Если Строка1[Колонка] <> Строка2[Колонка] Тогда Возврат Истина; КонецЕсли; diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/Templates/СтандартныйМакетПредставленияОбъекта/Template.mxlx b/SSL/src/InformationRegisters/ВерсииОбъектов/Templates/СтандартныйМакетПредставленияОбъекта/Template.mxlx index f4d3a8360..bfed345da 100644 --- a/SSL/src/InformationRegisters/ВерсииОбъектов/Templates/СтандартныйМакетПредставленияОбъекта/Template.mxlx +++ b/SSL/src/InformationRegisters/ВерсииОбъектов/Templates/СтандартныйМакетПредставленияОбъекта/Template.mxlx @@ -126,10 +126,38 @@ <c> <c> <f>0</f> + </c> + </c> + <c> + <c> + <f>13</f> + <tl> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Комментарий</v8:content> + </v8:item> + </tl> + </c> + </c> + <c> + <c> + <f>14</f> + <parameter>Комментарий</parameter> + </c> + </c> + </row> + </rowsItem> + <rowsItem> + <index>6</index> + <row> + <c> + <c> + <f>0</f> + <tl/> <note> <drawingType>Text</drawingType> <id>0</id> - <formatIndex>13</formatIndex> + <formatIndex>15</formatIndex> <text> <v8:item> <v8:lang>ru</v8:lang> @@ -138,7 +166,7 @@ </text> <beginRow>1</beginRow> <beginRowOffset>-21</beginRowOffset> - <endRow>5</endRow> + <endRow>6</endRow> <endRowOffset>51</endRowOffset> <beginColumn>1</beginColumn> <beginColumnOffset>21</beginColumnOffset> @@ -153,12 +181,13 @@ <c> <c> <f>10</f> + <tl/> </c> </c> </row> </rowsItem> <rowsItem> - <index>6</index> + <index>7</index> <row> <c> <i>1</i> @@ -174,26 +203,6 @@ </c> </row> </rowsItem> - <rowsItem> - <index>8</index> - <row> - <c> - <c> - <f>3</f> - </c> - </c> - <c> - <c> - <f>14</f> - </c> - </c> - <c> - <c> - <f>0</f> - </c> - </c> - </row> - </rowsItem> <rowsItem> <index>9</index> <row> @@ -204,7 +213,7 @@ </c> <c> <c> - <f>14</f> + <f>16</f> </c> </c> <c> @@ -224,18 +233,12 @@ </c> <c> <c> - <f>14</f> + <f>16</f> </c> </c> <c> <c> - <f>15</f> - <tl> - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Не изменялись</v8:content> - </v8:item> - </tl> + <f>0</f> </c> </c> </row> @@ -250,12 +253,18 @@ </c> <c> <c> - <f>14</f> + <f>16</f> </c> </c> <c> <c> - <f>0</f> + <f>17</f> + <tl> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Не изменялись</v8:content> + </v8:item> + </tl> </c> </c> </row> @@ -271,13 +280,11 @@ <c> <c> <f>16</f> - <parameter>НаименованиеРеквизитаПоля</parameter> </c> </c> <c> <c> - <f>17</f> - <parameter>ЗначениеРеквизита</parameter> + <f>0</f> </c> </c> </row> @@ -286,9 +293,14 @@ <index>13</index> <row> <c> - <i>1</i> + <c> + <f>3</f> + </c> + </c> + <c> <c> <f>18</f> + <parameter>НаименованиеРеквизитаПоля</parameter> </c> </c> <c> @@ -304,25 +316,8 @@ <row> <c> <i>1</i> - <c> - <f>18</f> - </c> - </c> - <c> <c> <f>20</f> - <parameter>ЗначениеРеквизита</parameter> - </c> - </c> - </row> - </rowsItem> - <rowsItem> - <index>15</index> - <row> - <c> - <i>1</i> - <c> - <f>18</f> </c> </c> <c> @@ -334,7 +329,41 @@ </row> </rowsItem> <rowsItem> - <index>17</index> + <index>15</index> + <row> + <c> + <i>1</i> + <c> + <f>20</f> + </c> + </c> + <c> + <c> + <f>22</f> + <parameter>ЗначениеРеквизита</parameter> + </c> + </c> + </row> + </rowsItem> + <rowsItem> + <index>16</index> + <row> + <c> + <i>1</i> + <c> + <f>20</f> + </c> + </c> + <c> + <c> + <f>23</f> + <parameter>ЗначениеРеквизита</parameter> + </c> + </c> + </row> + </rowsItem> + <rowsItem> + <index>18</index> <row> <c> <i>1</i> @@ -351,7 +380,7 @@ </row> </rowsItem> <rowsItem> - <index>18</index> + <index>19</index> <row> <c> <i>1</i> @@ -362,24 +391,24 @@ </row> </rowsItem> <rowsItem> - <index>19</index> + <index>20</index> <row> <c> <i>1</i> <c> - <f>22</f> + <f>24</f> <parameter>НаименованиеТабличнойЧасти</parameter> </c> </c> </row> </rowsItem> <rowsItem> - <index>21</index> + <index>22</index> <row> <c> <i>1</i> <c> - <f>23</f> + <f>25</f> <tl> <v8:item> <v8:lang>ru</v8:lang> @@ -390,35 +419,6 @@ </c> </row> </rowsItem> - <rowsItem> - <index>23</index> - <row> - <columnsID>0a84e64e-bded-4ad6-99ae-d67a7e3710ec</columnsID> - <c> - <i>1</i> - <c> - <f>24</f> - <tl> - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content>Легенда</v8:content> - </v8:item> - </tl> - </c> - </c> - <c> - <c> - <f>0</f> - <tl> - <v8:item> - <v8:lang>ru</v8:lang> - <v8:content> </v8:content> - </v8:item> - </tl> - </c> - </c> - </row> - </rowsItem> <rowsItem> <index>24</index> <row> @@ -426,11 +426,11 @@ <c> <i>1</i> <c> - <f>25</f> + <f>26</f> <tl> <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Измененное значение реквизита или строка табличной части</v8:content> + <v8:content>Легенда</v8:content> </v8:item> </tl> </c> @@ -455,11 +455,11 @@ <c> <i>1</i> <c> - <f>26</f> + <f>27</f> <tl> <v8:item> <v8:lang>ru</v8:lang> - <v8:content>Новое значение реквизита или строка табличной части</v8:content> + <v8:content>Измененное значение реквизита или строка табличной части</v8:content> </v8:item> </tl> </c> @@ -484,7 +484,36 @@ <c> <i>1</i> <c> - <f>27</f> + <f>28</f> + <tl> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Новое значение реквизита или строка табличной части</v8:content> + </v8:item> + </tl> + </c> + </c> + <c> + <c> + <f>0</f> + <tl> + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content> </v8:content> + </v8:item> + </tl> + </c> + </c> + </row> + </rowsItem> + <rowsItem> + <index>27</index> + <row> + <columnsID>0a84e64e-bded-4ad6-99ae-d67a7e3710ec</columnsID> + <c> + <i>1</i> + <c> + <f>29</f> <tl> <v8:item> <v8:lang>ru</v8:lang> @@ -508,14 +537,14 @@ </rowsItem> <templateMode>true</templateMode> <defaultFormatIndex>3</defaultFormatIndex> - <height>27</height> - <vgRows>27</vgRows> + <height>28</height> + <vgRows>28</vgRows> <namedItem xsi:type="NamedItemCells"> <name>ДобавленныйРеквизит</name> <area> <type>Rectangle</type> - <beginRow>14</beginRow> - <endRow>14</endRow> + <beginRow>15</beginRow> + <endRow>15</endRow> <beginColumn>2</beginColumn> <endColumn>2</endColumn> </area> @@ -530,8 +559,28 @@ <endColumn>1</endColumn> </area> </namedItem> + <namedItem xsi:type="NamedItemCells"> + <name>ЗаголовокКомментарий</name> + <area> + <type>Rectangle</type> + <beginRow>5</beginRow> + <endRow>5</endRow> + <beginColumn>1</beginColumn> + <endColumn>1</endColumn> + </area> + </namedItem> <namedItem xsi:type="NamedItemCells"> <name>ИзмененноеЗначениеРеквизита</name> + <area> + <type>Rectangle</type> + <beginRow>14</beginRow> + <endRow>14</endRow> + <beginColumn>2</beginColumn> + <endColumn>2</endColumn> + </area> + </namedItem> + <namedItem xsi:type="NamedItemCells"> + <name>ИсходноеЗначениеРеквизита</name> <area> <type>Rectangle</type> <beginRow>13</beginRow> @@ -541,11 +590,11 @@ </area> </namedItem> <namedItem xsi:type="NamedItemCells"> - <name>ИсходноеЗначениеРеквизита</name> + <name>Комментарий</name> <area> <type>Rectangle</type> - <beginRow>12</beginRow> - <endRow>12</endRow> + <beginRow>5</beginRow> + <endRow>5</endRow> <beginColumn>2</beginColumn> <endColumn>2</endColumn> </area> @@ -554,8 +603,8 @@ <name>Легенда</name> <area> <type>Rows</type> - <beginRow>23</beginRow> - <endRow>26</endRow> + <beginRow>24</beginRow> + <endRow>27</endRow> <beginColumn>-1</beginColumn> <endColumn>-1</endColumn> </area> @@ -564,8 +613,8 @@ <name>НаименованиеРеквизитаПоля</name> <area> <type>Rectangle</type> - <beginRow>12</beginRow> - <endRow>12</endRow> + <beginRow>13</beginRow> + <endRow>13</endRow> <beginColumn>1</beginColumn> <endColumn>1</endColumn> </area> @@ -594,8 +643,8 @@ <name>РеквизитыНеИзменялись</name> <area> <type>Rows</type> - <beginRow>10</beginRow> - <endRow>10</endRow> + <beginRow>11</beginRow> + <endRow>11</endRow> <beginColumn>-1</beginColumn> <endColumn>-1</endColumn> </area> @@ -604,8 +653,8 @@ <name>СвободнаяСтрока</name> <area> <type>Rows</type> - <beginRow>8</beginRow> - <endRow>8</endRow> + <beginRow>9</beginRow> + <endRow>9</endRow> <beginColumn>-1</beginColumn> <endColumn>-1</endColumn> </area> @@ -614,8 +663,8 @@ <name>УдаленныйРеквизит</name> <area> <type>Rectangle</type> - <beginRow>15</beginRow> - <endRow>15</endRow> + <beginRow>16</beginRow> + <endRow>16</endRow> <beginColumn>2</beginColumn> <endColumn>2</endColumn> </area> @@ -634,8 +683,8 @@ <name>ШапкаРеквизитов</name> <area> <type>Rows</type> - <beginRow>6</beginRow> - <endRow>6</endRow> + <beginRow>7</beginRow> + <endRow>7</endRow> <beginColumn>-1</beginColumn> <endColumn>-1</endColumn> </area> @@ -644,8 +693,8 @@ <name>ШапкаСтрокиТабличнойЧасти</name> <area> <type>Rows</type> - <beginRow>21</beginRow> - <endRow>21</endRow> + <beginRow>22</beginRow> + <endRow>22</endRow> <beginColumn>-1</beginColumn> <endColumn>-1</endColumn> </area> @@ -654,8 +703,8 @@ <name>ШапкаТабличнойЧасти</name> <area> <type>Rows</type> - <beginRow>19</beginRow> - <endRow>19</endRow> + <beginRow>20</beginRow> + <endRow>20</endRow> <beginColumn>-1</beginColumn> <endColumn>-1</endColumn> </area> @@ -664,8 +713,8 @@ <name>ШапкаТабличныхЧастей</name> <area> <type>Rows</type> - <beginRow>17</beginRow> - <endRow>17</endRow> + <beginRow>18</beginRow> + <endRow>18</endRow> <beginColumn>-1</beginColumn> <endColumn>-1</endColumn> </area> @@ -752,6 +801,16 @@ <backColor>style:FormBackColor</backColor> <fillType>Parameter</fillType> </format> + <format> + <font>2</font> + <horizontalAlignment>Left</horizontalAlignment> + <textOrientation>0</textOrientation> + </format> + <format> + <border>0</border> + <backColor>style:FormBackColor</backColor> + <fillType>Parameter</fillType> + </format> <format> <verticalAlignment>Top</verticalAlignment> <textColor>style:ToolTipTextColor</textColor> diff --git a/SSL/src/InformationRegisters/ВерсииОбъектов/ВерсииОбъектов.mdo b/SSL/src/InformationRegisters/ВерсииОбъектов/ВерсииОбъектов.mdo index 7a685a69a..4628cfd00 100644 --- a/SSL/src/InformationRegisters/ВерсииОбъектов/ВерсииОбъектов.mdo +++ b/SSL/src/InformationRegisters/ВерсииОбъектов/ВерсииОбъектов.mdo @@ -186,10 +186,7 @@ <value>Объект</value> </synonym> <type> - <types>String</types> - <stringQualifiers> - <length>10</length> - </stringQualifiers> + <types>AnyRef</types> </type> <toolTip> <key>ru</key> diff --git a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Attributes/Список/ExtInfo/ListSettings.dcss index 5c29d4e48..e0a1b149c 100644 --- a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> <filter> - <item xsi:type="FilterItemComparison"> - <left xsi:type="dcscor:Field">Завершен</left> - <comparisonType>Equal</comparisonType> - <right xsi:type="xs:boolean">false</right> - </item> <viewMode>Normal</viewMode> <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> diff --git a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Module.bsl b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Module.bsl index c4a89bae6..594d741de 100644 --- a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Module.bsl +++ b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Forms/МоиБизнесПроцессы/Module.bsl @@ -10,8 +10,8 @@ УстановитьОтбор(Новый Структура("ПоказыватьЗавершенные", ПоказыватьЗавершенные)); ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( - Список, "Автор", Пользователи.ТекущийПользователь()); - + Список, "Автор", Пользователи.ТекущийПользователь()); + КонецПроцедуры &НаКлиенте @@ -25,7 +25,7 @@ Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) УстановитьОтбор(Настройки); - + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -81,11 +81,12 @@ &НаСервере Процедура УстановитьОтбор(ПараметрыОтбора) - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Завершен"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Завершен"); Если НЕ ПараметрыОтбора["ПоказыватьЗавершенные"] Тогда ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( - Список, "Завершен", Ложь); + Список, "Завершен", Ложь, ВидСравненияКомпоновкиДанных.Равно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Help/ru.html b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Help/ru.html index 1c475e863..978b615b9 100644 --- a/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Help/ru.html +++ b/SSL/src/InformationRegisters/ДанныеБизнесПроцессов/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В этом списке выводятся <a href="v8help://1cv8/EnterprWorkingWithBusinessProcesses_StandardInterface">бизнес-процессы</a>, в которых автором является текущий пользователь. Установив соответствующий флаг, можно вывести в списке также завершенные бизнес-процессы. </p> <h4>См. также</h4> <ul><li><a href="BusinessProcess.Задание/Help">Задания</a></li></ul></body></html> \ No newline at end of file diff --git a/SSL/src/InformationRegisters/ДанныеПроизводственногоКалендаря/Templates/ДанныеПроизводственныхКалендарей/Template.txt b/SSL/src/InformationRegisters/ДанныеПроизводственногоКалендаря/Templates/ДанныеПроизводственныхКалендарей/Template.txt index 96b084249..a60287978 100644 --- a/SSL/src/InformationRegisters/ДанныеПроизводственногоКалендаря/Templates/ДанныеПроизводственныхКалендарей/Template.txt +++ b/SSL/src/InformationRegisters/ДанныеПроизводственногоКалендаря/Templates/ДанныеПроизводственныхКалендарей/Template.txt @@ -4747,4 +4747,369 @@ <Item Calendar="РФ" Year="2013" DayType="Воскресенье" Date="20131229" SwapDate=""/> <Item Calendar="РФ" Year="2013" DayType="Рабочий" Date="20131230" SwapDate=""/> <Item Calendar="РФ" Year="2013" DayType="Предпраздничный" Date="20131231" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140101" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140102" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140103" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140104" SwapDate="20140502"/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140105" SwapDate="20140613"/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140106" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140107" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140108" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140109" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140110" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140111" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140112" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140113" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140114" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140115" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140116" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140117" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140118" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140119" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140120" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140121" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140122" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140123" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140124" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140125" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140126" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140127" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140128" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140129" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140130" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140131" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140201" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140202" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140203" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140204" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140205" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140206" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140207" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140208" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140209" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140210" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140211" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140212" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140213" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140214" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140215" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140216" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140217" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140218" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140219" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140220" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140221" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140222" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140223" SwapDate="20141103"/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140224" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140225" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140226" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140227" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140228" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140301" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140302" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140303" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140304" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140305" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140306" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Предпраздничный" Date="20140307" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140308" SwapDate="20140310"/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140309" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140310" SwapDate="20140308"/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140311" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140312" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140313" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140314" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140315" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140316" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140317" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140318" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140319" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140320" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140321" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140322" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140323" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140324" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140325" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140326" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140327" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140328" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140329" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140330" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140331" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140401" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140402" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140403" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140404" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140405" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140406" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140407" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140408" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140409" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140410" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140411" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140412" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140413" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140414" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140415" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140416" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140417" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140418" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140419" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140420" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140421" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140422" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140423" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140424" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140425" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140426" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140427" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140428" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140429" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Предпраздничный" Date="20140430" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140501" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140502" SwapDate="20140104"/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140503" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140504" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140505" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140506" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140507" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Предпраздничный" Date="20140508" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140509" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140510" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140511" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140512" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140513" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140514" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140515" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140516" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140517" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140518" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140519" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140520" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140521" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140522" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140523" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140524" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140525" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140526" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140527" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140528" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140529" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140530" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140531" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140601" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140602" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140603" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140604" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140605" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140606" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140607" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140608" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140609" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140610" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Предпраздничный" Date="20140611" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20140612" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140613" SwapDate="20140105"/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140614" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140615" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140616" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140617" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140618" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140619" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140620" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140621" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140622" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140623" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140624" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140625" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140626" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140627" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140628" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140629" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140630" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140701" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140702" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140703" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140704" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140705" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140706" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140707" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140708" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140709" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140710" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140711" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140712" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140713" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140714" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140715" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140716" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140717" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140718" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140719" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140720" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140721" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140722" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140723" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140724" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140725" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140726" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140727" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140728" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140729" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140730" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140731" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140801" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140802" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140803" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140804" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140805" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140806" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140807" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140808" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140809" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140810" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140811" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140812" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140813" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140814" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140815" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140816" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140817" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140818" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140819" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140820" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140821" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140822" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140823" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140824" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140825" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140826" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140827" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140828" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140829" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140830" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140831" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140901" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140902" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140903" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140904" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140905" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140906" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140907" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140908" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140909" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140910" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140911" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140912" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140913" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140914" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140915" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140916" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140917" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140918" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140919" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140920" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140921" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140922" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140923" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140924" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140925" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140926" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20140927" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20140928" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140929" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20140930" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141001" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141002" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141003" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141004" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141005" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141006" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141007" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141008" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141009" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141010" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141011" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141012" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141013" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141014" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141015" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141016" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141017" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141018" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141019" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141020" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141021" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141022" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141023" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141024" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141025" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141026" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141027" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141028" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141029" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141030" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141031" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141101" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141102" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141103" SwapDate="20140223"/> + <Item Calendar="РФ" Year="2014" DayType="Праздник" Date="20141104" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141105" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141106" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141107" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141108" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141109" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141110" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141111" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141112" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141113" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141114" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141115" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141116" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141117" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141118" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141119" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141120" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141121" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141122" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141123" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141124" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141125" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141126" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141127" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141128" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141129" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141130" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141201" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141202" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141203" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141204" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141205" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141206" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141207" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141208" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141209" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141210" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141211" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141212" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141213" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141214" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141215" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141216" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141217" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141218" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141219" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141220" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141221" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141222" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141223" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141224" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141225" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141226" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Суббота" Date="20141227" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Воскресенье" Date="20141228" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141229" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Рабочий" Date="20141230" SwapDate=""/> + <Item Calendar="РФ" Year="2014" DayType="Предпраздничный" Date="20141231" SwapDate=""/> </Items> \ No newline at end of file diff --git a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Form.form b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Form.form index e222bf44b..60ebb141d 100644 --- a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Form.form +++ b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Form.form @@ -3036,6 +3036,10 @@ <horizontalAlign>Left</horizontalAlign> <autoFill>true</autoFill> </autoCommandBar> + <handlers> + <event>ChoiceProcessing</event> + <name>ОбработкаВыбора</name> + </handlers> <handlers> <event>BeforeClose</event> <name>ПередЗакрытием</name> diff --git a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Module.bsl b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Module.bsl index 7bf08db7c..a30084855 100644 --- a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Module.bsl +++ b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ДатыЗапретаИзменения/Module.bsl @@ -13,7 +13,8 @@ СвойстваРазделов = ДатыЗапретаИзмененияПовтИсп.СвойстваРазделов(); ЗаполнитьЗначенияСвойств(ЭтаФорма, СвойстваРазделов, , "ТипыОбъектовРазделов"); ЗначениеВРеквизитФормы(СвойстваРазделов.ТипыОбъектовРазделов, "ТипыОбъектовРазделов"); - ПервыйРаздел = ?(ТипыОбъектовРазделов.Количество() = 1, ТипыОбъектовРазделов[0].Раздел, РазделПустаяСсылка); + ПервыйРаздел = ?( + ТипыОбъектовРазделов.Количество() = 1, ТипыОбъектовРазделов[0].Раздел, РазделПустаяСсылка); // Настройка полей формы Если Параметры.ДатыЗапретаЗагрузкиДанных Тогда @@ -30,61 +31,119 @@ Элементы.УстановкаДатыЗапрета.СписокВыбора.НайтиПоЗначению("ПоПользователям").Представление = НСтр("ru = 'По информационным базам'"); // - Элементы.Отчеты.Подсказка = НСтр("ru = 'Отчеты по датам запрета загрузки данных, - |установленным ""По информационным базам"".'"); - Команды.ДатыЗапретаПоПользователям.Заголовок = НСтр("ru = 'Даты запрета по информационным базам'"); - Команды.ДатыЗапретаПоПользователям.Подсказка = НСтр("ru = 'Даты запрета загрузки данных - |по информационным базам и программам.'"); - Команды.ДатыЗапретаПоРазделамОбъектамДляПользователей.Заголовок = НСтр("ru = 'Даты запрета по разделам и объектам для информационных баз'"); - Команды.ДатыЗапретаПоРазделамОбъектамДляПользователей.Подсказка = НСтр("ru = 'Даты запрета загрузки данных - |по разделам и объектам для информационных баз и программ.'"); - // - Элементы.ПользователиПолноеПредставление.Заголовок = НСтр("ru = 'Программа: информационная база'"); - // - ЗначениеДляВсехПользователей = Перечисления.ВидыНазначенияДатЗапрета.ДляВсехИнформационныхБаз; - Для каждого ТипПользователя Из Метаданные.РегистрыСведений.ДатыЗапретаИзменения.Измерения.Пользователь.Тип.Типы() Цикл + Элементы.Отчеты.Подсказка + = НСтр("ru = 'Отчеты по датам запрета загрузки данных, + |установленным ""По информационным базам"".'"); + + Команды.ДатыЗапретаПоПользователям.Заголовок + = НСтр("ru = 'Даты запрета по информационным базам'"); + + Команды.ДатыЗапретаПоПользователям.Подсказка + = НСтр("ru = 'Даты запрета загрузки данных + |по информационным базам и программам.'"); + + Команды.ДатыЗапретаПоРазделамОбъектамДляПользователей.Заголовок = + НСтр("ru = 'Даты запрета по разделам и объектам для информационных баз'"); + + Команды.ДатыЗапретаПоРазделамОбъектамДляПользователей.Подсказка = + НСтр("ru = 'Даты запрета загрузки данных + |по разделам и объектам для информационных баз и программ.'"); + + Элементы.ПользователиПолноеПредставление.Заголовок = + НСтр("ru = 'Программа: информационная база'"); + + ЗначениеДляВсехПользователей = + Перечисления.ВидыНазначенияДатЗапрета.ДляВсехИнформационныхБаз; + + ТипыПользователя = + Метаданные.РегистрыСведений.ДатыЗапретаИзменения.Измерения.Пользователь.Тип.Типы(); + + Для каждого ТипПользователя Из ТипыПользователя Цикл ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипПользователя); Если НЕ Метаданные.ПланыОбмена.Содержит(ОбъектМетаданных) Тогда Продолжить; КонецЕсли; - ПустаяСсылкаУзлаПланаОбмена = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ОбъектМетаданных.ПолноеИмя()).ПустаяСсылка(); - СписокТиповПользователей.Добавить(ПустаяСсылкаУзлаПланаОбмена, ОбъектМетаданных.Представление()); + ПустаяСсылкаУзлаПланаОбмена = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени( + ОбъектМетаданных.ПолноеИмя()).ПустаяСсылка(); + + СписокТиповПользователей.Добавить( + ПустаяСсылкаУзлаПланаОбмена, ОбъектМетаданных.Представление()); КонецЦикла; Элементы.Пользователи.КартинкаСтрок = БиблиотекаКартинок.ПиктограммыПланОбменаУзел; Иначе ЗначениеДляВсехПользователей = Перечисления.ВидыНазначенияДатЗапрета.ДляВсехПользователей; - СписокТиповПользователей.Добавить(Тип("СправочникСсылка.Пользователи"), НСтр("ru = 'Пользователь'")); - СписокТиповПользователей.Добавить(Тип("СправочникСсылка.ВнешниеПользователи"), НСтр("ru = 'Внешний пользователь'")); + + СписокТиповПользователей.Добавить( + Тип("СправочникСсылка.Пользователи"), НСтр("ru = 'Пользователь'")); + + СписокТиповПользователей.Добавить( + Тип("СправочникСсылка.ВнешниеПользователи"), НСтр("ru = 'Внешний пользователь'")); КонецЕсли; Список = Элементы.СпособУказанияДатыЗапрета.СписокВыбора; Если БезРазделовИОбъектов Тогда - Элементы.СпособУказанияДатыЗапрета.Видимость = ЗначениеЗаполнено(ТекущийСпособУказанияДатыЗапрета("*", ЕдинственныйРаздел, ПервыйРаздел, ЗначениеДляВсехПользователей)); + Элементы.СпособУказанияДатыЗапрета.Видимость = + ЗначениеЗаполнено(ТекущийСпособУказанияДатыЗапрета( + "*", ЕдинственныйРаздел, ПервыйРаздел, ЗначениеДляВсехПользователей)); + Список.Удалить(Список.НайтиПоЗначению("ПоРазделамИОбъектам")); Список.Удалить(Список.НайтиПоЗначению("ПоРазделам")); Список.Удалить(Список.НайтиПоЗначению("ПоОбъектам")); ИначеЕсли НЕ ПоказыватьРазделы Тогда - Элементы.ДатыЗапретаПоРазделамОбъектамДляПользователей.Заголовок = ТекстЗаголовкаКомандыОтчетПоОбъектам(); + Элементы.ДатыЗапретаПоРазделамОбъектамДляПользователей.Заголовок = + ТекстЗаголовкаКомандыОтчетПоОбъектам(); + Список.Удалить(Список.НайтиПоЗначению("ПоРазделамИОбъектам")); Список.Удалить(Список.НайтиПоЗначению("ПоРазделам")); ИначеЕсли ВсеРазделыБезОбъектов Тогда - Элементы.ДатыЗапретаПоРазделамОбъектамДляПользователей.Заголовок = ТекстЗаголовкаКомандыОтчетПоРазделам(); + Элементы.ДатыЗапретаПоРазделамОбъектамДляПользователей.Заголовок = + ТекстЗаголовкаКомандыОтчетПоРазделам(); + Список.Удалить(Список.НайтиПоЗначению("ПоРазделамИОбъектам")); Список.Удалить(Список.НайтиПоЗначению("ПоОбъектам")); Иначе Список.Удалить(Список.НайтиПоЗначению("ПоОбъектам")); КонецЕсли; - ИспользоватьВнешнихПользователей = ИспользоватьВнешнихПользователей И ВнешниеПользователи.ИспользоватьВнешнихПользователей(); - СправочникВнешниеПользователиДоступен = ПравоДоступа("Просмотр", Метаданные.Справочники.ВнешниеПользователи); + ИспользоватьВнешнихПользователей = ИспользоватьВнешнихПользователей + И ВнешниеПользователи.ИспользоватьВнешнихПользователей(); + + СправочникВнешниеПользователиДоступен = + ПравоДоступа("Просмотр", Метаданные.Справочники.ВнешниеПользователи); ОбновитьНаСервере(); КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) + = ВРег("РегистрСведений.ДатыЗапретаИзменения.Форма.РедактированиеДатыЗапрета") Тогда + + Если ВыбранноеЗначение <> Неопределено Тогда + ВыделенныеСтроки = Элементы.ДатыЗапрета.ВыделенныеСтроки; + + Для каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл + Строка = ДатыЗапрета.НайтиПоИдентификатору(ВыделеннаяСтрока); + Строка.ОписаниеДатыЗапрета = ВыбранноеЗначение.ОписаниеДатыЗапрета; + Строка.КоличествоДнейРазрешения = ВыбранноеЗначение.КоличествоДнейРазрешения; + Строка.ДатаЗапрета = ВыбранноеЗначение.ДатаЗапрета; + ЗаписатьОписаниеИДатуЗапрета(Строка); + Строка.ОписаниеДатыЗапретаПредставление = ПредставлениеОписанияДатыЗапрета(Строка); + КонецЦикла; + ОбновитьНаличиеДатЗапретаТекущегоПользователя(); + КонецЕсли; + + // Отмена блокировки выделенных строк + РазблокироватьВсеЗаписи(ЭтаФорма); + КонецЕсли; + +КонецПроцедуры + &НаКлиенте Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) @@ -92,7 +151,8 @@ Если ЗначениеЗаполнено(ТекстВопроса) Тогда - ОбщегоНазначенияКлиент.ЗапроситьПодтверждениеЗакрытияФормы(Отказ, , , ТекстВопроса + Символы.ПС + ТекстВопросаЗакрытьФорму()); + ОбщегоНазначенияКлиент.ЗапроситьПодтверждениеЗакрытияФормы( + Отказ, , , ТекстВопроса + Символы.ПС + ТекстВопросаЗакрытьФорму()); КонецЕсли; @@ -126,13 +186,19 @@ ТекущаяУстановкаДатыЗапрета = ТекущаяУстановкаДатыЗапрета(Параметры.ДатыЗапретаЗагрузкиДанных); - Если ТекущаяУстановкаДатыЗапрета = "ПоПользователям" И ВыбранноеЗначение = "ДляВсехПользователей" Тогда + Если ТекущаяУстановкаДатыЗапрета = "ПоПользователям" + И ВыбранноеЗначение = "ДляВсехПользователей" Тогда + ТекстВопроса = ТекстВопросаУдалитьВсеДатыЗапретаКромеДатДляВсехПользователей(); - ИначеЕсли ТекущаяУстановкаДатыЗапрета = "ПоПользователям" И ВыбранноеЗначение = "НетЗапрета" Тогда + ИначеЕсли ТекущаяУстановкаДатыЗапрета = "ПоПользователям" + И ВыбранноеЗначение = "НетЗапрета" Тогда + ТекстВопроса = ТекстВопросаУдалитьВсеДатыЗапрета(); - ИначеЕсли ТекущаяУстановкаДатыЗапрета = "ДляВсехПользователей" И ВыбранноеЗначение = "НетЗапрета" Тогда + ИначеЕсли ТекущаяУстановкаДатыЗапрета = "ДляВсехПользователей" + И ВыбранноеЗначение = "НетЗапрета" Тогда + ТекстВопроса = ТекстВопросаУдалитьВсеДатыЗапрета(); КонецЕсли; @@ -307,7 +373,7 @@ Если Поле = Элементы.ПользователиПолноеПредставление Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( ТекстСообщенияЗначениеДляВсехПользователейНеИзменяется()); - // + ИначеЕсли Поле = Элементы.ПользователиКомментарий Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( ТекстСообщенияКомментарийДляВсехПользователейНеИзменяется()); @@ -318,14 +384,17 @@ // Все значения, кроме преопределенного значения "<Для всех пользователей>", // должны быть заполнены до установки описания или даты запрета Элемент.ТекущийЭлемент = Элементы.ПользователиПолноеПредставление; - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщенияСначалаВыберитеПользователя()); + ОбщегоНазначенияКлиентСервер.СообщитьПользователю( + ТекстСообщенияСначалаВыберитеПользователя()); КонецЕсли; Если Отказ Тогда Элементы.ПользователиПолноеПредставление.ТолькоПросмотр = Ложь; Элементы.ПользователиКомментарий.ТолькоПросмотр = Ложь; Иначе - Элементы.ПользователиКомментарий.ТолькоПросмотр = НЕ ЗначениеЗаполнено(ТекущиеДанные.Представление); + Элементы.ПользователиКомментарий.ТолькоПросмотр = + НЕ ЗначениеЗаполнено(ТекущиеДанные.Представление); + Если ЗначениеЗаполнено(ТекущиеДанные.Представление) Тогда ЗаблокироватьНаборЗаписейПользователя(ТекущиеДанные.Пользователь, Элемент.ТекущаяСтрока); КонецЕсли; @@ -453,10 +522,15 @@ Для каждого Значение Из ВыбранноеЗначение Цикл Отбор.Пользователь = Значение; Если ПользователиДатЗапрета.НайтиСтроки(Отбор).Количество() = 0 Тогда - ЗаблокироватьИЗаписатьПустыеДаты(РазделПустаяСсылка, РазделПустаяСсылка, Отбор.Пользователь, ""); + ЗаблокироватьИЗаписатьПустыеДаты( + РазделПустаяСсылка, РазделПустаяСсылка, Отбор.Пользователь, ""); + ОписаниеПользователя = ПользователиДатЗапрета.Добавить(); - ОписаниеПользователя.Пользователь = Отбор.Пользователь; - ОписаниеПользователя.Представление = ТекстПредставленияПользователя(ЭтаФорма, Отбор.Пользователь); + ОписаниеПользователя.Пользователь = Отбор.Пользователь; + + ОписаниеПользователя.Представление = ТекстПредставленияПользователя( + ЭтаФорма, Отбор.Пользователь); + ОписаниеПользователя.ПолноеПредставление = ОписаниеПользователя.Представление; КонецЕсли; КонецЦикла; @@ -725,8 +799,11 @@ // Блокировка записи перед редактированием Если ЗначениеЗаполнено(ТекущиеДанные.Представление) Тогда - ПрочитанныеСвойства = ЗаблокироватьЗаписьПользователя(ЭтаФорма, ТекущийРаздел(), ТекущиеДанные.Объект, ТекущийПользователь); - ОбновитьЗначенияПрочитанныхСвойств(ТекущиеДанные, ПрочитанныеСвойства, Элементы.Пользователи.ТекущиеДанные); + ПрочитанныеСвойства = ЗаблокироватьЗаписьПользователя( + ЭтаФорма, ТекущийРаздел(), ТекущиеДанные.Объект, ТекущийПользователь); + + ОбновитьЗначенияПрочитанныхСвойств( + ТекущиеДанные, ПрочитанныеСвойства, Элементы.Пользователи.ТекущиеДанные); КонецЕсли; Если ОткрытьФормуРедактированияДатыЗапрета Тогда @@ -744,10 +821,13 @@ Элементы.ДатыЗапретаДатаЗапрета.ТолькоПросмотр = Ложь; Иначе // Блокировка недоступных полей - Элементы.ДатыЗапретаПолноеПредставление.ТолькоПросмотр = ЗначениеЗаполнено(ТекущиеДанные.Представление); + Элементы.ДатыЗапретаПолноеПредставление.ТолькоПросмотр = + ЗначениеЗаполнено(ТекущиеДанные.Представление); + Элементы.ДатыЗапретаОписаниеДатыЗапретаПредставление.ТолькоПросмотр = Истина; - Элементы.ДатыЗапретаДатаЗапрета.ТолькоПросмотр = НЕ ЗначениеЗаполнено(ТекущиеДанные.Представление) - ИЛИ ТекущиеДанные.ОписаниеДатыЗапрета <> "ПроизвольнаяДата"; + Элементы.ДатыЗапретаДатаЗапрета.ТолькоПросмотр = + НЕ ЗначениеЗаполнено(ТекущиеДанные.Представление) + ИЛИ ТекущиеДанные.ОписаниеДатыЗапрета <> "ПроизвольнаяДата"; КонецЕсли; КонецПроцедуры @@ -800,7 +880,8 @@ ТекущиеДанные.ДатаЗапрета = '00000000'; ТекущиеДанные.ОписаниеДатыЗапрета = "ПроизвольнаяДата"; Если Отказ Тогда - ТекущиеДанные.ОписаниеДатыЗапретаПредставление = ПредставлениеОписанияДатыЗапрета(ТекущиеДанные); + ТекущиеДанные.ОписаниеДатыЗапретаПредставление = + ПредставлениеОписанияДатыЗапрета(ТекущиеДанные); КонецЕсли; ОповеститьОбИзменении(Тип("РегистрСведенийКлючЗаписи.ДатыЗапретаИзменения")); Иначе @@ -848,8 +929,9 @@ ИЛИ НЕ Элементы.ДатыЗапрета.ТекущиеДанные.ЭтоРаздел Тогда Элементы.ДатыЗапрета.ТекущиеДанные.ОписаниеДатыЗапрета = "ПроизвольнаяДата"; КонецЕсли; - Элементы.ДатыЗапрета.ТекущиеДанные.ОписаниеДатыЗапретаПредставление - = ПредставлениеОписанияДатыЗапрета(Элементы.ДатыЗапрета.ТекущиеДанные); + Элементы.ДатыЗапрета.ТекущиеДанные.ОписаниеДатыЗапретаПредставление = + ПредставлениеОписанияДатыЗапрета(Элементы.ДатыЗапрета.ТекущиеДанные); + ПодключитьОбработчикОжидания("ОбработчикОжиданияВыбратьОбъекты", 0.1, Истина); КонецЕсли; @@ -882,15 +964,15 @@ СтандартнаяОбработка = Ложь; ТекущиеДанные = Элементы.ДатыЗапрета.ТекущиеДанные; - // + Если ТекущиеДанные <> Неопределено И ТекущиеДанные.Объект = ВыбранноеЗначение Тогда - // + Возврат; КонецЕсли; ИдентификаторРаздела = Неопределено; - // + Если ПоказыватьРазделыТекущегоПользователя Тогда Родитель = ТекущиеДанные.ПолучитьРодителя(); Если Родитель = Неопределено Тогда @@ -926,11 +1008,16 @@ КонецЦикла; Если ОбъектыДляДобавления.Количество() > 0 Тогда + Если ТекущийПользователь <> Неопределено Тогда Комментарий = КомментарийТекущегоПользователя(ЭтаФорма); - ЗаблокироватьИЗаписатьПустыеДаты(ТекущийРаздел(, Истина), ОбъектыДляДобавления, ТекущийПользователь, Комментарий); + + ЗаблокироватьИЗаписатьПустыеДаты( + ТекущийРаздел(, Истина), ОбъектыДляДобавления, ТекущийПользователь, Комментарий); + ОповеститьОбИзменении(Тип("РегистрСведенийКлючЗаписи.ДатыЗапретаИзменения")); КонецЕсли; + Для каждого ТекущийОбъект Из ОбъектыДляДобавления Цикл ОписаниеОбъекта = КоллекцияОбъектов.Добавить(); ОписаниеОбъекта.Раздел = ТекущийРаздел(, Истина); @@ -938,9 +1025,11 @@ ОписаниеОбъекта.Представление = Строка(Объект); ОписаниеОбъекта.ПолноеПредставление = ОписаниеОбъекта.Представление; ОписаниеОбъекта.ОписаниеДатыЗапрета = "ПроизвольнаяДата"; + ОписаниеОбъекта.ОписаниеДатыЗапретаПредставление = ПредставлениеОписанияДатыЗапрета(ОписаниеОбъекта); КонецЦикла; + Если ИдентификаторРаздела <> Неопределено Тогда Элементы.ДатыЗапрета.Развернуть(ИдентификаторРаздела, Истина); КонецЕсли; @@ -996,20 +1085,26 @@ // Если ЗначениеНеНайдено Тогда Если ТекущиеДанные.Объект <> ВыбранноеЗначение Тогда - ЗначенияСвойств = ПолучитьТекущиеЗначенияСвойств(ТекущиеДанные, Элементы.Пользователи.ТекущиеДанные); + + ЗначенияСвойств = ПолучитьТекущиеЗначенияСвойств( + ТекущиеДанные, Элементы.Пользователи.ТекущиеДанные); + Если НЕ ЗаменитьОбъектВЗаписиПользователяНаСервере( ТекущиеДанные.Раздел, ТекущиеДанные.Объект, ВыбранноеЗначение, ТекущийПользователь, ЗначенияСвойств) Тогда - // - Предупреждение(ТекстСообщенияЗначениеУжеДобавленоВСписок() - + Символы.ПС - + ТекстСообщенияОбновитьДанныеФормыF5()); + + Предупреждение( + ТекстСообщенияЗначениеУжеДобавленоВСписок() + + Символы.ПС + + ТекстСообщенияОбновитьДанныеФормыF5()); Возврат; Иначе - ОбновитьЗначенияПрочитанныхСвойств(ТекущиеДанные, ЗначенияСвойств, Элементы.Пользователи.ТекущиеДанные); + ОбновитьЗначенияПрочитанныхСвойств( + ТекущиеДанные, ЗначенияСвойств, Элементы.Пользователи.ТекущиеДанные); + ОповеститьОбИзменении(Тип("РегистрСведенийКлючЗаписи.ДатыЗапретаИзменения")); КонецЕсли; КонецЕсли; @@ -1094,7 +1189,8 @@ Процедура ПодобратьОбъекты(Команда) Если ТекущийПользователь = Неопределено Тогда - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщенияСначалаВыберитеПользователя()); + ОбщегоНазначенияКлиентСервер.СообщитьПользователю( + ТекстСообщенияСначалаВыберитеПользователя()); Возврат; КонецЕсли; @@ -1160,7 +1256,8 @@ Функция ПересчитатьДатыНаСервере() ОписаниеРезультата = ""; - ДатыЗапретаИзмененияСлужебный.ПересчитатьТекущиеЗначенияОтносительныхДатЗапрета(Ложь, ОписаниеРезультата); + ДатыЗапретаИзмененияСлужебный.ПересчитатьТекущиеЗначенияОтносительныхДатЗапрета( + Ложь, ОписаниеРезультата); ОбновитьНаСервере(); @@ -1214,21 +1311,32 @@ КонецЕсли; Если НЕ ПроверкаНесохраненныхЗаписей() Тогда - ПодключитьОбработчикОжидания("ПользователиВосстановитьТекущуюСтрокуПослеОтказаПриАктивизацииСтроки", 0.1, Истина); + ПодключитьОбработчикОжидания( + "ПользователиВосстановитьТекущуюСтрокуПослеОтказаПриАктивизацииСтроки", 0.1, Истина); Возврат; КонецЕсли; - СпособУказанияЗначениеВСписке = Элементы.СпособУказанияДатыЗапрета.СписокВыбора.НайтиПоЗначению(СпособУказанияДатыЗапрета); - Если ТекущийПользователь <> Неопределено И СпособУказанияЗначениеВСписке <> Неопределено Тогда - ТекущийСпособУказания = ТекущийСпособУказанияДатыЗапрета(ТекущийПользователь, ЕдинственныйРаздел, ПервыйРаздел, ЗначениеДляВсехПользователей); - ТекущийСпособУказания = ?(ЗначениеЗаполнено(ТекущийСпособУказания), ТекущийСпособУказания, "ОбщаяДата"); + СпособУказанияЗначениеВСписке = + Элементы.СпособУказанияДатыЗапрета.СписокВыбора.НайтиПоЗначению(СпособУказанияДатыЗапрета); + + Если ТекущийПользователь <> Неопределено + И СпособУказанияЗначениеВСписке <> Неопределено Тогда + + ТекущийСпособУказания = ТекущийСпособУказанияДатыЗапрета( + ТекущийПользователь, ЕдинственныйРаздел, ПервыйРаздел, ЗначениеДляВсехПользователей); + + ТекущийСпособУказания = + ?(ЗначениеЗаполнено(ТекущийСпособУказания), ТекущийСпособУказания, "ОбщаяДата"); + СпособУказанияДатыЗапрета = ТекущийСпособУказания; Если ТекущийСпособУказания <> СпособУказанияЗначениеВСписке.Значение Тогда + + ЭлементСписка = Элементы.СпособУказанияДатыЗапрета.СписокВыбора.НайтиПоЗначению( + ТекущийСпособУказания); + Предупреждение(ТекстСообщенияСпособУказанияНеИспользован( СпособУказанияЗначениеВСписке.Представление, - ?(Элементы.СпособУказанияДатыЗапрета.СписокВыбора.НайтиПоЗначению(ТекущийСпособУказания) = Неопределено, - ТекущийСпособУказания, - Элементы.СпособУказанияДатыЗапрета.СписокВыбора.НайтиПоЗначению(ТекущийСпособУказания).Представление))); + ?(ЭлементСписка = Неопределено, ТекущийСпособУказания, ЭлементСписка.Представление))); КонецЕсли; КонецЕсли; @@ -1256,10 +1364,11 @@ Отбор = Новый Структура("Пользователь", ТекущийПользователь); НайденныеСтроки = ПользователиДатЗапрета.НайтиСтроки(Отбор); + Если НайденныеСтроки.Количество() > 0 Тогда ТекстВопроса = ТекстВопросаОНесохраненныхДанных(Истина); Если ЗначениеЗаполнено(ТекстВопроса) Тогда - ТекстВопроса = ТекстВопроса + Символы.ПС + ТекстВопросаОчиститьНезаполненыеСтроки(); + ТекстВопроса = ТекстВопроса + Символы.ПС + ТекстВопросаОчиститьНезаполненныеСтроки(); Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет); Если Ответ = КодВозвратаДиалога.Нет Тогда ПользователиТекущаяСтрока = НайденныеСтроки[0].ПолучитьИдентификатор(); @@ -1281,7 +1390,7 @@ НачатьТранзакцию(); Попытка Запрос = Новый Запрос; - Запрос.УстановитьПараметр("ВсеРазделыБезОбъектов", ВсеРазделыБезОбъектов); + Запрос.УстановитьПараметр("ВсеРазделыБезОбъектов", ВсеРазделыБезОбъектов); Запрос.УстановитьПараметр("ДатыЗапретаЗагрузкиДанных", Параметры.ДатыЗапретаЗагрузкиДанных); Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ @@ -1374,21 +1483,32 @@ Если Контекст.УстановкаДатыЗапрета = "НетЗапрета" Тогда - // + РазблокироватьВсеЗаписи(Контекст); Возврат; - // + ИначеЕсли Контекст.УстановкаДатыЗапрета = "ПоПользователям" Тогда - НайденныеСтроки = Контекст.ПользователиДатЗапрета.НайтиСтроки(Новый Структура("Пользователь", Контекст.ТекущийПользователь)); + + НайденныеСтроки = Контекст.ПользователиДатЗапрета.НайтиСтроки( + Новый Структура("Пользователь", Контекст.ТекущийПользователь)); + Если НайденныеСтроки.Количество() > 0 Тогда Контекст.ТекущийПользовательПредставление = НайденныеСтроки[0].Представление; КонецЕсли; КонецЕсли; - Контекст.Элементы.ДанныеПользователя.ТекущаяСтраница = Контекст.Элементы.СтраницаПользовательВыбран; + + Контекст.Элементы.ДанныеПользователя.ТекущаяСтраница = + Контекст.Элементы.СтраницаПользовательВыбран; + Контекст.ДатыЗапрета.ПолучитьЭлементы().Очистить(); Если ТекущийСпособУказания = Неопределено Тогда - ТекущийСпособУказания = ТекущийСпособУказанияДатыЗапрета(Контекст.ТекущийПользователь, Контекст.ЕдинственныйРаздел, Контекст.ПервыйРаздел, Контекст.ЗначениеДляВсехПользователей, Данные); + ТекущийСпособУказания = ТекущийСпособУказанияДатыЗапрета( + Контекст.ТекущийПользователь, + Контекст.ЕдинственныйРаздел, + Контекст.ПервыйРаздел, + Контекст.ЗначениеДляВсехПользователей, Данные); + ТекущийСпособУказания = ?(ТекущийСпособУказания = "", "ОбщаяДата", ТекущийСпособУказания); Если Контекст.СпособУказанияДатыЗапрета <> ТекущийСпособУказания Тогда Контекст.СпособУказанияДатыЗапрета = ТекущийСпособУказания; @@ -1396,7 +1516,8 @@ КонецЕсли; Если Контекст.СпособУказанияДатыЗапрета = "ОбщаяДата" Тогда - Контекст.Элементы.СпособыУказания.ТекущаяСтраница = Контекст.Элементы.СпособУказанияОбщаяДата; + Контекст.Элементы.СпособыУказания.ТекущаяСтраница = + Контекст.Элементы.СпособУказанияОбщаяДата; ЗаполнитьЗначенияСвойств(Контекст, Данные); Контекст.РазрешитьИзменениеДанныхДоДатыЗапрета = Контекст.КоличествоДнейРазрешения <> 0; @@ -1406,35 +1527,44 @@ Контекст.Элементы.РазрешитьИзменениеДанныхДоДатыЗапрета.ТолькоПросмотр = Ложь; Контекст.Элементы.КоличествоДнейРазрешения.ТолькоПросмотр = Ложь; Попытка - ЗаблокироватьЗаписьПользователя(Контекст, Контекст.РазделПустаяСсылка, Контекст.РазделПустаяСсылка, Контекст.ТекущийПользователь, Истина); + ЗаблокироватьЗаписьПользователя( + Контекст, + Контекст.РазделПустаяСсылка, + Контекст.РазделПустаяСсылка, + Контекст.ТекущийПользователь, + Истина); Исключение Контекст.Элементы.ОписаниеДатыЗапрета.ТолькоПросмотр = Истина; Контекст.Элементы.ДатаЗапрета.ТолькоПросмотр = Истина; Контекст.Элементы.РазрешитьИзменениеДанныхДоДатыЗапрета.ТолькоПросмотр = Истина; Контекст.Элементы.КоличествоДнейРазрешения.ТолькоПросмотр = Истина; - ОбщегоНазначенияКлиентСервер.СообщитьПользователю(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); + + ОбщегоНазначенияКлиентСервер.СообщитьПользователю( + КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; Возврат; КонецЕсли; - Контекст.Элементы.СпособыУказания.ТекущаяСтраница = Контекст.Элементы.СпособУказанияПоРазделамОбъектам; + Контекст.Элементы.СпособыУказания.ТекущаяСтраница = + Контекст.Элементы.СпособУказанияПоРазделамОбъектам; + УстановитьКоманднуюПанельДатЗапрета(Контекст); ДанныеПользователя = Неопределено; ПрочитатьДанныеПользователяНаСервере( - Контекст.ТекущийПользователь, - Контекст.ПервыйРаздел, - ДанныеПользователя, - Контекст.ПоказыватьРазделы, - Контекст.ПоказыватьРазделыТекущегоПользователя, - Контекст.БезРазделовИОбъектов, - Контекст.ВсеРазделыБезОбъектов, - Контекст.ЕдинственныйРаздел, - Контекст.РазделыБезОбъектов, - ПолучитьЗначенияКлючейЗаблокированныхЗаписей(Контекст), - Контекст.УникальныйИдентификатор, - Контекст.СпособУказанияДатыЗапрета, - Контекст.ЗначениеДляВсехПользователей); + Контекст.ТекущийПользователь, + Контекст.ПервыйРаздел, + ДанныеПользователя, + Контекст.ПоказыватьРазделы, + Контекст.ПоказыватьРазделыТекущегоПользователя, + Контекст.БезРазделовИОбъектов, + Контекст.ВсеРазделыБезОбъектов, + Контекст.ЕдинственныйРаздел, + Контекст.РазделыБезОбъектов, + ПолучитьЗначенияКлючейЗаблокированныхЗаписей(Контекст), + Контекст.УникальныйИдентификатор, + Контекст.СпособУказанияДатыЗапрета, + Контекст.ЗначениеДляВсехПользователей); // Загрузка данных пользователя в коллекцию КоллекцияСтрок = Контекст.ДатыЗапрета.ПолучитьЭлементы(); @@ -1444,14 +1574,20 @@ ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка.Значение); НоваяСтрока.ОписаниеДатыЗапретаПредставление = ПредставлениеОписанияДатыЗапрета(НоваяСтрока); КоллекцияПодстрок = НоваяСтрока.ПолучитьЭлементы(); + Для каждого Подстрока Из Строка.Значение.СписокПодстрок Цикл НоваяПодстрока = КоллекцияПодстрок.Добавить(); ЗаполнитьЗначенияСвойств(НоваяПодстрока, Подстрока.Значение); - ЗаполнитьПоВнутреннемуОписаниюДатыЗапрета(НоваяПодстрока, НоваяПодстрока.ОписаниеДатыЗапрета); - НоваяПодстрока.ОписаниеДатыЗапретаПредставление = ПредставлениеОписанияДатыЗапрета(НоваяПодстрока); + ЗаполнитьПоВнутреннемуОписаниюДатыЗапрета( + НоваяПодстрока, НоваяПодстрока.ОписаниеДатыЗапрета); + + НоваяПодстрока.ОписаниеДатыЗапретаПредставление = + ПредставлениеОписанияДатыЗапрета(НоваяПодстрока); КонецЦикла; + Если НоваяСтрока.ЭтоРаздел Тогда - НоваяСтрока.РазделБезОбъектов = Контекст.РазделыБезОбъектов.НайтиПоЗначению(НоваяСтрока.Раздел) <> Неопределено; + НоваяСтрока.РазделБезОбъектов = + Контекст.РазделыБезОбъектов.НайтиПоЗначению(НоваяСтрока.Раздел) <> Неопределено; КонецЕсли; КонецЦикла; @@ -1460,20 +1596,21 @@ Если Контекст.ВсеРазделыБезОбъектов Тогда // Используется дата только по измерению Раздел // Измерение Объект заполнено значением измерения Раздел - // Отборажение объекта не требуется + // Отображение объекта не требуется Контекст.Элементы.ДатыЗапретаПолноеПредставление.Заголовок = ТекстЗаголовкаРаздела(); Контекст.Элементы.ДатыЗапрета.Отображение = ОтображениеТаблицы.Список; - // + Иначе - Контекст.Элементы.ДатыЗапретаПолноеПредставление.Заголовок = ТекстЗаголовкаРазделаСОбъектами(); + Контекст.Элементы.ДатыЗапретаПолноеПредставление.Заголовок = + ТекстЗаголовкаРазделаСОбъектами(); + Контекст.Элементы.ДатыЗапрета.Отображение = ОтображениеТаблицы.Дерево; КонецЕсли; Иначе ПредставленияТиповОбъектов = ""; Для каждого ОписаниеТипаОбъекта Из Контекст.ТипыОбъектовРазделов[0].ТипыОбъекта Цикл - ПредставленияТиповОбъектов = СокрЛП( ПредставленияТиповОбъектов - + Символы.ПС - + ОписаниеТипаОбъекта.Представление ); + ПредставленияТиповОбъектов = + СокрЛП(ПредставленияТиповОбъектов + Символы.ПС + ОписаниеТипаОбъекта.Представление); КонецЦикла; Контекст.Элементы.ДатыЗапретаПолноеПредставление.Заголовок = ПредставленияТиповОбъектов; Контекст.Элементы.ДатыЗапрета.Отображение = ОтображениеТаблицы.Список; @@ -1507,13 +1644,18 @@ // Подготовка дерева значений дат запрета изменения Если ПоказыватьРазделыТекущегоПользователя Тогда - ПрочитанныеДатыЗапрета = ПрочитатьДанныеПользователяСРазделами(Пользователь, ВсеРазделыБезОбъектов, РазделыБезОбъектов, ЗначениеДляВсехПользователей); + ПрочитанныеДатыЗапрета = ПрочитатьДанныеПользователяСРазделами( + Пользователь, ВсеРазделыБезОбъектов, РазделыБезОбъектов, ЗначениеДляВсехПользователей); Иначе - ПрочитанныеДатыЗапрета = ПрочитатьДанныеПользователяБезРазделов(Пользователь, ПервыйРаздел, ЗначениеДляВсехПользователей); + ПрочитанныеДатыЗапрета = ПрочитатьДанныеПользователяБезРазделов( + Пользователь, ПервыйРаздел, ЗначениеДляВсехПользователей); КонецЕсли; ДанныеПользователя = Новый СписокЗначений; - ПоляСтроки = "ПолноеПредставление, Представление, Раздел, Объект, ДатаЗапрета, ОписаниеДатыЗапрета, КоличествоДнейРазрешения, БезДатыЗапрета, ЭтоРаздел, СписокПодстрок"; + ПоляСтроки = "ПолноеПредставление, Представление, Раздел, Объект, + |ДатаЗапрета, ОписаниеДатыЗапрета, КоличествоДнейРазрешения, + |БезДатыЗапрета, ЭтоРаздел, СписокПодстрок"; + Для каждого Строка Из ПрочитанныеДатыЗапрета.Строки Цикл СтруктураСтроки = Новый Структура(ПоляСтроки); ЗаполнитьЗначенияСвойств(СтруктураСтроки, Строка); @@ -1787,7 +1929,9 @@ НайденныеСтроки = УстановленныеБлокировки.НайтиСтроки(ЗначенияКлючаЗаписи); Если НайденныеСтроки.Количество() = 0 Тогда // Добавление новой блокировки - КлючЗаписи = РегистрыСведений.ДатыЗапретаИзменения.СоздатьКлючЗаписи(ЗначенияКлючаЗаписи); + КлючЗаписи = РегистрыСведений.ДатыЗапретаИзменения.СоздатьКлючЗаписи( + ЗначенияКлючаЗаписи); + ЗаблокироватьДанныеДляРедактирования(КлючЗаписи, , УникальныйИдентификатор); ЗаполнитьЗначенияСвойств(УстановленныеБлокировки.Добавить(), ЗначенияКлючаЗаписи); Если ТекущиеДанные <> Неопределено Тогда @@ -1815,7 +1959,8 @@ &НаКлиентеНаСервереБезКонтекста Процедура РазблокироватьВсеЗаписи(Знач Контекст) - РазблокироватьВсеЗаписиНаСервере(ПолучитьЗначенияКлючейЗаблокированныхЗаписей(Контекст), Контекст.УникальныйИдентификатор); + РазблокироватьВсеЗаписиНаСервере( + ПолучитьЗначенияКлючейЗаблокированныхЗаписей(Контекст), Контекст.УникальныйИдентификатор); Контекст.УстановленныеБлокировки.Очистить(); @@ -1885,7 +2030,8 @@ КонецПопытки; ЗафиксироватьТранзакцию(); Иначе - ЗаблокироватьИЗаписатьПустыеДаты(РазделПустаяСсылка, РазделПустаяСсылка, НовыйПользователь, ""); + ЗаблокироватьИЗаписатьПустыеДаты( + РазделПустаяСсылка, РазделПустаяСсылка, НовыйПользователь, ""); КонецЕсли; РазблокироватьВсеЗаписи(ЭтаФорма); @@ -1997,8 +2143,14 @@ Если РазблокироватьРанееЗаблокированное ИЛИ Контекст.УстановленныеБлокировки.НайтиСтроки(ЗначенияКлючаЗаписи).Количество() = 0 Тогда - // - ПрочитанныеСвойства = ЗаблокироватьЗаписьПользователяНаСервере(ЗначенияКлючаЗаписи, Контекст.УникальныйИдентификатор, ПрочитанныеСвойства, РазблокироватьРанееЗаблокированное, ЗначенияКлючейЗаписей); + + ПрочитанныеСвойства = ЗаблокироватьЗаписьПользователяНаСервере( + ЗначенияКлючаЗаписи, + Контекст.УникальныйИдентификатор, + ПрочитанныеСвойства, + РазблокироватьРанееЗаблокированное, + ЗначенияКлючейЗаписей); + Если РазблокироватьРанееЗаблокированное Тогда Контекст.УстановленныеБлокировки.Очистить(); КонецЕсли; @@ -2025,7 +2177,8 @@ Если МенеджерЗаписи.Выбран() Тогда ПрочитанныеСвойства.ДатаЗапрета = МенеджерЗаписи.ДатаЗапрета; ПрочитанныеСвойства.Комментарий = МенеджерЗаписи.Комментарий; - ЗаполнитьПоВнутреннемуОписаниюДатыЗапрета(ПрочитанныеСвойства, МенеджерЗаписи.ОписаниеДатыЗапрета); + ЗаполнитьПоВнутреннемуОписаниюДатыЗапрета( + ПрочитанныеСвойства, МенеджерЗаписи.ОписаниеДатыЗапрета); Иначе НачатьТранзакцию(); Попытка @@ -2078,7 +2231,9 @@ Если ЗначениеЗаполнено(СтарыйОбъект) Тогда // Блокировка старой записи - ПрочитанныеСвойства = ЗаблокироватьЗаписьПользователя(ЭтаФорма, Раздел, СтарыйОбъект, Пользователь); + ПрочитанныеСвойства = ЗаблокироватьЗаписьПользователя( + ЭтаФорма, Раздел, СтарыйОбъект, Пользователь); + ОбновитьЗначенияПрочитанныхСвойств(ТекущиеЗначенияСвойств, ПрочитанныеСвойства); ЗначенияКлючаЗаписи.Объект = СтарыйОбъект; @@ -2091,14 +2246,14 @@ Если ЗначениеЗаполнено(ДатаЗапрета) И ЗначениеЗаполнено(ОписаниеДатыЗапрета) Тогда - // + МенеджерЗаписи.Раздел = Раздел; МенеджерЗаписи.Объект = НовыйОбъект; МенеджерЗаписи.Пользователь = Пользователь; МенеджерЗаписи.ДатаЗапрета = ТекущиеЗначенияСвойств.ДатаЗапрета; МенеджерЗаписи.ОписаниеДатыЗапрета = ВнутреннееОписаниеДатыЗапрета(ТекущиеЗначенияСвойств); МенеджерЗаписи.Комментарий = ТекущиеЗначенияСвойств.Комментарий; - // + МенеджерЗаписи.Записать(); КонецЕсли; @@ -2117,9 +2272,9 @@ Если БезРазделовИОбъектов ИЛИ СпособУказанияДатыЗапрета = "ОбщаяДата" Тогда - // + ТекущийРаздел = РазделПустаяСсылка; - // + ИначеЕсли ПоказыватьРазделыТекущегоПользователя Тогда Если ТекущиеДанные.ЭтоРаздел Тогда ТекущийРаздел = ТекущиеДанные.Раздел; @@ -2131,7 +2286,7 @@ Если ТекущиеДанные <> Неопределено И ТекущиеДанные.Раздел = РазделПустаяСсылка И НЕ РазделОбъектов Тогда - // + ТекущийРаздел = РазделПустаяСсылка; Иначе ТекущийРаздел = ПервыйРаздел; @@ -2287,7 +2442,10 @@ ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("РежимВыбора", Истина); - ПараметрыФормы.Вставить("ТекущаяСтрока", ?(Элементы.Пользователи.ТекущиеДанные = Неопределено, Неопределено, Элементы.Пользователи.ТекущиеДанные.Пользователь)); + ПараметрыФормы.Вставить("ТекущаяСтрока", + ?(Элементы.Пользователи.ТекущиеДанные = Неопределено, + Неопределено, + Элементы.Пользователи.ТекущиеДанные.Пользователь)); ВыборИПодборВнешнихПользователей = Ложь; Если ИспользоватьВнешнихПользователей Тогда @@ -2312,20 +2470,12 @@ Если ВыборИПодборВнешнихПользователей Тогда Если СправочникВнешниеПользователиДоступен Тогда - Если Подобрать Тогда - ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаВыбора", ПараметрыФормы, ВладелецФормы); - Иначе - ОткрытьФормуМодально("Справочник.ВнешниеПользователи.ФормаВыбора", ПараметрыФормы, ВладелецФормы); - КонецЕсли; + ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаВыбора", ПараметрыФормы, ВладелецФормы); Иначе Предупреждение(ТекстСообщенияНедостаточноПравДляВыбораВнешнихПользователей()); КонецЕсли; Иначе - Если Подобрать Тогда - ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", ПараметрыФормы, ВладелецФормы); - Иначе - ОткрытьФормуМодально("Справочник.Пользователи.ФормаВыбора", ПараметрыФормы, ВладелецФормы); - КонецЕсли; + ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", ПараметрыФормы, ВладелецФормы); КонецЕсли; КонецПроцедуры @@ -2335,9 +2485,12 @@ ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("РежимВыбора", Истина); - ПараметрыФормы.Вставить("ТекущаяСтрока", ?(Элементы.Пользователи.ТекущиеДанные = Неопределено, Неопределено, Элементы.Пользователи.ТекущиеДанные.Пользователь)); ПараметрыФормы.Вставить("ВыбиратьВсеУзлы", Истина); ПараметрыФормы.Вставить("ПланыОбменаДляВыбора", СписокТиповПользователей.ВыгрузитьЗначения()); + ПараметрыФормы.Вставить("ТекущаяСтрока", + ?(Элементы.Пользователи.ТекущиеДанные = Неопределено, + Неопределено, + Элементы.Пользователи.ТекущиеДанные.Пользователь)); Если Подобрать Тогда ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь); @@ -2347,11 +2500,7 @@ ВладелецФормы = Элементы.ПользователиПолноеПредставление; КонецЕсли; - Если Подобрать Тогда - ОткрытьФорму("ОбщаяФорма.ВыборУзловПлановОбмена", ПараметрыФормы, ВладелецФормы); - Иначе - ОткрытьФормуМодально("ОбщаяФорма.ВыборУзловПлановОбмена", ПараметрыФормы, ВладелецФормы); - КонецЕсли; + ОткрытьФорму("ОбщаяФорма.ВыборУзловПлановОбмена", ПараметрыФормы, ВладелецФормы); КонецПроцедуры @@ -2377,9 +2526,12 @@ ВыборИПодборВнешнихПользователей = Ложь; Если ИспользоватьВнешнихПользователей Тогда - Элемент = СписокТиповПользователей.ВыбратьЭлемент(ТекстЗаголовкаВыборТипаДанных(), СписокТиповПользователей[0]); + Элемент = СписокТиповПользователей.ВыбратьЭлемент( + ТекстЗаголовкаВыборТипаДанных(), СписокТиповПользователей[0]); + Если Элемент <> Неопределено Тогда - ВыборИПодборВнешнихПользователей = Элемент.Значение = Тип("СправочникСсылка.ВнешниеПользователи"); + ВыборИПодборВнешнихПользователей = + Элемент.Значение = Тип("СправочникСсылка.ВнешниеПользователи"); Иначе Возврат Ложь; КонецЕсли; @@ -2393,23 +2545,28 @@ Процедура ЗаполнитьНомераКартинокПользователейДатЗапрета(ТекущаяСтрока = Неопределено) Если Параметры.ДатыЗапретаЗагрузкиДанных Тогда - // + Для каждого Строка Из ПользователиДатЗапрета Цикл - // - Если Строка.Пользователь = Перечисления.ВидыНазначенияДатЗапрета.ДляВсехИнформационныхБаз Тогда + + Если Строка.Пользователь + = Перечисления.ВидыНазначенияДатЗапрета.ДляВсехИнформационныхБаз Тогда + Строка.НомерКартинки = -1; - // + ИначеЕсли НЕ ЗначениеЗаполнено(Строка.Пользователь) Тогда Строка.НомерКартинки = 0; - // - ИначеЕсли Строка.Пользователь = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Строка.Пользователь).ЭтотУзел() Тогда + + ИначеЕсли Строка.Пользователь + = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Строка.Пользователь).ЭтотУзел() Тогда + Строка.НомерКартинки = 1; Иначе Строка.НомерКартинки = 2; КонецЕсли; КонецЦикла; Иначе - Пользователи.ЗаполнитьНомераКартинокПользователей(ПользователиДатЗапрета, "Пользователь", "НомерКартинки", ТекущаяСтрока); + Пользователи.ЗаполнитьНомераКартинокПользователей( + ПользователиДатЗапрета, "Пользователь", "НомерКартинки", ТекущаяСтрока); КонецЕсли; КонецПроцедуры @@ -2473,17 +2630,18 @@ ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("РежимВыбора", Истина); - ПараметрыФормы.Вставить("ТекущаяСтрока", ?(ТекущиеДанные = Неопределено, Неопределено, ТекущиеДанные.Объект)); + ПараметрыФормы.Вставить("ТекущаяСтрока", + ?(ТекущиеДанные = Неопределено, Неопределено, ТекущиеДанные.Объект)); Если Подобрать Тогда ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь); ВладелецФормы = Элементы.ДатыЗапрета; - ОткрытьФорму(Элемент.Значение + ".ФормаВыбора", ПараметрыФормы, ВладелецФормы); Иначе ВладелецФормы = Элементы.ДатыЗапретаПолноеПредставление; - ОткрытьФормуМодально(Элемент.Значение + ".ФормаВыбора", ПараметрыФормы, ВладелецФормы); КонецЕсли; + ОткрытьФорму(Элемент.Значение + ".ФормаВыбора", ПараметрыФормы, ВладелецФормы); + КонецПроцедуры &НаКлиенте @@ -2496,7 +2654,7 @@ Если НЕ БезПроверкиПользователей И ПользователиДатЗапрета.НайтиСтроки(Новый Структура("Представление", "")).Количество() > 0 Тогда - // + ВсеПользователиВыбраны = Ложь; Иначе Если НЕ БезРазделовИОбъектов Тогда @@ -2535,14 +2693,22 @@ И ВсеДатыЗапретаПоРазделамЗаполнены И ВсеДатыЗапретаПоОбъектамЗаполнены И ВсеОбъектыВыбраны Тогда - НайденныеСтроки = ПользователиДатЗапрета.НайтиСтроки(Новый Структура("БезДатыЗапрета", Истина)); + + НайденныеСтроки = ПользователиДатЗапрета.НайтиСтроки( + Новый Структура("БезДатыЗапрета", Истина)); + Для каждого Строка Из НайденныеСтроки Цикл - Если НазначениеДляВсех(Строка.Пользователь) И ЗначениеЗаполнено(Строка.Представление) Тогда + + Если НазначениеДляВсех(Строка.Пользователь) + И ЗначениеЗаполнено(Строка.Представление) Тогда + Продолжить; КонецЕсли; + ВсеДатыЗапретаЗаполнены = Ложь; Прервать; КонецЦикла; + КонецЕсли; КонецЕсли; КонецЕсли; @@ -2551,16 +2717,20 @@ // Предупреждение пользователя ТекстВопроса = ""; Если НЕ ВсеПользователиВыбраны Тогда - ТекстВопроса = ТекстВопроса + ТекстСообщенияНастройкиСНевыбраннымиПользователямиНеСохранены(ЭтаФорма); - // + ТекстВопроса = ТекстВопроса + + ТекстСообщенияНастройкиСНевыбраннымиПользователямиНеСохранены(ЭтаФорма); + ИначеЕсли НЕ ВсеОбъектыВыбраны Тогда - ТекстВопроса = ТекстВопроса + Символы.ПС + ТекстСообщенияНастройкиСНевыбраннымиОбъектамиНеСохранены(); - // + ТекстВопроса = ТекстВопроса + Символы.ПС + + ТекстСообщенияНастройкиСНевыбраннымиОбъектамиНеСохранены(); + ИначеЕсли НЕ ВсеДатыЗапретаПоРазделамЗаполнены Тогда - ТекстВопроса = ТекстВопроса + Символы.ПС + ТекстСообщенияНастройкиСНезаполненнымиДатамиЗапретаДляРазделовНеСохранены(); - // + ТекстВопроса = ТекстВопроса + Символы.ПС + + ТекстСообщенияНастройкиСНезаполненнымиДатамиЗапретаДляРазделовНеСохранены(); + ИначеЕсли НЕ ВсеДатыЗапретаПоОбъектамЗаполнены Тогда - ТекстВопроса = ТекстВопроса + Символы.ПС + ТекстСообщенияНастройкиСНезаполненнымиДатамиЗапретаДляОбъектовНеСохранены(); + ТекстВопроса = ТекстВопроса + Символы.ПС + + ТекстСообщенияНастройкиСНезаполненнымиДатамиЗапретаДляОбъектовНеСохранены(); КонецЕсли; Возврат СокрЛ(ТекстВопроса); @@ -2639,7 +2809,8 @@ Возврат; КонецЕсли; - ИзменитьВидимость(Элементы.УстановкаПоПользователям, УстановкаДатыЗапрета <> "ДляВсехПользователей"); + ИзменитьВидимость( + Элементы.УстановкаПоПользователям, УстановкаДатыЗапрета <> "ДляВсехПользователей"); Если УстановкаДатыЗапрета <> "ПоПользователям" Тогда Элементы.ДанныеПользователя.ТекущаяСтраница = Элементы.СтраницаПользовательВыбран; @@ -2664,16 +2835,18 @@ НачатьТранзакцию(); Попытка Запрос = Новый Запрос; - Запрос.УстановитьПараметр("ДатыЗапретаЗагрузкиДанных", Параметры.ДатыЗапретаЗагрузкиДанных); - // + Запрос.УстановитьПараметр("ДатыЗапретаЗагрузкиДанных", + Параметры.ДатыЗапретаЗагрузкиДанных); + Если ВыбранноеЗначение = "НетЗапрета" Тогда Запрос.УстановитьПараметр("ОставитьДляВсехПользователей", Ложь); - // + ИначеЕсли ВыбранноеЗначение = "ДляВсехПользователей" Тогда Запрос.УстановитьПараметр("ОставитьДляВсехПользователей", Истина); Иначе Запрос.УстановитьПараметр("ДатыЗапретаЗагрузкиДанных", Неопределено); КонецЕсли; + Запрос.Текст = "ВЫБРАТЬ | ДатыЗапретаИзменения.Раздел, @@ -2701,12 +2874,19 @@ // Блокировка удаляемых записей. Для каждого ЗначенияКлючаЗаписи Из ЗначенияКлючейЗаписей Цикл - ЗаблокироватьЗаписьПользователя(ЭтаФорма, ЗначенияКлючаЗаписи.Раздел, ЗначенияКлючаЗаписи.Объект, ЗначенияКлючаЗаписи.Пользователь); + ЗаблокироватьЗаписьПользователя( + ЭтаФорма, + ЗначенияКлючаЗаписи.Раздел, + ЗначенияКлючаЗаписи.Объект, + ЗначенияКлючаЗаписи.Пользователь); КонецЦикла; // Удаление заблокированных записей. Для каждого ЗначенияКлючаЗаписи Из ЗначенияКлючейЗаписей Цикл - УдалитьЗаписьПользователя(ЗначенияКлючаЗаписи.Раздел, ЗначенияКлючаЗаписи.Объект, ЗначенияКлючаЗаписи.Пользователь); + УдалитьЗаписьПользователя( + ЗначенияКлючаЗаписи.Раздел, + ЗначенияКлючаЗаписи.Объект, + ЗначенияКлючаЗаписи.Пользователь); КонецЦикла; ЗафиксироватьТранзакцию(); @@ -2825,18 +3005,20 @@ ЗаполнитьПоВнутреннемуОписаниюДатыЗапрета(Данные, Выборка.ОписаниеДатыЗапрета); КонецЕсли; - Если РезультатыЗапроса[0].Пустой() Тогда // Нет по объектам и по разделам, когда пустой. + Если РезультатыЗапроса[0].Пустой() Тогда + // Нет по объектам и по разделам, когда пустой. ТекущийСпособУказанияДатыЗапрета = ?(ОбщаяДатаПрочитана, "ОбщаяДата", ""); - ИначеЕсли НЕ РезультатыЗапроса[1].Пустой() Тогда // Есть по объектам, когда не пустой. - Если РезультатыЗапроса[2].Пустой() // Только по ПервыйРаздел (без дат по разделам), когда пустой. + ИначеЕсли НЕ РезультатыЗапроса[1].Пустой() Тогда + // Есть по объектам, когда не пустой. + + Если РезультатыЗапроса[2].Пустой() И ЕдинственныйРаздел Тогда - + // Только по ПервыйРаздел (без дат по разделам), когда пустой. ТекущийСпособУказанияДатыЗапрета = "ПоОбъектам"; Иначе ТекущийСпособУказанияДатыЗапрета = "ПоРазделамИОбъектам"; КонецЕсли; - Иначе ТекущийСпособУказанияДатыЗапрета = "ПоРазделам"; КонецЕсли; @@ -2930,7 +3112,11 @@ Для каждого ОписаниеРаздела Из ОтмеченныеРазделы Цикл Если ОписаниеРаздела.Пометка Тогда - ЗаблокироватьИЗаписатьПустыеДаты(ОписаниеРаздела.Значение, ОписаниеРаздела.Значение, ТекущийПользователь, Комментарий); + ЗаблокироватьИЗаписатьПустыеДаты( + ОписаниеРаздела.Значение, + ОписаниеРаздела.Значение, + ТекущийПользователь, Комментарий); + ЭлементДанных = ДатыЗапретаДерево.Строки.Добавить(); ЭлементДанных.ЭтоРаздел = Истина; ЭлементДанных.Раздел = ОписаниеРаздела.Значение; @@ -2942,7 +3128,9 @@ КонецЕсли; ЭлементДанных.ПолноеПредставление = ЭлементДанных.Представление; ЭлементДанных.ОписаниеДатыЗапрета = "ПроизвольнаяДата"; - ЭлементДанных.ОписаниеДатыЗапретаПредставление = ПредставлениеОписанияДатыЗапрета(ЭлементДанных); + + ЭлементДанных.ОписаниеДатыЗапретаПредставление = + ПредставлениеОписанияДатыЗапрета(ЭлементДанных); КонецЕсли; КонецЦикла; @@ -2972,63 +3160,79 @@ Элементы.ДатыЗапрета.Обновить(); Предупреждение(ТекстСообщенияСнятоВыделениеСНезаполненныхСтрок()); КонецЕсли; + // Блокировка записей выделенных строк Для каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл ТекущиеДанные = ДатыЗапрета.НайтиПоИдентификатору(ВыделеннаяСтрока); - ПрочитанныеСвойства = ЗаблокироватьЗаписьПользователя(ЭтаФорма, ТекущийРаздел(ТекущиеДанные), ТекущиеДанные.Объект, ТекущийПользователь); - ОбновитьЗначенияПрочитанныхСвойств(ТекущиеДанные, ПрочитанныеСвойства, Элементы.Пользователи.ТекущиеДанные); + + ПрочитанныеСвойства = ЗаблокироватьЗаписьПользователя( + ЭтаФорма, ТекущийРаздел(ТекущиеДанные), ТекущиеДанные.Объект, ТекущийПользователь); + + ОбновитьЗначенияПрочитанныхСвойств( + ТекущиеДанные, ПрочитанныеСвойства, Элементы.Пользователи.ТекущиеДанные); КонецЦикла; + // Изменение описания даты запрета ПараметрыФормы = Новый Структура; Если УстановкаДатыЗапрета = "ПоПользователям" Тогда - ПараметрыФормы.Вставить("ПользовательПредставление", Элементы.Пользователи.ТекущиеДанные.Представление); + ПараметрыФормы.Вставить("ПользовательПредставление", + Элементы.Пользователи.ТекущиеДанные.Представление); Иначе - ПараметрыФормы.Вставить("ПользовательПредставление", ТекстПредставленияДляВсехПользователей(ЭтаФорма)); + ПараметрыФормы.Вставить("ПользовательПредставление", + ТекстПредставленияДляВсехПользователей(ЭтаФорма)); КонецЕсли; + Если ВыделенныеСтроки.Количество() = 1 Тогда Если СпособУказанияДатыЗапрета = "ПоОбъектам" Тогда + Если Элементы.ДатыЗапрета.ТекущиеДанные.ЭтоРаздел Тогда - ПараметрыФормы.Вставить("РазделПредставление", Элементы.ДатыЗапрета.ТекущиеДанные.Представление); + ПараметрыФормы.Вставить("РазделПредставление", + Элементы.ДатыЗапрета.ТекущиеДанные.Представление); ПараметрыФормы.Вставить("ОбъектПредставление", ""); Иначе ПараметрыФормы.Вставить("РазделПредставление", ""); - ПараметрыФормы.Вставить("ОбъектПредставление", Элементы.ДатыЗапрета.ТекущиеДанные.Представление); + ПараметрыФормы.Вставить("ОбъектПредставление", + Элементы.ДатыЗапрета.ТекущиеДанные.Представление); КонецЕсли; Иначе Если Элементы.ДатыЗапрета.ТекущиеДанные.ЭтоРаздел Тогда - ПараметрыФормы.Вставить("РазделПредставление", Элементы.ДатыЗапрета.ТекущиеДанные.Представление); - РазделБезОбъектов = РазделыБезОбъектов.НайтиПоЗначению(Элементы.ДатыЗапрета.ТекущиеДанные.Раздел) <> Неопределено; - Если НЕ РазделБезОбъектов И ТипЗнч(ТекущийПользователь) <> Тип("ПеречислениеСсылка.ВидыНазначенияДатЗапрета") Тогда + ПараметрыФормы.Вставить("РазделПредставление", + Элементы.ДатыЗапрета.ТекущиеДанные.Представление); + + РазделБезОбъектов = РазделыБезОбъектов.НайтиПоЗначению( + Элементы.ДатыЗапрета.ТекущиеДанные.Раздел) <> Неопределено; + + Если НЕ РазделБезОбъектов + И ТипЗнч(ТекущийПользователь) + <> Тип("ПеречислениеСсылка.ВидыНазначенияДатЗапрета") Тогда + ПараметрыФормы.Вставить("РазрешитьПоУмолчанию", Истина); КонецЕсли; Иначе - ПараметрыФормы.Вставить("РазделПредставление", Элементы.ДатыЗапрета.ТекущиеДанные.ПолучитьРодителя().Представление); - ПараметрыФормы.Вставить("ОбъектПредставление", Элементы.ДатыЗапрета.ТекущиеДанные.Представление); + ПараметрыФормы.Вставить("РазделПредставление", + Элементы.ДатыЗапрета.ТекущиеДанные.ПолучитьРодителя().Представление); + + ПараметрыФормы.Вставить("ОбъектПредставление", + Элементы.ДатыЗапрета.ТекущиеДанные.Представление); КонецЕсли; КонецЕсли; Иначе ПараметрыФормы.Вставить("РазделПредставление", "<...>"); ПараметрыФормы.Вставить("ОбъектПредставление", "<...>"); КонецЕсли; - ПараметрыФормы.Вставить("ОписаниеДатыЗапрета", Элементы.ДатыЗапрета.ТекущиеДанные.ОписаниеДатыЗапрета); - ПараметрыФормы.Вставить("КоличествоДнейРазрешения", Элементы.ДатыЗапрета.ТекущиеДанные.КоличествоДнейРазрешения); - ПараметрыФормы.Вставить("ДатаЗапрета", Элементы.ДатыЗапрета.ТекущиеДанные.ДатаЗапрета); - НовыеДанные = ОткрытьФормуМодально("РегистрСведений.ДатыЗапретаИзменения.Форма.РедактированиеДатыЗапрета", ПараметрыФормы); - Если НовыеДанные <> Неопределено Тогда - Для каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл - Строка = ДатыЗапрета.НайтиПоИдентификатору(ВыделеннаяСтрока); - Строка.ОписаниеДатыЗапрета = НовыеДанные.ОписаниеДатыЗапрета; - Строка.КоличествоДнейРазрешения = НовыеДанные.КоличествоДнейРазрешения; - Строка.ДатаЗапрета = НовыеДанные.ДатаЗапрета; - ЗаписатьОписаниеИДатуЗапрета(Строка); - Строка.ОписаниеДатыЗапретаПредставление = ПредставлениеОписанияДатыЗапрета(Строка); - КонецЦикла; - ОбновитьНаличиеДатЗапретаТекущегоПользователя(); - КонецЕсли; - // Отмена блокировки выделенных строк - РазблокироватьВсеЗаписи(ЭтаФорма); + ПараметрыФормы.Вставить("ОписаниеДатыЗапрета", + Элементы.ДатыЗапрета.ТекущиеДанные.ОписаниеДатыЗапрета); + + ПараметрыФормы.Вставить("КоличествоДнейРазрешения", + Элементы.ДатыЗапрета.ТекущиеДанные.КоличествоДнейРазрешения); + + ПараметрыФормы.Вставить("ДатаЗапрета", + Элементы.ДатыЗапрета.ТекущиеДанные.ДатаЗапрета); + + ОткрытьФорму("РегистрСведений.ДатыЗапретаИзменения.Форма.РедактированиеДатыЗапрета", + ПараметрыФормы, ЭтаФорма); Иначе - Предупреждение(ТекстСообщенияВыделенныеСтрокиНезаполнены()); + Предупреждение(ТекстСообщенияВыделенныеСтрокиНеЗаполнены()); КонецЕсли; КонецПроцедуры @@ -3037,7 +3241,9 @@ &НаКлиентеНаСервереБезКонтекста Функция ПредставлениеОписанияДатыЗапрета(Знач Данные) - Представление = СписокОписанийДатыЗапрета().НайтиПоЗначению(Данные.ОписаниеДатыЗапрета).Представление; + Представление = СписокОписанийДатыЗапрета().НайтиПоЗначению( + Данные.ОписаниеДатыЗапрета).Представление; + Если Данные.КоличествоДнейРазрешения > 0 Тогда Представление = Представление + " (" + Формат(Данные.КоличествоДнейРазрешения, "ЧГ=") + ")"; КонецЕсли; @@ -3051,7 +3257,9 @@ ВнутреннееОписание = ""; Если Данные.ОписаниеДатыЗапрета <> "ПроизвольнаяДата" Тогда - ВнутреннееОписание = СокрЛП(Данные.ОписаниеДатыЗапрета + Символы.ПС + Формат(Данные.КоличествоДнейРазрешения, "ЧГ=0")); + ВнутреннееОписание = СокрЛП( + Данные.ОписаниеДатыЗапрета + Символы.ПС + + Формат(Данные.КоличествоДнейРазрешения, "ЧГ=0")); КонецЕсли; Возврат ВнутреннееОписание; @@ -3178,53 +3386,66 @@ Сутки = 60*60*24; Если Контекст.ОписаниеДатыЗапрета = "ПроизвольнаяДата" Тогда - Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = Контекст.Элементы.НепроизвольнаяДатаНеИспользуется; - Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = Контекст.Элементы.ПроизвольнаяДатаИспользуется; + Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = + Контекст.Элементы.НепроизвольнаяДатаНеИспользуется; + + Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = + Контекст.Элементы.ПроизвольнаяДатаИспользуется; + Контекст.РазрешитьИзменениеДанныхДоДатыЗапрета = Ложь; Контекст.КоличествоДнейРазрешения = 0; Иначе - Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = Контекст.Элементы.НепроизвольнаяДатаИспользуется; - Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = Контекст.Элементы.ПроизвольнаяДатаНеИспользуется; + Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = + Контекст.Элементы.НепроизвольнаяДатаИспользуется; + + Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = + Контекст.Элементы.ПроизвольнаяДатаНеИспользуется; + Если Контекст.ОписаниеДатыЗапрета = "ПредыдущийДень" Тогда Контекст.Элементы.РазрешитьИзменениеДанныхДоДатыЗапрета.Доступность = Ложь; Контекст.РазрешитьИзменениеДанныхДоДатыЗапрета = Ложь; Иначе Контекст.Элементы.РазрешитьИзменениеДанныхДоДатыЗапрета.Доступность = Истина; КонецЕсли; - РасчетныеДатыЗапрета = РасчетДатыЗапрета(Контекст.ОписаниеДатыЗапрета, Контекст.ТекущаяДатаНаСервере); + РасчетныеДатыЗапрета = РасчетДатыЗапрета( + Контекст.ОписаниеДатыЗапрета, Контекст.ТекущаяДатаНаСервере); + Если РассчитатьДатуЗапрета Тогда Контекст.ДатаЗапрета = РасчетныеДатыЗапрета.Текущая; КонецЕсли; ТекстНадписи = ""; Если Контекст.РазрешитьИзменениеДанныхДоДатыЗапрета Тогда - СкорректироватьКоличествоДнейРазрешения(Контекст.ОписаниеДатыЗапрета, Контекст.КоличествоДнейРазрешения); - Контекст.Элементы.СвойствоКоличествоДнейРазрешенияИзменения.ТекущаяСтраница = Контекст.Элементы.ИзменениеДанныхДоДатыЗапретаРазрешено; - СрокРазрешения = РасчетныеДатыЗапрета.Текущая + Контекст.КоличествоДнейРазрешения * Сутки; + СкорректироватьКоличествоДнейРазрешения( + Контекст.ОписаниеДатыЗапрета, Контекст.КоличествоДнейРазрешения); + + Контекст.Элементы.СвойствоКоличествоДнейРазрешенияИзменения.ТекущаяСтраница = + Контекст.Элементы.ИзменениеДанныхДоДатыЗапретаРазрешено; + + СрокРазрешения = + РасчетныеДатыЗапрета.Текущая + Контекст.КоличествоДнейРазрешения * Сутки; Если Контекст.ТекущаяДатаНаСервере > СрокРазрешения Тогда - ТекстНадписи = Символы.ПС - + НСтр("ru = 'Срок возможности изменения данных с %3 по %4 истек %2'"); + ТекстНадписи = Символы.ПС + + НСтр("ru = 'Срок возможности изменения данных с %3 по %4 истек %2'"); Иначе Если РассчитатьДатуЗапрета Тогда Контекст.ДатаЗапрета = РасчетныеДатыЗапрета.Предыдущая; КонецЕсли; - ТекстНадписи = Символы.ПС - + НСтр("ru = 'По %2 возможно изменение данных с %3 по %4'") - + Символы.ПС - + НСтр("ru = 'После %2 будет запрещено изменение данных по %4'") - + Символы.ПС; + ТекстНадписи = Символы.ПС + + НСтр("ru = 'По %2 возможно изменение данных с %3 по %4'") + Символы.ПС + + НСтр("ru = 'После %2 будет запрещено изменение данных по %4'") + Символы.ПС; КонецЕсли; Иначе Контекст.Элементы.СвойствоКоличествоДнейРазрешенияИзменения.ТекущаяСтраница = Контекст.Элементы.ИзменениеДанныхДоДатыЗапретаНеРазрешено; Контекст.КоличествоДнейРазрешения = 0; КонецЕсли; - Контекст.Элементы.ПояснениеНепроизвольнойДаты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Запрещено изменение данных по %1'") - + ТекстНадписи, - Формат(Контекст.ДатаЗапрета, "ДФ=dd.MM.yyyy"), - Формат(СрокРазрешения, "ДФ=dd.MM.yyyy"), - Формат(РасчетныеДатыЗапрета.Предыдущая + Сутки, "ДФ=dd.MM.yyyy"), - Формат(РасчетныеДатыЗапрета.Текущая, "ДФ=dd.MM.yyyy")); + Контекст.Элементы.ПояснениеНепроизвольнойДаты.Заголовок = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Запрещено изменение данных по %1'") + ТекстНадписи, + Формат(Контекст.ДатаЗапрета, "ДЛФ=Д"), + Формат(СрокРазрешения, "ДЛФ=Д"), + Формат(РасчетныеДатыЗапрета.Предыдущая + Сутки, "ДЛФ=Д"), + Формат(РасчетныеДатыЗапрета.Текущая, "ДЛФ=Д")); КонецЕсли; КонецПроцедуры @@ -3239,23 +3460,23 @@ Если ВариантДатыЗапрета = "КонецПрошлогоГода" Тогда ТекущаяДатаЗапрета = НачалоГода(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоГода(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоГода(ТекущаяДатаЗапрета) - Сутки; ИначеЕсли ВариантДатыЗапрета = "КонецПрошлогоКвартала" Тогда ТекущаяДатаЗапрета = НачалоКвартала(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоКвартала(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоКвартала(ТекущаяДатаЗапрета) - Сутки; ИначеЕсли ВариантДатыЗапрета = "КонецПрошлогоМесяца" Тогда ТекущаяДатаЗапрета = НачалоМесяца(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоМесяца(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоМесяца(ТекущаяДатаЗапрета) - Сутки; ИначеЕсли ВариантДатыЗапрета = "КонецПрошлойНедели" Тогда ТекущаяДатаЗапрета = НачалоНедели(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоНедели(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоНедели(ТекущаяДатаЗапрета) - Сутки; ИначеЕсли ВариантДатыЗапрета = "ПредыдущийДень" Тогда ТекущаяДатаЗапрета = НачалоДня(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоДня(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоДня(ТекущаяДатаЗапрета) - Сутки; КонецЕсли; Возврат Новый Структура("Текущая, Предыдущая", ТекущаяДатаЗапрета, ПредыдущаяДатаЗапрета); @@ -3325,9 +3546,11 @@ Для каждого ЗначениеСписка Из Контекст.СписокТиповПользователей Цикл Если ТипЗнч(ЗначениеСписка.Значение) = ТипЗнч(Пользователь) Тогда Если ЗначениеЗаполнено(Пользователь) Тогда - Возврат ЗначениеСписка.Представление + ": " + Строка(Пользователь); + Возврат ЗначениеСписка.Представление + ": " + + Строка(Пользователь); Иначе - Возврат ЗначениеСписка.Представление + ": " + НСтр("ru = '<Все информационные базы>'"); + Возврат ЗначениеСписка.Представление + ": " + + НСтр("ru = '<Все информационные базы>'"); КонецЕсли; КонецЕсли; КонецЦикла; @@ -3379,7 +3602,7 @@ &НаКлиентеНаСервереБезКонтекста Функция ТекстВопросаПересчитатьДатыЗапрета() - Возврат НСтр("ru = 'Очистить незаполненые строки и пересчитать относительные даты запрета?'"); + Возврат НСтр("ru = 'Очистить незаполненные строки и пересчитать относительные даты запрета?'"); КонецФункции @@ -3393,7 +3616,9 @@ &НаКлиенте Функция ТекстВопросаУдалитьВсеДатыЗапретаКромеДатДляВсехПользователей() - Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Удалить все даты запрета, кроме установленных %1?'"), ЗначениеДляВсехПользователей); + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Удалить все даты запрета, кроме установленных %1?'"), + ЗначениеДляВсехПользователей); КонецФункции @@ -3407,14 +3632,18 @@ &НаКлиенте Функция ТекстСообщенияЗначениеДляВсехПользователейНеИзменяется() - Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Значение %1 не изменяется.'"), ТекстПредставленияДляВсехПользователей(ЭтаФорма)); + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Значение %1 не изменяется.'"), + ТекстПредставленияДляВсехПользователей(ЭтаФорма)); КонецФункции &НаКлиенте Функция ТекстСообщенияКомментарийДляВсехПользователейНеИзменяется() - Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Комментарий %1 не изменяется.'"), ТекстПредставленияДляВсехПользователей(ЭтаФорма)); + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Комментарий %1 не изменяется.'"), + ТекстПредставленияДляВсехПользователей(ЭтаФорма)); КонецФункции @@ -3429,15 +3658,15 @@ Функция ТекстСообщенияСпособУказанияНеИспользован(СпособУказанияВФорме, СпособУказанияВБазеДанных) Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Способ указания ""%1"" не использован, - |поэтому сохранен способ указания ""%2""'"), - СпособУказанияВФорме, - СпособУказанияВБазеДанных); + НСтр("ru = 'Способ указания ""%1"" не использован, + |поэтому сохранен способ указания ""%2""'"), + СпособУказанияВФорме, + СпособУказанияВБазеДанных); КонецФункции &НаКлиентеНаСервереБезКонтекста -Функция ТекстВопросаОчиститьНезаполненыеСтроки() +Функция ТекстВопросаОчиститьНезаполненныеСтроки() Возврат НСтр("ru = 'Очистить незаполненные строки?'"); @@ -3453,7 +3682,8 @@ &НаКлиенте Функция ТекстВопросаУдалитьДатыЗапретаДляВсехПользователей() - Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Удалить даты запрета %1?'"), НРег(ЗначениеДляВсехПользователей)); + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Удалить даты запрета %1?'"), НРег(ЗначениеДляВсехПользователей)); КонецФункции @@ -3495,7 +3725,8 @@ &НаКлиенте Функция ТекстСообщенияДляВсехПользователейДатыЗапретаНеУстановлены() - Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 даты запрета не установлены.'"), ЗначениеДляВсехПользователей); + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 даты запрета не установлены.'"), ЗначениеДляВсехПользователей); КонецФункции @@ -3612,7 +3843,8 @@ &НаКлиенте Функция ТекстСообщенияДляВсехПользователейРазделыВсегдаПоказываются() - Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 разделы всегда показываются.'"), ЗначениеДляВсехПользователей); + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 разделы всегда показываются.'"), ЗначениеДляВсехПользователей); КонецФункции @@ -3626,7 +3858,8 @@ &НаКлиенте Функция ТекстСообщенияДляВсехПользователейОбщаяДатаВсегдаПоказывается() - Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = '%1 <Общая дата> всегда показывается.'"), ЗначениеДляВсехПользователей); + Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = '%1 <Общая дата> всегда показывается.'"), ЗначениеДляВсехПользователей); КонецФункции @@ -3719,7 +3952,7 @@ КонецФункции &НаКлиентеНаСервереБезКонтекста -Функция ТекстСообщенияВыделенныеСтрокиНезаполнены() +Функция ТекстСообщенияВыделенныеСтрокиНеЗаполнены() Возврат НСтр("ru ='Выделенные строки не заполнены.'"); diff --git a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/РедактированиеДатыЗапрета/Form.form b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/РедактированиеДатыЗапрета/Form.form index 5841a1ea2..8e3ec1720 100644 --- a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/РедактированиеДатыЗапрета/Form.form +++ b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/РедактированиеДатыЗапрета/Form.form @@ -940,9 +940,13 @@ <event>OnCreateAtServer</event> <name>ПриСозданииНаСервере</name> </handlers> + <handlers> + <event>OnClose</event> + <name>ПриЗакрытии</name> + </handlers> <excludedCommands>CustomizeForm</excludedCommands> <excludedCommands>Help</excludedCommands> - <windowOpeningMode>DontBlock</windowOpeningMode> + <windowOpeningMode>LockOwner</windowOpeningMode> <saveWindowSettings>true</saveWindowSettings> <autoTitle>true</autoTitle> <autoUrl>true</autoUrl> @@ -1103,6 +1107,21 @@ <common>true</common> </edit> </attributes> + <attributes> + <name>ВозвращаемоеЗначение</name> + <title> + <key>ru</key> + <value>Возвращаемое значение</value> + + 9 + + + true + + + true + + ОК diff --git a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/РедактированиеДатыЗапрета/Module.bsl b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/РедактированиеДатыЗапрета/Module.bsl index b2baaffa3..1cb9d6b65 100644 --- a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/РедактированиеДатыЗапрета/Module.bsl +++ b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/РедактированиеДатыЗапрета/Module.bsl @@ -37,6 +37,13 @@ КонецПроцедуры +&НаКлиенте +Процедура ПриЗакрытии() + + ОповеститьОВыборе(ВозвращаемоеЗначение); + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -86,12 +93,12 @@ &НаКлиенте Процедура ОК(Команда) - Данные = Новый Структура; - Данные.Вставить("ОписаниеДатыЗапрета", ОписаниеДатыЗапрета); - Данные.Вставить("КоличествоДнейРазрешения", КоличествоДнейРазрешения); - Данные.Вставить("ДатаЗапрета", ДатаЗапрета); + ВозвращаемоеЗначение = Новый Структура; + ВозвращаемоеЗначение.Вставить("ОписаниеДатыЗапрета", ОписаниеДатыЗапрета); + ВозвращаемоеЗначение.Вставить("КоличествоДнейРазрешения", КоличествоДнейРазрешения); + ВозвращаемоеЗначение.Вставить("ДатаЗапрета", ДатаЗапрета); - Закрыть(Данные); + Закрыть(); КонецПроцедуры @@ -102,8 +109,12 @@ Процедура ОбщаяДатаЗапретаСОписаниемПриИзмененииДополнительно(Знач Контекст) Если Контекст.ОписаниеДатыЗапрета = "" Тогда - Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = Контекст.Элементы.НепроизвольнаяДатаНеИспользуется; - Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = Контекст.Элементы.ПроизвольнаяДатаНеИспользуется; + Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = + Контекст.Элементы.НепроизвольнаяДатаНеИспользуется; + + Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = + Контекст.Элементы.ПроизвольнаяДатаНеИспользуется; + Контекст.РазрешитьИзменениеДанныхДоДатыЗапрета = Ложь; Контекст.КоличествоДнейРазрешения = 0; Контекст.ДатаЗапрета = '00000000'; @@ -122,28 +133,43 @@ Сутки = 60*60*24; Если Контекст.ОписаниеДатыЗапрета = "ПроизвольнаяДата" Тогда - Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = Контекст.Элементы.НепроизвольнаяДатаНеИспользуется; - Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = Контекст.Элементы.ПроизвольнаяДатаИспользуется; + Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = + Контекст.Элементы.НепроизвольнаяДатаНеИспользуется; + + Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = + Контекст.Элементы.ПроизвольнаяДатаИспользуется; + Контекст.РазрешитьИзменениеДанныхДоДатыЗапрета = Ложь; Контекст.КоличествоДнейРазрешения = 0; Иначе - Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = Контекст.Элементы.НепроизвольнаяДатаИспользуется; - Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = Контекст.Элементы.ПроизвольнаяДатаНеИспользуется; + Контекст.Элементы.СвойстваНепроизвольнойДаты.ТекущаяСтраница = + Контекст.Элементы.НепроизвольнаяДатаИспользуется; + + Контекст.Элементы.ПроизвольнаяДата.ТекущаяСтраница = + Контекст.Элементы.ПроизвольнаяДатаНеИспользуется; + Если Контекст.ОписаниеДатыЗапрета = "ПредыдущийДень" Тогда Контекст.Элементы.РазрешитьИзменениеДанныхДоДатыЗапрета.Доступность = Ложь; Контекст.РазрешитьИзменениеДанныхДоДатыЗапрета = Ложь; Иначе Контекст.Элементы.РазрешитьИзменениеДанныхДоДатыЗапрета.Доступность = Истина; КонецЕсли; - РасчетныеДатыЗапрета = РасчетДатыЗапрета(Контекст.ОписаниеДатыЗапрета, Контекст.ТекущаяДатаНаСервере); + РасчетныеДатыЗапрета = РасчетДатыЗапрета( + Контекст.ОписаниеДатыЗапрета, Контекст.ТекущаяДатаНаСервере); + Если РассчитатьДатуЗапрета Тогда Контекст.ДатаЗапрета = РасчетныеДатыЗапрета.Текущая; КонецЕсли; ТекстНадписи = ""; Если Контекст.РазрешитьИзменениеДанныхДоДатыЗапрета Тогда - СкорректироватьКоличествоДнейРазрешения(Контекст.ОписаниеДатыЗапрета, Контекст.КоличествоДнейРазрешения); - Контекст.Элементы.СвойствоКоличествоДнейРазрешенияИзменения.ТекущаяСтраница = Контекст.Элементы.ИзменениеДанныхДоДатыЗапретаРазрешено; - СрокРазрешения = РасчетныеДатыЗапрета.Текущая + Контекст.КоличествоДнейРазрешения * Сутки; + СкорректироватьКоличествоДнейРазрешения( + Контекст.ОписаниеДатыЗапрета, Контекст.КоличествоДнейРазрешения); + + Контекст.Элементы.СвойствоКоличествоДнейРазрешенияИзменения.ТекущаяСтраница = + Контекст.Элементы.ИзменениеДанныхДоДатыЗапретаРазрешено; + + СрокРазрешения = + РасчетныеДатыЗапрета.Текущая + Контекст.КоличествоДнейРазрешения * Сутки; Если Контекст.ТекущаяДатаНаСервере > СрокРазрешения Тогда ТекстНадписи = Символы.ПС @@ -159,16 +185,18 @@ + Символы.ПС; КонецЕсли; Иначе - Контекст.Элементы.СвойствоКоличествоДнейРазрешенияИзменения.ТекущаяСтраница = Контекст.Элементы.ИзменениеДанныхДоДатыЗапретаНеРазрешено; + Контекст.Элементы.СвойствоКоличествоДнейРазрешенияИзменения.ТекущаяСтраница = + Контекст.Элементы.ИзменениеДанныхДоДатыЗапретаНеРазрешено; + Контекст.КоличествоДнейРазрешения = 0; КонецЕсли; - Контекст.Элементы.ПояснениеНепроизвольнойДаты.Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Запрещено изменение данных по %1'") - + ТекстНадписи, - Формат(Контекст.ДатаЗапрета, "ДФ=dd.MM.yyyy"), - Формат(СрокРазрешения, "ДФ=dd.MM.yyyy"), - Формат(РасчетныеДатыЗапрета.Предыдущая + Сутки, "ДФ=dd.MM.yyyy"), - Формат(РасчетныеДатыЗапрета.Текущая, "ДФ=dd.MM.yyyy")); + Контекст.Элементы.ПояснениеНепроизвольнойДаты.Заголовок = + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( + НСтр("ru = 'Запрещено изменение данных по %1'") + ТекстНадписи, + Формат(Контекст.ДатаЗапрета, "ДЛФ=Д"), + Формат(СрокРазрешения, "ДЛФ=Д"), + Формат(РасчетныеДатыЗапрета.Предыдущая + Сутки, "ДЛФ=Д"), + Формат(РасчетныеДатыЗапрета.Текущая, "ДЛФ=Д")); КонецЕсли; КонецПроцедуры @@ -183,23 +211,23 @@ Если ВариантДатыЗапрета = "КонецПрошлогоГода" Тогда ТекущаяДатаЗапрета = НачалоГода(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоГода(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоГода(ТекущаяДатаЗапрета) - Сутки; ИначеЕсли ВариантДатыЗапрета = "КонецПрошлогоКвартала" Тогда ТекущаяДатаЗапрета = НачалоКвартала(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоКвартала(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоКвартала(ТекущаяДатаЗапрета) - Сутки; ИначеЕсли ВариантДатыЗапрета = "КонецПрошлогоМесяца" Тогда ТекущаяДатаЗапрета = НачалоМесяца(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоМесяца(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоМесяца(ТекущаяДатаЗапрета) - Сутки; ИначеЕсли ВариантДатыЗапрета = "КонецПрошлойНедели" Тогда ТекущаяДатаЗапрета = НачалоНедели(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоНедели(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоНедели(ТекущаяДатаЗапрета) - Сутки; ИначеЕсли ВариантДатыЗапрета = "ПредыдущийДень" Тогда ТекущаяДатаЗапрета = НачалоДня(ТекущаяДатаНаСервере) - Сутки; - ПредыдущаяДатаЗапрета = НачалоДня(ТекущаяДатаЗапрета) - Сутки; + ПредыдущаяДатаЗапрета = НачалоДня(ТекущаяДатаЗапрета) - Сутки; КонецЕсли; Возврат Новый Структура("Текущая, Предыдущая", ТекущаяДатаЗапрета, ПредыдущаяДатаЗапрета); @@ -235,4 +263,3 @@ КонецЕсли; КонецПроцедуры - diff --git a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index 865b6fb96..91027f589 100644 --- a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -5,18 +5,6 @@ <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> </filter> <order> - <item xsi:type="OrderItemField"> - <field>Пользователь</field> - <orderType>Asc</orderType> - </item> - <item xsi:type="OrderItemField"> - <field>Раздел</field> - <orderType>Asc</orderType> - </item> - <item xsi:type="OrderItemField"> - <field>Объект</field> - <orderType>Asc</orderType> - </item> <viewMode>Normal</viewMode> <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> </order> diff --git a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ФормаСписка/Module.bsl b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ФормаСписка/Module.bsl index 007731ea6..8aef556b5 100644 --- a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Forms/ФормаСписка/Module.bsl @@ -73,6 +73,34 @@ СвойстваРазделов = ДатыЗапретаИзмененияПовтИсп.СвойстваРазделов(); Элементы.ФормаДатыЗапретаЗагрузкиДанных.Видимость = СвойстваРазделов.ИспользоватьДатыЗапретаЗагрузкиДанных; + // Настройка порядка + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Порядок = Список.КомпоновщикНастроек.Настройки.Порядок; + Порядок.ИдентификаторПользовательскойНастройки = "ОсновнойПорядок"; + Иначе + Порядок = Список.Порядок; + КонецЕсли; + + Порядок.Элементы.Очистить(); + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Пользователь"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Раздел"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + + ЭлементПорядка = Порядок.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных")); + ЭлементПорядка.Поле = Новый ПолеКомпоновкиДанных("Объект"); + ЭлементПорядка.ТипУпорядочивания = НаправлениеСортировкиКомпоновкиДанных.Возр; + ЭлементПорядка.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный; + ЭлементПорядка.Использование = Истина; + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// diff --git a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Help/ru.html b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Help/ru.html index 3643bd125..4af52dfe5 100644 --- a/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Help/ru.html +++ b/SSL/src/InformationRegisters/ДатыЗапретаИзменения/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <h3>О запрете изменения (загрузки) данных</h3> <p>Иногда при работе с информационной базой требуется установить запрет изменения каких-либо данных до определенной даты. Например, после сдачи квартальной бухгалтерской отчетности в налоговую инспекцию, обычно устанавливается запрет изменения тех данных, которые использовались для формирования этой отчетности, то есть данных по последний день отчетного периода.<br>Запрет загрузки в отличие от запрета изменения может быть установлен для данных, которые должны редактироваться только в одном узле информационной базы, а также по правилам, которые следуют из требований обмена данными, а не из типовых бизнес-процессов организации.<br>Запреты загрузки данных могут не использоваться. В этом случае доступна только форма настройки дат запрета изменения данных.</p> <h3>Проявление установленного запрета</h3> diff --git a/SSL/src/InformationRegisters/ДокументыФизическихЛиц/Help/ru.html b/SSL/src/InformationRegisters/ДокументыФизическихЛиц/Help/ru.html index cae151628..94911e528 100644 --- a/SSL/src/InformationRegisters/ДокументыФизическихЛиц/Help/ru.html +++ b/SSL/src/InformationRegisters/ДокументыФизическихЛиц/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p class="Usual">Для физического лица может потребоваться хранить информацию о его удостоверении личности.</p> <p class="Usual">При заполнении информации необходимо указать вид документа, удостоверяющего личность, его серию и номер, информацию о том, кем выдан документ и дату выдачи.</p> <p class="Usual">См. также:</p> diff --git a/SSL/src/InformationRegisters/ДополнительныеСведения/Help/ru.html b/SSL/src/InformationRegisters/ДополнительныеСведения/Help/ru.html index 16db04430..606d420b1 100644 --- a/SSL/src/InformationRegisters/ДополнительныеСведения/Help/ru.html +++ b/SSL/src/InformationRegisters/ДополнительныеСведения/Help/ru.html @@ -1,3 +1,3 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Для некоторых объектов конфигурации можно указать дополнительные сведения, состав и тип которых настраивается администратором.</p> <p>См. также: <a href="ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения/Help">Дополнительные свойства</a>, <a href="Catalog.НаборыДополнительныхРеквизитовИСведений/Help">Наборы свойств</a>.</p></body></html> \ No newline at end of file diff --git a/SSL/src/InformationRegisters/ИдентификаторыПолученныхЭлектронныхПисем/ИдентификаторыПолученныхЭлектронныхПисем.mdo b/SSL/src/InformationRegisters/ИдентификаторыПолученныхЭлектронныхПисем/ИдентификаторыПолученныхЭлектронныхПисем.mdo index b9b98df29..dd42011a3 100644 --- a/SSL/src/InformationRegisters/ИдентификаторыПолученныхЭлектронныхПисем/ИдентификаторыПолученныхЭлектронныхПисем.mdo +++ b/SSL/src/InformationRegisters/ИдентификаторыПолученныхЭлектронныхПисем/ИдентификаторыПолученныхЭлектронныхПисем.mdo @@ -86,9 +86,11 @@ <maxValue xsi:type="core:UndefinedValue"/> <fullTextSearch>Use</fullTextSearch> <dataHistory>Use</dataHistory> + <fillFromFillingValue>true</fillFromFillingValue> <fillValue xsi:type="core:ReferenceValue"> <value>Catalog.УчетныеЗаписиЭлектроннойПочты.EmptyRef</value> </fillValue> + <master>true</master> <mainFilter>true</mainFilter> </dimensions> <dimensions uuid="e67b4a32-4bac-450e-be6d-88c262383f31"> diff --git a/SSL/src/InformationRegisters/ИзмененияОбщихДанныхУзлов/ManagerModule.bsl b/SSL/src/InformationRegisters/ИзмененияОбщихДанныхУзлов/ManagerModule.bsl index 47b0629fe..3bdd1dfbd 100644 --- a/SSL/src/InformationRegisters/ИзмененияОбщихДанныхУзлов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ИзмененияОбщихДанныхУзлов/ManagerModule.bsl @@ -5,6 +5,10 @@ Функция ВыбратьИзменения(Знач Узел, Знач НомерСообщения) Экспорт + Если ТранзакцияАктивна() Тогда + ВызватьИсключение НСтр("ru = 'Выборка изменений данных запрещена в активной транзакции.'"); + КонецЕсли; + Результат = Новый Массив; НачатьТранзакцию(); @@ -81,6 +85,10 @@ Процедура УдалитьРегистрациюИзменений(Знач Узел, Знач НомерСообщения = Неопределено) Экспорт + Если ТранзакцияАктивна() Тогда + ВызватьИсключение НСтр("ru = 'Удаление регистрации изменений данных не может быть выполнено в активной транзакции.'"); + КонецЕсли; + НачатьТранзакцию(); Попытка diff --git a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/АдресацияПоОбъекту/Help/ru.html b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/АдресацияПоОбъекту/Help/ru.html index 617df6d45..34173be13 100644 --- a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/АдресацияПоОбъекту/Help/ru.html +++ b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/АдресацияПоОбъекту/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В этом списке содержится актуальная (текущая) информация о соответствии пользователей <a href="Catalog.РолиИсполнителей/Help">ролям исполнителей</a>. </p> <p>Роли, на которые не назначено ни одного исполнителя, отмечены значком "внимание". Такая ситуация может приводить к возникновению зависших задач (т.е. задач, у которых не существует реального исполнителя). Для контроля зависших задач предназначен <a href="Report.ЗависшиеЗадачи/Help">Отчет по зависшим задачам</a>, для получения уведомлений по зависшим задачам - предопределенная роль "<a href="Catalog.РолиИсполнителей/Help">Координатор выполнения задач</a>".</p> <p>См. также:</p> diff --git a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/АдресацияПоОбъектуИРоли/Help/ru.html b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/АдресацияПоОбъектуИРоли/Help/ru.html index d89d191d2..bdba6669a 100644 --- a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/АдресацияПоОбъектуИРоли/Help/ru.html +++ b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/АдресацияПоОбъектуИРоли/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В этом списке содержится актуальная (текущая) информация о назначении пользователей на <a href="Catalog.РолиИсполнителей/Help">роль исполнителей</a> по указанному <a href="ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач/Help">объекту адресации задач</a>. </p> <p>Роли, на которые не назначено ни одного исполнителя, отмечены значком "внимание". Такая ситуация может приводить к возникновению зависших задач (т.е. задач, у которых не существует реального исполнителя). Для контроля зависших задач предназначен <a href="Report.ЗависшиеЗадачи/Help">Отчет по зависшим задачам</a>, для получения уведомлений по зависшим задачам - предопределенная роль "<a href="Catalog.РолиИсполнителей/Help">Координатор выполнения задач</a>".</p> <p>См. также:</p> diff --git a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Attributes/Исполнители/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Attributes/Исполнители/ExtInfo/ListSettings.dcss index 31980f61b..5e2a1d6aa 100644 --- a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Attributes/Исполнители/ExtInfo/ListSettings.dcss +++ b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Attributes/Исполнители/ExtInfo/ListSettings.dcss @@ -16,22 +16,4 @@ <viewMode>Normal</viewMode> <userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID> </conditionalAppearance> - <item xsi:type="StructureItemGroup"> - <groupItems> - <item xsi:type="GroupItemField"> - <field>ОсновнойОбъектАдресации</field> - <groupType>Items</groupType> - <periodAdditionType>None</periodAdditionType> - <periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</periodAdditionBegin> - <periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</periodAdditionEnd> - </item> - <item xsi:type="GroupItemField"> - <field>ДополнительныйОбъектАдресации</field> - <groupType>Items</groupType> - <periodAdditionType>None</periodAdditionType> - <periodAdditionBegin xsi:type="xs:dateTime">0001-01-01T00:00:00</periodAdditionBegin> - <periodAdditionEnd xsi:type="xs:dateTime">0001-01-01T00:00:00</periodAdditionEnd> - </item> - </groupItems> - </item> </Settings> diff --git a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Help/ru.html b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Help/ru.html index d89d191d2..bdba6669a 100644 --- a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Help/ru.html +++ b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В этом списке содержится актуальная (текущая) информация о назначении пользователей на <a href="Catalog.РолиИсполнителей/Help">роль исполнителей</a> по указанному <a href="ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач/Help">объекту адресации задач</a>. </p> <p>Роли, на которые не назначено ни одного исполнителя, отмечены значком "внимание". Такая ситуация может приводить к возникновению зависших задач (т.е. задач, у которых не существует реального исполнителя). Для контроля зависших задач предназначен <a href="Report.ЗависшиеЗадачи/Help">Отчет по зависшим задачам</a>, для получения уведомлений по зависшим задачам - предопределенная роль "<a href="Catalog.РолиИсполнителей/Help">Координатор выполнения задач</a>".</p> <p>См. также:</p> diff --git a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Module.bsl b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Module.bsl index 897f44ec0..a58c52ebc 100644 --- a/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Module.bsl +++ b/SSL/src/InformationRegisters/ИсполнителиЗадач/Forms/ИсполнителиРоли/Module.bsl @@ -11,13 +11,15 @@ ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Исполнители, "РольИсполнителя", Параметры.РольИсполнителя, ВидСравненияКомпоновкиДанных.Равно); СвойстваРоли = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Параметры.РольИсполнителя, "ИспользуетсяСОбъектамиАдресации,ТипыДополнительногоОбъектаАдресации,ТипыОсновногоОбъектаАдресации"); - Если Не СвойстваРоли.ИспользуетсяСОбъектамиАдресации Тогда - Исполнители.Группировка.Элементы[0].Использование = Ложь; // ОсновнойОбъектАдресации - Исполнители.Группировка.Элементы[1].Использование = Ложь; // ДополнительныйОбъектАдресации - ИначеЕсли СвойстваРоли.ТипыДополнительногоОбъектаАдресации.Пустая() Тогда - Исполнители.Группировка.Элементы[1].Использование = Ложь; // ДополнительныйОбъектАдресации + Если СвойстваРоли.ИспользуетсяСОбъектамиАдресации Тогда + ПолеГруппировки = Исполнители.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ОсновнойОбъектАдресации"); + ПолеГруппировки.Использование = Истина; + Если Не СвойстваРоли.ТипыДополнительногоОбъектаАдресации.Пустая() Тогда + ПолеГруппировки = Исполнители.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); + ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("ДополнительныйОбъектАдресации"); + ПолеГруппировки.Использование = Истина; + КонецЕсли; КонецЕсли; - КонецПроцедуры - diff --git a/SSL/src/InformationRegisters/ИсполнителиЗадач/Help/ru.html b/SSL/src/InformationRegisters/ИсполнителиЗадач/Help/ru.html index a4058b1fc..c3ee15673 100644 --- a/SSL/src/InformationRegisters/ИсполнителиЗадач/Help/ru.html +++ b/SSL/src/InformationRegisters/ИсполнителиЗадач/Help/ru.html @@ -1,4 +1,4 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>В этом списке содержится актуальная (текущая) информация о соответствии пользователей <a href="Catalog.РолиИсполнителей/Help">ролям</a> и <a href="ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач/Help">объектам адресации</a>, которая используется механизмом бизнес-процессов для доставки <a href="Task.ЗадачаИсполнителя/Help">задач</a> конкретным пользователям.</p> <p>Примеры заполнения списка ролевой адресации:</p> <p></p> diff --git a/SSL/src/InformationRegisters/КалендарныеГрафики/Help/ru.html b/SSL/src/InformationRegisters/КалендарныеГрафики/Help/ru.html index e8ba9ba57..ffe0ae770 100644 --- a/SSL/src/InformationRegisters/КалендарныеГрафики/Help/ru.html +++ b/SSL/src/InformationRegisters/КалендарныеГрафики/Help/ru.html @@ -1,2 +1,2 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16455"></meta></head><body> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta content="text/html; charset=utf-8" http-equiv="Content-Type"></meta><link rel="stylesheet" type="text/css" href="v8help://service_book/service_style"></link><meta name="GENERATOR" content="MSHTML 9.00.8112.16470"></meta></head><body> <p>Система позволяет хранить графики работы, которые используются на предприятии.</p></body></html> \ No newline at end of file diff --git a/SSL/src/InformationRegisters/КалендарныеГрафики/КалендарныеГрафики.mdo b/SSL/src/InformationRegisters/КалендарныеГрафики/КалендарныеГрафики.mdo index 7889d1a07..0dea4fbfe 100644 --- a/SSL/src/InformationRegisters/КалендарныеГрафики/КалендарныеГрафики.mdo +++ b/SSL/src/InformationRegisters/КалендарныеГрафики/КалендарныеГрафики.mdo @@ -81,7 +81,7 @@ <name>КоличествоДнейВГрафикеСНачалаГода</name> <synonym> <key>ru</key> - <value>(Не используется) Количество дней в графике с начала года</value> + <value>Количество дней в графике с начала года</value> </synonym> <type> <types>Number</types> diff --git a/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/RecordSetModule.bsl b/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/RecordSetModule.bsl index c4f1ba8dd..4124c7df9 100644 --- a/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/RecordSetModule.bsl +++ b/SSL/src/InformationRegisters/КэшПрограммныхИнтерфейсов/RecordSetModule.bsl @@ -19,15 +19,16 @@ ПараметрыПолучения = Неопределено; Если Не ДополнительныеСвойства.Свойство("ПараметрыПолучения", ПараметрыПолучения) Тогда - ВызватьИсключение НСтр("ru = 'При записи данных в регистр сведений КэшПрограммныхИнтерфейсов из сеансов с включенным разделением требуется передавать параметры получения данных для кэша интерфейсов в дополнительном свойстве набора записей ПараметрыПолучения!'"); + ВызватьИсключение НСтр("ru = 'При записи данных в регистр сведений КэшПрограммныхИнтерфейсов из сеансов + |с включенным разделением требуется передавать параметры получения данных для кэша + |интерфейсов в дополнительном свойстве набора записей ПараметрыПолучения!'"); КонецЕсли; Для Каждого Запись Из ЭтотОбъект Цикл Данные = ОбщегоНазначения.ПодготовитьДанныеКэшаВерсий( - Запись.ТипДанных, ПараметрыПолучения - ); + Запись.ТипДанных, ПараметрыПолучения); Запись.Данные = Новый ХранилищеЗначения(Данные); КонецЦикла; @@ -48,9 +49,38 @@ // разделении по областям данных. Если ТребуетсяКонтроль Тогда - ЭтотОбъект.Загрузить(ТаблицаКонтроля); + + Для Каждого Запись Из ЭтотОбъект Цикл + + КонтрольныеСтроки = ТаблицаКонтроля.НайтиСтроки( + Новый Структура("Идентификатор, ТипДанных", Запись.Идентификатор, Запись.ТипДанных)); + + Если КонтрольныеСтроки.Количество() <> 1 Тогда + ОшибкаКонтроля(); + Иначе + + КонтрольнаяСтрока = КонтрольныеСтроки.Получить(0); + + ТекущиеДанные = ОбщегоНазначения.ЗначениеВСтрокуXML(Запись.Данные.Получить()); + КонтрольныеДанные = ОбщегоНазначения.ЗначениеВСтрокуXML(КонтрольнаяСтрока.Данные.Получить()); + + Если ТекущиеДанные <> КонтрольныеДанные Тогда + ОшибкаКонтроля(); + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + КонецЕсли; КонецПроцедуры -#КонецЕсли \ No newline at end of file +Процедура ОшибкаКонтроля() + + ВызватьИсключение НСтр("ru = 'Недопустимое изменение ресурса Данные записи регистра сведений КэшПрограммныхИнтерфейсов + |внутри транзакции записи из сеанса с включенным разделением!'"); + +КонецПроцедуры + +#КонецЕсли diff --git a/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Commands/НазначениеДополнительныхОбработок/CommandModule.bsl b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Commands/НазначениеДополнительныхОбработок/CommandModule.bsl new file mode 100644 index 000000000..102867d06 --- /dev/null +++ b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Commands/НазначениеДополнительныхОбработок/CommandModule.bsl @@ -0,0 +1,6 @@ +&НаКлиенте +Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) + Отбор = Новый Структура("ОбъектНазначения", ПараметрКоманды); + ПараметрыФормы = Новый Структура("Отбор, РежимОткрытияИзФормы", Отбор, Истина); + ОткрытьФорму("РегистрСведений.НазначениеДополнительныхОбработок.ФормаСписка", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно); +КонецПроцедуры diff --git a/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss new file mode 100644 index 000000000..91027f589 --- /dev/null +++ b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Settings xmlns="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:pal="http://v8.1c.ru/8.1/data/ui/colors/palette" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core"> + <filter> + <viewMode>Normal</viewMode> + <userSettingID>dfcece9d-5077-440b-b6b3-45a5cb4538eb</userSettingID> + </filter> + <order> + <viewMode>Normal</viewMode> + <userSettingID>88619765-ccb3-46c6-ac52-38e9c992ebd4</userSettingID> + </order> + <conditionalAppearance> + <viewMode>Normal</viewMode> + <userSettingID>b75fecce-942b-4aed-abc9-e6a02e460fb3</userSettingID> + </conditionalAppearance> +</Settings> diff --git a/SSL/src/Catalogs/СтраныМира/Forms/ФормаВыбора/Form.form b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Forms/ФормаСписка/Form.form similarity index 69% rename from SSL/src/Catalogs/СтраныМира/Forms/ФормаВыбора/Form.form rename to SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Forms/ФормаСписка/Form.form index d9af8c910..f332baa3a 100644 --- a/SSL/src/Catalogs/СтраныМира/Forms/ФормаВыбора/Form.form +++ b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Forms/ФормаСписка/Form.form @@ -14,7 +14,7 @@ <defaultItem>true</defaultItem> <titleLocation>None</titleLocation> <items xsi:type="form:FormField"> - <name>Наименование</name> + <name>ОбъектНазначения</name> <id>4</id> <visible>true</visible> <enabled>true</enabled> @@ -22,12 +22,12 @@ <common>true</common> </userVisible> <dataPath xsi:type="form:DataPath"> - <segments>Список.Description</segments> + <segments>Список.ОбъектНазначения</segments> </dataPath> <defaultItem>true</defaultItem> <extendedTooltip> - <name>НаименованиеРасширеннаяПодсказка</name> - <id>24</id> + <name>ОбъектНазначенияРасширеннаяПодсказка</name> + <id>28</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -36,7 +36,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>НаименованиеКонтекстноеМеню</name> + <name>ОбъектНазначенияКонтекстноеМеню</name> <id>5</id> <autoFill>true</autoFill> </contextMenu> @@ -51,7 +51,7 @@ </extInfo> </items> <items xsi:type="form:FormField"> - <name>Код</name> + <name>ТипФормы</name> <id>6</id> <visible>true</visible> <enabled>true</enabled> @@ -59,11 +59,12 @@ <common>true</common> </userVisible> <dataPath xsi:type="form:DataPath"> - <segments>Список.Code</segments> + <segments>Список.ТипФормы</segments> </dataPath> + <defaultItem>true</defaultItem> <extendedTooltip> - <name>КодРасширеннаяПодсказка</name> - <id>26</id> + <name>ТипФормыРасширеннаяПодсказка</name> + <id>30</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -72,7 +73,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>КодКонтекстноеМеню</name> + <name>ТипФормыКонтекстноеМеню</name> <id>7</id> <autoFill>true</autoFill> </contextMenu> @@ -87,7 +88,7 @@ </extInfo> </items> <items xsi:type="form:FormField"> - <name>КодАльфа2</name> + <name>УдалитьТипОбъекта</name> <id>8</id> <visible>true</visible> <enabled>true</enabled> @@ -95,11 +96,12 @@ <common>true</common> </userVisible> <dataPath xsi:type="form:DataPath"> - <segments>Список.КодАльфа2</segments> + <segments>Список.УдалитьТипОбъекта</segments> </dataPath> + <defaultItem>true</defaultItem> <extendedTooltip> - <name>КодАльфа2РасширеннаяПодсказка</name> - <id>28</id> + <name>УдалитьТипОбъектаРасширеннаяПодсказка</name> + <id>32</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -108,7 +110,7 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>КодАльфа2КонтекстноеМеню</name> + <name>УдалитьТипОбъектаКонтекстноеМеню</name> <id>9</id> <autoFill>true</autoFill> </contextMenu> @@ -123,17 +125,20 @@ </extInfo> </items> <items xsi:type="form:FormField"> - <name>КодАльфа3</name> + <name>ИспользоватьЗаполнениеОбъекта</name> <id>10</id> <visible>true</visible> <enabled>true</enabled> - <userVisible/> + <userVisible> + <common>true</common> + </userVisible> <dataPath xsi:type="form:DataPath"> - <segments>Список.КодАльфа3</segments> + <segments>Список.ИспользоватьЗаполнениеОбъекта</segments> </dataPath> + <defaultItem>true</defaultItem> <extendedTooltip> - <name>КодАльфа3РасширеннаяПодсказка</name> - <id>30</id> + <name>ИспользоватьЗаполнениеОбъектаРасширеннаяПодсказка</name> + <id>34</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -142,36 +147,32 @@ </extInfo> </extendedTooltip> <contextMenu> - <name>КодАльфа3КонтекстноеМеню</name> + <name>ИспользоватьЗаполнениеОбъектаКонтекстноеМеню</name> <id>11</id> <autoFill>true</autoFill> </contextMenu> - <type>LabelField</type> + <type>CheckBoxField</type> <editMode>Enter</editMode> <showInHeader>true</showInHeader> <headerHorizontalAlign>Left</headerHorizontalAlign> <showInFooter>true</showInFooter> - <extInfo xsi:type="form:LabelFieldExtInfo"> - <autoMaxWidth>true</autoMaxWidth> - <autoMaxHeight>true</autoMaxHeight> - </extInfo> + <extInfo xsi:type="form:CheckBoxFieldExtInfo"/> </items> <items xsi:type="form:FormField"> - <name>НаименованиеПолное</name> + <name>ИспользоватьОтчеты</name> <id>12</id> - <title> - <key>ru</key> - <value>Полное наименование</value> - true true - + + true + - Список.НаименованиеПолное + Список.ИспользоватьОтчеты + true - НаименованиеПолноеРасширеннаяПодсказка - 32 + ИспользоватьОтчетыРасширеннаяПодсказка + 36 Label true true @@ -180,19 +181,84 @@ - НаименованиеПолноеКонтекстноеМеню + ИспользоватьОтчетыКонтекстноеМеню 13 true - LabelField + CheckBoxField Enter true Left true - + + + + ИспользоватьПечатныеФормы + 14 + true + true + + true + + + Список.ИспользоватьПечатныеФормы + + true + + ИспользоватьПечатныеФормыРасширеннаяПодсказка + 38 + Label true true - + + Left + + + + ИспользоватьПечатныеФормыКонтекстноеМеню + 15 + true + + CheckBoxField + Enter + true + Left + true + + + + ИспользоватьСозданиеСвязанныхОбъектов + 16 + true + true + + true + + + Список.ИспользоватьСозданиеСвязанныхОбъектов + + true + + ИспользоватьСозданиеСвязанныхОбъектовРасширеннаяПодсказка + 40 + Label + true + true + + Left + + + + ИспользоватьСозданиеСвязанныхОбъектовКонтекстноеМеню + 17 + true + + CheckBoxField + Enter + true + Left + true + None @@ -202,10 +268,10 @@ СписокСтрокаПоиска - 15 + 19 СписокСтрокаПоискаРасширеннаяПодсказка - 17 + 21 Label true true @@ -215,7 +281,7 @@ СписокСтрокаПоискаКонтекстноеМеню - 16 + 20 true Список @@ -225,10 +291,10 @@ СписокСостояниеПросмотра - 18 + 22 СписокСостояниеПросмотраРасширеннаяПодсказка - 20 + 24 Label true true @@ -238,7 +304,7 @@ СписокСостояниеПросмотраКонтекстноеМеню - 19 + 23 true ViewStatusAddition @@ -249,10 +315,10 @@ СписокУправлениеПоиском - 21 + 25 СписокУправлениеПоискомРасширеннаяПодсказка - 23 + 27 Label true true @@ -262,7 +328,7 @@ СписокУправлениеПоискомКонтекстноеМеню - 22 + 26 true SearchControlAddition @@ -273,7 +339,7 @@ СписокРасширеннаяПодсказка - 14 + 18 Label true true @@ -291,7 +357,6 @@ true true true - true MultiRow
            true
            1 @@ -330,7 +395,11 @@ Left true - LockOwner + + OnCreateAtServer + ПриСозданииНаСервере + + DontBlock true true true @@ -355,13 +424,19 @@
            true
            - Catalog.СтраныМира + InformationRegister.НазначениеДополнительныхОбработок true true true true + + РежимОткрытияИзФормы + + Boolean + + diff --git a/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Forms/ФормаСписка/Module.bsl b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Forms/ФормаСписка/Module.bsl new file mode 100644 index 000000000..d8e1aa907 --- /dev/null +++ b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/Forms/ФормаСписка/Module.bsl @@ -0,0 +1,15 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + Если Параметры.РежимОткрытияИзФормы Тогда + Элементы.ОбъектНазначения.Видимость = Ложь; + КонецЕсли; + +КонецПроцедуры diff --git a/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/ManagerModule.bsl b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/ManagerModule.bsl index 4d2b7dc71..304920963 100644 --- a/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/ManagerModule.bsl @@ -32,11 +32,10 @@ // Полностью перезаполняет данные регистра. // -Процедура Обновить() Экспорт +Процедура Обновить(РежимОбновленияИБ = Ложь) Экспорт + Запрос = НовыйЗапросОбновленияДанныхРегистра(Неопределено); - ВыборкаСсылок = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); - НаборЗаписей = СоздатьНаборЗаписей(); Пока ВыборкаСсылок.Следующий() Цикл ВыборкаЗаписей = ВыборкаСсылок.Выбрать(); @@ -44,7 +43,13 @@ ЗаполнитьЗначенияСвойств(НаборЗаписей.Добавить(), ВыборкаЗаписей); КонецЦикла; КонецЦикла; - НаборЗаписей.Записать(Истина); + + Если РежимОбновленияИБ Тогда + ОбновлениеИнформационнойБазы.ЗаписатьДанные(НаборЗаписей); + Иначе + НаборЗаписей.Записать(); + КонецЕсли; + КонецПроцедуры // Возвращает текст запроса, который используется для обновления данных регистра @@ -166,8 +171,7 @@ ТекстЗапроса, "ДополнительныеОтчетыИОбработкиНазначение.ОбъектНазначения В(&СсылкиОбъектовМетаданных) | И ", - "" - ); + ""); Иначе Запрос.УстановитьПараметр("СсылкиОбъектовМетаданных", СсылкиОбъектовМетаданных); КонецЕсли; @@ -183,4 +187,4 @@ Возврат Запрос; КонецФункции -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/НазначениеДополнительныхОбработок.mdo b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/НазначениеДополнительныхОбработок.mdo index 8b421bcd3..d88a94312 100644 --- a/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/НазначениеДополнительныхОбработок.mdo +++ b/SSL/src/InformationRegisters/НазначениеДополнительныхОбработок/НазначениеДополнительныхОбработок.mdo @@ -16,6 +16,7 @@ true InDialog + InformationRegister.НазначениеДополнительныхОбработок.Form.ФормаСписка Use Active @@ -189,4 +190,25 @@ + + ФормаСписка + + ru + Форма списка + + PersonalComputer + MobileDevice + + + НазначениеДополнительныхОбработок + + ru + Назначение дополнительных обработок + + FormNavigationPanelGoTo + + CatalogRef.ИдентификаторыОбъектовМетаданных + + Auto + diff --git a/SSL/src/InformationRegisters/НаличиеПрисоединенныхФайлов/НаличиеПрисоединенныхФайлов.mdo b/SSL/src/InformationRegisters/НаличиеПрисоединенныхФайлов/НаличиеПрисоединенныхФайлов.mdo index c1397cc5b..6b0b6d98f 100644 --- a/SSL/src/InformationRegisters/НаличиеПрисоединенныхФайлов/НаличиеПрисоединенныхФайлов.mdo +++ b/SSL/src/InformationRegisters/НаличиеПрисоединенныхФайлов/НаличиеПрисоединенныхФайлов.mdo @@ -101,6 +101,7 @@ DocumentRef.ЭлектронноеПисьмоВходящее DocumentRef.ТелефонныйЗвонок DocumentRef.Встреча + DocumentRef.СообщениеSMS ru diff --git a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Module.bsl b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Module.bsl index 91cfcb449..3a5d35387 100644 --- a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Module.bsl +++ b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/Напоминание/Module.bsl @@ -31,6 +31,12 @@ ЭтоНовый = Не ЗначениеЗаполнено(Объект.ИсходныйКлючЗаписи); Элементы.Прекратить.Видимость = Не ЭтоНовый; + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Элементы.СпособУстановкиВремениНапоминания["КнопкаВыпадающегоСписка"] = Истина; + Элементы.Время["КнопкаВыпадающегоСписка"] = Истина; + Элементы.ИнтервалВремениОтносительноИсточника["КнопкаВыпадающегоСписка"] = Истина; + КонецЕсли; + КонецПроцедуры &НаСервере @@ -123,6 +129,8 @@ Если ЗначениеЗаполнено(Объект.Источник) Тогда ОповеститьОбИзменении(Объект.Источник); КонецЕсли; + + Оповестить("Запись_НапоминанияПользователя", Новый Структура, ЭтаФорма); КонецПроцедуры &НаКлиенте @@ -304,7 +312,7 @@ КонецЕсли; КонецЦикла; - // получаем переопределённый массив реквизитов + // получаем переопределенный массив реквизитов ОбработчикиСобытия = ОбщегоНазначения.ОбработчикиСлужебногоСобытия( "СтандартныеПодсистемы.НапоминанияПользователя\ПриЗаполненииСпискаРеквизитовИсточникаСДатамиДляНапоминания"); Для Каждого Обработчик Из ОбработчикиСобытия Цикл diff --git a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Form.form b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Form.form index 373b096c2..4ed1f078b 100644 --- a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Form.form +++ b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Form.form @@ -728,6 +728,10 @@ OnReopen ПриПовторномОткрытии + + OnCreateAtServer + ПриСозданииНаСервере + OnClose ПриЗакрытии diff --git a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Module.bsl b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Module.bsl index af4e53d2b..08794d42d 100644 --- a/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Module.bsl +++ b/SSL/src/InformationRegisters/НапоминанияПользователя/Forms/ФормаОповещения/Module.bsl @@ -1,6 +1,17 @@ //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Элементы.СрокПовторногоОповещения["КнопкаВыпадающегоСписка"] = Истина; + КонецЕсли; +КонецПроцедуры + &НаКлиенте Процедура ПриОткрытии(Отказ) СрокПовторногоОповещения = "15м"; @@ -135,16 +146,15 @@ СтрокаНайдена = Ложь; Для Каждого СтрокаКэша Из ТаблицаНапоминаний Цикл - Если СтрокаКэша.Источник = Напоминание.Источник - И СтрокаКэша.ВремяСобытия = Напоминание.ВремяСобытия Тогда - СтрокаНайдена = Истина; + Если СтрокаКэша.Источник = Напоминание.Источник И СтрокаКэша.ВремяСобытия = Напоминание.ВремяСобытия Тогда + СтрокаНайдена = Истина; Прервать; КонецЕсли; КонецЦикла; Если не СтрокаНайдена Тогда - СтрокиНаУдаление.Добавить(Напоминание); - КонецЕсли; - КонецЦикла; + СтрокиНаУдаление.Добавить(Напоминание); + КонецЕсли; + КонецЦикла; Для Каждого Строка Из СтрокиНаУдаление Цикл Напоминания.Удалить(Строка); @@ -154,7 +164,7 @@ Интервал = 15; // обновление таблицы не реже чем 1 раз в 15 сек. Если ВремяБлижайшего <> Неопределено Тогда - Интервал = Мин(Интервал, ВремяБлижайшего - ОбщегоНазначенияКлиент.ДатаСеанса()); + Интервал = Макс(Мин(Интервал, ВремяБлижайшего - ОбщегоНазначенияКлиент.ДатаСеанса()), 1); КонецЕсли; ПодключитьОбработчикОжидания("ОбновитьТаблицуНапоминаний", Интервал, Истина); diff --git a/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Forms/ВерсионированиеОбъектов/Form.form b/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Forms/ВерсионированиеОбъектов/Form.form index 5b4177f74..b957a0073 100644 --- a/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Forms/ВерсионированиеОбъектов/Form.form +++ b/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Forms/ВерсионированиеОбъектов/Form.form @@ -42,7 +42,7 @@ None КартинкаРасширеннаяПодсказка - 58 + 60 Label true true @@ -86,7 +86,7 @@ НаименованиеОбъектаРасширеннаяПодсказка - 60 + 62 Label true true @@ -132,7 +132,7 @@ КартинкаНаименованиеРасширеннаяПодсказка - 57 + 59 Label true true @@ -160,7 +160,7 @@ ВариантВерсионированияРасширеннаяПодсказка - 62 + 64 Label true true @@ -206,10 +206,10 @@ ДеревоОбъектовМетаданныхСтрокаПоиска - 48 + 50 ДеревоОбъектовМетаданныхСтрокаПоискаРасширеннаяПодсказка - 50 + 52 Label true true @@ -219,7 +219,7 @@ ДеревоОбъектовМетаданныхСтрокаПоискаКонтекстноеМеню - 49 + 51 true ДеревоОбъектовМетаданных @@ -229,10 +229,10 @@ ДеревоОбъектовМетаданныхСостояниеПросмотра - 51 + 53 ДеревоОбъектовМетаданныхСостояниеПросмотраРасширеннаяПодсказка - 53 + 55 Label true true @@ -242,7 +242,7 @@ ДеревоОбъектовМетаданныхСостояниеПросмотраКонтекстноеМеню - 52 + 54 true ViewStatusAddition @@ -253,10 +253,10 @@ ДеревоОбъектовМетаданныхУправлениеПоиском - 54 + 56 ДеревоОбъектовМетаданныхУправлениеПоискомРасширеннаяПодсказка - 56 + 58 Label true true @@ -266,7 +266,7 @@ ДеревоОбъектовМетаданныхУправлениеПоискомКонтекстноеМеню - 55 + 57 true SearchControlAddition @@ -277,7 +277,7 @@ ДеревоОбъектовМетаданныхРасширеннаяПодсказка - 47 + 49 Label true true @@ -299,7 +299,7 @@ false КМ_УстановитьВариантВерсионированияПриПроведенииРасширеннаяПодсказка - 42 + 44 Label true true @@ -326,7 +326,7 @@ false КМ_УстановитьВариантВерсионированияВсегдаРасширеннаяПодсказка - 43 + 45 Label true true @@ -353,7 +353,7 @@ false КМ_УстановитьВариантВерсионированияНеВерсионироватьРасширеннаяПодсказка - 44 + 46 Label true true @@ -383,7 +383,7 @@ false КМ_УстановитьНастройкиПоУмолчаниюРасширеннаяПодсказка - 46 + 48 Label true true @@ -414,7 +414,7 @@ ДеревоОбъектовМетаданныхКонтекстноеМенюГруппаКнопокРасширеннаяПодсказка - 45 + 47 Label true true @@ -468,7 +468,7 @@ false УстановитьВариантВерсионированияНеВерсионироватьРасширеннаяПодсказка - 36 + 37 Label true true @@ -495,7 +495,7 @@ false УстановитьВариантВерсионированияВсегдаРасширеннаяПодсказка - 37 + 38 Label true true @@ -522,7 +522,7 @@ false УстановитьВариантВерсионированияПриПроведенииРасширеннаяПодсказка - 38 + 39 Label true true @@ -552,7 +552,7 @@ false УстановитьНастройкиПоУмолчаниюРасширеннаяПодсказка - 40 + 41 Label true true @@ -583,7 +583,7 @@ КоманднаяПанельГруппаКнопокРасширеннаяПодсказка - 39 + 40 Label true true @@ -608,7 +608,7 @@ ВариантВерсионированияГруппаРасширеннаяПодсказка - 35 + 36 Label true true @@ -640,7 +640,7 @@ КомандыСпискаРасширеннаяПодсказка - 41 + 42 Label true true @@ -652,6 +652,33 @@ Item.ДеревоОбъектовМетаданных
            + + ДеревоОбъектовМетаданныхОбновить + 35 + true + true + + true + + + ДеревоОбъектовМетаданныхОбновитьРасширеннаяПодсказка + 43 + Label + true + true + + Left + + + Form.Command.Обновить + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Left true @@ -924,6 +951,32 @@ Auto Auto + + Обновить + + <key>ru</key> + <value>Обновить</value> + + 5 + + ru + Обновить + + + true + + F5 + + StdPicture.Refresh + + + + Обновить + + + Auto + Auto + diff --git a/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Forms/ВерсионированиеОбъектов/Module.bsl b/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Forms/ВерсионированиеОбъектов/Module.bsl index 55dd99d3b..16c719c00 100644 --- a/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Forms/ВерсионированиеОбъектов/Module.bsl +++ b/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Forms/ВерсионированиеОбъектов/Module.bsl @@ -88,10 +88,15 @@ &НаКлиенте Процедура УстановитьНастройкиПоУмолчанию(Команда) - УстановитьНастройкиПоУмолчаниюСервер(); + УстановитьВариантВерсионированияДляВыделенныхСтрок(Неопределено); КонецПроцедуры +&НаКлиенте +Процедура Обновить(Команда) + ЗаполнитьТипыОбъектовВДеревеЗначений(); +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ @@ -200,33 +205,16 @@ КонецФункции -&НаСервере -Процедура УстановитьНастройкиПоУмолчаниюСервер() - - Для Каждого ИдентификаторСтроки Из Элементы.ДеревоОбъектовМетаданных.ВыделенныеСтроки Цикл - - ЭлементДерева = ДеревоОбъектовМетаданных.НайтиПоИдентификатору(ИдентификаторСтроки); - - Если ПустаяСтрока(ЭлементДерева.ТипОбъекта) Тогда - Продолжить; - КонецЕсли; - - Если ЭлементДерева.КлассОбъекта = "КлассДокументы" Тогда - УстановитьВариантВерсионированияДляЭлементаДерева(ЭлементДерева, Перечисления.ВариантыВерсионированияОбъектов.ВерсионироватьПриПроведении); - Иначе - УстановитьВариантВерсионированияДляЭлементаДерева(ЭлементДерева, Перечисления.ВариантыВерсионированияОбъектов.НеВерсионировать); - КонецЕсли; - - КонецЦикла; - -КонецПроцедуры - &НаСервере Процедура УстановитьВариантВерсионированияДляВыделенныхСтрок(Знач ВариантВерсионирования) Для Каждого ИдентификаторСтроки Из Элементы.ДеревоОбъектовМетаданных.ВыделенныеСтроки Цикл ЭлементДерева = ДеревоОбъектовМетаданных.НайтиПоИдентификатору(ИдентификаторСтроки); - Если Не ПустаяСтрока(ЭлементДерева.ТипОбъекта) Тогда + Если ПустаяСтрока(ЭлементДерева.ТипОбъекта) Тогда + Для Каждого ПодчиненныйЭлементДерева Из ЭлементДерева.ПолучитьЭлементы() Цикл + УстановитьВариантВерсионированияДляЭлементаДерева(ПодчиненныйЭлементДерева, ВариантВерсионирования); + КонецЦикла; + Иначе УстановитьВариантВерсионированияДляЭлементаДерева(ЭлементДерева, ВариантВерсионирования); КонецЕсли; КонецЦикла; @@ -236,6 +224,14 @@ &НаСервере Процедура УстановитьВариантВерсионированияДляЭлементаДерева(ЭлементДерева, Знач ВариантВерсионирования) + Если ВариантВерсионирования = Неопределено Тогда + Если ЭлементДерева.КлассОбъекта = "КлассДокументы" Тогда + ВариантВерсионирования = Перечисления.ВариантыВерсионированияОбъектов.ВерсионироватьПриПроведении; + Иначе + ВариантВерсионирования = Перечисления.ВариантыВерсионированияОбъектов.НеВерсионировать; + КонецЕсли; + КонецЕсли; + Если ВариантВерсионирования = Перечисления.ВариантыВерсионированияОбъектов.ВерсионироватьПриПроведении И Не ЭлементДерева.Проводится Тогда ВариантВерсионирования = Перечисления.ВариантыВерсионированияОбъектов.ВерсионироватьПриЗаписи; diff --git a/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Help/ru.html b/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Help/ru.html index ad992fdda..1d8a0091a 100644 --- a/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Help/ru.html +++ b/SSL/src/InformationRegisters/НастройкиВерсионированияОбъектов/Help/ru.html @@ -1,4 +1,4 @@ - +

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

            • Не версионировать - история версий объекта не ведется;
            • Версионировать при записи - новая запись заносится в историю версий каждый раз при изменении (или создании нового) справочника или документа; diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/НастройкаПодключенияКСервису/Form.form b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/НастройкаПодключенияКСервису/Form.form index cf8599ec7..6109af6a6 100644 --- a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/НастройкаПодключенияКСервису/Form.form +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/НастройкаПодключенияКСервису/Form.form @@ -1,69 +1,30 @@ - + <key>ru</key> - <value>Настройка подключения к Интернету</value> + <value>Настройка подключения к приложению в Интернете</value> - - WSИмяПользователя - 5 - true - true - - true - - - Запись.WSИмяПользователя - - - WSИмяПользователяРасширеннаяПодсказка - 16 - Label - true - true - - Left - - - - WSИмяПользователяКонтекстноеМеню - 6 - true - - InputField - Enter - true - Left - true - - 30 - true - true - false - true - true - true - true - Normal - - - Группа1 - 9 + Группа2 + 14 - WSПароль - 7 + Пользователь + 20 true true true - Запись.WSПароль + Пользователь + + ru + Пользователь приложения в Интернете + - WSПарольРасширеннаяПодсказка - 19 + ПользовательРасширеннаяПодсказка + 26 Label true true @@ -72,8 +33,8 @@ - WSПарольКонтекстноеМеню - 8 + ПользовательКонтекстноеМеню + 21 true InputField @@ -87,24 +48,100 @@ true false true - true + false + true true true true Normal - - ЗабылиПароль - 12 + + Группа1 + 9 + + WSПароль + 7 + true + true + + true + + + Запись.WSПароль + + + ru + Пароль пользователя приложения в Интернете + + + WSПарольРасширеннаяПодсказка + 29 + Label + true + true + + Left + + + + WSПарольКонтекстноеМеню + 8 + true + + InputField + Enter + true + Left + true + + 30 + true + true + false + true + true + true + true + true + Normal + + + + ЗабылиПароль + 12 + true + true + + true + + + ЗабылиПарольРасширеннаяПодсказка + 31 + Label + true + true + + Left + + + Hyperlink + Form.Command.ЗабылиПароль + Normal + Auto + true + true + UserCmds + Auto + true true true - ЗабылиПарольРасширеннаяПодсказка - 21 + Группа1РасширеннаяПодсказка + 28 Label true true @@ -112,23 +149,127 @@ Left - Hyperlink - Form.Command.ЗабылиПароль - Normal - Auto - true - true - UserCmds - Auto + UsualGroup + + Auto + true + true + Auto + Auto + + + + Группа3 + 15 + + Декорация4 + 16 + true + true + + true + + + Декорация4РасширеннаяПодсказка + 33 + Label + true + true + + Left + + + + Декорация4КонтекстноеМеню + 17 + true + + 4 + true + 2 + true + + + CommonPicture.Предупреждение32 + + + + + Декорация3 + 18 + + <key>ru</key> + <value>Хранение пароля в программе небезопасно. +Для автоматической синхронизации данных с приложением в Интернете +рекомендуется указывать отдельного пользователя +с ограниченными правами (только права на синхронизацию данных).</value> + + true + true + + true + + + Декорация3РасширеннаяПодсказка + 34 + Label + true + true + + Left + + + + Декорация3КонтекстноеМеню + 19 + true + + Label + true + true + + Style.ПоясняющийТекст + + + Left + + + true + true + + true + + + Группа3РасширеннаяПодсказка + 32 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + true true true + + <key>ru</key> + <value>Имя и пароль пользователя приложения в Интернете</value> + - Группа1РасширеннаяПодсказка - 18 + Группа2РасширеннаяПодсказка + 25 Label true true @@ -138,47 +279,16 @@ UsualGroup + Vertical Auto + StrongSeparation true true + auto Auto Auto - - WSЗапомнитьПароль - 3 - true - true - - true - - - Запись.WSЗапомнитьПароль - - Right - - WSЗапомнитьПарольРасширеннаяПодсказка - 22 - Label - true - true - - Left - - - - WSЗапомнитьПарольКонтекстноеМеню - 4 - true - - CheckBoxField - Enter - true - Left - true - - ПараметрыДоступаВИнтернет 13 @@ -189,7 +299,7 @@ ПараметрыДоступаВИнтернетРасширеннаяПодсказка - 24 + 35 Label true true @@ -212,17 +322,20 @@ ФормаКоманднаяПанель -1 - ПроверитьПодключениеИЗакрыть - 10 + ФормаЗаписатьИЗакрыть + 22 + + <key>ru</key> + <value>Проверить подключение и закрыть</value> + true true true - true - ПроверитьПодключениеИЗакрытьРасширеннаяПодсказка - 14 + ФормаЗаписатьИЗакрытьРасширеннаяПодсказка + 23 Label true true @@ -230,7 +343,7 @@ Left - Form.Command.ПроверитьПодключениеИЗакрыть + Form.StandardCommand.WriteAndClose Auto true true @@ -248,7 +361,7 @@ ФормаЗакрытьРасширеннаяПодсказка - 15 + 24 Label true true @@ -282,7 +395,6 @@ Retry SaveValues Write - WriteAndClose Yes LockOwner true @@ -343,28 +455,23 @@ true - - ПроверитьПодключениеИЗакрыть + + Пользователь <key>ru</key> - <value>Проверить подключение и закрыть</value> + <value>Пользователь приложения</value> - 1 - - ru - Проверить подключение и закрыть - - + 4 + + CatalogRef.Пользователи + + true - - - - ПроверитьПодключениеИЗакрыть - - - Auto - Auto - + + + true + + ЗабылиПароль @@ -374,7 +481,7 @@ <id>2</id> <toolTip> <key>ru</key> - <value>Забыли пароль</value> + <value>Переход к странице восстановления пароля</value> </toolTip> <use> <common>true</common> @@ -418,5 +525,9 @@ <event>BeforeWrite</event> <name>ПередЗаписью</name> </handlers> + <handlers> + <event>BeforeWriteAtServer</event> + <name>ПередЗаписьюНаСервере</name> + </handlers> </extInfo> </form:Form> diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/НастройкаПодключенияКСервису/Module.bsl b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/НастройкаПодключенияКСервису/Module.bsl index caa73a2fc..859046cbc 100644 --- a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/НастройкаПодключенияКСервису/Module.bsl +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/НастройкаПодключенияКСервису/Module.bsl @@ -8,6 +8,10 @@ Возврат; КонецЕсли; + ОбменДаннымиСервер.ПроверитьВозможностьАдминистрированияОбменов(); + + УстановитьПривилегированныйРежим(Истина); + АдресДляВосстановленияПароляУчетнойЗаписи = Параметры.АдресДляВосстановленияПароляУчетнойЗаписи; НастройкаАвтоматическойСинхронизации = Параметры.НастройкаАвтоматическойСинхронизации; @@ -17,55 +21,51 @@ Элементы.ПараметрыДоступаВИнтернет.Видимость = Ложь; КонецЕсли; + Если Не ПустаяСтрока(Запись.WSИмяПользователя) Тогда + + Пользователь = Пользователи.НайтиПоИмени(Запись.WSИмяПользователя); + + КонецЕсли; + + Для Каждого ПользовательСинхронизации Из ПользователиСинхронизацииДанных() Цикл + + Элементы.Пользователь.СписокВыбора.Добавить(ПользовательСинхронизации.Пользователь, ПользовательСинхронизации.Представление); + + КонецЦикла; + КонецПроцедуры &НаКлиенте Процедура ПередЗаписью(Отказ, ПараметрыЗаписи) + ПроверитьПодключениеКСервису(Отказ); + + Если Отказ Тогда + Возврат; + КонецЕсли; + Если НастройкаАвтоматическойСинхронизации Тогда Оповестить("Запись_НастройкиТранспортаОбмена", - Новый Структура("НастройкаАвтоматическойСинхронизации, WSЗапомнитьПароль", НастройкаАвтоматическойСинхронизации, Запись.WSЗапомнитьПароль) - ); - + Новый Структура("НастройкаАвтоматическойСинхронизации")); КонецЕсли; КонецПроцедуры +&НаСервере +Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) + + ТекущийОбъект.WSЗапомнитьПароль = Истина; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ -&НаКлиенте -Процедура ПроверитьПодключениеИЗакрыть(Команда) - - Отказ = Ложь; - - ПроверитьПодключениеКСервисуИСохранитьНастройки(Отказ); - - Если Отказ Тогда - - Предупреждение(НСтр("ru = 'Не удалось установить подключение к приложению в Интернете.'")); - - Иначе - - Если НастройкаАвтоматическойСинхронизации Тогда - - Оповестить("Запись_НастройкиТранспортаОбмена", - Новый Структура("НастройкаАвтоматическойСинхронизации, WSЗапомнитьПароль", НастройкаАвтоматическойСинхронизации, Запись.WSЗапомнитьПароль) - ); - - КонецЕсли; - - Закрыть(); - - КонецЕсли; - -КонецПроцедуры - &НаКлиенте Процедура ЗабылиПароль(Команда) - ОбменДаннымиКлиент.ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных(); + ОбменДаннымиКлиент.ПриОткрытииИнструкцииКакИзменитьПарольСинхронизацииДанных(АдресДляВосстановленияПароляУчетнойЗаписи); КонецПроцедуры @@ -80,21 +80,74 @@ // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ &НаСервере -Процедура ПроверитьПодключениеКСервисуИСохранитьНастройки(Отказ) +Процедура ПроверитьПодключениеКСервису(Отказ) + УстановитьПривилегированныйРежим(Истина); + + // Определяем имя пользователя + СвойстваПользователя = Неопределено; + + Пользователи.ПрочитатьПользователяИБ( + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Пользователь, "ИдентификаторПользователяИБ"), + СвойстваПользователя); + Если СвойстваПользователя <> Неопределено Тогда + Запись.WSИмяПользователя = СвойстваПользователя.Имя + КонецЕсли; + + // Выполняем проверку подключения к корреспонденту ПараметрыПодключения = ОбменДаннымиСервер.СтруктураПараметровWS(); ЗаполнитьЗначенияСвойств(ПараметрыПодключения, Запись); СообщениеПользователю = ""; Если Не ОбменДаннымиСервер.ЕстьПодключениеККорреспонденту(Запись.Узел, ПараметрыПодключения, СообщениеПользователю) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеПользователю,, "Запись.WSПароль",, Отказ); - Возврат; КонецЕсли; - УстановитьПривилегированныйРежим(Истина); - - Записать(); - КонецПроцедуры - +&НаСервере +Функция ПользователиСинхронизацииДанных() + + Результат = Новый ТаблицаЗначений; + Результат.Колонки.Добавить("Пользователь"); // Тип: СправочникСсылка.Пользователи + Результат.Колонки.Добавить("Представление"); + + ТекстЗапроса = + "ВЫБРАТЬ + | Пользователи.Ссылка КАК Пользователь, + | Пользователи.Наименование КАК Представление, + | Пользователи.ИдентификаторПользователяИБ КАК ИдентификаторПользователяИБ + |ИЗ + | Справочник.Пользователи КАК Пользователи + |ГДЕ + | НЕ Пользователи.ПометкаУдаления + | И НЕ Пользователи.Недействителен + | И НЕ Пользователи.Служебный + | + |УПОРЯДОЧИТЬ ПО + | Пользователи.Наименование"; + + Запрос = Новый Запрос; + Запрос.Текст = ТекстЗапроса; + + Выборка = Запрос.Выполнить().Выбрать(); + + Пока Выборка.Следующий() Цикл + + Если ЗначениеЗаполнено(Выборка.ИдентификаторПользователяИБ) Тогда + + ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Выборка.ИдентификаторПользователяИБ); + + Если ПользовательИБ <> Неопределено + И ОбменДаннымиСервер.СинхронизацияДанныхРазрешена(ПользовательИБ) Тогда + + ЗаполнитьЗначенияСвойств(Результат.Добавить(), Выборка); + + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + Возврат Результат; +КонецФункции diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ПовторнаяСинхронизацияДанныхПередЗапуском/Form.form b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ПовторнаяСинхронизацияДанныхПередЗапуском/Form.form new file mode 100644 index 000000000..9d171df27 --- /dev/null +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ПовторнаяСинхронизацияДанныхПередЗапуском/Form.form @@ -0,0 +1,419 @@ +<?xml version="1.0" encoding="UTF-8"?> +<form:Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:form="http://g5.1c.ru/v8/dt/form"> + <items xsi:type="form:Decoration"> + <name>Пояснение</name> + <id>7</id> + <title> + <key>ru</key> + <value>Не удалось обновить информационную базу. +Техническую информацию см. в журнале регистрации:</value> + + true + true + + true + + + ПояснениеРасширеннаяПодсказка + 26 + Label + true + true + + Left + + + + ПояснениеКонтекстноеМеню + 8 + true + + Label + true + true + + Left + + + + ЖурналРегистрации + 12 + + <key>ru</key> + <value>Журнал регистрации</value> + + true + true + + true + + + ru + Просмотр ошибок (в том числе ошибок загрузки сообщения обмена данными) + + + ЖурналРегистрацииРасширеннаяПодсказка + 27 + Label + true + true + + Left + + + + ЖурналРегистрацииКонтекстноеМеню + 13 + true + + Label + true + 2 + true + + + Click + ЖурналРегистрацииНажатие + + true + Left + Top + + + + Пояснение1 + 18 + + <key>ru</key> + <value>1. Рекомендуется получить новое сообщение обмена из главного узла. +Для этого нажмите "Синхронизировать и продолжить". +При необходимости укажите параметры подключения для синхронизации данных:</value> + + true + true + + true + + + Пояснение1РасширеннаяПодсказка + 28 + Label + true + true + + Left + + + + Пояснение1КонтекстноеМеню + 19 + true + + Label + true + true + + Left + + + + ПараметрыПодключенияПриСинхронизацииДанных + 15 + + <key>ru</key> + <value>Параметры подключения при синхронизации данных</value> + + true + true + + true + + + ru + Настройка параметров подключения в случае, если они не заполнены или содержат ошибку. + + + ПараметрыПодключенияПриСинхронизацииДанныхРасширеннаяПодсказка + 29 + Label + true + true + + Left + + + + ПараметрыПодключенияПриСинхронизацииДанныхКонтекстноеМеню + 16 + true + + Label + true + 2 + true + + + Click + ПараметрыПодключенияПриСинхронизацииДанныхНажатие + + true + Left + Top + + + + Пояснение2 + 21 + + <key>ru</key> + <value>2. В случае, если сообщение обмена было успешно получено, +но информационную базу не удалось обновить по другим причинам, +нажмите "Не синхронизировать и продолжить" для повторной попытки обновления.</value> + + true + true + + true + + + Пояснение2РасширеннаяПодсказка + 30 + Label + true + true + + Left + + + + Пояснение2КонтекстноеМеню + 22 + true + + Label + true + true + + Left + + + + ДополнительныеСведения + 10 + true + true + + true + + + <key>ru</key> + <value>Дополнительные сведения</value> + + + ДополнительныеСведенияРасширеннаяПодсказка + 31 + Label + true + true + + Left + + + UsualGroup + + Auto + true + true + Auto + Auto + + + + ФормаКоманднаяПанель + -1 + + ФормаСинхронизироватьИПродолжить + 1 + true + true + + true + + + ФормаСинхронизироватьИПродолжитьРасширеннаяПодсказка + 23 + Label + true + true + + Left + + + Form.Command.СинхронизироватьИПродолжить + Auto + true + true + true + UserCmds + Auto + + + ФормаНеСинхронизироватьИПродолжить + 3 + true + true + + true + + + ФормаНеСинхронизироватьИПродолжитьРасширеннаяПодсказка + 24 + Label + true + true + + Left + + + Form.Command.НеСинхронизироватьИПродолжить + Normal + Auto + true + true + UserCmds + Auto + + + ФормаЗавершитьРаботу + 5 + true + true + + true + + + ФормаЗавершитьРаботуРасширеннаяПодсказка + 25 + Label + true + true + + Left + + + Form.Command.ЗавершитьРаботу + Normal + Auto + true + true + UserCmds + Auto + + Left + + + OnCreateAtServer + ПриСозданииНаСервере + + 66 + LockOwner + true + true + true + Vertical + true + true + true + UseIfNecessary + auto + true + + ГлавныйУзел + + <key>ru</key> + <value>Главный узел</value> + + 1 + + + true + + + true + + + + СинхронизироватьИПродолжить + + <key>ru</key> + <value>Синхронизировать и продолжить</value> + + 1 + + ru + Получить новое сообщение из главного узла и продолжить запуск + + + true + + + + СинхронизироватьИПродолжить + + + Auto + Auto + + + ЗавершитьРаботу + + <key>ru</key> + <value>Завершить работу</value> + + 2 + + ru + Завершить работу и провторить запуск позднее + + + true + + + + ЗавершитьРаботу + + + Auto + Auto + + + НеСинхронизироватьИПродолжить + + <key>ru</key> + <value>Не синхронизировать и продолжить</value> + + 3 + + ru + Продолжить запуск без получения нового сообщения из главного узла + + + true + + + + НеСинхронизироватьИПродолжить + + + Auto + Auto + + + ГлавныйУзел + + + + + + + diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ПовторнаяСинхронизацияДанныхПередЗапуском/Module.bsl b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ПовторнаяСинхронизацияДанныхПередЗапуском/Module.bsl new file mode 100644 index 000000000..227bc70a9 --- /dev/null +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ПовторнаяСинхронизацияДанныхПередЗапуском/Module.bsl @@ -0,0 +1,146 @@ +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + ГлавныйУзел = ПланыОбмена.ГлавныйУзел(); + + УстановитьДоступность(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПараметрыПодключенияПриСинхронизацииДанныхНажатие(Элемент) + + Отбор = Новый Структура("Узел", ГлавныйУзел); + ЗначенияЗаполнения = Новый Структура("Узел", ГлавныйУзел); + + ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору( + Отбор, ЗначенияЗаполнения, "НастройкиТранспортаОбмена", Неопределено); + +КонецПроцедуры + +&НаКлиенте +Процедура ЖурналРегистрацииНажатие(Элемент) + + ПараметрыФормы = Новый Структура; + + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма.ЖурналРегистрации", ПараметрыФормы); + +КонецПроцедуры + +&НаКлиенте +Процедура СинхронизироватьИПродолжить(Команда) + + ТекстПредупреждения = ЗагрузитьИПродолжитьНаСервере(); + Если ПустаяСтрока(ТекстПредупреждения) Тогда + Закрыть("Продолжить"); + Иначе + Предупреждение(ТекстПредупреждения); + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура НеСинхронизироватьИПродолжить(Команда) + + ПродолжитьЗапускНаСервере(); + + Закрыть("Продолжить"); + +КонецПроцедуры + +&НаКлиенте +Процедура ЗавершитьРаботу(Команда) + + Закрыть(); + +КонецПроцедуры + +&НаСервере +Процедура ПродолжитьЗапускНаСервере() + + УстановитьПривилегированныйРежим(Истина); + + Если НЕ ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы() Тогда + Константы.ЗагрузитьСообщениеОбменаДанными.Установить(Ложь); + КонецЕсли; + + ДобавитьУправляющийПараметр("ПропуститьПовторнуюЗагрузкуСообщенияОбменаДанными"); + +КонецПроцедуры + +&НаСервере +Функция ЗагрузитьИПродолжитьНаСервере() + + УстановитьПривилегированныйРежим(Истина); + + Если КонфигурацияИзменена() Тогда + Возврат + НСтр("ru = 'Из главного узла получены изменения, которые ещё не применены. + |Требуется открыть конфигуратор и обновить конфигурацию базы данных.'"); + КонецЕсли; + + Попытка + Справочники.ИдентификаторыОбъектовМетаданных.ПроверкаИспользования(); + Исключение + // Если ИдентификаторыОбъектовМетаданных не используются, + // тогда предварительная синхронизация не требуется. + Константы.ЗагрузитьСообщениеОбменаДанными.Установить(Истина); + Возврат ""; + КонецПопытки; + + ТекстПредупреждения = ""; + Отказ = Ложь; + Попытка + ОбменДаннымиСервер.ПередПроверкойИдентификаторовОбъектовМетаданныхВПодчиненномУзлеРИБ(Отказ); + Исключение + Отказ = Истина; + КонецПопытки; + + Если НЕ Отказ Тогда + Константы.ЗагрузитьСообщениеОбменаДанными.Установить(Истина); + ДобавитьУправляющийПараметр("ИдентификаторыОбъектовМетаданныхВПодчиненномУзлеУжеЗагружены"); + + ИначеЕсли КонфигурацияИзменена() Тогда + Константы.ЗагрузитьСообщениеОбменаДанными.Установить(Истина); + ТекстПредупреждения = + НСтр("ru = 'Из главного узла получены изменения, которые нужно применить. + |Требуется открыть конфигуратор и обновить конфигурацию базы данных.'"); + Иначе + ТекстПредупреждения = + НСтр("ru = 'Получение данных из главного узла завершилось с ошибками. + |Подробности см. в журнале регистрации.'"); + КонецЕсли; + + УстановитьДоступность(); + + Возврат ТекстПредупреждения; + +КонецФункции + +&НаСервере +Процедура УстановитьДоступность() + + Если ОбменДаннымиСервер.ЗагрузитьСообщениеОбменаДанными() + И ОбновлениеИнформационнойБазы.НеобходимоОбновлениеИнформационнойБазы() Тогда + + Элементы.ФормаНеСинхронизироватьИПродолжить.Доступность = Ложь; + Элементы.Пояснение2.Доступность = Ложь; + Иначе + Элементы.ФормаНеСинхронизироватьИПродолжить.Доступность = Истина; + Элементы.Пояснение2.Доступность = Истина; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ДобавитьУправляющийПараметр(Имя) + + ТекущиеПараметры = Новый Соответствие; + Для Каждого КлючИЗначение Из ПараметрыСеанса.ПараметрыКлиентаНаСервере Цикл + ТекущиеПараметры.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение); + КонецЦикла; + ТекущиеПараметры.Вставить(Имя, Истина); + + ПараметрыСеанса.ПараметрыКлиентаНаСервере = Новый ФиксированноеСоответствие(ТекущиеПараметры); + +КонецПроцедуры diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ФормаЗаписи/Form.form b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ФормаЗаписи/Form.form index 4eced9350..81f77c6d7 100644 --- a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ФормаЗаписи/Form.form +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Forms/ФормаЗаписи/Form.form @@ -41,8 +41,6 @@ true false true - true - false true true true @@ -883,40 +881,6 @@ UserCmds Auto - - WSИспользоватьПередачуБольшогоОбъемаДанных - 107 - true - true - - true - - - Запись.WSИспользоватьПередачуБольшогоОбъемаДанных - - Right - - WSИспользоватьПередачуБольшогоОбъемаДанныхРасширеннаяПодсказка - 159 - Label - true - true - - Left - - - - WSИспользоватьПередачуБольшогоОбъемаДанныхКонтекстноеМеню - 108 - true - - CheckBoxField - Enter - true - Left - true - - true true @@ -962,7 +926,7 @@ FILEКаталогОбменаИнформациейРасширеннаяПодсказка - 162 + 160 Label true true @@ -1011,7 +975,7 @@ false ПроверитьПодключениеFILEРасширеннаяПодсказка - 164 + 162 Label true true @@ -1045,7 +1009,7 @@ Right FILEСжиматьФайлИсходящегоСообщенияРасширеннаяПодсказка - 166 + 164 Label true true @@ -1078,7 +1042,7 @@ ПарольАрхиваСообщенияОбмена1РасширеннаяПодсказка - 168 + 166 Label true true @@ -1116,7 +1080,7 @@ Группа1РасширеннаяПодсказка - 165 + 163 Label true true @@ -1150,7 +1114,7 @@ НастройкиТранспортаFILEРасширеннаяПодсказка - 161 + 159 Label true true @@ -1183,7 +1147,7 @@ FTPСоединениеПутьРасширеннаяПодсказка - 172 + 170 Label true true @@ -1224,7 +1188,7 @@ FTPСоединениеПортРасширеннаяПодсказка - 174 + 172 Label true true @@ -1271,7 +1235,7 @@ ГруппаСерверПортРасширеннаяПодсказка - 171 + 169 Label true true @@ -1304,7 +1268,7 @@ FTPСоединениеПользовательРасширеннаяПодсказка - 177 + 175 Label true true @@ -1345,7 +1309,7 @@ FTPСоединениеПарольРасширеннаяПодсказка - 179 + 177 Label true true @@ -1389,7 +1353,7 @@ ГруппаПользовательПарольРасширеннаяПодсказка - 176 + 174 Label true true @@ -1422,7 +1386,7 @@ FTPСоединениеМаксимальныйДопустимыйРазмерСообщенияРасширеннаяПодсказка - 182 + 180 Label true true @@ -1465,7 +1429,7 @@ Декорация1РасширеннаяПодсказка - 184 + 182 Label true true @@ -1492,7 +1456,7 @@ Группа7РасширеннаяПодсказка - 181 + 179 Label true true @@ -1523,7 +1487,7 @@ Right FTPСоединениеПассивноеСоединениеРасширеннаяПодсказка - 185 + 183 Label true true @@ -1553,7 +1517,7 @@ ПараметрыДоступаВИнтернет1РасширеннаяПодсказка - 187 + 185 Label true true @@ -1581,7 +1545,7 @@ false ПроверитьПодключениеFTPРасширеннаяПодсказка - 188 + 186 Label true true @@ -1615,7 +1579,7 @@ Right FTPСжиматьФайлИсходящегоСообщенияРасширеннаяПодсказка - 190 + 188 Label true true @@ -1648,7 +1612,7 @@ ПарольАрхиваСообщенияОбменаРасширеннаяПодсказка - 192 + 190 Label true true @@ -1686,7 +1650,7 @@ Группа3РасширеннаяПодсказка - 189 + 187 Label true true @@ -1720,7 +1684,7 @@ НастройкиТранспортаFTPРасширеннаяПодсказка - 170 + 168 Label true true @@ -1750,7 +1714,7 @@ EMAILУчетнаяЗаписьРасширеннаяПодсказка - 195 + 193 Label true true @@ -1794,7 +1758,7 @@ EMAILМаксимальныйДопустимыйРазмерСообщенияРасширеннаяПодсказка - 198 + 196 Label true true @@ -1837,7 +1801,7 @@ Декорация2РасширеннаяПодсказка - 200 + 198 Label true true @@ -1864,7 +1828,7 @@ Группа8РасширеннаяПодсказка - 197 + 195 Label true true @@ -1892,7 +1856,7 @@ false ПроверитьПодключениеEMAILРасширеннаяПодсказка - 201 + 199 Label true true @@ -1926,7 +1890,7 @@ Right EMAILСжиматьФайлИсходящегоСообщенияРасширеннаяПодсказка - 203 + 201 Label true true @@ -1959,7 +1923,7 @@ ПарольАрхиваСообщенияОбмена2РасширеннаяПодсказка - 205 + 203 Label true true @@ -1997,7 +1961,7 @@ Группа4РасширеннаяПодсказка - 202 + 200 Label true true @@ -2031,7 +1995,7 @@ НастройкиТранспортаEMAILРасширеннаяПодсказка - 194 + 192 Label true true @@ -2090,7 +2054,7 @@ КоличествоЭлементовВТранзакцииЗагрузкиДанныхРасширеннаяПодсказка - 208 + 206 Label true true @@ -2131,7 +2095,7 @@ КоличествоЭлементовВТранзакцииВыгрузкиДанныхРасширеннаяПодсказка - 210 + 208 Label true true @@ -2174,7 +2138,7 @@ ДополнительныеНастройкиРасширеннаяПодсказка - 207 + 205 Label true true diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Help/ru.html b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Help/ru.html index deac36d76..5fe1c2a06 100644 --- a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Help/ru.html +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/Help/ru.html @@ -1,4 +1,4 @@ - +

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

              Общими для всех являются следующие настройки:

              • "Вид транспорта сообщений обмена по умолчанию" – поле для задания вида транспорта, который будет использоваться по умолчанию при выполнении автоматического и интерактивного обмена данными. diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/ManagerModule.bsl b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/ManagerModule.bsl index b34a58d46..a86d1c4ad 100644 --- a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/ManagerModule.bsl @@ -49,15 +49,34 @@ КонецФункции -Функция НастройкиТранспортаWS(Узел, Пароль = "") Экспорт +Функция НастройкиТранспортаWS(Узел, ПараметрыАутентификации = Неопределено) Экспорт СтруктураНастроек = ПолучитьСтруктуруНастроек("WS"); Результат = ПолучитьДанныеРегистраПоСтруктуре(Узел, СтруктураНастроек); - Если Не Результат.WSЗапомнитьПароль Тогда + Если ТипЗнч(ПараметрыАутентификации) = Тип("Структура") Тогда // Инициация обмена пользователем с клиента - Результат.WSПароль = Пароль; + Если ПараметрыАутентификации.ИспользоватьТекущегоПользователя Тогда + + Результат.WSИмяПользователя = ПользователиИнформационнойБазы.ТекущийПользователь().Имя; + + КонецЕсли; + + Пароль = Неопределено; + + Если ПараметрыАутентификации.Свойство("Пароль", Пароль) + И Пароль <> Неопределено Тогда // Ввели пароль на клиенте + + Результат.WSПароль = Пароль; + + Иначе // Пароль на клиенте не вводили + + Пароль = ОбменДаннымиСервер.ПарольСинхронизацииДанных(Узел); + + Результат.WSПароль = ?(Пароль = Неопределено, "", Пароль); + + КонецЕсли; КонецЕсли; diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/НастройкиТранспортаОбмена.mdo b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/НастройкиТранспортаОбмена.mdo index b49afa23c..945c137b9 100644 --- a/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/НастройкиТранспортаОбмена.mdo +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбмена/НастройкиТранспортаОбмена.mdo @@ -684,4 +684,13 @@ PersonalComputer MobileDevice + + ПовторнаяСинхронизацияДанныхПередЗапуском + + ru + Повторная синхронизация данных перед запуском + + PersonalComputer + MobileDevice + diff --git a/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластиДанных/ManagerModule.bsl b/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластиДанных/ManagerModule.bsl index 3fbbdc2f5..a43561924 100644 --- a/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластиДанных/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/НастройкиТранспортаОбменаОбластиДанных/ManagerModule.bsl @@ -24,8 +24,7 @@ Если РезультатЗапроса.Пустой() Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не заданы настройки подключения для корреспондента ""%1"".'"), Строка(Корреспондент) - ); + НСтр("ru = 'Не заданы настройки подключения для корреспондента ""%1"".'"), Строка(Корреспондент)); КонецЕсли; Выборка = РезультатЗапроса.Выбрать(); @@ -38,8 +37,7 @@ ИЛИ ПустаяСтрока(ОтносительныйКаталогОбменаИнформацией) Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( - НСтр("ru = 'Не заданы настройки подключения для корреспондента ""%1"".'"), Строка(Корреспондент) - ); + НСтр("ru = 'Не заданы настройки подключения для корреспондента ""%1"".'"), Строка(Корреспондент)); КонецЕсли; Возврат ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла(ОбщийКаталогОбменаИнформацией, ОтносительныйКаталогОбменаИнформацией); @@ -127,15 +125,13 @@ Результат.FILEКаталогОбменаИнформацией = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( Результат.FILEОбщийКаталогОбменаИнформацией, - Результат.FILEОтносительныйКаталогОбменаИнформацией - ); + Результат.FILEОтносительныйКаталогОбменаИнформацией); Результат.FTPСоединениеПуть = ОбщегоНазначенияКлиентСервер.ПолучитьПолноеИмяФайла( Результат.FTPОбщийКаталогОбменаИнформацией, - Результат.FTPОтносительныйКаталогОбменаИнформацией - ); + Результат.FTPОтносительныйКаталогОбменаИнформацией); - Результат.Вставить("ИспользоватьВременныйКаталогДляОтправкиИПриемаСообщений", Ложь); + Результат.Вставить("ИспользоватьВременныйКаталогДляОтправкиИПриемаСообщений", Истина); Возврат Результат; КонецФункции @@ -163,8 +159,7 @@ Если РезультатЗапроса.Пустой() Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Не заданы настройки подключения веб-сервиса для корреспондента %1.'"), - Строка(Корреспондент) - ); + Строка(Корреспондент)); КонецЕсли; Возврат ОбменДаннымиСервер.РезультатЗапросаВСтруктуру(РезультатЗапроса); @@ -188,4 +183,4 @@ КонецПроцедуры -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/InformationRegisters/ОбщиеНастройкиУзловИнформационныхБаз/ManagerModule.bsl b/SSL/src/InformationRegisters/ОбщиеНастройкиУзловИнформационныхБаз/ManagerModule.bsl index b8e4bff06..06a2ec554 100644 --- a/SSL/src/InformationRegisters/ОбщиеНастройкиУзловИнформационныхБаз/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ОбщиеНастройкиУзловИнформационныхБаз/ManagerModule.bsl @@ -17,8 +17,7 @@ СтруктураЗаписи.Вставить("УзелИнформационнойБазы", УзелИнформационнойБазы); СтруктураЗаписи.Вставить("НачальнаяВыгрузкаДанных", Истина); СтруктураЗаписи.Вставить("НомерОтправленногоНачальнаяВыгрузкаДанных", - ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелИнформационнойБазы, "НомерОтправленного") + 1 - ); + ОбщегоНазначения.ЗначениеРеквизитаОбъекта(УзелИнформационнойБазы, "НомерОтправленного") + 1); ОбновитьЗапись(СтруктураЗаписи); @@ -220,6 +219,70 @@ // +Процедура УстановитьПризнакОтправкиДанных(Знач Получатель) Экспорт + + Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат; + КонецЕсли; + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("УзелИнформационнойБазы", Получатель); + СтруктураЗаписи.Вставить("ВыполнитьОтправкуДанных", Истина); + + ОбновитьЗапись(СтруктураЗаписи); + +КонецПроцедуры + +Процедура СнятьПризнакОтправкиДанных(Знач Получатель) Экспорт + + Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат; + КонецЕсли; + + Если ВыполнитьОтправкуДанных(Получатель) Тогда + + СтруктураЗаписи = Новый Структура; + СтруктураЗаписи.Вставить("УзелИнформационнойБазы", Получатель); + СтруктураЗаписи.Вставить("ВыполнитьОтправкуДанных", Ложь); + + ОбновитьЗапись(СтруктураЗаписи); + + КонецЕсли; + +КонецПроцедуры + +Функция ВыполнитьОтправкуДанных(Знач Получатель) Экспорт + + Если Не ОбщегоНазначенияПовтИсп.ДоступноИспользованиеРазделенныхДанных() Тогда + Возврат Ложь; + КонецЕсли; + + ТекстЗапроса = + "ВЫБРАТЬ + | ОбщиеНастройкиУзловИнформационныхБаз.ВыполнитьОтправкуДанных КАК ВыполнитьОтправкуДанных + |ИЗ + | РегистрСведений.ОбщиеНастройкиУзловИнформационныхБаз КАК ОбщиеНастройкиУзловИнформационныхБаз + |ГДЕ + | ОбщиеНастройкиУзловИнформационныхБаз.УзелИнформационнойБазы = &Получатель"; + + Запрос = Новый Запрос; + Запрос.УстановитьПараметр("Получатель", Получатель); + Запрос.Текст = ТекстЗапроса; + + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + Возврат Ложь; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Выборка.Следующий(); + + Возврат Выборка.ВыполнитьОтправкуДанных = Истина; +КонецФункции + +// + // Процедура обновляет запись в регистре по переданным значениям структуры Процедура ОбновитьЗапись(СтруктураЗаписи) Экспорт @@ -227,4 +290,4 @@ КонецПроцедуры -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/InformationRegisters/ОбщиеНастройкиУзловИнформационныхБаз/ОбщиеНастройкиУзловИнформационныхБаз.mdo b/SSL/src/InformationRegisters/ОбщиеНастройкиУзловИнформационныхБаз/ОбщиеНастройкиУзловИнформационныхБаз.mdo index 8e1df0f05..0f0427ee9 100644 --- a/SSL/src/InformationRegisters/ОбщиеНастройкиУзловИнформационныхБаз/ОбщиеНастройкиУзловИнформационныхБаз.mdo +++ b/SSL/src/InformationRegisters/ОбщиеНастройкиУзловИнформационныхБаз/ОбщиеНастройкиУзловИнформационныхБаз.mdo @@ -110,6 +110,25 @@ Use + + ВыполнитьОтправкуДанных + + ru + Выполнить отправку данных + + + Boolean + + + ru + Признак того, что при очередном интерактивном сеансе синхронизации данных следует выполнить сначала отправку данных, а затем получение и отправку. Используется при получении изменений метаданных главного узла через веб-сервис. + + + + Use + Use + + НомерОтправленного diff --git a/SSL/src/InformationRegisters/ПодпискиПолучателей/Forms/НастройкаПодписокЭтойКонечнойТочки/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/ПодпискиПолучателей/Forms/НастройкаПодписокЭтойКонечнойТочки/Attributes/Список/ExtInfo/ListSettings.dcss index da2c79d72..91027f589 100644 --- a/SSL/src/InformationRegisters/ПодпискиПолучателей/Forms/НастройкаПодписокЭтойКонечнойТочки/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/InformationRegisters/ПодпискиПолучателей/Forms/НастройкаПодписокЭтойКонечнойТочки/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ - - Получатель - Equal - Inaccessible - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/InformationRegisters/ПодпискиПолучателей/Forms/НастройкаПодписокЭтойКонечнойТочки/Module.bsl b/SSL/src/InformationRegisters/ПодпискиПолучателей/Forms/НастройкаПодписокЭтойКонечнойТочки/Module.bsl index b04e5e199..912ae7884 100644 --- a/SSL/src/InformationRegisters/ПодпискиПолучателей/Forms/НастройкаПодписокЭтойКонечнойТочки/Module.bsl +++ b/SSL/src/InformationRegisters/ПодпискиПолучателей/Forms/НастройкаПодписокЭтойКонечнойТочки/Module.bsl @@ -8,6 +8,7 @@ Возврат; КонецЕсли; - Параметры.Отбор.Вставить("Получатель", ОбменСообщениямиВнутренний.ЭтотУзел()); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(Список, + "Получатель", ОбменСообщениямиВнутренний.ЭтотУзел() ); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ВыбораРежимаОткрытияМакета/Help/ru.html b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ВыбораРежимаОткрытияМакета/Help/ru.html index 27950d819..e0efd9ffc 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ВыбораРежимаОткрытияМакета/Help/ru.html +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ВыбораРежимаОткрытияМакета/Help/ru.html @@ -1,4 +1,4 @@ - +

                Для открытия макета используйте:

                • клавишу Enter 
                • двойной щелчок левой кнопкой мыши diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ВыбораРежимаОткрытияМакета/Module.bsl b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ВыбораРежимаОткрытияМакета/Module.bsl index 9a3714aa2..96a2a7e3e 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ВыбораРежимаОткрытияМакета/Module.bsl +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ВыбораРежимаОткрытияМакета/Module.bsl @@ -10,8 +10,7 @@ Значение = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "НастройкаОткрытияМакетов", - "СпрашиватьРежимОткрытияМакета" - ); + "СпрашиватьРежимОткрытияМакета"); Если Значение = Неопределено Тогда БольшеНеСпрашивать = Ложь; @@ -21,8 +20,7 @@ Значение = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить( "НастройкаОткрытияМакетов", - "РежимОткрытияМакетаПросмотр" - ); + "РежимОткрытияМакетаПросмотр"); Если Значение = Неопределено Тогда КакОткрывать = 0; @@ -47,7 +45,7 @@ СохранитьНастройкиРежимаОткрытияМакета(СпрашиватьРежимОткрытияМакета, РежимОткрытияМакетаПросмотр); - Закрыть(Новый Структура("БольшеНеСпрашивать, РежимОткрытияПросмотр", + ОповеститьОВыборе(Новый Структура("БольшеНеСпрашивать, РежимОткрытияПросмотр", БольшеНеСпрашивать, РежимОткрытияМакетаПросмотр) ); @@ -62,13 +60,11 @@ ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( "НастройкаОткрытияМакетов", "СпрашиватьРежимОткрытияМакета", - СпрашиватьРежимОткрытияМакета - ); + СпрашиватьРежимОткрытияМакета); ОбщегоНазначения.ХранилищеОбщихНастроекСохранить( "НастройкаОткрытияМакетов", "РежимОткрытияМакетаПросмотр", - РежимОткрытияМакетаПросмотр - ); + РежимОткрытияМакетаПросмотр); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Form.form b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Form.form index 05dd116c7..bf2aef8a0 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Form.form +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Form.form @@ -155,6 +155,10 @@ Right + + ChoiceProcessing + ОбработкаВыбора + OnCreateAtServer ПриСозданииНаСервере diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Module.bsl b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Module.bsl index 7e6b02bc8..490e74e46 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Module.bsl +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/ДиалогПовтораПечати/Module.bsl @@ -13,17 +13,26 @@ КонецПроцедуры +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("РегистрСведений.ПользовательскиеМакетыПечати.Форма.НастройкаКаталогаФайловПечати") Тогда + + Если ТипЗнч(ВыбранноеЗначение) = Тип("Строка") Тогда + КаталогДляСохраненияДанныхПечати = ВыбранноеЗначение; + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ &НаКлиенте Процедура ИзменитьРабочийКаталогПечати(Команда) - Результат = ОткрытьФормуМодально("РегистрСведений.ПользовательскиеМакетыПечати.Форма.НастройкаКаталогаФайловПечати"); - - Если ТипЗнч(Результат) = Тип("Строка") Тогда - КаталогДляСохраненияДанныхПечати = Результат; - КонецЕсли; + ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.НастройкаКаталогаФайловПечати", , ЭтаФорма); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form index 57861335f..e4dcf0522 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Form.form @@ -777,10 +777,18 @@ Left true + + ChoiceProcessing + ОбработкаВыбора + NotificationProcessing ОбработкаОповещения + + BeforeClose + ПередЗакрытием + OnCreateAtServer ПриСозданииНаСервере diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Help/ru.html b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Help/ru.html new file mode 100644 index 000000000..0311007cb --- /dev/null +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Help/ru.html @@ -0,0 +1,4 @@ + +

                  В списке перечислены макеты (бланки) всех печатных форм, имеющихся в программе. Макеты сгруппированы по объектам программы, к которым они относятся (эти объекты указаны в колонке Владелец макета).

                  +

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

                  +

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

                  \ No newline at end of file diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Module.bsl b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Module.bsl index c4f16a842..9050135f9 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Module.bsl +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/МакетыПечатныхФорм/Module.bsl @@ -1,3 +1,6 @@ +&НаКлиенте +Перем КонтекстВыбора; + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ @@ -20,15 +23,58 @@ &НаКлиенте Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) + Если ИмяСобытия = "Запись_ПользовательскиеМакетыПечати" Тогда - НайденныеМакеты = МакетыПечатныхФорм.НайтиСтроки(Новый Структура("ИмяОбъектаМетаданныхМакета", Параметр.ИмяОбъектаМетаданныхМакета)); - Для Каждого Макет Из НайденныеМакеты Цикл - Макет.Изменен = Истина; - Макет.ИспользуетсяИзмененный = Истина; - УстановитьКартинкуИспользования(Макет); - КонецЦикла; - УстановитьДоступностьКнопокКоманднойПанели(); + ОбновитьОтображениеМакета(Параметр.ИмяОбъектаМетаданныхМакета); + ИначеЕсли ИмяСобытия = "Запись_ТабличныйДокумент" И Источник.ВладелецФормы = ЭтаФорма Тогда + Макет = Параметр.ТабличныйДокумент; + АдресМакетаВоВременномХранилище = ПоместитьВоВременноеХранилище(Макет); + ЗаписатьМакет(Параметр.ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище); + ОбновитьОтображениеМакета(Параметр.ИмяОбъектаМетаданныхМакета) КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) + + Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("РегистрСведений.ПользовательскиеМакетыПечати.Форма.ВыбораРежимаОткрытияМакета") Тогда + + Если ТипЗнч(ВыбранноеЗначение) <> Тип("Структура") Тогда + Возврат; + КонецЕсли; + + РежимОткрытияМакетаПросмотр = ВыбранноеЗначение.РежимОткрытияПросмотр; + СпрашиватьРежимОткрытияМакета = НЕ ВыбранноеЗначение.БольшеНеСпрашивать; + + Если КонтекстВыбора = "ОткрытьМакетПечатнойФормы" Тогда + + Если ВыбранноеЗначение.БольшеНеСпрашивать Тогда + СохранитьНастройкиРежимаОткрытияМакета(СпрашиватьРежимОткрытияМакета, РежимОткрытияМакетаПросмотр); + КонецЕсли; + + Если РежимОткрытияМакетаПросмотр Тогда + ОткрытьМакетПечатнойФормыДляПросмотра(); + Иначе + ОткрытьМакетПечатнойФормыДляРедактирования(); + КонецЕсли; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + +&НаКлиенте +Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) + + Параметр = Новый Структура("Отказ", Ложь); + Оповестить("ЗакрытиеФормыВладельца", Параметр, ЭтаФорма); + + Если Параметр.Отказ Тогда + Отказ = Истина; + КонецЕсли; + КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -70,12 +116,8 @@ &НаКлиенте Процедура ЗадатьДействиеПриВыбореМакетаПечатнойФормы(Команда) - Результат = ОткрытьФормуМодально("РегистрСведений.ПользовательскиеМакетыПечати.Форма.ВыбораРежимаОткрытияМакета"); - - Если ТипЗнч(Результат) = Тип("Структура") Тогда - РежимОткрытияМакетаПросмотр = Результат.РежимОткрытияПросмотр; - СпрашиватьРежимОткрытияМакета = НЕ Результат.БольшеНеСпрашивать; - КонецЕсли; + КонтекстВыбора = "ЗадатьДействиеПриВыбореМакетаПечатнойФормы"; + ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.ВыбораРежимаОткрытияМакета", , ЭтаФорма); КонецПроцедуры @@ -247,17 +289,9 @@ Процедура ОткрытьМакетПечатнойФормы() Если СпрашиватьРежимОткрытияМакета Тогда - Результат = ОткрытьФормуМодально("РегистрСведений.ПользовательскиеМакетыПечати.Форма.ВыбораРежимаОткрытияМакета"); - - Если ТипЗнч(Результат) = Тип("Структура") Тогда - РежимОткрытияМакетаПросмотр = Результат.РежимОткрытияПросмотр; - СпрашиватьРежимОткрытияМакета = НЕ Результат.БольшеНеСпрашивать; - Если Результат.БольшеНеСпрашивать Тогда - СохранитьНастройкиРежимаОткрытияМакета(СпрашиватьРежимОткрытияМакета, РежимОткрытияМакетаПросмотр); - КонецЕсли; - Иначе - Возврат; - КонецЕсли; + КонтекстВыбора = "ОткрытьМакетПечатнойФормы"; + ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.ВыбораРежимаОткрытияМакета", , ЭтаФорма); + Возврат; КонецЕсли; Если РежимОткрытияМакетаПросмотр Тогда @@ -281,6 +315,14 @@ ПараметрыОткрытия.Вставить("ЭтоВебКлиент", Истина); #КонецЕсли + #Если Не ВебКлиент Тогда + Если ТекущиеДанные.ТипМакета = "MXL" Тогда + ПараметрыОткрытия.Вставить("ИмяДокумента", ТекущиеДанные.ПредставлениеМакета); + ОткрытьФорму("ОбщаяФорма.РедактированиеТабличногоДокумента", ПараметрыОткрытия, ЭтаФорма); + Возврат; + КонецЕсли; + #КонецЕсли + ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.РедактированиеМакета", ПараметрыОткрытия, ЭтаФорма); КонецПроцедуры @@ -297,6 +339,15 @@ ПараметрыОткрытия.Вставить("ЭтоВебКлиент", Истина); #КонецЕсли + #Если Не ВебКлиент Тогда + Если ТекущиеДанные.ТипМакета = "MXL" Тогда + ПараметрыОткрытия.Вставить("ИмяДокумента", ТекущиеДанные.ПредставлениеМакета); + ПараметрыОткрытия.Вставить("Редактирование", Истина); + ОткрытьФорму("ОбщаяФорма.РедактированиеТабличногоДокумента", ПараметрыОткрытия, ЭтаФорма); + Возврат; + КонецЕсли; + #КонецЕсли + ОткрытьФорму("РегистрСведений.ПользовательскиеМакетыПечати.Форма.РедактированиеМакета", ПараметрыОткрытия, ЭтаФорма); КонецПроцедуры @@ -393,6 +444,25 @@ КонецПроцедуры +&НаСервереБезКонтекста +Процедура ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище) + УправлениеПечатью.ЗаписатьМакет(ИмяОбъектаМетаданныхМакета, АдресМакетаВоВременномХранилище); +КонецПроцедуры + +&НаКлиенте +Процедура ОбновитьОтображениеМакета(ИмяОбъектаМетаданныхМакета); + + НайденныеМакеты = МакетыПечатныхФорм.НайтиСтроки(Новый Структура("ИмяОбъектаМетаданныхМакета", ИмяОбъектаМетаданныхМакета)); + Для Каждого Макет Из НайденныеМакеты Цикл + Макет.Изменен = Истина; + Макет.ИспользуетсяИзмененный = Истина; + УстановитьКартинкуИспользования(Макет); + КонецЦикла; + + УстановитьДоступностьКнопокКоманднойПанели(); + +КонецПроцедуры + // Общие &НаКлиенте diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/НастройкаКаталогаФайловПечати/Module.bsl b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/НастройкаКаталогаФайловПечати/Module.bsl index 794fc0475..380027318 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/НастройкаКаталогаФайловПечати/Module.bsl +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/НастройкаКаталогаФайловПечати/Module.bsl @@ -40,6 +40,6 @@ Процедура ОК(Команда) УправлениеПечатьюВызовСервера.СохранитьЛокальныйКаталогФайловПечати(КаталогДляСохраненияДанныхПечати); - Закрыть(КаталогДляСохраненияДанныхПечати); + ОповеститьОВыборе(КаталогДляСохраненияДанныхПечати); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Help/ru.html b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Help/ru.html index d3a4b0398..279b9e472 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Help/ru.html +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Help/ru.html @@ -1,4 +1,4 @@ - +

                  Редактирование файла макета

                  diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Module.bsl b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Module.bsl index 7167ec777..c288e343e 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Module.bsl +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/Forms/РедактированиеМакета/Module.bsl @@ -72,9 +72,7 @@ ИмяСобытия = "Запись_ПользовательскиеМакетыПечати"; КонецЕсли; - Источник = ?(ЭтаФорма.ВладелецФормы <> Неопределено, ЭтаФорма.ВладелецФормы.УникальныйИдентификатор, Неопределено); - - Оповестить(ИмяСобытия, Новый Структура("ИмяОбъектаМетаданныхМакета", ИмяОбъектаМетаданныхМакета), Источник); + Оповестить(ИмяСобытия, Новый Структура("ИмяОбъектаМетаданныхМакета", ИмяОбъектаМетаданныхМакета), ЭтаФорма); КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ПользовательскиеМакетыПечати.mdo b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ПользовательскиеМакетыПечати.mdo index 329e0d730..f7dfffcff 100644 --- a/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ПользовательскиеМакетыПечати.mdo +++ b/SSL/src/InformationRegisters/ПользовательскиеМакетыПечати/ПользовательскиеМакетыПечати.mdo @@ -171,6 +171,11 @@ ru Макеты печатных форм + + + ru + + PersonalComputer MobileDevice diff --git a/SSL/src/InformationRegisters/ПраваРолей/Forms/ФормаСписка/Module.bsl b/SSL/src/InformationRegisters/ПраваРолей/Forms/ФормаСписка/Module.bsl index fcc453e55..0d06ce288 100644 --- a/SSL/src/InformationRegisters/ПраваРолей/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/InformationRegisters/ПраваРолей/Forms/ФормаСписка/Module.bsl @@ -15,12 +15,7 @@ Список.Параметры.УстановитьЗначениеПараметра("ОбъектМетаданных", Параметры.ОбъектМетаданных); Если ЗначениеЗаполнено(Параметры.ОбъектМетаданных) Тогда - Элементы.ОбъектМетаданных.Видимость = Ложь; - Автозаголовок = Ложь; - - Заголовок = УправлениеДоступомСлужебный.ЗаголовокПодчиненнойФормы( - НСтр("ru = 'Права ролей на объект метаданных: ""%1"" (%2)'"), Параметры.ОбъектМетаданных); КонецЕсли; КонецПроцедуры diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Help/ru.html b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Help/ru.html index a8bcb6f5f..b78a763c9 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Help/ru.html +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Help/ru.html @@ -1,4 +1,4 @@ - +

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

                  Для замены типовых правил конвертации объектов правилами из внешнего файла необходимо:

                  • Установить значение переключателя в положение Правила из файла или Режим отладки и по кнопке Загрузить правила выбрать файл правил на компьютере или в сетевой папке. diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl index 9735bfc02..1f086dc8a 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаКонвертацииОбъектов/Module.bsl @@ -165,8 +165,7 @@ Если Отказ Тогда НСтрока = НСтр("ru = 'В процессе загрузки правил были обнаружены ошибки. - |Перейти в журнал регистрации?'" - ); + |Перейти в журнал регистрации?'"); Ответ = Вопрос(НСтрока, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Нет); Если Ответ = КодВозвратаДиалога.Да Тогда @@ -290,8 +289,7 @@ ГруппаИсточникиПравил.ТекущаяСтраница = ?(ИсточникПравил = 0, ГруппаИсточникиПравил.ПодчиненныеЭлементы.ИсточникМакетКонфигурации, - ГруппаИсточникиПравил.ПодчиненныеЭлементы.ИсточникФайл - ); + ГруппаИсточникиПравил.ПодчиненныеЭлементы.ИсточникФайл); Элементы.ВнешняяОбработкаДляОтладкиВыгрузки.Доступность = Запись.РежимОтладкиВыгрузки; Элементы.ВнешняяОбработкаДляОтладкиЗагрузки.Доступность = Запись.РежимОтладкиЗагрузки; @@ -395,8 +393,7 @@ ИнформацияОПравилах = НСтр("ru = 'Использование правил, загруженных из файла, |может привести к ошибкам при переходе на новую версию программы. | - |[ИнформацияОПравилах]'" - ); + |[ИнформацияОПравилах]'"); ИнформацияОПравилах = СтрЗаменить(ИнформацияОПравилах, "[ИнформацияОПравилах]", Запись.ИнформацияОПравилах); diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Help/ru.html b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Help/ru.html index 81ad0ca79..441fb2c2e 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Help/ru.html +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Help/ru.html @@ -1,4 +1,4 @@ - +

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

                    • diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Module.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Module.bsl index 3061ee702..733195369 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Module.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/Forms/ПравилаРегистрацииОбъектов/Module.bsl @@ -104,15 +104,14 @@ Если Отказ Тогда НСтрока = НСтр("ru = 'В процессе загрузки правил были обнаружены ошибки. - |Перейти в журнал регистрации?'" - ); + |Перейти в журнал регистрации?'"); Ответ = Вопрос(НСтрока, РежимДиалогаВопрос.ДаНет, ,КодВозвратаДиалога.Нет); Если Ответ = КодВозвратаДиалога.Да Тогда Отбор = Новый Структура; Отбор.Вставить("СобытиеЖурналаРегистрации", СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными); - ОткрытьФормуМодально("Обработка.ЖурналРегистрации.Форма", Отбор, ЭтаФорма); + ОткрытьФорму("Обработка.ЖурналРегистрации.Форма", Отбор, ЭтаФорма); КонецЕсли; @@ -229,8 +228,7 @@ ГруппаИсточникиПравил.ТекущаяСтраница = ?(ИсточникПравил = 0, ГруппаИсточникиПравил.ПодчиненныеЭлементы.ИсточникМакетКонфигурации, - ГруппаИсточникиПравил.ПодчиненныеЭлементы.ИсточникФайл - ); + ГруппаИсточникиПравил.ПодчиненныеЭлементы.ИсточникФайл); КонецПроцедуры @@ -328,8 +326,7 @@ ИнформацияОПравилах = НСтр("ru = 'Использование правил, загруженных из файла, |может привести к ошибкам при переходе на новую версию программы. | - |[ИнформацияОПравилах]'" - ); + |[ИнформацияОПравилах]'"); ИнформацияОПравилах = СтрЗаменить(ИнформацияОПравилах, "[ИнформацияОПравилах]", Запись.ИнформацияОПравилах); diff --git a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl index aa6940adf..b85a77677 100644 --- a/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ПравилаДляОбменаДанными/ManagerModule.bsl @@ -117,6 +117,7 @@ КонвертацияОбъектовИнформационныхБаз = Обработки.КонвертацияОбъектовИнформационныхБаз.Создать(); // свойства обработки + КонвертацияОбъектовИнформационныхБаз.РежимОбмена = "Выгрузка"; КонвертацияОбъектовИнформационныхБаз.ИмяПланаОбменаВРО = Запись.ИмяПланаОбмена; КонвертацияОбъектовИнформационныхБаз.КлючСообщенияЖурналаРегистрации = ОбменДаннымиСервер.СобытиеЖурналаРегистрацииЗагрузкаПравилДляОбменаДанными(); diff --git a/SSL/src/InformationRegisters/ПредметыПапкиВзаимодействий/ПредметыПапкиВзаимодействий.mdo b/SSL/src/InformationRegisters/ПредметыПапкиВзаимодействий/ПредметыПапкиВзаимодействий.mdo index 62fb3886f..f26b29afb 100644 --- a/SSL/src/InformationRegisters/ПредметыПапкиВзаимодействий/ПредметыПапкиВзаимодействий.mdo +++ b/SSL/src/InformationRegisters/ПредметыПапкиВзаимодействий/ПредметыПапкиВзаимодействий.mdo @@ -63,6 +63,7 @@ DocumentRef.ЭлектронноеПисьмоВходящее DocumentRef.ТелефонныйЗвонок DocumentRef.Встреча + DocumentRef.СообщениеSMS ru @@ -108,6 +109,7 @@ DocumentRef.ТелефонныйЗвонок DocumentRef.Встреча String + DocumentRef.СообщениеSMS 10 diff --git a/SSL/src/InformationRegisters/ПрисоединенныеФайлы/ПрисоединенныеФайлы.mdo b/SSL/src/InformationRegisters/ПрисоединенныеФайлы/ПрисоединенныеФайлы.mdo index 78d14fdf1..0fbb5ab2c 100644 --- a/SSL/src/InformationRegisters/ПрисоединенныеФайлы/ПрисоединенныеФайлы.mdo +++ b/SSL/src/InformationRegisters/ПрисоединенныеФайлы/ПрисоединенныеФайлы.mdo @@ -78,6 +78,7 @@ CatalogRef.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы CatalogRef.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы CatalogRef.ЗапланированноеВзаимодействиеПрисоединенныеФайлы + CatalogRef.СообщениеSMSПрисоединенныеФайлы CatalogRef.ВстречаПрисоединенныеФайлы CatalogRef.ТелефонныйЗвонокПрисоединенныеФайлы diff --git a/SSL/src/InformationRegisters/УдалитьКурсыВалютПоКлассификатору/УдалитьКурсыВалютПоКлассификатору.mdo b/SSL/src/InformationRegisters/ПросмотренныеДанныеИнформационногоЦентра/ПросмотренныеДанныеИнформационногоЦентра.mdo similarity index 50% rename from SSL/src/InformationRegisters/УдалитьКурсыВалютПоКлассификатору/УдалитьКурсыВалютПоКлассификатору.mdo rename to SSL/src/InformationRegisters/ПросмотренныеДанныеИнформационногоЦентра/ПросмотренныеДанныеИнформационногоЦентра.mdo index 0625ff8ad..40f7c8a95 100644 --- a/SSL/src/InformationRegisters/УдалитьКурсыВалютПоКлассификатору/УдалитьКурсыВалютПоКлассификатору.mdo +++ b/SSL/src/InformationRegisters/ПросмотренныеДанныеИнформационногоЦентра/ПросмотренныеДанныеИнформационногоЦентра.mdo @@ -1,19 +1,20 @@ - + - - - - - - - + + + + + + + - УдалитьКурсыВалютПоКлассификатору + ПросмотренныеДанныеИнформационногоЦентра ru - (Не используется) Курсы валют по классификатору + Просмотренные данные информационного центра + true InDialog Use @@ -48,73 +49,63 @@ - Day - true Managed - - ru - Курсы для валют - - - Курс + + Просмотрены ru - Курс + Просмотрены - Number - - 15 - 4 - true - + Boolean + + ru + Признак просмотра уведомлений + Use Use - - Кратность + + Пользователь ru - Кратность + Пользователь - Number - - 10 - true - + CatalogRef.Пользователи ru - Кратность валюты + Пользователь приложения - ShowError + Index Use Use - true - - 1 - - - - Валюта + + true + + + ДанныеИнформационногоЦентра ru - Валюта + Данные информационного центра - CatalogRef.УдалитьКлассификаторВалют + CatalogRef.ОбщиеДанныеИнформационногоЦентра + + ru + Уведомления пользователю + - ShowError - true + Index Use Use diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/Коллизии/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/Коллизии/ExtInfo/ListSettings.dcss index 08dd374b0..d32a986ce 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/Коллизии/ExtInfo/ListSettings.dcss +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/Коллизии/ExtInfo/ListSettings.dcss @@ -1,45 +1,14 @@ - - false - АвторДругойВерсии - Equal - Inaccessible - - - false - AndGroup - - ДатаДругойВерсии - GreaterOrEqual - - Custom - 0001-01-01T00:00:00 - - Inaccessible - - - ДатаДругойВерсии - LessOrEqual - - Custom - 0001-01-01T00:00:00 - - Inaccessible - - Inaccessible - - - ВерсияПроигнорирована - Equal - false - Inaccessible - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb + + Дата + Desc + Normal 88619765-ccb3-46c6-ac52-38e9c992ebd4 @@ -62,52 +31,6 @@ - - АвторЭтойВерсии - - - ДатаЭтойВерсии - - - НомерЭтойВерсии - - - ЭтаВерсияПринята - - - - - AndGroup - - ЭтаВерсияПринята - Equal - false - - - ВерсияПроигнорирована - Equal - false - - - - - - ЦветТекста - style:НепринятаяВерсия - - - - - - - АвторДругойВерсии - - - ДатаДругойВерсии - - - НомерДругойВерсии - ДругаяВерсияПринята @@ -134,25 +57,6 @@ - - - - ЭтаВерсияПринята - - - - - НомерЭтойВерсии - NotFilled - - - - - Текст - Удалена - - - diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НезаполненныеРеквизиты/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НезаполненныеРеквизиты/ExtInfo/ListSettings.dcss index dbf27ac72..e05cbc45e 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НезаполненныеРеквизиты/ExtInfo/ListSettings.dcss +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НезаполненныеРеквизиты/ExtInfo/ListSettings.dcss @@ -1,48 +1,6 @@ - - Пропущена - Equal - false - Inaccessible - - - false - AndGroup - - ДатаВозникновения - GreaterOrEqual - - Custom - 0001-01-01T00:00:00 - - Inaccessible - - - ДатаВозникновения - LessOrEqual - - Custom - 0001-01-01T00:00:00 - - Inaccessible - - Inaccessible - - - false - УзелИнформационнойБазы - Equal - Inaccessible - - - false - Причина - Contains - - Inaccessible - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НепринятыеПоДате/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НепринятыеПоДате/ExtInfo/ListSettings.dcss index ff8a6d165..8ac7d7dfb 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НепринятыеПоДате/ExtInfo/ListSettings.dcss +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НепринятыеПоДате/ExtInfo/ListSettings.dcss @@ -1,52 +1,14 @@ - - false - АвторДругойВерсии - Equal - Inaccessible - - - false - AndGroup - - ДатаДругойВерсии - GreaterOrEqual - - Custom - 0001-01-01T00:00:00 - - Inaccessible - - - ДатаДругойВерсии - LessOrEqual - - Custom - 0001-01-01T00:00:00 - - Inaccessible - - Inaccessible - - - false - ПричинаЗапрета - Equal - - Inaccessible - - - ВерсияПроигнорирована - Equal - false - Inaccessible - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb + + Дата + Desc + Normal 88619765-ccb3-46c6-ac52-38e9c992ebd4 @@ -83,7 +45,7 @@ Текст - Новый объект + Отсутствуют diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НепроведенныеДокументы/ExtInfo/ListSettings.dcss b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НепроведенныеДокументы/ExtInfo/ListSettings.dcss index dbf27ac72..e05cbc45e 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НепроведенныеДокументы/ExtInfo/ListSettings.dcss +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Attributes/НепроведенныеДокументы/ExtInfo/ListSettings.dcss @@ -1,48 +1,6 @@ - - Пропущена - Equal - false - Inaccessible - - - false - AndGroup - - ДатаВозникновения - GreaterOrEqual - - Custom - 0001-01-01T00:00:00 - - Inaccessible - - - ДатаВозникновения - LessOrEqual - - Custom - 0001-01-01T00:00:00 - - Inaccessible - - Inaccessible - - - false - УзелИнформационнойБазы - Equal - Inaccessible - - - false - Причина - Contains - - Inaccessible - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Form.form b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Form.form index 7208d67a3..097f0d48d 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Form.form +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Form.form @@ -2,7 +2,7 @@ <key>ru</key> - <value>Результаты синхронизации данных, требующие внимания</value> + <value>Предупреждения при синхронизации данных</value> ГруппаОтборов @@ -10,10 +10,6 @@ Период 34 - - <key>ru</key> - <value>Дата</value> - true true @@ -28,7 +24,7 @@ ПериодРасширеннаяПодсказка - 331 + 365 Label true true @@ -75,7 +71,7 @@ УзелИнформационнойБазыРасширеннаяПодсказка - 333 + 367 Label true true @@ -140,7 +136,7 @@ СтрокаПоискаРасширеннаяПодсказка - 335 + 369 Label true true @@ -183,9 +179,10 @@ ru Группа отборов + true ГруппаОтборовРасширеннаяПодсказка - 330 + 364 Label true true @@ -223,7 +220,7 @@ ДекорацияДокументыРасширеннаяПодсказка - 339 + 373 Label true true @@ -276,7 +273,7 @@ None НепроведенныеДокументыПометкаУдаленияРасширеннаяПодсказка - 368 + 406 Label true true @@ -329,7 +326,7 @@ НепроведенныеДокументыТипСтрокойРасширеннаяПодсказка - 370 + 408 Label true true @@ -367,7 +364,7 @@ НепроведенныеДокументыГруппаКартинкиРасширеннаяПодсказка - 367 + 405 Label true true @@ -397,7 +394,7 @@ НепроведенныеДокументыСсылкаРасширеннаяПодсказка - 372 + 410 Label true true @@ -441,7 +438,7 @@ НепроведенныеДокументыНомерДокументаРасширеннаяПодсказка - 374 + 412 Label true true @@ -481,7 +478,7 @@ НепроведенныеДокументыДатаДокументаРасширеннаяПодсказка - 376 + 414 Label true true @@ -521,7 +518,7 @@ НепроведенныеДокументыПричинаРасширеннаяПодсказка - 378 + 416 Label true true @@ -565,7 +562,7 @@ НепроведенныеДокументыДатаВозникновенияРасширеннаяПодсказка - 380 + 418 Label true true @@ -609,7 +606,7 @@ НепроведенныеДокументыУзелИнформационнойБазыРасширеннаяПодсказка - 382 + 420 Label true true @@ -645,7 +642,7 @@ НепроведенныеДокументыИзменитьВыделенныеДокументыРасширеннаяПодсказка - 347 + 381 Label true true @@ -671,7 +668,7 @@ НепроведенныеДокументыПровестиДокументРасширеннаяПодсказка - 348 + 382 Label true true @@ -697,7 +694,7 @@ НепроведенныеДокументыИзменитьРасширеннаяПодсказка - 349 + 383 Label true true @@ -727,7 +724,7 @@ НепроведенныеДокументыИгнорироватьДокументРасширеннаяПодсказка - 351 + 385 Label true true @@ -753,7 +750,7 @@ НепроведенныеДокументыНеИгнорироватьДокументРасширеннаяПодсказка - 352 + 386 Label true true @@ -770,6 +767,33 @@ Auto InAdditionalSubmenu + + НепроведенныеДокументыПоказыватьПроигнорированныеНепроведенные + 340 + true + true + + true + + + НепроведенныеДокументыПоказыватьПроигнорированныеНепроведенныеРасширеннаяПодсказка + 387 + Label + true + true + + Left + + + Form.Command.ПоказыватьПроигнорированныеНепроведенные + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + true true @@ -785,7 +809,7 @@ ГруппаИгнорированияДокументовРасширеннаяПодсказка - 350 + 384 Label true true @@ -795,6 +819,32 @@ + + НепроведенныеДокументыОбновить + 357 + true + true + + true + + + НепроведенныеДокументыОбновитьРасширеннаяПодсказка + 388 + Label + true + true + + Left + + + Form.Command.Обновить + Normal + Auto + true + true + UserCmds + Auto + НепроведенныеДокументыНайти 228 @@ -805,7 +855,7 @@ НепроведенныеДокументыНайтиРасширеннаяПодсказка - 353 + 389 Label true true @@ -831,7 +881,7 @@ НепроведенныеДокументыОтменитьПоискРасширеннаяПодсказка - 354 + 390 Label true true @@ -857,7 +907,7 @@ НепроведенныеДокументыНастройкаСпискаРасширеннаяПодсказка - 355 + 391 Label true true @@ -884,7 +934,7 @@ НепроведенныеДокументыВывестиСписокРасширеннаяПодсказка - 356 + 392 Label true true @@ -900,6 +950,59 @@ UserCmds Auto + + НепроведенныеДокументыИзменитьФорму + 344 + true + true + + true + + + НепроведенныеДокументыИзменитьФормуРасширеннаяПодсказка + 393 + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Normal + Auto + true + true + UserCmds + Auto + + + НепроведенныеДокументыСправка + 360 + true + true + + true + + + НепроведенныеДокументыСправкаРасширеннаяПодсказка + 394 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Left @@ -912,10 +1015,10 @@ НепроведенныеДокументыСтрокаПоиска - 358 + 396 НепроведенныеДокументыСтрокаПоискаРасширеннаяПодсказка - 360 + 398 Label true true @@ -925,7 +1028,7 @@ НепроведенныеДокументыСтрокаПоискаКонтекстноеМеню - 359 + 397 true НепроведенныеДокументы @@ -935,10 +1038,10 @@ НепроведенныеДокументыСостояниеПросмотра - 361 + 399 НепроведенныеДокументыСостояниеПросмотраРасширеннаяПодсказка - 363 + 401 Label true true @@ -948,7 +1051,7 @@ НепроведенныеДокументыСостояниеПросмотраКонтекстноеМеню - 362 + 400 true ViewStatusAddition @@ -959,10 +1062,10 @@ НепроведенныеДокументыУправлениеПоиском - 364 + 402 НепроведенныеДокументыУправлениеПоискомРасширеннаяПодсказка - 366 + 404 Label true true @@ -972,7 +1075,7 @@ НепроведенныеДокументыУправлениеПоискомКонтекстноеМеню - 365 + 403 true SearchControlAddition @@ -983,7 +1086,7 @@ НепроведенныеДокументыРасширеннаяПодсказка - 357 + 395 Label true true @@ -1004,7 +1107,7 @@ НепроведенныеДокументыКонтекстноеМенюИзменитьВыделенныеДокументыРасширеннаяПодсказка - 340 + 374 Label true true @@ -1030,7 +1133,7 @@ НепроведенныеДокументыКонтекстноеМенюПровестиДокументРасширеннаяПодсказка - 341 + 375 Label true true @@ -1056,7 +1159,7 @@ НепроведенныеДокументыКонтекстноеМенюИзменитьРасширеннаяПодсказка - 342 + 376 Label true true @@ -1085,7 +1188,7 @@ НепроведенныеДокументыКонтекстноеМенюИгнорироватьДокументРасширеннаяПодсказка - 344 + 378 Label true true @@ -1111,7 +1214,7 @@ НепроведенныеДокументыКонтекстноеМенюНеИгнорироватьДокументРасширеннаяПодсказка - 345 + 379 Label true true @@ -1142,7 +1245,7 @@ НепроведенныеДокументыКонтекстноеМенюГруппаИгнорированияРасширеннаяПодсказка - 343 + 377 Label true true @@ -1162,7 +1265,7 @@ НепроведенныеДокументыКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка - 346 + 380 Label true true @@ -1214,69 +1317,24 @@ true - - ГруппаПричинаДокументы - 31 - - НепроведенныеДокументыПричинаПодробно - 170 - - <key>ru</key> - <value>Документ не удалось провести автоматически по причине</value> - - true - true - - true - - - Items.НепроведенныеДокументы.CurrentData.Причина - - - НепроведенныеДокументыПричинаПодробноРасширеннаяПодсказка - 393 - Label - true - true - - Left - - - - НепроведенныеДокументыПричинаПодробноКонтекстноеМеню - 171 - true - - InputField - true - Enter - true - Left - true - - true - 4 - true - true - true - true - true - true - Normal - - + + НепроведенныеДокументыПричинаПодробно + 170 + + <key>ru</key> + <value>Документ не удалось провести автоматически по причине</value> + true true true - - <key>ru</key> - <value>Документ не удалось провести автоматически по причине</value> - + + Items.НепроведенныеДокументы.CurrentData.Причина + - ГруппаПричинаДокументыРасширеннаяПодсказка - 392 + НепроведенныеДокументыПричинаПодробноРасширеннаяПодсказка + 430 Label true true @@ -1284,14 +1342,27 @@ Left - UsualGroup - - Vertical - Auto - true - true - Auto - Auto + + НепроведенныеДокументыПричинаПодробноКонтекстноеМеню + 171 + true + + InputField + true + Enter + true + Left + true + + true + 4 + true + true + true + true + true + true + Normal true @@ -1309,7 +1380,7 @@ СтраницаНепроведенныеДокументыРасширеннаяПодсказка - 338 + 372 Label true true @@ -1344,7 +1415,7 @@ ДекорацияОбъектыРасширеннаяПодсказка - 396 + 433 Label true true @@ -1401,7 +1472,7 @@ НезаполненныеРеквизитыПометкаУдаленияРасширеннаяПодсказка - 423 + 464 Label true true @@ -1450,7 +1521,7 @@ НезаполненныеРеквизитыТипСтрокойРасширеннаяПодсказка - 425 + 466 Label true true @@ -1488,7 +1559,7 @@ НезаполненныеРеквизитыГруппаКартинкиРасширеннаяПодсказка - 422 + 463 Label true true @@ -1524,7 +1595,7 @@ НезаполненныеРеквизитыСсылкаРасширеннаяПодсказка - 427 + 468 Label true true @@ -1568,7 +1639,7 @@ НезаполненныеРеквизитыДатаВозникновенияРасширеннаяПодсказка - 429 + 470 Label true true @@ -1608,7 +1679,7 @@ НезаполненныеРеквизитыПричинаРасширеннаяПодсказка - 431 + 472 Label true true @@ -1652,7 +1723,7 @@ НезаполненныеРеквизитыУзелИнформационнойБазыРасширеннаяПодсказка - 433 + 474 Label true true @@ -1688,7 +1759,7 @@ НезаполненныеРеквизитыИзменитьВыделенныеОбъектыРасширеннаяПодсказка - 403 + 440 Label true true @@ -1714,7 +1785,7 @@ НезаполненныеРеквизитыИзменитьРасширеннаяПодсказка - 404 + 441 Label true true @@ -1744,7 +1815,7 @@ НезаполненныеРеквизитыИгнорироватьОбъектРасширеннаяПодсказка - 406 + 443 Label true true @@ -1770,7 +1841,7 @@ НезаполненныеРеквизитыНеИгнорироватьОбъектРасширеннаяПодсказка - 407 + 444 Label true true @@ -1787,6 +1858,33 @@ Auto InAdditionalSubmenu + + НезаполненныеРеквизитыПоказыватьПроигнорированныеНезаполненные + 341 + true + true + + true + + + НезаполненныеРеквизитыПоказыватьПроигнорированныеНезаполненныеРасширеннаяПодсказка + 445 + Label + true + true + + Left + + + Form.Command.ПоказыватьПроигнорированныеНезаполненные + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + true true @@ -1802,7 +1900,7 @@ ГруппаИгнорированияОбъектовРасширеннаяПодсказка - 405 + 442 Label true true @@ -1812,6 +1910,32 @@ + + НезаполненныеРеквизитыОбновить + 358 + true + true + + true + + + НезаполненныеРеквизитыОбновитьРасширеннаяПодсказка + 446 + Label + true + true + + Left + + + Form.Command.Обновить + Normal + Auto + true + true + UserCmds + Auto + НезаполненныеРеквизитыНайти 234 @@ -1822,7 +1946,7 @@ НезаполненныеРеквизитыНайтиРасширеннаяПодсказка - 408 + 447 Label true true @@ -1848,7 +1972,7 @@ НезаполненныеРеквизитыОтменитьПоискРасширеннаяПодсказка - 409 + 448 Label true true @@ -1874,7 +1998,7 @@ НезаполненныеРеквизитыВывестиСписокРасширеннаяПодсказка - 410 + 449 Label true true @@ -1900,7 +2024,7 @@ НезаполненныеРеквизитыНастройкаСпискаРасширеннаяПодсказка - 411 + 450 Label true true @@ -1917,6 +2041,59 @@ Auto InCommandBarAndInAdditionalSubmenu + + НезаполненныеРеквизитыИзменитьФорму + 345 + true + true + + true + + + НезаполненныеРеквизитыИзменитьФормуРасширеннаяПодсказка + 451 + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Normal + Auto + true + true + UserCmds + Auto + + + НезаполненныеРеквизитыСправка + 361 + true + true + + true + + + НезаполненныеРеквизитыСправкаРасширеннаяПодсказка + 452 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Left @@ -1929,10 +2106,10 @@ НезаполненныеРеквизитыСтрокаПоиска - 413 + 454 НезаполненныеРеквизитыСтрокаПоискаРасширеннаяПодсказка - 415 + 456 Label true true @@ -1942,7 +2119,7 @@ НезаполненныеРеквизитыСтрокаПоискаКонтекстноеМеню - 414 + 455 true НезаполненныеРеквизиты @@ -1952,10 +2129,10 @@ НезаполненныеРеквизитыСостояниеПросмотра - 416 + 457 НезаполненныеРеквизитыСостояниеПросмотраРасширеннаяПодсказка - 418 + 459 Label true true @@ -1965,7 +2142,7 @@ НезаполненныеРеквизитыСостояниеПросмотраКонтекстноеМеню - 417 + 458 true ViewStatusAddition @@ -1976,10 +2153,10 @@ НезаполненныеРеквизитыУправлениеПоиском - 419 + 460 НезаполненныеРеквизитыУправлениеПоискомРасширеннаяПодсказка - 421 + 462 Label true true @@ -1989,7 +2166,7 @@ НезаполненныеРеквизитыУправлениеПоискомКонтекстноеМеню - 420 + 461 true SearchControlAddition @@ -2000,7 +2177,7 @@ НезаполненныеРеквизитыРасширеннаяПодсказка - 412 + 453 Label true true @@ -2021,7 +2198,7 @@ НезаполненныеРеквизитыКонтекстноеМенюИзменитьВыделенныеОбъектыРасширеннаяПодсказка - 397 + 434 Label true true @@ -2047,7 +2224,7 @@ НезаполненныеРеквизитыКонтекстноеМенюИзменитьРасширеннаяПодсказка - 398 + 435 Label true true @@ -2076,7 +2253,7 @@ НезаполненныеРеквизитыКонтекстноеМенюИгнорироватьОбъектРасширеннаяПодсказка - 400 + 437 Label true true @@ -2102,7 +2279,7 @@ НезаполненныеРеквизитыКонтекстноеМенюНеИгнорироватьОбъектРасширеннаяПодсказка - 401 + 438 Label true true @@ -2133,7 +2310,7 @@ НезаполненныеРеквизитыКонтекстноеМенюГруппаИгнорированияРасширеннаяПодсказка - 399 + 436 Label true true @@ -2153,7 +2330,7 @@ НезаполненныеРеквизитыКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка - 402 + 439 Label true true @@ -2206,73 +2383,24 @@ true - - ГруппаПричинаОбъекты - 86 - - НезаполненныеРеквизитыПричинаПодробно - 174 - - <key>ru</key> - <value>Данные не удалось записать по причине</value> - - true - true - - true - - - Items.НезаполненныеРеквизиты.CurrentData.Причина - - - НезаполненныеРеквизитыПричинаПодробноРасширеннаяПодсказка - 444 - Label - true - true - - Left - - - - НезаполненныеРеквизитыПричинаПодробноКонтекстноеМеню - 175 - true - - InputField - true - Enter - true - Left - true - - true - 4 - true - true - true - true - true - true - Normal - - + + НезаполненныеРеквизитыПричинаПодробно + 174 + + <key>ru</key> + <value>Данные не удалось записать по причине</value> + true true true - - <key>ru</key> - <value>Данные не удалось записать по причине</value> - - - ru - Группа причина объекты - + + Items.НезаполненныеРеквизиты.CurrentData.Причина + - ГруппаПричинаОбъектыРасширеннаяПодсказка - 443 + НезаполненныеРеквизитыПричинаПодробноРасширеннаяПодсказка + 484 Label true true @@ -2280,14 +2408,27 @@ Left - UsualGroup - - Vertical - Auto - true - true - Auto - Auto + + НезаполненныеРеквизитыПричинаПодробноКонтекстноеМеню + 175 + true + + InputField + true + Enter + true + Left + true + + true + 4 + true + true + true + true + true + true + Normal true @@ -2305,7 +2446,7 @@ СтраницаНезаполненныеРеквизитыРасширеннаяПодсказка - 395 + 432 Label true true @@ -2330,8 +2471,8 @@ 176 <key>ru</key> - <value>Данные были одновременно изменены в этой и в другой программе, в результате появилось две версии одного элемента справочника (документа). -Одна из версий была принята, а другая отклонена. Для перехода к другой версии используйте команду "Перейти на версию".</value> + <value>Данные были одновременно изменены в этой и в другой программе, в результате чего появилось две версии +одного элемента справочника (документа) и возник конфликт, который был разрешен автоматически.</value> true true @@ -2340,7 +2481,7 @@ ДекорацияКоллизииРасширеннаяПодсказка - 447 + 487 Label true true @@ -2376,9 +2517,53 @@ Коллизии None + + КоллизииДата + 332 + + <key>ru</key> + <value>Дата конфликта</value> + + true + true + + true + + + Коллизии.Дата + + + ru + Дата возникновения конфликта + + + КоллизииДатаРасширеннаяПодсказка + 522 + Label + true + true + + Left + + + + КоллизииДатаКонтекстноеМеню + 333 + true + + LabelField + Enter + true + Left + true + + true + true + + КоллизииСсылка - 283 + 330 <key>ru</key> <value>Данные</value> @@ -2393,11 +2578,11 @@ </dataPath> <toolTip> <key>ru</key> - <value>Данные, для которых возник конфликт</value> + <value>Элемент справочника (документа) для которого возник конфликт</value> </toolTip> <extendedTooltip> <name>КоллизииСсылкаРасширеннаяПодсказка</name> - <id>478</id> + <id>524</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2407,7 +2592,7 @@ </extendedTooltip> <contextMenu> <name>КоллизииСсылкаКонтекстноеМеню</name> - <id>284</id> + <id>331</id> <autoFill>true</autoFill> </contextMenu> <type>LabelField</type> @@ -2437,11 +2622,11 @@ </dataPath> <toolTip> <key>ru</key> - <value>Тип данных</value> + <value>Вид справочника (документа)</value> </toolTip> <extendedTooltip> <name>КоллизииТипСтрокойРасширеннаяПодсказка</name> - <id>480</id> + <id>526</id> <type>Label</type> <autoMaxWidth>true</autoMaxWidth> <autoMaxHeight>true</autoMaxHeight> @@ -2464,206 +2649,28 @@ <autoMaxHeight>true</autoMaxHeight> </extInfo> </items> - <items xsi:type="form:FormGroup"> - <name>КоллизииГруппаВерсияЭтойПрограммы</name> - <id>199</id> - <items xsi:type="form:FormField"> - <name>КоллизииНомерЭтойВерсии</name> - <id>289</id> - <title> - <key>ru</key> - <value>№</value> - - true - true - - true - - - Коллизии.НомерЭтойВерсии - - - ru - Номер версии - - - КоллизииНомерЭтойВерсииРасширеннаяПодсказка - 483 - Label - true - true - - Left - - - - КоллизииНомерЭтойВерсииКонтекстноеМеню - 290 - true - - LabelField - Enter - true - Left - true - - 1 - true - true - - - - КоллизииАвторЭтойВерсии - 285 - - <key>ru</key> - <value>Автор</value> - - true - true - - true - - - Коллизии.АвторЭтойВерсии - - - ru - Пользователь, создавший версию в этой программе - - - КоллизииАвторЭтойВерсииРасширеннаяПодсказка - 485 - Label - true - true - - Left - - - - КоллизииАвторЭтойВерсииКонтекстноеМеню - 286 - true - - LabelField - Enter - true - Left - true - - true - true - - - - КоллизииДатаЭтойВерсии - 287 - - <key>ru</key> - <value>Дата</value> - - true - true - - true - - - Коллизии.ДатаЭтойВерсии - - - ru - Дата версии - - - КоллизииДатаЭтойВерсииРасширеннаяПодсказка - 487 - Label - true - true - - Left - - - - КоллизииДатаЭтойВерсииКонтекстноеМеню - 288 - true - - LabelField - Enter - true - Left - true - - true - true - - - - КоллизииЭтаВерсияПринята - 297 - - <key>ru</key> - <value>Статус</value> - - true - true - - true - - - Коллизии.ЭтаВерсияПринята - - - ru - Статус версии - - - КоллизииЭтаВерсияПринятаРасширеннаяПодсказка - 489 - Label - true - true - - Left - - - - КоллизииЭтаВерсияПринятаКонтекстноеМеню - 298 - true - - LabelField - Enter - true - Left - true - - true - true - - ru - БЛ=Перезаписана; БИ='Не изменена' - - - + + КоллизииАвторДругойВерсии + 291 + + <key>ru</key> + <value>Данные получены из программы</value> + true true true - - <key>ru</key> - <value>Версия в этой программе</value> - + + Коллизии.АвторДругойВерсии + ru - Версия, созданная в этой программе + Информационная база или приложение из которого получена версия - КоллизииГруппаВерсияЭтойПрограммыРасширеннаяПодсказка - 482 + КоллизииАвторДругойВерсииРасширеннаяПодсказка + 528 Label true true @@ -2671,214 +2678,43 @@ Left - ColumnGroup - - auto - true - Center - true + + КоллизииАвторДругойВерсииКонтекстноеМеню + 292 + true + + LabelField + Enter + true + Left + true + + true + true - - КоллизииГруппаВерсияДругойПрограммы - 200 - - КоллизииНомерДругойВерсии - 295 - - <key>ru</key> - <value>№</value> - - true - true - - true - - - Коллизии.НомерДругойВерсии - - - ru - Номер версии - - - КоллизииНомерДругойВерсииРасширеннаяПодсказка - 492 - Label - true - true - - Left - - - - КоллизииНомерДругойВерсииКонтекстноеМеню - 296 - true - - LabelField - Enter - true - Left - true - - 1 - true - true - - - - КоллизииАвторДругойВерсии - 291 - - <key>ru</key> - <value>Отправитель</value> - - true - true - - true - - - Коллизии.АвторДругойВерсии - - - ru - Информационная база или приложение из которого получена версия - - - КоллизииАвторДругойВерсииРасширеннаяПодсказка - 494 - Label - true - true - - Left - - - - КоллизииАвторДругойВерсииКонтекстноеМеню - 292 - true - - LabelField - Enter - true - Left - true - - true - true - - - - КоллизииДатаДругойВерсии - 293 - - <key>ru</key> - <value>Дата</value> - - true - true - - true - - - Коллизии.ДатаДругойВерсии - - - ru - Дата версии - - - КоллизииДатаДругойВерсииРасширеннаяПодсказка - 496 - Label - true - true - - Left - - - - КоллизииДатаДругойВерсииКонтекстноеМеню - 294 - true - - LabelField - Enter - true - Left - true - - true - true - - - - КоллизииДругаяВерсияПринята - 299 - - <key>ru</key> - <value>Статус</value> - - true - true - - true - - - Коллизии.ДругаяВерсияПринята - - - ru - Статус версии - - - КоллизииДругаяВерсияПринятаРасширеннаяПодсказка - 498 - Label - true - true - - Left - - - - КоллизииДругаяВерсияПринятаКонтекстноеМеню - 300 - true - - LabelField - Enter - true - Left - true - - true - true - - ru - БЛ=Отклонена; БИ=Принята - - - + + КоллизииДругаяВерсияПринята + 299 + + <key>ru</key> + <value>Статус полученной версии</value> + true true true - - <key>ru</key> - <value>Версия из другой программы</value> - + + Коллизии.ДругаяВерсияПринята + ru - Версия, полученная из другой программы + Статус версии, полученной из другой программы - КоллизииГруппаВерсияДругойПрограммыРасширеннаяПодсказка - 491 + КоллизииДругаяВерсияПринятаРасширеннаяПодсказка + 530 Label true true @@ -2886,12 +2722,23 @@ Left - ColumnGroup - - auto - true - Center - true + + КоллизииДругаяВерсияПринятаКонтекстноеМеню + 300 + true + + LabelField + Enter + true + Left + true + + true + true + + ru + БЛ=Отклонена; БИ=Принята + @@ -2907,7 +2754,7 @@ КоллизииСравнитьСТекущейВерсиейКоллизииРасширеннаяПодсказка - 456 + 495 Label true true @@ -2923,59 +2770,6 @@ UserCmds Auto - - КоллизииПерейтиНаВерсиюКонфликта - 275 - true - true - - true - - - КоллизииПерейтиНаВерсиюКонфликтаРасширеннаяПодсказка - 457 - Label - true - true - - Left - - - Form.Command.ПерейтиНаВерсиюКонфликта - Normal - Auto - true - true - UserCmds - Auto - - - КоллизииИзменить - 201 - true - true - - true - - - КоллизииИзменитьРасширеннаяПодсказка - 458 - Label - true - true - - Left - - - Form.Command.Изменить - Normal - Auto - true - true - UserCmds - Auto - InAdditionalSubmenu - КоллизииОткрытьВерсиюКоллизии 157 @@ -2986,7 +2780,7 @@ КоллизииОткрытьВерсиюКоллизииРасширеннаяПодсказка - 459 + 496 Label true true @@ -2994,7 +2788,65 @@ Left - Form.Command.ОткрытьВерсиюКоллизии + Form.Command.ОткрытьВерсиюДоКонфликта + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + КоллизииОткрытьВерсиюКонфликта + 356 + true + true + + true + + + КоллизииОткрытьВерсиюКонфликтаРасширеннаяПодсказка + 497 + Label + true + true + + Left + + + Form.Command.ОткрытьВерсиюКонфликта + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + + + КоллизииИзменить + 201 + + <key>ru</key> + <value>Изменить данные</value> + + true + true + + true + + + КоллизииИзменитьРасширеннаяПодсказка + 498 + Label + true + true + + Left + + + Form.Command.Изменить Normal Auto true @@ -3016,7 +2868,7 @@ КоллизииИгнорироватьКонфликтРасширеннаяПодсказка - 461 + 500 Label true true @@ -3042,7 +2894,7 @@ КоллизииНеИгнорироватьКонфликтРасширеннаяПодсказка - 462 + 501 Label true true @@ -3074,7 +2926,7 @@ КоллизииГруппаИгнорированияРасширеннаяПодсказка - 460 + 499 Label true true @@ -3084,9 +2936,96 @@ + + КоллизииИзменитьРезультатКонфликта + 355 + + <key>ru</key> + <value>Пересмотреть</value> + + true + true + + true + + + КоллизииИзменитьРезультатКонфликтаРасширеннаяПодсказка + 502 + Label + true + true + + Left + + + Form.Command.ИзменитьРезультатКонфликта + Normal + PictureAndText + true + true + UserCmds + + CommonPicture.СинхронизацияДанныхКоллизия + + Auto + + + КоллизииПоказыватьПроигнорированныеКонфликты + 342 + true + true + + true + + + КоллизииПоказыватьПроигнорированныеКонфликтыРасширеннаяПодсказка + 503 + Label + true + true + + Left + + + Form.Command.ПоказыватьПроигнорированныеКонфликты + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + КоллизииГруппаСлужебные 156 + + ФормаОбновить + 28 + true + true + + true + + + ФормаОбновитьРасширеннаяПодсказка + 505 + Label + true + true + + Left + + + Form.Command.Обновить + Normal + Auto + true + true + UserCmds + Auto + InCommandBarAndInAdditionalSubmenu + КоллизииНайти 238 @@ -3097,7 +3036,7 @@ КоллизииНайтиРасширеннаяПодсказка - 464 + 506 Label true true @@ -3123,7 +3062,7 @@ КоллизииОтменитьПоискРасширеннаяПодсказка - 465 + 507 Label true true @@ -3149,7 +3088,7 @@ КоллизииВывестиСписокРасширеннаяПодсказка - 466 + 508 Label true true @@ -3175,7 +3114,7 @@ КоллизииНастройкаСпискаРасширеннаяПодсказка - 467 + 509 Label true true @@ -3207,7 +3146,7 @@ КоллизииГруппаСлужебныеРасширеннаяПодсказка - 463 + 504 Label true true @@ -3217,11 +3156,64 @@ + + КоллизииИзменитьФорму + 346 + true + true + + true + + + КоллизииИзменитьФормуРасширеннаяПодсказка + 510 + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Normal + Auto + true + true + UserCmds + Auto + + + КоллизииСправка + 362 + true + true + + true + + + КоллизииСправкаРасширеннаяПодсказка + 511 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Left - Selection - КоллизииВыбор + OnActivateRow + КоллизииПриАктивизацииСтроки BeforeRowChange @@ -3229,10 +3221,10 @@ КоллизииСтрокаПоиска - 469 + 513 КоллизииСтрокаПоискаРасширеннаяПодсказка - 471 + 515 Label true true @@ -3242,7 +3234,7 @@ КоллизииСтрокаПоискаКонтекстноеМеню - 470 + 514 true Коллизии @@ -3252,10 +3244,10 @@ КоллизииСостояниеПросмотра - 472 + 516 КоллизииСостояниеПросмотраРасширеннаяПодсказка - 474 + 518 Label true true @@ -3265,7 +3257,7 @@ КоллизииСостояниеПросмотраКонтекстноеМеню - 473 + 517 true ViewStatusAddition @@ -3276,10 +3268,10 @@ КоллизииУправлениеПоиском - 475 + 519 КоллизииУправлениеПоискомРасширеннаяПодсказка - 477 + 521 Label true true @@ -3289,7 +3281,7 @@ КоллизииУправлениеПоискомКонтекстноеМеню - 476 + 520 true SearchControlAddition @@ -3300,7 +3292,7 @@ КоллизииРасширеннаяПодсказка - 468 + 512 Label true true @@ -3321,7 +3313,7 @@ КоллизииКонтекстноеМенюСравнитьСТекущейВерсиейКоллизииРасширеннаяПодсказка - 448 + 488 Label true true @@ -3338,16 +3330,16 @@ Auto - КоллизииКонтекстноеМенюПерейтиНаВерсиюКонфликта - 278 + КоллизииКонтекстноеМенюОткрытьВерсиюДоКонфликта + 162 true true true - КоллизииКонтекстноеМенюПерейтиНаВерсиюКонфликтаРасширеннаяПодсказка - 449 + КоллизииКонтекстноеМенюОткрытьВерсиюДоКонфликтаРасширеннаяПодсказка + 489 Label true true @@ -3355,7 +3347,33 @@ Left - Form.Command.ПерейтиНаВерсиюКонфликта + Form.Command.ОткрытьВерсиюДоКонфликта + Normal + Auto + true + true + UserCmds + Auto + + + КоллизииКонтекстноеМенюОткрытьВерсиюКонфликта + 338 + true + true + + true + + + КоллизииКонтекстноеМенюОткрытьВерсиюКонфликтаРасширеннаяПодсказка + 490 + Label + true + true + + Left + + + Form.Command.ОткрытьВерсиюКонфликта Normal Auto true @@ -3373,7 +3391,7 @@ КоллизииКонтекстноеМенюИзменитьРасширеннаяПодсказка - 450 + 491 Label true true @@ -3389,61 +3407,9 @@ UserCmds Auto - - КоллизииКонтекстноеМенюОткрытьВерсиюКоллизии - 162 - true - true - - true - - - КоллизииКонтекстноеМенюОткрытьВерсиюКоллизииРасширеннаяПодсказка - 451 - Label - true - true - - Left - - - Form.Command.ОткрытьВерсиюКоллизии - Normal - Auto - true - true - UserCmds - Auto - - КоллизииКонтекстноеМенюГруппаИгнорирования - 321 - - КоллизииКонтекстноеМенюИгнорироватьКонфликт - 273 - true - true - - true - - - КоллизииКонтекстноеМенюИгнорироватьКонфликтРасширеннаяПодсказка - 453 - Label - true - true - - Left - - - Form.Command.ИгнорироватьКонфликт - Normal - Auto - true - true - UserCmds - Auto - + КоллизииКонтекстноеМенюГруппаРазедлитель + 349 КоллизииКонтекстноеМенюНеИгнорироватьКонфликт 317 @@ -3454,7 +3420,7 @@ КоллизииКонтекстноеМенюНеИгнорироватьКонфликтРасширеннаяПодсказка - 454 + 493 Label true true @@ -3477,15 +3443,11 @@ <key>ru</key> - <value>Коллизии контекстное меню группа игнорирования</value> + <value>Коллизии контекстное меню группа разедлитель</value> - - ru - Коллизии контекстное меню группа игнорирования - - КоллизииКонтекстноеМенюГруппаИгнорированияРасширеннаяПодсказка - 452 + КоллизииКонтекстноеМенюГруппаРазедлительРасширеннаяПодсказка + 492 Label true true @@ -3505,7 +3467,7 @@ КоллизииКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка - 455 + 494 Label true true @@ -3530,6 +3492,7 @@ true true MultiRow + Row
                      true
                      1 1 @@ -3557,6 +3520,51 @@ true
                      + + ПричинаКонфликта + 353 + true + true + + true + + + ПричинаКонфликта + + Top + + ПричинаКонфликтаРасширеннаяПодсказка + 540 + Label + true + true + + Left + + + + ПричинаКонфликтаКонтекстноеМеню + 354 + true + + InputField + true + Enter + true + Left + true + + true + 4 + true + true + true + true + true + true + Normal + + true true @@ -3572,7 +3580,7 @@ СтраницаКоллизииРасширеннаяПодсказка - 446 + 486 Label true true @@ -3607,7 +3615,7 @@ ДекорацияНепринятыеРасширеннаяПодсказка - 509 + 543 Label true true @@ -3643,6 +3651,42 @@ НепринятыеПоДате None + + НепринятыеПоДатеДата + 334 + true + true + + true + + + НепринятыеПоДате.Дата + + + НепринятыеПоДатеДатаРасширеннаяПодсказка + 579 + Label + true + true + + Left + + + + НепринятыеПоДатеДатаКонтекстноеМеню + 335 + true + + LabelField + Enter + true + Left + true + + true + true + + НепринятыеПоДатеСсылка 220 @@ -3664,7 +3708,7 @@ НепринятыеПоДатеСсылкаРасширеннаяПодсказка - 540 + 581 Label true true @@ -3708,7 +3752,7 @@ НепринятыеПоДатеТипСтрокойРасширеннаяПодсказка - 542 + 583 Label true true @@ -3731,157 +3775,28 @@ true - - НепринятыеПоДатеГруппаТекущаяВерсия - 224 - - НепринятыеПоДатеНомерЭтойВерсии - 309 - - <key>ru</key> - <value>№</value> - - true - true - - true - - - НепринятыеПоДате.НомерЭтойВерсии - - - ru - Номер версии - - - НепринятыеПоДатеНомерЭтойВерсииРасширеннаяПодсказка - 545 - Label - true - true - - Left - - - - НепринятыеПоДатеНомерЭтойВерсииКонтекстноеМеню - 310 - true - - LabelField - Enter - true - Left - true - - true - true - - - - НепринятыеПоДатеАвторЭтойВерсии - 305 - - <key>ru</key> - <value>Автор</value> - - true - true - - true - - - НепринятыеПоДате.АвторЭтойВерсии - - - ru - Пользователь, создавший версию в этой программе - - - НепринятыеПоДатеАвторЭтойВерсииРасширеннаяПодсказка - 547 - Label - true - true - - Left - - - - НепринятыеПоДатеАвторЭтойВерсииКонтекстноеМеню - 306 - true - - LabelField - Enter - true - Left - true - - true - true - - - - НепринятыеПоДатеДатаЭтойВерсии - 307 - - <key>ru</key> - <value>Дата</value> - - true - true - - true - - - НепринятыеПоДате.ДатаЭтойВерсии - - - ru - Дата версии - - - НепринятыеПоДатеДатаЭтойВерсииРасширеннаяПодсказка - 549 - Label - true - true - - Left - - - - НепринятыеПоДатеДатаЭтойВерсииКонтекстноеМеню - 308 - true - - LabelField - Enter - true - Left - true - - true - true - - + + НепринятыеПоДатеАвторДругойВерсии + 247 + + <key>ru</key> + <value>Данные получены из программы</value> + true true true - - <key>ru</key> - <value>Версия в этой программе</value> - + + НепринятыеПоДате.АвторДругойВерсии + ru - Версия, созданная в этой программе + Информационная база или приложение из которого получена версия - НепринятыеПоДатеГруппаТекущаяВерсияРасширеннаяПодсказка - 544 + НепринятыеПоДатеАвторДругойВерсииРасширеннаяПодсказка + 585 Label true true @@ -3889,178 +3804,19 @@ Left - ColumnGroup - - auto - true - Center - true - - - - НепринятыеПоДатеГруппаНепринятаяВерсия - 223 - - НепринятыеПоДатеНомерДругойВерсии - 245 - - <key>ru</key> - <value>№</value> - - true - true - - true - - - НепринятыеПоДате.НомерДругойВерсии - - - ru - Номер версии - - - НепринятыеПоДатеНомерДругойВерсииРасширеннаяПодсказка - 552 - Label - true - true - - Left - - - - НепринятыеПоДатеНомерДругойВерсииКонтекстноеМеню - 246 - true - - LabelField - Enter - true - Left - true - - true - true - - - - НепринятыеПоДатеАвторДругойВерсии - 247 - - <key>ru</key> - <value>Отправитель</value> - - true - true - - true - - - НепринятыеПоДате.АвторДругойВерсии - - - ru - Информационная база или приложение из которого получена версия - - - НепринятыеПоДатеАвторДругойВерсииРасширеннаяПодсказка - 554 - Label - true - true - - Left - - - - НепринятыеПоДатеАвторДругойВерсииКонтекстноеМеню - 248 - true - - LabelField - Enter - true - Left - true - - true - true - - - - НепринятыеПоДатеДатаДругойВерсии - 249 - - <key>ru</key> - <value>Дата</value> - - true - true - - true - - - НепринятыеПоДате.ДатаДругойВерсии - - - ru - Дата версии - - - НепринятыеПоДатеДатаДругойВерсииРасширеннаяПодсказка - 556 - Label - true - true - - Left - - - - НепринятыеПоДатеДатаДругойВерсииКонтекстноеМеню - 250 - true - - LabelField - Enter - true - Left - true - - true - true - - - true - true - - true - - - <key>ru</key> - <value>Непринятая версия из другой программы</value> - - - ru - Версия, которая была отклонена из-за установленного запрета на загрузку данных - - - НепринятыеПоДатеГруппаНепринятаяВерсияРасширеннаяПодсказка - 551 - Label + + НепринятыеПоДатеАвторДругойВерсииКонтекстноеМеню + 248 + true + + LabelField + Enter + true + Left + true + true true - - Left - - - ColumnGroup - - auto - true - Center - true @@ -4076,7 +3832,7 @@ НепринятыеПоДатеСравнитьСДаннымиВБазеРасширеннаяПодсказка - 518 + 553 Label true true @@ -4093,16 +3849,16 @@ Auto - НепринятыеПоДатеПринятьВресию + НепринятыеПоДатеПринятьВерсию 320 true - true + false true - НепринятыеПоДатеПринятьВресиюРасширеннаяПодсказка - 519 + НепринятыеПоДатеПринятьВерсиюРасширеннаяПодсказка + 554 Label true true @@ -4110,7 +3866,7 @@ Left - Form.Command.ПринятьВерсию + Form.Command.ПринятьВерсиюНепринятые Normal Auto true @@ -4128,7 +3884,7 @@ НепринятыеПоДатеИзменитьРасширеннаяПодсказка - 520 + 555 Label true true @@ -4155,7 +3911,7 @@ НепринятыеПоДатеОткрытьВерсиюРасширеннаяПодсказка - 521 + 556 Label true true @@ -4185,7 +3941,7 @@ НепринятыеПоДатеИгнорироватьНепринятыйРасширеннаяПодсказка - 523 + 558 Label true true @@ -4211,7 +3967,7 @@ НепринятыеПоДатеНеИгнорироватьНепринятыйРасширеннаяПодсказка - 524 + 559 Label true true @@ -4228,6 +3984,33 @@ Auto InAdditionalSubmenu + + НепринятыеПоДатеПоказыватьПроигнорированныеНепринятые + 343 + true + true + + true + + + НепринятыеПоДатеПоказыватьПроигнорированныеНепринятыеРасширеннаяПодсказка + 560 + Label + true + true + + Left + + + Form.Command.ПоказыватьПроигнорированныеНепринятые + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + true true @@ -4243,7 +4026,7 @@ НепринятыеПоДатеГруппаИгнорированияРасширеннаяПодсказка - 522 + 557 Label true true @@ -4256,6 +4039,32 @@ НепринятыеПоДатеГруппаСлужебные 153 + + НепринятыеПоДатеОбновить + 359 + true + true + + true + + + НепринятыеПоДатеОбновитьРасширеннаяПодсказка + 562 + Label + true + true + + Left + + + Form.Command.Обновить + Normal + Auto + true + true + UserCmds + Auto + НепринятыеПоДатеНайти 241 @@ -4266,7 +4075,7 @@ НепринятыеПоДатеНайтиРасширеннаяПодсказка - 526 + 563 Label true true @@ -4292,7 +4101,7 @@ НепринятыеПоДатеОтменитьПоискРасширеннаяПодсказка - 527 + 564 Label true true @@ -4318,7 +4127,7 @@ НепринятыеПоДатеВывестиСписокРасширеннаяПодсказка - 528 + 565 Label true true @@ -4344,7 +4153,7 @@ НепринятыеПоДатеНастройкаСпискаРасширеннаяПодсказка - 529 + 566 Label true true @@ -4375,7 +4184,7 @@ НепринятыеПоДатеГруппаСлужебныеРасширеннаяПодсказка - 525 + 561 Label true true @@ -4385,11 +4194,64 @@
                      + + НепринятыеПоДатеИзменитьФорму + 347 + true + true + + true + + + НепринятыеПоДатеИзменитьФормуРасширеннаяПодсказка + 567 + Label + true + true + + Left + + + Form.StandardCommand.CustomizeForm + Normal + Auto + true + true + UserCmds + Auto + + + НепринятыеПоДатеСправка + 363 + true + true + + true + + + НепринятыеПоДатеСправкаРасширеннаяПодсказка + 568 + Label + true + true + + Left + + + Form.StandardCommand.Help + Normal + Auto + true + true + UserCmds + Auto + InAdditionalSubmenu + Left - Selection - НепринятыеПоДатеВыбор + OnActivateRow + НепринятыеПоДатеПриАктивизацииСтроки BeforeRowChange @@ -4397,10 +4259,10 @@ НепринятыеПоДатеСтрокаПоиска - 531 + 570 НепринятыеПоДатеСтрокаПоискаРасширеннаяПодсказка - 533 + 572 Label true true @@ -4410,7 +4272,7 @@ НепринятыеПоДатеСтрокаПоискаКонтекстноеМеню - 532 + 571 true НепринятыеПоДате @@ -4420,10 +4282,10 @@ НепринятыеПоДатеСостояниеПросмотра - 534 + 573 НепринятыеПоДатеСостояниеПросмотраРасширеннаяПодсказка - 536 + 575 Label true true @@ -4433,7 +4295,7 @@ НепринятыеПоДатеСостояниеПросмотраКонтекстноеМеню - 535 + 574 true ViewStatusAddition @@ -4444,10 +4306,10 @@ НепринятыеПоДатеУправлениеПоиском - 537 + 576 НепринятыеПоДатеУправлениеПоискомРасширеннаяПодсказка - 539 + 578 Label true true @@ -4457,7 +4319,7 @@ НепринятыеПоДатеУправлениеПоискомКонтекстноеМеню - 538 + 577 true SearchControlAddition @@ -4468,7 +4330,7 @@ НепринятыеПоДатеРасширеннаяПодсказка - 530 + 569 Label true true @@ -4489,7 +4351,7 @@ НепринятыеПоДатеКонтекстноеМенюСравнитьСДаннымиВБазеРасширеннаяПодсказка - 510 + 544 Label true true @@ -4515,7 +4377,7 @@ НепринятыеПоДатеКонтекстноеМенюПринятьВресиюРасширеннаяПодсказка - 511 + 545 Label true true @@ -4523,7 +4385,7 @@ Left - Form.Command.ПринятьВерсию + Form.Command.ПринятьВерсиюНепринятые Normal Auto true @@ -4541,7 +4403,7 @@ НепринятыеПоДатеКонтекстноеМенюИзменитьРасширеннаяПодсказка - 512 + 546 Label true true @@ -4557,6 +4419,32 @@ UserCmds Auto
                      + + НепринятыеПоДатеКонтекстноеМенюОткрытьВерсиюНепринятыеВЭтойПрограмме + 339 + true + true + + true + + + НепринятыеПоДатеКонтекстноеМенюОткрытьВерсиюНепринятыеВЭтойПрограммеРасширеннаяПодсказка + 547 + Label + true + true + + Left + + + Form.Command.ОткрытьВерсиюНепринятыеВЭтойПрограмме + Normal + Auto + true + true + UserCmds + Auto + НепринятыеПоДатеКонтекстноеМенюОткрытьВерсию 151 @@ -4567,7 +4455,7 @@ НепринятыеПоДатеКонтекстноеМенюОткрытьВерсиюРасширеннаяПодсказка - 513 + 548 Label true true @@ -4596,7 +4484,7 @@ НепринятыеПоДатеКонтекстноеМенюИгнорироватьНепринятыйРасширеннаяПодсказка - 515 + 550 Label true true @@ -4622,7 +4510,7 @@ НепринятыеПоДатеКонтекстноеМенюНеИгнорироватьНепринятыйРасширеннаяПодсказка - 516 + 551 Label true true @@ -4653,7 +4541,7 @@ НепринятыеПоДатеКонтекстноеМенюГруппаИгнорированияРасширеннаяПодсказка - 514 + 549 Label true true @@ -4673,7 +4561,7 @@ НепринятыеПоДатеКонтекстноеМенюКопироватьВБуферОбменаРасширеннаяПодсказка - 517 + 552 Label true true @@ -4698,6 +4586,7 @@ true true MultiRow + Row
                      true
                      1 1 @@ -4725,69 +4614,24 @@ true
                      - - ГруппаПричинаНепринятыеПоДате - 145 - - НепринятыеПоДатеПричинаЗапретаПодробно - 225 - - <key>ru</key> - <value>Данные были отклонены из-за запрета</value> - - true - true - - true - - - Items.НепринятыеПоДате.CurrentData.ПричинаЗапрета - - - НепринятыеПоДатеПричинаЗапретаПодробноРасширеннаяПодсказка - 567 - Label - true - true - - Left - - - - НепринятыеПоДатеПричинаЗапретаПодробноКонтекстноеМеню - 226 - true - - InputField - true - Enter - true - Left - true - - true - 4 - true - true - true - true - true - true - Normal - - + + НепринятыеПоДатеПричинаЗапретаПодробно + 225 + + <key>ru</key> + <value>Данные были отклонены из-за запрета</value> + true true true - - <key>ru</key> - <value>Данные не были приняты из-за запрета</value> - + + Items.НепринятыеПоДате.CurrentData.ПричинаЗапрета + - ГруппаПричинаНепринятыеПоДатеРасширеннаяПодсказка - 566 + НепринятыеПоДатеПричинаЗапретаПодробноРасширеннаяПодсказка + 595 Label true true @@ -4795,14 +4639,27 @@ Left - UsualGroup - - Vertical - Auto - true - true - Auto - Auto + + НепринятыеПоДатеПричинаЗапретаПодробноКонтекстноеМеню + 226 + true + + InputField + true + Enter + true + Left + true + + true + 4 + true + true + true + true + true + true + Normal true @@ -4820,7 +4677,7 @@ СтраницаНепринятыеПоДатеЗапретаРасширеннаяПодсказка - 508 + 542 Label true true @@ -4852,7 +4709,7 @@ РезультатыОбменаДаннымиРасширеннаяПодсказка - 337 + 371 Label true true @@ -4873,114 +4730,7 @@ ФормаКоманднаяПанель -1 - - ФормаИзменитьФорму - 325 - true - true - - true - - - ФормаИзменитьФормуРасширеннаяПодсказка - 326 - Label - true - true - - Left - - - Form.StandardCommand.CustomizeForm - Normal - Auto - true - true - UserCmds - Auto - InCommandBarAndInAdditionalSubmenu - - - ФормаЗакрыть - 49 - true - true - - true - - - ФормаЗакрытьРасширеннаяПодсказка - 327 - Label - true - true - - Left - - - Form.StandardCommand.Close - true - true - true - UserCmds - Auto - - - ФормаОбновить - 28 - true - true - - true - - - ФормаОбновитьРасширеннаяПодсказка - 328 - Label - true - true - - Left - - - Form.Command.Обновить - Normal - Auto - true - true - UserCmds - Auto - InCommandBarAndInAdditionalSubmenu - - - ФормаПоказыватьПроигнорированные - 316 - true - true - - true - - - ФормаПоказыватьПроигнорированныеРасширеннаяПодсказка - 329 - Label - true - true - - Left - - - Form.Command.ПоказыватьПроигнорированные - Normal - Auto - true - true - UserCmds - Auto - InCommandBarAndInAdditionalSubmenu - Left - true NotificationProcessing @@ -5082,26 +4832,6 @@ true - - ПоказыватьПроигнорированные - - <key>ru</key> - <value>Показывать проигнорированные</value> - - 2 - - Boolean - - - true - - - true - - - ПоказыватьПроигнорированные - - Период @@ -5250,6 +4980,9 @@ <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Коллизии.АвторТекущейВерсии</segments> </notDefaultUseAlwaysAttributes> + <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> + <segments>Коллизии.АвторЭтойВерсии</segments> + </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Коллизии.БылЗагружен</segments> </notDefaultUseAlwaysAttributes> @@ -5259,9 +4992,15 @@ <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Коллизии.ДатаВерсии</segments> </notDefaultUseAlwaysAttributes> + <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> + <segments>Коллизии.ДатаДругойВерсии</segments> + </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Коллизии.ДатаТекущейВерсии</segments> </notDefaultUseAlwaysAttributes> + <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> + <segments>Коллизии.ДатаЭтойВерсии</segments> + </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Коллизии.НомерВерсии</segments> </notDefaultUseAlwaysAttributes> @@ -5271,17 +5010,17 @@ <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Коллизии.Объект</segments> </notDefaultUseAlwaysAttributes> + <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> + <segments>Коллизии.ЭтаВерсияПринята</segments> + </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Коллизии.АвторДругойВерсии</segments> </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> - <segments>Коллизии.АвторЭтойВерсии</segments> + <segments>Коллизии.ВерсияПроигнорирована</segments> </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> - <segments>Коллизии.ДатаДругойВерсии</segments> - </notDefaultUseAlwaysAttributes> - <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> - <segments>Коллизии.ДатаЭтойВерсии</segments> + <segments>Коллизии.Дата</segments> </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Коллизии.ДругаяВерсияПринята</segments> @@ -5298,30 +5037,20 @@ <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>Коллизии.ТипСтрокой</segments> </notDefaultUseAlwaysAttributes> - <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> - <segments>Коллизии.ЭтаВерсияПринята</segments> - </notDefaultUseAlwaysAttributes> <extInfo xsi:type="form:DynamicListExtInfo"> <queryText>ВЫБРАТЬ РАЗРЕШЕННЫЕ + ВерсииДругойПрограммы.ДатаВерсии КАК Дата, ВерсииДругойПрограммы.Объект КАК Ссылка, + ТИПЗНАЧЕНИЯ(ВерсииДругойПрограммы.Объект) КАК ТипСтрокой, ВерсииЭтойПрограммы.НомерВерсии КАК НомерЭтойВерсии, - ВерсииЭтойПрограммы.АвторВерсии КАК АвторЭтойВерсии, - ВерсииЭтойПрограммы.ДатаВерсии КАК ДатаЭтойВерсии, ВерсииДругойПрограммы.НомерВерсии КАК НомерДругойВерсии, ВерсииДругойПрограммы.АвторВерсии КАК АвторДругойВерсии, - ВерсииДругойПрограммы.ДатаВерсии КАК ДатаДругойВерсии, ВЫБОР КОГДА ВерсииДругойПрограммы.ТипВерсииОбъекта = ЗНАЧЕНИЕ(Перечисление.ТипыВерсийОбъекта.ПринятыеДанныеПоКоллизии) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ДругаяВерсияПринята, - ВЫБОР - КОГДА ВерсииДругойПрограммы.ТипВерсииОбъекта = ЗНАЧЕНИЕ(Перечисление.ТипыВерсийОбъекта.НепринятыеДанныеПоКоллизии) - ТОГДА ИСТИНА - ИНАЧЕ ЛОЖЬ - КОНЕЦ КАК ЭтаВерсияПринята, - Представление(ТИПЗНАЧЕНИЯ(ВерсииДругойПрограммы.Объект)) КАК ТипСтрокой, - ВерсииДругойПрограммы.ВерсияПроигнорирована + ВерсииДругойПрограммы.ВерсияПроигнорирована КАК ВерсияПроигнорирована ИЗ РегистрСведений.ВерсииОбъектов КАК ВерсииДругойПрограммы ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВерсииОбъектов КАК ВерсииЭтойПрограммы @@ -5363,12 +5092,18 @@ <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>НепринятыеПоДате.АвторТекущейВерсии</segments> </notDefaultUseAlwaysAttributes> + <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> + <segments>НепринятыеПоДате.АвторЭтойВерсии</segments> + </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>НепринятыеПоДате.ВерсияПропущена</segments> </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>НепринятыеПоДате.ДатаВерсии</segments> </notDefaultUseAlwaysAttributes> + <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> + <segments>НепринятыеПоДате.ДатаДругойВерсии</segments> + </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>НепринятыеПоДате.ДатаНепринятойВерсии</segments> </notDefaultUseAlwaysAttributes> @@ -5378,6 +5113,9 @@ <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>НепринятыеПоДате.ДатаТекущйВерсии</segments> </notDefaultUseAlwaysAttributes> + <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> + <segments>НепринятыеПоДате.ДатаЭтойВерсии</segments> + </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>НепринятыеПоДате.ЕстьВБазе</segments> </notDefaultUseAlwaysAttributes> @@ -5402,15 +5140,6 @@ <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>НепринятыеПоДате.АвторДругойВерсии</segments> </notDefaultUseAlwaysAttributes> - <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> - <segments>НепринятыеПоДате.АвторЭтойВерсии</segments> - </notDefaultUseAlwaysAttributes> - <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> - <segments>НепринятыеПоДате.ДатаДругойВерсии</segments> - </notDefaultUseAlwaysAttributes> - <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> - <segments>НепринятыеПоДате.ДатаЭтойВерсии</segments> - </notDefaultUseAlwaysAttributes> <notDefaultUseAlwaysAttributes xsi:type="form:DataPath"> <segments>НепринятыеПоДате.НовыйОбъект</segments> </notDefaultUseAlwaysAttributes> @@ -5431,20 +5160,17 @@ </notDefaultUseAlwaysAttributes> <extInfo xsi:type="form:DynamicListExtInfo"> <queryText>ВЫБРАТЬ РАЗРЕШЕННЫЕ + НепринятаяВерсия.ДатаВерсии КАК Дата, НепринятаяВерсия.Объект КАК Ссылка, НепринятаяВерсия.Комментарий КАК ПричинаЗапрета, ВЫБОР КОГДА НепринятаяВерсия.ТипВерсииОбъекта = ЗНАЧЕНИЕ(Перечисление.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектСуществует) ТОГДА ЛОЖЬ - КОГДА НепринятаяВерсия.ТипВерсииОбъекта = ЗНАЧЕНИЕ(Перечисление.ТипыВерсийОбъекта.НепринятыеДанныеПоДатеЗапретаОбъектНеСуществует) - ТОГДА ИСТИНА + ИНАЧЕ ИСТИНА КОНЕЦ КАК НовыйОбъект, ЕСТЬNULL(НепринятаяВерсия.НомерВерсии, 0) КАК НомерДругойВерсии, НепринятаяВерсия.АвторВерсии КАК АвторДругойВерсии, - НепринятаяВерсия.ДатаВерсии КАК ДатаДругойВерсии, ЕСТЬNULL(ТекущаяВерсия.НомерВерсии, 0) КАК НомерЭтойВерсии, - ТекущаяВерсия.АвторВерсии КАК АвторЭтойВерсии, - ТекущаяВерсия.ДатаВерсии КАК ДатаЭтойВерсии, ТИПЗНАЧЕНИЯ(НепринятаяВерсия.Объект) КАК ТипСтрокой, НепринятаяВерсия.ВерсияПроигнорирована ИЗ @@ -5480,6 +5206,134 @@ <common>true</common> </edit> </attributes> + <attributes> + <name>ПоказыватьПроигнорированныеКонфликты</name> + <title> + <key>ru</key> + <value>Показывать проигнорированные конфликты</value> + + 10 + + Boolean + + + true + + + true + + + ПоказыватьПроигнорированныеКонфликты + + + + ПоказыватьПроигнорированныеНезаполненные + + <key>ru</key> + <value>Показывать проигнорированные незаполненные</value> + + 11 + + Boolean + + + true + + + true + + + ПоказыватьПроигнорированныеНезаполненные + + + + ПоказыватьПроигнорированныеНепринятые + + <key>ru</key> + <value>Показывать проигнорированные непринятые</value> + + 12 + + Boolean + + + true + + + true + + + ПоказыватьПроигнорированныеНепринятые + + + + ПоказыватьПроигнорированныеНепроведенные + + <key>ru</key> + <value>Показывать проигнорированные непроведенные</value> + + 13 + + Boolean + + + true + + + true + + + ПоказыватьПроигнорированныеНепроведенные + + + + ПричинаКонфликта + + <key>ru</key> + <value>Результат разрешения конфликта</value> + + 2 + + String + + + + true + + + true + + + + СписокУзлов + + <key>ru</key> + <value>Список узлов</value> + + 14 + + + true + + + true + + + + НастройкиОтборовДинамическихСписков + + <key>ru</key> + <value>Настройки отборов динамических списков</value> + + 15 + + + true + + + true + + ИгнорироватьДокумент @@ -5670,7 +5524,7 @@ <name>ОткрытьВерсиюНепринятые</name> <title> <key>ru</key> - <value>Открыть версию</value> + <value>Показать непринятую версию</value> 15 @@ -5715,22 +5569,22 @@ Auto - ОткрытьВерсиюКоллизии + ОткрытьВерсиюДоКонфликта <key>ru</key> - <value>Открыть версию</value> + <value>Показать версию, созданную в этой информационной базе</value> 19 ru - Открыть отклоненную версию + Открыть версию, созданную в этой информационной базе true - ОткрытьВерсиюКоллизии + ОткрытьВерсиюДоКонфликта Auto @@ -5745,7 +5599,7 @@ 20 ru - Показать отличия в виде отчета + Показать отличия между версиями в этой и в дргой программе true @@ -5793,43 +5647,25 @@ ИгнорироватьКонфликт <key>ru</key> - <value>Игнорировать</value> + <value>Подтвердить</value> 23 ru - Игнорировать конфликт + Рассмотреть и подтвердить результат автоматического разрешения конфликта true + + CommonPicture.СинхронизацияДанныхДанныеПолучены + ИгнорироватьКонфликт - Auto - Auto - - - ПерейтиНаВерсиюКонфликта - - <key>ru</key> - <value>Перейти на версию</value> - - 24 - - ru - Перейти на отклоненную версию - - - true - - - - ПерейтиНаВерсиюКонфликта - - + TextPicture Auto Auto @@ -5859,12 +5695,12 @@ НеИгнорироватьКонфликт <key>ru</key> - <value>Не игнорировать</value> + <value>Снять признак "Рассмотрено"</value> 6 ru - Отменить игнорирование конфликта + Снять с конфликта признак его рассмотренния true @@ -5900,29 +5736,7 @@ Auto - ПоказыватьПроигнорированные - - <key>ru</key> - <value>Показывать проигнорированные</value> - - 18 - - ru - Показывать проигнорированные - - - true - - - - ПоказыватьПроигнорированные - - - Auto - Auto - - - ПринятьВерсию + ПринятьВерсиюНепринятые <key>ru</key> <value>Принять версию</value> @@ -5937,26 +5751,169 @@ </use> <action xsi:type="form:FormCommandHandlerContainer"> <handler> - <name>ПринятьВерсию</name> + <name>ПринятьВерсиюНепринятые</name> + </handler> + </action> + <currentRowUse>Auto</currentRowUse> + <selectedRowsUse>Auto</selectedRowsUse> + </formCommands> + <formCommands> + <name>ОткрытьВерсиюКонфликта</name> + <title> + <key>ru</key> + <value>Показать версию, полученную из другой информационной базы</value> + + 17 + + ru + Открыть версию, полученную из другой информационной базы + + + true + + + + ОткрытьВерсиюКонфликта + + + Auto + Auto + + + ОткрытьВерсиюНепринятыеВЭтойПрограмме + + <key>ru</key> + <value>Показать версию в этой программе</value> + + 21 + + ru + Открыть версию в этой программе + + + true + + + + ОткрытьВерсиюНепринятыеВЭтойПрограмме + + + Auto + Auto + + + ПоказыватьПроигнорированныеНепроведенные + + <key>ru</key> + <value>Показывать проигнорированные</value> + + 24 + + ru + Показывать проигнорированные документы + + + true + + + + ПоказыватьПроигнорированныеНепроведенные + + + Auto + Auto + + + ПоказыватьПроигнорированныеНезаполненные + + <key>ru</key> + <value>Показывать проигнорированные</value> + + 25 + + ru + Показывать проигнорированные + + + true + + + + ПоказыватьПроигнорированныеНезаполненные + + + Auto + Auto + + + ПоказыватьПроигнорированныеКонфликты + + <key>ru</key> + <value>Показывать рассмотренные конфликты</value> + + 26 + + ru + Показывать рассмотренные конфликты + + + true + + + + ПоказыватьПроигнорированныеКонфликты + + + Auto + Auto + + + ПоказыватьПроигнорированныеНепринятые + + <key>ru</key> + <value>Показывать проигнорированные</value> + + 27 + + ru + Показывать проигнорированные + + + true + + + + ПоказыватьПроигнорированныеНепринятые + + + Auto + Auto + + + ИзменитьРезультатКонфликта + + <key>ru</key> + <value>Изменить</value> + + 18 + + ru + Рассмотреть и изменить результат разрешения конфликта на противоположный + + + true + + + + ИзменитьРезультатКонфликта Auto Auto - УзелИнформационнойБазы - - ExchangePlanRef - - - - ОткрываемаяСтраница - - String - - 50 - - + УзлыОбмена + diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl index 9c99c5359..be30e7e55 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Forms/Форма/Module.bsl @@ -1,18 +1,16 @@ - //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) - ИнформационнаяБаза = Параметры.УзелИнформационнойБазы; - - Если ЗначениеЗаполнено(Параметры.ОткрываемаяСтраница) Тогда - - Элементы.РезультатыОбменаДанными.ТекущаяСтраница = Элементы.РезультатыОбменаДанными.ПодчиненныеЭлементы[Параметры.ОткрываемаяСтраница]; - + Если Параметры.Свойство("АвтоТест") Тогда + Возврат; КонецЕсли; + // Устанавливаем отборы динамических списков и сохраняем их в реквизите для управления ими + НастроитьОтборыДинамическихСписков(НастройкиОтборовДинамическихСписков); + ИспользуетсяГрупповоеИзменение = Ложь; ОбменДаннымиСервер.ПриОпределенииИспользованияГрупповогоИзмененияОбъектов(ИспользуетсяГрупповоеИзменение); @@ -28,7 +26,7 @@ ИспользуетсяДатыЗапретаИзменения = Ложь; ОбменДаннымиСервер.ПриОпределенииИспользованияДатЗапретаИзменения(ИспользуетсяДатыЗапретаИзменения); - ОбменДаннымиСервер.ПриОпределенииИспользованияВерсионирования(ИспользуетсяВерсионирование); + ИспользуетсяВерсионирование = ОбменДаннымиПовтИсп.ИспользуетсяВерсионирование(, Истина); Если Не ИспользуетсяВерсионирование Тогда @@ -44,8 +42,15 @@ КонецЕсли; + Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда + + Элементы.КоллизииАвторДругойВерсии.Заголовок = Нстр("ru = 'Версия получена из приложения'"); + + КонецЕсли; + ЗаполнитьСписокУзлов(); - ОбновитьНаСервере(); + + ОбновитьОтборыИПроигнорированные(); КонецПроцедуры @@ -66,11 +71,7 @@ &НаСервере Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки) - ОбновитьОтборПоПериоду(Ложь); - ОбновитьОтборПоУзлу(Ложь); - ОбновитьОтборПоПричине(Ложь); - ПоказатьПроигнорированные(Ложь); - ОбновитьНаСервере(); + ОбновитьОтборыИПроигнорированные(); КонецПроцедуры @@ -177,46 +178,6 @@ КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ Коллизии - -&НаКлиенте -Процедура КоллизииВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) - - СтандартнаяОбработка = Ложь; - ТекущиеДанные = Элементы.Коллизии.ТекущиеДанные; - - Если Поле.Родитель.Имя = "КоллизииГруппаВерсияЭтойПрограммы" Тогда - - ОткрытьОбъектИлиВерсию(Элементы.Коллизии, ТекущиеДанные.ЭтаВерсияПринята, ТекущиеДанные.НомерЭтойВерсии); - - ИначеЕсли Поле.Родитель.Имя = "КоллизииГруппаВерсияДругойПрограммы" Тогда - - ОткрытьОбъектИлиВерсию(Элементы.Коллизии, ТекущиеДанные.ДругаяВерсияПринята, ТекущиеДанные.НомерДругойВерсии); - - Иначе - - ОткрытьОбъект(Элементы.Коллизии); - - КонецЕсли; - -КонецПроцедуры - -&НаКлиенте -Процедура ОткрытьОбъектИлиВерсию(Элемент, ВерсияПринята, Версия) - - Если ВерсияПринята Тогда - - ОткрытьОбъект(Элемент); - - Иначе - - ОткрытьВерсиюНаКлиенте(Элемент.ТекущиеДанные, Версия); - - КонецЕсли; - -КонецПроцедуры - &НаКлиенте Процедура КоллизииПередНачаломИзменения(Элемент, Отказ) @@ -225,22 +186,24 @@ КонецПроцедуры -//////////////////////////////////////////////////////////////////////////////// -// ОБРАБОТЧИКИ СОБЫТИЙ ТАБЛИЦЫ ФОРМЫ НепринятыеПоДате - &НаКлиенте -Процедура НепринятыеПоДатеВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка) +Процедура КоллизииПриАктивизацииСтроки(Элемент) - СтандартнаяОбработка = Ложь; - ТекущиеДанные = Элементы.НепринятыеПоДате.ТекущиеДанные; - - Если Поле.Родитель.Имя = "НепринятыеПоДатеГруппаНепринятаяВерсия" Тогда + Если Элемент.ТекущиеДанные <> Неопределено Тогда - ОткрытьВерсиюНаКлиенте(ТекущиеДанные, ТекущиеДанные.НомерДругойВерсии); - - Иначе - - ОткрытьОбъект(Элементы.НепринятыеПоДате); + Если Элемент.ТекущиеДанные.ДругаяВерсияПринята Тогда + + ПричинаКонфликта = "Конфликт был разрешен автоматически в пользу программы ""%1"". + |Версия в этой программе была замененена на версию из другой программы."; + ПричинаКонфликта = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ПричинаКонфликта, Элемент.ТекущиеДанные.АвторДругойВерсии); + + + Иначе + + ПричинаКонфликта ="Конфликт был разрешен автоматически в пользу этой программы. + |Версия в этой программе была сохранена, версия из другой программы была отклонена."; + + КонецЕсли; КонецЕсли; @@ -254,6 +217,25 @@ КонецПроцедуры +&НаКлиенте +Процедура НепринятыеПоДатеПриАктивизацииСтроки(Элемент) + + Если Элемент.ТекущиеДанные <> Неопределено Тогда + + Если Элемент.ТекущиеДанные.НовыйОбъект Тогда + + Элементы.НепринятыеПоДатеПринятьВерсию.Доступность = Ложь; + + Иначе + + Элементы.НепринятыеПоДатеПринятьВерсию.Доступность = Истина; + + КонецЕсли; + + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ КОМАНД ФОРМЫ @@ -343,18 +325,16 @@ КонецПроцедуры &НаКлиенте -Процедура ОткрытьВерсиюКоллизии(Команда) +Процедура ОткрытьВерсиюНепринятыеВЭтойПрограмме(Команда) - ТекущиеДанные = Элементы.Коллизии.ТекущиеДанные; - - Если ТекущиеДанные.ЭтаВерсияПринята Тогда - Версия = ТекущиеДанные.НомерДругойВерсии; - Иначе - Версия = ТекущиеДанные.НомерЭтойВерсии; + Если Элементы.НепринятыеПоДате.ТекущиеДанные = Неопределено Тогда + Возврат; КонецЕсли; - ОткрытьВерсиюНаКлиенте(Элементы.Коллизии.ТекущиеДанные, Версия); - + СравниваемыеВерсии = Новый Массив; + СравниваемыеВерсии.Добавить(Элементы.НепринятыеПоДате.ТекущиеДанные.НомерЭтойВерсии); + ОбменДаннымиКлиент.ПриОткрытииФормыОтчетаПоВерсии(Элементы.НепринятыеПоДате.ТекущиеДанные.Ссылка, СравниваемыеВерсии); + КонецПроцедуры &НаКлиенте @@ -371,30 +351,6 @@ КонецПроцедуры -&НаКлиенте -Процедура ПерейтиНаВерсиюКонфликта(Команда) - - ТекущиеДанные = Элементы.Коллизии.ТекущиеДанные; - - Если ТекущиеДанные = Неопределено Тогда - Возврат; - КонецЕсли; - - Если ТекущиеДанные.ЭтаВерсияПринята Тогда - ВерсияДляПерехода = ТекущиеДанные.НомерДругойВерсии; - Иначе - ВерсияДляПерехода = ТекущиеДанные.НомерЭтойВерсии; - КонецЕсли; - - Если ВерсияДляПерехода = 0 Тогда - Сообщить(НСтр("ru = 'Нет версии для перехода.'")); - Возврат; - КонецЕсли; - - ПерейтиНаВерсиюКоллизииНаСервере(ТекущиеДанные.Ссылка, ВерсияДляПерехода, ТекущиеДанные.НомерДругойВерсии); - -КонецПроцедуры - &НаКлиенте Процедура ИгнорироватьНепринятый(Команда) @@ -417,29 +373,89 @@ КонецПроцедуры &НаКлиенте -Процедура ПоказыватьПроигнорированные(Команда) +Процедура ПринятьВерсиюНепринятые(Команда) - ПоказыватьПроигнорированные = Не ПоказыватьПроигнорированные; - ПоказатьПроигнорированные(); - -КонецПроцедуры - -&НаКлиенте -Процедура ПринятьВерсию(Команда) - - ТекущиеДанные = Элементы.НепринятыеПоДате.ТекущиеДанные; - - Если ТекущиеДанные = Неопределено Или ТекущиеДанные.НомерДругойВерсии = 0 Тогда - Сообщить(НСтр("ru = 'Нет версии для перехода.'")); - Возврат; - КонецЕсли; - - Ответ = Вопрос(НСтр("ru = 'Загрузить версию, несмотря на запрет загрузки?'"), РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет); + Ответ = Вопрос(НСтр("ru = 'Принять версию, несмотря на запрет загрузки?'"), РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет); Если Ответ = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; - ПерейтиНаНепринятуюВерсиюНаСервере(ТекущиеДанные.Ссылка, ТекущиеДанные.НомерДругойВерсии); + ПринятьОтклонитьВерсиюНаСервере(Элементы.НепринятыеПоДате.ВыделенныеСтроки, Истина, "НепринятыеПоДате"); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьВерсиюДоКонфликта(Команда) + + ТекущиеДанные = Элементы.Коллизии.ТекущиеДанные; + ОткрытьВерсиюНаКлиенте(Элементы.Коллизии.ТекущиеДанные, ТекущиеДанные.НомерЭтойВерсии); + +КонецПроцедуры + +&НаКлиенте +Процедура ОткрытьВерсиюКонфликта(Команда) + + ТекущиеДанные = Элементы.Коллизии.ТекущиеДанные; + ОткрытьВерсиюНаКлиенте(Элементы.Коллизии.ТекущиеДанные, ТекущиеДанные.НомерДругойВерсии); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПроигнорированныеКонфликты(Команда) + + ПоказыватьПроигнорированныеКонфликты = Не ПоказыватьПроигнорированныеКонфликты; + ПоказыватьПроигнорированныеКонфликтыНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПроигнорированныеНезаполненные(Команда) + + ПоказыватьПроигнорированныеНезаполненные = Не ПоказыватьПроигнорированныеНезаполненные; + ПоказыватьПроигнорированныеНезаполненныеНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПроигнорированныеНепринятые(Команда) + + ПоказыватьПроигнорированныеНепринятые = Не ПоказыватьПроигнорированныеНепринятые; + ПоказыватьПроигнорированныеНепринятыеНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьПроигнорированныеНепроведенные(Команда) + + ПоказыватьПроигнорированныеНепроведенные = Не ПоказыватьПроигнорированныеНепроведенные; + ПоказыватьПроигнорированныеНепроведенныеНаСервере(); + +КонецПроцедуры + +&НаКлиенте +Процедура ИзменитьРезультатКонфликта(Команда) + + Если Элементы.Коллизии.ТекущиеДанные <> Неопределено Тогда + + Если Элементы.Коллизии.ТекущиеДанные.ДругаяВерсияПринята Тогда + + ТекстВопроса = Нстр("ru = 'Заменить версию, полученную из другой программы, на версию из этой программы?'"); + + Иначе + + ТекстВопроса = Нстр("ru = 'Заменить версию этой программы на версию, полученную из другой программы?'"); + + КонецЕсли; + + Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет); + + Если Ответ = КодВозвратаДиалога.Да Тогда + + ПринятьОтклонитьВерсиюНаСервере(Элементы.Коллизии.ВыделенныеСтроки, Элементы.Коллизии.ТекущиеДанные.ДругаяВерсияПринята, "Коллизии"); + + КонецЕсли; + + КонецЕсли; КонецПроцедуры @@ -464,18 +480,80 @@ КонецПроцедуры &НаСервере -Процедура ПоказатьПроигнорированные(Обновлять= Истина) +Процедура ПоказыватьПроигнорированныеКонфликтыНаСервере(Обновлять= Истина) - Элементы.ФормаПоказыватьПроигнорированные.Пометка = ПоказыватьПроигнорированные; - - НепроведенныеДокументы.Отбор.Элементы[0].Использование = Не ПоказыватьПроигнорированные; - НезаполненныеРеквизиты.Отбор.Элементы[0].Использование = Не ПоказыватьПроигнорированные; - Коллизии.Отбор.Элементы[2].Использование = Не ПоказыватьПроигнорированные; - НепринятыеПоДате.Отбор.Элементы[3].Использование = Не ПоказыватьПроигнорированные; + Элементы.КоллизииПоказыватьПроигнорированныеКонфликты.Пометка = ПоказыватьПроигнорированныеКонфликты; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Коллизии, + "ВерсияПроигнорирована", + , + , + , + Не ПоказыватьПроигнорированныеКонфликты); Если Обновлять Тогда - ОбновитьНаСервере(); + ОбновитьНаСервере("Коллизии"); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПоказыватьПроигнорированныеНезаполненныеНаСервере(Обновлять= Истина) + + Элементы.НезаполненныеРеквизитыПоказыватьПроигнорированныеНезаполненные.Пометка = ПоказыватьПроигнорированныеНезаполненные; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + НезаполненныеРеквизиты, + "Пропущена", + , + , + , + Не ПоказыватьПроигнорированныеНезаполненные); + + Если Обновлять Тогда + + ОбновитьНаСервере("НезаполненныеРеквизиты"); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПоказыватьПроигнорированныеНепринятыеНаСервере(Обновлять= Истина) + + Элементы.НепринятыеПоДатеПоказыватьПроигнорированныеНепринятые.Пометка = ПоказыватьПроигнорированныеНепринятые; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + НепринятыеПоДате, + "ВерсияПроигнорирована", + , + , + , + Не ПоказыватьПроигнорированныеНепринятые); + + Если Обновлять Тогда + + ОбновитьНаСервере("НепринятыеПоДате"); + + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура ПоказыватьПроигнорированныеНепроведенныеНаСервере(Обновлять= Истина) + + Элементы.НепроведенныеДокументыПоказыватьПроигнорированныеНепроведенные.Пометка = ПоказыватьПроигнорированныеНепроведенные; + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + НепроведенныеДокументы, + "Пропущена", + , + , + , + Не ПоказыватьПроигнорированныеНепроведенные); + + Если Обновлять Тогда + + ОбновитьНаСервере("НепроведенныеДокументы"); КонецЕсли; @@ -505,6 +583,88 @@ &НаСервере Процедура ЗаполнитьСписокУзлов() + ОтсутствуетОбменПоПравилам = Истина; + КонтекстноеОткрытие = ЗначениеЗаполнено(Параметры.УзлыОбмена); + + УзлыОбмена = ?(КонтекстноеОткрытие, Параметры.УзлыОбмена, МассивУзловПриНеконтекстномОткрытии()); + Элементы.УзелИнформационнойБазы.СписокВыбора.ЗагрузитьЗначения(УзлыОбмена); + + Для Каждого УзелОбмена Из УзлыОбмена Цикл + + Если ОбменДаннымиПовтИсп.ЭтоУзелУниверсальногоОбменаДанными(УзелОбмена) Тогда + + ОтсутствуетОбменПоПравилам = Ложь; + + КонецЕсли; + + КонецЦикла; + + Если КонтекстноеОткрытие Тогда + + УстановитьОтборПоУзлам(УзлыОбмена); + СписокУзлов = Новый СписокЗначений; + СписокУзлов.ЗагрузитьЗначения(УзлыОбмена); + + КонецЕсли; + + Если КонтекстноеОткрытие И УзлыОбмена.Количество() = 1 Тогда + + УзелИнформационнойБазы = Неопределено; + Элементы.УзелИнформационнойБазы.Видимость = Ложь; + Элементы.НепроведенныеДокументыУзелИнформационнойБазы.Видимость = Ложь; + Элементы.НезаполненныеРеквизитыУзелИнформационнойБазы.Видимость = Ложь; + Элементы.КоллизииАвторДругойВерсии.Видимость = Ложь; + Элементы.НепринятыеПоДатеАвторДругойВерсии.Видимость = Ложь; + + ИначеЕсли УзлыОбмена.Количество() >= 7 Тогда + + Элементы.УзелИнформационнойБазы.РежимВыбораИзСписка = Ложь; + + КонецЕсли; + + Если КонтекстноеОткрытие И ОтсутствуетОбменПоПравилам Тогда + Заголовок = Нстр("ru = 'Конфликты при синхронизации данных'"); + Элементы.СтрокаПоиска.Видимость = Ложь; + Элементы.РезультатыОбменаДанными.ТекущаяСтраница = Элементы.РезультатыОбменаДанными.ПодчиненныеЭлементы.СтраницаКоллизии; + Элементы.РезультатыОбменаДанными.ОтображениеСтраниц = ОтображениеСтраницФормы.Нет; + КонецЕсли; + +КонецПроцедуры + +&НаСервере +Процедура УстановитьОтборПоУзлам(УзлыОбмена) + + ОтборПоУзламДокумент = ЭлементОтбораДинамическогоСписка(НепроведенныеДокументы, + НастройкиОтборовДинамическихСписков.НепроведенныеДокументы.УзелВСписке); + + ОтборПоУзламОбъект = ЭлементОтбораДинамическогоСписка(НезаполненныеРеквизиты, + НастройкиОтборовДинамическихСписков.НезаполненныеРеквизиты.УзелВСписке); + + ОтборПоУзламКоллизии = ЭлементОтбораДинамическогоСписка(Коллизии, + НастройкиОтборовДинамическихСписков.Коллизии.АвторВСписке); + + ОтборПоУзламНепринятые = ЭлементОтбораДинамическогоСписка(НепринятыеПоДате, + НастройкиОтборовДинамическихСписков.НепринятыеПоДате.АвторВСписке); + + ОтборПоУзламДокумент.Использование = Истина; + ОтборПоУзламДокумент.ПравоеЗначение = УзлыОбмена; + + ОтборПоУзламОбъект.Использование = Истина; + ОтборПоУзламОбъект.ПравоеЗначение = УзлыОбмена; + + ОтборПоУзламКоллизии.Использование = Истина; + ОтборПоУзламКоллизии.ПравоеЗначение = УзлыОбмена; + + ОтборПоУзламНепринятые.Использование = Истина; + ОтборПоУзламНепринятые.ПравоеЗначение = УзлыОбмена; + +КонецПроцедуры + +&НаСервере +Функция МассивУзловПриНеконтекстномОткрытии() + + УзлыОбмена = Новый Массив; + СписокПлановОбмена = ОбменДаннымиПовтИсп.ПланыОбменаБСП(); Для Каждого ИмяПланаОбмена Из СписокПлановОбмена Цикл @@ -516,8 +676,7 @@ Запрос.УстановитьПараметр("ЭтотУзел", ПланыОбмена[ИмяПланаОбмена].ЭтотУзел()); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ - | ТаблицаПланаОбмена.Ссылка, - | ТаблицаПланаОбмена.Представление КАК Представление + | ТаблицаПланаОбмена.Ссылка КАК УзелОбмена |ИЗ | &ТаблицаПланаОбмена КАК ТаблицаПланаОбмена |ГДЕ @@ -532,94 +691,87 @@ Пока Выборка.Следующий() Цикл - Элементы.УзелИнформационнойБазы.СписокВыбора.Добавить(Выборка.Ссылка, Выборка.Представление); + УзлыОбмена.Добавить(Выборка.УзелОбмена); КонецЦикла; КонецЦикла; - Если Элементы.УзелИнформационнойБазы.СписокВыбора.Количество() >= 7 Тогда - - Элементы.УзелИнформационнойБазы.РежимВыбораИзСписка = Ложь; - - КонецЕсли; + Возврат УзлыОбмена; -КонецПроцедуры +КонецФункции &НаСервере Процедура ОбновитьОтборПоУзлу(Обновлять = Истина) - ОтборПоУзлуДокумент = НепроведенныеДокументы.Отбор.Элементы[2]; - ОтборПоУзлуОбъект = НезаполненныеРеквизиты.Отбор.Элементы[2]; - ОтборПоУзлуКоллизии = Коллизии.Отбор.Элементы[0]; - ОтборПоУзлуНепринятые = НепринятыеПоДате.Отбор.Элементы[0]; + ОтборПоУзлуДокумент = ЭлементОтбораДинамическогоСписка(НепроведенныеДокументы, + НастройкиОтборовДинамическихСписков.НепроведенныеДокументы.УзелРавно); - Если ЗначениеЗаполнено(УзелИнформационнойБазы) Тогда + ОтборПоУзлуОбъект = ЭлементОтбораДинамическогоСписка(НезаполненныеРеквизиты, + НастройкиОтборовДинамическихСписков.НезаполненныеРеквизиты.УзелРавно); - ОтборПоУзлуДокумент.Использование = Истина; - ОтборПоУзлуДокумент.ПравоеЗначение = УзелИнформационнойБазы; + ОтборПоУзлуКоллизии = ЭлементОтбораДинамическогоСписка(Коллизии, + НастройкиОтборовДинамическихСписков.Коллизии.АвторРавно); - ОтборПоУзлуОбъект.Использование = Истина; - ОтборПоУзлуОбъект.ПравоеЗначение = УзелИнформационнойБазы; - - ОтборПоУзлуКоллизии.Использование = Истина; - ОтборПоУзлуКоллизии.ПравоеЗначение = УзелИнформационнойБазы; - - ОтборПоУзлуНепринятые.Использование = Истина; - ОтборПоУзлуНепринятые.ПравоеЗначение = УзелИнформационнойБазы; - - Иначе - - ОтборПоУзлуДокумент.Использование = Ложь; - ОтборПоУзлуОбъект.Использование = Ложь; - ОтборПоУзлуКоллизии.Использование = Ложь; - ОтборПоУзлуНепринятые.Использование = Ложь; - - КонецЕсли; + ОтборПоУзлуНепринятые = ЭлементОтбораДинамическогоСписка(НепринятыеПоДате, + НастройкиОтборовДинамическихСписков.НепринятыеПоДате.АвторРавно); + + Использование = ЗначениеЗаполнено(УзелИнформационнойБазы); + + // Использование + ОтборПоУзлуДокумент.Использование = Использование; + ОтборПоУзлуОбъект.Использование = Использование; + ОтборПоУзлуКоллизии.Использование = Использование; + ОтборПоУзлуНепринятые.Использование = Использование; + + // И значение + ОтборПоУзлуДокумент.ПравоеЗначение = УзелИнформационнойБазы; + ОтборПоУзлуОбъект.ПравоеЗначение = УзелИнформационнойБазы; + ОтборПоУзлуКоллизии.ПравоеЗначение = УзелИнформационнойБазы; + ОтборПоУзлуНепринятые.ПравоеЗначение = УзелИнформационнойБазы; Если Обновлять Тогда - ОбновитьНаСервере(); - КонецЕсли; - КонецПроцедуры &НаСервере Функция КоличествоНепринятых() - КоличествоНепринятых = 0; - ОбменДаннымиСервер.ПриОбновленииЗаголовковСтраницРезультатовОбменаДанными(КоличествоНепринятых, Ложь, - ПоказыватьПроигнорированные, УзелИнформационнойБазы, Период, СтрокаПоиска); - - Возврат КоличествоНепринятых; + УзлыОбмена = ?(ЗначениеЗаполнено(УзелИнформационнойБазы), УзелИнформационнойБазы, СписокУзлов); + + Возврат ОбменДаннымиСервер.КоличествоПроблемВерсионирования(УзлыОбмена, Ложь, + ПоказыватьПроигнорированныеКонфликты, Период, СтрокаПоиска); КонецФункции &НаСервере Функция КоличествоКоллизий() - КоличествоКоллизий = 0; - ОбменДаннымиСервер.ПриОбновленииЗаголовковСтраницРезультатовОбменаДанными(КоличествоКоллизий, Истина, - ПоказыватьПроигнорированные, УзелИнформационнойБазы, Период, СтрокаПоиска); - - Возврат КоличествоКоллизий; - + УзлыОбмена = ?(ЗначениеЗаполнено(УзелИнформационнойБазы), УзелИнформационнойБазы, СписокУзлов); + + Возврат ОбменДаннымиСервер.КоличествоПроблемВерсионирования(УзлыОбмена, Истина, + ПоказыватьПроигнорированныеКонфликты, Период, СтрокаПоиска); + КонецФункции &НаСервере Функция КоличествоНезаполненныхРеквизитов() - Возврат РегистрыСведений.РезультатыОбменаДанными.КоличествоПроблем(Перечисления.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты, - УзелИнформационнойБазы, ПоказыватьПроигнорированные, Период, СтрокаПоиска); + УзлыОбмена = ?(ЗначениеЗаполнено(УзелИнформационнойБазы), УзелИнформационнойБазы, СписокУзлов); + + Возврат РегистрыСведений.РезультатыОбменаДанными.КоличествоПроблем(УзлыОбмена, Перечисления.ТипыПроблемОбменаДанными.НезаполненныеРеквизиты, + ПоказыватьПроигнорированныеНезаполненные, Период, СтрокаПоиска); КонецФункции &НаСервере Функция КоличествоНепроведенныхДокументов() - Возврат РегистрыСведений.РезультатыОбменаДанными.КоличествоПроблем(Перечисления.ТипыПроблемОбменаДанными.НепроведенныйДокумент, - УзелИнформационнойБазы, ПоказыватьПроигнорированные, Период, СтрокаПоиска); + УзлыОбмена = ?(ЗначениеЗаполнено(УзелИнформационнойБазы), УзелИнформационнойБазы, СписокУзлов); + + Возврат РегистрыСведений.РезультатыОбменаДанными.КоличествоПроблем(УзлыОбмена, Перечисления.ТипыПроблемОбменаДанными.НепроведенныйДокумент, + ПоказыватьПроигнорированныеНепроведенные, Период, СтрокаПоиска); КонецФункции @@ -702,17 +854,29 @@ СтрокаПоискаЗадана = ЗначениеЗаполнено(СтрокаПоиска); - ОтборПоПричинеДокумент = НепроведенныеДокументы.Отбор.Элементы[3]; - ОтборПоПричинеДокумент.ПравоеЗначение = СтрокаПоиска; - ОтборПоПричинеДокумент.Использование = ?(СтрокаПоискаЗадана, Истина, Ложь); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + НепроведенныеДокументы, + "Причина", + СтрокаПоиска, + , + , + СтрокаПоискаЗадана); - ОтборПоПричинеОбъект = НезаполненныеРеквизиты.Отбор.Элементы[3]; - ОтборПоПричинеОбъект.ПравоеЗначение = СтрокаПоиска; - ОтборПоПричинеОбъект.Использование = ?(СтрокаПоискаЗадана, Истина, Ложь); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + НезаполненныеРеквизиты, + "Причина", + СтрокаПоиска, + , + , + СтрокаПоискаЗадана); - ОтборПоПричинеНепринятые = НепринятыеПоДате.Отбор.Элементы[2]; - ОтборПоПричинеНепринятые.ПравоеЗначение = СтрокаПоиска; - ОтборПоПричинеНепринятые.Использование = ?(СтрокаПоискаЗадана, Истина, Ложь); + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + НепринятыеПоДате, + "ПричинаЗапрета", + СтрокаПоиска, + , + , + СтрокаПоискаЗадана); Если Обновлять Тогда @@ -725,44 +889,57 @@ &НаСервере Процедура ОбновитьОтборПоПериоду(Обновлять = Истина) - ОтборПоПериодуДокумент = НепроведенныеДокументы.Отбор.Элементы[1]; - ОтборПоПериодуОбъект = НезаполненныеРеквизиты.Отбор.Элементы[1]; - ОтборПоПериодуКоллизии = Коллизии.Отбор.Элементы[1]; - ОтборПоПериодуНепринятые = НепринятыеПоДате.Отбор.Элементы[1]; + ОтборПоПериодуДокументС = ЭлементОтбораДинамическогоСписка(НепроведенныеДокументы, + НастройкиОтборовДинамическихСписков.НепроведенныеДокументы.ДатаНачала); + ОтборПоПериодуДокументПо = ЭлементОтбораДинамическогоСписка(НепроведенныеДокументы, + НастройкиОтборовДинамическихСписков.НепроведенныеДокументы.ДатаОкончания); - Если ЗначениеЗаполнено(Период) Тогда - - ОтборПоПериодуДокумент.Использование = Истина; - ОтборПоПериодуДокумент.Элементы[0].ПравоеЗначение = Период.ДатаНачала; - ОтборПоПериодуДокумент.Элементы[1].ПравоеЗначение = Период.ДатаОкончания; - - ОтборПоПериодуОбъект.Использование = Истина; - ОтборПоПериодуОбъект.Элементы[0].ПравоеЗначение = Период.ДатаНачала; - ОтборПоПериодуОбъект.Элементы[1].ПравоеЗначение = Период.ДатаОкончания; - - ОтборПоПериодуКоллизии.Использование = Истина; - ОтборПоПериодуКоллизии.Элементы[0].ПравоеЗначение = Период.ДатаНачала; - ОтборПоПериодуКоллизии.Элементы[1].ПравоеЗначение = Период.ДатаОкончания; - - ОтборПоПериодуНепринятые.Использование = Истина; - ОтборПоПериодуНепринятые.Элементы[0].ПравоеЗначение = Период.ДатаНачала; - ОтборПоПериодуНепринятые.Элементы[1].ПравоеЗначение = Период.ДатаОкончания; - - Иначе - - ОтборПоПериодуДокумент.Использование = Ложь; - ОтборПоПериодуОбъект.Использование = Ложь; - ОтборПоПериодуКоллизии.Использование = Ложь; - ОтборПоПериодуНепринятые.Использование = Ложь; - - КонецЕсли; + ОтборПоПериодуОбъектС = ЭлементОтбораДинамическогоСписка(НезаполненныеРеквизиты, + НастройкиОтборовДинамическихСписков.НезаполненныеРеквизиты.ДатаНачала); + ОтборПоПериодуОбъектПо = ЭлементОтбораДинамическогоСписка(НезаполненныеРеквизиты, + НастройкиОтборовДинамическихСписков.НезаполненныеРеквизиты.ДатаОкончания); + + ОтборПоПериодуКоллизииС = ЭлементОтбораДинамическогоСписка(Коллизии, + НастройкиОтборовДинамическихСписков.Коллизии.ДатаНачала); + ОтборПоПериодуКоллизииПо = ЭлементОтбораДинамическогоСписка(Коллизии, + НастройкиОтборовДинамическихСписков.Коллизии.ДатаОкончания); + + ОтборПоПериодуНепринятыеС = ЭлементОтбораДинамическогоСписка(НепринятыеПоДате, + НастройкиОтборовДинамическихСписков.НепринятыеПоДате.ДатаНачала); + ОтборПоПериодуНепринятыеПо = ЭлементОтбораДинамическогоСписка(НепринятыеПоДате, + НастройкиОтборовДинамическихСписков.НепринятыеПоДате.ДатаОкончания); + + Использование = ЗначениеЗаполнено(Период); + + // Использование + ОтборПоПериодуДокументС.Использование = Использование; + ОтборПоПериодуДокументПо.Использование = Использование; + + ОтборПоПериодуОбъектС.Использование = Использование; + ОтборПоПериодуОбъектПо.Использование = Использование; + + ОтборПоПериодуКоллизииС.Использование = Использование; + ОтборПоПериодуКоллизииПо.Использование = Использование; + + ОтборПоПериодуНепринятыеС.Использование = Использование; + ОтборПоПериодуНепринятыеПо.Использование = Использование; + + // И границы + ОтборПоПериодуДокументС.ПравоеЗначение = Период.ДатаНачала; + ОтборПоПериодуДокументПо.ПравоеЗначение = Период.ДатаОкончания; + + ОтборПоПериодуОбъектС.ПравоеЗначение = Период.ДатаНачала; + ОтборПоПериодуОбъектПо.ПравоеЗначение = Период.ДатаОкончания; + + ОтборПоПериодуКоллизииС.ПравоеЗначение = Период.ДатаНачала; + ОтборПоПериодуКоллизииПо.ПравоеЗначение = Период.ДатаОкончания; + + ОтборПоПериодуНепринятыеС.ПравоеЗначение = Период.ДатаНачала; + ОтборПоПериодуНепринятыеПо.ПравоеЗначение = Период.ДатаОкончания; Если Обновлять Тогда - ОбновитьНаСервере(); - КонецЕсли; - КонецПроцедуры &НаСервере @@ -823,22 +1000,6 @@ КонецПроцедуры -&НаСервере -Процедура ПерейтиНаВерсиюКоллизииНаСервере(Ссылка, ВерсияДляПерехода, ИгнорируемаяВерсия) - - ОбменДаннымиСервер.ПриПереходеНаВерсиюОбъекта(Ссылка, ВерсияДляПерехода, ИгнорируемаяВерсия); - ОбновитьНаСервере("Коллизии"); - -КонецПроцедуры - -&НаСервере -Процедура ПерейтиНаНепринятуюВерсиюНаСервере(Ссылка, НомерВерсии) - - ОбменДаннымиСервер.ПриПереходеНаВерсиюОбъекта(Ссылка, НомерВерсии, НомерВерсии, Истина); - ОбновитьНаСервере("НепринятыеПоДате"); - -КонецПроцедуры - &НаКлиенте Процедура ОткрытьВерсиюНаКлиенте(ТекущиеДанные, Версия) @@ -851,3 +1012,139 @@ ОбменДаннымиКлиент.ПриОткрытииФормыОтчетаПоВерсии(ТекущиеДанные.Ссылка, СравниваемыеВерсии); КонецПроцедуры + +&НаСервере +Процедура ПринятьОтклонитьВерсиюНаСервере(Знач ВыделенныеСтроки, ПринятьВерсию, ИмяЭлемента, ПропуститьПроверкуЗапретаИзменения = Ложь) + + Для Каждого ВыделеннаяСтрока Из ВыделенныеСтроки Цикл + + Если ТипЗнч(ВыделеннаяСтрока) = Тип("СтрокаГруппировкиДинамическогоСписка") Тогда + Продолжить; + КонецЕсли; + + ОбменДаннымиСервер.ПриПереходеНаВерсиюОбъекта(ВыделеннаяСтрока.Объект, ВыделеннаяСтрока.НомерВерсии, ПропуститьПроверкуЗапретаИзменения); + + КонецЦикла; + + ОбновитьНаСервере(ИмяЭлемента); + +КонецПроцедуры + +&НаСервере +Процедура НастроитьОтборыДинамическихСписков(Результат) + Результат = Новый Структура; + + // Непроведенные документы + Отбор = ОтборДинамическогоСписка(НепроведенныеДокументы); + Результат.Вставить("НепроведенныеДокументы", Новый Структура); + Настройка = Результат.НепроведенныеДокументы; + + Настройка.Вставить("Пропущена", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Пропущена", ВидСравненияКомпоновкиДанных.Равно, Ложь, ,Истина))); + Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина))); + Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина))); + Настройка.Вставить("УзелРавно", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.Равно, Неопределено, , Ложь))); + Настройка.Вставить("Причина", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Причина", ВидСравненияКомпоновкиДанных.Содержит, Неопределено, , Ложь))); + Настройка.Вставить("УзелВСписке", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, , Ложь))); + + // Незаполненные реквизиты + Отбор = ОтборДинамическогоСписка(НезаполненныеРеквизиты); + Результат.Вставить("НезаполненныеРеквизиты", Новый Структура); + Настройка = Результат.НезаполненныеРеквизиты; + + Настройка.Вставить("Пропущена", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Пропущена", ВидСравненияКомпоновкиДанных.Равно, Ложь, ,Истина))); + Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина))); + Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ДатаВозникновения", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина))); + Настройка.Вставить("УзелРавно", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.Равно, Неопределено, , Ложь))); + Настройка.Вставить("Причина", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Причина", ВидСравненияКомпоновкиДанных.Содержит, Неопределено, , Ложь))); + Настройка.Вставить("УзелВСписке", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "УзелИнформационнойБазы", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, , Ложь))); + + // Конфликты + Отбор = ОтборДинамическогоСписка(Коллизии); + Результат.Вставить("Коллизии", Новый Структура); + Настройка = Результат.Коллизии; + + Настройка.Вставить("АвторРавно", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.Равно, Неопределено, ,Ложь))); + Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина))); + Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина))); + Настройка.Вставить("ВерсияПроигнорирована", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ВерсияПроигнорирована", ВидСравненияКомпоновкиДанных.Равно, Ложь, , Истина))); + Настройка.Вставить("АвторВСписке", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, ,Ложь))); + + // Непринятые по дате запрета + Отбор = ОтборДинамическогоСписка(НепринятыеПоДате); + Результат.Вставить("НепринятыеПоДате", Новый Структура); + Настройка = Результат.НепринятыеПоДате; + + Настройка.Вставить("АвторРавно", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.Равно, Неопределено, ,Ложь))); + Настройка.Вставить("ДатаНачала", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.БольшеИлиРавно, '00010101', , Истина))); + Настройка.Вставить("ДатаОкончания", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "Дата", ВидСравненияКомпоновкиДанных.МеньшеИлиРавно, '00010101', , Истина))); + Настройка.Вставить("ПричинаЗапрета", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ПричинаЗапрета", ВидСравненияКомпоновкиДанных.Равно, Неопределено, , Ложь))); + Настройка.Вставить("ВерсияПроигнорирована", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "ВерсияПроигнорирована", ВидСравненияКомпоновкиДанных.Равно, Ложь, , Истина))); + Настройка.Вставить("АвторВСписке", Отбор.ПолучитьИдентификаторПоОбъекту( + ОбщегоНазначенияКлиентСервер.ДобавитьЭлементКомпоновки(Отбор, "АвторДругойВерсии", ВидСравненияКомпоновкиДанных.ВСписке, Неопределено, ,Ложь))); + +КонецПроцедуры + +&НаСервереБезКонтекста +Функция ОтборДинамическогоСписка(Знач ДинамическийСписок) + Если ОбщегоНазначенияКлиентСервер.ЭтоПлатформа83БезРежимаСовместимости() Тогда + Возврат ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор; + КонецЕсли; + Возврат ДинамическийСписок.Отбор; +КонецФункции + +&НаСервереБезКонтекста +Функция ЭлементОтбораДинамическогоСписка(Знач ДинамическийСписок, Знач Идентификатор) + Отбор = ОтборДинамическогоСписка(ДинамическийСписок); + Возврат Отбор.ПолучитьОбъектПоИдентификатору(Идентификатор); +КонецФункции + +&НаСервере +Процедура ОбновитьОтборыИПроигнорированные() + + ОбновитьОтборПоПериоду(Ложь); + ОбновитьОтборПоУзлу(Ложь); + ОбновитьОтборПоПричине(Ложь); + + ПоказыватьПроигнорированныеКонфликтыНаСервере(Ложь); + ПоказыватьПроигнорированныеНезаполненныеНаСервере(Ложь); + ПоказыватьПроигнорированныеНепринятыеНаСервере(Ложь); + ПоказыватьПроигнорированныеНепроведенныеНаСервере(Ложь); + + ОбновитьНаСервере(); + + Если Не Элементы.РезультатыОбменаДанными.ТекущаяСтраница = Элементы.РезультатыОбменаДанными.ПодчиненныеЭлементы.СтраницаКоллизии Тогда + + Для Каждого Страница Из Элементы.РезультатыОбменаДанными.ПодчиненныеЭлементы Цикл + + Если Найти(Страница.Заголовок, "(") Тогда + Элементы.РезультатыОбменаДанными.ТекущаяСтраница = Страница; + Прервать; + КонецЕсли; + + КонецЦикла; + + КонецЕсли; + +КонецПроцедуры diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/Help/ru.html b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Help/ru.html new file mode 100644 index 000000000..c02c1c1ef --- /dev/null +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/Help/ru.html @@ -0,0 +1,10 @@ + +

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

                      +

                      Непроведенные документы

                      +

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

                      +

                      Незаполненные реквизиты

                      +

                      Содержит список незаполненных реквизитов элементов справочников. Для исправления необходимо открыть элемент справочника (это можно сделать по двойному клику мыши на нем) и заполнить обязательные для заполнения поля. После чего необходимо записать элемент. Для удаления элемента справочника из этого списка без устранения заполнения обязательных реквизитов используйте команду Игнорировать.

                      +

                      Конфликты

                      +

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

                      +

                      Непринятые по дате запрета

                      +

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

                      \ No newline at end of file diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/ManagerModule.bsl b/SSL/src/InformationRegisters/РезультатыОбменаДанными/ManagerModule.bsl index e8e6fb9fd..ab7051554 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/ManagerModule.bsl @@ -3,7 +3,7 @@ //////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ -Процедура ЗарегистрироватьОшибкуПроверкиОбъекта(Ссылка, УзелИнформационнойБазы, ТипСтрокой, Причина, ТипПроблемы) Экспорт +Процедура ЗарегистрироватьОшибкуПроверкиОбъекта(Ссылка, УзелИнформационнойБазы, Причина, ТипПроблемы) Экспорт НаборЗаписейКонфликта = РегистрыСведений.РезультатыОбменаДанными.СоздатьНаборЗаписей(); НаборЗаписейКонфликта.Отбор.ПроблемныйОбъект.Установить(Ссылка); @@ -43,7 +43,7 @@ КонецПроцедуры -Функция КоличествоПроблем(ТипПроблемы = Неопределено, УзелИнформационнойБазы = Неопределено, УчитыватьПроигнорированные = Ложь, Период = Неопределено, СтрокаПоиска = "") Экспорт +Функция КоличествоПроблем(УзлыОбмена = Неопределено, ТипПроблемы = Неопределено, УчитыватьПроигнорированные = Ложь, Период = Неопределено, СтрокаПоиска = "") Экспорт Количество = 0; @@ -71,12 +71,16 @@ КонецЕсли; ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ОтборПоТипу]", СтрокаОтбора); - Если УзелИнформационнойБазы = Неопределено Тогда + Если УзлыОбмена = Неопределено Тогда СтрокаОтбора = ""; - Иначе + ИначеЕсли ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипЗнч(УзлыОбмена)) Тогда СтрокаОтбора = "И РезультатыОбменаДанными.УзелИнформационнойБазы = &УзелИнформационнойБазы"; - Запрос.УстановитьПараметр("УзелИнформационнойБазы", УзелИнформационнойБазы); + Запрос.УстановитьПараметр("УзелИнформационнойБазы", УзлыОбмена); + Иначе + СтрокаОтбора = "И РезультатыОбменаДанными.УзелИнформационнойБазы В (&УзлыОбмена)"; + Запрос.УстановитьПараметр("УзлыОбмена", УзлыОбмена); КонецЕсли; + ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ОтборПоУзлу]", СтрокаОтбора); Если ЗначениеЗаполнено(Период) Тогда diff --git a/SSL/src/InformationRegisters/РезультатыОбменаДанными/РезультатыОбменаДанными.mdo b/SSL/src/InformationRegisters/РезультатыОбменаДанными/РезультатыОбменаДанными.mdo index 58f68a88e..4b818b4aa 100644 --- a/SSL/src/InformationRegisters/РезультатыОбменаДанными/РезультатыОбменаДанными.mdo +++ b/SSL/src/InformationRegisters/РезультатыОбменаДанными/РезультатыОбменаДанными.mdo @@ -12,7 +12,7 @@ РезультатыОбменаДанными ru - Результаты обмена данными + Предупреждения при синхронизации данных InDialog InformationRegister.РезультатыОбменаДанными.Form.Форма @@ -49,10 +49,15 @@ + + + ru + + Managed ru - Конфликт синхронизации данных + Предупреждение при синхронизации данных УзелИнформационнойБазы diff --git a/SSL/src/InformationRegisters/СостоянияРассылокОтчетов/ManagerModule.bsl b/SSL/src/InformationRegisters/СостоянияРассылокОтчетов/ManagerModule.bsl index 108e200f3..d0a151413 100644 --- a/SSL/src/InformationRegisters/СостоянияРассылокОтчетов/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/СостоянияРассылокОтчетов/ManagerModule.bsl @@ -25,8 +25,7 @@ РезультатВыполнения.ВыполненаВПапку ИЛИ РезультатВыполнения.ВыполненаВСетевойКаталог ИЛИ РезультатВыполнения.ВыполненаНаFTP - ИЛИ РезультатВыполнения.ВыполненаПоЭлектроннойПочте - ); + ИЛИ РезультатВыполнения.ВыполненаПоЭлектроннойПочте); МенеджерЗаписи.СОшибками = РезультатВыполнения.БылиОшибки ИЛИ РезультатВыполнения.БылиПредупреждения; @@ -34,4 +33,4 @@ КонецПроцедуры -#КонецЕсли \ No newline at end of file +#КонецЕсли diff --git a/SSL/src/InformationRegisters/ТаблицыГруппДоступа/ManagerModule.bsl b/SSL/src/InformationRegisters/ТаблицыГруппДоступа/ManagerModule.bsl index 0f3f20d9b..f4f2a6e6c 100644 --- a/SSL/src/InformationRegisters/ТаблицыГруппДоступа/ManagerModule.bsl +++ b/SSL/src/InformationRegisters/ТаблицыГруппДоступа/ManagerModule.bsl @@ -60,6 +60,12 @@ Таблицы = Неопределено, ЕстьИзменения = Неопределено) Экспорт + Если ТипЗнч(Таблицы) = Тип("Массив") + И Таблицы.Количество() > 500 Тогда + + Таблицы = Неопределено; + КонецЕсли; + УстановитьПривилегированныйРежим(Истина); ТекстЗапросовВременныхТаблиц = diff --git a/SSL/src/InformationRegisters/УдалитьСвязиПоставляемыхДанных/УдалитьСвязиПоставляемыхДанных.mdo b/SSL/src/InformationRegisters/УдалитьСвязиПоставляемыхДанных/УдалитьСвязиПоставляемыхДанных.mdo deleted file mode 100644 index 991da627a..000000000 --- a/SSL/src/InformationRegisters/УдалитьСвязиПоставляемыхДанных/УдалитьСвязиПоставляемыхДанных.mdo +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - - - - - - - УдалитьСвязиПоставляемыхДанных - - ru - (Не используется) Связи поставляемых данных - - true - InDialog - - Use - Active - - Use - - - - - Use - LineNumber - - Use - - - - - Use - Recorder - - Use - - - - - Use - Period - - ShowError - Use - - - - Managed - - РучноеИзменение - - ru - Ручное изменение - - - Boolean - - - - Use - Use - - - - ОбластьДанных - - ru - Область данных - - - Number - - 7 - true - - - - - Use - Use - - true - - - ЭлементРазделенныхДанных - - ru - Элемент разделенных данных - - - CatalogRef.Валюты - CatalogRef.Календари - - - - Use - Use - true - - true - - - ЭлементОбщихДанных - - ru - Элемент общих данных - - - CatalogRef.УдалитьКлассификаторВалют - CatalogRef.ПроизводственныеКалендари - String - - 10 - - - - - Use - Use - true - - true - true - - - ТипОбщихДанных - - ru - Тип общих данных - - - String - - 10 - - - - - Use - Use - - true - - diff --git a/SSL/src/InformationRegisters/УдалитьСтраныМира/ManagerModule.bsl b/SSL/src/InformationRegisters/УдалитьСтраныМира/ManagerModule.bsl new file mode 100644 index 000000000..e69de29bb diff --git a/SSL/src/InformationRegisters/УдалитьСтраныМира/УдалитьСтраныМира.mdo b/SSL/src/InformationRegisters/УдалитьСтраныМира/УдалитьСтраныМира.mdo new file mode 100644 index 000000000..f4126a220 --- /dev/null +++ b/SSL/src/InformationRegisters/УдалитьСтраныМира/УдалитьСтраныМира.mdo @@ -0,0 +1,93 @@ + + + + + + + + + + + + УдалитьСтраныМира + + ru + (Не используется) Страны мира + + true + InDialog + + Use + Active + + Use + + + + + Use + LineNumber + + Use + + + + + Use + Recorder + + Use + + + + + Use + Period + + ShowError + Use + + + + Managed + + Значение + + ru + Значение + + + ValueStorage + + + ru + Значение для обновления + + + + Use + + + + ОбластьДанных + + ru + Область данных + + + Number + + 10 + + + + ru + Область данных для обновления + + + + Use + + true + + diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/Help/ru.html b/SSL/src/Reports/АнализЖурналаРегистрации/Help/ru.html index 31d724158..4b8b95d96 100644 --- a/SSL/src/Reports/АнализЖурналаРегистрации/Help/ru.html +++ b/SSL/src/Reports/АнализЖурналаРегистрации/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Отчет «Анализ журнала регистрации» предназначен для диагностики работы программы на основе данных журнала регистрации. Включает в себя следующие варианты отчетов:

                      ·         Анализ активности пользователей

                      ·         Активность пользователя

                      diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl b/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl index 142a5e489..c79866daf 100644 --- a/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl +++ b/SSL/src/Reports/АнализЖурналаРегистрации/ManagerModule.bsl @@ -365,7 +365,7 @@ Если ОдновременноРаботавшихПользователей <> 0 Тогда СформироватьСтрокуОдновременноСессий(ОдновременноСессий, МаксМассивПользователей, ОдновременноРаботавшихПользователей, ТекущДата); - КонецЕсли; + КонецЕсли; ОдновременноРаботавшихПользователей = 0; Счетчик = 0; МассивПользователей.Очистить(); diff --git a/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx b/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx index 5b7f68d3e..d065de52b 100644 --- a/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx +++ b/SSL/src/Reports/АнализЖурналаРегистрации/Templates/ПродолжительностьРаботыРегламентныхЗаданий/Template.mxlx @@ -3053,9 +3053,9 @@ Day 1 true - 2013-04-18T13:00:00 - 2013-04-27T13:59:59 - 2013-04-18T13:00:00 + 2013-07-18T11:00:00 + 2013-07-27T11:59:59 + 2013-07-18T11:00:00 Gradient 3 Day diff --git a/SSL/src/Reports/АнализОпроса/АнализОпроса.mdo b/SSL/src/Reports/АнализОпроса/АнализОпроса.mdo index a2704de77..03b16a161 100644 --- a/SSL/src/Reports/АнализОпроса/АнализОпроса.mdo +++ b/SSL/src/Reports/АнализОпроса/АнализОпроса.mdo @@ -11,6 +11,7 @@ true Report.АнализОпроса.Form.ФормаОтчета + SettingsStorage.ХранилищеВариантовОтчетов ФормаОтчета diff --git a/SSL/src/Reports/АналитическийОтчетПоАнкетированию/АналитическийОтчетПоАнкетированию.mdo b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/АналитическийОтчетПоАнкетированию.mdo index 7d70b34d7..e641fab0e 100644 --- a/SSL/src/Reports/АналитическийОтчетПоАнкетированию/АналитическийОтчетПоАнкетированию.mdo +++ b/SSL/src/Reports/АналитическийОтчетПоАнкетированию/АналитическийОтчетПоАнкетированию.mdo @@ -11,6 +11,7 @@ true Report.АналитическийОтчетПоАнкетированию.Template.ОсновнаяСхемаКомпоновкиДанных + SettingsStorage.ХранилищеВариантовОтчетов ОсновнаяСхемаКомпоновкиДанных diff --git a/SSL/src/Reports/ЗависшиеЗадачи/Help/ru.html b/SSL/src/Reports/ЗависшиеЗадачи/Help/ru.html index 77ea3f705..d51b601fe 100644 --- a/SSL/src/Reports/ЗависшиеЗадачи/Help/ru.html +++ b/SSL/src/Reports/ЗависшиеЗадачи/Help/ru.html @@ -1,4 +1,4 @@ - +

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

                      Если установлен отбор по "Координатору выполнения задач", то в отчет будут выводиться только те задачи, которые назначены исполнителям в объектах адресации, за которые отвечает указанный Координатор выполнения задач.

                      Чтобы установить группировку списка зависших задач по объектам адресации, выберите вариант отчета "Зависшие задачи".

                      diff --git a/SSL/src/Reports/Задачи/Forms/ФормаОтчета/Form.form b/SSL/src/Reports/Задачи/Forms/ФормаОтчета/Form.form index 24c7aa07f..64e55e813 100644 --- a/SSL/src/Reports/Задачи/Forms/ФормаОтчета/Form.form +++ b/SSL/src/Reports/Задачи/Forms/ФормаОтчета/Form.form @@ -622,6 +622,10 @@ -1 Left + + OnCreateAtServer + ПриСозданииНаСервере + DontBlock true true diff --git a/SSL/src/Reports/Задачи/Forms/ФормаОтчета/Module.bsl b/SSL/src/Reports/Задачи/Forms/ФормаОтчета/Module.bsl index e1e3e25d8..5217cfb61 100644 --- a/SSL/src/Reports/Задачи/Forms/ФормаОтчета/Module.bsl +++ b/SSL/src/Reports/Задачи/Forms/ФормаОтчета/Module.bsl @@ -1,3 +1,19 @@ +//////////////////////////////////////////////////////////////////////////////// +// ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. + Возврат; + КонецЕсли; + + Если ОбщегоНазначения.ПриСозданииФормыНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ) Тогда + Возврат; + КонецЕсли; + +КонецПроцедуры + //////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ @@ -9,3 +25,4 @@ КонецЕсли; КонецПроцедуры + diff --git a/SSL/src/Reports/Задачи/Help/ru.html b/SSL/src/Reports/Задачи/Help/ru.html index 6ca383f84..3227a404e 100644 --- a/SSL/src/Reports/Задачи/Help/ru.html +++ b/SSL/src/Reports/Задачи/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Для формирования отчета выберите один из вариантов и нажмите кнопку "Сформировать".

                      Текущие задачи

                      При необходимости установите параметры отчета:

                      diff --git a/SSL/src/Reports/ЗадачиИстекающиеНаДату/Help/ru.html b/SSL/src/Reports/ЗадачиИстекающиеНаДату/Help/ru.html index e721321ed..33be48683 100644 --- a/SSL/src/Reports/ЗадачиИстекающиеНаДату/Help/ru.html +++ b/SSL/src/Reports/ЗадачиИстекающиеНаДату/Help/ru.html @@ -1,3 +1,3 @@ - +

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

                      Для детальной настройки отчета используйте команду "Все действия - Изменить вариант".

                      \ No newline at end of file diff --git a/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Form.form b/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Form.form index 5dec85744..16c4ee786 100644 --- a/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Form.form +++ b/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Form.form @@ -193,6 +193,7 @@
                      DontBlock true + true true Vertical true diff --git a/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl b/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl index 98dcd65a7..f83abfcbe 100644 --- a/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl +++ b/SSL/src/Reports/ПраваДоступа/Forms/ФормаОтчета/Module.bsl @@ -10,16 +10,12 @@ Если НЕ ЗначениеЗаполнено(Параметры.Пользователь) ИЛИ ( НЕ Пользователи.ЭтоПолноправныйПользователь() - И Параметры.Пользователь <> Пользователи.ТекущийПользователь() ) Тогда + И Параметры.Пользователь <> Пользователи.АвторизованныйПользователь() ) Тогда Отказ = Истина; Возврат; КонецЕсли; - // Установка заголовка формы. - Заголовок = УправлениеДоступомСлужебный.ЗаголовокПодчиненнойФормы( - НСтр("ru = 'Права доступа: %1 (%2)'"), Параметры.Пользователь); - Элементы.ПодробныеСведенияОПравахДоступа.Видимость = НЕ УправлениеДоступомПереопределяемый.УпрощенныйИнтерфейсНастройкиПравДоступа(); @@ -748,7 +744,7 @@ Область = Макет.ПолучитьОбласть("ПраваОбъектовГруппировка"); Область.Параметры.ПредставлениеГруппировкиПравОбъектов = НСтр("ru = 'Просмотр объектов'"); Документ.Вывести(Область, 1); - Область = Макет.ПолучитьОбласть("ПросмотрОбъековЛегенда"); + Область = Макет.ПолучитьОбласть("ПросмотрОбъектовЛегенда"); Документ.Вывести(Область, 2); Для каждого ОписаниеВидаОбъектов Из ПраваОбъектов.Строки Цикл @@ -960,7 +956,7 @@ КонецЕсли; КонецЦикла; КонецЦикла; - // Объединение ячеек объектаи установка границы + // Объединение ячеек объекта и установка границы ОбъединитьЯчейкиУстановитьГраницы( Документ, НачальнаяСтрокаОбластиОбъекта, @@ -991,7 +987,7 @@ Область = Макет.ПолучитьОбласть("ПраваОбъектовГруппировка"); Область.Параметры.ПредставлениеГруппировкиПравОбъектов = НСтр("ru = 'Редактирование объектов'"); Документ.Вывести(Область, 1); - Область = Макет.ПолучитьОбласть("РедактированиеОбъековЛегенда"); + Область = Макет.ПолучитьОбласть("РедактированиеОбъектовЛегенда"); Документ.Вывести(Область, 2); Для каждого ОписаниеВидаОбъектов Из ПраваОбъектов.Строки Цикл @@ -1391,7 +1387,7 @@ КонецЦикла; Если НЕ ВыводПравГруппы Тогда НомерЯчейки = "R1C" + Формат(ТекущийНомерОбласти, "ЧГ="); - МакетШапки.Область(НомерЯчейки).Текст = НСтр("ru = 'Настрока прав от'"); + МакетШапки.Область(НомерЯчейки).Текст = НСтр("ru = 'Настройка прав от'"); МакетШапки.Область(НомерЯчейки).ШиринаКолонки = 40; КонецЕсли; Документ.Вывести(МакетШапки, 2); @@ -1473,13 +1469,13 @@ Если ОписаниеВидаДоступа.ДоступРазрешен Тогда Если ОписаниеВидаДоступа.ВидДоступа = ПланыВидовХарактеристик.ВидыДоступа.Пользователи Тогда ШаблонПредставленияВидаДоступа = - НСтр("ru = '%1 (запрешенные, текущий пользователь всегда разрешен):'"); + НСтр("ru = '%1 (запрещенные, текущий пользователь всегда разрешен):'"); ИначеЕсли ОписаниеВидаДоступа.ВидДоступа = ПланыВидовХарактеристик.ВидыДоступа.ВнешниеПользователи Тогда ШаблонПредставленияВидаДоступа = - НСтр("ru = '%1 (запрешенные, текущий внешний пользователь всегда разрешен):'"); + НСтр("ru = '%1 (запрещенные, текущий внешний пользователь всегда разрешен):'"); Иначе - ШаблонПредставленияВидаДоступа = НСтр("ru = '%1 (запрешенные):'"); + ШаблонПредставленияВидаДоступа = НСтр("ru = '%1 (запрещенные):'"); КонецЕсли; Иначе Если ОписаниеВидаДоступа.ВидДоступа = ПланыВидовХарактеристик.ВидыДоступа.Пользователи Тогда diff --git a/SSL/src/Reports/ПраваДоступа/Templates/Макет/Template.mxlx b/SSL/src/Reports/ПраваДоступа/Templates/Макет/Template.mxlx index 801d92d4f..b56c6b507 100644 --- a/SSL/src/Reports/ПраваДоступа/Templates/Макет/Template.mxlx +++ b/SSL/src/Reports/ПраваДоступа/Templates/Макет/Template.mxlx @@ -1634,7 +1634,7 @@ - ПросмотрОбъековЛегенда + ПросмотрОбъектовЛегенда Rows 23 @@ -1644,7 +1644,7 @@ - РедактированиеОбъековЛегенда + РедактированиеОбъектовЛегенда Rows 28 diff --git a/SSL/src/Reports/ПраваДоступа/ПраваДоступа.mdo b/SSL/src/Reports/ПраваДоступа/ПраваДоступа.mdo index 02d33019e..d8e21ed38 100644 --- a/SSL/src/Reports/ПраваДоступа/ПраваДоступа.mdo +++ b/SSL/src/Reports/ПраваДоступа/ПраваДоступа.mdo @@ -11,6 +11,7 @@ true Report.ПраваДоступа.Form.ФормаОтчета + SettingsStorage.ХранилищеВариантовОтчетов ФормаОтчета diff --git a/SSL/src/Reports/ПросроченныеЗадачи/Help/ru.html b/SSL/src/Reports/ПросроченныеЗадачи/Help/ru.html index 9d8445ab5..a0d96c545 100644 --- a/SSL/src/Reports/ПросроченныеЗадачи/Help/ru.html +++ b/SSL/src/Reports/ПросроченныеЗадачи/Help/ru.html @@ -1,3 +1,3 @@ - +

                      Для формирования отчета нажмите кнопку "Сформировать". По умолчанию в отчет попадут все задачи за текущий месяц с истекшим сроком исполнения.

                      Для детальной настройки отчета используйте команду "Все действия - Изменить вариант".

                      \ No newline at end of file diff --git a/SSL/src/Roles/АдминистраторСистемы/Rights.rights b/SSL/src/Roles/АдминистраторСистемы/Rights.rights index de8ce0558..285ef11bd 100644 --- a/SSL/src/Roles/АдминистраторСистемы/Rights.rights +++ b/SSL/src/Roles/АдминистраторСистемы/Rights.rights @@ -105,6 +105,25 @@ true + + Constant.ИмяПользователяКонференцииИнформационногоЦентра + + Read + true + + + Update + true + + + View + true + + + Edit + true + + ExchangePlan.ОбменСообщениями @@ -860,6 +879,25 @@ true + + Constant.ДатаПоследнегоСтартаКлиентскогоСеанса + + Read + true + + + Update + true + + + View + true + + + Edit + true + + Catalog.ИдентификаторыОбъектовМетаданных @@ -1035,6 +1073,25 @@ true + + Constant.ПарольПользователяКонференцииИнформационногоЦентра + + Read + true + + + Update + true + + + View + true + + + Edit + true + + Constant.СписокРасширенийТекстовыхФайлов @@ -1178,26 +1235,7 @@ - InformationRegister.УдалитьСвязиПоставляемыхДанных - - Read - true - - - Update - true - - - View - true - - - Edit - true - - - - Constant.ЗапуститьОбновлениеИнформационнойБазы + Constant.ЗагрузитьСообщениеОбменаДанными Read true @@ -1234,97 +1272,6 @@ true - - Configuration.БиблиотекаСтандартныхПодсистем - - Administration - true - - - DataAdministration - true - - - UpdateDataBaseConfiguration - true - - - ExclusiveMode - true - - - ActiveUsers - true - - - EventLog - true - - - ThinClient - true - - - WebClient - true - - - ThickClient - true - - - ExternalConnection - true - - - Automation - true - - - TechnicalSpecialistMode - true - - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - - SaveUserData - true - - - InteractiveOpenExtDataProcessors - true - - - InteractiveOpenExtReports - true - - - Output - true - - InformationRegister.НастройкиОтправителя @@ -1846,6 +1793,13 @@ true + + CommonCommand.СоставОтправляемыхДанных + + View + true + + InformationRegister.СоответствияОбъектовИнформационныхБаз.Resource.УникальныйИдентификаторИсточникаСтрокой @@ -2116,6 +2070,13 @@ true + + InformationRegister.НазначениеДополнительныхОбработок.Command.НазначениеДополнительныхОбработок + + View + true + + Constant.КаталогВременныхФайловДляWindows @@ -2154,53 +2115,6 @@ true - - Catalog.УдалитьКлассификаторВалют - - Read - true - - - Insert - true - - - Update - true - - - Delete - true - - - View - true - - - InteractiveInsert - true - - - Edit - true - - - InteractiveSetDeletionMark - true - - - InteractiveClearDeletionMark - true - - - InteractiveDeleteMarked - true - - - InputByString - true - - Constant.НеИспользоватьРазделениеПоОбластямДанных @@ -2316,25 +2230,6 @@ true - - InformationRegister.УдалитьКурсыВалютПоКлассификатору - - Read - true - - - Update - true - - - View - true - - - Edit - true - - Constant.ИспользоватьСинхронизациюДанныхВМоделиСервисаСПриложениемВИнтернете @@ -2411,6 +2306,13 @@ true + + CommonCommand.УдалитьНастройкуСинхронизации + + View + true + + InformationRegister.СоответствияОбъектовИнформационныхБаз.Dimension.УзелИнформационнойБазы @@ -2441,6 +2343,97 @@ true + + Configuration.БиблиотекаСтандартныхПодсистем + + Administration + true + + + DataAdministration + true + + + UpdateDataBaseConfiguration + true + + + ExclusiveMode + true + + + ActiveUsers + true + + + EventLog + true + + + ThinClient + true + + + WebClient + true + + + ThickClient + true + + + ExternalConnection + true + + + Automation + true + + + TechnicalSpecialistMode + true + + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + + SaveUserData + true + + + InteractiveOpenExtDataProcessors + true + + + InteractiveOpenExtReports + true + + + Output + true + + Constant.ИмяСлужебногоПользователяМенеджераСервиса @@ -2791,6 +2784,25 @@ true + + Constant.АдресУправленияКонференцией + + Read + true + + + Update + true + + + View + true + + + Edit + true + + CommonCommand.ДополнительныеОтчетыИОбработкиОтчеты @@ -2855,25 +2867,6 @@ true - - Constant.АдресВебСервисаОбменаДанными - - Read - true - - - Update - true - - - View - true - - - Edit - true - - DataProcessor.УправлениеПолнотекстовымПоиском.Command.УправлениеПолнотекстовымПоиском @@ -2938,6 +2931,25 @@ true + + Constant.СведенияОбОбновленииИБ + + Read + true + + + Update + true + + + View + true + + + Edit + true + + ChartOfCharacteristicTypes.ВидыДоступа @@ -3210,6 +3222,25 @@ true + + InformationRegister.УдалитьСтраныМира + + Read + true + + + Update + true + + + View + true + + + Edit + true + + CommonForm.МониторСинхронизацииДанныхВМоделиСервиса @@ -3397,7 +3428,7 @@ - Constant.ВыполнитьЗагрузкуПараметровРаботыПрограммы + Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском Read true diff --git a/SSL/src/Roles/Администрирование/Rights.rights b/SSL/src/Roles/Администрирование/Rights.rights index e6e17be97..46fd4ecf0 100644 --- a/SSL/src/Roles/Администрирование/Rights.rights +++ b/SSL/src/Roles/Администрирование/Rights.rights @@ -1,27 +1,8 @@ false - false + true false - - InformationRegister.ОбластиПерсональныхДанных - - Read - true - - - Update - true - - - View - true - - - Edit - true - - Configuration.БиблиотекаСтандартныхПодсистем diff --git a/SSL/src/Roles/БазовыеПрава/Rights.rights b/SSL/src/Roles/БазовыеПрава/Rights.rights index 59f245caf..07d6971c3 100644 --- a/SSL/src/Roles/БазовыеПрава/Rights.rights +++ b/SSL/src/Roles/БазовыеПрава/Rights.rights @@ -346,6 +346,13 @@ true + + Constant.РежимИспользованияИнформационнойБазы + + Read + true + + Catalog.Заметки.StandardAttribute.Predefined @@ -485,6 +492,13 @@ false + + CommonForm.ПараметрыПроксиСервера + + View + true + + Catalog.ВидыКонтактнойИнформации.Attribute.РедактированиеТолькоВДиалоге @@ -507,6 +521,13 @@ false + + SessionParameter.ВыполняетсяОбновлениеИБ + + Get + true + + Catalog.Заметки.Attribute.ДатаИзменения @@ -953,6 +974,13 @@ false + + CommonForm.РедактированиеТабличногоДокумента + + View + true + + CommonForm.НастройкаОсновногоРабочегоКаталога @@ -1201,18 +1229,18 @@ - CommonForm.НерекомендуемаяВерсияПлатформы + DataProcessor.ИнформацияПриЗапуске + + Use + true + View true - DataProcessor.ИнформацияПриЗапуске - - Use - true - + CommonForm.ОписаниеИзмененийСистемы View true @@ -1268,6 +1296,17 @@ true + + DataProcessor.ОбновлениеИнформационнойБазы + + Use + true + + + View + true + + CommonForm.СохранениеПечатнойФормы diff --git a/SSL/src/Roles/ВыводНаПринтерФайлБуферОбмена/Rights.rights b/SSL/src/Roles/ВыводНаПринтерФайлБуферОбмена/Rights.rights index ebebf8706..ffe26697b 100644 --- a/SSL/src/Roles/ВыводНаПринтерФайлБуферОбмена/Rights.rights +++ b/SSL/src/Roles/ВыводНаПринтерФайлБуферОбмена/Rights.rights @@ -6812,37 +6812,6 @@ false - - Configuration.БиблиотекаСтандартныхПодсистем - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - - Output - true - - Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись @@ -11991,6 +11960,37 @@ false + + Configuration.БиблиотекаСтандартныхПодсистем + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + + Output + true + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ИмяПланаОбмена diff --git a/SSL/src/Roles/ВыполнениеСинхронизацииДанных/Rights.rights b/SSL/src/Roles/ВыполнениеСинхронизацииДанных/Rights.rights index aa6d07b25..ecc6b1a2c 100644 --- a/SSL/src/Roles/ВыполнениеСинхронизацииДанных/Rights.rights +++ b/SSL/src/Roles/ВыполнениеСинхронизацииДанных/Rights.rights @@ -92,6 +92,13 @@ false + + CommonForm.АвтономнаяРабота + + View + true + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.Данные @@ -542,6 +549,13 @@ false + + CommonCommand.АвтономнаяРабота + + View + true + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ТаблицаНастройкиПараметров diff --git a/SSL/src/Roles/ДобавлениеИзменениеБазовойНСИ/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеБазовойНСИ/Rights.rights index 2b835e8c0..069eb7402 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеБазовойНСИ/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеБазовойНСИ/Rights.rights @@ -10,13 +10,6 @@ true - - CommonForm.ВводТелефона - - View - true - - Catalog.НаборыДополнительныхРеквизитовИСведений @@ -154,13 +147,6 @@ true - - CommonForm.ВводАдреса - - View - true - - Catalog.Календари @@ -303,17 +289,6 @@ false - - Constant.РежимИспользованияИнформационнойБазы - - Read - true - - - View - true - - InformationRegister.АдресныеСокращения diff --git a/SSL/src/Roles/ДобавлениеИзменениеВзаимодействий/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеВзаимодействий/Rights.rights index 3f1521fab..68da7252e 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеВзаимодействий/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеВзаимодействий/Rights.rights @@ -16,7 +16,7 @@ Read true - #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоВходящее", "Чтение", "", + #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоВходящее", "Чтение", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -26,7 +26,7 @@ Insert true - #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоВходящее", "Добавление", "", + #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоВходящее", "Добавление", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -36,7 +36,7 @@ Update true - #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоВходящее", "Добавление", "", + #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоВходящее", "Добавление", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -298,7 +298,7 @@ Read true - #ПоЗначениямИНаборамРасширенный("Документ.ЗапланированноеВзаимодействие", "Чтение", "", + #ПоЗначениямИНаборамРасширенный("Документ.ЗапланированноеВзаимодействие", "Чтение", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -308,7 +308,7 @@ Insert true - #ПоЗначениямИНаборамРасширенный("Документ.ЗапланированноеВзаимодействие", "Добавление", "", + #ПоЗначениямИНаборамРасширенный("Документ.ЗапланированноеВзаимодействие", "Добавление", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -318,7 +318,7 @@ Update true - #ПоЗначениямИНаборамРасширенный("Документ.ЗапланированноеВзаимодействие", "Изменение", "", + #ПоЗначениямИНаборамРасширенный("Документ.ЗапланированноеВзаимодействие", "Изменение", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -424,21 +424,21 @@ Read true - #ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","Чтение","","") + #ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","Чтение","РасширенноеИЛИ","") Insert true - #ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","Добавление","","") + #ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","Добавление","РасширенноеИЛИ","") Update true - #ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","Изменение","","") + #ПоНаборамЗначений( "Документ.ТелефонныйЗвонок","Изменение","РасширенноеИЛИ","") @@ -517,7 +517,7 @@ Read true - #ПоЗначениямИНаборамРасширенный("Документ.ТелефонныйЗвонок", "Чтение", "", + #ПоЗначениямИНаборамРасширенный("Документ.ТелефонныйЗвонок", "Чтение", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -527,7 +527,7 @@ Insert true - #ПоЗначениямИНаборамРасширенный("Документ.ТелефонныйЗвонок", "Добавление", "", + #ПоЗначениямИНаборамРасширенный("Документ.ТелефонныйЗвонок", "Добавление", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -537,7 +537,7 @@ Update true - #ПоЗначениямИНаборамРасширенный("Документ.ТелефонныйЗвонок", "Изменение", "", + #ПоЗначениямИНаборамРасширенный("Документ.ТелефонныйЗвонок", "Изменение", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -582,21 +582,21 @@ Read true - #ПоНаборамЗначений( "Документ.ЗапланированноеВзаимодействие","Чтение","","") + #ПоНаборамЗначений( "Документ.ЗапланированноеВзаимодействие","Чтение","РасширенноеИЛИ","") Insert true - #ПоНаборамЗначений( "Документ.ЗапланированноеВзаимодействие","Добавление","","") + #ПоНаборамЗначений( "Документ.ЗапланированноеВзаимодействие","Добавление","РасширенноеИЛИ","") Update true - #ПоНаборамЗначений( "Документ.ЗапланированноеВзаимодействие","Изменение","","") + #ПоНаборамЗначений( "Документ.ЗапланированноеВзаимодействие","Изменение","РасширенноеИЛИ","") @@ -654,21 +654,21 @@ Read true - #ПоНаборамЗначений( "Документ.Встреча","Чтение","","") + #ПоНаборамЗначений( "Документ.Встреча","Чтение","РасширенноеИЛИ","") Insert true - #ПоНаборамЗначений( "Документ.Встреча","Добавление","","") + #ПоНаборамЗначений( "Документ.Встреча","Добавление","РасширенноеИЛИ","") Update true - #ПоНаборамЗначений( "Документ.Встреча","Изменение","","") + #ПоНаборамЗначений( "Документ.Встреча","Изменение","РасширенноеИЛИ","") @@ -741,7 +741,7 @@ Update true - #ПоЗначениямИНаборамРасширенный( "РегистрСведений.ПредметыПапкиВзаимодействий","Изменение","", + #ПоЗначениямИНаборамРасширенный( "РегистрСведений.ПредметыПапкиВзаимодействий","Изменение","РасширенноеИЛИ", "", "", "Объект","Взаимодействие","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" ) @@ -791,6 +791,78 @@ false + + Document.СообщениеSMS + + Read + true + + #ПоНаборамЗначений( "Документ.СообщениеSMS","Чтение","","") + + + + Insert + true + + #ПоНаборамЗначений( "Документ.СообщениеSMS","Добавление","","") + + + + Update + true + + #ПоНаборамЗначений( "Документ.СообщениеSMS","Изменение","","") + + + + Posting + true + + + UndoPosting + true + + + View + true + + + InteractiveInsert + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InteractivePosting + true + + + InteractivePostingRegular + true + + + InteractiveUndoPosting + true + + + InteractiveChangeOfPosted + true + + + InputByString + true + + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.Predefined @@ -963,7 +1035,7 @@ Read true - #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоИсходящее", "Чтение", "", + #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоИсходящее", "Чтение", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -973,7 +1045,7 @@ Insert true - #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоИсходящее", "Добавление", "", + #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоИсходящее", "Добавление", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -983,7 +1055,7 @@ Update true - #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоИсходящее", "Изменение", "", + #ПоЗначениямИНаборамРасширенный("Документ.ЭлектронноеПисьмоИсходящее", "Изменение", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -1035,10 +1107,11 @@ Read true - #ПоЗначениямИНаборамРасширенный( "ЖурналДокументов.Взаимодействия","Чтение","", + #ПоЗначениямИНаборамРасширенный( "ЖурналДокументов.Взаимодействия","Чтение","РасширенноеИЛИ", "", "", -"Объект","Т.Ссылка","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" ) +"Объект","Т.Ссылка","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" ) + @@ -1134,21 +1207,21 @@ Read true - #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоИсходящее","Чтение","","") + #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоИсходящее","Чтение","РасширенноеИЛИ","") Insert true - #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоИсходящее","Добавление","","") + #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоИсходящее","Добавление","РасширенноеИЛИ","") Update true - #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоИсходящее","Изменение","","") + #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоИсходящее","Изменение","РасширенноеИЛИ","") @@ -1276,6 +1349,67 @@ false + + Catalog.СообщениеSMSПрисоединенныеФайлы + + Read + true + + #ПоЗначениямИНаборамРасширенный("Документ.СообщениеSMS", "Чтение", "РасширенноеИЛИ", +"", +"", +"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") + + + + Insert + true + + #ПоЗначениямИНаборамРасширенный("Документ.СообщениеSMS", "Добавление", "РасширенноеИЛИ", +"", +"", +"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") + + + + Update + true + + #ПоЗначениямИНаборамРасширенный("Документ.СообщениеSMS", "Изменение", "РасширенноеИЛИ", +"", +"", +"Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") + + + + Delete + true + + + View + true + + + InteractiveInsert + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InputByString + true + + DocumentJournal.Взаимодействия.Command.ЗапланироватьВстречу @@ -1314,7 +1448,7 @@ Read true - #ПоЗначениямИНаборамРасширенный("Документ.Встреча", "Чтение", "", + #ПоЗначениямИНаборамРасширенный("Документ.Встреча", "Чтение", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -1324,7 +1458,7 @@ Insert true - #ПоЗначениямИНаборамРасширенный("Документ.Встреча", "Добавление", "", + #ПоЗначениямИНаборамРасширенный("Документ.Встреча", "Добавление", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -1334,7 +1468,7 @@ Update true - #ПоЗначениямИНаборамРасширенный("Документ.Встреча", "Изменение", "", + #ПоЗначениямИНаборамРасширенный("Документ.Встреча", "Изменение", "РасширенноеИЛИ", "", "", "Объект","Т.ВладелецФайла","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","") @@ -1505,21 +1639,14 @@ Read true - #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоВходящее","Чтение","","") - - - - Insert - false - - #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоВходящее","Добавление","","") + #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоВходящее","Чтение","РасширенноеИЛИ","") Update true - #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоВходящее","Изменение","","") + #ПоНаборамЗначений( "Документ.ЭлектронноеПисьмоВходящее","Изменение","РасширенноеИЛИ","") @@ -1608,7 +1735,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа). @@ -5091,13 +5218,23 @@ ПоЗначениямИНаборамРасширенный // ПоЗначениямИНаборамРасширенный ( Таблица, Право, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)). // № параметра: 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,...,3+n*3,4+n*3,5+n*3 . -// Читается так: "ограничение доступа по наборам и значениям расширенный". +// Читается так: "ограничение доступа по значениям и наборам расширенный". // Параметры: // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает -// безусловно выбирать группы иерархического справочника. +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает +// безусловно выбирать группы иерархического справочника. +// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений, +// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную +// проверку, при которой вариант настройки вида доступа в группах доступа +// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется". +// Если этого модификатора нет, тогда результат проверки Истина, что приводит +// к итоговому результату Истина, если "Все разрешены, без запрещенных" +// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям). +// Модификатор имеет смысл только при проверке наборов значений доступа. +// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам", +// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ". // Других модификаторов в этой версии шаблона не предусмотрено. // ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например, // "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1 @@ -5138,7 +5275,10 @@ // "Объект","Т.ОсновнойДокумент","", "","","", ...) // Проверка правильности параметра Модификатор. -#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда +#Если НЕ ( "#Параметр(3)" = "НеОграничиватьДоступКГруппам" + ИЛИ "#Параметр(3)" = "РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли @@ -5160,7 +5300,7 @@ ГДЕ // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). -#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда +#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли @@ -5277,14 +5417,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(7) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(7) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5292,8 +5482,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5535,8 +5753,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(6) = "" #Тогда @@ -5808,14 +6027,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(10) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(10) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5823,8 +6092,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6066,8 +6363,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(9) = "" #Тогда @@ -6339,14 +6637,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(13) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(13) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6354,8 +6702,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6597,8 +6973,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(12) = "" #Тогда @@ -6870,14 +7247,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(16) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(16) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6885,8 +7312,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -7128,8 +7583,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(15) = "" #Тогда @@ -7401,14 +7857,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(19) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(19) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7416,8 +7922,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -7659,8 +8193,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(18) = "" #Тогда @@ -7932,14 +8467,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(22) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(22) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7947,8 +8532,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8190,8 +8803,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(21) = "" #Тогда @@ -8463,14 +9077,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(25) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(25) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -8478,8 +9142,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8721,8 +9413,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(24) = "" #Тогда @@ -8994,14 +9687,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(28) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(28) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -9009,8 +9752,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -9252,8 +10023,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(27) = "" #Тогда @@ -9525,14 +10297,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(31) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(31) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -9540,8 +10362,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -9783,8 +10633,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(30) = "" #Тогда @@ -10056,14 +10907,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(34) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(34) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -10071,8 +10972,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -10314,8 +11243,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(33) = "" #Тогда @@ -10587,14 +11517,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(37) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(37) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -10602,8 +11582,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -10845,8 +11853,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(36) = "" #Тогда @@ -11118,14 +12127,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(40) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(40) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -11133,8 +12192,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -11376,8 +12463,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(39) = "" #Тогда @@ -11649,14 +12737,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(43) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(43) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -11664,8 +12802,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -11907,8 +13073,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(42) = "" #Тогда @@ -12180,14 +13347,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(46) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(46) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -12195,8 +13412,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -12438,8 +13683,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(45) = "" #Тогда @@ -12711,14 +13957,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(49) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(49) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -12726,8 +14022,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -12969,8 +14293,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(48) = "" #Тогда @@ -13242,14 +14567,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(52) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(52) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -13257,8 +14632,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -13500,8 +14903,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(51) = "" #Тогда @@ -13713,8 +15117,18 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает -// безусловно выбирать группы иерархического справочника. +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает +// безусловно выбирать группы иерархического справочника. +// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений, +// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную +// проверку, при которой вариант настройки вида доступа в группах доступа +// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется". +// Если этого модификатора нет, тогда результат проверки Истина, что приводит +// к итоговому результату Истина, если "Все разрешены, без запрещенных" +// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям). +// Модификатор имеет смысл только при проверке наборов значений доступа. +// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам", +// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ". // Других модификаторов в этой версии шаблона не предусмотрено. // ВладелецНаборов - имя поля, содержащего ссылку на объект-владелец // наборов значений доступа в регистре сведений НаборыЗначенийДоступа. @@ -13731,7 +15145,10 @@ // Пример4: ПоНаборамЗначений("Справочник.ВложенияЭлектронныхПисем", "Чтение", "", "Владелец" ) // Проверка правильности параметра Модификатор. -#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда +#Если НЕ ( "#Параметр(3)" = "НеОграничиватьДоступКГруппам" + ИЛИ "#Параметр(3)" = "РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли @@ -13748,7 +15165,7 @@ Т ГДЕ // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов). // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). -#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда +#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли @@ -13790,7 +15207,66 @@ И СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь ) ГДЕ - Истина В +#Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + #Если "#Параметр(2)" = "Чтение" #Тогда + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + #Если "#Параметр(4)" = "" #Тогда + НомераНаборов.Объект = Т.Ссылка + #Иначе + НомераНаборов.Объект = Т.#Параметр(4) + #КонецЕсли + #Иначе + ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Ссылка = Т.Ссылка + #КонецЕсли + И НомераНаборов.#Параметр(2) + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + #Если "#Параметр(2)" = "Чтение" #Тогда + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + #Если "#Параметр(4)" = "" #Тогда + НаборыЗначений.Объект = Т.Ссылка + #Иначе + НаборыЗначений.Объект = Т.#Параметр(4) + #КонецЕсли + #Иначе + ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Ссылка = Т.Ссылка + #КонецЕсли + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ +#Иначе + ( +#КонецЕсли + Истина В ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. #Если "#Параметр(2)" = "Чтение" #Тогда @@ -13807,7 +15283,44 @@ НомераНаборов.Ссылка = Т.Ссылка #КонецЕсли И НомераНаборов.#Параметр(2) - И НЕ Ложь В + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + #Если "#Параметр(2)" = "Чтение" #Тогда + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + #Если "#Параметр(4)" = "" #Тогда + НаборыЗначений.Объект = Т.Ссылка + #Иначе + НаборыЗначений.Объект = Т.#Параметр(4) + #КонецЕсли + #Иначе + ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Ссылка = Т.Ссылка + #КонецЕсли + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. #Если "#Параметр(2)" = "Чтение" #Тогда @@ -13825,7 +15338,6 @@ #КонецЕсли И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора И НЕ - ( Выбор // Проверка заведомого ложного или заведомо истинного однострочного набора значений. Когда НаборыЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка) @@ -13880,7 +15392,7 @@ #КонецЕсли Тогда ( - НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается. + НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается. ( Выбрать Истина ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды @@ -14072,9 +15584,9 @@ Иначе Ложь Конец Конец - ) - ) // НЕ Ложь В + ) // НЕ Ложь В ) + ) ) #КонецЕсли diff --git a/SSL/src/Roles/ДобавлениеИзменениеВнешнихПользователей/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеВнешнихПользователей/Rights.rights index 7e3c494fb..61b6e5669 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеВнешнихПользователей/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеВнешнихПользователей/Rights.rights @@ -31,6 +31,13 @@ true + + InformationRegister.НеразделенныеПользователи + + Read + true + + Catalog.ВнешниеПользователи diff --git a/SSL/src/Roles/ДобавлениеИзменениеДополнительныхОтчетовИОбработок/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеДополнительныхОтчетовИОбработок/Rights.rights index 4b5b71c18..79b660d8e 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеДополнительныхОтчетовИОбработок/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеДополнительныхОтчетовИОбработок/Rights.rights @@ -10644,6 +10644,13 @@ false + + InformationRegister.НазначениеДополнительныхОбработок.Command.НазначениеДополнительныхОбработок + + View + true + + InformationRegister.ФайлыВРабочемКаталоге.Resource.ВРабочемКаталогеВладельца diff --git a/SSL/src/Roles/ДобавлениеИзменениеЗаданий/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеЗаданий/Rights.rights index a4a0e6205..b5ff8b2dd 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеЗаданий/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеЗаданий/Rights.rights @@ -188,7 +188,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа). @@ -3671,13 +3671,23 @@ ПоЗначениямИНаборамРасширенный // ПоЗначениямИНаборамРасширенный ( Таблица, Право, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)). // № параметра: 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,...,3+n*3,4+n*3,5+n*3 . -// Читается так: "ограничение доступа по наборам и значениям расширенный". +// Читается так: "ограничение доступа по значениям и наборам расширенный". // Параметры: // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает -// безусловно выбирать группы иерархического справочника. +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает +// безусловно выбирать группы иерархического справочника. +// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений, +// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную +// проверку, при которой вариант настройки вида доступа в группах доступа +// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется". +// Если этого модификатора нет, тогда результат проверки Истина, что приводит +// к итоговому результату Истина, если "Все разрешены, без запрещенных" +// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям). +// Модификатор имеет смысл только при проверке наборов значений доступа. +// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам", +// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ". // Других модификаторов в этой версии шаблона не предусмотрено. // ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например, // "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1 @@ -3718,7 +3728,10 @@ // "Объект","Т.ОсновнойДокумент","", "","","", ...) // Проверка правильности параметра Модификатор. -#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда +#Если НЕ ( "#Параметр(3)" = "НеОграничиватьДоступКГруппам" + ИЛИ "#Параметр(3)" = "РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли @@ -3740,7 +3753,7 @@ ГДЕ // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). -#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда +#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли @@ -3857,14 +3870,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(7) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(7) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -3872,8 +3935,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4115,8 +4206,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(6) = "" #Тогда @@ -4388,14 +4480,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(10) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(10) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4403,8 +4545,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4646,8 +4816,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(9) = "" #Тогда @@ -4919,14 +5090,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(13) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(13) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4934,8 +5155,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5177,8 +5426,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(12) = "" #Тогда @@ -5450,14 +5700,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(16) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(16) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5465,8 +5765,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5708,8 +6036,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(15) = "" #Тогда @@ -5981,14 +6310,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(19) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(19) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5996,8 +6375,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6239,8 +6646,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(18) = "" #Тогда @@ -6512,14 +6920,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(22) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(22) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6527,8 +6985,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6770,8 +7256,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(21) = "" #Тогда @@ -7043,14 +7530,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(25) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(25) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7058,8 +7595,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -7301,8 +7866,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(24) = "" #Тогда @@ -7574,14 +8140,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(28) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(28) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7589,8 +8205,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -7832,8 +8476,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(27) = "" #Тогда @@ -8105,14 +8750,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(31) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(31) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -8120,8 +8815,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8363,8 +9086,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(30) = "" #Тогда @@ -8636,14 +9360,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(34) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(34) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -8651,8 +9425,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8894,8 +9696,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(33) = "" #Тогда @@ -9167,14 +9970,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(37) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(37) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -9182,8 +10035,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -9425,8 +10306,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(36) = "" #Тогда @@ -9698,14 +10580,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(40) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(40) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -9713,8 +10645,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -9956,8 +10916,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(39) = "" #Тогда @@ -10229,14 +11190,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(43) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(43) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -10244,8 +11255,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -10487,8 +11526,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(42) = "" #Тогда @@ -10760,14 +11800,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(46) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(46) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -10775,8 +11865,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -11018,8 +12136,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(45) = "" #Тогда @@ -11291,14 +12410,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(49) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(49) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -11306,8 +12475,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -11549,8 +12746,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(48) = "" #Тогда @@ -11822,14 +13020,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(52) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(52) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -11837,8 +13085,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -12080,8 +13356,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(51) = "" #Тогда diff --git a/SSL/src/Roles/ДобавлениеИзменениеОбщейБазовойНСИ/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеОбщейБазовойНСИ/Rights.rights index 9666b69c6..ff133121a 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеОбщейБазовойНСИ/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеОбщейБазовойНСИ/Rights.rights @@ -168,72 +168,6 @@ true - - Catalog.УдалитьКлассификаторВалют - - Read - true - - - Insert - true - - - Update - true - - - Delete - true - - - View - true - - - InteractiveInsert - true - - - Edit - true - - - InteractiveSetDeletionMark - true - - - InteractiveClearDeletionMark - true - - - InteractiveDeleteMarked - true - - - InputByString - true - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору - - Read - true - - - Update - true - - - View - true - - - Edit - true - - InformationRegister.ВерсииОбъектовАдресногоКлассификатора diff --git a/SSL/src/Roles/ДобавлениеИзменениеПользователей/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеПользователей/Rights.rights index 610ba5128..8b898359d 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеПользователей/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеПользователей/Rights.rights @@ -4,11 +4,7 @@ true false - Constant.РежимИспользованияИнформационнойБазы - - Read - true - + CommonForm.ГруппыПользователей View true @@ -53,6 +49,13 @@ true + + Catalog.ГруппыПользователей.Command.ГруппыПользователя + + View + true + + InformationRegister.СоставыГруппПользователей diff --git a/SSL/src/Roles/ДобавлениеИзменениеРассылокОтчетов/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеРассылокОтчетов/Rights.rights index ad9ee9b74..8b747cf5d 100644 --- a/SSL/src/Roles/ДобавлениеИзменениеРассылокОтчетов/Rights.rights +++ b/SSL/src/Roles/ДобавлениеИзменениеРассылокОтчетов/Rights.rights @@ -60,37 +60,6 @@ true - - Configuration.БиблиотекаСтандартныхПодсистем - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - - Output - true - - InformationRegister.СостоянияРассылокОтчетов.Resource.ПоследнийЗапуск @@ -157,6 +126,37 @@ true + + Configuration.БиблиотекаСтандартныхПодсистем + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + + Output + true + + InformationRegister.СостоянияРассылокОтчетов.Dimension.Рассылка diff --git a/SSL/src/Roles/ДобавлениеИзменениеСтранМира/Rights.rights b/SSL/src/Roles/ДобавлениеИзменениеСтранМира/Rights.rights new file mode 100644 index 000000000..9cb2d7f58 --- /dev/null +++ b/SSL/src/Roles/ДобавлениеИзменениеСтранМира/Rights.rights @@ -0,0 +1,17634 @@ + + + false + true + false + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.ПоказыватьОповещение + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.Resource.НаЧтение + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения.Attribute.Свойство + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиПисьма.Attribute.Контакт + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам.Dimension.Пользователь + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.Автор + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ВариантРасписанияРезервногоКопирования + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.TabularSection.Пользователи + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ИмяФайлаПодписи + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ДанныеУспешноЗагружены + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ПриемникИндексКартинки + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.РезультатВыполнения + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Редактирует + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.СтрокаРасписания + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиСкрытыхКопий.Attribute.Адрес + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.Resource.Дата + + View + false + + + Edit + false + + + + InformationRegister.РабочиеКаталогиФайлов.Dimension.Папка + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ПодписанЭЦП + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.StandardAttribute.Code + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.AddressingAttribute.ДополнительныйОбъектАдресации + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.КоличествоОбъектовНесопоставленных + + View + false + + + Edit + false + + + + DataProcessor.БлокировкаРаботыПользователей.Attribute.СообщениеДляПользователей + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.Attribute.Ответственный + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаСортировки.Attribute.ИмяПоля + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.ДатаОтправления + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ПолноеНаименование + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.Рассмотрено + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.СвязиПараметровВыбора + + View + false + + + Edit + false + + + + InformationRegister.НаличиеПрисоединенныхФайлов.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.НаличиеПрисоединенныхФайлов.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.НаличиеПрисоединенныхФайлов.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.НаличиеПрисоединенныхФайлов.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Том + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.Attribute.УдалитьКлючОбъекта + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.ДатаОкончания + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Attribute.ДобавлениеЗапрещено + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.TabularSection.Размещение.Attribute.УдалитьНазвание + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.Рассмотрено + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.Attribute.РольИсполнителя + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.Редактирует + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ДатаПолучения + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаНеутвержденныхСвязей.Attribute.УникальныйИдентификаторПриемника + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.НаборыЗначенийДоступа.Attribute.ЗначениеДоступа + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ДатаПодписи + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ПарольАдминистратораКластера + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Выполнено + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.Автор + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.СписокПолучателейКопий + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.StandardAttribute.Code + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.Предмет + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.StandardAttribute.Period + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектов.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектов.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектов.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектов.StandardAttribute.Period + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.FILEСжиматьФайлИсходящегоСообщения + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ЕдиницаИзмеренияПериодаОтложенногоОповещения + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.Пароль + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ПрефиксИнформационнойБазыИсточника + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.Attribute.ОписаниеДатыЗапрета + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.ТекстHTML + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.НестандартныеПортыСервера + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.НаборыЗначенийДоступа.Attribute.Чтение + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Изменил + + View + false + + + Edit + false + + + + InformationRegister.НомераОтсканированныхФайлов.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.НомераОтсканированныхФайлов.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.НомераОтсканированныхФайлов.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.НомераОтсканированныхФайлов.StandardAttribute.Period + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.АбонентПредставление + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.СпособSMTPАутентификации + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.StandardAttribute.ValueType + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.StandardAttribute.Description + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.StandardAttribute.Code + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.StandardAttribute.Parent + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.РазделыДатЗапретаИзменения.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.НаборыЗначенийДоступа.Attribute.Удаление + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.Attribute.РегламентноеЗаданиеGUID + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.EMAILУчетнаяЗапись + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.Attribute.АдресТолькоРоссийский + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Resource.ПравилаXML + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.StandardAttribute.Code + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектов.Dimension.Объект + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.Attribute.СвободныйОпрос + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.Attribute.ИспользуютсяДопСведения + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.Attribute.Описание + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.ТипОтвета + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.КодТипаИнтерактивногоРезервногоКопирования + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.Resource.Путь + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.Attribute.ДатаРождения + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.ValueType + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.Description + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.Code + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.Parent + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.StandardAttribute.Ref + + View + false + + + Edit + false + + + + InformationRegister.КурсыВалют.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.КурсыВалют.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.КурсыВалют.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.КурсыВалют.StandardAttribute.Period + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.FTPСоединениеПорт + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.Attribute.ПрерыватьПриОшибке + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFILE.Attribute.FILEСжиматьФайлИсходящегоСообщения + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.TabularSection.Размещение.Attribute.УдалитьПредопределенная + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.Resource.Автор + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.УчетнаяЗапись + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.Attribute.Комментарий + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.КоличествоКопийВКаталоге + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Attribute.ТипЗначенияДоступа + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеМакетыПечати.Dimension.Объект + + View + false + + + Edit + false + + + + InformationRegister.СостоянияУспешныхОбменовДанными.Resource.ДатаОкончания + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.Точность + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.Attribute.Комментарий + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектовАдресногоКлассификатора.Dimension.АдресныйОбъект + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.Модификатор + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ПарольSMTP + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ПоляТаблицы + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ЗагружатьДанныеВРежимеОбмена + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFILE.Attribute.ШаблонИмениФайлаСообщения + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ПериодХраненияРезервныхКопий + + View + false + + + Edit + false + + + + Catalog.Файлы.TabularSection.СертификатыШифрования.Attribute.Сертификат + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаEMAIL.Attribute.EMAILУчетнаяЗапись + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиПисьма.Attribute.Представление + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ОбъектыПоСсылкеЗагружатьБезПометкиУдаления + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Resource.Наименование + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.Resource.ДатаЗапрета + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаНеутвержденныхСвязей.Attribute.УникальныйИдентификаторИсточника + + View + false + + + Edit + false + + + + InformationRegister.КалендарныеГрафики.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.КалендарныеГрафики.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.КалендарныеГрафики.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.КалендарныеГрафики.StandardAttribute.Period + + View + false + + + Edit + false + + + + InformationRegister.КалендарныеГрафики.Resource.КоличествоДнейВГрафикеСНачалаГода + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.Dimension.Вопрос + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.AddressingAttribute.ОсновнойОбъектАдресации + + View + false + + + Edit + false + + + + InformationRegister.ИсполнителиЗадач.Dimension.ОсновнойОбъектАдресации + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.Страна + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.Attribute.Заключение + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Комментарий + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.StandardAttribute.Period + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ЭтоДополнительноеСведение + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеСведения + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.СписокПолучателейКопий + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.РегламентноеЗаданиеGUID + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.КодНовогоУзлаВторойБазы + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ПриемникПоле3 + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ОчисткаКаталогаСРезервнымиКопиямиПриПереполнении + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ТипТекста + + View + false + + + Edit + false + + + + Catalog.Календари.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.Календари.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.Календари.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.Календари.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.Календари.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.Календари.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.Календари.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.Календари.StandardAttribute.Code + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектовАдресногоКлассификатора.Resource.ДатаВыпускаВерсии + + View + false + + + Edit + false + + + + InformationRegister.ИдентификаторыПолученныхЭлектронныхПисем.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ИдентификаторыПолученныхЭлектронныхПисем.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ИдентификаторыПолученныхЭлектронныхПисем.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ИдентификаторыПолученныхЭлектронныхПисем.StandardAttribute.Period + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.Resource.Завершен + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.Attribute.ВозможностьПредварительногоСохранения + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ИмяПланаОбмена + + View + false + + + Edit + false + + + + Catalog.Валюты.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.Валюты.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.Валюты.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.Валюты.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.Валюты.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.Валюты.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.Валюты.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.Валюты.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.СписокИспользуемыхПолей + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.ИмяТаблицыПриемника + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.НаборыЗначенийДоступа.Attribute.Чтение + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ЗадаватьВопросПриЗагрузкеДанныхПриОткрытииОбработки + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.ПодписанЭЦП + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.TabularSection.ВидыДоступа.Attribute.ВидДоступа + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Размер + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.СтатусИзвлеченияТекста + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.СертификатыШифрования + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.Данные + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.ДатаНачала + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация + + View + false + + + Edit + false + + + + InformationRegister.ЗначенияГруппДоступа.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ЗначенияГруппДоступа.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ЗначенияГруппДоступа.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ЗначенияГруппДоступа.StandardAttribute.Period + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Resource.ЯвляетсяДокументомУдостоверяющимЛичность + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ОтправительПредставление + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.ИндексКартинки + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяВременногоФайлаПротоколаОбмена + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектовАдресногоКлассификатора.Resource.Наименование + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.Рассмотрено + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.НаборыЗначенийДоступа.Attribute.Удаление + + View + false + + + Edit + false + + + + Catalog.Валюты.Attribute.НаименованиеПолное + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.FILEКаталогОбменаИнформацией + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Dimension.ЗначениеДоступа + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.Ответственный + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.Участники + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.КомуВыданСертификат + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.ДатаМодификацииУниверсальная + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.Attribute.Комментарий + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.АгрегироватьСуммуВОтчетах + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.Автор + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.РодительскаяВерсия + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.ИндексКартинки + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.Attribute.КлючВарианта + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.Редактирует + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.Attribute.ТребуетОткрытогоОтвета + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.Dimension.УникальныйИдентификаторИсточника + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ДатаОкончания + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаНеутвержденныхСвязей.Attribute.ТипПриемника + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.Attribute.Тип + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.КаталогСРезервнымиКопиями + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.НаборыЗначенийДоступа.Attribute.НомерНабора + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.Подсказка + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ПользовательИнформационнойБазыДляПодключения + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.УстановившийПодпись + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.TabularSection.Размещение.Attribute.УдалитьПодсистема + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Назначение.Attribute.УдалитьПолноеИмяОбъектаМетаданных + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.ИмяФайлаСообщенияОбмена + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ИсточникИндексКартинки + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Отпечаток + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Dimension.ТипАдресногоЭлемента + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиОтвета + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ФлагОшибки + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекстХранилище + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.УстановившийПодпись + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.СписокУчастников + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяФайлаПротоколаОбменаЗагрузка + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.TabularSection.ЗначенияДоступа.Attribute.ЗначениеДоступа + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.НаборыЗначенийДоступа.Attribute.ЗначениеДоступа + + View + false + + + Edit + false + + + + DataProcessor.ЗагрузкаКурсовВалют.Attribute.ОкончаниеПериодаЗагрузки + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.Важность + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ПриемникПоле1 + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ПроводитьРезервноеКопированиеПриВосстановленииДанных + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.Тема + + View + false + + + Edit + false + + + + InformationRegister.ЗначенияГруппДоступа.Dimension.ВидДоступа + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.Attribute.Вступление + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КоличествоОбработанныхОбъектовДляОбновленияСтатуса + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.ПодписанЭЦП + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.НаборыЗначенийДоступа.Attribute.Чтение + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи + + View + false + + + Edit + false + + + + Document.Анкета.Attribute.ДатаРедактирования + + View + false + + + Edit + false + + + + InformationRegister.СоставыГруппПользователей.Dimension.Пользователь + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.Attribute.Важность + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.Ответственный + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.Dimension.НомерЯчейки + + View + false + + + Edit + false + + + + Catalog.Файлы.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ИндексКартинки + + View + false + + + Edit + false + + + + DataProcessor.ЗагрузкаКурсовВалют.TabularSection.СписокВалют + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.Размер + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ПутьКФайлу + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ИсточникОбновления + + View + false + + + Edit + false + + + + DataProcessor.ЗагрузкаКурсовВалют.TabularSection.СписокВалют.Attribute.Кратность + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.Размер + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Attribute.ЧтениеЗапрещено + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.НаборыЗначенийДоступа + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Содержание + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Dimension.Физлицо + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.TabularSection.НастройкиОбмена + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ИспользоватьДляОтправки + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.ЗначенияПолей + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.TabularSection.Респонденты.Attribute.Респондент + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.Версия2Разряд + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.Формулировка + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.РезультатОбновления + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.TabularSection.НаборыЗначенийДоступа.Attribute.Чтение + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.Ответственный + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Зашифрован + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.TabularSection.НастройкиОбмена.Attribute.ВыполняемоеДействие + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.ДатаНачала + + View + false + + + Edit + false + + + + InformationRegister.ЗначенияГруппДоступа.Dimension.ТолькоВидДоступа + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.КоличествоОбъектовВИсточнике + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.НаборыЗначенийДоступа.Attribute.НомерНабора + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ВариантПроведенияРезервногоКопирования + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.НаборыЗначенийДоступа.Attribute.Добавление + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.TabularSection.ВидыДоступа.Attribute.ВидДоступа + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.Участники.Attribute.Контакт + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.Идентификатор + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.ГруппаИсполнителейЗадач + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ВыполнитьРезервноеКопированиеСейчас + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Resource.ИмяМакетаПравил + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ОткрыватьПротоколыОбменаПослеВыполненияОпераций + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.StandardAttribute.Code + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.FTPСжиматьФайлИсходящегоСообщения + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.Dimension.УникальныйИдентификаторПриемника + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.КодПользователяСервераОбновлений + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ПриемникПоле5 + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.TabularSection.ДополнительныеРеквизиты.Attribute.Значение + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.Участники.Attribute.КакСвязаться + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Dimension.ЗначениеДоступа + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ОдинКоМногим + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.ТипХраненияФайла + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Комментарий + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.Редактирует + + View + false + + + Edit + false + + + + Document.Анкета.TabularSection.Состав + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.СписокПолучателейПисьма + + View + false + + + Edit + false + + + + InformationRegister.НаличиеПрисоединенныхФайлов.Resource.ЕстьФайлы + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.Автор + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ТипИсточника + + View + false + + + Edit + false + + + + InformationRegister.АдресныеСокращения.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.АдресныеСокращения.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.АдресныеСокращения.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.АдресныеСокращения.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.TabularSection.ВидыДоступа + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Resource.ИмяПланаОбменаИзПравил + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиПисьма.Attribute.Контакт + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.StandardAttribute.Executed + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.StandardAttribute.Description + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.StandardAttribute.RoutePoint + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.StandardAttribute.BusinessProcess + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.StandardAttribute.Date + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.StandardAttribute.Number + + View + false + + + Edit + false + + + + InformationRegister.ДополнительныеСведения.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ДополнительныеСведения.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ДополнительныеСведения.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ДополнительныеСведения.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.ЗначенияПолей + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Resource.Номер + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ПриемникПоле2 + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ВидТранспортаСообщенийОбмена + + View + false + + + Edit + false + + + + InformationRegister.ПутиМодулейКриптографииСерверовLinux.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ПутиМодулейКриптографииСерверовLinux.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ПутиМодулейКриптографииСерверовLinux.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ПутиМодулейКриптографииСерверовLinux.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.Комментарий + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяСервераИнформационнойБазыДляПодключения + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.ТекстХранилище + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиПисьма.Attribute.Представление + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.ФайлОбновления + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.СтатусИзвлеченияТекста + + View + false + + + Edit + false + + + + InformationRegister.СостоянияОбменовДанными.Dimension.ДействиеПриОбмене + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.StandardAttribute.Posted + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.StandardAttribute.Date + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.StandardAttribute.Number + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.FILEСжиматьФайлИсходящегоСообщения + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Resource.ИсточникПравил + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.TabularSection.ВидыДоступа + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.КодЗадачиПланировщика + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.TabularSection.Размещение + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиПисьма.Attribute.Адрес + + View + false + + + Edit + false + + + + InformationRegister.РабочиеКаталогиФайлов.Resource.Путь + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ИдентификаторНаСервере + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Resource.ИмяФайлаПравил + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.ФорматСвойства + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.SMTPАутентификация + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.StandardAttribute.Period + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиКопий + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КаталогИнформационнойБазыДляПодключения + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.МинимальноеЗначение + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ТекстХранилище + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ОставлятьКопииСообщенийНаСервере + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.РежимОбмена + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.Автор + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.ВыборГруппИЭлементов + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ВыводВПротоколСообщенийОбОшибках + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.Attribute.ИдентификаторПользователяИБ + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Resource.ДатаВыдачи + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ВыполнитьРезервноеКопированиеСейчас + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.БезопасныйРежим + + View + false + + + Edit + false + + + + InformationRegister.ПрисоединенныеФайлы.Resource.ХранимыйФайл + + View + false + + + Edit + false + + + + InformationRegister.ИсполнителиЗадач.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ИсполнителиЗадач.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ИсполнителиЗадач.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ИсполнителиЗадач.StandardAttribute.Period + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Resource.РаспространяетсяВИерархии + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.ТекстХранилище + + View + false + + + Edit + false + + + + InformationRegister.КалендарныеГрафики.Dimension.Год + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.StandardAttribute.Posted + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.StandardAttribute.Date + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.StandardAttribute.Number + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.Attribute.РедактированиеТолькоВДиалоге + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.Attribute.Обязательный + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ОбработкиНастройкиВыгрузки + + View + false + + + Edit + false + + + + InformationRegister.СостоянияОбменовДанными.Resource.РезультатВыполненияОбмена + + View + false + + + Edit + false + + + + DataProcessor.БлокировкаРаботыПользователей.Attribute.ОкончаниеДействияБлокировки + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектов.Dimension.НомерВерсии + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.Комментарий + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.Attribute.Описание + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.НаборыЗначенийДоступа.Attribute.ЗначениеДоступа + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Проверяющий + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаEMAIL.Attribute.ШаблонИмениФайлаСообщения + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.Город + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ВариантРаботыМастера + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.НомерДискаИТС + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ИдентификаторСообщения + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ПарольАдминистратораИБ + + View + false + + + Edit + false + + + + InformationRegister.ИсполнителиЗадач.Dimension.Исполнитель + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.НаборыЗначенийДоступа.Attribute.Изменение + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Dimension.Таблица + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.Том + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяФайлаОбработчиковСобытий + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КоличествоЭлементовВТранзакцииПриВыгрузкеДляПлановОбмена + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.ВидТранспортаСообщенийОбменаПоУмолчанию + + View + false + + + Edit + false + + + + InformationRegister.КурсыВалют.Resource.Кратность + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFILE.Attribute.ПарольАрхиваСообщенияОбмена + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаEMAIL.Attribute.EMAILСжиматьФайлИсходящегоСообщения + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.ИндексКартинки + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.АутентификацияWindowsИнформационнойБазыДляПодключения + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.РассмотретьПосле + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Представление + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Dimension.ВидДоступа + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ИсточникПоле5 + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.СтатусИзвлеченияТекста + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.СрокИсполнения + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ТаблицаПравилВыгрузки + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.Attribute.Описание + + View + false + + + Edit + false + + + + DataProcessor.ЗагрузкаКурсовВалют.TabularSection.СписокВалют.Attribute.ДатаКурса + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Resource.Серия + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.Ответственный + + View + false + + + Edit + false + + + + Catalog.Файлы.TabularSection.СертификатыШифрования.Attribute.Представление + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ТипИсточникаСтрокой + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ТипИнформационнойБазыДляПодключения + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.Автор + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.Attribute.Профиль + + View + false + + + Edit + false + + + + DataProcessor.ЗагрузкаКурсовВалют.TabularSection.СписокВалют.Attribute.Курс + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.ТипХраненияФайла + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFTP.Attribute.FTPСоединениеПользователь + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ПоляПоиска + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.Resource.ДатаЗавершения + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.TabularSection.ПредопределенныеОтветы.Attribute.ЭлементарныйВопрос + + View + false + + + Edit + false + + + + InformationRegister.НастройкиВерсионированияОбъектов.Dimension.ТипОбъекта + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFTP.Attribute.ШаблонИмениФайлаСообщения + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.МаксимальноеЗначение + + View + false + + + Edit + false + + + + InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.Dimension.УзелИнформационнойБазы + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ЭтоНастройкаРаспределеннойИнформационнойБазы + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.Предмет + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.Расширение + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.Описание + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.Версия + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.НаборыЗначенийДоступа.Attribute.НомерНабора + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.НеВыводитьНикакихИнформационныхСообщенийПользователю + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.StandardAttribute.Posted + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.StandardAttribute.Date + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.StandardAttribute.Number + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекущаяВерсияТом + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Resource.АльтернативныеНазвания + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ВнутреннийЗаголовок + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.Редактирует + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.ВидОперации + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.ДатаМодификацииУниверсальная + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.EMAILМаксимальныйДопустимыйРазмерСообщения + + View + false + + + Edit + false + + + + InformationRegister.ПрисоединенныеФайлы.Dimension.ПрисоединенныйФайл + + View + false + + + Edit + false + + + + InformationRegister.СостоянияОбменовДанными.Dimension.УзелИнформационнойБазы + + View + false + + + Edit + false + + + + Document.Встреча.StandardAttribute.Posted + + View + false + + + Edit + false + + + + Document.Встреча.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Document.Встреча.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Document.Встреча.StandardAttribute.Date + + View + false + + + Edit + false + + + + Document.Встреча.StandardAttribute.Number + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFTP.Attribute.FTPСоединениеМаксимальныйДопустимыйРазмерСообщения + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Attribute.ВидДоступаПравоИзменения + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFTP.Attribute.FTPСоединениеПароль + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.ТипТекста + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаСортировки.Attribute.Использование + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Представление + + View + false + + + Edit + false + + + + Catalog.Пользователи.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.Пользователи.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.Пользователи.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.Пользователи.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.Пользователи.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.Пользователи.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.Пользователи.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.Пользователи.StandardAttribute.Code + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.Кодировка + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.УдалитьОтветственныйЗаОбработкуПисем + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.TabularSection.Пользователи.Attribute.Пользователь + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ИспользоватьПараметрыТранспортаFILE + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.Resource.ИспользоватьЗаполнениеОбъекта + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекущаяВерсия + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектов.Attribute.АвторВерсии + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КоличествоОбъектовНаТранзакцию + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.Attribute.ВидимостьПоУмолчанию + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ИспользоватьПараметрыТранспортаEMAIL + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиСкрытыхКопий.Attribute.Представление + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ВыводВОкноСообщенийИнформационныхСообщений + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ДатаПодписи + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.ИндексКартинки + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.ВладелецФайла + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.EMAILСжиматьФайлИсходящегоСообщения + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ДатаСоздания + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ИсточникПоле2 + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Важность + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.НаборыЗначенийДоступа.Attribute.Изменение + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.СохраненныеНастройки + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.Resource.Наименование + + View + false + + + Edit + false + + + + Document.Анкета.TabularSection.Состав.Attribute.ЭлементарныйВопрос + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.TabularSection.Роли + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ДатаВремяОбновления + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ИмяФайлаНастроекОбменаДаннымиДляЗагрузки + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Resource.КемВыдан + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.ПутьКФайлу + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.Том + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.TabularSection.НаборыЗначенийДоступа.Attribute.Удаление + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + + View + false + + + Edit + false + + + + Catalog.Файлы.TabularSection.ДополнительныеРеквизиты.Attribute.Значение + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.НаборыЗначенийДоступа.Attribute.Добавление + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.Attribute.ЭлементарныйВопрос + + View + false + + + Edit + false + + + + InformationRegister.СостоянияОбменовДанными.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.СостоянияОбменовДанными.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.СостоянияОбменовДанными.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.СостоянияОбменовДанными.StandardAttribute.Period + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.Attribute.ДатаНачала + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.Attribute.Пользователь + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.ДоменноеИмяСервера + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Attribute.ВидДоступаБезГруппЗначенияДоступа + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.ПолноеНаименование + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам.Dimension.ДополнительныйОтчетИлиОбработка + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяФайлаВнешнейОбработкиОбработчиковСобытий + + View + false + + + Edit + false + + + + InformationRegister.НастройкиВерсионированияОбъектов.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.НастройкиВерсионированияОбъектов.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.НастройкиВерсионированияОбъектов.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.НастройкиВерсионированияОбъектов.StandardAttribute.Period + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.НомерВходящегоСообщения + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ПродолжатьНапоминания + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.Вид + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.ИдентификаторСообщения + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.Attribute.ИспользоватьРегламентноеЗадание + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеМакетыПечати.Attribute.Использование + + View + false + + + Edit + false + + + + Catalog.Валюты.Attribute.ОсновнаяВалюта + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Исполнитель + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFTP.Attribute.ПарольАрхиваСообщенияОбмена + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.TabularSection.Респонденты + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.СрокИсполнения + + View + false + + + Edit + false + + + + DataProcessor.ЗагрузкаКурсовВалют.Attribute.НачалоПериодаЗагрузки + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.Attribute.Ответственный + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.Attribute.Ответственный + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.FTPСоединениеМаксимальныйДопустимыйРазмерСообщения + + View + false + + + Edit + false + + + + InformationRegister.АдресныеСокращения.Resource.Наименование + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.КоличествоКопийВКаталоге + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.СтатусИзвлеченияТекста + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.Resource.ИспользоватьПечатныеФормы + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.TabularSection.НастройкиОбмена.Attribute.УзелИнформационнойБазы + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиПисьма + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Resource.ПравилаЗачитанные + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.НеЗадаватьВопросПриЗагрузкеДанныхПриОткрытииОбработки + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.TabularSection.ЗначенияДоступа.Attribute.ВидДоступа + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.АдресЭП + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.TabularSection.Состав + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиКопий.Attribute.Адрес + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ПортАгентаСервера + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Отпечаток + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.ИспользоватьДляФормыОбъекта + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ПортSMTP + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.КодТипаРезервногоКопирования + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Сертификат + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.FTPСоединениеМаксимальныйДопустимыйРазмерСообщения + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.АбонентКакСвязаться + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.Размер + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.Тема + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ЗаписыватьРегистрыНаборамиЗаписей + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.Автор + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.Attribute.ОбъектВыгруженПоСсылке + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.Resource.Стартован + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Отпечаток + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.Attribute.Рассмотрено + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.НаборыЗначенийДоступа + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.TabularSection.НаборыЗначенийДоступа + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.Dimension.УдалитьТипОбъекта + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Resource.Добавление + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.НомерТелефонаБезКодов + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.Значение + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.FTPСоединениеПассивноеСоединение + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.StandardAttribute.Code + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Dimension.ИмяПланаОбмена + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.FTPСоединениеПорт + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Resource.СрокДействия + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Attribute.ВидДоступаЕдинственныйДляТипаЗначенияДоступа + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ПроводитьРезервноеКопированиеПриВосстановленииДанных + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.ПодписанЭЦП + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ВидТранспортаСообщенийОбмена + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.Attribute.ТипОтчета + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.Attribute.РедактированиеШаблонаЗавершено + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.СинхронизироватьПоИдентификатору + + View + false + + + Edit + false + + + + Catalog.ВидыДокументовФизическихЛиц.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ВидыДокументовФизическихЛиц.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ВидыДокументовФизическихЛиц.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ВидыДокументовФизическихЛиц.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ВидыДокументовФизическихЛиц.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ВидыДокументовФизическихЛиц.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ВидыДокументовФизическихЛиц.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ВидыДокументовФизическихЛиц.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.Файлы.TabularSection.СертификатыШифрования + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиОтвета.Attribute.Представление + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.НаборыЗначенийДоступа.Attribute.Добавление + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ИмяАдминистратораКластера + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.МестоПроведенияВстречи + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.ТипХраненияФайла + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам.StandardAttribute.Period + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.Изменять + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Состояние + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.ИдентификаторыОснований + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.Размер + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.TabularSection.ВидыДоступа.Attribute.ДоступРазрешен + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Resource.Представление + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.ДатаСоздания + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Resource.ИнформацияОПравилах + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ИмяФайлаПодписи + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.TabularSection.НаборыЗначенийДоступа.Attribute.Добавление + + View + false + + + Edit + false + + + + InformationRegister.КалендарныеГрафики.Resource.ДеньВключенВГрафик + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.ИдентификаторОснования + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.ДатаСоздания + + View + false + + + Edit + false + + + + InformationRegister.НастройкиВерсионированияОбъектов.Resource.Вариант + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.РежимОбновления + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ОбработкиНастройкиЗагрузки + + View + false + + + Edit + false + + + + Document.Анкета.StandardAttribute.Posted + + View + false + + + Edit + false + + + + Document.Анкета.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Document.Анкета.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Document.Анкета.StandardAttribute.Date + + View + false + + + Edit + false + + + + Document.Анкета.StandardAttribute.Number + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.СерверВходящейПочтыPOP3 + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.Attribute.Предмет + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.РассмотретьПосле + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.Dimension.ЭлементарныйВопрос + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.Представление + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.ДатаПринятияКИсполнению + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Комментарий + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ИдентификаторОснования + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ЕстьВложения + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.ТипХраненияФайла + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.Dimension.БизнесПроцесс + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.EMAILМаксимальныйДопустимыйРазмерСообщения + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.TabularSection.ЗначенияДоступа + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ТипПриемника + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.КодТипаРезервногоКопирования + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.Участники.Attribute.Контакт + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.Resource.ПометкаУдаления + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.НомерИтерации + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.StandardAttribute.Code + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ИмяВременногоКаталогаСообщенийОбмена + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.FILEКаталогОбменаИнформацией + + View + false + + + Edit + false + + + + InformationRegister.СостоянияОбменовДанными.Resource.ДатаНачала + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиОтвета.Attribute.Контакт + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ИмяФайлаНастроекОбменаДанными + + View + false + + + Edit + false + + + + InformationRegister.ДополнительныеСведения.Dimension.Свойство + + View + false + + + Edit + false + + + + Catalog.СтраныМира + + Read + true + + + Insert + true + + + Update + true + + + View + true + + + InteractiveInsert + true + + + Edit + true + + + InteractiveSetDeletionMark + true + + + InteractiveClearDeletionMark + true + + + InputByString + true + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ТаблицаНастройкиПараметров + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.Attribute.ДатаОкончания + + View + false + + + Edit + false + + + + InformationRegister.НомераОтсканированныхФайлов.Resource.Номер + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаНеутвержденныхСвязей + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.Attribute.ВысотаЭлементаФормулировкиВопроса + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КомментарийПриВыгрузкеДанных + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ПодписанЭЦП + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Назначение + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.Тип + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.ПутьКФайлу + + View + false + + + Edit + false + + + + Document.Анкета.TabularSection.Состав.Attribute.Ответ + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ХранитьВерсии + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.ГлавнаяЗадача + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.Resource.ДатаПомещенияВРабочийКаталог + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.ТипПриемникаСтрокой + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиПисьма + + View + false + + + Edit + false + + + + InformationRegister.ИсполнителиЗадач.Dimension.РольИсполнителя + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.НаборыЗначенийДоступа.Attribute.Удаление + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.Resource.УникальныйИдентификаторИсточникаСтрокой + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.ДатаСоздания + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.Предмет + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ТаблицаПравилОчистки + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиОтвета.Attribute.Представление + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.Расширение + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.Attribute.ИзменятьВТранзакции + + View + false + + + Edit + false + + + + DocumentJournal.Взаимодействия.StandardAttribute.Type + + View + false + + + Edit + false + + + + DocumentJournal.Взаимодействия.StandardAttribute.Ref + + View + false + + + Edit + false + + + + DocumentJournal.Взаимодействия.StandardAttribute.Date + + View + false + + + Edit + false + + + + DocumentJournal.Взаимодействия.StandardAttribute.Posted + + View + false + + + Edit + false + + + + DocumentJournal.Взаимодействия.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + DocumentJournal.Взаимодействия.StandardAttribute.Number + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.Описание + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Отпечаток + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ВерсияПлатформыИнформационнойБазыДляПодключения + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.КаталогСРезервнымиКопиями + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.ЭтоУдалениеОбъекта + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.TabularSection.ВидыДоступа.Attribute.ДоступРазрешен + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.КоличествоОбъектовВПриемнике + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.АрхивироватьФайл + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ПользовательSMTP + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFTP.Attribute.FTPСоединениеПуть + + View + false + + + Edit + false + + + + InformationRegister.ПутиМодулейКриптографииСерверовLinux.Dimension.ИмяКомпьютера + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.УзелИнформационнойБазы + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.СертификатыШифрования + + View + false + + + Edit + false + + + + DataProcessor.БлокировкаРаботыПользователей.Attribute.КодДляРазблокировки + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиКопий.Attribute.Представление + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ВыгружатьТолькоРазрешенные + + View + false + + + Edit + false + + + + Catalog.Организации.Attribute.Префикс + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.Регион + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектов.Attribute.ДатаВерсии + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.МногострочноеПолеВвода + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFTP.Attribute.FTPСжиматьФайлИсходящегоСообщения + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ПериодОповещения + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.НажатиеГиперссылки + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.Attribute.ОткрытыйОтвет + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Сертификат + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.Описание + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.ЗаблокированныйРеквизит + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.ТекстХранилище + + View + false + + + Edit + false + + + + InformationRegister.ПутиМодулейКриптографииСерверовLinux.Resource.ПутьМодуляКриптографии + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.Attribute.Автор + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.НаборыЗначенийДоступа.Attribute.ВидДоступа + + View + false + + + Edit + false + + + + DataProcessor.КонвертацияОбъектовРаспределенныхИнформационныхБаз.Attribute.УзелИнформационнойБазы + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ИмяТаблицыПриемника + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.TabularSection.УдалитьИсключенияБыстрогоДоступа.Attribute.УдалитьПользователь + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.TabularSection.НастройкиОбмена.Attribute.КоличествоЭлементовВТранзакции + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ИспользоватьРасписаниеДляПроверкиОбновления + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ЗапомнитьПарольСервераОбновлений + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.Расширение + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.ДатаСоздания + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.Расширение + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.Resource.ИспользоватьСозданиеСвязанныхОбъектов + + View + false + + + Edit + false + + + + Document.Анкета.TabularSection.Состав.Attribute.ОткрытыйОтвет + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.Attribute.ИспользуютсяДопРеквизиты + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.УстановившийПодпись + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.Важность + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.Изменил + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.НаборыЗначенийДоступа.Attribute.Удаление + + View + false + + + Edit + false + + + + InformationRegister.СоставыГруппПользователей.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.СоставыГруппПользователей.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.СоставыГруппПользователей.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.СоставыГруппПользователей.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Разделы + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Автор + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.Входящий + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ИспользоватьПредварительныйПросмотр + + View + false + + + Edit + false + + + + Catalog.Валюты.Attribute.Наценка + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеМакетыПечати.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеМакетыПечати.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеМакетыПечати.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеМакетыПечати.StandardAttribute.Period + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам.Resource.Доступно + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ВестиДополнительныйКонтрольЗаписиВXML + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиКопий + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.Dimension.Анкета + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.TabularSection.НаборыЗначенийДоступа.Attribute.Изменение + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ИспользоватьДляПолучения + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.AddressingAttribute.Исполнитель + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Описание + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Attribute.ВидДоступаПравоЧтения + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.ВладелецФайла + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.Attribute.Заметки + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Отпечаток + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Dimension.Объект + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ВосстанавливатьИнформационнуюБазу + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ВерсияПравилОбмена + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Resource.Индекс + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ИмяФайлаПодписи + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Attribute.ВидДоступаПравоДобавления + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.ПутьКЛокальномуФайлуОбновления + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ПериодОповещения + + View + false + + + Edit + false + + + + InformationRegister.СостоянияОбменовДанными.Resource.ДатаОкончания + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.Комментарий + + View + false + + + Edit + false + + + + InformationRegister.ЗначенияГруппДоступа.Dimension.ГруппаДоступа + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Разделы.Attribute.УдалитьИмяРаздела + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ТипХраненияФайла + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.КоличествоОбъектовСопоставленных + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ВыполнитьПриЗавершенииРаботы + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.Ключ + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ЕдиницаИзмеренияПериодаОтложенногоОповещения + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ДатаСоздания + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.TabularSection.УдалитьИсключенияБыстрогоДоступа + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.ТипХраненияФайла + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.StandardAttribute.Posted + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.StandardAttribute.Date + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.StandardAttribute.Number + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFILE.Attribute.FILEКаталогОбменаИнформацией + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.Attribute.МаксимальныйРазмер + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.Комментарий + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекущаяВерсияРасширение + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.КомуВыданСертификат + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ОтправительАдрес + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Комментарий + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Resource.Изменение + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ОбрезатьСтрокиСправа + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.TabularSection.ПредопределенныеОтветы + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.НаборыЗначенийДоступа.Attribute.Добавление + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ВладелецФайла + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИспользоватьТранзакции + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиОтвета.Attribute.Адрес + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ТипОграниченияКаталогаСРезервнымиКопиями + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Отпечаток + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.РезультатВыполнения + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.Dimension.Объект + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.Attribute.ПолныйПутьLinux + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.ОбъектыДляИзменения + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ВремяОжидания + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ДатаПодписи + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ПарольАрхиваСообщенияОбмена + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ЕдиницаИзмеренияПериодаХраненияРезервныхКопий + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.ТекстХранилище + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ИмяКаталогаРезервнойКопииИБ + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.КомуВыданСертификат + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.Участники.Attribute.ПредставлениеКонтакта + + View + false + + + Edit + false + + + + DataProcessor.ЗагрузкаКурсовВалют.TabularSection.СписокВалют.Attribute.КодВалюты + + View + false + + + Edit + false + + + + InformationRegister.КурсыВалют.Resource.Курс + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Сертификат + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.Attribute.РассмотретьПосле + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ТипОбъектаСтрокой + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ВариантРасписанияРезервногоКопирования + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ИмяФайлаПодписи + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиСкрытыхКопий + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИспользоватьОтборПоДатеДляВсехОбъектов + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.Resource.ВРабочемКаталогеВладельца + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.АдресЭлектроннойПочты + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.Dimension.Версия + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.СертификатыШифрования + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.КомуВыданСертификат + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.Attribute.РеквизитДопУпорядочивания + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.УчетнаяЗапись + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.ПутьКФайлу + + View + false + + + Edit + false + + + + InformationRegister.РабочиеКаталогиФайлов.Dimension.Пользователь + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты + + View + false + + + Edit + false + + + + InformationRegister.НаличиеПрисоединенныхФайлов.Attribute.ИдентификаторОбъекта + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Представление + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.FTPСжиматьФайлИсходящегоСообщения + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.ЗаполнятьАвтоматически + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.Attribute.ТипРеспондентов + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Resource.Чтение + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ИдентификаторыОснований + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.УзелИнформационнойБазы + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ФлагРежимОтладкиОбработчиков + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись + + View + false + + + Edit + false + + + + Catalog.Пользователи.Attribute.ИдентификаторПользователяИБ + + View + false + + + Edit + false + + + + Catalog.Файлы.TabularSection.СертификатыШифрования.Attribute.Отпечаток + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.ПоляТаблицыПриемника + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.Attribute.Комментарий + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекущаяВерсияНомерВерсии + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.ПараметрыВыбора + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяФайлаПравилОбмена + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ИмяФайлаОбновления + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.FTPСоединениеПользователь + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Сертификат + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ЕдиницаИзмеренияПериодаОповещения + + View + false + + + Edit + false + + + + InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.Attribute.НомерОтправленного + + View + false + + + Edit + false + + + + InformationRegister.СостоянияУспешныхОбменовДанными.Dimension.ДействиеПриОбмене + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеНастройкиДоступаКОбработкам.Dimension.ИдентификаторКоманды + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.Attribute.ТипыДополнительногоОбъектаАдресации + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ПроцентСопоставленияОбъектов + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.Редактирует + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Подтверждено + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Attribute.Удаление + + View + false + + + Edit + false + + + + Catalog.Валюты.Attribute.ЗагружаетсяИзИнтернета + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.TabularSection.ЗначенияДоступа + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.Важность + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.СрокПроверки + + View + false + + + Edit + false + + + + InformationRegister.ИсполнителиЗадач.Dimension.ДополнительныйОбъектАдресации + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.ИмяРеквизита + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ПортКластераСерверов + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ПропускатьПриветствие + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Сертификат + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.Регион + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиОтвета + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Attribute.ИспользоватьФильтрВыборочнойРегистрацииОбъектов + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.НаборыЗначенийДоступа.Attribute.Изменение + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.Описание + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Сертификат + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.StandardAttribute.Code + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Resource.КодПодразделения + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ПриемникПоле4 + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.Предмет + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Dimension.ВидПравил + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.НажатиеГиперссылки + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Отпечаток + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекущаяВерсияКод + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.УдалитьВПредставлениеВключатьИмяПользователя + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.СертификатыШифрования + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.ТекстХранилище + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.Attribute.Формулировка + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ДатаНачала + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиСкрытыхКопий.Attribute.Контакт + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ПарольИнформационнойБазыДляПодключения + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.ДатаМодификацииУниверсальная + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.РазмерФайлаОбновления + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Наименование + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Dimension.Пользователь + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.Dimension.УзелИнформационнойБазы + + View + false + + + Edit + false + + + + InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.StandardAttribute.Period + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектовАдресногоКлассификатора.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектовАдресногоКлассификатора.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектовАдресногоКлассификатора.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектовАдресногоКлассификатора.StandardAttribute.Period + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Автор + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.Вид + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.РасписаниеПроверкиНаличияОбновления + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.СертификатыШифрования + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ИмяПланаОбмена + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Отпечаток + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.Автор + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Сертификат + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ДатаВыгрузкиДанных + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ПериодОтложенногоОповещения + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.НаборыЗначенийДоступа.Attribute.ВидДоступа + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.Длина + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Dimension.Код + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ТипОграниченияКаталогаСРезервнымиКопиями + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ИсточникПоле1 + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаНеутвержденныхСвязей.Attribute.ТипИсточника + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.Вид + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаEMAIL.Attribute.EMAILМаксимальныйДопустимыйРазмерСообщения + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.TabularSection.ЭлектронныеЦифровыеПодписи + + View + false + + + Edit + false + + + + InformationRegister.ДополнительныеСведения.Resource.Значение + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.ПутьКФайлу + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.НаборыЗначенийДоступа.Attribute.ВидДоступа + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.КодТипаИнтерактивногоРезервногоКопирования + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.НепосредственноеЧтениеВИБПриемнике + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ИмяФайлаПодписи + + View + false + + + Edit + false + + + + DataProcessor.БлокировкаРаботыПользователей.Attribute.НачалоДействияБлокировки + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.Описание + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.ВерсияДляОбновления + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ПарольАдминистратора + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.Том + + View + false + + + Edit + false + + + + Catalog.ЗначенияСвойствОбъектов.Attribute.Вес + + View + false + + + Edit + false + + + + Document.Анкета.Attribute.Опрос + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.StandardAttribute.ValueType + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.StandardAttribute.Description + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.StandardAttribute.Code + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.StandardAttribute.Parent + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ОбъектыАдресацииЗадач.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.ИмяФайла + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Dimension.Узел + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиОтвета.Attribute.Адрес + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.НаборыЗначенийДоступа.Attribute.ЗначениеДоступа + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ЭтоИнтерактивныйРежим + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.Attribute.Наименование + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ЕдиницаИзмеренияПериодаХраненияРезервныхКопий + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.Attribute.ТипОбъектовАвторизации + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.Dimension.ТипПриемника + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.ВладелецФайла + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.Версия4Разряд + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ПродолжатьНапоминания + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.Attribute.ДополнительныйОбъектАдресации + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.Изменил + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.Attribute.Комментарий + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ПериодХраненияРезервныхКопий + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.НаборыЗначенийДоступа.Attribute.Чтение + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.ОтправительПредставление + + View + false + + + Edit + false + + + + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ЗначенияСвойствОбъектов.StandardAttribute.Code + + View + false + + + Edit + false + + + + InformationRegister.КурсыВалют.Dimension.Валюта + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.Важность + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ПовторныйЗапуск + + View + false + + + Edit + false + + + + Catalog.ФизическиеЛица.Attribute.Пол + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяИнформационнойБазыНаСервереДляПодключения + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ФайлЗагрузкиРезервнойКопии + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.ПарольАрхиваСообщенияОбмена + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.Attribute.ДатаСоздания + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ИмяФайлаПодписи + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ПортPOP3 + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.РежимОтладкиАлгоритмов + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ПарольДляРаспаковкиФайлаОбмена + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.EMAILСжиматьФайлИсходящегоСообщения + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.ПояснениеКомментария + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.Зашифрован + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.Размер + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.ДатаМодификацииУниверсальная + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.Attribute.Комментарий + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Dimension.КодГородаВКоде + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.Представление + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.СтатусПисьма + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ПериодХраненияСообщенийНаСервере + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Комментарий + + View + false + + + Edit + false + + + + Catalog.Организации.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.Организации.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.Организации.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.Организации.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.Организации.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.Организации.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.Организации.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.Организации.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.ЛокальныйОтносительныйКаталог + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекущаяВерсияРазмер + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИспользоватьТранзакцииПриВыгрузкеДляПлановОбмена + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиКопий.Attribute.Контакт + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ТехническаяИнформацияОбОшибке + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Resource.УдалитьВидДокумента + + View + false + + + Edit + false + + + + DataProcessor.ЗагрузкаКурсовВалют.TabularSection.СписокВалют.Attribute.Валюта + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Dimension.КодАдресногоОбъектаВКоде + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Сертификат + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.TabularSection.Состав + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеМакетыПечати.Resource.Макет + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.Версия1Разряд + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Dimension.КодНаселенногоПунктаВКоде + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.НомерТелефона + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.Attribute.УдалитьПароль + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.TabularSection.НаборыЗначенийДоступа.Attribute.ЗначениеДоступа + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.EMAILУчетнаяЗапись + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.AddressingAttribute.РольИсполнителя + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.ХранилищеОбработки + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.КомуВыданСертификат + + View + false + + + Edit + false + + + + DataProcessor.ЗагрузкаПравилРегистрацииОбъектов.Attribute.ИмяПланаОбменаДляЗагрузки + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.ДатаСоздания + + View + false + + + Edit + false + + + + Catalog.НаборыДополнительныхРеквизитовИСведений.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.ОбъектыДляИзменения.Attribute.СоставДопСведений + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.FTPСоединениеПароль + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.Публикация + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.ДатаМодификацииУниверсальная + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.Dimension.ТипФормы + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Attribute.ТипОбъекта + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ДописыватьДанныеВПротоколОбмена + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.Расширение + + View + false + + + Edit + false + + + + Catalog.Файлы.TabularSection.ДополнительныеРеквизиты.Attribute.ТекстоваяСтрока + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.Attribute.ИспользуетсяСОбъектамиАдресации + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.ПолучателиПисьма.Attribute.Адрес + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиКопий.Attribute.Контакт + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ПарольСервераОбновлений + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.Attribute.Описание + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.Attribute.ТипТабличногоВопроса + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.ИндексКартинки + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.НомерВерсии + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Attribute.ИзменениеЗапрещено + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.ПредметСтрокой + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.TabularSection.ДополнительныеРеквизиты.Attribute.ТекстоваяСтрока + + View + false + + + Edit + false + + + + Catalog.ВариантыОтветовАнкет.Attribute.РеквизитДопУпорядочивания + + View + false + + + Edit + false + + + + InformationRegister.ПутиМодулейКриптографииСерверовLinux.Resource.Комментарий + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ОтправительКонтакт + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ОбработчикиСобытийЧитаемИзФайлаПравилОбмена + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.Attribute.СписокУчастников + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Dimension.Право + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.Свойство + + View + false + + + Edit + false + + + + InformationRegister.НастройкиВерсионированияОбъектов.Resource.Использовать + + View + false + + + Edit + false + + + + Catalog.НазначенияСертификатовЭЦП.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.НазначенияСертификатовЭЦП.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.НазначенияСертификатовЭЦП.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.НазначенияСертификатовЭЦП.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.НазначенияСертификатовЭЦП.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.НазначенияСертификатовЭЦП.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.НазначенияСертификатовЭЦП.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.НазначенияСертификатовЭЦП.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.Attribute.ПорядокЗаполнения + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ДополнительныеРеквизитыИСведения.Attribute.СклоненияПредмета + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.СостояниеБизнесПроцесса + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.Текст + + View + false + + + Edit + false + + + + InformationRegister.ПравилаДляОбменаДанными.Attribute.ПравилаЗагружены + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ДатаМодификацииУниверсальная + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ДатаПодписи + + View + false + + + Edit + false + + + + Document.Анкета.TabularSection.Состав.Attribute.Вопрос + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.РассмотретьПосле + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.TabularSection.СоставТабличногоВопроса + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.Представление + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.УстановившийПодпись + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.Описание + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFTP.Attribute.FTPСоединениеПассивноеСоединение + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.ПутьКФайлу + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ТипПриемникаСтрокой + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ИндексКартинки + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.ТипИсточникаСтрокой + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Attribute.УдалениеЗапрещено + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.ОбъектыДляИзменения.Attribute.СсылкаНаОбъект + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.Attribute.ТипыОсновногоОбъектаАдресации + + View + false + + + Edit + false + + + + Document.Анкета.TabularSection.Состав.Attribute.НомерЯчейки + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Dimension.НомерНабора + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.ИмяПользователя + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.Зашифрован + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.КомуВыданСертификат + + View + false + + + Edit + false + + + + InformationRegister.ДополнительныеСведения.Dimension.Объект + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.Представление + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.Предмет + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.Тип + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиКопий.Attribute.Представление + + View + false + + + Edit + false + + + + InformationRegister.НаличиеПрисоединенныхФайлов.Dimension.ОбъектСФайлами + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.TabularSection.СоставТабличногоВопроса.Attribute.ЭлементарныйВопрос + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.TabularSection.Состав.Attribute.ВнешнийПользователь + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Сертификат + + View + false + + + Edit + false + + + + Catalog.ШаблоныАнкет.Attribute.Заголовок + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.Изменил + + View + false + + + Edit + false + + + + Catalog.ГруппыПользователей.TabularSection.Состав.Attribute.Пользователь + + View + false + + + Edit + false + + + + Catalog.ВидыКонтактнойИнформации.Attribute.МожноИзменятьСпособРедактирования + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.УникальныйИдентификаторПриемника + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ПостроительОтчета + + View + false + + + Edit + false + + + + InformationRegister.СостоянияУспешныхОбменовДанными.Dimension.УзелИнформационнойБазы + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ИсточникПоле4 + + View + false + + + Edit + false + + + + Document.Анкета.Attribute.РедактируемыйРаздел + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ДатаПодписи + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Dimension.КодУлицыВКоде + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.Attribute.ПолныйПутьWindows + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ИндексКартинки + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.Attribute.ВсеОбъектыАвторизации + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.УстановившийПодпись + + View + false + + + Edit + false + + + + InformationRegister.ВерсииОбъектов.Resource.ВерсияОбъекта + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.Том + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВидыДоступа.StandardAttribute.ValueType + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВидыДоступа.StandardAttribute.Description + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВидыДоступа.StandardAttribute.Code + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВидыДоступа.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВидыДоступа.StandardAttribute.Parent + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВидыДоступа.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВидыДоступа.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВидыДоступа.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.TabularSection.ЗначенияДоступа.Attribute.ЗначениеДоступа + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяФайлаОбмена + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.Attribute.Автор + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.FTPСоединениеПуть + + View + false + + + Edit + false + + + + InformationRegister.НазначениеДополнительныхОбработок.Resource.ИспользоватьОтчеты + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.Версия3Разряд + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.Attribute.УстановитьРолиНепосредственно + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.ВладелецФайла + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.НаборыЗначенийДоступа.Attribute.НомерНабора + + View + false + + + Edit + false + + + + InformationRegister.СостоянияУспешныхОбменовДанными.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.СостоянияУспешныхОбменовДанными.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.СостоянияУспешныхОбменовДанными.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.СостоянияУспешныхОбменовДанными.StandardAttribute.Period + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.ДатаЗавершения + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.Размер + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.Операции.Attribute.ДопустимыеТипы + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.Кодировка + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.StandardAttribute.Period + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.Attribute.РодительВопрос + + View + false + + + Edit + false + + + + InformationRegister.КалендарныеГрафики.Dimension.ДатаГрафика + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ВладелецФайла + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Resource.Удаление + + View + false + + + Edit + false + + + + Catalog.ВнешниеПользователи.Attribute.ОбъектАвторизации + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.FTPСоединениеПароль + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.ТребуетсяКомментарий + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.НаборыЗначенийДоступа.Attribute.Изменение + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.Dimension.Пользователь + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.TabularSection.НаборыЗначенийДоступа.Attribute.ВидДоступа + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.КомментарийПриЗагрузкеДанных + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.НуженФайлОбновления + + View + false + + + Edit + false + + + + InformationRegister.ДокументыФизическихЛиц.Dimension.ВидДокумента + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ОптимизированнаяЗаписьОбъектов + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.Attribute.ПоказыватьВАрхивеАнкет + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.Attribute.ТипВопроса + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ТомаХраненияФайлов.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.СтатусИзвлеченияТекста + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ТаблицаПравилКонвертации + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.РассмотретьПосле + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.Пометка + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Attribute.Изменение + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.Автор + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.АдресЭлектроннойПочты + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.ValueType + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.Description + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.Code + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.Parent + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.StandardAttribute.Ref + + View + false + + + Edit + false + + + + BusinessProcess.Задание.StandardAttribute.Started + + View + false + + + Edit + false + + + + BusinessProcess.Задание.StandardAttribute.HeadTask + + View + false + + + Edit + false + + + + BusinessProcess.Задание.StandardAttribute.Completed + + View + false + + + Edit + false + + + + BusinessProcess.Задание.StandardAttribute.Ref + + View + false + + + Edit + false + + + + BusinessProcess.Задание.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + BusinessProcess.Задание.StandardAttribute.Date + + View + false + + + Edit + false + + + + BusinessProcess.Задание.StandardAttribute.Number + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.КластерТребуетАутентификации + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.Attribute.ПоставляемыйПрофильИзменен + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.StandardAttribute.Period + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.FTPСоединениеПользователь + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.ВариантЗапуска + + View + false + + + Edit + false + + + + DataProcessor.СписокРеспондента.Attribute.Респондент + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Расширение + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.FTPСоединениеПассивноеСоединение + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.Resource.Размер + + View + false + + + Edit + false + + + + DataProcessor.КонвертацияОбъектовРаспределенныхИнформационныхБаз.Attribute.КоличествоЭлементовВТранзакции + + View + false + + + Edit + false + + + + InformationRegister.СоответствияОбъектовИнформационныхБаз.Dimension.ТипИсточника + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.Важность + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.АбонентКонтакт + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ПарольДляСжатияФайлаОбмена + + View + false + + + Edit + false + + + + InformationRegister.ДатыЗапретаИзменения.Dimension.Раздел + + View + false + + + Edit + false + + + + InformationRegister.ИдентификаторыПолученныхЭлектронныхПисем.Resource.ДатаПолучения + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.УзелИнформационнойБазы + + View + false + + + Edit + false + + + + InformationRegister.НаборыЗначенийДоступа.Attribute.ВидДоступаЧерезПраваПоЗначениямДоступа + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.ИмяТипаОбъектаТаблицыИсточника + + View + false + + + Edit + false + + + + InformationRegister.АдресныеСокращения.Dimension.Код + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.Зашифрован + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.Том + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.СтатусИзвлеченияТекста + + View + false + + + Edit + false + + + + DataProcessor.КонвертацияОбъектовРаспределенныхИнформационныхБаз.Attribute.КлючСообщенияЖурналаРегистрации + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.Attribute.Комментарий + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.АдресЭП + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаFTP.Attribute.FTPСоединениеПорт + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ИспользоватьПараметрыТранспортаFTP + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.Страна + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Отпечаток + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.НаборыЗначенийДоступа + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.СтрокаРасписания + + View + false + + + Edit + false + + + + InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.Resource.ВыполнитьКорректировкуИнформацииСопоставления + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.СписокПолейТаблицы + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.Параметры + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.НаборыЗначенийДоступа + + View + false + + + Edit + false + + + + DataProcessor.БлокировкаРаботыПользователей.Attribute.ВременноЗапретитьРаботуПользователей + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.Текст + + View + false + + + Edit + false + + + + DataProcessor.ГрупповоеИзменениеОбъектов.TabularSection.ОбъектыДляИзменения.Attribute.СоставДопРеквизитов + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ПроверятьНаличиеОбновленияПриЗапуске + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.ДатаПодписи + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.ЕстьВложения + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.ТекстHTML + + View + false + + + Edit + false + + + + InformationRegister.ИдентификаторыПолученныхЭлектронныхПисем.Dimension.Идентификатор + + View + false + + + Edit + false + + + + InformationRegister.ПользовательскиеМакетыПечати.Dimension.ИмяМакета + + View + false + + + Edit + false + + + + InformationRegister.ЗначенияГруппДоступа.Dimension.ЗначениеДоступа + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.ПрефиксИнформационнойБазыИсточникаУстановлен + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.ПодписанЭЦП + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.ИсточникПоле3 + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.Attribute.Изменил + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Отпечаток + + View + false + + + Edit + false + + + + Catalog.Файлы.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.Файлы.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.Файлы.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.Файлы.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.Файлы.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.Файлы.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.Файлы.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.Файлы.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ПапкиФайлов.TabularSection.ДополнительныеРеквизиты + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.Ответственный + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ИмяАдминистратораИБ + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.Участники + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекущаяВерсияПутьКФайлу + + View + false + + + Edit + false + + + + InformationRegister.АдресныеСокращения.Dimension.Уровень + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.ДанныеУспешноЗагружены + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Представление + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.ПринятаКИсполнению + + View + false + + + Edit + false + + + + InformationRegister.ДанныеБизнесПроцессов.Resource.Номер + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ЭтоУдалениеОбъекта + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиКопий.Attribute.Адрес + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Сертификат + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяВременногоФайлаОбработчиковСобытий + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.StandardAttribute.Code + + View + false + + + Edit + false + + + + DataProcessor.ПомощникСозданияОбменаДанными.Attribute.НаименованиеЭтойБазы + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.Информация + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Сертификат + + View + false + + + Edit + false + + + + Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.TabularSection.СертификатыШифрования.Attribute.Представление + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекущаяВерсияАвтор + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.Пользователь + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.Предмет + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.TabularSection.НаборыЗначенийДоступа.Attribute.ВидДоступа + + View + false + + + Edit + false + + + + InformationRegister.ПрисоединенныеФайлы.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.ПрисоединенныеФайлы.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.ПрисоединенныеФайлы.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.ПрисоединенныеФайлы.StandardAttribute.Period + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ВыслатьОтчетНаПочту + + View + false + + + Edit + false + + + + DataProcessor.ТранспортСообщенийОбменаEMAIL.Attribute.ПарольАрхиваСообщенияОбмена + + View + false + + + Edit + false + + + + Catalog.РолиИсполнителей.Attribute.ИспользуетсяБезОбъектовАдресации + + View + false + + + Edit + false + + + + InformationRegister.ИдентификаторыПолученныхЭлектронныхПисем.Dimension.УчетнаяЗапись + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.УстановившийПодпись + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.TabularSection.ЗначенияДоступа.Attribute.ВидДоступа + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.Attribute.Комментарий + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.СерверИсходящейПочтыSMTP + + View + false + + + Edit + false + + + + Document.Встреча.TabularSection.Участники.Attribute.КакСвязаться + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.НастройкаАвтоматическойЗагрузкиДанных + + View + false + + + Edit + false + + + + Catalog.ВопросыШаблонаАнкеты.TabularSection.ПредопределенныеОтветы.Attribute.Ответ + + View + false + + + Edit + false + + + + InformationRegister.АдресныеСокращения.Resource.Сокращение + + View + false + + + Edit + false + + + + Catalog.ГруппыИсполнителейЗадач.Attribute.ОсновнойОбъектАдресации + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.Attribute.УдалитьПредставлениеОбъекта + + View + false + + + Edit + false + + + + InformationRegister.РабочиеКаталогиФайлов.StandardAttribute.Active + + View + false + + + Edit + false + + + + InformationRegister.РабочиеКаталогиФайлов.StandardAttribute.LineNumber + + View + false + + + Edit + false + + + + InformationRegister.РабочиеКаталогиФайлов.StandardAttribute.Recorder + + View + false + + + Edit + false + + + + InformationRegister.РабочиеКаталогиФайлов.StandardAttribute.Period + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.Версия + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.НомерТелефона + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ЕдиницаИзмеренияПериодаОповещения + + View + false + + + Edit + false + + + + BusinessProcess.Задание.Attribute.НаПроверке + + View + false + + + Edit + false + + + + Catalog.ВстречаПрисоединенныеФайлы.Attribute.Зашифрован + + View + false + + + Edit + false + + + + InformationRegister.НастройкиТранспортаОбмена.Resource.FTPСоединениеПуть + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.Attribute.СписокПолучателейПисьма + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ВыполнитьОбменДаннымиВОптимизированномФормате + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ОчисткаКаталогаСРезервнымиКопиямиПриПереполнении + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.Зашифрован + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.TabularSection.Роли + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.StandardAttribute.Predefined + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.StandardAttribute.IsFolder + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.StandardAttribute.Owner + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.StandardAttribute.Parent + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.StandardAttribute.Description + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.StandardAttribute.Code + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Отпечаток + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.СоздаватьРезервнуюКопию + + View + false + + + Edit + false + + + + Catalog.ГруппыВнешнихПользователей.TabularSection.Роли.Attribute.УдалитьРоль + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.TabularSection.Роли.Attribute.УдалитьРоль + + View + false + + + Edit + false + + + + Document.Встреча.Attribute.Описание + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.TabularSection.ПолучателиОтвета.Attribute.Контакт + + View + false + + + Edit + false + + + + Catalog.Файлы.TabularSection.ДополнительныеРеквизиты + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.ДоменноеИмяСервера + + View + false + + + Edit + false + + + + Catalog.СценарииОбменовДанными.TabularSection.НастройкиОбмена.Attribute.ВидТранспортаОбмена + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.StandardAttribute.Posted + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.StandardAttribute.Ref + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.StandardAttribute.DeletionMark + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.StandardAttribute.Date + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоВходящее.StandardAttribute.Number + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.ПутьКЛокальномуФайлу + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.Описание + + View + false + + + Edit + false + + + + Catalog.Организации.TabularSection.КонтактнаяИнформация.Attribute.НомерТелефонаБезКодов + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.Attribute.ИсточникДискаИТС + + View + false + + + Edit + false + + + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ФайлЗагрузкиРезервнойКопии + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Resource.Сокращение + + View + false + + + Edit + false + + + + Document.ЭлектронноеПисьмоИсходящее.Attribute.СписокПолучателейСкрытыхКопий + + View + false + + + Edit + false + + + + Document.Анкета.Attribute.Респондент + + View + false + + + Edit + false + + + + InformationRegister.ОтветыНаВопросыАнкет.Resource.Ответ + + View + false + + + Edit + false + + + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ИмяФайлаСообщенияОбмена + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Attribute.Добавление + + View + false + + + Edit + false + + + + InformationRegister.АдресныйКлассификатор.Dimension.КодРайонаВКоде + + View + false + + + Edit + false + + + + ChartOfCharacteristicTypes.ВопросыДляАнкетирования.Attribute.ВидКонтактнойИнформации + + View + false + + + Edit + false + + + + InformationRegister.ИсполнителиЗадач.Attribute.ГруппаИсполнителейЗадач + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.ДатаИсполнения + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.Зашифрован + + View + false + + + Edit + false + + + + Catalog.ВариантыОтчетов.Attribute.Настройки + + View + false + + + Edit + false + + + + Document.ЗапланированноеВзаимодействие.TabularSection.Участники.Attribute.ПредставлениеКонтакта + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.ПутьКФайлуОбновления + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ФлагРежимОтладки + + View + false + + + Edit + false + + + + Catalog.Файлы.Attribute.ТекущаяВерсияДатаСоздания + + View + false + + + Edit + false + + + + Document.НазначениеОпросов.Attribute.ШаблонАнкеты + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаСортировки.Attribute.НаправлениеСортировки + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.Attribute.Рассмотрено + + View + false + + + Edit + false + + + + Catalog.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.Attribute.ПодписанЭЦП + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Attribute.Чтение + + View + false + + + Edit + false + + + + InformationRegister.ФайлыВРабочемКаталоге.Dimension.Пользователь + + View + false + + + Edit + false + + + + Catalog.ГруппыДоступа.Attribute.ТипПользователей + + View + false + + + Edit + false + + + + Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Комментарий + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.Attribute.ПоляПоискаТаблицыПриемника + + View + false + + + Edit + false + + + + InformationRegister.СоставыГруппПользователей.Dimension.ГруппаПользователей + + View + false + + + Edit + false + + + + Catalog.ПрофилиГруппДоступа.TabularSection.ВидыДоступа.Attribute.Предустановленный + + View + false + + + Edit + false + + + + InformationRegister.НомераОтсканированныхФайлов.Dimension.Владелец + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИмяФайлаПротоколаОбмена + + View + false + + + Edit + false + + + + DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ВыводВПротоколИнформационныхСообщений + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.Поставщик + + View + false + + + Edit + false + + + + DataProcessor.ОбновлениеКонфигурации.TabularSection.ДоступныеОбновления.Attribute.Конфигурация + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаСортировки + + View + false + + + Edit + false + + + + Task.ЗадачаИсполнителя.Attribute.Автор + + View + false + + + Edit + false + + + + Catalog.ДополнительныеОтчетыИОбработки.Attribute.ИспользоватьДляФормыСписка + + View + false + + + Edit + false + + + + DataProcessor.РезервноеКопированиеИБ.Attribute.ПериодОтложенногоОповещения + + View + false + + + Edit + false + + + + Catalog.Пользователи.TabularSection.КонтактнаяИнформация.Attribute.Город + + View + false + + + Edit + false + + + + Catalog.Валюты.Attribute.ПараметрыПрописиНаРусском + + View + false + + + Edit + false + + + + DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.УникальныйИдентификаторИсточника + + View + false + + + Edit + false + + + + Catalog.УчетныеЗаписиЭлектроннойПочты.Attribute.СпособPOP3Аутентификации + + View + false + + + Edit + false + + + + InformationRegister.УдалитьПраваПоЗначениямДоступа.Resource.Запрещено + + View + false + + + Edit + false + + + + Document.ТелефонныйЗвонок.TabularSection.НаборыЗначенийДоступа.Attribute.НомерНабора + + View + false + + + Edit + false + + + + InformationRegister.КалендарныеГрафики.Dimension.Календарь + + View + false + + + Edit + false + + + + Catalog.ВерсииФайлов.Attribute.ФайлХранилище + + View + false + + + Edit + false + + + diff --git a/SSL/src/Roles/ДобавлениеИзменениеСтранМира/ДобавлениеИзменениеСтранМира.mdo b/SSL/src/Roles/ДобавлениеИзменениеСтранМира/ДобавлениеИзменениеСтранМира.mdo new file mode 100644 index 000000000..d3919e5fe --- /dev/null +++ b/SSL/src/Roles/ДобавлениеИзменениеСтранМира/ДобавлениеИзменениеСтранМира.mdo @@ -0,0 +1,8 @@ + + + ДобавлениеИзменениеСтранМира + + ru + Добавление и изменение стран мира + + diff --git a/SSL/src/Roles/ЗапускAutomation/Rights.rights b/SSL/src/Roles/ЗапускAutomation/Rights.rights index 20de0bc75..7f38fa75e 100644 --- a/SSL/src/Roles/ЗапускAutomation/Rights.rights +++ b/SSL/src/Roles/ЗапускAutomation/Rights.rights @@ -6812,37 +6812,6 @@ false - - Configuration.БиблиотекаСтандартныхПодсистем - - Automation - true - - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись @@ -11991,6 +11960,37 @@ false + + Configuration.БиблиотекаСтандартныхПодсистем + + Automation + true + + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ИмяПланаОбмена diff --git a/SSL/src/Roles/ЗапускВебКлиента/Rights.rights b/SSL/src/Roles/ЗапускВебКлиента/Rights.rights index f9b907c6e..aea860eeb 100644 --- a/SSL/src/Roles/ЗапускВебКлиента/Rights.rights +++ b/SSL/src/Roles/ЗапускВебКлиента/Rights.rights @@ -6702,37 +6702,6 @@ false - - Configuration.БиблиотекаСтандартныхПодсистем - - WebClient - true - - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись @@ -11837,6 +11806,37 @@ false + + Configuration.БиблиотекаСтандартныхПодсистем + + WebClient + true + + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ИмяПланаОбмена diff --git a/SSL/src/Roles/ЗапускТолстогоКлиента/Rights.rights b/SSL/src/Roles/ЗапускТолстогоКлиента/Rights.rights index 8534f5e9e..464f5620c 100644 --- a/SSL/src/Roles/ЗапускТолстогоКлиента/Rights.rights +++ b/SSL/src/Roles/ЗапускТолстогоКлиента/Rights.rights @@ -6702,37 +6702,6 @@ false - - Configuration.БиблиотекаСтандартныхПодсистем - - ThickClient - true - - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись @@ -11837,6 +11806,37 @@ false + + Configuration.БиблиотекаСтандартныхПодсистем + + ThickClient + true + + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ИмяПланаОбмена diff --git a/SSL/src/Roles/ЗапускТонкогоКлиента/Rights.rights b/SSL/src/Roles/ЗапускТонкогоКлиента/Rights.rights index 3d98ff0fc..afff0083c 100644 --- a/SSL/src/Roles/ЗапускТонкогоКлиента/Rights.rights +++ b/SSL/src/Roles/ЗапускТонкогоКлиента/Rights.rights @@ -6702,37 +6702,6 @@ false - - Configuration.БиблиотекаСтандартныхПодсистем - - ThinClient - true - - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись @@ -11837,6 +11806,37 @@ false + + Configuration.БиблиотекаСтандартныхПодсистем + + ThinClient + true + + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ИмяПланаОбмена diff --git a/SSL/src/Roles/ИзменениеВыполнениеЗадач/Rights.rights b/SSL/src/Roles/ИзменениеВыполнениеЗадач/Rights.rights index ab210de5a..c70e2398b 100644 --- a/SSL/src/Roles/ИзменениеВыполнениеЗадач/Rights.rights +++ b/SSL/src/Roles/ИзменениеВыполнениеЗадач/Rights.rights @@ -184,13 +184,23 @@ ПоЗначениямИНаборамРасширенный // ПоЗначениямИНаборамРасширенный ( Таблица, Право, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)). // № параметра: 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,...,3+n*3,4+n*3,5+n*3 . -// Читается так: "ограничение доступа по наборам и значениям расширенный". +// Читается так: "ограничение доступа по значениям и наборам расширенный". // Параметры: // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает -// безусловно выбирать группы иерархического справочника. +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает +// безусловно выбирать группы иерархического справочника. +// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений, +// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную +// проверку, при которой вариант настройки вида доступа в группах доступа +// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется". +// Если этого модификатора нет, тогда результат проверки Истина, что приводит +// к итоговому результату Истина, если "Все разрешены, без запрещенных" +// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям). +// Модификатор имеет смысл только при проверке наборов значений доступа. +// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам", +// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ". // Других модификаторов в этой версии шаблона не предусмотрено. // ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например, // "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1 @@ -231,7 +241,10 @@ // "Объект","Т.ОсновнойДокумент","", "","","", ...) // Проверка правильности параметра Модификатор. -#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда +#Если НЕ ( "#Параметр(3)" = "НеОграничиватьДоступКГруппам" + ИЛИ "#Параметр(3)" = "РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли @@ -253,7 +266,7 @@ ГДЕ // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). -#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда +#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли @@ -370,14 +383,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(7) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(7) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -385,8 +448,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -628,8 +719,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(6) = "" #Тогда @@ -901,14 +993,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(10) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(10) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -916,8 +1058,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -1159,8 +1329,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(9) = "" #Тогда @@ -1432,14 +1603,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(13) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(13) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -1447,8 +1668,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -1690,8 +1939,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(12) = "" #Тогда @@ -1963,14 +2213,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(16) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(16) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -1978,8 +2278,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -2221,8 +2549,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(15) = "" #Тогда @@ -2494,14 +2823,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(19) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(19) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -2509,8 +2888,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -2752,8 +3159,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(18) = "" #Тогда @@ -3025,14 +3433,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(22) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(22) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -3040,8 +3498,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -3283,8 +3769,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(21) = "" #Тогда @@ -3556,14 +4043,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(25) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(25) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -3571,8 +4108,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -3814,8 +4379,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(24) = "" #Тогда @@ -4087,14 +4653,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(28) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(28) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4102,8 +4718,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4345,8 +4989,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(27) = "" #Тогда @@ -4618,14 +5263,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(31) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(31) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4633,8 +5328,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4876,8 +5599,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(30) = "" #Тогда @@ -5149,14 +5873,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(34) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(34) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5164,8 +5938,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5407,8 +6209,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(33) = "" #Тогда @@ -5680,14 +6483,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(37) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(37) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5695,8 +6548,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5938,8 +6819,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(36) = "" #Тогда @@ -6211,14 +7093,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(40) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(40) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6226,8 +7158,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6469,8 +7429,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(39) = "" #Тогда @@ -6742,14 +7703,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(43) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(43) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6757,8 +7768,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -7000,8 +8039,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(42) = "" #Тогда @@ -7273,14 +8313,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(46) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(46) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7288,8 +8378,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -7531,8 +8649,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(45) = "" #Тогда @@ -7804,14 +8923,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(49) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(49) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7819,8 +8988,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8062,8 +9259,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(48) = "" #Тогда @@ -8335,14 +9533,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(52) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(52) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -8350,8 +9598,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8593,8 +9869,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(51) = "" #Тогда diff --git a/SSL/src/Roles/ИзменениеДополнительныхСведений/Rights.rights b/SSL/src/Roles/ИзменениеДополнительныхСведений/Rights.rights index 5c96e1f33..f173cc898 100644 --- a/SSL/src/Roles/ИзменениеДополнительныхСведений/Rights.rights +++ b/SSL/src/Roles/ИзменениеДополнительныхСведений/Rights.rights @@ -17530,7 +17530,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа). diff --git a/SSL/src/Roles/ИзменениеТекущегоПользователя/Rights.rights b/SSL/src/Roles/ИзменениеТекущегоПользователя/Rights.rights index 1ead875e9..91ab2e781 100644 --- a/SSL/src/Roles/ИзменениеТекущегоПользователя/Rights.rights +++ b/SSL/src/Roles/ИзменениеТекущегоПользователя/Rights.rights @@ -3,17 +3,6 @@ false true false - - Constant.РежимИспользованияИнформационнойБазы - - Read - true - - - View - true - - Catalog.Пользователи diff --git a/SSL/src/Roles/ИзменениеУчастниковГруппДоступа/Rights.rights b/SSL/src/Roles/ИзменениеУчастниковГруппДоступа/Rights.rights index 39acef81c..089a97f67 100644 --- a/SSL/src/Roles/ИзменениеУчастниковГруппДоступа/Rights.rights +++ b/SSL/src/Roles/ИзменениеУчастниковГруппДоступа/Rights.rights @@ -405,7 +405,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа). @@ -3888,13 +3888,23 @@ ПоЗначениямИНаборамРасширенный // ПоЗначениямИНаборамРасширенный ( Таблица, Право, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)). // № параметра: 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,...,3+n*3,4+n*3,5+n*3 . -// Читается так: "ограничение доступа по наборам и значениям расширенный". +// Читается так: "ограничение доступа по значениям и наборам расширенный". // Параметры: // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает -// безусловно выбирать группы иерархического справочника. +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает +// безусловно выбирать группы иерархического справочника. +// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений, +// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную +// проверку, при которой вариант настройки вида доступа в группах доступа +// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется". +// Если этого модификатора нет, тогда результат проверки Истина, что приводит +// к итоговому результату Истина, если "Все разрешены, без запрещенных" +// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям). +// Модификатор имеет смысл только при проверке наборов значений доступа. +// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам", +// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ". // Других модификаторов в этой версии шаблона не предусмотрено. // ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например, // "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1 @@ -3935,7 +3945,10 @@ // "Объект","Т.ОсновнойДокумент","", "","","", ...) // Проверка правильности параметра Модификатор. -#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда +#Если НЕ ( "#Параметр(3)" = "НеОграничиватьДоступКГруппам" + ИЛИ "#Параметр(3)" = "РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли @@ -3957,7 +3970,7 @@ ГДЕ // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). -#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда +#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли @@ -4074,14 +4087,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(7) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(7) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4089,8 +4152,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4332,8 +4423,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(6) = "" #Тогда @@ -4605,14 +4697,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(10) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(10) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4620,8 +4762,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4863,8 +5033,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(9) = "" #Тогда @@ -5136,14 +5307,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(13) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(13) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5151,8 +5372,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5394,8 +5643,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(12) = "" #Тогда @@ -5667,14 +5917,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(16) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(16) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5682,8 +5982,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5925,8 +6253,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(15) = "" #Тогда @@ -6198,14 +6527,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(19) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(19) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6213,8 +6592,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6456,8 +6863,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(18) = "" #Тогда @@ -6729,14 +7137,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(22) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(22) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6744,8 +7202,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6987,8 +7473,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(21) = "" #Тогда @@ -7260,14 +7747,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(25) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(25) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7275,8 +7812,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -7518,8 +8083,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(24) = "" #Тогда @@ -7791,14 +8357,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(28) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(28) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7806,8 +8422,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8049,8 +8693,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(27) = "" #Тогда @@ -8322,14 +8967,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(31) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(31) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -8337,8 +9032,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8580,8 +9303,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(30) = "" #Тогда @@ -8853,14 +9577,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(34) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(34) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -8868,8 +9642,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -9111,8 +9913,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(33) = "" #Тогда @@ -9384,14 +10187,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(37) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(37) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -9399,8 +10252,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -9642,8 +10523,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(36) = "" #Тогда @@ -9915,14 +10797,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(40) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(40) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -9930,8 +10862,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -10173,8 +11133,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(39) = "" #Тогда @@ -10446,14 +11407,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(43) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(43) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -10461,8 +11472,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -10704,8 +11743,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(42) = "" #Тогда @@ -10977,14 +12017,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(46) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(46) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -10992,8 +12082,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -11235,8 +12353,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(45) = "" #Тогда @@ -11508,14 +12627,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(49) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(49) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -11523,8 +12692,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -11766,8 +12963,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(48) = "" #Тогда @@ -12039,14 +13237,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(52) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(52) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -12054,8 +13302,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -12297,8 +13573,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(51) = "" #Тогда @@ -12510,7 +13787,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например, @@ -16080,8 +17357,18 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает -// безусловно выбирать группы иерархического справочника. +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает +// безусловно выбирать группы иерархического справочника. +// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений, +// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную +// проверку, при которой вариант настройки вида доступа в группах доступа +// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется". +// Если этого модификатора нет, тогда результат проверки Истина, что приводит +// к итоговому результату Истина, если "Все разрешены, без запрещенных" +// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям). +// Модификатор имеет смысл только при проверке наборов значений доступа. +// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам", +// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ". // Других модификаторов в этой версии шаблона не предусмотрено. // ВладелецНаборов - имя поля, содержащего ссылку на объект-владелец // наборов значений доступа в регистре сведений НаборыЗначенийДоступа. @@ -16098,7 +17385,10 @@ // Пример4: ПоНаборамЗначений("Справочник.ВложенияЭлектронныхПисем", "Чтение", "", "Владелец" ) // Проверка правильности параметра Модификатор. -#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда +#Если НЕ ( "#Параметр(3)" = "НеОграничиватьДоступКГруппам" + ИЛИ "#Параметр(3)" = "РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли @@ -16115,7 +17405,7 @@ Т ГДЕ // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов). // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). -#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда +#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли @@ -16157,7 +17447,66 @@ И СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь ) ГДЕ - Истина В +#Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + #Если "#Параметр(2)" = "Чтение" #Тогда + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + #Если "#Параметр(4)" = "" #Тогда + НомераНаборов.Объект = Т.Ссылка + #Иначе + НомераНаборов.Объект = Т.#Параметр(4) + #КонецЕсли + #Иначе + ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Ссылка = Т.Ссылка + #КонецЕсли + И НомераНаборов.#Параметр(2) + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + #Если "#Параметр(2)" = "Чтение" #Тогда + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + #Если "#Параметр(4)" = "" #Тогда + НаборыЗначений.Объект = Т.Ссылка + #Иначе + НаборыЗначений.Объект = Т.#Параметр(4) + #КонецЕсли + #Иначе + ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Ссылка = Т.Ссылка + #КонецЕсли + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ +#Иначе + ( +#КонецЕсли + Истина В ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. #Если "#Параметр(2)" = "Чтение" #Тогда @@ -16174,7 +17523,44 @@ НомераНаборов.Ссылка = Т.Ссылка #КонецЕсли И НомераНаборов.#Параметр(2) - И НЕ Ложь В + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + #Если "#Параметр(2)" = "Чтение" #Тогда + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + #Если "#Параметр(4)" = "" #Тогда + НаборыЗначений.Объект = Т.Ссылка + #Иначе + НаборыЗначений.Объект = Т.#Параметр(4) + #КонецЕсли + #Иначе + ИЗ #Параметр(1).НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Ссылка = Т.Ссылка + #КонецЕсли + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. #Если "#Параметр(2)" = "Чтение" #Тогда @@ -16192,7 +17578,6 @@ #КонецЕсли И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора И НЕ - ( Выбор // Проверка заведомого ложного или заведомо истинного однострочного набора значений. Когда НаборыЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка) @@ -16247,7 +17632,7 @@ #КонецЕсли Тогда ( - НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается. + НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается. ( Выбрать Истина ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды @@ -16439,9 +17824,9 @@ Иначе Ложь Конец Конец - ) - ) // НЕ Ложь В + ) // НЕ Ложь В ) + ) ) #КонецЕсли diff --git a/SSL/src/Roles/ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок/Rights.rights b/SSL/src/Roles/ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок/Rights.rights index 6c0ffc5f1..15df11b0e 100644 --- a/SSL/src/Roles/ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок/Rights.rights +++ b/SSL/src/Roles/ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок/Rights.rights @@ -6812,41 +6812,6 @@ false - - Configuration.БиблиотекаСтандартныхПодсистем - - MainWindowModeNormal - true - - - MainWindowModeWorkplace - true - - - MainWindowModeEmbeddedWorkplace - true - - - MainWindowModeFullscreenWorkplace - true - - - MainWindowModeKiosk - true - - - AnalyticsSystemClient - true - - - InteractiveOpenExtDataProcessors - true - - - InteractiveOpenExtReports - true - - Catalog.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы.TabularSection.ЭлектронныеЦифровыеПодписи.Attribute.Подпись @@ -11995,6 +11960,41 @@ false + + Configuration.БиблиотекаСтандартныхПодсистем + + MainWindowModeNormal + true + + + MainWindowModeWorkplace + true + + + MainWindowModeEmbeddedWorkplace + true + + + MainWindowModeFullscreenWorkplace + true + + + MainWindowModeKiosk + true + + + AnalyticsSystemClient + true + + + InteractiveOpenExtDataProcessors + true + + + InteractiveOpenExtReports + true + + DataProcessor.ПомощникИнтерактивногоОбменаДанными.Attribute.ИмяПланаОбмена diff --git a/SSL/src/Roles/ИспользованиеДополнительныхОтчетовИОбработок/Rights.rights b/SSL/src/Roles/ИспользованиеДополнительныхОтчетовИОбработок/Rights.rights index 78945eb56..55078e1be 100644 --- a/SSL/src/Roles/ИспользованиеДополнительныхОтчетовИОбработок/Rights.rights +++ b/SSL/src/Roles/ИспользованиеДополнительныхОтчетовИОбработок/Rights.rights @@ -5,10 +5,6 @@ false Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.ПоказыватьОповещение - - View - false - Edit false @@ -346,10 +342,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды - - View - false - Edit false @@ -1809,10 +1801,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.Модификатор - - View - false - Edit false @@ -2150,10 +2138,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.РегламентноеЗаданиеGUID - - View - false - Edit false @@ -2821,10 +2805,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.Ответственный - - View - false - Edit false @@ -3162,10 +3142,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Назначение.Attribute.УдалитьПолноеИмяОбъектаМетаданных - - View - false - Edit false @@ -3935,10 +3911,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.Идентификатор - - View - false - Edit false @@ -4562,10 +4534,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.Комментарий - - View - false - Edit false @@ -5130,10 +5098,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.БезопасныйРежим - - View - false - Edit false @@ -6123,10 +6087,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.Версия - - View - false - Edit false @@ -7131,10 +7091,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.Вид - - View - false - Edit false @@ -7439,10 +7395,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.ИспользоватьДляФормыОбъекта - - View - false - Edit false @@ -9000,10 +8952,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Назначение - - View - false - Edit false @@ -9825,10 +9773,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Разделы - - View - false - Edit false @@ -10177,10 +10121,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Разделы.Attribute.УдалитьИмяРаздела - - View - false - Edit false @@ -10610,13 +10550,17 @@ Read true + + View + true + + + InputByString + true + Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Predefined - - View - false - Edit false @@ -10624,10 +10568,6 @@ Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Ref - - View - false - Edit false @@ -10635,10 +10575,6 @@ Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.DeletionMark - - View - false - Edit false @@ -10646,10 +10582,6 @@ Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.IsFolder - - View - false - Edit false @@ -10657,10 +10589,6 @@ Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Owner - - View - false - Edit false @@ -10668,10 +10596,6 @@ Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Parent - - View - false - Edit false @@ -10679,10 +10603,6 @@ Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Description - - View - false - Edit false @@ -10690,10 +10610,6 @@ Catalog.ДополнительныеОтчетыИОбработки.StandardAttribute.Code - - View - false - Edit false @@ -12549,10 +12465,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.ИмяФайла - - View - false - Edit false @@ -13539,10 +13451,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.ХранилищеОбработки - - View - false - Edit false @@ -13623,10 +13531,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.Публикация - - View - false - Edit false @@ -14135,10 +14039,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.Представление - - View - false - Edit false @@ -15828,10 +15728,6 @@ Catalog.ДополнительныеОтчетыИОбработки.TabularSection.Команды.Attribute.ВариантЗапуска - - View - false - Edit false @@ -16693,10 +16589,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.Информация - - View - false - Edit false @@ -17815,10 +17707,6 @@ Catalog.ДополнительныеОтчетыИОбработки.Attribute.ИспользоватьДляФормыСписка - - View - false - Edit false diff --git a/SSL/src/Roles/ИспользованиеИнформационногоЦентра/Rights.rights b/SSL/src/Roles/ИспользованиеИнформационногоЦентра/Rights.rights index c6a589773..b9886d073 100644 --- a/SSL/src/Roles/ИспользованиеИнформационногоЦентра/Rights.rights +++ b/SSL/src/Roles/ИспользованиеИнформационногоЦентра/Rights.rights @@ -3,6 +3,17 @@ false true false + + Constant.ИмяПользователяКонференцииИнформационногоЦентра + + Read + true + + + View + true + + Catalog.ОбщиеДанныеИнформационногоЦентра @@ -26,14 +37,41 @@ - CommonForm.ОтображениеНовостей + Constant.ПарольПользователяКонференцииИнформационногоЦентра + + Read + true + View true - CommonForm.ОтправкаСообщенияВТехподдержку + InformationRegister.ПросмотренныеДанныеИнформационногоЦентра + + Read + true + + + Update + true + + + View + true + + + Edit + true + + + + InformationRegister.ОбластиДанных + + Read + true + View true @@ -46,6 +84,17 @@ true + + Constant.АдресУправленияКонференцией + + Read + true + + + View + true + + DataProcessor.ИнформационныйЦентр diff --git a/SSL/src/Roles/ИспользованиеСтруктурыПодчиненности/Rights.rights b/SSL/src/Roles/ИспользованиеСтруктурыПодчиненности/Rights.rights index 058f4e20b..a58ee7195 100644 --- a/SSL/src/Roles/ИспользованиеСтруктурыПодчиненности/Rights.rights +++ b/SSL/src/Roles/ИспользованиеСтруктурыПодчиненности/Rights.rights @@ -1,7 +1,7 @@ false - false + true false CommonForm.СтруктураПодчиненности diff --git a/SSL/src/Roles/ИспользованиеУчетныхЗаписейЭлектроннойПочты/Rights.rights b/SSL/src/Roles/ИспользованиеУчетныхЗаписейЭлектроннойПочты/Rights.rights index 8da1dbee7..6c3de18fc 100644 --- a/SSL/src/Roles/ИспользованиеУчетныхЗаписейЭлектроннойПочты/Rights.rights +++ b/SSL/src/Roles/ИспользованиеУчетныхЗаписейЭлектроннойПочты/Rights.rights @@ -249,7 +249,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа). diff --git a/SSL/src/Roles/ПолныеПрава/Rights.rights b/SSL/src/Roles/ПолныеПрава/Rights.rights index 7cca0f8e4..2c8ad02d4 100644 --- a/SSL/src/Roles/ПолныеПрава/Rights.rights +++ b/SSL/src/Roles/ПолныеПрава/Rights.rights @@ -126,13 +126,6 @@ false - - Catalog.УдалитьКлассификаторВалют.Attribute.НаименованиеПолное - - Edit - false - - InformationRegister.УдалитьОчередьЗаданий.Resource.НомерПопытки @@ -249,6 +242,17 @@ false + + Constant.ИмяПользователяКонференцииИнформационногоЦентра + + Update + false + + + Edit + false + + Catalog.НаборыДополнительныхРеквизитовИСведений @@ -922,13 +926,6 @@ false - - Catalog.СтраныМира.Attribute.КодАльфа2 - - Edit - false - - InformationRegister.ЗависимостиПравДоступа @@ -997,17 +994,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Dimension.ОбластьДанных - - View - false - - - Edit - false - - Constant.ИспользоватьСинхронизациюДанныхВЛокальномРежиме @@ -2154,13 +2140,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.Resource.Кратность - - Edit - false - - DataProcessor.ОценкаПроизводительности.TabularSection.Производительность.Attribute.КлючеваяОперация @@ -2384,6 +2363,17 @@ false + + Constant.ПарольПользователяКонференцииИнформационногоЦентра + + Update + false + + + Edit + false + + Constant.СписокРасширенийТекстовыхФайлов @@ -2801,101 +2791,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных - - Read - false - - - Update - false - - - View - false - - - Edit - false - - - ReadDataHistory - false - - - ReadDataHistoryOfMissingData - false - - - UpdateDataHistory - false - - - UpdateDataHistoryOfMissingData - false - - - UpdateDataHistoryVersionComment - false - - - ViewDataHistory - false - - - EditDataHistoryVersionComment - false - - - SwitchToDataHistoryVersion - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.Active - - View - false - - - Edit - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.LineNumber - - View - false - - - Edit - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.Recorder - - View - false - - - Edit - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.Period - - View - false - - - Edit - false - - Catalog.Пользователи @@ -2908,7 +2803,7 @@ - Constant.ЗапуститьОбновлениеИнформационнойБазы + Constant.ЗагрузитьСообщениеОбменаДанными Read false @@ -2991,45 +2886,6 @@ false - - Configuration.БиблиотекаСтандартныхПодсистем - - Administration - false - - - UpdateDataBaseConfiguration - false - - - ExclusiveMode - false - - - ThickClient - false - - - ExternalConnection - false - - - Automation - false - - - TechnicalSpecialistMode - false - - - InteractiveOpenExtDataProcessors - false - - - InteractiveOpenExtReports - false - - InformationRegister.НастройкиОтправителя @@ -3413,6 +3269,13 @@ false + + Document.СообщениеSMS + + InteractiveDelete + false + + InformationRegister.НастройкиТранспортаОбмена.Resource.FTPСоединениеМаксимальныйДопустимыйРазмерСообщения @@ -4043,114 +3906,14 @@ Catalog.СтраныМира - - Insert - false - - - Update - false - - - Delete - false - - - InteractiveInsert - false - - - Edit - false - InteractiveDelete false - - InteractiveSetDeletionMark - false - - - InteractiveClearDeletionMark - false - - - InteractiveDeleteMarked - false - InteractiveDeletePredefinedData false - - InteractiveSetDeletionMarkPredefinedData - false - - - InteractiveClearDeletionMarkPredefinedData - false - - - InteractiveDeleteMarkedPredefinedData - false - - - - Catalog.СтраныМира.StandardAttribute.Predefined - - Edit - false - - - - Catalog.СтраныМира.StandardAttribute.Ref - - Edit - false - - - - Catalog.СтраныМира.StandardAttribute.DeletionMark - - Edit - false - - - - Catalog.СтраныМира.StandardAttribute.IsFolder - - Edit - false - - - - Catalog.СтраныМира.StandardAttribute.Owner - - Edit - false - - - - Catalog.СтраныМира.StandardAttribute.Parent - - Edit - false - - - - Catalog.СтраныМира.StandardAttribute.Description - - Edit - false - - - - Catalog.СтраныМира.StandardAttribute.Code - - Edit - false - Catalog.СообщенияСистемы.Attribute.ПодробноеПредставлениеОшибки @@ -4163,6 +3926,13 @@ false + + CommonCommand.СоставОтправляемыхДанных + + View + false + + InformationRegister.УдалитьБлокировкиСеансовОбластиДанных.Dimension.ОбластьДанных @@ -4844,117 +4614,6 @@ false - - Catalog.УдалитьКлассификаторВалют - - Insert - false - - - Update - false - - - Delete - false - - - InteractiveInsert - false - - - Edit - false - - - InteractiveDelete - false - - - InteractiveSetDeletionMark - false - - - InteractiveClearDeletionMark - false - - - InteractiveDeleteMarked - false - - - InteractiveDeletePredefinedData - false - - - InteractiveSetDeletionMarkPredefinedData - false - - - InteractiveClearDeletionMarkPredefinedData - false - - - InteractiveDeleteMarkedPredefinedData - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Predefined - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Ref - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.DeletionMark - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.IsFolder - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Owner - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Parent - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Description - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Code - - Edit - false - - InformationRegister.ПраваРолей.Resource.ЧтениеБезОграничения @@ -5133,45 +4792,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору - - Update - false - - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.Active - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.LineNumber - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.Recorder - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.Period - - Edit - false - - Constant.ИспользоватьСинхронизациюДанныхВМоделиСервисаСПриложениемВИнтернете @@ -5346,6 +4966,13 @@ false + + CommonCommand.УдалитьНастройкуСинхронизации + + View + false + + InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.StandardAttribute.Active @@ -5431,6 +5058,45 @@ false + + Configuration.БиблиотекаСтандартныхПодсистем + + Administration + false + + + UpdateDataBaseConfiguration + false + + + ExclusiveMode + false + + + ThickClient + false + + + ExternalConnection + false + + + Automation + false + + + TechnicalSpecialistMode + false + + + InteractiveOpenExtDataProcessors + false + + + InteractiveOpenExtReports + false + + DataProcessor.НастройкаРезервногоКопированияИБ.Attribute.ПериодОтложенногоОповещения @@ -6095,7 +5761,7 @@ - Catalog.Организации + Catalog.СообщениеSMSПрисоединенныеФайлы InteractiveDelete false @@ -6106,13 +5772,13 @@ - InformationRegister.УдалитьСвязиПоставляемыхДанных.Dimension.ЭлементРазделенныхДанных + Catalog.Организации - View + InteractiveDelete false - Edit + InteractiveDeletePredefinedData false @@ -6231,6 +5897,17 @@ false + + Constant.АдресУправленияКонференцией + + Update + false + + + Edit + false + + InformationRegister.ДанныеПроизводственногоКалендаря.Dimension.Год @@ -6354,47 +6031,11 @@ - Constant.АдресВебСервисаОбменаДанными - - Read - false - - - Update - false - - - View - false - + InformationRegister.УдалитьСтраныМира.Dimension.ОбластьДанных Edit false - - ReadDataHistory - false - - - UpdateDataHistory - false - - - UpdateDataHistoryVersionComment - false - - - ViewDataHistory - false - - - EditDataHistoryVersionComment - false - - - SwitchToDataHistoryVersion - false - DataProcessor.УправлениеПолнотекстовымПоиском.Command.УправлениеПолнотекстовымПоиском @@ -6502,13 +6143,6 @@ false - - Catalog.УдалитьКлассификаторВалют.Attribute.ПараметрыПрописиНаРусском - - Edit - false - - InformationRegister.СостоянияУспешныхОбменовДанными.Dimension.УзелИнформационнойБазы @@ -6746,13 +6380,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.Resource.Курс - - Edit - false - - InformationRegister.НастройкиТранспортаОбмена.Resource.FTPСоединениеПароль @@ -7042,13 +6669,6 @@ false - - Catalog.СтраныМира.Attribute.КодАльфа3 - - Edit - false - - CommonForm.НастройкаОбменаСообщениями @@ -7110,6 +6730,13 @@ false + + InformationRegister.УдалитьСтраныМира.Resource.Значение + + Edit + false + + Constant.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммы @@ -7172,9 +6799,9 @@ - InformationRegister.УдалитьСвязиПоставляемыхДанных.Dimension.ЭлементОбщихДанных + InformationRegister.УдалитьСтраныМира - View + Update false @@ -7182,6 +6809,34 @@ false + + InformationRegister.УдалитьСтраныМира.StandardAttribute.Active + + Edit + false + + + + InformationRegister.УдалитьСтраныМира.StandardAttribute.LineNumber + + Edit + false + + + + InformationRegister.УдалитьСтраныМира.StandardAttribute.Recorder + + Edit + false + + + + InformationRegister.УдалитьСтраныМира.StandardAttribute.Period + + Edit + false + + InformationRegister.НастройкиТранспортаОбмена.Resource.COMИмяИнформационнойБазыНаСервере1СПредприятия @@ -7207,17 +6862,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Resource.РучноеИзменение - - View - false - - - Edit - false - - InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.Resource.ВыполнитьКорректировкуИнформацииСопоставления @@ -7243,13 +6887,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.Dimension.Валюта - - Edit - false - - Catalog.ТипыИнформацииИнформационногоЦентра @@ -7440,7 +7077,7 @@ - Constant.ВыполнитьЗагрузкуПараметровРаботыПрограммы + Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском Read false @@ -7688,13 +7325,6 @@ false - - Catalog.СтраныМира.Attribute.НаименованиеПолное - - Edit - false - - Catalog.СообщенияСистемы diff --git a/SSL/src/Roles/ПросмотрЖурналаРегистрации/Rights.rights b/SSL/src/Roles/ПросмотрЖурналаРегистрации/Rights.rights index 2747a194f..828bd03df 100644 --- a/SSL/src/Roles/ПросмотрЖурналаРегистрации/Rights.rights +++ b/SSL/src/Roles/ПросмотрЖурналаРегистрации/Rights.rights @@ -1,7 +1,7 @@ false - false + true false Configuration.БиблиотекаСтандартныхПодсистем diff --git a/SSL/src/Roles/РаботаСПапкамиФайлов/Rights.rights b/SSL/src/Roles/РаботаСПапкамиФайлов/Rights.rights index 9452e8f76..e191880e4 100644 --- a/SSL/src/Roles/РаботаСПапкамиФайлов/Rights.rights +++ b/SSL/src/Roles/РаботаСПапкамиФайлов/Rights.rights @@ -17207,7 +17207,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа). @@ -20690,13 +20690,23 @@ ПоЗначениямИНаборамРасширенный // ПоЗначениямИНаборамРасширенный ( Таблица, Право, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)). // № параметра: 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,...,3+n*3,4+n*3,5+n*3 . -// Читается так: "ограничение доступа по наборам и значениям расширенный". +// Читается так: "ограничение доступа по значениям и наборам расширенный". // Параметры: // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает -// безусловно выбирать группы иерархического справочника. +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает +// безусловно выбирать группы иерархического справочника. +// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений, +// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную +// проверку, при которой вариант настройки вида доступа в группах доступа +// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется". +// Если этого модификатора нет, тогда результат проверки Истина, что приводит +// к итоговому результату Истина, если "Все разрешены, без запрещенных" +// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям). +// Модификатор имеет смысл только при проверке наборов значений доступа. +// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам", +// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ". // Других модификаторов в этой версии шаблона не предусмотрено. // ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например, // "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1 @@ -20737,7 +20747,10 @@ // "Объект","Т.ОсновнойДокумент","", "","","", ...) // Проверка правильности параметра Модификатор. -#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда +#Если НЕ ( "#Параметр(3)" = "НеОграничиватьДоступКГруппам" + ИЛИ "#Параметр(3)" = "РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли @@ -20759,7 +20772,7 @@ ГДЕ // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). -#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда +#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли @@ -20876,14 +20889,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(7) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(7) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -20891,8 +20954,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -21134,8 +21225,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(6) = "" #Тогда @@ -21407,14 +21499,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(10) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(10) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -21422,8 +21564,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -21665,8 +21835,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(9) = "" #Тогда @@ -21938,14 +22109,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(13) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(13) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -21953,8 +22174,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -22196,8 +22445,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(12) = "" #Тогда @@ -22469,14 +22719,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(16) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(16) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -22484,8 +22784,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -22727,8 +23055,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(15) = "" #Тогда @@ -23000,14 +23329,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(19) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(19) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -23015,8 +23394,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -23258,8 +23665,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(18) = "" #Тогда @@ -23531,14 +23939,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(22) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(22) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -23546,8 +24004,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -23789,8 +24275,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(21) = "" #Тогда @@ -24062,14 +24549,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(25) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(25) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -24077,8 +24614,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -24320,8 +24885,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(24) = "" #Тогда @@ -24593,14 +25159,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(28) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(28) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -24608,8 +25224,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -24851,8 +25495,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(27) = "" #Тогда @@ -25124,14 +25769,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(31) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(31) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -25139,8 +25834,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -25382,8 +26105,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(30) = "" #Тогда @@ -25655,14 +26379,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(34) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(34) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -25670,8 +26444,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -25913,8 +26715,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(33) = "" #Тогда @@ -26186,14 +26989,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(37) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(37) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -26201,8 +27054,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -26444,8 +27325,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(36) = "" #Тогда @@ -26717,14 +27599,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(40) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(40) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -26732,8 +27664,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -26975,8 +27935,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(39) = "" #Тогда @@ -27248,14 +28209,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(43) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(43) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -27263,8 +28274,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -27506,8 +28545,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(42) = "" #Тогда @@ -27779,14 +28819,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(46) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(46) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -27794,8 +28884,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -28037,8 +29155,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(45) = "" #Тогда @@ -28310,14 +29429,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(49) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(49) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -28325,8 +29494,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -28568,8 +29765,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(48) = "" #Тогда @@ -28841,14 +30039,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(52) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(52) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -28856,8 +30104,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -29099,8 +30375,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(51) = "" #Тогда diff --git a/SSL/src/Roles/УдаленныйДоступОбменДаннымиВМоделиСервиса/Rights.rights b/SSL/src/Roles/УдаленныйДоступОбменДаннымиВМоделиСервиса/Rights.rights index 6399ba414..73a2e4268 100644 --- a/SSL/src/Roles/УдаленныйДоступОбменДаннымиВМоделиСервиса/Rights.rights +++ b/SSL/src/Roles/УдаленныйДоступОбменДаннымиВМоделиСервиса/Rights.rights @@ -740,17 +740,6 @@ false - - Catalog.УдалитьКлассификаторВалют.Attribute.НаименованиеПолное - - View - false - - - Edit - false - - InformationRegister.УдалитьОчередьЗаданий.Resource.НомерПопытки @@ -3442,17 +3431,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Dimension.ОбластьДанных - - View - false - - - Edit - false - - Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Размер @@ -7001,17 +6979,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.Resource.Кратность - - View - false - - - Edit - false - - DataProcessor.ТранспортСообщенийОбменаEMAIL.Attribute.ШаблонИмениФайлаСообщения @@ -8277,50 +8244,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.Active - - View - false - - - Edit - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.LineNumber - - View - false - - - Edit - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.Recorder - - View - false - - - Edit - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.Period - - View - false - - - Edit - false - - Catalog.Пользователи.StandardAttribute.Predefined @@ -14524,94 +14447,6 @@ false - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Predefined - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Ref - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.DeletionMark - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.IsFolder - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Owner - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Parent - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Description - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Code - - View - false - - - Edit - false - - DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты @@ -14964,50 +14799,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.Active - - View - false - - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.LineNumber - - View - false - - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.Recorder - - View - false - - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.Period - - View - false - - - Edit - false - - DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ПроцентСопоставленияОбъектов @@ -17365,17 +17156,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Dimension.ЭлементРазделенныхДанных - - View - false - - - Edit - false - - DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИспользоватьТранзакцииПриВыгрузкеДляПлановОбмена @@ -18813,17 +18593,6 @@ false - - Catalog.УдалитьКлассификаторВалют.Attribute.ПараметрыПрописиНаРусском - - View - false - - - Edit - false - - DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.УникальныйИдентификаторПриемника @@ -19484,17 +19253,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.Resource.Курс - - View - false - - - Edit - false - - Document.Встреча.Attribute.Комментарий @@ -20595,17 +20353,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Dimension.ЭлементОбщихДанных - - View - false - - - Edit - false - - DataProcessor.КонвертацияОбъектовРаспределенныхИнформационныхБаз.Attribute.КлючСообщенияЖурналаРегистрации @@ -20749,17 +20496,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Resource.РучноеИзменение - - View - false - - - Edit - false - - InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.Resource.ВыполнитьКорректировкуИнформацииСопоставления @@ -20881,17 +20617,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.Dimension.Валюта - - View - false - - - Edit - false - - Document.ЭлектронноеПисьмоИсходящее.Attribute.ЕстьВложения diff --git a/SSL/src/Roles/УдаленныйДоступОбменСообщениями/Rights.rights b/SSL/src/Roles/УдаленныйДоступОбменСообщениями/Rights.rights index dd1b455a1..07089d444 100644 --- a/SSL/src/Roles/УдаленныйДоступОбменСообщениями/Rights.rights +++ b/SSL/src/Roles/УдаленныйДоступОбменСообщениями/Rights.rights @@ -729,17 +729,6 @@ false - - Catalog.УдалитьКлассификаторВалют.Attribute.НаименованиеПолное - - View - false - - - Edit - false - - InformationRegister.УдалитьОчередьЗаданий.Resource.НомерПопытки @@ -3361,17 +3350,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Dimension.ОбластьДанных - - View - false - - - Edit - false - - Catalog.ТелефонныйЗвонокПрисоединенныеФайлы.Attribute.Размер @@ -6858,17 +6836,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.Resource.Кратность - - View - false - - - Edit - false - - DataProcessor.ТранспортСообщенийОбменаEMAIL.Attribute.ШаблонИмениФайлаСообщения @@ -8148,50 +8115,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.Active - - View - false - - - Edit - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.LineNumber - - View - false - - - Edit - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.Recorder - - View - false - - - Edit - false - - - - InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardAttribute.Period - - View - false - - - Edit - false - - Catalog.Пользователи.StandardAttribute.Predefined @@ -14234,94 +14157,6 @@ false - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Predefined - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Ref - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.DeletionMark - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.IsFolder - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Owner - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Parent - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Description - - View - false - - - Edit - false - - - - Catalog.УдалитьКлассификаторВалют.StandardAttribute.Code - - View - false - - - Edit - false - - DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ЗаписыватьВИнформационнуюБазуТолькоИзмененныеОбъекты @@ -14659,50 +14494,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.Active - - View - false - - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.LineNumber - - View - false - - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.Recorder - - View - false - - - Edit - false - - - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.StandardAttribute.Period - - View - false - - - Edit - false - - DataProcessor.ПомощникИнтерактивногоОбменаДанными.TabularSection.ИнформацияСтатистики.Attribute.ПроцентСопоставленияОбъектов @@ -17053,17 +16844,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Dimension.ЭлементРазделенныхДанных - - View - false - - - Edit - false - - DataProcessor.УниверсальныйОбменДаннымиXML.Attribute.ИспользоватьТранзакцииПриВыгрузкеДляПлановОбмена @@ -18475,17 +18255,6 @@ false - - Catalog.УдалитьКлассификаторВалют.Attribute.ПараметрыПрописиНаРусском - - View - false - - - Edit - false - - DataProcessor.СопоставлениеОбъектовИнформационныхБаз.TabularSection.ТаблицаАвтоматическиСопоставленныхОбъектов.Attribute.УникальныйИдентификаторПриемника @@ -19091,17 +18860,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.Resource.Курс - - View - false - - - Edit - false - - Catalog.ЗапланированноеВзаимодействиеПрисоединенныеФайлы.Attribute.ВладелецФайла @@ -20147,17 +19905,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Dimension.ЭлементОбщихДанных - - View - false - - - Edit - false - - DataProcessor.КонвертацияОбъектовРаспределенныхИнформационныхБаз.Attribute.КлючСообщенияЖурналаРегистрации @@ -20301,17 +20048,6 @@ false - - InformationRegister.УдалитьСвязиПоставляемыхДанных.Resource.РучноеИзменение - - View - false - - - Edit - false - - InformationRegister.ОбщиеНастройкиУзловИнформационныхБаз.Resource.ВыполнитьКорректировкуИнформацииСопоставления @@ -20433,17 +20169,6 @@ false - - InformationRegister.УдалитьКурсыВалютПоКлассификатору.Dimension.Валюта - - View - false - - - Edit - false - - Document.ЭлектронноеПисьмоИсходящее.Attribute.ЕстьВложения diff --git a/SSL/src/Roles/ЧтениеБазовойНСИ/Rights.rights b/SSL/src/Roles/ЧтениеБазовойНСИ/Rights.rights index e45024492..0d2dae6fd 100644 --- a/SSL/src/Roles/ЧтениеБазовойНСИ/Rights.rights +++ b/SSL/src/Roles/ЧтениеБазовойНСИ/Rights.rights @@ -10,13 +10,6 @@ true - - CommonForm.ВводТелефона - - View - true - - Catalog.НаборыДополнительныхРеквизитовИСведений @@ -74,13 +67,6 @@ true - - CommonForm.ВводАдреса - - View - true - - Catalog.Календари @@ -140,17 +126,6 @@ false - - Constant.РежимИспользованияИнформационнойБазы - - Read - true - - - View - true - - InformationRegister.АдресныеСокращения @@ -600,7 +575,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа). @@ -4088,7 +4063,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например, diff --git a/SSL/src/Roles/ЧтениеДополнительныхСведений/Rights.rights b/SSL/src/Roles/ЧтениеДополнительныхСведений/Rights.rights index 0322e3245..eb004de4f 100644 --- a/SSL/src/Roles/ЧтениеДополнительныхСведений/Rights.rights +++ b/SSL/src/Roles/ЧтениеДополнительныхСведений/Rights.rights @@ -17731,7 +17731,7 @@ // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает // безусловно выбирать группы иерархического справочника. // Других модификаторов в этой версии шаблона не предусмотрено. // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа). diff --git a/SSL/src/Roles/ЧтениеЗаданий/Rights.rights b/SSL/src/Roles/ЧтениеЗаданий/Rights.rights index 0848e4c4b..56a7672c8 100644 --- a/SSL/src/Roles/ЧтениеЗаданий/Rights.rights +++ b/SSL/src/Roles/ЧтениеЗаданий/Rights.rights @@ -154,13 +154,23 @@ ПоЗначениямИНаборамРасширенный // ПоЗначениямИНаборамРасширенный ( Таблица, Право, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)). // № параметра: 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,...,3+n*3,4+n*3,5+n*3 . -// Читается так: "ограничение доступа по наборам и значениям расширенный". +// Читается так: "ограничение доступа по значениям и наборам расширенный". // Параметры: // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает -// безусловно выбирать группы иерархического справочника. +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает +// безусловно выбирать группы иерархического справочника. +// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений, +// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную +// проверку, при которой вариант настройки вида доступа в группах доступа +// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется". +// Если этого модификатора нет, тогда результат проверки Истина, что приводит +// к итоговому результату Истина, если "Все разрешены, без запрещенных" +// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям). +// Модификатор имеет смысл только при проверке наборов значений доступа. +// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам", +// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ". // Других модификаторов в этой версии шаблона не предусмотрено. // ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например, // "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1 @@ -201,7 +211,10 @@ // "Объект","Т.ОсновнойДокумент","", "","","", ...) // Проверка правильности параметра Модификатор. -#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда +#Если НЕ ( "#Параметр(3)" = "НеОграничиватьДоступКГруппам" + ИЛИ "#Параметр(3)" = "РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли @@ -223,7 +236,7 @@ ГДЕ // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). -#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда +#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли @@ -340,14 +353,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(7) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(7) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -355,8 +418,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -598,8 +689,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(6) = "" #Тогда @@ -871,14 +963,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(10) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(10) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -886,8 +1028,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -1129,8 +1299,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(9) = "" #Тогда @@ -1402,14 +1573,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(13) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(13) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -1417,8 +1638,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -1660,8 +1909,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(12) = "" #Тогда @@ -1933,14 +2183,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(16) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(16) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -1948,8 +2248,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -2191,8 +2519,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(15) = "" #Тогда @@ -2464,14 +2793,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(19) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(19) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -2479,8 +2858,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -2722,8 +3129,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(18) = "" #Тогда @@ -2995,14 +3403,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(22) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(22) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -3010,8 +3468,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -3253,8 +3739,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(21) = "" #Тогда @@ -3526,14 +4013,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(25) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(25) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -3541,8 +4078,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -3784,8 +4349,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(24) = "" #Тогда @@ -4057,14 +4623,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(28) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(28) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4072,8 +4688,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4315,8 +4959,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(27) = "" #Тогда @@ -4588,14 +5233,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(31) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(31) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4603,8 +5298,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4846,8 +5569,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(30) = "" #Тогда @@ -5119,14 +5843,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(34) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(34) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5134,8 +5908,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5377,8 +6179,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(33) = "" #Тогда @@ -5650,14 +6453,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(37) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(37) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5665,8 +6518,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5908,8 +6789,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(36) = "" #Тогда @@ -6181,14 +7063,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(40) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(40) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6196,8 +7128,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6439,8 +7399,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(39) = "" #Тогда @@ -6712,14 +7673,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(43) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(43) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6727,8 +7738,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6970,8 +8009,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(42) = "" #Тогда @@ -7243,14 +8283,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(46) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(46) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7258,8 +8348,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -7501,8 +8619,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(45) = "" #Тогда @@ -7774,14 +8893,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(49) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(49) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7789,8 +8958,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8032,8 +9229,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(48) = "" #Тогда @@ -8305,14 +9503,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(52) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(52) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -8320,8 +9568,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8563,8 +9839,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(51) = "" #Тогда diff --git a/SSL/src/Roles/ЧтениеЗадач/Rights.rights b/SSL/src/Roles/ЧтениеЗадач/Rights.rights index 60d4ba69c..81a0071ca 100644 --- a/SSL/src/Roles/ЧтениеЗадач/Rights.rights +++ b/SSL/src/Roles/ЧтениеЗадач/Rights.rights @@ -138,13 +138,23 @@ ПоЗначениямИНаборамРасширенный // ПоЗначениямИНаборамРасширенный ( Таблица, Право, Модификатор, ПрисоединяемыеТаблицы, О, В1,П1,О1, В2,П2,О2,..., В(n), П(n), О(n)). // № параметра: 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,...,3+n*3,4+n*3,5+n*3 . -// Читается так: "ограничение доступа по наборам и значениям расширенный". +// Читается так: "ограничение доступа по значениям и наборам расширенный". // Параметры: // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг". // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление". // Модификатор - изменяет шаблон. -// 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает -// безусловно выбирать группы иерархического справочника. +// 1-й модификатор - строка "НеОграничиватьДоступКГруппам" указывает +// безусловно выбирать группы иерархического справочника. +// 2-й модификатор - строка "РасширенноеИЛИ" указывает для ограничений, +// например, "ПоОрганизациям или ПоУчетнымЗаписям" делать расширенную +// проверку, при которой вариант настройки вида доступа в группах доступа +// "Все разрешены, без запрещенных" считается, как "Вид доступа не используется". +// Если этого модификатора нет, тогда результат проверки Истина, что приводит +// к итоговому результату Истина, если "Все разрешены, без запрещенных" +// хотя бы по одному из видов доступа (либо ПоОрганизациям, либо ПоУчетнымЗаписям). +// Модификатор имеет смысл только при проверке наборов значений доступа. +// Можно использовать комбинации модификаторов: "НеОграничиватьДоступКГруппам", +// "РасширенноеИЛИ", "НеОграничиватьДоступКГруппам,РасширенноеИЛИ". // Других модификаторов в этой версии шаблона не предусмотрено. // ПрисоединяемыеТаблицы - текст присоедиения дополнительных таблиц на языке запросов, например, // "ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК Т1 @@ -185,7 +195,10 @@ // "Объект","Т.ОсновнойДокумент","", "","","", ...) // Проверка правильности параметра Модификатор. -#Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "") #Тогда +#Если НЕ ( "#Параметр(3)" = "НеОграничиватьДоступКГруппам" + ИЛИ "#Параметр(3)" = "РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" + ИЛИ "#Параметр(3)" = "") #Тогда // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа. НеверныйМодификатор: #Параметр(3) #КонецЕсли @@ -207,7 +220,7 @@ ГДЕ // Безусловная выборка групп в иерархическом объекте метаданных (если нужно). -#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда +#Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда Т.ЭтоГруппа ИЛИ #КонецЕсли @@ -324,14 +337,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(7) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(7) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -339,8 +402,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(7) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -582,8 +673,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(6) = "" #Тогда @@ -855,14 +947,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(10) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(10) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -870,8 +1012,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(10) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -1113,8 +1283,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(9) = "" #Тогда @@ -1386,14 +1557,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(13) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(13) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -1401,8 +1622,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(13) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -1644,8 +1893,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(12) = "" #Тогда @@ -1917,14 +2167,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(16) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(16) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -1932,8 +2232,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(16) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -2175,8 +2503,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(15) = "" #Тогда @@ -2448,14 +2777,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(19) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(19) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -2463,8 +2842,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(19) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -2706,8 +3113,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(18) = "" #Тогда @@ -2979,14 +3387,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(22) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(22) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -2994,8 +3452,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(22) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -3237,8 +3723,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(21) = "" #Тогда @@ -3510,14 +3997,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(25) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(25) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -3525,8 +4062,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(25) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -3768,8 +4333,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(24) = "" #Тогда @@ -4041,14 +4607,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(28) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(28) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4056,8 +4672,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(28) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4299,8 +4943,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(27) = "" #Тогда @@ -4572,14 +5217,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(31) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(31) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -4587,8 +5282,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(31) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -4830,8 +5553,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(30) = "" #Тогда @@ -5103,14 +5827,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(34) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(34) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5118,8 +5892,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(34) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5361,8 +6163,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(33) = "" #Тогда @@ -5634,14 +6437,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(37) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(37) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -5649,8 +6502,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(37) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -5892,8 +6773,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(36) = "" #Тогда @@ -6165,14 +7047,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(40) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(40) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6180,8 +7112,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(40) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6423,8 +7383,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(39) = "" #Тогда @@ -6696,14 +7657,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(43) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(43) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -6711,8 +7722,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(43) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -6954,8 +7993,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(42) = "" #Тогда @@ -7227,14 +8267,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(46) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(46) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7242,8 +8332,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(46) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -7485,8 +8603,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(45) = "" #Тогда @@ -7758,14 +8877,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(49) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(49) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -7773,8 +8942,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(49) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8016,8 +9213,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(48) = "" #Тогда @@ -8289,14 +9487,64 @@ ) ) // Проверка ограничения права - И Истина В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + НЕ + ( + Истина В // Не все проверки отключены. + ( + Выбрать Первые 1 Истина // Выбор первого набора с не отключенной проверкой. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов + ГДЕ + НомераНаборов.Объект = #Параметр(52) + #Если "#Параметр(2)" = "Чтение" #Тогда + // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина + #Иначе + И НЕ + ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоДобавления <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + ) + #КонецЕсли + И + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + ) И НЕ + #Иначе + ( + #КонецЕсли + Истина В + ( Выбрать Первые 1 Истина // Выбор первого набора по которому доступ разрешен. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НомераНаборов ГДЕ НомераНаборов.Объект = #Параметр(52) #Если "#Параметр(2)" = "Чтение" #Тогда // Предполагается, что право Чтение может зависеть только от права Чтение + И НомераНаборов.Чтение = Истина #Иначе И НЕ ( НомераНаборов.ВидДоступаПравоЧтения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) @@ -8304,8 +9552,36 @@ И НомераНаборов.ВидДоступаПравоИзменения <> ЕстьNULL(ЗависимостиПравДоступа.ПриПроверкеПрава#Параметр(2), Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) ) #КонецЕсли - И НЕ Ложь В - ( + И + #Если "#Параметр(3)" = "РасширенноеИЛИ" ИЛИ "#Параметр(3)" = "НеОграничиватьДоступКГруппам,РасширенноеИЛИ" #Тогда + Истина В // Не все проверки текущего набора отключены. + ( + Выбрать Первые 1 Истина // Выбор первой не отключенной проверки текущего набора. + ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений + ГДЕ + НаборыЗначений.Объект = #Параметр(52) + И НаборыЗначений.НомерНабора = НомераНаборов.НомерНабора + И НЕ НаборыЗначений.ВидДоступа В (&ВидыДоступаБезОграничения) + И НЕ + (НЕ НаборыЗначений.ВидДоступа В ( + Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоЧтения), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоДобавления), + Значение(ПланВидовХарактеристик.ВидыДоступа.ПравоИзменения)) + И НЕ Истина В + ( + Выбрать Первые 1 Истина // Поиск настроек по виду доступа + ИЗ РегистрСведений.ЗначенияГруппДоступа КАК ЗначенияГруппДоступа + ГДЕ + ЗначенияГруппДоступа.ГруппаДоступа = ГруппыДоступа.Ссылка + И ЗначенияГруппДоступа.ВидДоступа = НаборыЗначений.ВидДоступа + ) + ) + ) + И + #КонецЕсли + НЕ Ложь В // Все проверки успешны. + ( Выбрать Первые 1 Ложь // Выбор первого не разрешенного значения доступа. ИЗ РегистрСведений.НаборыЗначенийДоступа КАК НаборыЗначений ГДЕ @@ -8547,8 +9823,9 @@ Иначе Ложь Конец Конец - ) // НЕ Ложь В - ) + ) // НЕ Ложь В + ) + ) ) #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(51) = "" #Тогда diff --git a/SSL/src/ScheduledJobs/ОбновлениеСтатусовДоставкиSMS/ОбновлениеСтатусовДоставкиSMS.mdo b/SSL/src/ScheduledJobs/ОбновлениеСтатусовДоставкиSMS/ОбновлениеСтатусовДоставкиSMS.mdo new file mode 100644 index 000000000..63b875624 --- /dev/null +++ b/SSL/src/ScheduledJobs/ОбновлениеСтатусовДоставкиSMS/ОбновлениеСтатусовДоставкиSMS.mdo @@ -0,0 +1,14 @@ + + + ОбновлениеСтатусовДоставкиSMS + + ru + Обновление статусов доставки SMS + + CommonModule.Взаимодействия.ОбновлениеСтатусовДоставкиSMS + Обновление статусов доставки SMS + true + true + 3 + 10 + diff --git a/SSL/src/ScheduledJobs/ОтложенноеОбновлениеИБ/Schedule.schedule b/SSL/src/ScheduledJobs/ОтложенноеОбновлениеИБ/Schedule.schedule new file mode 100644 index 000000000..5513b3374 --- /dev/null +++ b/SSL/src/ScheduledJobs/ОтложенноеОбновлениеИБ/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/SSL/src/ScheduledJobs/ОтложенноеОбновлениеИБ/ОтложенноеОбновлениеИБ.mdo b/SSL/src/ScheduledJobs/ОтложенноеОбновлениеИБ/ОтложенноеОбновлениеИБ.mdo new file mode 100644 index 000000000..b4381d188 --- /dev/null +++ b/SSL/src/ScheduledJobs/ОтложенноеОбновлениеИБ/ОтложенноеОбновлениеИБ.mdo @@ -0,0 +1,11 @@ + + + ОтложенноеОбновлениеИБ + + ru + Отложенное обновление ИБ + + CommonModule.ОбновлениеИнформационнойБазы.ВыполнитьОтложенноеОбновление + Отложенное обновление ИБ + true + diff --git a/SSL/src/ScheduledJobs/ОтправкаSMS/ОтправкаSMS.mdo b/SSL/src/ScheduledJobs/ОтправкаSMS/ОтправкаSMS.mdo new file mode 100644 index 000000000..c3ff3733c --- /dev/null +++ b/SSL/src/ScheduledJobs/ОтправкаSMS/ОтправкаSMS.mdo @@ -0,0 +1,14 @@ + + + ОтправкаSMS + + ru + Отправка SMS + + CommonModule.Взаимодействия.ОтправкаSMS + Отправка SMS + true + true + 3 + 10 + diff --git a/SSL/src/SessionParameters/ВыполняетсяОбновлениеИБ/ВыполняетсяОбновлениеИБ.mdo b/SSL/src/SessionParameters/ВыполняетсяОбновлениеИБ/ВыполняетсяОбновлениеИБ.mdo new file mode 100644 index 000000000..5bf453475 --- /dev/null +++ b/SSL/src/SessionParameters/ВыполняетсяОбновлениеИБ/ВыполняетсяОбновлениеИБ.mdo @@ -0,0 +1,11 @@ + + + ВыполняетсяОбновлениеИБ + + ru + Выполняется обновление ИБ + + + Boolean + + diff --git a/SSL/src/SessionParameters/ПаролиСинхронизацииДанных/ПаролиСинхронизацииДанных.mdo b/SSL/src/SessionParameters/ПаролиСинхронизацииДанных/ПаролиСинхронизацииДанных.mdo new file mode 100644 index 000000000..adf791269 --- /dev/null +++ b/SSL/src/SessionParameters/ПаролиСинхронизацииДанных/ПаролиСинхронизацииДанных.mdo @@ -0,0 +1,11 @@ + + + ПаролиСинхронизацииДанных + + ru + Пароли синхронизации данных + + + FixedMap + + diff --git a/SSL/src/SessionParameters/ПриоритетныеДанныеОбмена/ПриоритетныеДанныеОбмена.mdo b/SSL/src/SessionParameters/ПриоритетныеДанныеОбмена/ПриоритетныеДанныеОбмена.mdo new file mode 100644 index 000000000..cad62b811 --- /dev/null +++ b/SSL/src/SessionParameters/ПриоритетныеДанныеОбмена/ПриоритетныеДанныеОбмена.mdo @@ -0,0 +1,12 @@ + + + ПриоритетныеДанныеОбмена + + ru + Приоритетные данные обмена + + Выгруженные данные, которые необходимо загружать самыми первыми до загрузки всех остальных данных, например, предопределенные данные. + + FixedArray + + diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Help/ru.html b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Help/ru.html index 2076129d7..9a2a264a1 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Help/ru.html +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Что бы выбрать вариант отчета необходимо установить курсор на нужный вариант отчета и нажать на кнопку "Выбрать".

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

                      См. также: Вариант отчета, Общая информация о формах.

                      \ No newline at end of file diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl index 861b03047..2a9f24023 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/ВыборВариантаОтчета/Module.bsl @@ -123,8 +123,7 @@ ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ?(Вариант.ИндексКартинки = 4, НСтр("ru = 'Снять с ""%1"" пометку на удаление?'"), НСтр("ru = 'Пометить ""%1"" на удаление?'")), - Вариант.Наименование - ); + Вариант.Наименование); Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да); Если Ответ <> КодВозвратаДиалога.Да Тогда @@ -202,9 +201,7 @@ Предупреждение( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недостаточно прав доступа для изменения варианта ""%1"".'"), - Вариант.Наименование - ) - ); + Вариант.Наименование)); Возврат; КонецЕсли; ОткрытьЗначение(Вариант.Ссылка); @@ -376,8 +373,7 @@ НСтр("ru = 'Не удалось получить список предопределенных вариантов |внешнего отчета ""%1"":'"), ОтчетИнформация.ОтчетИмя - ) + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ) + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Help/ru.html b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Help/ru.html index 1b6e9675f..e64619404 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Help/ru.html +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Для сохранения нового варианта отчета необходимо ввести наименование, которое не занято другим вариантом этого отчета.

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

                      Что бы изменить наименование существующего варианта отчета необходимо установить курсор на нужный вариант отчета и нажать на кнопку "F2" или вызвать команду "Изменить" из контекстного меню.

                      diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Module.bsl b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Module.bsl index a96134355..83a747f77 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Module.bsl +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/Forms/СохранениеВариантаОтчета/Module.bsl @@ -51,8 +51,7 @@ ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Поле ""Наименование"" не заполнено'"), , - "Наименование" - ); + "Наименование"); Отказ = Истина; ИначеЕсли ВариантыОтчетов.НаименованиеЗанято(ОтчетИнформация.Отчет, ВариантСсылка, ВариантНаименование) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю( @@ -61,8 +60,7 @@ ВариантНаименование ), , - "Наименование" - ); + "Наименование"); Отказ = Истина; КонецЕсли; КонецПроцедуры @@ -128,8 +126,7 @@ ВариантОписание, ВариантОписание, Модифицированность, - НСтр("ru = 'Описание'") - ); + НСтр("ru = 'Описание'")); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////// @@ -167,9 +164,7 @@ Предупреждение( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недостаточно прав доступа для удаления варианта отчета ""%1"".'"), - Вариант.Наименование - ) - ); + Вариант.Наименование)); Возврат; КонецЕсли; @@ -180,8 +175,7 @@ ТекстВопроса = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( ?(Вариант.ПометкаУдаления, НСтр("ru = 'Снять с ""%1"" пометку на удаление?'"), НСтр("ru = 'Пометить ""%1"" на удаление?'")), - Вариант.Наименование - ); + Вариант.Наименование); Ответ = Вопрос(ТекстВопроса, РежимДиалогаВопрос.ДаНет, 60, КодВозвратаДиалога.Да); Если Ответ <> КодВозвратаДиалога.Да Тогда @@ -246,8 +240,7 @@ ОбщегоНазначенияКлиентСервер.СообщитьПользователю( НСтр("ru = 'Поле ""Наименование"" не заполнено'"), , - "ВариантНаименование" - ); + "ВариантНаименование"); Возврат Ложь; КонецЕсли; @@ -261,8 +254,7 @@ ВариантНаименование ), , - "ВариантНаименование" - ); + "ВариантНаименование"); Возврат Ложь; КонецЕсли; @@ -306,9 +298,7 @@ Предупреждение( СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Недостаточно прав доступа для изменения варианта ""%1"".'"), - Вариант.Наименование - ) - ); + Вариант.Наименование)); Возврат; КонецЕсли; ОткрытьЗначение(Вариант.Ссылка); @@ -467,8 +457,7 @@ ВариантНаименование ), , - "ВариантНаименование" - ); + "ВариантНаименование"); Возврат Ложь; КонецЕсли; @@ -586,8 +575,7 @@ НСтр("ru = 'Не удалось получить список предопределенных вариантов |внешнего отчета ""%1"":'"), ОтчетИнформация.ОтчетИмя - ) + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + ) + Символы.ПС + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; diff --git a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/ХранилищеВариантовОтчетов.mdo b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/ХранилищеВариантовОтчетов.mdo index 1bc325108..2153d608c 100644 --- a/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/ХранилищеВариантовОтчетов.mdo +++ b/SSL/src/SettingsStorages/ХранилищеВариантовОтчетов/ХранилищеВариантовОтчетов.mdo @@ -1,7 +1,7 @@ - + ХранилищеВариантовОтчетов diff --git a/SSL/src/StyleItems/ВидДняВоскресеньеЦвет/ВидДняВоскресеньеЦвет.mdo b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряВоскресеньеЦвет/ВидДняПроизводственногоКалендаряВоскресеньеЦвет.mdo similarity index 76% rename from SSL/src/StyleItems/ВидДняВоскресеньеЦвет/ВидДняВоскресеньеЦвет.mdo rename to SSL/src/StyleItems/ВидДняПроизводственногоКалендаряВоскресеньеЦвет/ВидДняПроизводственногоКалендаряВоскресеньеЦвет.mdo index 52c9e22f8..0b3c5d438 100644 --- a/SSL/src/StyleItems/ВидДняВоскресеньеЦвет/ВидДняВоскресеньеЦвет.mdo +++ b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряВоскресеньеЦвет/ВидДняПроизводственногоКалендаряВоскресеньеЦвет.mdo @@ -1,9 +1,9 @@ - ВидДняВоскресеньеЦвет + ВидДняПроизводственногоКалендаряВоскресеньеЦвет ru - Вид дня производственного календаря "Воскресенье" + Вид дня производственного календаря «Воскресенье» diff --git a/SSL/src/StyleItems/ВидДняНеУказанЦвет/ВидДняНеУказанЦвет.mdo b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряНеУказанЦвет/ВидДняПроизводственногоКалендаряНеУказанЦвет.mdo similarity index 84% rename from SSL/src/StyleItems/ВидДняНеУказанЦвет/ВидДняНеУказанЦвет.mdo rename to SSL/src/StyleItems/ВидДняПроизводственногоКалендаряНеУказанЦвет/ВидДняПроизводственногоКалендаряНеУказанЦвет.mdo index 18f17f570..6626e6621 100644 --- a/SSL/src/StyleItems/ВидДняНеУказанЦвет/ВидДняНеУказанЦвет.mdo +++ b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряНеУказанЦвет/ВидДняПроизводственногоКалендаряНеУказанЦвет.mdo @@ -1,6 +1,6 @@ - ВидДняНеУказанЦвет + ВидДняПроизводственногоКалендаряНеУказанЦвет ru Вид дня производственного календаря не указан diff --git a/SSL/src/StyleItems/ВидДняПраздникЦвет/ВидДняПраздникЦвет.mdo b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряПраздникЦвет/ВидДняПроизводственногоКалендаряПраздникЦвет.mdo similarity index 77% rename from SSL/src/StyleItems/ВидДняПраздникЦвет/ВидДняПраздникЦвет.mdo rename to SSL/src/StyleItems/ВидДняПроизводственногоКалендаряПраздникЦвет/ВидДняПроизводственногоКалендаряПраздникЦвет.mdo index 25a94c950..060e6214f 100644 --- a/SSL/src/StyleItems/ВидДняПраздникЦвет/ВидДняПраздникЦвет.mdo +++ b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряПраздникЦвет/ВидДняПроизводственногоКалендаряПраздникЦвет.mdo @@ -1,9 +1,9 @@ - ВидДняПраздникЦвет + ВидДняПроизводственногоКалендаряПраздникЦвет ru - Вид дня производственного календаря "Праздник" + Вид дня производственного календаря «Праздник» diff --git a/SSL/src/StyleItems/ВидДняПредпраздничныйЦвет/ВидДняПредпраздничныйЦвет.mdo b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряПредпраздничныйЦвет/ВидДняПроизводственногоКалендаряПредпраздничныйЦвет.mdo similarity index 74% rename from SSL/src/StyleItems/ВидДняПредпраздничныйЦвет/ВидДняПредпраздничныйЦвет.mdo rename to SSL/src/StyleItems/ВидДняПроизводственногоКалендаряПредпраздничныйЦвет/ВидДняПроизводственногоКалендаряПредпраздничныйЦвет.mdo index f6f7f9b20..6e6326141 100644 --- a/SSL/src/StyleItems/ВидДняПредпраздничныйЦвет/ВидДняПредпраздничныйЦвет.mdo +++ b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряПредпраздничныйЦвет/ВидДняПроизводственногоКалендаряПредпраздничныйЦвет.mdo @@ -1,9 +1,9 @@ - ВидДняПредпраздничныйЦвет + ВидДняПроизводственногоКалендаряПредпраздничныйЦвет ru - Вид дня производственного календаря "Предпраздничный" + Вид дня производственного календаря «Предпраздничный» diff --git a/SSL/src/StyleItems/ВидДняРабочийЦвет/ВидДняРабочийЦвет.mdo b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряРабочийЦвет/ВидДняПроизводственногоКалендаряРабочийЦвет.mdo similarity index 77% rename from SSL/src/StyleItems/ВидДняРабочийЦвет/ВидДняРабочийЦвет.mdo rename to SSL/src/StyleItems/ВидДняПроизводственногоКалендаряРабочийЦвет/ВидДняПроизводственногоКалендаряРабочийЦвет.mdo index 4d75960e4..6d1fe558d 100644 --- a/SSL/src/StyleItems/ВидДняРабочийЦвет/ВидДняРабочийЦвет.mdo +++ b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряРабочийЦвет/ВидДняПроизводственногоКалендаряРабочийЦвет.mdo @@ -1,9 +1,9 @@ - ВидДняРабочийЦвет + ВидДняПроизводственногоКалендаряРабочийЦвет ru - Вид дня производственного календаря "Рабочий" + Вид дня производственного календаря «Рабочий» diff --git a/SSL/src/StyleItems/ВидДняСубботаЦвет/ВидДняСубботаЦвет.mdo b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряСубботаЦвет/ВидДняПроизводственногоКалендаряСубботаЦвет.mdo similarity index 78% rename from SSL/src/StyleItems/ВидДняСубботаЦвет/ВидДняСубботаЦвет.mdo rename to SSL/src/StyleItems/ВидДняПроизводственногоКалендаряСубботаЦвет/ВидДняПроизводственногоКалендаряСубботаЦвет.mdo index 6d689792b..acde9041c 100644 --- a/SSL/src/StyleItems/ВидДняСубботаЦвет/ВидДняСубботаЦвет.mdo +++ b/SSL/src/StyleItems/ВидДняПроизводственногоКалендаряСубботаЦвет/ВидДняПроизводственногоКалендаряСубботаЦвет.mdo @@ -1,9 +1,9 @@ - ВидДняСубботаЦвет + ВидДняПроизводственногоКалендаряСубботаЦвет ru - Вид дня производственного календаря "Суббота" + Вид дня производственного календаря «Суббота» diff --git a/SSL/src/StyleItems/ВидимыйВариантОтчетаЦвет/ВидимыйВариантОтчетаЦвет.mdo b/SSL/src/StyleItems/ВидимыйВариантОтчетаЦвет/ВидимыйВариантОтчетаЦвет.mdo index ecb7e7002..2ac732d5d 100644 --- a/SSL/src/StyleItems/ВидимыйВариантОтчетаЦвет/ВидимыйВариантОтчетаЦвет.mdo +++ b/SSL/src/StyleItems/ВидимыйВариантОтчетаЦвет/ВидимыйВариантОтчетаЦвет.mdo @@ -3,7 +3,7 @@ ВидимыйВариантОтчетаЦвет ru - Видимый вариант отчета цвет + Видимый вариант отчета diff --git a/SSL/src/StyleItems/ГруппаВариантовОтчетовЦвет/ГруппаВариантовОтчетовЦвет.mdo b/SSL/src/StyleItems/ГруппаВариантовОтчетовЦвет/ГруппаВариантовОтчетовЦвет.mdo index 5c74a2bb5..9770bdec2 100644 --- a/SSL/src/StyleItems/ГруппаВариантовОтчетовЦвет/ГруппаВариантовОтчетовЦвет.mdo +++ b/SSL/src/StyleItems/ГруппаВариантовОтчетовЦвет/ГруппаВариантовОтчетовЦвет.mdo @@ -3,7 +3,7 @@ ГруппаВариантовОтчетовЦвет ru - Группа вариантов отчетов цвет + Группа вариантов отчетов diff --git a/SSL/src/StyleItems/ДатаГрафикаИзмененнаяФон/ДатаГрафикаИзмененнаяФон.mdo b/SSL/src/StyleItems/ДатаГрафикаИзмененнаяФон/ДатаГрафикаИзмененнаяФон.mdo index ea2a329bf..1083a44b8 100644 --- a/SSL/src/StyleItems/ДатаГрафикаИзмененнаяФон/ДатаГрафикаИзмененнаяФон.mdo +++ b/SSL/src/StyleItems/ДатаГрафикаИзмененнаяФон/ДатаГрафикаИзмененнаяФон.mdo @@ -3,7 +3,7 @@ ДатаГрафикаИзмененнаяФон ru - Дата графика измененная фон + Дата графика измененная diff --git a/SSL/src/StyleItems/ДобавленныйРеквизитФон/ДобавленныйРеквизитФон.mdo b/SSL/src/StyleItems/ДобавленныйРеквизитФон/ДобавленныйРеквизитФон.mdo index 032eda3cf..ce9e6f509 100644 --- a/SSL/src/StyleItems/ДобавленныйРеквизитФон/ДобавленныйРеквизитФон.mdo +++ b/SSL/src/StyleItems/ДобавленныйРеквизитФон/ДобавленныйРеквизитФон.mdo @@ -3,7 +3,7 @@ ДобавленныйРеквизитФон ru - Добавленный реквизит фон + Добавленный реквизит diff --git a/SSL/src/StyleItems/ЗаблокированныйРеквизитЦвет/ЗаблокированныйРеквизитЦвет.mdo b/SSL/src/StyleItems/ЗаблокированныйРеквизитЦвет/ЗаблокированныйРеквизитЦвет.mdo index c6f6e7ffd..c958e19c2 100644 --- a/SSL/src/StyleItems/ЗаблокированныйРеквизитЦвет/ЗаблокированныйРеквизитЦвет.mdo +++ b/SSL/src/StyleItems/ЗаблокированныйРеквизитЦвет/ЗаблокированныйРеквизитЦвет.mdo @@ -3,7 +3,7 @@ ЗаблокированныйРеквизитЦвет ru - Заблокированный реквизит цвет + Заблокированный реквизит diff --git a/SSL/src/StyleItems/ЗаголовокУдаленногоРеквизитаФон/ЗаголовокУдаленногоРеквизитаФон.mdo b/SSL/src/StyleItems/ЗаголовокУдаленногоРеквизитаФон/ЗаголовокУдаленногоРеквизитаФон.mdo index 807a17454..78d1d660d 100644 --- a/SSL/src/StyleItems/ЗаголовокУдаленногоРеквизитаФон/ЗаголовокУдаленногоРеквизитаФон.mdo +++ b/SSL/src/StyleItems/ЗаголовокУдаленногоРеквизитаФон/ЗаголовокУдаленногоРеквизитаФон.mdo @@ -3,7 +3,7 @@ ЗаголовокУдаленногоРеквизитаФон ru - Заголовок удаленного реквизита фон + Заголовок удаленного реквизита diff --git a/SSL/src/StyleItems/ИзмененноеЗначениеРеквизитаФон/ИзмененноеЗначениеРеквизитаФон.mdo b/SSL/src/StyleItems/ИзмененноеЗначениеРеквизитаФон/ИзмененноеЗначениеРеквизитаФон.mdo index a83339682..291886664 100644 --- a/SSL/src/StyleItems/ИзмененноеЗначениеРеквизитаФон/ИзмененноеЗначениеРеквизитаФон.mdo +++ b/SSL/src/StyleItems/ИзмененноеЗначениеРеквизитаФон/ИзмененноеЗначениеРеквизитаФон.mdo @@ -3,7 +3,7 @@ ИзмененноеЗначениеРеквизитаФон ru - Измененное значение реквизита фон + Измененное значение реквизита (фон) diff --git a/SSL/src/StyleItems/ИзмененноеЗначениеРеквизитаЦвет/ИзмененноеЗначениеРеквизитаЦвет.mdo b/SSL/src/StyleItems/ИзмененноеЗначениеРеквизитаЦвет/ИзмененноеЗначениеРеквизитаЦвет.mdo index 6985c2bc8..ece5b366b 100644 --- a/SSL/src/StyleItems/ИзмененноеЗначениеРеквизитаЦвет/ИзмененноеЗначениеРеквизитаЦвет.mdo +++ b/SSL/src/StyleItems/ИзмененноеЗначениеРеквизитаЦвет/ИзмененноеЗначениеРеквизитаЦвет.mdo @@ -3,7 +3,7 @@ ИзмененноеЗначениеРеквизитаЦвет ru - Измененное значение реквизита цвет + Измененное значение реквизита (цвет) diff --git a/SSL/src/StyleItems/КонтактнаяИнформацияСРедактированиемВДиалогеЦвет/КонтактнаяИнформацияСРедактированиемВДиалогеЦвет.mdo b/SSL/src/StyleItems/КонтактнаяИнформацияСРедактированиемВДиалогеЦвет/КонтактнаяИнформацияСРедактированиемВДиалогеЦвет.mdo index 949f70950..d81d6dc0f 100644 --- a/SSL/src/StyleItems/КонтактнаяИнформацияСРедактированиемВДиалогеЦвет/КонтактнаяИнформацияСРедактированиемВДиалогеЦвет.mdo +++ b/SSL/src/StyleItems/КонтактнаяИнформацияСРедактированиемВДиалогеЦвет/КонтактнаяИнформацияСРедактированиемВДиалогеЦвет.mdo @@ -3,7 +3,7 @@ КонтактнаяИнформацияСРедактированиемВДиалогеЦвет ru - Контактная информация с редактированием в диалоге цвет + Контактная информация с редактированием в диалоге diff --git a/SSL/src/StyleItems/МоиВариантыОтчетовЦвет/МоиВариантыОтчетовЦвет.mdo b/SSL/src/StyleItems/МоиВариантыОтчетовЦвет/МоиВариантыОтчетовЦвет.mdo index 923571785..4eb1d095c 100644 --- a/SSL/src/StyleItems/МоиВариантыОтчетовЦвет/МоиВариантыОтчетовЦвет.mdo +++ b/SSL/src/StyleItems/МоиВариантыОтчетовЦвет/МоиВариантыОтчетовЦвет.mdo @@ -3,7 +3,7 @@ МоиВариантыОтчетовЦвет ru - Мои варианты отчетов цвет + Мои варианты отчетов diff --git a/SSL/src/StyleItems/НедоступныеДанныеЦвет/НедоступныеДанныеЦвет.mdo b/SSL/src/StyleItems/НедоступныеДанныеЦвет/НедоступныеДанныеЦвет.mdo index 2620bfee5..151aec2ea 100644 --- a/SSL/src/StyleItems/НедоступныеДанныеЦвет/НедоступныеДанныеЦвет.mdo +++ b/SSL/src/StyleItems/НедоступныеДанныеЦвет/НедоступныеДанныеЦвет.mdo @@ -3,7 +3,7 @@ НедоступныеДанныеЦвет ru - Недоступные данные цвет + Недоступные данные diff --git a/SSL/src/StyleItems/ОшибкаПолнотекстовыйПоискФон/ОшибкаПолнотекстовыйПоискФон.mdo b/SSL/src/StyleItems/ОшибкаПолнотекстовыйПоискФон/ОшибкаПолнотекстовыйПоискФон.mdo index 366b450ff..1ed93ac14 100644 --- a/SSL/src/StyleItems/ОшибкаПолнотекстовыйПоискФон/ОшибкаПолнотекстовыйПоискФон.mdo +++ b/SSL/src/StyleItems/ОшибкаПолнотекстовыйПоискФон/ОшибкаПолнотекстовыйПоискФон.mdo @@ -3,7 +3,7 @@ ОшибкаПолнотекстовыйПоискФон ru - Ошибка полнотекстовый поиск фон + Ошибка полнотекстовый поиск diff --git a/SSL/src/StyleItems/СкрытыйВариантОтчетаЦвет/СкрытыйВариантОтчетаЦвет.mdo b/SSL/src/StyleItems/СкрытыйВариантОтчетаЦвет/СкрытыйВариантОтчетаЦвет.mdo index 96344c97c..e09f76a18 100644 --- a/SSL/src/StyleItems/СкрытыйВариантОтчетаЦвет/СкрытыйВариантОтчетаЦвет.mdo +++ b/SSL/src/StyleItems/СкрытыйВариантОтчетаЦвет/СкрытыйВариантОтчетаЦвет.mdo @@ -3,7 +3,7 @@ СкрытыйВариантОтчетаЦвет ru - Скрытый вариант отчета цвет + Скрытый вариант отчета diff --git a/SSL/src/StyleItems/УдаленныйДополнительныйРеквизитШрифт/УдаленныйДополнительныйРеквизитШрифт.mdo b/SSL/src/StyleItems/УдаленныйДополнительныйРеквизитШрифт/УдаленныйДополнительныйРеквизитШрифт.mdo index a5f9a2222..d003c589a 100644 --- a/SSL/src/StyleItems/УдаленныйДополнительныйРеквизитШрифт/УдаленныйДополнительныйРеквизитШрифт.mdo +++ b/SSL/src/StyleItems/УдаленныйДополнительныйРеквизитШрифт/УдаленныйДополнительныйРеквизитШрифт.mdo @@ -3,7 +3,7 @@ УдаленныйДополнительныйРеквизитШрифт ru - Удаленный дополнительный реквизит шрифт + Удаленный дополнительный реквизит Font diff --git a/SSL/src/StyleItems/УдаленныйРеквизитФон/УдаленныйРеквизитФон.mdo b/SSL/src/StyleItems/УдаленныйРеквизитФон/УдаленныйРеквизитФон.mdo index dcf1eb477..c2391bad4 100644 --- a/SSL/src/StyleItems/УдаленныйРеквизитФон/УдаленныйРеквизитФон.mdo +++ b/SSL/src/StyleItems/УдаленныйРеквизитФон/УдаленныйРеквизитФон.mdo @@ -3,7 +3,7 @@ УдаленныйРеквизитФон ru - Удаленный реквизит фон + Удаленный реквизит diff --git a/SSL/src/Subsystems/НастройкаИАдминистрирование/CommandInterface.cmi b/SSL/src/Subsystems/НастройкаИАдминистрирование/CommandInterface.cmi index 95126159c..df9a2dc53 100644 --- a/SSL/src/Subsystems/НастройкаИАдминистрирование/CommandInterface.cmi +++ b/SSL/src/Subsystems/НастройкаИАдминистрирование/CommandInterface.cmi @@ -81,10 +81,6 @@ Catalog.ВариантыОтчетов.StandardCommand.OpenList - - InformationRegister.АдресныйКлассификатор.StandardCommand.OpenList - - CommonCommand.ОткрытьИнформационныйЦентр @@ -367,7 +363,6 @@ InformationRegister.ПользовательскиеМакетыПечати.StandardCommand.OpenList CommonCommand.ОткрытьОбменыДанными Catalog.ВариантыОтчетов.StandardCommand.OpenList - InformationRegister.АдресныйКлассификатор.StandardCommand.OpenList CommonCommand.ОткрытьИнформационныйЦентр CommonCommand.СинхронизацияДанныхВМоделиСервиса Catalog.Валюты.StandardCommand.OpenList @@ -410,7 +405,6 @@ Catalog.ДополнительныеОтчетыИОбработки.StandardCommand.CreateFolder Catalog.СценарииОбменовДанными.StandardCommand.Create Catalog.ВариантыОтчетов.StandardCommand.Create - InformationRegister.АдресныйКлассификатор.StandardCommand.Create Catalog.ВидыКонтактнойИнформации.StandardCommand.Create Catalog.ВидыКонтактнойИнформации.StandardCommand.CreateFolder Catalog.РассылкиОтчетов.StandardCommand.Create diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/АнализЖурналаРегистрации/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/АнализЖурналаРегистрации/Help/ru.html index 04ebc76f4..718276ac0 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/АнализЖурналаРегистрации/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/АнализЖурналаРегистрации/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Конфигурация предоставляет возможность формирования отчета с критичными записями журнала регистрации и отправки этого отчета по электронной почте администраторам системы.

                       

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БазоваяФункциональность/БазоваяФункциональность.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БазоваяФункциональность/БазоваяФункциональность.mdo index 5e35c3749..7c047f88f 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БазоваяФункциональность/БазоваяФункциональность.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БазоваяФункциональность/БазоваяФункциональность.mdo @@ -51,7 +51,6 @@ CommonForm.ВключениеЖурналаРегистрации CommonModule.СтандартныеПодсистемыСервер CommonModule.СтандартныеПодсистемыКлиент - CommonForm.НерекомендуемаяВерсияПлатформы CommonForm.ВыборУзловПлановОбмена CommonModule.ЖурналРегистрации CommonModule.ЖурналРегистрацииКлиент @@ -136,8 +135,34 @@ CommandGroup.Информация CommonCommand.СведенияОПользователе CommonPicture.ИнформацияПоНедоступнымПолям - XDTOPackage.ApplicationExtensionsPermissions_1_0_0_1 CommonPicture.ОтправитьЭлектронноеПисьмо SessionParameter.ПараметрыКлиентаНаСервере + CommonForm.РедактированиеТабличногоДокумента + CommonPicture.ИзменитьШрифт + CommonPicture.ВыравниваниеПоЛевомуКраю + CommonPicture.ВыравниваниеПоПравомуКраю + CommonPicture.ВыравниваниеПоЦентру + CommonPicture.ВыравниваниеПоШирине + CommonPicture.ПолужирноеНачертание + CommonPicture.КурсивноеНачертание + CommonPicture.Подчеркивание + CommonPicture.УвеличитьШрифт + CommonPicture.УменьшитьШрифт + CommonPicture.ЦветТекста + CommonPicture.ЦветФона + CommonPicture.ГраницаВезде + CommonPicture.ГраницаВнутри + CommonPicture.ГраницаВокруг + CommonPicture.ГраницаСверху + CommonPicture.ГраницаСлева + CommonPicture.ГраницаСнизу + CommonPicture.ГраницаСправа + CommonPicture.ОбъединитьЯчейки + CommonPicture.НетГраницы + CommonPicture.ТолстаяГраницаВокруг + CommonPicture.ТолстаяГраницаСверху + CommonPicture.ТолстаяГраницаСнизу + CommonPicture.ПоказатьОтличия + CommonPicture.Скрепка Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БизнесПроцессыИЗадачи/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БизнесПроцессыИЗадачи/Help/ru.html index 7c71ef9e6..00a298d6f 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БизнесПроцессыИЗадачи/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/БизнесПроцессыИЗадачи/Help/ru.html @@ -1,4 +1,4 @@ - +

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

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

                      Задачи могут быть адресованы исполнителю или группе исполнителей как персонально — персональная адресация, так и для некоторых бизнес-процессов, с использованием ролей бизнес-процесса — ролевая адресация (необходимо различать роли бизнес-процесса и роли для организации прав доступа). В случае ролевой адресации задача выдается не персонально исполнителю, а некоторой роли бизнес-процесса (например, "Старший по залу"), а соответствие пользователей ролям задается в регистре сведений "Роли и исполнители" и используется системой для доставки поручений конкретным пользователям. Роли бизнес-процесса поставляются в составе конфигурации.

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Help/ru.html index e694b883a..b0c3a12c7 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Валюты/Help/ru.html @@ -1,2 +1,2 @@ - +

                      Программа поддерживает многовалютный учет, и позволяет вводить операции и просматривать отчеты в любой валюте, представленной в справочнике Валюты. Конфигурация поставляется с «Общероссийским классификатором валют» (ОКВ). Существует возможность загрузки курсов валют с сайта «РосБизнесКонсалтинг».

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/Help/ru.html index 63a0969d0..d75be6ee3 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/Help/ru.html @@ -1,3 +1,3 @@ - +

                      Конфигурация позволяет вести историю изменений объектов информационной базы. Эта функция позволяет ответить на вопросы: "Кто изменил объект?", "Когда произошли изменения?" и "Что изменено в объекте?". Версионируемыми объектами могут быть справочники и документы. Конфигурация позволяет просматривать любую версию объекта или сравнивать любые версии объекта между собой.

                      Перед использованием возможности версионирования, необходимо установить флаг Использовать версионирование объектов, в форме настройки параметров системы (раздел Настройка и администрирование). После сохранения настроек на панели навигации появится команда Версионируемые объекты, которая открывает форму настройки версионирования.

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/ВерсионированиеОбъектов.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/ВерсионированиеОбъектов.mdo index 76eeb4608..8bf2804e1 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/ВерсионированиеОбъектов.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ВерсионированиеОбъектов/ВерсионированиеОбъектов.mdo @@ -31,8 +31,8 @@ StyleItem.ИзмененноеЗначениеРеквизитаЦвет StyleItem.УдаленныйРеквизитФон Enum.ТипыВерсийОбъекта - CommonPicture.ПоказатьОтличия Role.ЧтениеИнформацииОВерсияхОбъектов EventSubscription.УдалитьИнформациюОбАвтореВерсии + EventSubscription.ЗаписатьВерсиюОбъектаПриОбменеДанными Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Взаимодействия/Взаимодействия.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Взаимодействия/Взаимодействия.mdo index b0d11719c..8d782a701 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Взаимодействия/Взаимодействия.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Взаимодействия/Взаимодействия.mdo @@ -84,5 +84,13 @@ FunctionalOption.ИспользоватьПризнакРассмотрено StyleItem.ОшибкаПолнотекстовыйПоискФон EventSubscription.ПереопределитьПолучаемуюФормуПрисоединенногоФайлаВзаимодействия + Document.СообщениеSMS + CommonPicture.НаписатьSMS + ScheduledJob.ОбновлениеСтатусовДоставкиSMS + ScheduledJob.ОтправкаSMS + Catalog.СообщениеSMSПрисоединенныеФайлы + Enum.СостоянияСообщенияSMS + Enum.СостоянияДокументаСообщениеSMS + Constant.АдресПубликацииИнформационнойБазыВИнтернете Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/Help/ru.html index 4062f023e..a9775005a 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ГрупповоеИзменениеОбъектов/Help/ru.html @@ -1 +1 @@ -С помощью группового изменения объектов пользователь может за одно действие изменить значения реквизитов, дополнительных реквизитов или дополнительных сведений (далее по тексту: реквизитов) у выбранных объектов определенного типа. Для работы с групповым изменением объектов пользователю не требуются дополнительные роли. Если пользователю доступно редактирование самого объекта, то ему доступно и групповое изменение объекта. Для перехода к помощнику группового изменения можно воспользоваться командой Изменить выделенные командной панели или контекстного меню списка, предварительно выбрав в списке набор объектов с помощью множественного выделения. \ No newline at end of file +С помощью группового изменения объектов пользователь может за одно действие изменить значения реквизитов, дополнительных реквизитов или дополнительных сведений (далее по тексту: реквизитов) у выбранных объектов определенного типа. Для работы с групповым изменением объектов пользователю не требуются дополнительные роли. Если пользователю доступно редактирование самого объекта, то ему доступно и групповое изменение объекта. Для перехода к помощнику группового изменения можно воспользоваться командой Изменить выделенные командной панели или контекстного меню списка, предварительно выбрав в списке набор объектов с помощью множественного выделения. \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/Help/ru.html index 0c5c38f63..2697792be 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Конфигурация позволяет подключать и использовать дополнительные (внешние) отчеты и обработки к ИБ в режиме «1С:Предприятия». Они позволяют расширять функциональность конфигурации, не внося в неё изменений.

                      С помощью дополнительных отчетов и обработок можно:

                      diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/ДополнительныеОтчетыИОбработки.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/ДополнительныеОтчетыИОбработки.mdo index 59ff38e7b..736cedbad 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/ДополнительныеОтчетыИОбработки.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ДополнительныеОтчетыИОбработки/ДополнительныеОтчетыИОбработки.mdo @@ -48,5 +48,8 @@ CommonModule.ДополнительныеОтчетыИОбработкиРегламентныеЗадания CommonModule.ДополнительныеОтчетыИОбработкиВБезопасномРежиме CommonModule.ДополнительныеОтчетыИОбработкиКлиентПереопределяемый + XDTOPackage.ApplicationExtensionsPermissions_1_0_0_1 + XDTOPackage.ApplicationExtensionsManifest_1_0_0_1 + Constant.УдалитьПоказыватьКомандуДополнительныеПечатныеФормы Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗавершениеРаботыПользователей/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗавершениеРаботыПользователей/Help/ru.html index 1d86a91a7..1874c4b6e 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗавершениеРаботыПользователей/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗавершениеРаботыПользователей/Help/ru.html @@ -1,2 +1,2 @@ - +

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

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/Help/ru.html index 712d921b6..29f4acff7 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ЗапретРедактированияРеквизитовОбъектов/Help/ru.html @@ -1,3 +1,3 @@ - +

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

                      Примером может служить реквизит Валюта справочника Кассы, который определяет валюту остатков по данной кассе, или признак Является услугой справочника Номенклатура, который влияет на проведение документов с такой номенклатурой. Такие реквизиты нельзя изменять после появления остатков по данной кассе или после появления документов с данной номенклатурой соответственно.

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ИнформационныйЦентр/ИнформационныйЦентр.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ИнформационныйЦентр/ИнформационныйЦентр.mdo index 4fad8b0eb..b0f3e9b18 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ИнформационныйЦентр/ИнформационныйЦентр.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ИнформационныйЦентр/ИнформационныйЦентр.mdo @@ -10,23 +10,31 @@ CommonModule.ИнформационныйЦентрСервер CommonModule.ИнформационныйЦентрСерверПереопределяемый Role.ИспользованиеИнформационногоЦентра - CommonForm.ОтправкаСообщенияВТехподдержку Catalog.ОбщиеДанныеИнформационногоЦентра CommonModule.СообщенияИнформационногоЦентраОбработчикСообщения - CommonForm.ОтображениеНовостей CommonCommand.ОткрытьИнформационныйЦентр Catalog.ТипыИнформацииИнформационногоЦентра DataProcessor.ИнформационныйЦентр + CommonModule.ИнформационныйЦентрСлужебный CommonTemplate.СоответствиеТэговОбщимФормам Catalog.ИнформационныеСсылкиДляФорм Catalog.ПолныеПутиКФормам + CommonModule.ИнформационныйЦентрСерверПовтИсп CommonPicture.СообщениеВТехПоддержку CommonPicture.ПодатьИдею CommonTemplate.ИнформационныеСсылки CommonPicture.УведомлениеСервиса CommonPicture.ФорумСервиса CommonPicture.СообщениеСервиса - CommonModule.ИнформационныйЦентрСерверПовтИсп - CommonModule.ИнформационныйЦентрСлужебный + InformationRegister.ПросмотренныеДанныеИнформационногоЦентра + CommonPicture.ИсходящееСообщение + CommonPicture.ВходящееСообщение + CommonModule.СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1 + XDTOPackage.MessageInfoCenter_1_0_1_1 + Constant.ИмяПользователяКонференцииИнформационногоЦентра + Constant.ПарольПользователяКонференцииИнформационногоЦентра + Constant.АдресУправленияКонференцией + CommonModule.СообщенияИнформационногоЦентраИнтерфейс + CommonModule.СообщенияИнформационногоЦентраРеализация Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/Help/ru.html index f386d9b47..c90200a89 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/Help/ru.html @@ -1,4 +1,4 @@ - +

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

                       

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/КалендарныеГрафики.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/КалендарныеГрафики.mdo index 6ce0da9f2..724fbe744 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/КалендарныеГрафики.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КалендарныеГрафики/КалендарныеГрафики.mdo @@ -20,12 +20,12 @@ Catalog.ПроизводственныеКалендари Enum.ВидыДнейПроизводственногоКалендаря Enum.УдалитьВидыКалендарей - StyleItem.ВидДняВоскресеньеЦвет - StyleItem.ВидДняНеУказанЦвет - StyleItem.ВидДняПраздникЦвет - StyleItem.ВидДняПредпраздничныйЦвет - StyleItem.ВидДняРабочийЦвет - StyleItem.ВидДняСубботаЦвет + StyleItem.ВидДняПроизводственногоКалендаряВоскресеньеЦвет + StyleItem.ВидДняПроизводственногоКалендаряНеУказанЦвет + StyleItem.ВидДняПроизводственногоКалендаряПраздникЦвет + StyleItem.ВидДняПроизводственногоКалендаряПредпраздничныйЦвет + StyleItem.ВидДняПроизводственногоКалендаряРабочийЦвет + StyleItem.ВидДняПроизводственногоКалендаряСубботаЦвет Enum.СпособыЗаполненияГрафикаРаботы CommonModule.КалендарныеГрафикиКлиентСервер StyleItem.ДатаГрафикаИзмененнаяФон diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/Help/ru.html index b075c7fe7..28dc74013 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/Help/ru.html @@ -1,3 +1,3 @@ - +

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

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

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo index 754ad7cb8..de2e5cbc5 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтактнаяИнформация/КонтактнаяИнформация.mdo @@ -15,21 +15,17 @@ CommonModule.УправлениеКонтактнойИнформациейКлиент CommonModule.УправлениеКонтактнойИнформацией CommonForm.ПоискПоИндексу - CommonForm.ВводАдреса - CommonForm.ВводТелефона Catalog.ВидыКонтактнойИнформации Catalog.СтраныМира Enum.ТипыКонтактнойИнформации Subsystem.СтандартныеПодсистемы.Subsystem.КонтактнаяИнформация EventSubscription.ЗаполнитьКонтактнуюИнформацию - CommonModule.УправлениеКонтактнойИнформациейСобытия EventSubscription.ВидыКонтактнойИнформацииЗаполнитьЗначениеРеквизитаУпорядочивания EventSubscription.ВидыКонтактнойИнформацииСброситьЗначениеРеквизитаУпорядочивания CommonModule.УправлениеКонтактнойИнформациейКлиентСервер StyleItem.КонтактнаяИнформацияСРедактированиемВДиалогеЦвет CommonModule.УправлениеКонтактнойИнформациейКлассификаторы CommonPicture.КонтактнаяИнформацияПерейтиПоСсылке - CommonModule.КонтактнаяИнформацияКлиент CommonModule.КонтактнаяИнформацияСлужебный CommonModule.КонтактнаяИнформацияКлиентСервер CommonModule.КонтактнаяИнформацияКлиентСерверПовтИсп @@ -37,6 +33,10 @@ XDTOPackage.КонтактнаяИнформация CommonPicture.Подменю CommonPicture.КонтактнаяИнформацияНеактуально - CommonModule.КонтактнаяИнформацияВызовСервера + CommonModule.КонтактнаяИнформацияСлужебныйВызовСервера + CommonModule.КонтактнаяИнформацияXML + CommonModule.КонтактнаяИнформацияСлужебныйПовтИсп + InformationRegister.УдалитьСтраныМира + Role.ДобавлениеИзменениеСтранМира Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/Help/ru.html index c9f13d4bd..bcc434591 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/КонтрольДинамическогоОбновленияКонфигурации/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Платформа 1С:Предприятие 8 позволяет вносить изменения в конфигурацию ИБ без завершения работы пользователей. Такое обновление конфигурации называется динамическим. Конфигурация позволяет оповещать работающих в системе пользователей о динамическом изменении конфигурации. Проверка факта изменения конфигурации осуществляется каждые 20 минут. В случае изменения конфигурации система сообщает об этом пользователю и предлагает ему перезапустить программу.

                       

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/Help/ru.html index 23dab57de..4e77273a3 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/НастройкаПорядкаЭлементов/Help/ru.html @@ -1,4 +1,4 @@ - +

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

                      В ряде случаев кнопки Вверх и Вниз не работают. Расстановка элементов невозможна:

                      diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/Help/ru.html index de12f54c8..dcf3b554d 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Конфигурация позволяет выполнять обмен данными между различными информационными базами по правилам обмена.

                      Правила обмена создаются при помощи конфигурации «Конвертация данных, редакция 2.1».

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

                      diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/ОбменДанными.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/ОбменДанными.mdo index cc3469521..fd26e3844 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/ОбменДанными.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбменДанными/ОбменДанными.mdo @@ -119,7 +119,13 @@ EventSubscription.ОчиститьСсылкиНаУзелИнформационнойБазы CommonPicture.СинхронизацияДанныхАнализДанных48 SessionParameter.ЗагрузкаПараметровРаботыПрограммы - Constant.ВыполнитьЗагрузкуПараметровРаботыПрограммы + Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапуском CommonPicture.СинхронизацияДанныхДанныеПолучены + DataProcessor.РегистрацияИзмененийДляОбменаДанными + CommonCommand.СоставОтправляемыхДанных + CommonCommand.УдалитьНастройкуСинхронизации + SessionParameter.ПаролиСинхронизацииДанных + SessionParameter.ПриоритетныеДанныеОбмена + Constant.ЗагрузитьСообщениеОбменаДанными Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo index 33a501d73..62cf5c991 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеВерсииИБ/ОбновлениеВерсииИБ.mdo @@ -11,16 +11,20 @@ CommonModule.ОбновлениеИнформационнойБазыПереопределяемый CommonModule.ОбновлениеИнформационнойБазыКлиентПереопределяемый CommonForm.ОписаниеИзмененийСистемы - Constant.ЗапуститьОбновлениеИнформационнойБазы CommonModule.ОбновлениеИнформационнойБазыСобытия CommonModule.ОбновлениеИнформационнойБазыВызовСервера CommonModule.ОбновлениеИнформационнойБазыСлужебныйПовтИсп - CommonForm.СообщениеОНеудачномОбновлении Constant.ДетализироватьОбновлениеИБВЖурналеРегистрации Constant.РазделыОписанияИзмененийСистемы CommonTemplate.ПолучениеДереваОбработчиковОбновления Role.ПросмотрОписанияИзмененийПрограммы InformationRegister.УдалитьВерсииПодсистем InformationRegister.ВерсииПодсистем + DataProcessor.ОбновлениеИнформационнойБазы + Constant.СведенияОбОбновленииИБ + ScheduledJob.ОтложенноеОбновлениеИБ + CommonPicture.Успешно + SessionParameter.ВыполняетсяОбновлениеИБ + CommonModule.ОбновлениеИнформационнойБазыГлобальный Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеКонфигурации/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеКонфигурации/Help/ru.html index 0d0673665..333936f72 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеКонфигурации/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ОбновлениеКонфигурации/Help/ru.html @@ -1,2 +1,2 @@ - +

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

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Печать/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Печать/Help/ru.html index 77b3e06a0..3089f7eab 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Печать/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Печать/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Многие документы конфигурации имеют печатные формы. Все печатные формы используют единый механизм, позволяющий редактировать макеты печатных форм, не изменяя саму конфигурацию. Печатные формы объектов могут формироваться на основе табличных макетов (MXL) или макетов офисных документов в форматах Microsoft Word и OpenOffice.org Writer.

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

                      diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Печать/Печать.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Печать/Печать.mdo index 5793ddfe7..3069215dd 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Печать/Печать.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Печать/Печать.mdo @@ -33,5 +33,6 @@ CommonForm.ВыборФорматаВложений CommonModule.УправлениеПечатьюВызовСервера CommonPicture.ИспользованиеМакета + CommonModule.УправлениеПечатьюКлиентПовтИсп Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолнотекстовыйПоиск/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолнотекстовыйПоиск/Help/ru.html index b47023610..143c12c27 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолнотекстовыйПоиск/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолнотекстовыйПоиск/Help/ru.html @@ -1,4 +1,4 @@ - +

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

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

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

                      diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолучениеФайловИзИнтернета/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолучениеФайловИзИнтернета/Help/ru.html index 54f0a5b9b..c4c348c9e 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолучениеФайловИзИнтернета/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПолучениеФайловИзИнтернета/Help/ru.html @@ -1,2 +1,2 @@ - +

                      В отдельных случаях, конфигурации требуется доступ к сети Интернет, например, для загрузки адресного классификатора с сайта поддержки пользователей 1С:Предприятия фирмы «1С». При использования прокси‑сервера для доступа в сеть Интернет, необходимо указать его настройки.

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Help/ru.html index c810da009..64d38fef3 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Пользователи/Help/ru.html @@ -1,4 +1,4 @@ - +

                      Система позволяет администрировать пользователей и внешних пользователей, синхронизируя их со списком пользователей информационной базы (который можно увидеть в Конфигураторе). Тем самым достигается возможность работы с расширенной информацией о пользователях, а также возможонсть сослаться на пользователей из других объектов ИБ.

                       

                      Важно: рекомендуется вести список пользователей ИБ, а также настраивать им права доступа только в режиме «1С:Предприятие». В режиме «Конфигуратор» допускается создавать только пользователей с полными правами – администраторов системы. При входе таких пользователей в ИБ в режиме «1С:Предприятие», в справочнике «Пользователи» будут созданы соответствующие элементы автоматически.

                      \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/Help/ru.html index 0354ad3cf..286c78b0f 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПрефиксацияОбъектов/Help/ru.html @@ -1,4 +1,4 @@ - +

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

                      В общем виде, номер или код объекта складывается по следующей схеме:
                      "ОР" + "ИБ" + "-" + номер/код,
                      где:

                      • "ОР" — 2 символа префикса организации; если префикс организации не задан, то "00". diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПроверкаЛегальностиПолученияОбновления/ПроверкаЛегальностиПолученияОбновления.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПроверкаЛегальностиПолученияОбновления/ПроверкаЛегальностиПолученияОбновления.mdo index 105303d25..6db886876 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПроверкаЛегальностиПолученияОбновления/ПроверкаЛегальностиПолученияОбновления.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ПроверкаЛегальностиПолученияОбновления/ПроверкаЛегальностиПолученияОбновления.mdo @@ -7,5 +7,6 @@ DataProcessor.ЛегальностьПолученияОбновлений CommonModule.ПроверкаЛегальностиПолученияОбновленияКлиент + CommonModule.ПроверкаЛегальностиПолученияОбновленияГлобальный Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БазоваяФункциональностьВМоделиСервиса/БазоваяФункциональностьВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БазоваяФункциональностьВМоделиСервиса/БазоваяФункциональностьВМоделиСервиса.mdo index c92045217..62a5022d8 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БазоваяФункциональностьВМоделиСервиса/БазоваяФункциональностьВМоделиСервиса.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/БазоваяФункциональностьВМоделиСервиса/БазоваяФункциональностьВМоделиСервиса.mdo @@ -46,9 +46,9 @@ EventSubscription.КонтрольНеразделенныхНаборовЗаписейПриЗаписи Catalog.СообщенияОбластейДанных XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_4 - XDTOPackage.ApplicationExtensionsManifest_1_0_0_1 CommonAttribute.ОбластьДанныхВспомогательныеДанные CommonModule.ИнтерфейсыСообщенийВМоделиСервисаСтандартныеПодсистемы InformationRegister.ОбластиДанных + XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5 Subsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ВалютыВМоделиСервиса/ВалютыВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ВалютыВМоделиСервиса/ВалютыВМоделиСервиса.mdo index bc02b89b5..8e2be4368 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ВалютыВМоделиСервиса/ВалютыВМоделиСервиса.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ВалютыВМоделиСервиса/ВалютыВМоделиСервиса.mdo @@ -6,8 +6,6 @@ Валюты в модели сервиса true - InformationRegister.УдалитьКурсыВалютПоКлассификатору - Catalog.УдалитьКлассификаторВалют CommonModule.КурсыВалютСлужебныйВМоделиСервиса CommonCommand.ЗагрузитьКурсыВалют XDTOPackage.CurrencyRates diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ДополнительныеОтчетыИОбработкиВМоделиСервиса/ДополнительныеОтчетыИОбработкиВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ДополнительныеОтчетыИОбработкиВМоделиСервиса/ДополнительныеОтчетыИОбработкиВМоделиСервиса.mdo index 8e7745d82..d03eae18a 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ДополнительныеОтчетыИОбработкиВМоделиСервиса/ДополнительныеОтчетыИОбработкиВМоделиСервиса.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ДополнительныеОтчетыИОбработкиВМоделиСервиса/ДополнительныеОтчетыИОбработкиВМоделиСервиса.mdo @@ -27,5 +27,12 @@ CommonModule.ДополнительныеОтчетыИОбработкиВМоделиСервисаМанифестИнтерфейс CommonModule.ДополнительныеОтчетыИОбработкиВБезопасномРежимеСлужебныйВМоделиСервиса FunctionalOption.НезависимоеИспользованиеДополнительныхОтчетовИОбработокВМоделиСервиса + CommonModule.СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс + CommonModule.СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1 + CommonModule.СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс + CommonModule.СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1 + CommonModule.СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация + XDTOPackage.ApplicationExtensionsControl_1_0_1_1 + XDTOPackage.ApplicationExtensionsManagement_1_0_1_1 Subsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменДаннымиВМоделиСервиса/ОбменДаннымиВМоделиСервиса.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменДаннымиВМоделиСервиса/ОбменДаннымиВМоделиСервиса.mdo index d42d3e2c4..c211dc4b0 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменДаннымиВМоделиСервиса/ОбменДаннымиВМоделиСервиса.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ОбменДаннымиВМоделиСервиса/ОбменДаннымиВМоделиСервиса.mdo @@ -8,7 +8,6 @@ CommonModule.СообщенияОбменаДаннымиОбработчикСообщения WebService.RemoteAdministrationOfExchange Constant.ЗарегистрированыИзмененияДанных - Constant.АдресВебСервисаОбменаДанными CommonModule.ОбменДаннымиВМоделиСервиса CommonModule.ОбменДаннымиВМоделиСервисаПовтИсп FunctionalOption.ЗарегистрированыИзмененияДанных @@ -31,7 +30,6 @@ Constant.НастройкаАвтономногоРабочегоМестаЗавершена EventSubscription.ОтключитьАвтоматическуюСинхронизациюДанныхСПриложениемВИнтернете CommonModule.АвтономнаяРаботаСлужебныйВызовСервера - CommonForm.ПарольДляСинхронизацииДанных FunctionalOption.ИспользоватьАвтономнуюРаботуВМоделиСервиса XDTOPackage.АдминистрированиеОбменаДаннымиУправление XDTOPackage.АдминистрированиеОбменаДаннымиКонтроль diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПоставляемыеДанные/ПоставляемыеДанные.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПоставляемыеДанные/ПоставляемыеДанные.mdo index ced8dfb9e..ce2028ab2 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПоставляемыеДанные/ПоставляемыеДанные.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/ПоставляемыеДанные/ПоставляемыеДанные.mdo @@ -6,8 +6,6 @@ Поставляемые данные true - InformationRegister.УдалитьСвязиПоставляемыхДанных - Enum.УдалитьВидыПоставляемыхДанных CommonModule.ПоставляемыеДанные CommonModule.ПоставляемыеДанныеПереопределяемый XDTOPackage.SuppliedData diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/РезервноеКопированиеОбластейДанных/РезервноеКопированиеОбластейДанных.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/РезервноеКопированиеОбластейДанных/РезервноеКопированиеОбластейДанных.mdo index dac5e9825..455920117 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/РезервноеКопированиеОбластейДанных/РезервноеКопированиеОбластейДанных.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/РезервноеКопированиеОбластейДанных/РезервноеКопированиеОбластейДанных.mdo @@ -7,7 +7,6 @@ true CommonModule.РезервноеКопированиеОбластейДанныхПовтИсп - CommonForm.НастройкиРезервногоКопированияПриложений CommonCommand.СоздатьРезервнуюКопию CommonForm.СозданиеРезервнойКопии CommonModule.РезервноеКопированиеОбластейДанных @@ -21,5 +20,13 @@ CommonModule.СообщенияУправлениеРезервнымКопированиемИнтерфейс CommonModule.СообщенияУправлениеРезервнымКопированиемРеализация Constant.ВыполнитьРезервноеКопированиеОбластиДанных + Constant.ДатаПоследнегоСтартаКлиентскогоСеанса + CommonModule.РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс + CommonModule.РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис + DataProcessor.НастройкаРезервногоКопированияПриложения + XDTOPackage.УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1 + XDTOPackage.КонтрольРезервногоКопированияОбластейДанных_1_0_3_1 + CommonModule.СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1 + CommonModule.СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1 Subsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УдаленноеАдминистрирование/УдаленноеАдминистрирование.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УдаленноеАдминистрирование/УдаленноеАдминистрирование.mdo index df4fe3c4d..807af5d40 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УдаленноеАдминистрирование/УдаленноеАдминистрирование.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаВМоделиСервиса/Subsystems/УдаленноеАдминистрирование/УдаленноеАдминистрирование.mdo @@ -23,5 +23,8 @@ CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4 XDTOPackage.КонтрольУдаленногоАдминистрирования_1_0_2_3 CommonModule.СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_3 + CommonModule.СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4 + CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5 + XDTOPackage.КонтрольУдаленногоАдминистрирования_1_0_2_5 Subsystem.СтандартныеПодсистемы.Subsystem.РаботаВМоделиСервиса diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/Help/ru.html index a4e94675d..54ca338b0 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСПочтовымиСообщениями/Help/ru.html @@ -1,2 +1,2 @@ - +

                        Конфигурация позволяет отправлять и получать сообщения электронной почты. Для настройки параметров учетных записей электронной почты можно воспользоваться командой Учетные записи электронной почты в панели навигации раздела Настройка и администрирование.

                        \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСФайлами/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСФайлами/Help/ru.html index ae872d42b..3edecea16 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСФайлами/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РаботаСФайлами/Help/ru.html @@ -1,4 +1,4 @@ - +

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

                        Администрирование файлов осуществляется в форме настроек параметров системы раздела Настройка и администрирование. Персональные настройки пользователя для работы с файлами находятся в форме Мои настройки этого же раздела.

                        См. также

                        diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РегламентныеЗадания/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РегламентныеЗадания/Help/ru.html index 40f9ffea5..4133789ae 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РегламентныеЗадания/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/РегламентныеЗадания/Help/ru.html @@ -1,2 +1,2 @@ - +

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

                        \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Help/ru.html index a5b814ede..b1148f0cc 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/Свойства/Help/ru.html @@ -1,3 +1,3 @@ - +

                        Конфигурация позволяет создавать и редактировать в режиме «1С:Предприятие» дополнительные свойства произвольных документов и справочников. Имеется возможность назначать наборы дополнительных свойств как в целом для всех элементов справочника, так и для части его элементов по определенным критериям.

                        Администрирование наборов дополнительных свойств осуществляется по команде Наборы дополнительных реквизитов и сведений на панели навигации в разделе Настройка и администрирование.

                        \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/СтруктураПодчиненности/СтруктураПодчиненности.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/СтруктураПодчиненности/СтруктураПодчиненности.mdo index e647afd29..af15f39eb 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/СтруктураПодчиненности/СтруктураПодчиненности.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/СтруктураПодчиненности/СтруктураПодчиненности.mdo @@ -35,6 +35,5 @@ CommonPicture.ДокументЗаписанКоннекторЛевоВерх CommonModule.СтруктураПодчиненностиПереопределяемый Role.ИспользованиеСтруктурыПодчиненности - CommonModule.СтруктураПодчиненности Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/Help/ru.html index c41cf5b37..ff513a8b7 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеДоступом/Help/ru.html @@ -1,2 +1,2 @@ - +

                        Конфигурация позволяет настраивать права доступа к отдельным объектам информационной базы для пользователей и групп пользователей. Для этих целей предназначена команда Группы доступа в панели навигации раздела Настройка и администрирование.

                        \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеИтогамиИАгрегатами/Help/ru.html b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеИтогамиИАгрегатами/Help/ru.html index 359dde0a9..b4f2f5b81 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеИтогамиИАгрегатами/Help/ru.html +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/УправлениеИтогамиИАгрегатами/Help/ru.html @@ -1,2 +1,2 @@ - +

                        Конфигурация предоставляет средства для администрирования итогов и агрегатов регистров информационной базы. Для этих целей следует воспользоваться командой Управление итогами и агрегатами раздела Настройка и администрирование.

                        \ No newline at end of file diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ФайловыеФункции/ФайловыеФункции.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ФайловыеФункции/ФайловыеФункции.mdo index 9d0b59e5e..69664f8f0 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ФайловыеФункции/ФайловыеФункции.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ФайловыеФункции/ФайловыеФункции.mdo @@ -35,7 +35,6 @@ CommonPicture.РедактироватьФайл CommonPicture.КоллекцияПиктограммФайлов CommonPicture.РабочийКаталогПоУмолчанию - CommonPicture.Скрепка Constant.ЗапрещатьЗагрузкуФайловПоРасширению Constant.СписокЗапрещенныхРасширений StyleItem.ФайлЗанятыйДругимПользователем diff --git a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ФизическиеЛица/ФизическиеЛица.mdo b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ФизическиеЛица/ФизическиеЛица.mdo index 96cbfdf13..952179dde 100644 --- a/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ФизическиеЛица/ФизическиеЛица.mdo +++ b/SSL/src/Subsystems/СтандартныеПодсистемы/Subsystems/ФизическиеЛица/ФизическиеЛица.mdo @@ -17,5 +17,6 @@ Role.ЧтениеФизическихЛиц CommonModule.ФизическиеЛицаКлиент CommonModule.ФизическиеЛицаКлиентСервер + CommonTemplate.КомпонентаСклоненияФИО Subsystem.СтандартныеПодсистемы diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/Дополнительно/Help/ru.html b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/Дополнительно/Help/ru.html index 2288a7c15..7f55e047f 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/Дополнительно/Help/ru.html +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/Дополнительно/Help/ru.html @@ -1,4 +1,4 @@ - +

                        Форма предназначена для просмотра основных реквизитов задачи (редактирование реквизитов в форме недоступно). В форме можно посмотреть реквизиты, общие для всех типов задач, такие как, название задачи, номер и дата создания задачи. В группе реквизитов Адресация можно увидеть исполнителя задачи и его роль, также здесь можно увидеть основной и дополнительный объект адресации.  В группе реквизитов Бизнес-процесс можно увидеть номер и дату бизнес-процеса, к которому принадлежит задача, а также текущую точку маршрута бизнес-процесса. В группе реквизитов Результат выполнения задачи можно увидеть отметку (флажок) о выполнении, а также дату выполнения задачи (реквизиты этой группы заполнены, если задача выполнена).

                        См. также:

                        • Задачи diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоБизнесПроцессу/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоБизнесПроцессу/Attributes/Список/ExtInfo/ListSettings.dcss index 5c43e7b70..07f8e7059 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоБизнесПроцессу/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоБизнесПроцессу/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,17 +1,6 @@ - - DeletionMark - Equal - false - - - false - Executed - Equal - false - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоБизнесПроцессу/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоБизнесПроцессу/Module.bsl index 6875d0e62..df716edbb 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоБизнесПроцессу/Module.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоБизнесПроцессу/Module.bsl @@ -23,7 +23,7 @@ Заголовок = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку( НСтр("ru = 'Задачи бизнес-процесса %1'"), Строка(Параметры.ЗначениеОтбора)); - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); Если ИспользоватьПодчиненныеБизнесПроцессы Тогда ЗаполнитьДеревоЗадач(); @@ -33,7 +33,11 @@ Список,"БизнесПроцесс", Параметры.ЗначениеОтбора); ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Выполнена", Ложь); - КонецЕсли; + КонецЕсли; + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, ВидСравненияКомпоновкиДанных.Равно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); КонецПроцедуры @@ -116,12 +120,12 @@ Если ИспользоватьПодчиненныеБизнесПроцессы Тогда ЗаполнитьДеревоЗадач(); Иначе - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Выполнена"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Выполнена"); Если НЕ ПоказыватьВыполненные Тогда ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Выполнена", Ложь); КонецЕсли; - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); Элементы.Список.Обновить(); КонецЕсли; diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоПредмету/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоПредмету/Attributes/Список/ExtInfo/ListSettings.dcss index 1ab0d6e0e..b01be3d37 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоПредмету/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоПредмету/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,18 +1,6 @@ - - false - DeletionMark - Equal - false - - - false - Executed - Equal - false - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоПредмету/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоПредмету/Module.bsl index eef877652..de536be2b 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоПредмету/Module.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ЗадачиПоПредмету/Module.bsl @@ -27,12 +27,17 @@ Заголовок = НСтр("ru = 'Задачи по предмету'"); ИспользоватьДатуИВремяВСрокахЗадач = ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"); Элементы.СрокИсполнения.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); УстановитьОтбор(Новый Структура("ПоказыватьВыполненные", ПоказыватьВыполненные)); Если ИспользоватьПодчиненныеБизнесПроцессы Тогда ЗаполнитьДеревоЗадач(); - КонецЕсли; + КонецЕсли; + + // Установка отбора динамического списка. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, ВидСравненияКомпоновкиДанных.Равно, , Ложь, + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); КонецПроцедуры @@ -100,12 +105,12 @@ &НаСервере Процедура УстановитьОтбор(ПараметрыОтбора) - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Выполнена"); Если НЕ ПараметрыОтбора["ПоказыватьВыполненные"] Тогда ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Выполнена", Ложь); КонецЕсли; + КонецПроцедуры &НаСервере @@ -127,7 +132,7 @@ Если ИспользоватьПодчиненныеБизнесПроцессы Тогда ЗаполнитьДеревоЗадач(); Иначе - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); Элементы.Список.Обновить(); КонецЕсли; @@ -211,7 +216,7 @@ Если РеквизитГлавнаяЗадача = Неопределено Тогда Продолжить; КонецЕсли; - + Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Attributes/Список/ExtInfo/ListSettings.dcss index c3f284718..508f56fa9 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ - - DeletionMark - Equal - false - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb @@ -26,22 +21,6 @@ 88619765-ccb3-46c6-ac52-38e9c992ebd4 - - - - - ПринятаКИсполнению - Equal - false - - - - - Шрифт - - - - Normal b75fecce-942b-4aed-abc9-e6a02e460fb3 diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Help/ru.html b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Help/ru.html index 282d29c12..ed2a191a3 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Help/ru.html +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Help/ru.html @@ -1,4 +1,4 @@ - +

                          Список Мои задачи является рабочим местом исполнителя задач. В списке находятся задачи адресованные текущему пользователю системы. Командой Сгруппировать по список задач группируется по важности, точке маршрута, автору, предмету задачи.  По пришедшей задаче пользователь может открыть форму выполнения задачи, ознакомиться с постановкой задачи, принять ее к исполнению, выполнить ее и отметить как выполненную или перенаправить другому исполнителю. Непринятые к исполнению задачи выделяются в списке жирным шрифтом. Для того чтобы отказаться от исполнения ранее принятой задачи, необходимо воспользоваться командой Отменить принятие к исполнению (в контекстном меню списка задач или в группе команд Все действия).

                          См. также:

                          \ No newline at end of file diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Module.bsl index 7e56ac602..d6c6d6901 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Module.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачи/Module.bsl @@ -12,15 +12,19 @@ Список.Параметры.УстановитьЗначениеПараметра("НезаполненнаяДата", Дата(1,1,1)); ПараметрыОтбора = Новый Соответствие(); - ПараметрыОтбора.Вставить("ПоказыватьВыполненные", ПоказыватьВыполненные); - УстановитьОтбор(ПараметрыОтбора); + ПараметрыОтбора.Вставить("ПоказыватьВыполненные", ПоказыватьВыполненные); + УстановитьОтбор(ПараметрыОтбора); ИспользоватьДатуИВремяВСрокахЗадач = ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"); Элементы.СрокИсполнения.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); Элементы.ДатаНачала.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); Элементы.Дата.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); + + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, ВидСравненияКомпоновкиДанных.Равно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); КонецПроцедуры @@ -114,22 +118,22 @@ // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ &НаКлиенте -Процедура СгруппироватьПоКолонке(Знач ИмяКолонкиРевизита) - РежимГруппировки = ИмяКолонкиРевизита; +Процедура СгруппироватьПоКолонке(Знач ИмяКолонкиРеквизита) + РежимГруппировки = ИмяКолонкиРеквизита; Если НЕ ПустаяСтрока(РежимГруппировки) Тогда ПоказыватьВыполненные = Ложь; УстановитьОтборНаКлиенте(); КонецЕсли; Список.Группировка.Элементы.Очистить(); - Если НЕ ПустаяСтрока(ИмяКолонкиРевизита) Тогда + Если НЕ ПустаяСтрока(ИмяКолонкиРеквизита) Тогда ПолеГруппировки = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); - ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонкиРевизита); + ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонкиРеквизита); КонецЕсли; КонецПроцедуры &НаСервере -Процедура СгруппироватьПоКолонкеНаСервере(Знач ИмяКолонкиРевизита) - РежимГруппировки = ИмяКолонкиРевизита; +Процедура СгруппироватьПоКолонкеНаСервере(Знач ИмяКолонкиРеквизита) + РежимГруппировки = ИмяКолонкиРеквизита; Если НЕ ПустаяСтрока(РежимГруппировки) Тогда ПоказыватьВыполненные = Ложь; ПараметрыОтбора = Новый Соответствие(); @@ -137,9 +141,9 @@ УстановитьОтбор(ПараметрыОтбора); КонецЕсли; Список.Группировка.Элементы.Очистить(); - Если НЕ ПустаяСтрока(ИмяКолонкиРевизита) Тогда + Если НЕ ПустаяСтрока(ИмяКолонкиРеквизита) Тогда ПолеГруппировки = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); - ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонкиРевизита); + ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонкиРеквизита); КонецЕсли; КонецПроцедуры @@ -155,7 +159,7 @@ &НаСервере Процедура УстановитьОтбор(ПараметрыОтбора) - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Выполнена"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Выполнена"); Если ПараметрыОтбора["ПоказыватьВыполненные"] Тогда СгруппироватьПоКолонкеНаСервере(""); @@ -170,7 +174,7 @@ Процедура ОбновитьСписокЗадачНаСервере() Список.Параметры.УстановитьЗначениеПараметра("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса())); - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); Элементы.Список.Обновить(); КонецПроцедуры diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Attributes/Список/ExtInfo/ListSettings.dcss index c3f284718..508f56fa9 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,11 +1,6 @@ - - DeletionMark - Equal - false - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb @@ -26,22 +21,6 @@ 88619765-ccb3-46c6-ac52-38e9c992ebd4 - - - - - ПринятаКИсполнению - Equal - false - - - - - Шрифт - - - - Normal b75fecce-942b-4aed-abc9-e6a02e460fb3 diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Help/ru.html b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Help/ru.html index 282d29c12..ed2a191a3 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Help/ru.html +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Help/ru.html @@ -1,4 +1,4 @@ - +

                          Список Мои задачи является рабочим местом исполнителя задач. В списке находятся задачи адресованные текущему пользователю системы. Командой Сгруппировать по список задач группируется по важности, точке маршрута, автору, предмету задачи.  По пришедшей задаче пользователь может открыть форму выполнения задачи, ознакомиться с постановкой задачи, принять ее к исполнению, выполнить ее и отметить как выполненную или перенаправить другому исполнителю. Непринятые к исполнению задачи выделяются в списке жирным шрифтом. Для того чтобы отказаться от исполнения ранее принятой задачи, необходимо воспользоваться командой Отменить принятие к исполнению (в контекстном меню списка задач или в группе команд Все действия).

                          См. также:

                          \ No newline at end of file diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Module.bsl index 79952d082..1c8128b63 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Module.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/МоиЗадачиДляРабочегоСтола/Module.bsl @@ -7,6 +7,10 @@ Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа. Возврат; КонецЕсли; + + Если ОбщегоНазначения.ПриСозданииФормыНаСервере(ЭтаФорма, СтандартнаяОбработка, Отказ) Тогда + Возврат; + КонецЕсли; Список.Параметры.УстановитьЗначениеПараметра("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса())); Список.Параметры.УстановитьЗначениеПараметра("НезаполненнаяДата", Дата(1,1,1)); @@ -19,7 +23,12 @@ Элементы.ДатаНачала.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); Элементы.Дата.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); + + // Установка отбора динамического списка. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, ВидСравненияКомпоновкиДанных.Равно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); КонецПроцедуры @@ -110,22 +119,22 @@ // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ &НаКлиенте -Процедура СгруппироватьПоКолонке(Знач ИмяКолонкиРевизита) - РежимГруппировки = ИмяКолонкиРевизита; +Процедура СгруппироватьПоКолонке(Знач ИмяКолонкиРеквизита) + РежимГруппировки = ИмяКолонкиРеквизита; Список.Группировка.Элементы.Очистить(); - Если НЕ ПустаяСтрока(ИмяКолонкиРевизита) Тогда + Если НЕ ПустаяСтрока(ИмяКолонкиРеквизита) Тогда ПолеГруппировки = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); - ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонкиРевизита); + ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонкиРеквизита); КонецЕсли; КонецПроцедуры &НаСервере -Процедура СгруппироватьПоКолонкеНаСервере(Знач ИмяКолонкиРевизита) - РежимГруппировки = ИмяКолонкиРевизита; +Процедура СгруппироватьПоКолонкеНаСервере(Знач ИмяКолонкиРеквизита) + РежимГруппировки = ИмяКолонкиРеквизита; Список.Группировка.Элементы.Очистить(); - Если НЕ ПустаяСтрока(ИмяКолонкиРевизита) Тогда + Если НЕ ПустаяСтрока(ИмяКолонкиРеквизита) Тогда ПолеГруппировки = Список.Группировка.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных")); - ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонкиРевизита); + ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных(ИмяКолонкиРеквизита); КонецЕсли; КонецПроцедуры @@ -133,7 +142,7 @@ Процедура ОбновитьСписокЗадачНаСервере() Список.Параметры.УстановитьЗначениеПараметра("ТекущаяДата", НачалоДня(ТекущаяДатаСеанса())); - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); Элементы.Список.Обновить(); КонецПроцедуры diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Help/ru.html b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Help/ru.html index 601873f7c..223d74cde 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Help/ru.html +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ПеренаправитьЗадачи/Help/ru.html @@ -1,4 +1,4 @@ - +

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

                          См. также

                          • Задачи diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss index 238ccdcfa..4358093bb 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Attributes/Список/ExtInfo/ListSettings.dcss @@ -1,12 +1,6 @@ - - false - DeletionMark - Equal - false - Normal dfcece9d-5077-440b-b6b3-45a5cb4538eb @@ -19,22 +13,6 @@ 88619765-ccb3-46c6-ac52-38e9c992ebd4 - - - - - ПринятаКИсполнению - Equal - false - - - - - Шрифт - - - - Normal b75fecce-942b-4aed-abc9-e6a02e460fb3 diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl index 346a5e22f..b582597d1 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Forms/ФормаСписка/Module.bsl @@ -44,8 +44,13 @@ Элементы.СрокИсполнения.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); Элементы.ДатаИсполнения.Формат = ?(ИспользоватьДатуИВремяВСрокахЗадач, "ДЛФ=DT", "ДЛФ=D"); - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); - + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); + + // Установка отбора динамического списка. + ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( + Список, "ПометкаУдаления", Ложь, ВидСравненияКомпоновкиДанных.Равно, , , + РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ); + КонецПроцедуры &НаКлиенте @@ -161,7 +166,7 @@ Процедура УстановитьОтборСписка(Список, ПараметрыОтбора) Если ПараметрыОтбора["ПоАвтору"].Пустая() Тогда - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Автор"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Автор"); Иначе ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка( Список, "Автор", ПараметрыОтбора["ПоАвтору"]); @@ -173,7 +178,7 @@ Список.Параметры.УстановитьЗначениеПараметра("Исполнитель", ПараметрыОтбора["ПоИсполнителю"]); КонецЕсли; - ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбора(Список.Отбор, "Выполнена"); + ОбщегоНазначенияКлиентСервер.УдалитьЭлементыГруппыОтбораДинамическогоСписка(Список, "Выполнена"); Если ПараметрыОтбора["ПоказыватьЗадачи"] <> 0 Тогда Если ПараметрыОтбора["ПоказыватьЗадачи"] = 1 Тогда @@ -193,7 +198,7 @@ &НаСервере Процедура ОбновитьСписокЗадачНаСервере() - БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список.УсловноеОформление); + БизнесПроцессыИЗадачиСервер.УстановитьОформлениеЗадач(Список); Элементы.Список.Обновить(); КонецПроцедуры diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/Help/ru.html b/SSL/src/Tasks/ЗадачаИсполнителя/Help/ru.html index 682d8a9d2..a3294ca79 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/Help/ru.html +++ b/SSL/src/Tasks/ЗадачаИсполнителя/Help/ru.html @@ -1,4 +1,4 @@ - +

                            Задачи являются средством коммуникации между пользователями, а также используются для автоматизации бизнес-процессов.   

                            Для создания новой задачи можно воспользоваться одним из бизнес-процессов (например, Задание). Для создания задач на основании других объектов системы используйте подменю Создать на основании. При этом объект-основание станет предметом задачи.

                            Настройка уведомлений о задачах

                            diff --git a/SSL/src/Tasks/ЗадачаИсполнителя/ObjectModule.bsl b/SSL/src/Tasks/ЗадачаИсполнителя/ObjectModule.bsl index b28eda059..315b7d99a 100644 --- a/SSL/src/Tasks/ЗадачаИсполнителя/ObjectModule.bsl +++ b/SSL/src/Tasks/ЗадачаИсполнителя/ObjectModule.bsl @@ -47,11 +47,16 @@ Возврат; КонецЕсли; - ЗадачаБылаВыполнена = Ложь; Если НЕ Ссылка.Пустая() Тогда - ЗадачаБылаВыполнена = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Выполнена"); + ИсходныеРеквизиты = ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Ссылка, + "Выполнена, ПометкаУдаления, СостояниеБизнесПроцесса"); + Иначе + ИсходныеРеквизиты = Новый Структура( + "Выполнена, ПометкаУдаления, СостояниеБизнесПроцесса", + Ложь, Ложь, Перечисления.СостоянияБизнесПроцессов.ПустаяСсылка()); КонецЕсли; - Если НЕ ЗадачаБылаВыполнена И Выполнена Тогда + + Если НЕ ИсходныеРеквизиты.Выполнена И Выполнена Тогда Если СостояниеБизнесПроцесса = Перечисления.СостоянияБизнесПроцессов.Остановлен Тогда ВызватьИсключение НСтр("ru = 'Нельзя выполнять задачи остановленных бизнес-процессов.'"); @@ -79,20 +84,12 @@ ПредметСтрокой = ОбщегоНазначения.ПредметСтрокой(Предмет); - ПредыдущаяПометкаУдаления = Ложь; - Если НЕ Ссылка.Пустая() Тогда - ПредыдущаяПометкаУдаления = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "ПометкаУдаления"); - КонецЕсли; - - Если ПредыдущаяПометкаУдаления <> ПометкаУдаления Тогда + Если ИсходныеРеквизиты.ПометкаУдаления <> ПометкаУдаления Тогда БизнесПроцессыИЗадачиСервер.ПриПометкеУдаленияЗадачи(Ссылка, ПометкаУдаления); КонецЕсли; - Если НЕ Ссылка.Пустая() Тогда - ПредыдущееСостояние = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "СостояниеБизнесПроцесса"); - Если ПредыдущееСостояние <> СостояниеБизнесПроцесса Тогда - УстановитьСостояниеПодчиненныхБизнесПроцессов(СостояниеБизнесПроцесса); - КонецЕсли; + Если НЕ Ссылка.Пустая() И ИсходныеРеквизиты.СостояниеБизнесПроцесса <> СостояниеБизнесПроцесса Тогда + УстановитьСостояниеПодчиненныхБизнесПроцессов(СостояниеБизнесПроцесса); КонецЕсли; Если Выполнена И Не ПринятаКИсполнению Тогда diff --git a/SSL/src/WebServices/Exchange/Module.bsl b/SSL/src/WebServices/Exchange/Module.bsl index b352068ff..ed0bbe60e 100644 --- a/SSL/src/WebServices/Exchange/Module.bsl +++ b/SSL/src/WebServices/Exchange/Module.bsl @@ -40,8 +40,7 @@ ИдентификаторФайлаСтрокой, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ) + ДлительнаяОперацияРазрешена) ПроверитьБлокировкуИнформационнойБазыДляОбновления(); @@ -68,8 +67,7 @@ ИдентификаторФайлаСтрокой, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ) + ДлительнаяОперацияРазрешена) ПроверитьБлокировкуИнформационнойБазыДляОбновления(); @@ -147,8 +145,7 @@ ПомощникСозданияОбменаДанными.ВебСервисВыполнитьДействияПоНастройкеНовогоОбменаДанными( Отказ, ЗначениеИзСтрокиВнутр(НастройкаОтборовСтрокой), - ЗначениеИзСтрокиВнутр(ЗначенияПоУмолчаниюСтрокой) - ); + ЗначениеИзСтрокиВнутр(ЗначенияПоУмолчаниюСтрокой)); Если Отказ Тогда Сообщение = НСтр("ru = 'При создании настройки обмена во второй информационной базе возникли ошибки: %1'"); @@ -276,8 +273,7 @@ УдалитьФайлы(ВременныйКаталогВыгрузки(TransferId)); Исключение ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииУдалениеВременногоФайла(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецФункции @@ -315,8 +311,7 @@ Если НайтиФайлы(ИмяФайла).Количество() = 0 Тогда ШаблонСообщения = НСтр("ru = 'Не найден фрагмент %1 сессии передачи с идентификатором %2. |Необходимо убедиться, что в настройках программы заданы параметры - |""Каталог временных файлов для Linux"" и ""Каталог временных файлов для Windows"".'" - ); + |""Каталог временных файлов для Linux"" и ""Каталог временных файлов для Windows"".'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Строка(НомерЧасти), Строка(TransferId)); ВызватьИсключение(ТекстСообщения); КонецЕсли; @@ -336,8 +331,7 @@ УдалитьФайлы(ВременныйКаталог); Исключение ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииУдалениеВременногоФайла(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; ВызватьИсключение(НСтр("ru = 'Файл архива не содержит данных.'")); КонецЕсли; @@ -412,8 +406,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ) + ДлительнаяОперацияРазрешена) Параметры = Новый Массив; Параметры.Добавить(ИмяПланаОбмена); @@ -423,8 +416,7 @@ ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбменДаннымиСервер.ВыполнитьВыгрузкуДляУзлаИнформационнойБазыВСервисПередачиФайлов", Параметры, КлючФоновогоЗаданияВыгрузкиЗагрузкиДанных(ИмяПланаОбмена, КодУзлаИнформационнойБазы), - НСтр("ru = 'Выполнение обмена данными через веб-сервис.'") - ); + НСтр("ru = 'Выполнение обмена данными через веб-сервис.'")); Попытка Таймаут = ?(ДлительнаяОперацияРазрешена, 5, Неопределено); @@ -469,8 +461,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ) + ДлительнаяОперацияРазрешена) Параметры = Новый Массив; Параметры.Добавить(ИмяПланаОбмена); @@ -480,8 +471,7 @@ ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбменДаннымиСервер.ВыполнитьЗагрузкуДляУзлаИнформационнойБазыИзСервисаПередачиФайлов", Параметры, КлючФоновогоЗаданияВыгрузкиЗагрузкиДанных(ИмяПланаОбмена, КодУзлаИнформационнойБазы), - НСтр("ru = 'Выполнение обмена данными через веб-сервис.'") - ); + НСтр("ru = 'Выполнение обмена данными через веб-сервис.'")); Попытка Таймаут = ?(ДлительнаяОперацияРазрешена, 5, Неопределено); diff --git a/SSL/src/WebServices/Exchange_2_0_1_6/Module.bsl b/SSL/src/WebServices/Exchange_2_0_1_6/Module.bsl index b7e62e2da..d2d457703 100644 --- a/SSL/src/WebServices/Exchange_2_0_1_6/Module.bsl +++ b/SSL/src/WebServices/Exchange_2_0_1_6/Module.bsl @@ -40,8 +40,7 @@ ИдентификаторФайлаСтрокой, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ) + ДлительнаяОперацияРазрешена) ПроверитьБлокировкуИнформационнойБазыДляОбновления(); @@ -68,8 +67,7 @@ ИдентификаторФайлаСтрокой, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ) + ДлительнаяОперацияРазрешена) ПроверитьБлокировкуИнформационнойБазыДляОбновления(); @@ -144,8 +142,7 @@ ПомощникСозданияОбменаДанными.ВебСервисВыполнитьДействияПоНастройкеНовогоОбменаДанными( Отказ, СериализаторXDTO.ПрочитатьXDTO(НастройкаОтборовXDTO), - СериализаторXDTO.ПрочитатьXDTO(ЗначенияПоУмолчаниюXDTO) - ); + СериализаторXDTO.ПрочитатьXDTO(ЗначенияПоУмолчаниюXDTO)); Если Отказ Тогда Сообщение = НСтр("ru = 'При создании настройки обмена во второй информационной базе возникли ошибки: %1'"); @@ -271,8 +268,7 @@ УдалитьФайлы(ВременныйКаталогВыгрузки(TransferId)); Исключение ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииУдалениеВременногоФайла(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; КонецФункции @@ -310,8 +306,7 @@ Если НайтиФайлы(ИмяФайла).Количество() = 0 Тогда ШаблонСообщения = НСтр("ru = 'Не найден фрагмент %1 сессии передачи с идентификатором %2. |Необходимо убедиться, что в настройках программы заданы параметры - |""Каталог временных файлов для Linux"" и ""Каталог временных файлов для Windows"".'" - ); + |""Каталог временных файлов для Linux"" и ""Каталог временных файлов для Windows"".'"); ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСообщения, Строка(НомерЧасти), Строка(TransferId)); ВызватьИсключение(ТекстСообщения); КонецЕсли; @@ -331,8 +326,7 @@ УдалитьФайлы(ВременныйКаталог); Исключение ЗаписьЖурналаРегистрации(ОбменДаннымиСервер.СобытиеЖурналаРегистрацииУдалениеВременногоФайла(), - УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()) - ); + УровеньЖурналаРегистрации.Ошибка,,, ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); КонецПопытки; ВызватьИсключение(НСтр("ru = 'Файл архива не содержит данных.'")); КонецЕсли; @@ -442,8 +436,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ) + ДлительнаяОперацияРазрешена) Параметры = Новый Массив; Параметры.Добавить(ИмяПланаОбмена); @@ -453,8 +446,7 @@ ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбменДаннымиСервер.ВыполнитьВыгрузкуДляУзлаИнформационнойБазыВСервисПередачиФайлов", Параметры, КлючФоновогоЗаданияВыгрузкиЗагрузкиДанных(ИмяПланаОбмена, КодУзлаИнформационнойБазы), - НСтр("ru = 'Выполнение обмена данными через веб-сервис.'") - ); + НСтр("ru = 'Выполнение обмена данными через веб-сервис.'")); Попытка Таймаут = ?(ДлительнаяОперацияРазрешена, 5, Неопределено); @@ -499,8 +491,7 @@ ИдентификаторФайла, ДлительнаяОперация, ИдентификаторОперации, - ДлительнаяОперацияРазрешена - ) + ДлительнаяОперацияРазрешена) Параметры = Новый Массив; Параметры.Добавить(ИмяПланаОбмена); @@ -510,8 +501,7 @@ ФоновоеЗадание = ФоновыеЗадания.Выполнить("ОбменДаннымиСервер.ВыполнитьЗагрузкуДляУзлаИнформационнойБазыИзСервисаПередачиФайлов", Параметры, КлючФоновогоЗаданияВыгрузкиЗагрузкиДанных(ИмяПланаОбмена, КодУзлаИнформационнойБазы), - НСтр("ru = 'Выполнение обмена данными через веб-сервис.'") - ); + НСтр("ru = 'Выполнение обмена данными через веб-сервис.'")); Попытка Таймаут = ?(ДлительнаяОперацияРазрешена, 5, Неопределено); diff --git a/SSL/src/WebServices/MessageExchange/Module.bsl b/SSL/src/WebServices/MessageExchange/Module.bsl index 9552bc7a7..8925cd029 100644 --- a/SSL/src/WebServices/MessageExchange/Module.bsl +++ b/SSL/src/WebServices/MessageExchange/Module.bsl @@ -26,8 +26,7 @@ Отправитель, ПотокХранилище.Получить(), ЗагруженныеСообщения, - ДанныеПрочитаныЧастично - ); + ДанныеПрочитаныЧастично); // Обрабатываем очередь сообщений Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда @@ -65,8 +64,7 @@ ЭтотУзелОбъект.Код = Строка(Новый УникальныйИдентификатор()); ЭтотУзелОбъект.Наименование = ?(ПустаяСтрока(НаименованиеЭтойКонечнойТочки), ОбменСообщениямиВнутренний.НаименованиеЭтогоУзлаПоУмолчанию(), - НаименованиеЭтойКонечнойТочки - ); + НаименованиеЭтойКонечнойТочки); ЭтотУзелОбъект.Записать(); ИначеЕсли ПустаяСтрока(ОбменСообщениямиВнутренний.НаименованиеЭтогоУзла()) Тогда @@ -74,8 +72,7 @@ ЭтотУзелОбъект = ОбменСообщениямиВнутренний.ЭтотУзел().ПолучитьОбъект(); ЭтотУзелОбъект.Наименование = ?(ПустаяСтрока(НаименованиеЭтойКонечнойТочки), ОбменСообщениямиВнутренний.НаименованиеЭтогоУзлаПоУмолчанию(), - НаименованиеЭтойКонечнойТочки - ); + НаименованиеЭтойКонечнойТочки); ЭтотУзелОбъект.Записать(); КонецЕсли; diff --git a/SSL/src/WebServices/MessageExchange_2_0_1_6/Module.bsl b/SSL/src/WebServices/MessageExchange_2_0_1_6/Module.bsl index 1ee7865b4..c4ce5700d 100644 --- a/SSL/src/WebServices/MessageExchange_2_0_1_6/Module.bsl +++ b/SSL/src/WebServices/MessageExchange_2_0_1_6/Module.bsl @@ -26,8 +26,7 @@ Отправитель, ПотокХранилище.Получить(), ЗагруженныеСообщения, - ДанныеПрочитаныЧастично - ); + ДанныеПрочитаныЧастично); // Обрабатываем очередь сообщений Если ОбщегоНазначения.ИнформационнаяБазаФайловая() Тогда @@ -65,8 +64,7 @@ ЭтотУзелОбъект.Код = Строка(Новый УникальныйИдентификатор()); ЭтотУзелОбъект.Наименование = ?(ПустаяСтрока(НаименованиеЭтойКонечнойТочки), ОбменСообщениямиВнутренний.НаименованиеЭтогоУзлаПоУмолчанию(), - НаименованиеЭтойКонечнойТочки - ); + НаименованиеЭтойКонечнойТочки); ЭтотУзелОбъект.Записать(); ИначеЕсли ПустаяСтрока(ОбменСообщениямиВнутренний.НаименованиеЭтогоУзла()) Тогда @@ -74,8 +72,7 @@ ЭтотУзелОбъект = ОбменСообщениямиВнутренний.ЭтотУзел().ПолучитьОбъект(); ЭтотУзелОбъект.Наименование = ?(ПустаяСтрока(НаименованиеЭтойКонечнойТочки), ОбменСообщениямиВнутренний.НаименованиеЭтогоУзлаПоУмолчанию(), - НаименованиеЭтойКонечнойТочки - ); + НаименованиеЭтойКонечнойТочки); ЭтотУзелОбъект.Записать(); КонецЕсли; @@ -98,8 +95,7 @@ Отказ, Код, Наименование, - СериализаторXDTO.ПрочитатьXDTO(НастройкиПодключенияПолучателяXDTO) - ); + СериализаторXDTO.ПрочитатьXDTO(НастройкиПодключенияПолучателяXDTO)); Возврат Не Отказ; КонецФункции diff --git a/SSL/src/WebServices/RemoteAdministrationOfExchange/Module.bsl b/SSL/src/WebServices/RemoteAdministrationOfExchange/Module.bsl index 647462826..e61119a94 100644 --- a/SSL/src/WebServices/RemoteAdministrationOfExchange/Module.bsl +++ b/SSL/src/WebServices/RemoteAdministrationOfExchange/Module.bsl @@ -8,8 +8,7 @@ Функция ПолучитьПланыОбменаКонфигурации() Возврат СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок( - ОбменДаннымиВМоделиСервисаПовтИсп.ПланыОбменаСинхронизацииДанных() - ); + ОбменДаннымиВМоделиСервисаПовтИсп.ПланыОбменаСинхронизацииДанных()); КонецФункции // Соответствует операции PrepareExchangeExecution @@ -118,8 +117,7 @@ ОбменДаннымиСервер.ПроверитьПодключениеОбработкиТранспортаСообщенийОбмена(Отказ, ЗначениеИзСтрокиВнутр(СтруктураНастроекСтрокой), Перечисления.ВидыТранспортаСообщенийОбмена[ВидТранспортаСтрокой], - СообщениеОбОшибке - ); + СообщениеОбОшибке); Если Отказ Тогда Возврат Ложь; diff --git a/SSL/src/WebServices/RemoteAdministrationOfExchange_2_0_1_6/Module.bsl b/SSL/src/WebServices/RemoteAdministrationOfExchange_2_0_1_6/Module.bsl index 3992da713..fd00dd1b7 100644 --- a/SSL/src/WebServices/RemoteAdministrationOfExchange_2_0_1_6/Module.bsl +++ b/SSL/src/WebServices/RemoteAdministrationOfExchange_2_0_1_6/Module.bsl @@ -8,8 +8,7 @@ Функция ПолучитьПланыОбменаКонфигурации() Возврат СтроковыеФункцииКлиентСервер.ПолучитьСтрокуИзМассиваПодстрок( - ОбменДаннымиВМоделиСервисаПовтИсп.ПланыОбменаСинхронизацииДанных() - ); + ОбменДаннымиВМоделиСервисаПовтИсп.ПланыОбменаСинхронизацииДанных()); КонецФункции // Соответствует операции PrepareExchangeExecution @@ -62,8 +61,7 @@ ФоновыеЗадания.Выполнить("ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВПервойИнформационнойБазеИзНеразделенногоСеанса", Параметры, - Ключ - ); + Ключ); Возврат ""; КонецФункции @@ -84,8 +82,7 @@ ФоновыеЗадания.Выполнить("ОбменДаннымиВМоделиСервиса.ВыполнитьДействиеСценарияОбменаДаннымиВоВторойИнформационнойБазеИзНеразделенногоСеанса", Параметры, - Ключ - ); + Ключ); Возврат ""; КонецФункции @@ -99,8 +96,7 @@ ОбменДаннымиСервер.ПроверитьПодключениеОбработкиТранспортаСообщенийОбмена(Отказ, СериализаторXDTO.ПрочитатьXDTO(СтруктураНастроекXDTO), Перечисления.ВидыТранспортаСообщенийОбмена[ВидТранспортаСтрокой], - СообщениеОбОшибке - ); + СообщениеОбОшибке); Если Отказ Тогда Возврат Ложь; diff --git a/SSL/src/XDTOPackages/ApplicationExtensionsControl_1_0_1_1/ApplicationExtensionsControl_1_0_1_1.mdo b/SSL/src/XDTOPackages/ApplicationExtensionsControl_1_0_1_1/ApplicationExtensionsControl_1_0_1_1.mdo new file mode 100644 index 000000000..27417ac43 --- /dev/null +++ b/SSL/src/XDTOPackages/ApplicationExtensionsControl_1_0_1_1/ApplicationExtensionsControl_1_0_1_1.mdo @@ -0,0 +1,9 @@ + + + ApplicationExtensionsControl_1_0_1_1 + + ru + Application extensions control 1 0 1 1 + + http://www.1c.ru/1cFresh/ApplicationExtensions/Control/1.0.1.1 + diff --git a/SSL/src/XDTOPackages/ApplicationExtensionsControl_1_0_1_1/Package.xdto b/SSL/src/XDTOPackages/ApplicationExtensionsControl_1_0_1_1/Package.xdto new file mode 100644 index 000000000..3acfccc26 --- /dev/null +++ b/SSL/src/XDTOPackages/ApplicationExtensionsControl_1_0_1_1/Package.xdto @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SSL/src/XDTOPackages/ApplicationExtensionsManagement_1_0_1_1/ApplicationExtensionsManagement_1_0_1_1.mdo b/SSL/src/XDTOPackages/ApplicationExtensionsManagement_1_0_1_1/ApplicationExtensionsManagement_1_0_1_1.mdo new file mode 100644 index 000000000..6ce4984cd --- /dev/null +++ b/SSL/src/XDTOPackages/ApplicationExtensionsManagement_1_0_1_1/ApplicationExtensionsManagement_1_0_1_1.mdo @@ -0,0 +1,9 @@ + + + ApplicationExtensionsManagement_1_0_1_1 + + ru + Application extensions management 1 0 1 1 + + http://www.1c.ru/1cFresh/ApplicationExtensions/Management/1.0.1.1 + diff --git a/SSL/src/XDTOPackages/ApplicationExtensionsManagement_1_0_1_1/Package.xdto b/SSL/src/XDTOPackages/ApplicationExtensionsManagement_1_0_1_1/Package.xdto new file mode 100644 index 000000000..7d26a94d7 --- /dev/null +++ b/SSL/src/XDTOPackages/ApplicationExtensionsManagement_1_0_1_1/Package.xdto @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SSL/src/XDTOPackages/MessageInfoCenter_1_0_1_1/MessageInfoCenter_1_0_1_1.mdo b/SSL/src/XDTOPackages/MessageInfoCenter_1_0_1_1/MessageInfoCenter_1_0_1_1.mdo new file mode 100644 index 000000000..0df81431f --- /dev/null +++ b/SSL/src/XDTOPackages/MessageInfoCenter_1_0_1_1/MessageInfoCenter_1_0_1_1.mdo @@ -0,0 +1,9 @@ + + + MessageInfoCenter_1_0_1_1 + + ru + Message info center 1 0 1 1 + + http://www.1c.ru/SaaS/1.0/XMLSchema/ManageInfoCenter/Messages/1.0.1.1 + diff --git a/SSL/src/XDTOPackages/MessageInfoCenter_1_0_1_1/Package.xdto b/SSL/src/XDTOPackages/MessageInfoCenter_1_0_1_1/Package.xdto new file mode 100644 index 000000000..8e5c85363 --- /dev/null +++ b/SSL/src/XDTOPackages/MessageInfoCenter_1_0_1_1/Package.xdto @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/SSL/src/XDTOPackages/КонтрольРезервногоКопированияОбластейДанных_1_0_3_1/Package.xdto b/SSL/src/XDTOPackages/КонтрольРезервногоКопированияОбластейДанных_1_0_3_1/Package.xdto new file mode 100644 index 000000000..a75f135a5 --- /dev/null +++ b/SSL/src/XDTOPackages/КонтрольРезервногоКопированияОбластейДанных_1_0_3_1/Package.xdto @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SSL/src/XDTOPackages/КонтрольРезервногоКопированияОбластейДанных_1_0_3_1/КонтрольРезервногоКопированияОбластейДанных_1_0_3_1.mdo b/SSL/src/XDTOPackages/КонтрольРезервногоКопированияОбластейДанных_1_0_3_1/КонтрольРезервногоКопированияОбластейДанных_1_0_3_1.mdo new file mode 100644 index 000000000..81c166110 --- /dev/null +++ b/SSL/src/XDTOPackages/КонтрольРезервногоКопированияОбластейДанных_1_0_3_1/КонтрольРезервногоКопированияОбластейДанных_1_0_3_1.mdo @@ -0,0 +1,9 @@ + + + КонтрольРезервногоКопированияОбластейДанных_1_0_3_1 + + ru + Контроль резервного копирования областей данных 1.0.3.1 + + http://www.1c.ru/SaaS/ControlZonesBackup/1.0.3.1 + diff --git a/SSL/src/XDTOPackages/КонтрольУдаленногоАдминистрирования_1_0_2_5/Package.xdto b/SSL/src/XDTOPackages/КонтрольУдаленногоАдминистрирования_1_0_2_5/Package.xdto new file mode 100644 index 000000000..068d2d455 --- /dev/null +++ b/SSL/src/XDTOPackages/КонтрольУдаленногоАдминистрирования_1_0_2_5/Package.xdto @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/SSL/src/XDTOPackages/КонтрольУдаленногоАдминистрирования_1_0_2_5/КонтрольУдаленногоАдминистрирования_1_0_2_5.mdo b/SSL/src/XDTOPackages/КонтрольУдаленногоАдминистрирования_1_0_2_5/КонтрольУдаленногоАдминистрирования_1_0_2_5.mdo new file mode 100644 index 000000000..ca506481d --- /dev/null +++ b/SSL/src/XDTOPackages/КонтрольУдаленногоАдминистрирования_1_0_2_5/КонтрольУдаленногоАдминистрирования_1_0_2_5.mdo @@ -0,0 +1,9 @@ + + + КонтрольУдаленногоАдминистрирования_1_0_2_5 + + ru + Контроль удаленного администрирования 1.0.2.4 + + http://www.1c.ru/1cFresh/RemoteAdministration/Control/1.0.2.5 + diff --git a/SSL/src/XDTOPackages/УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5/Package.xdto b/SSL/src/XDTOPackages/УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5/Package.xdto new file mode 100644 index 000000000..c45d3851c --- /dev/null +++ b/SSL/src/XDTOPackages/УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5/Package.xdto @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SSL/src/XDTOPackages/УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5/УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5.mdo b/SSL/src/XDTOPackages/УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5/УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5.mdo new file mode 100644 index 000000000..4fc803c04 --- /dev/null +++ b/SSL/src/XDTOPackages/УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5/УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5.mdo @@ -0,0 +1,9 @@ + + + УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5 + + ru + Удаленное администрирование в модели сервиса 1.0.3.4 + + http://www.1c.ru/1cFresh/RemoteAdministration/App/1.0.3.5 + diff --git a/SSL/src/XDTOPackages/УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1/Package.xdto b/SSL/src/XDTOPackages/УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1/Package.xdto new file mode 100644 index 000000000..b96e9857e --- /dev/null +++ b/SSL/src/XDTOPackages/УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1/Package.xdto @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SSL/src/XDTOPackages/УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1/УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1.mdo b/SSL/src/XDTOPackages/УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1/УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1.mdo new file mode 100644 index 000000000..ee37c25cf --- /dev/null +++ b/SSL/src/XDTOPackages/УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1/УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1.mdo @@ -0,0 +1,9 @@ + + + УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1 + + ru + Управление резервным копированием областей данных 1.0.3.1 + + http://www.1c.ru/SaaS/ManageZonesBackup/1.0.3.1 +
            Отбор Описание
            По состоянию