\ 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 @@
-
+
Общероссийский классификатор валют содержит общую информацию о валютах и предназначен для добавления новых валют.
Редактирование, открытие и выбор вариантов отчетов.
В левой части формы расположено дерево разделов и групп командного интерфейса. Перемещаясь по узлам дерева, список "Варианты отчетов" автоматически фильтруется по выбранному разделу или группе. Варианты отчетов можно перемещать из текущего раздела/группы в другие при помощи перетаскивания. Если при перетаскивании зажать клавишу Ctrl, то вариант отчета будет добавлен в новую группу, а также останется в текущей группе.
Чтобы быстро найти нужный вариант отчета в списке "Варианты отчетов" также можно применять быстрые отборы по Наименованию и Автору. Для этого нужно указать искомые значения в соответствующих полях, расположенных над списком.
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 @@
-
- DeletionMark
- Equal
- false
- Normaldfcece9d-5077-440b-b6b3-45a5cb4538eb
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 @@
Lefttrue
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+ 70LockOwnertrue
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 @@
RightCustomizeForm
- DontBlock
+ LockOwnertruetrueVertical
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 @@
-
-
- ПометкаУдаления
- Equal
- false
- Normaldfcece9d-5077-440b-b6b3-45a5cb4538eb
-
-
- ДатаСоздания
- Asc
- Normal88619765-ccb3-46c6-ac52-38e9c992ebd4
-
-
-
-
- ПометкаУдаления
- Equal
- true
-
-
-
-
- ЦветТекста
- web:Gray
-
-
- Normalb75fecce-942b-4aed-abc9-e6a02e460fb3
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 @@
NotificationProcessingОбработкаОповещения
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+ CopyCreateDelete
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 @@
-
-
- DeletionMark
- Equal
- false
- Normaldfcece9d-5077-440b-b6b3-45a5cb4538eb
-
-
- ДатаСоздания
- Asc
- Normal88619765-ccb3-46c6-ac52-38e9c992ebd4
-
-
-
-
- ПометкаУдаления
- Equal
- true
-
-
-
-
- ЦветТекста
- web:Gray
-
-
- Шрифт
-
-
-
- Normalb75fecce-942b-4aed-abc9-e6a02e460fb3
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 @@
Left
+
+ ChoiceProcessing
+ ОбработкаВыбора
+ NotificationProcessingОбработкаОповещения
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 @@
-
+
Для просмотра списка всех версий файла откройте его карточку (F2 или команда "Открыть карточку") и перейдите в раздел "Версии файлов".
В списке версий можно:
открыть файл версии соответствующим приложением для просмотра (команда "Открыть карточку");
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 @@
-
+
Для каждого физического лица можно указать реквизиты документа, удостоверяющего личность. Для указания вида документа и используется этот справочник.
Справочник уже содержит основные документы, удостоверяющие личность, но может быть расширен пользователем.
Конфигурация позволяет хранить следующие типы контактной информации:
Адрес — реквизит с таким типом контактной информации предназначен для хранения адреса в виде произвольной строки или в виде шаблона адреса. Позволяет заполнять адрес, используя адресный классификатор, из формы‑шаблона ввода адреса. Если адрес заполняется с помощью адресного классификатора, то индекс адреса устанавливается из классификатора автоматически, после окончания ввода адреса. Предопределенные фактический и юридический адреса используются в печатных формах документов.
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 @@
-
+
Справочник Виды контактной информации имеет двухуровневую иерархию. Группы справочника соответствуют справочникам-носителям контактной информации, а элементы внутри этих групп определяют состав контактной информации этих справочников. Добавление новых групп в этот справочник запрещено. Поставка конфигурации осуществляется c предопределенными группами и элементами справочника. Для добавления произвольного реквизита в один из этих справочников, необходимо добавить в справочник Виды контактной информации в соответствующую группу новый элемент.
Для редактирования сведений о внешнем ользователе необходимы права администрирования или права ответственного за внешних пользователей. В остальных случаях, доступен только просмотр сведений о себе, а также возможность изменить свой пароль, язык программы и контактную информацию.
Внешний пользователь связан с каким-то объектом программы (например, контрагентом, сотрудником и т.п.), указанным в поле Объект.
Флажок Недействителен по умолчанию снят для всех внешних пользователей. Но если пользователь по каким-либо причинам более не работает с программой, и в то же время его нельзя удалить из-за наличия ссылок на него из других объектов программы, то рекомендуется установить флажок Недействителен. Такого внешнего пользователя нельзя выбрать, и он не отображается в списке внешних пользователей.
В этом списке ведется учет пользователей, которые работают с программой "извне". Их доступ, как правило, сильно ограничен, они не принимают активного участия в процессах учета, работают обособленно, не взаимодействуют между собой.
Основной способ создания и редактирования внешних пользователей через команду Внешний доступ, которая размещается в командной панели формы объектов, например, в карточке контрагента, физического лица. При выполнении команды сразу создается внешний пользователь, связанный с объектом, или открывается существующий внешний пользователь.
В случае большого количества внешних пользователей список может быть сгруппирован, например, по видам отношений с ними: партнеры, контрагенты и т.д. Для того чтобы увидеть всех внешних пользователей, включенных в дочерние группы с учетом иерархии, необходимо установить флажок Показывать внешних пользователей дочерних групп в нижней части списка. Для добавления новых групп внешних пользователей воспользуйтесь командами в левой части списка. Для добавления в группу большого числа внешних пользователей можно открыть форму группы и воспользоваться командой Подобрать. Один и тот же внешний пользователь может одновременно входить в разные группы внешних пользователей.
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 @@
-
-
- ПометкаУдаления
- Equal
- false
-
-
-
- Ссылка
- NotInList
- Справочник.ГруппыВнешнихПользователей.ВсеВнешниеПользователи
- Normaldfcece9d-5077-440b-b6b3-45a5cb4538eb
-
- Предопределенный
- Desc
-
-
- Наименование
- Asc
- Normal88619765-ccb3-46c6-ac52-38e9c992ebd4
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 @@
OnCreateAtServerПриСозданииНаСервере
+ 65DontBlocktruetrue
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 @@
-
+
Карточка группы внешних пользователей позволяет просматривать и редактировать свойства группы.
Для группы пользователей можно установить Тип участников (например, контрагенты). Группа может неявно включать всех внешних пользователей для установленного типа участников. Для этого нужно установить флажок Все.
При редактировании состава пользователей группы нужно учитывать, что они неявно входят в состав групп-родителей. Для добавления большого числа пользователей можно использовать команду Подобрать.
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 @@
-
+
В этом списке ведется учет групп внешних пользователей.
Группы внешних пользователей могут использоваться для группировки большого числа внешних пользователей, а также когда нужно указывать не только внешнего пользователя, но и группу внешних пользователей, например, при настройке доступа.
Группы создаются плоским списком или иерархическим. В иерархическом списке, внешние пользователи вложенных групп неявно входят в группы-родители.
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 @@
RetrySaveValuesYes
- DontBlock
+ LockOwnertruetruetrue
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 @@
+
+
+
+ Список
+ 1
+ true
+ true
+
+ true
+
+
+ Список
+
+ true
+ None
+ Create
+
+ Наименование
+ 4
+ true
+ true
+
+ true
+
+
+ Список.Description
+
+ true
+
+ НаименованиеРасширеннаяПодсказка
+ 16
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НаименованиеКонтекстноеМеню
+ 5
+ true
+
+ LabelField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+
+
+ None
+
+ СписокКоманднаяПанель
+ 3
+ Left
+
+
+ СписокСтрокаПоиска
+ 7
+
+ СписокСтрокаПоискаРасширеннаяПодсказка
+ 9
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокСтрокаПоискаКонтекстноеМеню
+ 8
+ true
+
+ Список
+
+ true
+
+
+
+ СписокСостояниеПросмотра
+ 10
+
+ СписокСостояниеПросмотраРасширеннаяПодсказка
+ 12
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокСостояниеПросмотраКонтекстноеМеню
+ 11
+ true
+
+ ViewStatusAddition
+ Список
+
+ true
+
+
+
+ СписокУправлениеПоиском
+ 13
+
+ СписокУправлениеПоискомРасширеннаяПодсказка
+ 15
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокУправлениеПоискомКонтекстноеМеню
+ 14
+ true
+
+ SearchControlAddition
+ Список
+
+ true
+
+
+
+ СписокРасширеннаяПодсказка
+ 6
+ Label
+ true
+ true
+
+ Left
+
+
+
+ СписокКонтекстноеМеню
+ 2
+ true
+
+ Tree
+ true
+ true
+ true
+ true
+ true
+ true
+ MultiRow
+ 1
+ 1
+ AutoUse
+ AutoUse
+ true
+ true
+ false
+ false
+ false
+ Auto
+ Auto
+ ExpandTopLevel
+ true
+ true
+ true
+ true
+
+ Список.DefaultPicture
+
+ None
+ None
+ None
+ true
+
+ 60
+
+ 0001-01-01T00:00:00
+ 0001-01-01T00:00:00
+
+ Folders
+
+ true
+ true
+ true
+
+
+
+ ФормаКоманднаяПанель
+ -1
+ Left
+ true
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+ Create
+ LockOwner
+ true
+ true
+ true
+ Vertical
+ true
+ true
+ true
+ UseIfNecessary
+ auto
+ true
+
+ Список
+ 1
+
+ DynamicList
+
+
+ true
+
+
+ true
+
+ true
+
+ Catalog.ГруппыДоступа
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+
+
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 @@
Объект.Description
+
+ ru
+ Наименование группы (папки)
+ НаименованиеРасширеннаяПодсказка5
@@ -44,6 +48,10 @@
Родитель3
+
+ ru
+ Вышестоящая группа (папка)
+ truetrue
@@ -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
-
-
-
- ПометкаУдаления
- Equal
- false
- Normaldfcece9d-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 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 @@
UseParent
+
+ ru
+ Группа (папка)
+ ru
- Папка, объединяющая группы доступа для удобства поиска
+ Группа (папка), объединяющая группы доступа для удобства поискаtrue
@@ -134,7 +138,7 @@
Catalog.ГруппыДоступа.Form.ФормаГруппыCatalog.ГруппыДоступа.Form.ФормаСпискаCatalog.ГруппыДоступа.Form.ФормаСписка
- Catalog.ГруппыДоступа.Form.ФормаСписка
+ Catalog.ГруппыДоступа.Form.ФормаВыбораГруппыПрофиль
@@ -239,6 +243,25 @@
UseUse
+
+ ОсновнаяГруппаДоступаПоставляемогоПрофиля
+
+ ru
+ Основная группа доступа поставляемого профиля
+
+
+ Boolean
+
+
+ ru
+ Определяет основную группу доступа поставляемого профиля без видов доступа для программного управления составом пользователей.
+
+
+
+
+ Use
+ Use
+
@@ -436,6 +459,15 @@
PersonalComputerMobileDevice
+
+ ФормаВыбораГруппы
+
+ 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 @@
-
-
- ПометкаУдаления
- Equal
- false
-
-
-
- Ссылка
- NotInList
- Справочник.ГруппыПользователей.ВсеПользователи
- Normaldfcece9d-5077-440b-b6b3-45a5cb4538eb
-
- Предопределенный
- Desc
-
-
- Наименование
- Asc
- Normal88619765-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ПриСозданииНаСервере
+ 65DontBlocktruetrue
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/ДополнительныеОтчетыИОбработки/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
+ LockOwnertruetrueVertical
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
+ LockOwnertruetruetrue
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 @@
Lefttrue
+
+ 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
- Normal88619765-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
- Normal88619765-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
- Normal88619765-ccb3-46c6-ac52-38e9c992ebd4
-
-
-
- Синоним
-
-
- ПолноеИмя
-
-
-
-
- ПометкаБудущегоУдаления
- Equal
- true
-
-
-
-
- ЦветТекста
- web:DarkGray
-
-
- Normalb75fecce-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
+ 25Labeltruetrue
@@ -65,7 +65,7 @@
ПолноеИмяРасширеннаяПодсказка
- 28
+ 27Labeltruetrue
@@ -100,10 +100,10 @@
СписокСтрокаПоиска
- 17
+ 16СписокСтрокаПоискаРасширеннаяПодсказка
- 19
+ 18Labeltruetrue
@@ -113,7 +113,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 18
+ 17trueСписок
@@ -123,10 +123,10 @@
СписокСостояниеПросмотра
- 20
+ 19СписокСостояниеПросмотраРасширеннаяПодсказка
- 22
+ 21Labeltruetrue
@@ -136,7 +136,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 21
+ 20trueViewStatusAddition
@@ -147,10 +147,10 @@
СписокУправлениеПоиском
- 23
+ 22СписокУправлениеПоискомРасширеннаяПодсказка
- 25
+ 24Labeltruetrue
@@ -160,7 +160,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 24
+ 23trueSearchControlAddition
@@ -171,7 +171,7 @@
СписокРасширеннаяПодсказка
- 16
+ 15Labeltruetrue
@@ -224,32 +224,6 @@
ФормаКоманднаяПанель-1
-
- ОбновитьДанныеСправочника
- 10
- true
- true
-
- true
-
-
- ОбновитьДанныеСправочникаРасширеннаяПодсказка
- 15
- Label
- true
- true
-
- Left
-
-
- Form.Command.ОбновитьДанныеСправочника
- Normal
- Auto
- true
- true
- UserCmds
- Auto
- Lefttrue
@@ -292,6 +266,9 @@
Список.Parent
+
+ Список.ПометкаБудущегоУдаления
+ trueВЫБРАТЬ
@@ -341,28 +318,6 @@
true
-
- ОбновитьДанныеСправочника
-
- ru
- Обновить данные справочника
-
- 1
-
- ru
- Обновить данные справочника по метаданным конфигурации
-
-
-
-
- ОбновитьДанныеСправочника
-
-
- 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
- Normaldfcece9d-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 @@
Lefttrue
+
+ 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
+ 28Labeltruetrue
@@ -44,15 +48,6 @@
true1
-
-
- 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
+
+ truetrue
@@ -80,7 +130,7 @@
СтраницаВыборИсточникаРасширеннаяПодсказка
- 25
+ 27Labeltruetrue
@@ -113,7 +163,7 @@
ПредупреждениеОЗагрузкаССайтаРБКРасширеннаяПодсказка
- 29
+ 33Labeltruetrue
@@ -148,7 +198,7 @@
ЗагрузкаССайтаРБКРасширеннаяПодсказка
- 28
+ 32Labeltruetrue
@@ -179,7 +229,7 @@
КартинкаВыполняетсяЗагрузкаРасширеннаяПодсказка
- 31
+ 35Labeltruetrue
@@ -216,7 +266,7 @@
НадписьВыполняетсяЗагрузкаРасширеннаяПодсказка
- 32
+ 36Labeltruetrue
@@ -252,7 +302,7 @@
ВыполняетсяЗагрузкаРасширеннаяПодсказка
- 30
+ 34Labeltruetrue
@@ -282,7 +332,7 @@
ПоясняющийТекстРасширеннаяПодсказка
- 34
+ 38Labeltruetrue
@@ -324,7 +374,7 @@
СтраницаРезультатРасширеннаяПодсказка
- 33
+ 37Labeltruetrue
@@ -353,7 +403,7 @@
СтраницыФормыРасширеннаяПодсказка
- 24
+ 26Labeltruetrue
@@ -381,7 +431,7 @@
ФормаКнопкаНазадРасширеннаяПодсказка
- 20
+ 22Labeltruetrue
@@ -407,7 +457,7 @@
ФормаКнопкаДалееРасширеннаяПодсказка
- 21
+ 23Labeltruetrue
@@ -433,7 +483,7 @@
ФормаКнопкаОтменаРасширеннаяПодсказка
- 22
+ 24Labeltruetrue
@@ -459,7 +509,7 @@
ФормаКнопкаСправкаРасширеннаяПодсказка
- 23
+ 25Labeltruetrue
@@ -481,12 +531,17 @@
OnOpenПриОткрытии
+
+ OnLoadDataFromSettingsAtServer
+ ПриЗагрузкеДанныхИзНастроекНаСервере
+ OnCreateAtServerПриСозданииНаСервере
- 45
+ 55LockOwner
+ UsetruetrueVertical
@@ -513,6 +568,9 @@
true
+
+ ВариантЗагрузки
+ АдресХранилища
@@ -566,6 +624,27 @@
true
+
+ ПутьКДискуИТС
+
+ ru
+ Путь к диску ИТС
+
+ 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 @@
-
+
В классификаторе банков РФ хранятся сведения о банках: БИК, корреспондентский счет, данные о местонахождении, телефоны для связи с сотрудниками, почтовый адрес банка. Эти сведения используются при заполнении реквизитов банковских счетов и в других объектах программы.
По команде Загрузить классификатор можно обновить сведения о банках с сайта РБК или из поставляемого на диске 1С:ИТС "Общероссийского классификатора банков" (ОКБ).
Также можно настроить обновление классификатора с сайта РБК автоматически по расписанию с помощью регламентного задания Загрузка классификатора банков РФ с сайта РБК.
Администратор системы может настроить наборы дополнительных свойств для определенных объектов системы. Способ хранения дополнительного свойства в информационной базе и место размещения на форме объекта зависит от типа свойства: дополнительный реквизит или сведение.
Предопределенные наборы и группы наборов соответствуют объектам конфигурации, в которых можно использовать дополнительные реквизиты и сведения. Добавление новых наборов и групп наборов невозможно.
В форме набора с помощью команды Подбор можно добавить объекту новый дополнительный реквизит или сведение.
При записи пользователя (или внешнего пользователя) с установленным флажком Доступ к информационной базе разрешен, вместе с ним автоматически создается соответствующий ему новый (или модифицируется существующий) пользователь ИБ. И наоборот, когда пользователь (или внешний пользователь) записывается со снятым флажком Доступ к информационной базе разрешен, то соответствующий ему пользователь ИБ автоматически удаляется из списка пользователей ИБ. Однако есть ряд ситуаций, когда список пользователей ИБ становится рассинхронизированным со списком пользователей. Тогда с помощью данного списка могут быть решены следующие задачи:
Найти "некорректных" пользователей ИБ и синхронизировать списки пользователей ИБ и пользователей между собой:
если пользователь ИБ был добавлен с помощью конфигуратора (или каким-либо нештатным программным способом), предлагается удалить такого пользователя ИБ;
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 @@
Yes5420
- DontBlock
+ LockOwnertruetruetrue
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 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 @@
-
+
В этом списке ведется учет пользователей, которые работают с программой.
В случае большого количества пользователей список может быть сгруппирован. Например, группы пользователей можно использовать для ведения структуры подразделений компании. Для того чтобы увидеть всех пользователей, включенных в дочерние группы с учетом иерархии, необходимо установить флажок Показывать пользователей дочерних групп в нижней части списка. Для добавления новых групп пользователей воспользуйтесь командами в левой части списка. Для добавления в группу большого числа пользователей можно открыть форму группы и воспользоваться командой Подобрать. Один и тот же пользователь может одновременно входить в разные группы пользователей.
Для ведения списка пользователей требуются права администрирования. Остальным пользователям доступен только просмотр сведений о себе, а также изменение ряда свойств, таких как: пароль, язык программы и контактная информация.
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 @@
Объект.Description
+
+ OnChange
+ НаименованиеПриИзменении
+ НаименованиеРасширеннаяПодсказка15
@@ -32,10 +36,6 @@
Lefttrue
-
- StartListChoice
- НаименованиеНачалоВыбораИзСписка
- truetruetrue
@@ -136,6 +136,10 @@
Lefttrue
+
+ OnChange
+ КомпоновщикНастроекНастройкиОтборПриИзменении
+ КомпоновщикНастроекНастройкиОтборСтрокаПоиска21
@@ -258,6 +262,10 @@
Lefttrue
+
+ OnOpen
+ ПриОткрытии
+ OnCreateAtServerПриСозданииНаСервере
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 @@
Lefttrue
+
+ ChoiceProcessing
+ ОбработкаВыбора
+ OnCreateAtServerПриСозданииНаСервере
@@ -930,7 +934,7 @@
- InformationRegister.УдалитьСвязиПоставляемыхДанных.StandardCommand.OpenByValue.ЭлементОбщихДанных
+ 0
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 @@
-
+
Виды дней производственного календаря выделены разными цветами:
Профилей групп доступа для больших конфигураций может быть много и с похожим назначением, поэтому предусмотрена возможность создавать папки для упрощения поиска нужного профиля и понимания принципов их формирования.
\ 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 @@
UseParent
+
+ 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 @@
PersonalComputerMobileDevice
+
+ ФормаВыбораГруппы
+
+ 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/Сообщение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
+
+ Ключ
+
+ ru
+ Ключ
+
+ 1
+
+ AnyRef
+
+
+ true
+
+
+ true
+
+
+
+ ПерейтиКФормеФайла1
+
+ ru
+ Перейти к форме файла1
+
+ 1
+
+ ru
+ Перейти к форме файла1
+
+
+
+
+ ПерейтиКФормеФайла
+
+
+ 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 @@
Normalb75fecce-942b-4aed-abc9-e6a02e460fb3
-
-
-
- Получатель
- Items
- None
- 0001-01-01T00:00:00
- 0001-01-01T00:00:00
-
-
-
- Отправитель
- 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 @@
Normalb75fecce-942b-4aed-abc9-e6a02e460fb3
-
-
-
- Получатель
- Items
- None
- 0001-01-01T00:00:00
- 0001-01-01T00:00:00
-
-
-
- Отправитель
- 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 @@
+
+
+
+ ru
+ Классификатор стран мира (ОКСМ)
+
+
+ Классификатор
+ 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
+
+
+ ru
+ Классификатор группа поиск
+
+
+ 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
+
+ Классификатор
+
+ ru
+ Классификатор
+
+ 2
+
+ ValueTable
+
+
+ true
+
+
+ true
+
+
+ Классификатор.ИндексПиктограммы
+
+
+ Код
+
+ ru
+ Код
+
+ 1
+
+ String
+
+ 3
+
+
+
+ true
+
+
+ true
+
+
+
+ Наименование
+
+ ru
+ Наименование
+
+ 2
+
+ String
+
+ 60
+
+
+
+ true
+
+
+ true
+
+
+
+ НаименованиеПолное
+
+ ru
+ Наименование полное
+
+ 3
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ КодАльфа2
+
+ ru
+ Код альфа 2
+
+ 4
+
+ String
+
+ 2
+
+
+
+ true
+
+
+ true
+
+
+
+ КодАльфа3
+
+ ru
+ Код альфа 3
+
+ 5
+
+ String
+
+ 3
+
+
+
+ true
+
+
+ true
+
+
+
+ ИндексПиктограммы
+
+ ru
+ Индекс пиктограммы
+
+ 7
+
+ Number
+
+ 2
+
+
+
+ true
+
+
+ true
+
+
+
+
+ ПоляКлассификатора
+
+ ru
+ Поля классификатора
+
+ 3
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ ПредставлениеОбъектаКлассификатора
+
+ ru
+ Представление объекта классификатора
+
+ 4
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ РежимВыбора
+
+ ru
+ Режим выбора
+
+ 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
+
Примечания:
+
Изменение 8/2008 ОКСМ. Принято и введено в действие Приказом Федерального агентства по техническому регулированию и метрологии от 03.12.2008 N 352-ст. Дата введения — 01.01.2009 ↩
+
Указ Президента Российской Федерации от 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 @@
Список
- trueNoneНаименование
@@ -27,7 +26,7 @@
trueНаименованиеРасширеннаяПодсказка
- 24
+ 37Labeltruetrue
@@ -63,7 +62,7 @@
КодРасширеннаяПодсказка
- 26
+ 39Labeltruetrue
@@ -99,7 +98,7 @@
КодАльфа2РасширеннаяПодсказка
- 28
+ 41Labeltruetrue
@@ -135,7 +134,7 @@
КодАльфа3РасширеннаяПодсказка
- 30
+ 43Labeltruetrue
@@ -175,7 +174,7 @@
НаименованиеПолноеРасширеннаяПодсказка
- 32
+ 45Labeltruetrue
@@ -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
+
+
+ ru
+ Команды списка
+
+
+ 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
+ 30Labeltruetrue
@@ -219,7 +390,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 16
+ 29trueСписок
@@ -229,10 +400,10 @@
СписокСостояниеПросмотра
- 18
+ 31СписокСостояниеПросмотраРасширеннаяПодсказка
- 20
+ 33Labeltruetrue
@@ -242,7 +413,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 19
+ 32trueViewStatusAddition
@@ -253,10 +424,10 @@
СписокУправлениеПоиском
- 21
+ 34СписокУправлениеПоискомРасширеннаяПодсказка
- 23
+ 36Labeltruetrue
@@ -266,7 +437,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 22
+ 35trueSearchControlAddition
@@ -277,7 +448,7 @@
СписокРасширеннаяПодсказка
- 14
+ 27Labeltruetrue
@@ -327,12 +498,27 @@
true
+ None
+ falseФормаКоманднаяПанель-1Lefttrue
+
+ NotificationProcessing
+ ОбработкаОповещения
+
+
+ OnOpen
+ ПриОткрытии
+
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+
+ 110DontBlocktruetrue
@@ -365,6 +551,132 @@
true
+
+ ОткрытьФормуКлассификатора
+
+ ru
+ Открыть форму классификатора
+
+ 2
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ РежимВыбора
+
+ ru
+ Режим выбора
+
+ 3
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ИдентификаторЭлементаОтбораСсылки
+
+ ru
+ Идентификатор элемента отбора ссылки
+
+ 4
+
+
+ true
+
+
+ true
+
+
+
+ ЭтоПлатформа83
+
+ ru
+ Это платформа 8.3
+
+ 5
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ОткрытьКлассификатор
+
+ ru
+ Классификатор стран (ОКСМ)
+
+ 2
+
+ ru
+ Открыть классификатор
+
+
+
+
+ ОткрытьКлассификатор
+
+
+ Auto
+ Auto
+
+
+ ВыбратьИзКлассификатора
+
+ ru
+ Выбрать из классификатора
+
+ 1
+
+ ru
+ Выбрать из классификатора
+
+
+
+ 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
+ 16Labeltruetrue
@@ -43,6 +83,77 @@
Normal
+ true
+ true
+
+ true
+
+
+ ГруппаРасширеннаяПодсказка
+ 13
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ true
+ true
+ Auto
+ Auto
+
+
+
+ НаименованиеПолное
+ 5
+
+ ru
+ Полное наименование
+
+ true
+ true
+
+ true
+
+
+ Объект.НаименованиеПолное
+
+
+ НаименованиеПолноеРасширеннаяПодсказка
+ 18
+ Label
+ true
+ true
+
+ Left
+
+
+
+ НаименованиеПолное_КонтекстноеМеню
+ 6
+ true
+
+ InputField
+ Enter
+ true
+ Left
+ true
+
+ true
+ true
+ true
+ true
+ true
+ Normal
+
+
+
+ ГруппаАльфаКодов
+ 12КодАльфа27
@@ -56,7 +167,7 @@
КодАльфа2РасширеннаяПодсказка
- 15
+ 21Labeltruetrue
@@ -98,7 +209,7 @@
КодАльфа3РасширеннаяПодсказка
- 17
+ 23Labeltruetrue
@@ -132,9 +243,17 @@
true
+
+ ru
+ Группа альфа кодов
+
+
+ ru
+ Группа альфа кодов
+
- ГруппаРасширеннаяПодсказка
- 12
+ ГруппаАльфаКодовРасширеннаяПодсказка
+ 20Labeltruetrue
@@ -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
-
- ru
- Полное
-
- true
- true
-
- true
-
-
- Объект.НаименованиеПолное
-
-
- НаименованиеПолноеРасширеннаяПодсказка
- 21
- Label
- true
- true
-
- Left
-
-
-
- НаименованиеПолное_КонтекстноеМеню
- 6
- true
-
- InputField
- Enter
- true
- Left
- true
-
- true
- true
- true
- true
- true
- Normal
-
- Форма_КоманднаяПанель-1Lefttrue
+
+ OnCreateAtServer
+ ПриСозданииНаСервере
+ LockOwnertruetrue
@@ -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 @@
UseOwner
+ trueShowErrorUse
@@ -68,6 +69,7 @@
UseParent
+ trueUse
@@ -103,8 +105,11 @@
ruЧисловой код страны по ОКСМ
-
- Use
+ true
+
+ --
+
+ ShowError
@@ -127,7 +132,6 @@
60StringVariable
- trueAsDescription
@@ -142,7 +146,7 @@
BothWaysCatalog.СтраныМира.Form.ФормаЭлементаCatalog.СтраныМира.Form.ФормаСписка
- Catalog.СтраныМира.Form.ФормаВыбора
+ Catalog.СтраныМира.Form.ФормаСпискаНаименованиеПолное
@@ -227,12 +231,17 @@
PersonalComputerMobileDevice
-
- ФормаВыбора
+
+ Классификаторru
- Форма выбора
+ Классификатор
+
+
+ ru
+
+ PersonalComputerMobileDevice
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 @@
23ru
- Загрузка
+ Выполняется получение данныхtruetrue
@@ -35,7 +35,7 @@
ФлагИспользованияЗагрузкиРасширеннаяПодсказка
- 60
+ 62Labeltruetrue
@@ -63,7 +63,7 @@
21ru
- Выгрузка
+ Выполняется отправка данныхtruetrue
@@ -80,7 +80,7 @@
ФлагИспользованияВыгрузкиРасширеннаяПодсказка
- 62
+ 64Labeltruetrue
@@ -106,10 +106,6 @@
Наименование4
-
- ru
- Сценарий обмена данными
- truetrue
@@ -120,7 +116,7 @@
НаименованиеРасширеннаяПодсказка
- 64
+ 66Labeltruetrue
@@ -155,10 +151,10 @@
СписокСтрокаПоиска
- 51
+ 53СписокСтрокаПоискаРасширеннаяПодсказка
- 53
+ 55Labeltruetrue
@@ -168,7 +164,7 @@
СписокСтрокаПоискаКонтекстноеМеню
- 52
+ 54trueСписок
@@ -178,10 +174,10 @@
СписокСостояниеПросмотра
- 54
+ 56СписокСостояниеПросмотраРасширеннаяПодсказка
- 56
+ 58Labeltruetrue
@@ -191,7 +187,7 @@
СписокСостояниеПросмотраКонтекстноеМеню
- 55
+ 57trueViewStatusAddition
@@ -202,10 +198,10 @@
СписокУправлениеПоиском
- 57
+ 59СписокУправлениеПоискомРасширеннаяПодсказка
- 59
+ 61Labeltruetrue
@@ -215,7 +211,7 @@
СписокУправлениеПоискомКонтекстноеМеню
- 58
+ 60trueSearchControlAddition
@@ -226,7 +222,7 @@
СписокРасширеннаяПодсказка
- 50
+ 52Labeltruetrue
@@ -250,7 +246,7 @@
СписокКонтекстноеМенюВключитьОтключитьЗагрузкуРасширеннаяПодсказка
- 44
+ 46Labeltruetrue
@@ -276,7 +272,7 @@
ФормаВключитьОтключитьВыгрузкуРасширеннаяПодсказка
- 45
+ 47Labeltruetrue
@@ -307,7 +303,7 @@
ГруппаКнопокВключенияЗагрузкиВыгрузкиДанныхРасширеннаяПодсказка
- 43
+ 45Labeltruetrue
@@ -330,7 +326,7 @@
СписокКонтекстноеМенюВключитьОтключитьРегламентноеЗаданиеРасширеннаяПодсказка
- 47
+ 49Labeltruetrue
@@ -356,7 +352,7 @@
СписокКонтекстноеМенюОткрытьСценарийОбменаДаннымиРасширеннаяПодсказка
- 48
+ 50Labeltruetrue
@@ -387,7 +383,7 @@
СписокКонтекстноеМенюГруппаКнопокРасширеннаяПодсказка
- 46
+ 48Labeltruetrue
@@ -407,7 +403,7 @@
СписокКонтекстноеМенюВыполнитьСценарийРасширеннаяПодсказка
- 49
+ 51Labeltruetrue
@@ -431,6 +427,7 @@
truetrueMultiRow
+ Rowtrue11
@@ -438,7 +435,7 @@
AutoUsetruetrue
- false
+ falseAutoAutoExpandTopLevel
@@ -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
+ 37Labeltruetrue
@@ -513,7 +555,7 @@
ФормаВключитьОтключитьЗагрузкуРасширеннаяПодсказка
- 36
+ 38Labeltruetrue
@@ -543,7 +585,7 @@
ФормаВключитьОтключитьВыгрузку1РасширеннаяПодсказка
- 37
+ 39Labeltruetrue
@@ -574,7 +616,7 @@
ВключитьОтключитьВыгрузкуЗагрузкуРасширеннаяПодсказка
- 34
+ 36Labeltruetrue
@@ -598,7 +640,7 @@
СоздатьРасширеннаяПодсказка
- 38
+ 40Labeltruetrue
@@ -624,7 +666,7 @@
ИзменитьСценарийОбменаДаннымиРасширеннаяПодсказка
- 39
+ 41Labeltruetrue
@@ -653,7 +695,7 @@
ФормаВключитьОтключитьРегламентноеЗаданиеРасширеннаяПодсказка
- 41
+ 43Labeltruetrue
@@ -684,7 +726,7 @@
ГруппаКнопокРасширеннаяПодсказка
- 40
+ 42Labeltruetrue
@@ -704,7 +746,7 @@
ФормаВыполнитьСценарийРасширеннаяПодсказка
- 42
+ 44Labeltruetrue
@@ -779,45 +821,48 @@
СценарииОбменовДанными.Ссылка,
СценарииОбменовДанными.ИспользоватьРегламентноеЗадание,
СценарииОбменовДанными.Наименование,
- ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользования, Ложь) КАК ФлагИспользования,
- ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияЗагрузки, Ложь) КАК ФлагИспользованияЗагрузки,
- ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияВыгрузки, Ложь) КАК ФлагИспользованияВыгрузки
-ИЗ
+ ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользования, ЛОЖЬ) КАК ФлагИспользования,
+ ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияЗагрузки, ЛОЖЬ) КАК ФлагИспользованияЗагрузки,
+ ЕСТЬNULL(ВложенныйЗапрос.ФлагИспользованияВыгрузки, ЛОЖЬ) КАК ФлагИспользованияВыгрузки,
+ СценарииОбменовДанными.Комментарий
+ИЗ
Справочник.СценарииОбменовДанными КАК СценарииОбменовДанными
-ЛЕВОЕ СОЕДИНЕНИЕ
- (ВЫБРАТЬ
- СценарииОбменовДаннымиНастройкиОбмена.Ссылка,
- СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание,
- СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование,
- МАКСИМУМ(ВЫБОР КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы
- ТОГДА Истина
- ИНАЧЕ Ложь
- КОНЕЦ) КАК ФлагИспользования,
- МАКСИМУМ(ВЫБОР КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы
- И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ЗагрузкаДанных)
- ТОГДА Истина
- ИНАЧЕ Ложь
- КОНЕЦ) КАК ФлагИспользованияЗагрузки,
- МАКСИМУМ(ВЫБОР КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы
- И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ВыгрузкаДанных)
- ТОГДА Истина
- ИНАЧЕ Ложь
- КОНЕЦ) КАК ФлагИспользованияВыгрузки
- ИЗ
- Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена
- ГДЕ
- НЕ СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ПометкаУдаления
- СГРУППИРОВАТЬ ПО
- СценарииОбменовДаннымиНастройкиОбмена.Ссылка,
- СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание,
- СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование
- ) КАК ВложенныйЗапрос
-ПО ВложенныйЗапрос.Ссылка = СценарииОбменовДанными.Ссылка
+ ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
+ СценарииОбменовДаннымиНастройкиОбмена.Ссылка КАК Ссылка,
+ СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание КАК ИспользоватьРегламентноеЗадание,
+ СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование КАК Наименование,
+ МАКСИМУМ(ВЫБОР
+ КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы
+ ТОГДА ИСТИНА
+ ИНАЧЕ ЛОЖЬ
+ КОНЕЦ) КАК ФлагИспользования,
+ МАКСИМУМ(ВЫБОР
+ КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы
+ И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ЗагрузкаДанных)
+ ТОГДА ИСТИНА
+ ИНАЧЕ ЛОЖЬ
+ КОНЕЦ) КАК ФлагИспользованияЗагрузки,
+ МАКСИМУМ(ВЫБОР
+ КОГДА СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы
+ И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = ЗНАЧЕНИЕ(Перечисление.ДействияПриОбмене.ВыгрузкаДанных)
+ ТОГДА ИСТИНА
+ ИНАЧЕ ЛОЖЬ
+ КОНЕЦ) КАК ФлагИспользованияВыгрузки
+ ИЗ
+ Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена
+ ГДЕ
+ НЕ СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ПометкаУдаления
+
+ СГРУППИРОВАТЬ ПО
+ СценарииОбменовДаннымиНастройкиОбмена.Ссылка,
+ СценарииОбменовДаннымиНастройкиОбмена.Ссылка.ИспользоватьРегламентноеЗадание,
+ СценарииОбменовДаннымиНастройкиОбмена.Ссылка.Наименование) КАК ВложенныйЗапрос
+ ПО (ВложенныйЗапрос.Ссылка = СценарииОбменовДанными.Ссылка)
ГДЕ
НЕ СценарииОбменовДанными.ПометкаУдаления
-УПОРЯДОЧИТЬ ПО
- СценарииОбменовДанными.Наименование
+ Catalog.СценарииОбменовДанными
+ truetruetruetrue
@@ -904,12 +949,12 @@
ВключитьОтключитьВыгрузкуru
- Включить/отключить выгрузку
+ Включить/отключить отправку данных5ru
- Включить/отключить выгрузку данных по выбранному сценарию
+ Включить/отключить отправку данных в другую базуUsualGroup
- VerticalAutotruetrue
@@ -479,6 +478,10 @@
НастройкиОбменаКоличествоЭлементовВТранзакции118
+
+ ru
+ Элементов в транзакции
+ truetrue
@@ -669,6 +672,7 @@
truetrue
+ 100truetruetrue
@@ -761,8 +765,14 @@
Lefttrue
+
+ StartChoice
+ КомментарийНачалоВыбора
+ true
+ 2true
+ truetruetruetrue
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.
Также можно указать максимальный размер всех файлов на томе (квота тома). Если квота установлена равной нулю, то при размещении файлов в томе, она не проверяется. При установленном ненулевом свойстве «Максимальный размер», если суммарный размер файлов на томе уже превышает установленную квоту, то будет использован следующий по порядку заполнения том. Если ни на одном из доступных томов не будет достаточно места для размещения файла, то информация об этом будет записана в журнал регистрации и пользователю будет выдана ошибка.
Справочник предназначен для хранения списка валют, используемых в организации.
-
Список валют можно редактировать, вводить новые записи или удалять имеющиеся.
-
Новую валюту можно добавить в справочник:
-
-
Из общероссийского классификатора валют по кнопке Подбор из классификатора.
-
-
Вручную по кнопке Создать.
Для того чтобы в печатных формах правильно указывалось наименование валюты прописью, необходимо задать параметры прописи валюты. Для валюты задаются параметры прописи целой и дробной части валюты. В случае если дробная часть в печатных формах отображается числом, то можно установить нужное количество разрядов при выводе печатных форм документов. Например, если установлено количество разрядов 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 @@
-
+
Редактирование дополнительных настроек учетной записи. Эти настройки позволяют более тонко настроить такие параметры учетной записи, как аутентификация, порты серверов сообщений, время ожидания и другие параметры.
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
+ LockOwnertruetruetrue
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 @@
-
+
Основной рабочий каталог - каталог на Вашем персональном компьютере, в котором временно хранятся файлы, полученные из информационной базы для просмотра или редактирования.
При заключении договора получателю услуги предоставляются идентификационные данные: Логин и Пароль. Их неоходимо указать в соответствующих полях на форме.
В форме выполняется настройка параметров для использования средств криптографии: электронной цифровой подписи (ЭЦП) и шифрования. Для работы с криптографией вам потребуется установить стороннюю программу - криптопровайдер.
В случае распределенной информационной базы эти настройки могут быть изменены только в главном узле.
Для настройки новой синхронизации данных с другой программой выберите соответствующую команду из подменю Настроить синхронизацию данных. Откроется настройка синхронизации данных.
Для того чтобы получить информацию об особенностях ведения учета в программах, между которыми настроена синхронизация данных и получить рекомендации по настройке синхронизации данных выполните команду Подробнее о синхронизации данных с этой программой.
Для синхронизации данных вручную выберите одну из настроек в списке и выполните команду Синхронизировать с дополнительными параметрами... При этом сначала будут загружены новые данные из другой программы, а затем выполнена выгрузка в обратную сторону. Кроме того, с помощью команды Синхронизировать с дополнительными параметрами... можно синхронизировать данные, предварительно настроив сопоставление одинаковых данных. Такая процедура полезна в тех случаях, когда в обоих программах по каким-то причинам были независимо друг от друга введены одни и те же данные. Для снижения вероятности таких ситуаций можно настроить частую синхронизацию данных по расписанию.
@@ -18,4 +18,13 @@
Нажать на кнопку Записать и закрыть. Загруженные правила будут применены немедленно.
Действия при восстановлении информационной базы из резервной копии
+
При восстановлении информационной базы из резервной копии рекомендуется:
+
+
Временно отключить автоматическое выполнение синхронизации данных (снять флажок Использовать расписание во всех сценариях синхронизации данных)
+
+
Отменить отправку данных, приготовленных для других программ (для каждой настройки синхронизации данных выполнить команду Все действия – Состав отправляемых данных, в дереве объектов отметить корень и выполнить команду Отменить регистрацию изменений – Всех объектов выбранных типов)
+
+
Заново выполнить отправку данных из других программ в эту информационную базу, введенных в программах с момента выполнения резервной копии этой информационной базы.
+
+
Восстановить автоматическое выполнение синхронизации данных
При потере существенной части данных рекомендуется удалить все настройки синхронизации данных с другими программами и выполнить настройку синхронизации заново. В противном случае, может произойти потеря данных в программах, с которыми настроена синхронизация, из-за отправки в них устаревших данных из восстановленной информационной базы.
\ 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 @@
-
+ruЧто нового в конфигурации
+
+ ОтложенноеОбновление
+ 24
+
+ ОтложенноеОбновлениеДанных
+ 25
+
+ ru
+ Выполняются дополнительные процедуры обработки данных
+
+ true
+ true
+
+ true
+
+
+ ОтложенноеОбновлениеДанныхРасширеннаяПодсказка
+ 29
+ Label
+ true
+ true
+
+ Left
+
+
+ Hyperlink
+ Form.Command.ОтложенноеОбновлениеДанных
+ Normal
+ Auto
+ true
+ true
+ UserCmds
+
+ CommonPicture.Предупреждение
+
+ Auto
+
+
+ ОтложенноеОбновлениеДанныхПояснение
+ 26
+
+ ru
+ Работа в программе временно ограничена, так как еще не завершен переход на новую версию.
+
+ true
+ true
+
+ true
+
+
+ ОтложенноеОбновлениеДанныхПояснениеРасширеннаяПодсказка
+ 30
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ОтложенноеОбновлениеДанныхПояснениеКонтекстноеМеню
+ 27
+ true
+
+ Label
+ true
+ true
+
+ Right
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Отложенное обновление
+
+ true
+
+ ОтложенноеОбновлениеРасширеннаяПодсказка
+ 28
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Vertical
+ Auto
+ StrongSeparation
+ true
+ true
+ Auto
+ Auto
+
+ КоманднаяПанельСписка13
@@ -21,7 +123,7 @@
НайтиРасширеннаяПодсказка
- 25
+ 32Labeltruetrue
@@ -48,7 +150,7 @@
ИзменитьФормуРасширеннаяПодсказка
- 26
+ 33Labeltruetrue
@@ -78,7 +180,7 @@
СохранитьРасширеннаяПодсказка
- 27
+ 34Labeltruetrue
@@ -104,7 +206,7 @@
РазвернутьВсеГруппыРасширеннаяПодсказка
- 28
+ 35Labeltruetrue
@@ -131,7 +233,7 @@
ПечатьРасширеннаяПодсказка
- 29
+ 36Labeltruetrue
@@ -158,7 +260,7 @@
falseСправкаРасширеннаяПодсказка
- 30
+ 37Labeltruetrue
@@ -189,7 +291,7 @@
КоманднаяПанельСпискаРасширеннаяПодсказка
- 24
+ 31Labeltruetrue
@@ -221,7 +323,7 @@
NoneОписаниеОбновленийРасширеннаяПодсказка
- 31
+ 38Labeltruetrue
@@ -276,7 +378,7 @@
АдресФормыВПрограммеРасширеннаяПодсказка
- 34
+ 41Labeltruetrue
@@ -318,7 +420,7 @@
ТехническаяИнформацияОРезультатахОбновленияРасширеннаяПодсказка
- 36
+ 43Labeltruetrue
@@ -359,7 +461,7 @@
falseЗакрытьРасширеннаяПодсказка
- 38
+ 45Labeltruetrue
@@ -390,7 +492,7 @@
5КоманднаяПанельФормыРасширеннаяПодсказка
- 37
+ 44Labeltruetrue
@@ -419,7 +521,7 @@
falseГруппаТехническаяИнформацияИЗакрытьРасширеннаяПодсказка
- 35
+ 42Labeltruetrue
@@ -453,7 +555,7 @@
trueГруппаРасширеннаяПодсказка
- 33
+ 40Labeltruetrue
@@ -549,6 +651,24 @@
true
+
+ ОтложенноеОбновлениеДанных
+
+ ru
+ Выполняются дополнительные процедуры обработки данных
+
+ 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 @@
truetrue
- truetruetruetrue
@@ -800,6 +799,10 @@
Lefttrue
+
+ 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/ПараметрыПроксиСервера/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 @@
Righttrue
+
+ 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 @@
-
-
Рекомендации по установке пароля для синхронизации данных.
Надежный пароль должен: - состоять не менее чем из восьми символов, - включать в себя заглавные латинские буквы, - включать в себя прописные латинские буквы, - цифры, - символы (подчеркивание, скобки и т.д.) .
-
Надежный пароль должен быть малопонятным выражением.
Для отправки письма необходимо ввести пароль и нажать кнопку "Продолжить" на командной панели. Эта форма открывается при отправке письма с учетных записей, в которых пароль не задан.
Командная панель формы содержит следующие кнопки:
Продолжить - эта форма закрывается и письмо отправляется
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 @@
Lefttrue
+
+ ChoiceProcessing
+ ОбработкаВыбора
+ OnOpenПриОткрытии
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 @@
Left
+
+ ChoiceProcessing
+ ОбработкаВыбора
+ NotificationProcessingОбработкаОповещения
@@ -1163,6 +1167,7 @@
DontBlockUsetrue
+ truetruetruetrue
@@ -1508,6 +1513,38 @@
+
+ ПарольПользователяСервиса
+
+ ru
+ Пароль пользователя сервиса
+
+ 3
+
+
+ true
+
+
+ true
+
+
+
+ ПолучениеПароляВключитьВГруппуДоступаАдминистраторы
+
+ ru
+ Получение пароля включить в группу доступа администраторы
+
+ 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 @@
Lefttrue
+
+ ChoiceProcessing
+ ОбработкаВыбора
+ BeforeCloseПередЗакрытием
@@ -1714,6 +1718,7 @@
DontBlocktrue
+ truetrueVerticaltrue
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 @@
+
+ ru
+ Права доступа
+ ГруппыПрав1
@@ -638,7 +642,7 @@
RetrySaveValuesYes
- DontBlock
+ LockOwnertruetrueVertical
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 @@
- ПользовательПустаяСссылка
+ ПользовательПустаяСсылкаru
- Пользователь пустая сссылка
+ Пользователь пустая ссылка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 @@
+
+
+
+ ru
+ Табличный документ (Создание)
+
+
+ КоманднаяПанель
+ 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
+
+
+ ru
+ Действия с документом
+
+
+ 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
+
+
+ ru
+ Шрифт
+
+
+ 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
+
+
+ ru
+ Начертание
+
+
+ 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
+
+
+ ru
+ Цвет
+
+
+ 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
+
+
+ ru
+ Выравнивание
+
+
+ ru
+ Выравнивание
+
+
+ ВыравниваниеРасширеннаяПодсказка
+ 113
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Форматирование текста
+
+
+ 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
+
+
+ ru
+ Границы
+
+
+ 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
+
+
+ ru
+ Действия с ячейками
+
+
+ ru
+ Действия с ячейками
+
+
+ ДействияСЯчейкамиРасширеннаяПодсказка
+ 130
+ Label
+ true
+ true
+
+ Left
+
+
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Команды редактирования
+
+
+ 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
+
+
+ ru
+ Действия с группами
+
+
+ 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
+
+
+ ru
+ Все действия
+
+
+ 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
+
+
+ ru
+ Командная панель
+
+
+ ru
+ Командная панель
+
+
+ КоманднаяПанельРасширеннаяПодсказка
+ 94
+ Label
+ true
+ true
+
+ Left
+
+
+ CommandBar
+
+ Left
+
+
+
+ Предупреждение
+ 91
+
+ КартинкаПредупреждения
+ 92
+
+ ru
+ Картинка предупреждения
+
+ true
+ true
+
+ true
+
+
+ КартинкаПредупрежденияРасширеннаяПодсказка
+ 142
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КартинкаПредупрежденияКонтекстноеМеню
+ 93
+ true
+
+ 2
+ true
+ 1
+ true
+
+
+ CommonPicture.Предупреждение
+
+
+
+
+ ТекстПредупреждения
+ 89
+
+ ru
+ Изменение имен областей, а также параметров макета может привести к потере работоспособности печатной формы.
+
+ true
+ true
+
+ true
+
+
+ ТекстПредупрежденияРасширеннаяПодсказка
+ 143
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ТекстПредупрежденияКонтекстноеМеню
+ 90
+ true
+
+ Label
+ true
+ true
+
+ Style.ПоясняющийТекст
+
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+ Предупреждение
+
+ 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
+
+
+ ТабличныйДокумент
+
+ ru
+ Табличный документ
+
+ 2
+
+ SpreadsheetDocument
+
+
+ true
+
+
+ true
+
+ true
+
+
+
+ ИмяДокумента
+
+ ru
+ Имя документа
+
+ 3
+
+ String
+
+
+
+ true
+
+
+ true
+
+
+
+ РедактированиеЗапрещено
+
+ ru
+ Редактирование запрещено
+
+ 4
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ЗаписатьИЗакрыть
+
+ ru
+ Записать и закрыть
+
+ 1
+
+ ru
+ Записать и закрыть
+
+
+ true
+
+
+
+ ЗаписатьИЗакрыть
+
+
+ Auto
+ Auto
+
+
+ Редактирование
+
+ ru
+ Редактирование
+
+ 3
+
+ ru
+ Редактирование
+
+
+ true
+
+
+ StdPicture.SpreadsheetReadOnly
+
+
+
+ Редактирование
+
+
+ TextPicture
+ Auto
+ Auto
+
+
+ Шрифт
+
+ ru
+ Шрифт
+
+ 2
+
+ ru
+ Шрифт
+
+
+ true
+
+
+ CommonPicture.ИзменитьШрифт
+
+
+
+ Шрифт
+
+
+ true
+ Auto
+ Auto
+
+
+ Полужирный
+
+ ru
+ Полужирный
+
+ 4
+
+ ru
+ Полужирный
+
+
+ true
+
+
+ CommonPicture.ПолужирноеНачертание
+
+
+
+ Полужирный
+
+
+ true
+ Auto
+ Auto
+
+
+ ЦветТекста
+
+ ru
+ Цвет текста
+
+ 5
+
+ ru
+ Цвет текста
+
+
+ true
+
+
+ CommonPicture.ЦветТекста
+
+
+
+ ЦветТекста
+
+
+ true
+ Auto
+ Auto
+
+
+ Объединить
+
+ ru
+ Объединить
+
+ 8
+
+ ru
+ Объединить
+
+
+ true
+
+
+ CommonPicture.ОбъединитьЯчейки
+
+
+
+ Объединить
+
+
+ true
+ Auto
+ Auto
+
+
+ ВставитьПримечание
+
+ ru
+ Вставить примечание
+
+ 9
+
+ ru
+ Вставить примечание
+
+
+ true
+
+
+ StdPicture.SpreadsheetInsertComment
+
+
+
+ ВставитьПримечание
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ Курсив
+
+ ru
+ Курсив
+
+ 11
+
+ ru
+ Курсив
+
+
+ true
+
+
+ CommonPicture.КурсивноеНачертание
+
+
+
+ Курсив
+
+
+ true
+ Auto
+ Auto
+
+
+ Подчеркивание
+
+ ru
+ Подчеркивание
+
+ 12
+
+ ru
+ Подчеркивание
+
+
+ true
+
+
+ CommonPicture.Подчеркивание
+
+
+
+ Подчеркивание
+
+
+ true
+ Auto
+ Auto
+
+
+ УвеличитьРазмерШрифта
+
+ ru
+ Увеличить размер шрифта
+
+ 13
+
+ ru
+ Увеличить размер шрифта
+
+
+ true
+
+
+ CommonPicture.УвеличитьШрифт
+
+
+
+ УвеличитьРазмерШрифта
+
+
+ true
+ Auto
+ Auto
+
+
+ УменьшитьРазмерШрифта
+
+ ru
+ Уменьшить размер шрифта
+
+ 14
+
+ ru
+ Уменьшить размер шрифта
+
+
+ true
+
+
+ CommonPicture.УменьшитьШрифт
+
+
+
+ УменьшитьРазмерШрифта
+
+
+ true
+ Auto
+ Auto
+
+
+ ЦветФона
+
+ ru
+ Цвет фона
+
+ 15
+
+ ru
+ Цвет фона
+
+
+ true
+
+
+ CommonPicture.ЦветФона
+
+
+
+ ЦветФона
+
+
+ true
+ Auto
+ Auto
+
+
+ ПоШирине
+
+ ru
+ По ширине
+
+ 16
+
+ ru
+ По ширине
+
+
+ true
+
+
+ CommonPicture.ВыравниваниеПоШирине
+
+
+
+ ПоШирине
+
+
+ true
+ Auto
+ Auto
+
+
+ ПоЦентру
+
+ ru
+ По центру
+
+ 17
+
+ ru
+ По центру
+
+
+ true
+
+
+ CommonPicture.ВыравниваниеПоЦентру
+
+
+
+ ПоЦентру
+
+
+ true
+ Auto
+ Auto
+
+
+ Влево
+
+ ru
+ Влево
+
+ 18
+
+ ru
+ Влево
+
+
+ true
+
+
+ CommonPicture.ВыравниваниеПоЛевомуКраю
+
+
+
+ Влево
+
+
+ true
+ Auto
+ Auto
+
+
+ Вправо
+
+ ru
+ Вправо
+
+ 19
+
+ ru
+ Вправо
+
+
+ true
+
+
+ CommonPicture.ВыравниваниеПоПравомуКраю
+
+
+
+ Вправо
+
+
+ true
+ Auto
+ Auto
+
+
+ ГраницаСлева
+
+ ru
+ Граница слева
+
+ 20
+
+ ru
+ Граница слева
+
+
+ true
+
+
+ CommonPicture.ГраницаСлева
+
+
+
+ ГраницаСлева
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ ГраницаСправа
+
+ ru
+ Граница справа
+
+ 21
+
+ ru
+ Граница справа
+
+
+ true
+
+
+ CommonPicture.ГраницаСправа
+
+
+
+ ГраницаСправа
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ ГраницаСверху
+
+ ru
+ Граница сверху
+
+ 22
+
+ ru
+ Граница сверху
+
+
+ true
+
+
+ CommonPicture.ГраницаСверху
+
+
+
+ ГраницаСверху
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ ГраницаСнизу
+
+ ru
+ Граница снизу
+
+ 23
+
+ ru
+ Граница снизу
+
+
+ true
+
+
+ CommonPicture.ГраницаСнизу
+
+
+
+ ГраницаСнизу
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ ГраницаВезде
+
+ ru
+ Граница везде
+
+ 24
+
+ ru
+ Граница везде
+
+
+ true
+
+
+ CommonPicture.ГраницаВезде
+
+
+
+ ГраницаВезде
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ ГраницаВокруг
+
+ ru
+ Граница вокруг
+
+ 25
+
+ ru
+ Граница вокруг
+
+
+ true
+
+
+ CommonPicture.ГраницаВокруг
+
+
+
+ ГраницаВокруг
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ ГраницаВнутри
+
+ ru
+ Граница внутри
+
+ 26
+
+ ru
+ Граница внутри
+
+
+ true
+
+
+ CommonPicture.ГраницаВнутри
+
+
+
+ ГраницаВнутри
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ ТолстаяГраницаВокруг
+
+ ru
+ Толстая граница вокруг
+
+ 27
+
+ ru
+ Толстая граница вокруг
+
+
+ true
+
+
+ CommonPicture.ТолстаяГраницаВокруг
+
+
+
+ ТолстаяГраницаВокруг
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ ТолстаяГраницаСнизу
+
+ ru
+ Толстая граница снизу
+
+ 28
+
+ ru
+ Толстая граница снизу
+
+
+ true
+
+
+ CommonPicture.ТолстаяГраницаСнизу
+
+
+
+ ТолстаяГраницаСнизу
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ ТолстаяГраницаСверху
+
+ ru
+ Толстая граница сверху
+
+ 29
+
+ ru
+ Толстая граница сверху
+
+
+ true
+
+
+ CommonPicture.ТолстаяГраницаСверху
+
+
+
+ ТолстаяГраницаСверху
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ НетГраницы
+
+ ru
+ Нет границы
+
+ 30
+
+ ru
+ Нет границы
+
+
+ true
+
+
+ CommonPicture.НетГраницы
+
+
+
+ НетГраницы
+
+
+ Picture
+ true
+ Auto
+ Auto
+
+
+ Записать
+
+ ru
+ Записать
+
+ 31
+
+ ru
+ Записать
+
+
+ true
+
+
+ StdPicture.SaveFile
+
+
+
+ Записать
+
+
+ Auto
+ Auto
+
+
+ Зачеркивание
+
+ ru
+ Зачеркивание
+
+ 32
+
+ ru
+ Зачеркивание
+
+
+ true
+
+
+
+ Зачеркивание
+
+
+ true
+ Auto
+ Auto
+
+
+ Разъединить
+
+ ru
+ Разъединить
+
+ 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
+ LockOwnertruetruetrue
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 @@
-
+
Форма предназначена для просмотра основных свойств сертификата электронной цифровой подписи (ЭЦП).
В ней можно посмотреть основные свойства сертификата: кому выдан, кем выдан, действителен до, назначение.
По команде "Проверить" выполняется проверка сертификата.
+
+ ПерейтиККонфликтам
+
+ ru
+ Предупреждений нет
+
+ 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 @@
SaveValuesYes40
- DontBlock
+ LockOwnerUsetruetrue
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 @@
Lefttrue
-
- StartListChoice
- ТаблицаКонтактовТекущийАдресКонтактаНачалоВыбораИзСписка
- ClearingТаблицаКонтактовТекущийАдресКонтактаОчистка
@@ -282,6 +274,10 @@
BeforeDeleteRowТаблицаКонтактовПередУдалением
+
+ OnActivateCell
+ ТаблицаКонтактовПриАктивизацииЯчейки
+ ТаблицаКонтактовСтрокаПоиска35
@@ -428,6 +424,10 @@
Lefttrue
+
+ NotificationProcessing
+ ОбработкаОповещения
+ BeforeCloseПередЗакрытием
@@ -437,7 +437,7 @@
ПриСозданииНаСервере150
- DontBlock
+ LockOwnertruetrueVertical
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
-
- РежимВыбора
-
- ru
- Режим выбора
-
- 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 @@
true
-
- РежимВыбора
-
- ru
- Режим выбора
-
- 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 @@
OnCreateAtServerПриСозданииНаСервере
+
+ OnClose
+ ПриЗакрытии
+ ReportSettingsDontBlocktrue
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 @@
Результат = Результат + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"
%1
",
- ПредставлениеРазрешения
- );
+ ПредставлениеРазрешения);
Результат = Результат + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"
%1%2
", РасшифровкаРазрешения, ?(
ЕстьПараметры,
НСтр("ru = ' со следующими ограничениями:'"),
- "."
- )
- );
+ "."));
Если ЕстьПараметры Тогда
@@ -336,14 +325,12 @@
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
ОписаниеПараметра = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- Параметр.Описание, ЗначениеПараметра
- );
+ Параметр.Описание, ЗначениеПараметра);
Иначе
ОписаниеПараметра = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
- "%1", Параметр.ОписаниеЛюбогоЗначения
- );
+ "%1", Параметр.ОписаниеЛюбогоЗначения);
КонецЕсли;
@@ -362,8 +349,7 @@
Результат = Результат + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
"
%1
",
- ОписаниеПоследствий
- );
+ ОписаниеПоследствий);
КонецЕсли;
@@ -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();
+
+ Построитель = Новый ТекстовыйДокумент;
+ Построитель.ДобавитьСтроку("");
+ Построитель.ДобавитьСтроку( XSLT_УдалитьОписаниеXML(Текст1) );
+ Построитель.ДобавитьСтроку("");
+ Построитель.ДобавитьСтроку( XSLT_УдалитьОписаниеXML(Текст2) );
+ Построитель.ДобавитьСтроку("");
+
+ Возврат Преобразователь.ПреобразоватьИзСтроки( Построитель.ПолучитьТекст() );
+КонецФункции
+
+// Преобразует текст с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в 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_Текст.ДобавитьСтроку("
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+
+ Если Представление<>Неопределено Тогда
+ XSLT_Текст.ДобавитьСтроку("
+ |
+ |
+ |
+ | " + МногострочнаяСтрокаXML(Представление) + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ КонецЕсли;
+
+ Если Комментарий<>Неопределено Тогда
+ XSLT_Текст.ДобавитьСтроку("
+ |
+ |
+ |
+ | " + МногострочнаяСтрокаXML(Комментарий) + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ КонецЕсли;
+ XSLT_Текст.ДобавитьСтроку("
+ |
+ |");
+
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки( XSLT_Текст.ПолучитьТекст() );
+
+ Возврат Преобразователь.ПреобразоватьИзСтроки(Текст);
+КонецФункции
+
+// Устанавливает в контактной информации Состав.Значение на переданное представление
+//
+// Параметры:
+// Текст - XML контактной информации
+// Представление - устанавливаемое представление.
+//
+// Если Представление равно неопределено, то никаких действий не производит. Иначе проверяет на пустоту
+// Состав. Если там ничего нет и атрибут "Состав.Значение" пуст, то ставим в состав значение представления
+//
+Функция XSLT_КонтрольСтроковогоЗначенияПростогоТипа(Знач Текст, Знач Представление)
+ Если Представление=Неопределено Тогда
+ Возврат Текст;
+ КонецЕсли;
+
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | " + МногострочнаяСтрокаXML(Представление) + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+
+ Возврат Преобразователь.ПреобразоватьИзСтроки(Текст);
+КонецФункции
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+// Возвращает фрагмент XML для подстановки строки в виде <Узел>Строка<Узел>
+//
+// Параметры:
+// - Текст - строка, вставляемая в XML
+// - ИмяЭлемента - необязательное имя для внешнего узла
+//
+Функция XSLT_УзелСтрокиПараметра(Знач Текст, Знач ИмяЭлемента="ExternalParamNode")
+ // Через запись 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 @@
-
- СтруктураПодчиненности
+
+ КонтактнаяИнформацияXMLru
- Структура подчиненности
+ Контактная информация XMLtruetrue
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 @@
- КонтактнаяИнформацияВызовСервера
+ КонтактнаяИнформацияСлужебныйВызовСервераru
- Контактная информация вызов сервера
+ Контактная информация служебный вызов сервераtruetrue
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;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+
+ Возврат Преобразователь;
+Конецфункции
+
+// Производит проверку двух строк XML - параметра и текущего
+//
+// Результат преобразования - сериализованный ValueTable (http://v8.1c.ru/8.1/data/core), в котором три колонки:
+// - Путь - строка - путь к месту различия
+// - Значение1 - строка - значение в XML из параметра Текст1
+// - Значение2 - строка - значение в XML из параметра Текст2
+//
+// Проверяем только строки и атрибуты, без пробельных, CDATA и т.п. Порядок важен.
+//
+Функция XSLT_ТаблицаЗначенийРазличияXML() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+
+ // Пространство имен должно быть пустым!
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |" + XSLT_ШаблоныСтроковыхФункций() + "
+ |" + XSLT_ШаблоныФункцийXPath() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | Путь
+ |
+ | xs:string
+ | 0Variable
+ |
+ |
+ |
+ | Значение1
+ |
+ | xs:string
+ | 0Variable
+ |
+ |
+ |
+ | Значение2
+ |
+ | xs:string
+ | 0Variable
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует текст с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML.
+// В случае повторных ключей все включаются в результат, но при десериализации будет использован
+// последний (особенность работы сериализатора платформы)
+//
+// Результат преобразования - строка XML сериализованной структуры
+//
+Функция XSLT_СтрокаКлючЗначениеВСтруктуру() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |" + XSLT_ШаблоныСтроковыхФункций() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует текст с парами Ключ=Значение, разделенных переносами строк (см формат адреса) в XML.
+// В случае повторных ключей все включаются в результат
+//
+// Результат преобразования - строка XML сериализованного списка значений
+//
+Функция XSLT_СтрокаКлючЗначениеВСписокЗначений() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |" + XSLT_ШаблоныСтроковыхФункций() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует список значений в строку пар ключ=значение, разделенных переносом строки
+//
+// Результат преобразования - строка результата
+//
+Функция XSLT_СписокЗначенийВСтрокуКлючЗначение() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |" + XSLT_ШаблоныСтроковыхФункций() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | =
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует структуру в строку пар ключ=значение, разделенных переносом строки
+//
+// Результат преобразования - строка результата
+//
+Функция XSLT_СтруктураВСтрокуКлючЗначение() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |" + XSLT_ШаблоныСтроковыхФункций() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | =
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует список значений в структуру. Представление преобразуется в ключ
+//
+// Результат преобразования - сериализованная структура
+//
+Функция XSLT_СписокЗначенийВСтруктуру() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |" + XSLT_ШаблоныСтроковыхФункций() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует структуру в список значений. Ключ преобразуется в представление.
+//
+// Результат преобразования - сериализованный список значений
+//
+Функция XSLT_СтруктураВСписокЗначений() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |" + XSLT_ШаблоныСтроковыхФункций() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует соответствие в структуру. Ключ преобразуется в ключ, значение - в значение
+//
+// Результат преобразования - сериализованная структура
+//
+Функция XSLT_СоответствиеВСтруктуру() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |" + XSLT_ШаблоныСтроковыхФункций() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Убирает описание для включения внутрь другого XML
+//
+Функция XSLT_УдалитьОписаниеXML() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует контактную информацию в виде XML (см пакет XDTO КонтактнаяИнформация) в перечисление ТипКонтакнойИнформации
+//
+// Результат преобразования - сериализованное значение перечисления
+//
+Функция XSLT_ТипКонтактнойИнформацииПоСтрокеXML() Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | Адрес
+ |
+ |
+ | Телефон
+ |
+ |
+ | Факс
+ |
+ |
+ | АдресЭлектроннойПочты
+ |
+ |
+ | ВебСтраница
+ |
+ |
+ | Другое
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует таблицу различий XML в зависимости от типа контактной информации
+//
+// Параметры:
+// ТипКонтактнойИнформации - значение или имя перечисления
+//
+// Результат преобразования - сериализованный ValueTable (http://v8.1c.ru/8.1/data/core), в котором три колонки:
+// - Путь - строка - путь к месту различия
+// - Описание - строка - описание отличающегося реквизита в терминах предметной области
+// - Значение1 - строка - значение из первого XML
+// - Значение2 - строка - значение из второго XML
+//
+Функция XSLT_ИнтерпретацияРазличияXMLКонтактнойИнформации(Знач ТипКонтактнойИнформации) Экспорт
+
+ Если ТипЗнч(ТипКонтактнойИнформации)<>Тип("Строка") Тогда
+ ТипКонтактнойИнформации = ТипКонтактнойИнформации.Метаданные().Имя;
+ КонецЕсли;
+
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует сериализованную структуру в контактную информацию в виде XML
+//
+Функция XSLT_СтруктураВАдрес() Экспорт
+
+ КодыДопАдрЭл = Новый ТекстовыйДокумент;
+ Для Каждого ДопАдрЭл Из КонтактнаяИнформацияКлиентСерверПовтИсп.ТипыОбъектовАдресацииАдресаРФ() Цикл
+ КодыДопАдрЭл.ДобавитьСтроку("" + ДопАдрЭл.Код + "");
+ КонецЦикла;
+
+ КодыРегионов = Новый ТекстовыйДокумент;
+ ВсеРегионы = КонтактнаяИнформацияСлужебный.ВсеРегионы();
+ Если ВсеРегионы<>Неопределено Тогда
+ Для Каждого Строка Из ВсеРегионы Цикл
+ КодыРегионов.ДобавитьСтроку("" + Строка.Представление + "");
+ КонецЦикла;
+ КонецЕсли;
+
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ | " + XSLT_ШаблоныСтроковыхФункций() + "
+ |
+ | РОССИЯ
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | Адрес
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | xs:string
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | АдресРФ
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | " + КонтактнаяИнформацияКлиентСерверПовтИсп.КодСериализацииПочтовогоИндекса() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |" + КодыДопАдрЭл.ПолучитьТекст() + "
+ |
+ |
+ |
+ |
+ |" + КодыРегионов.ПолучитьТекст() + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Преобразует сериализованную структуру в контактную информацию в виде XML
+//
+Функция XSLT_СтруктураВАдресЭлектроннойПочты() Экспорт
+ Возврат XSLT_СтруктураВСтроковыйСостав("ЭлектроннаяПочта");
+КонецФункции
+
+// Преобразует сериализованную структуру в контактную информацию в виде XML
+//
+Функция XSLT_СтруктураВВебСтраницу() Экспорт
+ Возврат XSLT_СтруктураВСтроковыйСостав("ВебСайт");
+КонецФункции
+
+// Преобразует сериализованную структуру в контактную информацию в виде XML
+//
+Функция XSLT_СтруктураВТелефон() Экспорт
+ Возврат XSLT_СтруктураВТелефонФакс("НомерТелефона");
+КонецФункции
+
+// Преобразует сериализованную структуру в контактную информацию в виде XML
+//
+Функция XSLT_СтруктураВФакс() Экспорт
+ Возврат XSLT_СтруктураВТелефонФакс("НомерФакса");
+КонецФункции
+
+// Преобразует сериализованную структуру в контактную информацию в виде XML
+//
+Функция XSLT_СтруктураВДругое() Экспорт
+ Возврат XSLT_СтруктураВСтроковыйСостав("Прочее");
+КонецФункции
+
+// Общее преобразование сериализованной структуры в контактную информацию в виде XML простого типа
+Функция XSLT_СтруктураВСтроковыйСостав(Знач ИмяXDTOТипа)
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | " + ИмяXDTOТипа + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+// Общее преобразование для телефона и факса
+Функция XSLT_СтруктураВТелефонФакс(Знач ИмяXDTOТипа) Экспорт
+ Преобразователь = Новый ПреобразованиеXSL;
+ Преобразователь.ЗагрузитьИзСтроки("
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | " + ИмяXDTOТипа + "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |");
+ Возврат Преобразователь;
+КонецФункции
+
+////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// Библиотечные методы для XSL транформаций. Предназначено для имитации
+//
+
+// Фрагмент XSL с процедурами для обработки строк
+Функция XSLT_ШаблоныСтроковыхФункций()
+ Возврат "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | 0) and (string-length(normalize-space($head)) = 0)"">
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | 0) and (string-length(normalize-space($tail)) = 0)"">
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |";
+КонецФункции
+
+// Фрагмент XSL с процедурами для работы с xpath
+Функция XSLT_ШаблоныФункцийXPath()
+ Возврат "
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | 0"">
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | 0"">
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | 0"">
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ | 0"">
+ |
+ |
+ |
+ |
+ |
+ | '
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |";
+КонецФункции
+
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 @@
+
+
+ КонтактнаяИнформацияСлужебныйПовтИсп
+
+ ru
+ Контактная информация служебный повт исп
+
+ true
+ true
+ true
+ DuringSession
+
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 @@
-
- КонтактнаяИнформацияКлиент
+
+ ОбновлениеИнформационнойБазыГлобальныйru
- Контактная информация клиент
+ Обновление информационной базы глобальный
+ truetruetrue
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 )
-//
-// - старый формат:
-//
-// ="<Значение1>" <ИмяКолонки2>="<Значение2>" ... />
-// ...
-//
-//
-// - новый, упрощенный формат:
-// <ТегКорня <ПервыйАтрибут>="<ОписаниеКолонок" 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 @@
+
+
+ ПроверкаЛегальностиПолученияОбновленияГлобальный
+
+ ru
+ Проверка легальности получения обновления глобальный
+
+ true
+ true
+ true
+
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 @@
ПараметрыДоставки.ШаблонТекста = СтрЗаменить(
ПараметрыДоставки.ШаблонТекста,
""+ ПараметрыДоставки.ИмяАрхива +""
- );
+ +""+ ПараметрыДоставки.ИмяАрхива +"");
Иначе
ПараметрыДоставки.ПредставлениеОтчетовПолучателя = СокрЛП(
ПараметрыДоставки.ПредставлениеОтчетовПолучателя
- +""""+ ПараметрыДоставки.ИмяАрхива +""":"+ Символы.ПС +"<"+ ПолноеИмяФайла +">"
- );
+ +""""+ ПараметрыДоставки.ИмяАрхива +""":"+ Символы.ПС +"<"+ ПолноеИмяФайла +">");
КонецЕсли;
ИначеЕсли ПараметрыДоставки.ЗаполнитьСформированныеОтчетыВШаблонеСообщения Тогда
// Доставка только по почте
ПараметрыДоставки.ПредставлениеОтчетовПолучателя = СокрЛП(
ПараметрыДоставки.ПредставлениеОтчетовПолучателя
- +""""+ ПараметрыДоставки.ИмяАрхива +""""
- );
+ +""""+ ПараметрыДоставки.ИмяАрхива +"""");
КонецЕсли;
КонецПроцедуры
@@ -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 @@
+
+
+ РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс
+
+ ru
+ Резервное копирование областей данных данные форм интерфейс
+
+ true
+ true
+ true
+
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 @@
+
+
+ РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервис
+
+ ru
+ Резервное копирование областей данных данные форм реализация web сервис
+
+ true
+ true
+ true
+
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 @@
-
- УправлениеКонтактнойИнформациейСобытия
+
+ СообщенияИнформационногоЦентраИнтерфейсru
- Управление контактной информацией события
+ Сообщения информационного центра интерфейсtruetrue
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 @@
+
+
+ СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1
+
+ ru
+ Сообщения информационного центра обработчик сообщения 1 0 1 1
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияИнформационногоЦентраРеализация
+
+ ru
+ Сообщения информационного центра реализация
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс
+
+ ru
+ Сообщения контроль дополнительных отчетов и обработок интерфейс
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1
+
+ ru
+ Сообщения контроль удаленного администрирования обработчик трансляции 1.0.0.1
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1
+
+ ru
+ Сообщения контроль резервного копирования обработчик трансляции 1.0.2.1
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4
+
+ ru
+ Сообщения контроль удаленного администрирования обработчик трансляции 1.0.2.3
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5
+
+ ru
+ Сообщения удаленного администрирования обработчик сообщения 1.0.3.5
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1
+
+ ru
+ Сообщения управление резервным копированием обработчик сообщения 1.0.3.1
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс
+
+ ru
+ Сообщения управления дополнительными отчетами и обработками интерфейс
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1
+
+ ru
+ Сообщения управления дополнительными отчетами и обработками обработчик сообщения 1. 0 .1 .1
+
+ true
+ true
+ true
+
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 @@
+
+
+ СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализация
+
+ ru
+ Сообщения управления дополнительными отчетами и обработками реализация
+
+ true
+ true
+ true
+
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 @@
+
+
+ УправлениеПечатьюКлиентПовтИсп
+
+ ru
+ Управление печатью клиент повт исп
+
+ true
+ true
+ DuringSession
+
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 @@
+
+
+ ВходящееСообщение
+
+ ru
+ Входящее сообщение
+
+
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 @@
+
+
+ ВыравниваниеПоЛевомуКраю
+
+ ru
+ Выравнивание по левому краю
+
+
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 @@
+
+
+ ВыравниваниеПоПравомуКраю
+
+ ru
+ Выравнивание по правому краю
+
+
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 @@
+
+
+ ВыравниваниеПоЦентру
+
+ ru
+ Выравнивание по центру
+
+
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 @@
+
+
+ ВыравниваниеПоШирине
+
+ ru
+ Выравнивание по ширине
+
+
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 @@
+
+
+ ГраницаВезде
+
+ ru
+ Граница везде
+
+
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 @@
+
+
+ ГраницаВнутри
+
+ ru
+ Граница внутри
+
+
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 @@
+
+
+ ГраницаВокруг
+
+ ru
+ Граница вокруг
+
+
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 @@
+
+
+ ГраницаСверху
+
+ ru
+ Граница сверху
+
+
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 @@
+
+
+ ГраницаСлева
+
+ ru
+ Граница слева
+
+
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 @@
+
+
+ ГраницаСнизу
+
+ ru
+ Граница снизу
+
+
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 @@
+
+
+ ГраницаСправа
+
+ ru
+ Граница справа
+
+
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 @@
+
+
+ ИзменитьШрифт
+
+ ru
+ Изменить шрифт
+
+
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 @@
+
+
+ ИсходящееСообщение
+
+ ru
+ Исходящее сообщение
+
+
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 @@
+
+
+ КурсивноеНачертание
+
+ ru
+ Курсивное начертание
+
+
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 @@
+
+
+ НаписатьSMS
+
+ ru
+ Написать SMS
+
+
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 @@
+
+
+ НетГраницы
+
+ ru
+ Нет границы
+
+
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 @@
+
+
+ ОбъединитьЯчейки
+
+ ru
+ Объединить ячейки
+
+
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 @@
+
+
+ Подчеркивание
+
+ ru
+ Подчеркивание
+
+
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 @@
+
+
+ ПолужирноеНачертание
+
+ ru
+ Полужирное начертание
+
+
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 @@
+
+
+ ТолстаяГраницаВокруг
+
+ ru
+ Толстая граница вокруг
+
+
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 @@
+
+
+ ТолстаяГраницаСверху
+
+ ru
+ Толстая граница сверху
+
+
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 @@
+
+
+ ТолстаяГраницаСнизу
+
+ ru
+ Толстая граница снизу
+
+
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 @@
+
+
+ УвеличитьШрифт
+
+ ru
+ Увеличить шрифт
+
+
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 @@
+
+
+ УменьшитьШрифт
+
+ ru
+ Уменьшить шрифт
+
+
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 @@
+
+
+ Успешно
+
+ ru
+ Успешно
+
+
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 @@
+
+
+ ЦветТекста
+
+ ru
+ Цвет текста
+
+
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 @@
+
+
+ ЦветФона
+
+ ru
+ Цвет фона
+
+
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 @@
-
+
Установка обновления конфигурации
Для установки обновления конфигурации необходимо выполнить следующие действия:
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 @@
+
+
+ КомпонентаСклоненияФИО
+
+ ru
+ Компонента склонения ФИО
+
+ BinaryData
+
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 @@
-
- Опциональный
- Опциональный
-
-
- ru
- Опциональный
-
-
-
- xs:boolean
-
- ПриоритетПриоритет
@@ -138,6 +125,62 @@
+
+ НачальноеЗаполнение
+ НачальноеЗаполнение
+
+
+ ru
+ Начальное заполнение
+
+
+
+ xs:boolean
+
+
+
+ РежимВыполнения
+ РежимВыполнения
+
+
+ ru
+ Режим выполнения
+
+
+
+ xs:string
+
+ 50
+ Variable
+
+
+
+ Монопольно
+
+
+ Оперативно
+
+
+ Отложенно
+
+
+
+ Комментарий
+ Комментарий
+
+
+ ru
+ Комментарий
+
+
+
+ xs:string
+
+ 0
+ Variable
+
+
+ ИсточникДанных1Обработчики
@@ -318,6 +361,21 @@
trueAlways
+
+ ОтложенноеОбновление
+
+
+ ru
+ Отложенное обновление
+
+
+
+ xs:boolean
+
+ false
+ true
+ Always
+ Ложь
@@ -346,9 +404,6 @@
ОбщиеДанные
-
- Опциональный
- ВыполнятьВГруппеОбязательных
@@ -364,6 +419,15 @@
МонопольныйРежим
+
+ НачальноеЗаполнение
+
+
+ Комментарий
+
+
+ РежимВыполнения
+
@@ -430,6 +494,30 @@
AndGroup
+
+ ПараметрыДанных.ВерсияОт
+ Equal
+ 0.0.0.0
+
+
+ НачальноеЗаполнение
+ Equal
+ true
+
+
+
+ ru
+ // Начальное заполнение
+
+
+
+
+ AndGroup
+
+ ПараметрыДанных.ВерсияОт
+ NotEqual
+ 0.0.0.0
+ ВесВерсииGreater
@@ -443,7 +531,7 @@
ru
- // Версии в интервале
+ // Обновление (версии в интервале)
@@ -454,46 +542,112 @@
-
- NotGroup
-
- ПараметрыДанных.ВерсияОт
- Equal
- 0.0.0.0
-
-
- Опциональный
- Equal
- true
-
-
-
- ru
- // Опциональные
-
-
- OrGroup
-
- ПараметрыДанных.ОперативноеОбновление
- Equal
- false
-
-
- ru
- // Не оперативное обновление - выбираем все
-
-
+
+ AndGroup
+
+ ПараметрыДанных.ОперативноеОбновление
+ Equal
+ false
+
+
+ ru
+ // Не оперативное обновление - выбираем все
+
+
+
+
+ ПараметрыДанных.ОтложенноеОбновление
+ Equal
+ false
+
+
+ ru
+ // Не оперативное обновление - выбираем все
+
+
+
+
+ РежимВыполнения
+ NotEqual
+ Отложенно
+
-
- МонопольныйРежим
- NotEqual
- ПараметрыДанных.Ложь
+
+ AndGroup
+
+ ПараметрыДанных.ОперативноеОбновление
+ Equal
+ true
+
+
+ ru
+ // Не оперативное обновление - выбираем все
+
+
+
+
+ OrGroup
+
+ РежимВыполнения
+ Equal
+ Монопольно
+
+
+ ru
+ // При проверке оперативного - только требующие монопольного режима
+
+
+
+
+ AndGroup
+
+ МонопольныйРежим
+ NotEqual
+ ПараметрыДанных.Ложь
+
+
+ ru
+ // При проверке оперативного - только требующие монопольного режима
+
+
+
+
+ РежимВыполнения
+ NotFilled
+
+
+ ru
+ // При проверке оперативного - только требующие монопольного режима
+
+
+
+
+
+ ru
+ // Для обратной совместимости
+
+
+
+
+
+
+ AndGroup
+
+ ПараметрыДанных.ОтложенноеОбновление
+ Equal
+ true
+
+
+ РежимВыполнения
+ Equal
+ Отложенно
+ ru
- // При проверке оперативного - только требующие монопольного режима
+ // Выбор только отложенных обработчиков
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 @@
- ДокументПомеченНаУделениеКоннекторНиз
+ ДокументПомеченНаУдалениеКоннекторНизRectangle11
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 @@
-
+БиблиотекаСтандартныхПодсистемruБиблиотека стандартных подсистем, редакция 2.1
-
-
-
-
-
-
-
+
+
+
+
+
+
+ ManagedApplicationPersonalComputerRussianRole.ПолныеПраваФирма "1С"
- 2.1.3.51
+ 2.1.4.34http://downloads.v8.1c.ru/tmplts/true
@@ -63,12 +63,12 @@
Subsystem.НастройкаИАдминистрированиеSubsystem.СтандартныеПодсистемы
- StyleItem.ВидДняВоскресеньеЦвет
- StyleItem.ВидДняНеУказанЦвет
- StyleItem.ВидДняПраздникЦвет
- StyleItem.ВидДняПредпраздничныйЦвет
- StyleItem.ВидДняРабочийЦвет
- StyleItem.ВидДняСубботаЦвет
+ StyleItem.ВидДняПроизводственногоКалендаряВоскресеньеЦвет
+ StyleItem.ВидДняПроизводственногоКалендаряНеУказанЦвет
+ StyleItem.ВидДняПроизводственногоКалендаряПраздникЦвет
+ StyleItem.ВидДняПроизводственногоКалендаряПредпраздничныйЦвет
+ StyleItem.ВидДняПроизводственногоКалендаряРабочийЦвет
+ StyleItem.ВидДняПроизводственногоКалендаряСубботаЦветStyleItem.ВидимыйВариантОтчетаЦветStyleItem.ВыполненнаяЗадачаStyleItem.ГруппаВариантовОтчетовЦвет
@@ -117,7 +117,19 @@
CommonPicture.Вопрос32CommonPicture.ВосклицательныйЗнакСерыйCommonPicture.Встреча
+ CommonPicture.ВходящееСообщениеCommonPicture.ВыполнитьРегламентноеЗаданиеВручную
+ CommonPicture.ВыравниваниеПоЛевомуКраю
+ CommonPicture.ВыравниваниеПоПравомуКраю
+ CommonPicture.ВыравниваниеПоЦентру
+ CommonPicture.ВыравниваниеПоШирине
+ CommonPicture.ГраницаВезде
+ CommonPicture.ГраницаВнутри
+ CommonPicture.ГраницаВокруг
+ CommonPicture.ГраницаСверху
+ CommonPicture.ГраницаСлева
+ CommonPicture.ГраницаСнизу
+ CommonPicture.ГраницаСправаCommonPicture.ДлительнаяОперация48CommonPicture.ДобавитьДопСвойствоВНаборCommonPicture.ДобавитьПростойВопрос
@@ -157,6 +169,7 @@
CommonPicture.ЗнакСтопЧБCommonPicture.ЗначокЗаставкиВнешнейОперацииCommonPicture.ИерархическийСписок
+ CommonPicture.ИзменитьШрифтCommonPicture.ИнформацияCommonPicture.Информация32CommonPicture.ИнформацияПоНедоступнымПолям
@@ -164,6 +177,7 @@
CommonPicture.ИспользоватьПользовательскийМакетCommonPicture.ИспользоватьПоставляемыйМакетCommonPicture.ИсторияВерсий
+ CommonPicture.ИсходящееСообщениеCommonPicture.КоллекцияВариантыВажностиCommonPicture.КоллекцияВидыАктивныхПользователейCommonPicture.КоллекцияВидыСобытийЖурналаРегистрации
@@ -189,10 +203,14 @@
CommonPicture.КонтактнаяИнформацияCommonPicture.КонтактнаяИнформацияНеактуальноCommonPicture.КонтактнаяИнформацияПерейтиПоСсылке
+ CommonPicture.КурсивноеНачертание
+ CommonPicture.НаписатьSMSCommonPicture.НапоминаниеCommonPicture.НастройкаВыполненияРегламентныхЗаданийCommonPicture.НастройкаИАдминистрирование48
+ CommonPicture.НетГраницыCommonPicture.ОбновитьФайлИзФайлаНаДиске
+ CommonPicture.ОбъединитьЯчейкиCommonPicture.ОпубликоватьФайлCommonPicture.ОрганайзерCommonPicture.ОсвободитьФайл
@@ -219,10 +237,12 @@
CommonPicture.ПодменюCommonPicture.ПодписанЭЦПCommonPicture.Подсистема
+ CommonPicture.ПодчеркиваниеCommonPicture.ПоказатьОтличияCommonPicture.ПоказатьТолькоВыбранныеРолиCommonPicture.ПолнотекстовыйПоискДалееCommonPicture.ПолнотекстовыйПоискНазад
+ CommonPicture.ПолужирноеНачертаниеCommonPicture.ПревьюТабличногоВопросаОтветыВКолонкахCommonPicture.ПревьюТабличногоВопросаОтветыВСтрокахCommonPicture.ПревьюТабличногоВопросаОтветыСтрокиИКолонки
@@ -284,8 +304,14 @@
CommonPicture.СтрелкаВнизСправкаCommonPicture.ТелефонныйЗвонокCommonPicture.ТипыМакетов
+ CommonPicture.ТолстаяГраницаВокруг
+ CommonPicture.ТолстаяГраницаСверху
+ CommonPicture.ТолстаяГраницаСнизуCommonPicture.УведомлениеСервиса
+ CommonPicture.УвеличитьШрифтCommonPicture.УдалитьПользовательскийМакет
+ CommonPicture.УменьшитьШрифт
+ CommonPicture.УспешноCommonPicture.УстановитьОтветственногоЗаВзаимодействиеCommonPicture.УстановитьПредметВзаимодействияCommonPicture.УстановитьПризнакРассмотреноДляВзамодействия
@@ -301,6 +327,8 @@
CommonPicture.ФорматWord2007CommonPicture.ФорматПустойCommonPicture.ФорумСервиса
+ CommonPicture.ЦветТекста
+ CommonPicture.ЦветФонаCommonPicture.ЭлектронноеПисьмоCommonPicture.ЭлектронноеПисьмоВходящееCommonPicture.ЭлектронноеПисьмоИсходящее
@@ -308,6 +336,7 @@
SessionParameter.ВидыДоступаБезОграниченияSessionParameter.ВидыДоступаЕдинственныеДляТипаЗначенияДоступаSessionParameter.ВидыДоступаЧерезПраваПоЗначениямДоступа
+ SessionParameter.ВыполняетсяОбновлениеИБSessionParameter.ДатаОбновленияПовторноИспользуемыхЗначенийМРОSessionParameter.ЗагрузкаПараметровРаботыПрограммыSessionParameter.ИспользуемыеПланыОбмена
@@ -326,8 +355,10 @@
SessionParameter.ОграничиватьДоступПоВидуУсловиеSessionParameter.ОграничиватьДоступПоВидуУчетныеЗаписиЭлектроннойПочтыSessionParameter.ПараметрыКлиентаНаСервере
+ SessionParameter.ПаролиСинхронизацииДанныхSessionParameter.ПравилаВыборочнойРегистрацииОбъектовSessionParameter.ПравилаРегистрацииОбъектов
+ SessionParameter.ПриоритетныеДанныеОбменаSessionParameter.ТекущийВнешнийПользовательSessionParameter.ТекущийПользовательRole.АдминистраторСистемы
@@ -348,6 +379,7 @@
Role.ДобавлениеИзменениеПользователейRole.ДобавлениеИзменениеРассылокОтчетовRole.ДобавлениеИзменениеРолейИсполнителей
+ Role.ДобавлениеИзменениеСтранМираRole.ДобавлениеИзменениеФизическихЛицRole.ДобавлениеИзменениеШаблоновАнкетRole.ЗапускAutomation
@@ -399,6 +431,7 @@
CommonTemplate.ИнструкцияКакВыполнитьУстановкуОбновленияВручнуюCommonTemplate.ИнформационныеСсылкиCommonTemplate.КомпонентаTWAIN
+ CommonTemplate.КомпонентаСклоненияФИОCommonTemplate.ПолучениеДереваОбработчиковОбновленияCommonTemplate.СоответствиеТэговОбщимФормамCommonTemplate.СтруктураПодчиненности
@@ -495,11 +528,12 @@
CommonModule.КалендарныеГрафикиСлужебныйВМоделиСервисаCommonModule.КомандыРаботыСБизнесПроцессамиКлиентCommonModule.КомандыРаботыСФайламиКлиент
- CommonModule.КонтактнаяИнформацияВызовСервера
- CommonModule.КонтактнаяИнформацияКлиент
+ CommonModule.КонтактнаяИнформацияXMLCommonModule.КонтактнаяИнформацияКлиентСерверCommonModule.КонтактнаяИнформацияКлиентСерверПовтИспCommonModule.КонтактнаяИнформацияСлужебный
+ CommonModule.КонтактнаяИнформацияСлужебныйВызовСервера
+ CommonModule.КонтактнаяИнформацияСлужебныйПовтИспCommonModule.КонтрольДинамическогоОбновленияКонфигурацииCommonModule.КонтрольДинамическогоОбновленияКонфигурацииГлобальныйCommonModule.КонтрольДинамическогоОбновленияКонфигурацииКлиент
@@ -538,6 +572,7 @@
CommonModule.ОбновлениеИнформационнойБазыCommonModule.ОбновлениеИнформационнойБазыБСПCommonModule.ОбновлениеИнформационнойБазыВызовСервера
+ CommonModule.ОбновлениеИнформационнойБазыГлобальныйCommonModule.ОбновлениеИнформационнойБазыКлиентCommonModule.ОбновлениеИнформационнойБазыКлиентПереопределяемыйCommonModule.ОбновлениеИнформационнойБазыПереопределяемый
@@ -608,6 +643,7 @@
CommonModule.ПрисоединенныеФайлыСлужебныйCommonModule.ПрисоединенныеФайлыСлужебныйВызовСервераCommonModule.ПрисоединенныеФайлыСлужебныйКлиент
+ CommonModule.ПроверкаЛегальностиПолученияОбновленияГлобальныйCommonModule.ПроверкаЛегальностиПолученияОбновленияКлиентCommonModule.РаботаВМоделиСервисаCommonModule.РаботаВМоделиСервисаПереопределяемый
@@ -652,6 +688,8 @@
CommonModule.РезервноеКопированиеИБКлиентГлобальныйCommonModule.РезервноеКопированиеИБСерверCommonModule.РезервноеКопированиеОбластейДанных
+ CommonModule.РезервноеКопированиеОбластейДанныхДанныеФормИнтерфейс
+ CommonModule.РезервноеКопированиеОбластейДанныхДанныеФормРеализацияWebСервисCommonModule.РезервноеКопированиеОбластейДанныхПовтИспCommonModule.СоединенияИБCommonModule.СоединенияИБВызовСервера
@@ -668,10 +706,17 @@
CommonModule.СообщенияВМоделиСервисаПереопределяемыйCommonModule.СообщенияВМоделиСервисаПовтИспCommonModule.СообщенияВМоделиСервисаРазделениеДанных
+ CommonModule.СообщенияИнформационногоЦентраИнтерфейсCommonModule.СообщенияИнформационногоЦентраОбработчикСообщения
+ CommonModule.СообщенияИнформационногоЦентраОбработчикСообщения_1_0_1_1
+ CommonModule.СообщенияИнформационногоЦентраРеализация
+ CommonModule.СообщенияКонтрольДополнительныхОтчетовИОбработокИнтерфейс
+ CommonModule.СообщенияКонтрольДополнительныхОтчетовИОбработокОбработчикТрансляции_1_0_0_1CommonModule.СообщенияКонтрольРезервногоКопированияИнтерфейс
+ CommonModule.СообщенияКонтрольРезервногоКопированияОбработчикТрансляции_1_0_2_1CommonModule.СообщенияКонтрольУдаленногоАдминистрированияИнтерфейсCommonModule.СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_3
+ CommonModule.СообщенияКонтрольУдаленногоАдминистрированияОбработчикТрансляции_1_0_2_4CommonModule.СообщенияОбменаДаннымиКонтрольИнтерфейсCommonModule.СообщенияОбменаДаннымиКонтрольОбработчикСообщения_2_1_2_1CommonModule.СообщенияОбменаДаннымиОбработчикСообщения
@@ -683,10 +728,15 @@
CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_2CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_3CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_4
+ CommonModule.СообщенияУдаленногоАдминистрированияОбработчикСообщения_1_0_3_5CommonModule.СообщенияУдаленногоАдминистрированияРеализацияCommonModule.СообщенияУправлениеРезервнымКопированиемИнтерфейсCommonModule.СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_2_1
+ CommonModule.СообщенияУправлениеРезервнымКопированиемОбработчикСообщения_1_0_3_1CommonModule.СообщенияУправлениеРезервнымКопированиемРеализация
+ CommonModule.СообщенияУправленияДополнительнымиОтчетамиИОбработкамиИнтерфейс
+ CommonModule.СообщенияУправленияДополнительнымиОтчетамиИОбработкамиОбработчикСообщения_1_0_1_1
+ CommonModule.СообщенияУправленияДополнительнымиОтчетамиИОбработкамиРеализацияCommonModule.СообщенияУправленияПриложениямиИнтерфейсCommonModule.СтандартныеПодсистемыВызовСервераCommonModule.СтандартныеПодсистемыКлиент
@@ -695,7 +745,6 @@
CommonModule.СтандартныеПодсистемыПовтИспCommonModule.СтандартныеПодсистемыСерверCommonModule.СтроковыеФункцииКлиентСервер
- CommonModule.СтруктураПодчиненностиCommonModule.СтруктураПодчиненностиПереопределяемыйCommonModule.ТрансляцияXDTOCommonModule.ТрансляцияXDTOПереопределяемый
@@ -713,12 +762,12 @@
CommonModule.УправлениеКонтактнойИнформациейКлассификаторыCommonModule.УправлениеКонтактнойИнформациейКлиентCommonModule.УправлениеКонтактнойИнформациейКлиентСервер
- CommonModule.УправлениеКонтактнойИнформациейСобытияCommonModule.УправлениеПечатьюCommonModule.УправлениеПечатьюMSWordКлиентCommonModule.УправлениеПечатьюOOWriterКлиентCommonModule.УправлениеПечатьюВызовСервераCommonModule.УправлениеПечатьюКлиент
+ CommonModule.УправлениеПечатьюКлиентПовтИспCommonModule.УправлениеПечатьюПереопределяемыйCommonModule.УправлениеСвойствамиCommonModule.УправлениеСвойствамиКлиент
@@ -752,17 +801,22 @@
XDTOPackage.AgentScriptsXDTOPackage.ApdexExportXDTOPackage.ApplicationExtensionsCompatibility_1_0_0_1
+ XDTOPackage.ApplicationExtensionsControl_1_0_1_1
+ XDTOPackage.ApplicationExtensionsManagement_1_0_1_1XDTOPackage.ApplicationExtensionsManifest_1_0_0_1XDTOPackage.ApplicationExtensionsPermissions_1_0_0_1XDTOPackage.CurrencyRatesXDTOPackage.DataDump_1_0_1_1
+ XDTOPackage.MessageInfoCenter_1_0_1_1XDTOPackage.SuppliedDataXDTOPackage.АдминистрированиеОбменаДаннымиКонтрольXDTOPackage.АдминистрированиеОбменаДаннымиУправлениеXDTOPackage.КонтактнаяИнформацияXDTOPackage.КонтрольРезервногоКопированияОбластейДанных_1_0_2_1
+ XDTOPackage.КонтрольРезервногоКопированияОбластейДанных_1_0_3_1XDTOPackage.КонтрольУдаленногоАдминистрирования_1_0_2_3XDTOPackage.КонтрольУдаленногоАдминистрирования_1_0_2_4
+ XDTOPackage.КонтрольУдаленногоАдминистрирования_1_0_2_5XDTOPackage.ОбменДаннымиКонтрольXDTOPackage.ОбменДаннымиУправлениеXDTOPackage.Сообщения
@@ -771,8 +825,10 @@
XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_2XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_3XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_4
+ XDTOPackage.УдаленноеАдминистрированиеВМоделиСервиса_1_0_3_5XDTOPackage.УправлениеПриложениямиXDTOPackage.УправлениеРезервнымКопированиемОбластейДанных_1_0_2_1
+ XDTOPackage.УправлениеРезервнымКопированиемОбластейДанных_1_0_3_1WebService.ExchangeWebService.Exchange_2_0_1_6WebService.InterfaceVersion
@@ -800,6 +856,7 @@
EventSubscription.ВыполнитьДействияПриЗаписиПрисоединенногоФайлаВзаимодействияEventSubscription.ДополнительныеОтчетыИОбработкиКонтрольПравомерностиИзмененияРеквизитовEventSubscription.ДополнительныеОтчетыИОбработкиКонтрольУдаления
+ EventSubscription.ЗаписатьВерсиюОбъектаПриОбменеДаннымиEventSubscription.ЗаписатьВСписокБизнесПроцессовEventSubscription.ЗаписатьЗависимыеНаборыЗначенийДоступаEventSubscription.ЗаписатьНаборыЗначенийДоступа
@@ -841,7 +898,10 @@
ScheduledJob.ОбновлениеАгрегатовScheduledJob.ОбновлениеИндексаППДScheduledJob.ОбновлениеОбластейДанных
+ ScheduledJob.ОбновлениеСтатусовДоставкиSMSScheduledJob.ОбслуживаниеОбластейДанных
+ ScheduledJob.ОтложенноеОбновлениеИБ
+ ScheduledJob.ОтправкаSMSScheduledJob.ОтправкаИПолучениеСообщенийСистемыScheduledJob.ПерестроениеАгрегатовScheduledJob.ПересчетТекущихЗначенийОтносительныхДатЗапретаИзменения
@@ -957,7 +1017,9 @@
CommonCommand.СозданиеНачальногоОбразаСФайламиCommonCommand.СоздатьЗаметкуПоПредметуCommonCommand.СоздатьРезервнуюКопию
+ CommonCommand.СоставОтправляемыхДанныхCommonCommand.СтруктураПодчиненности
+ CommonCommand.УдалитьНастройкуСинхронизацииCommonCommand.УстановитьНапоминаниеПоПредметуCommonCommand.УстановитьРасширениеРаботыСФайламиCommonCommand.ФайлыВТоме
@@ -968,28 +1030,30 @@
CommandGroup.ПараметрыОбменаДаннымиCommandGroup.ПечатьConstant.АдресАгентаСервиса
- Constant.АдресВебСервисаОбменаДанными
+ Constant.АдресПубликацииИнформационнойБазыВИнтернете
+ Constant.АдресУправленияКонференциейConstant.АлгоритмПодписиConstant.АлгоритмХешированияConstant.АлгоритмШифрованияConstant.БлокировкаОтправкиБыстрыхСообщенийConstant.ВерсияКлассификатораБанковРФConstant.ВнутреннийАдресМенеджераСервиса
- Constant.ВыполнитьЗагрузкуПараметровРаботыПрограммыConstant.ВыполнитьРезервноеКопированиеОбластиДанныхConstant.ВыполнятьЗамерыПроизводительностиConstant.ВыполнятьПроверкуЭЦПНаСервереConstant.ДатаОбновленияПовторноИспользуемыхЗначенийМРО
+ Constant.ДатаПоследнегоСтартаКлиентскогоСеансаConstant.ДатаПоследнейВыгрузкиЗамеровПроизводительностиUTCConstant.ДатаУведомленияОНовыхЗадачахConstant.ДетализироватьОбновлениеИБВЖурналеРегистрацииConstant.ЗаголовокСистемы
+ Constant.ЗагрузитьСообщениеОбменаДаннымиConstant.ЗапрещатьЗагрузкуФайловПоРасширению
- Constant.ЗапуститьОбновлениеИнформационнойБазыConstant.ЗарегистрированыИзмененияДанныхConstant.ИзвлекатьТекстыФайловНаСервереConstant.ИзменятьЗаданияЗаднимЧисломConstant.ИмяПользователяАгентаСервиса
+ Constant.ИмяПользователяКонференцииИнформационногоЦентраConstant.ИмяСлужебногоПользователяМенеджераСервисаConstant.ИспользованиеКаталогаДополнительныхОтчетовИОбработокВМоделиСервисаConstant.ИспользоватьАвтономнуюРаботуВМоделиСервиса
@@ -1049,7 +1113,9 @@
Constant.ПараметрыСлужебныхСобытийConstant.ПарольДляОтправкиSMSConstant.ПарольПользователяАгентаСервиса
+ Constant.ПарольПользователяКонференцииИнформационногоЦентраConstant.ПарольСлужебногоПользователяМенеджераСервиса
+ Constant.ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапускомConstant.ПоддержкаРезервногоКопированияConstant.ПредставлениеОбластиДанныхConstant.ПрефиксОбластиДанных
@@ -1061,6 +1127,7 @@
Constant.РазмерБлокаПередачиФайлаConstant.РазрешитьВыполнениеДополнительныхОтчетовИОбработокРегламентнымиЗаданиямиВМоделиСервисаConstant.РежимИспользованияИнформационнойБазы
+ Constant.СведенияОбОбновленииИБConstant.СинхронизироватьДанныеСПриложениемВИнтернетеПриЗавершенииРаботыПрограммыConstant.СинхронизироватьДанныеСПриложениемВИнтернетеПриНачалеРаботыПрограммыConstant.СообщениеБлокировкиПриОбновленииКонфигурации
@@ -1072,6 +1139,7 @@
Constant.СписокРасширенийФайловOpenDocumentОбластиДанныхConstant.СтатусОбновленияКонфигурацииConstant.ТипПровайдераЭЦП
+ Constant.УдалитьПоказыватьКомандуДополнительныеПечатныеФормыConstant.ХранитьФайлыВТомахНаДискеConstant.ЧасовойПоясОбластиДанныхConstant.ЭтоАвтономноеРабочееМесто
@@ -1079,9 +1147,7 @@
CommonForm.АвтономнаяРаботаВМоделиСервисаCommonForm.АдреснаяКнигаCommonForm.АутентификацияВСервисе
- CommonForm.ВводАдресаCommonForm.ВводПароляСОписаниями
- CommonForm.ВводТелефонаCommonForm.ВключениеЖурналаРегистрацииCommonForm.ВопросCommonForm.ВопросОбУстановкеРасширенияРаботыСФайлами
@@ -1122,21 +1188,16 @@
CommonForm.НастройкаОтправкиSMSCommonForm.НастройкиАгентаСервисаCommonForm.НастройкиРегистрацииСобытийДоступаКПерсональнымДанным
- CommonForm.НастройкиРезервногоКопированияПриложенийCommonForm.НастройкиЭЦП
- CommonForm.НерекомендуемаяВерсияПлатформыCommonForm.ОбменыДаннымиCommonForm.ОписаниеИзмененийСистемыCommonForm.ОтключениеАвтономногоРабочегоМеста
- CommonForm.ОтображениеНовостейCommonForm.ОтправкаСообщения
- CommonForm.ОтправкаСообщенияВТехподдержкуCommonForm.ОтправкаТабличныхДокументовПоПочтеCommonForm.ОтчетОСохраненииФайловCommonForm.ПанельОтчетовCommonForm.ПараметрыАдминистрированияСервернойИБCommonForm.ПараметрыПроксиСервера
- CommonForm.ПарольДляСинхронизацииДанныхCommonForm.ПерсональныеНастройкиЭЦПCommonForm.ПечатьДокументовCommonForm.ПодготовкаНовогоПисьма
@@ -1152,11 +1213,11 @@
CommonForm.ПрисоединенныеФайлыCommonForm.ПрисоединенныйФайлCommonForm.РедактированиеДополнительныхСведений
+ CommonForm.РедактированиеТабличногоДокументаCommonForm.СертификатЭЦПCommonForm.СинхронизацияДанныхВМоделиСервисаCommonForm.СозданиеНачальногоОбразаСФайламиCommonForm.СозданиеРезервнойКопии
- CommonForm.СообщениеОНеудачномОбновленииCommonForm.СохранениеПечатнойФормыCommonForm.СтруктураПодчиненностиCommonForm.УстановкаВедущейКонечнойТочки
@@ -1208,6 +1269,7 @@
Catalog.ПрофилиГруппДоступаCatalog.РассылкиОтчетовCatalog.РолиИсполнителей
+ Catalog.СообщениеSMSПрисоединенныеФайлыCatalog.СообщенияОбластейДанныхCatalog.СообщенияСистемыCatalog.СтраныМира
@@ -1215,7 +1277,6 @@
Catalog.ТелефонныйЗвонокПрисоединенныеФайлыCatalog.ТипыИнформацииИнформационногоЦентраCatalog.ТомаХраненияФайлов
- Catalog.УдалитьКлассификаторВалютCatalog.УчетныеЗаписиЭлектроннойПочтыCatalog.ФайлыCatalog.ФизическиеЛица
@@ -1227,6 +1288,7 @@
Document.ВстречаDocument.ЗапланированноеВзаимодействиеDocument.НазначениеОпросов
+ Document.СообщениеSMSDocument.ТелефонныйЗвонокDocument.ЭлектронноеПисьмоВходящееDocument.ЭлектронноеПисьмоИсходящее
@@ -1260,7 +1322,9 @@
Enum.РежимыИспользованияИнформационнойБазыEnum.РезультатыВыполненияОбменаEnum.СостоянияБизнесПроцессов
+ Enum.СостоянияДокументаСообщениеSMSEnum.СостоянияЗаданий
+ Enum.СостоянияСообщенияSMSEnum.СпособыPOP3АутентификацииEnum.СпособыSMTPАутентификацииEnum.СпособыВызоваДополнительныхОбработок
@@ -1286,7 +1350,6 @@
Enum.ТипыФайловДляВстроенногоРедактораEnum.ТипыХраненияФайловEnum.УдалитьВидыКалендарей
- Enum.УдалитьВидыПоставляемыхДанныхEnum.УдалитьКлючевыеОперацииEnum.УровниПроизводительностиEnum.ФорматыСканированногоИзображения
@@ -1326,8 +1389,10 @@
DataProcessor.КонвертацияОбъектовРаспределенныхИнформационныхБазDataProcessor.ЛегальностьПолученияОбновленийDataProcessor.НастройкаРезервногоКопированияИБ
+ DataProcessor.НастройкаРезервногоКопированияПриложенияDataProcessor.НастройкиПользователейDataProcessor.НерекомендуемаяВерсияПлатформы
+ DataProcessor.ОбновлениеИнформационнойБазыDataProcessor.ОбновлениеКонфигурацииDataProcessor.ОценкаПроизводительностиDataProcessor.ПанельАдминистрированияБСП
@@ -1338,6 +1403,7 @@
DataProcessor.ПомощникНастройкиСинхронизацииДанныхМеждуПриложениямиВИнтернетеDataProcessor.ПомощникСозданияАвтономногоРабочегоМестаDataProcessor.ПомощникСозданияОбменаДанными
+ DataProcessor.РегистрацияИзмененийДляОбменаДаннымиDataProcessor.РегламентныеИФоновыеЗаданияDataProcessor.РезервноеКопированиеИБDataProcessor.СдвигГраницыИтоговПриЗавершенииРаботы
@@ -1405,6 +1471,7 @@
InformationRegister.ПравилаДляОбменаДаннымиInformationRegister.ПредметыПапкиВзаимодействийInformationRegister.ПрисоединенныеФайлы
+ InformationRegister.ПросмотренныеДанныеИнформационногоЦентраInformationRegister.ПутиМодулейКриптографииСерверовLinuxInformationRegister.РабочиеКаталогиФайловInformationRegister.РезультатыОбменаДанными
@@ -1425,13 +1492,12 @@
InformationRegister.УдалитьБлокировкиСеансовОбластиДанныхInformationRegister.УдалитьВерсииПодсистемInformationRegister.УдалитьЗамерыВремени
- InformationRegister.УдалитьКурсыВалютПоКлассификаторуInformationRegister.УдалитьОбластиДанныхInformationRegister.УдалитьОбластиКРезервномуКопированиюInformationRegister.УдалитьОчередьЗаданийInformationRegister.УдалитьОчередьИзвлеченияТекстаInformationRegister.УдалитьПраваПоЗначениямДоступа
- InformationRegister.УдалитьСвязиПоставляемыхДанных
+ InformationRegister.УдалитьСтраныМираInformationRegister.ФайлыВРабочемКаталогеInformationRegister.ХранимыеФайлыВерсийChartOfCharacteristicTypes.ВидыДоступа
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 @@
-
-
-
-
-
-
-
- АдресВебСервисаОбменаДанными
-
- ru
- Адрес веб-сервиса обмена данными
-
-
- String
-
-
-
-
- Managed
-
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 @@
+
+
+
+
+
+
+
+ АдресПубликацииИнформационнойБазыВИнтернете
+
+ ru
+ Адрес публикации информационной базы в интернете
+
+
+ String
+
+ 250
+
+
+ true
+
+
+ Managed
+
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 @@
+
+
+
+
+
+
+
+ АдресУправленияКонференцией
+
+ ru
+ Адрес управления конференцией
+
+
+ String
+
+
+
+
+ Managed
+
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 @@
+
+
+
+
+
+
+
+ ДатаПоследнегоСтартаКлиентскогоСеанса
+
+ ru
+ Дата последнего старта клиентского сеанса
+
+
+ Date
+
+ Date
+
+
+
+ ru
+ Универсальная дата последнего запуска клиентского сеанса
+
+
+
+ Managed
+
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 @@
- ЗапуститьОбновлениеИнформационнойБазы
+ ЗагрузитьСообщениеОбменаДаннымиru
- Запустить обновление информационной базы
+ Загрузить сообщение обмена даннымиBoolean
+
+ ru
+ В подчиненном узле РИБ указывает необходимость загрузки сообщения обмена после получения изменений конфигурации, но до запуска обновления информационной базы.
+ Managed
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 @@
+
+
+
+
+
+
+
+ ИмяПользователяКонференцииИнформационногоЦентра
+
+ ru
+ Имя пользователя конференции информационного центра
+
+
+ String
+
+
+
+
+ Managed
+
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 @@
+
+
+
+
+
+
+
+ ПарольПользователяКонференцииИнформационногоЦентра
+
+ ru
+ Пароль пользователя конференции информационного центра
+
+
+ String
+
+
+ true
+
+
+ Managed
+
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 @@
- ВыполнитьЗагрузкуПараметровРаботыПрограммы
+ ПовторитьЗагрузкуСообщенияОбменаДаннымиПередЗапускомru
- Выполнить загрузку параметров работы программы
+ Повторить загрузку сообщения обмена данными перед запускомBoolean
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 @@
ПрефиксУзлаРаспределеннойИнформационнойБазыru
- Префикс узла распределенной информационной базы
+ Префикс информационной базыString
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 @@
ValueStorage
- trueruСписок всех версий, для которых есть описания изменений системы
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 @@
+
+
+
+
+
+
+
+ СведенияОбОбновленииИБ
+
+ ru
+ Сведения об обновлении ИБ
+
+
+ ValueStorage
+
+
+ ru
+ Содержит информацию об основном и отложенном циклах обновления.
+
+
+
+ Managed
+
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 @@
+
+
+
+
+
+
+
+ УдалитьПоказыватьКомандуДополнительныеПечатныеФормы
+
+ ru
+ Удалить показывать команду дополнительные печатные формы
+
+ Переназначить ФО.ИспользоватьДополнительныеПечатныеФормы на эту константу после окончательного перевода команд печати на версию 2.1.4
+
+ Boolean
+
+
+
+ Managed
+
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 @@
-
+
Если один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows нужно запустить тонкий или толстый клиент, и на нем открыть обработку «Автоматическое извлечение текстов». Эта обработка в автоматическом режиме будет извлекать текст из файлов. По умолчанию интервал времени выполнения равен 60 секундам.
\ 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 @@
-
+
Если один или несколько рабочих процессов сервера работают под Linux, а часть или все клиенты подключаются с помощью веб-клиента, то в информационной базе могут быть добавлены файлы, текст из которых не извлечен, и соответственно эти файлы не могут быть найдены полнотекстовым поиском по содержимому. В этом случае на одном из клиентских компьютеров, работающих под управлением ОС Microsoft Windows нужно запустить тонкий или толстый клиент, и на нем открыть обработку «Автоматическое извлечение текстов». Эта обработка в автоматическом режиме будет извлекать текст из файлов. По умолчанию интервал времени выполнения равен 60 секундам.
Активные пользователи - это пользователи, которые сейчас работают с информационной базой. В этом списке отображаются не только пользователи, работающие с информационной базой при помощи приложений "Тонкий клиент", "Веб-клиент" или "Конфигуратор", но и такие пользователи как "COM-соединение", "WS-соединение", "Фоновое задание" и т.п.
Для анализа работы пользователя можно перейти к журналу регистрации, выбрав пользователя в списке и выполнив команду "Журнал регистрации".
В клиент-серверном режиме работы также доступна команда "Завершить сеанс". Для того чтобы ею воспользоваться, может потребовать настроить дополнительные параметры подключения к серверу 1С:Предприятие (см. команду "Параметры администрирования информационной базы" в меню "Все действия").
\ 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 @@
-
+
Список содержит список пользователей, работающих в данный момент времени в системе.
Для удобства просмотра списка можно использовать сортировку по любой колонке. Полужирным шрифтом выделена строка, соответствующая тому сеансу работы пользователя, из которого открыт список активных пользователей.
С помощью команд меню Все действия можно настроить форму и вывести данные списка в табличный и текстовый документ. По команде Журнал регистрации можно перейти к журналу регистрации с установленным фильтром по выбранному пользователю.
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 @@
КодДляРазблокировкиКонтекстноеМеню11
- trueInputFieldEnter
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 @@
-
+
Имеется возможность временно запретить работу пользователей с программой, предварительно завершив работу всех активных пользователей (включая пользователя, инициировавшего блокировку). Эта возможность полезна, например, когда для выполнения административных действий требуется, чтобы текущие пользователи завершили свои сеансы работы, и в то же время новые пользователи не могли войти в программу.
При установке блокировки можно задать следующие параметры:
Период (время) начала действия и окончания действия блокировки;
@@ -9,7 +9,7 @@
Для снятия блокировки до истечения срока блокировки нужно:
войти в приложение и открыть эту форму, выполнив команду "Снять блокировку";
-
открыть приложение, используя параметры запуска "/С РазрешитьРаботуПользователей" и "/UC" с кодом разрешения доступа, который был указан при установке блокировки.
Действия по завершению работы в клиентском приложении
+
открыть приложение, используя параметры запуска "/С РазрешитьРаботуПользователей" и "/UC" с кодом разрешения доступа, который был указан при установке блокировки. Примечание: запуск клиентского приложения с параметром "РазрешитьРаботуПользователей" предназначен только для снятия блокировки и не предназначен для работы с программой.
Действия по завершению работы в клиентском приложении
Примерно за 15 минут до начала действия блокировки, всем активным пользователем выдаются предупреждения о планируемом времени начала блокировки соединений и заданный текст сообщения блокировки.
В форме необходимо указать адресные сведения. При заполнении формы, можно использовать адресный классификатор.
-
Значения полей дом, корпус, кв.) можно менять путем выбора названия из выпадающего списка, или путем ручного ввода, в поле наименования адресного реквизита, нового названия. Например, название поля корпус можно изменить на строение (путем выбора из выпадающего списка) или на произвольное название, например, литера (путем ввода в поле наименования слова "литера"). Наименование введенное ранее вручную, при указании нового значения адресного реквизита, не запоминается.
\ No newline at end of file
+
+
Форма предназначена для ввода адреса по шаблону. При заполнении формы возможно использование адресного классификатора.
+
Поле "Страна" позволяет выбрать страну адреса. Редактирование адресов за пределами России производится в общем поле, без учета частей адреса
+
Поле "Индекс" предназначено для ввода почтового индекса, соответствующего данному адресу.Если адрес найден а вдресном классификаторе, то индекс может быть проставлен автоматически.
+
Поле "Город, населенный пункт" предназначено для ввода региона, города и т.п. При необходимости можно выбрать или ввести части адреса детально, нажав на кнопку выбора.
+
Поле "Улица" предназначено для выбора или ввода улицы адреса.
+
Поля "Дом", "Корпус", "Квартира" позволяют ввести соответствующие части адреса. Можно изменить эти варианты, выбрав значения из выпадающего списка или добавить дополнительные поля для ввода других предопределенных частей адреса, таких как "Строение", "Литера", "Сооружение", "Участок", "Офис", "Бокс", "Помещение", "Комната". Для этого необходимо воспользоваться кнопкой "Добавить".
Например, для ввода адреса "Санкт-Петербург, Пискаревский проспект, дом 2, корпус 2, литер Щ, офис 12345" необходимо ввести:
+
В поле "Город, населенный пункт" - Санкт-Петербург г.
+
В поле "Улица" - Пискаревский пр-кт.
+
В поле значения "Дом" указать 2.
+
В поле значения "Корпус" - 2.
+
Для ввода литеры необходимо добавить поле кнопкой "Добавить", выбрать из выпадающего списка значение "Литера" и проставить в поле значение Щ.
+
Вместо "Квартира" выбрать из выпадающего списка значение "Офис" и ввести в поле значения 12345.
Аналогично, для ввода адреса, содержащего другие значения полей, например "Москва, улица Адмирала Лазарева, домовладение 89, корпус 16, строение 1 необходимо:
+
В поле "Город, населенный пункт" ввести Москва г.
+
В поле "Улица" - Адмирала Лазарева ул.
+
Вместо "Дом" выбрать из выпадающего списка значение "Домовладение", ввести в поле значения 89.
+
В поле значения "Корпус" указать 16.
+
Добавить поле кнопкой "Добавить", выбрать из выпадающего списка значение "Строение", проставить в поле значение 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 @@
-1Left
+
+ BeforeClose
+ ПередЗакрытием
+ OnCreateAtServerПриСозданииНаСервере
- DontBlock
+ LockOwnertruetrueVertical
@@ -873,6 +897,23 @@
true
+
+ ВозвращатьСписокЗначений
+
+ ru
+ Возвращать список значений
+
+ 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 @@
-
-
-
- ФормаКоманднаяПанель
- -1
- Left
- true
-
-
- OnOpen
- ПриОткрытии
-
-
- OnCreateAtServer
- ПриСозданииНаСервере
-
- DontBlock
- true
- true
- true
- Vertical
- true
- true
- true
- UseIfNecessary
- auto
- true
-
- Объект
- 1
-
- DataProcessorObject.ВводКонтактнойИнформации
-
-
- true
-
-
- true
-
- true
-
-
- ИмяОткрываемойФормы
-
- ru
- Имя открываемой формы
-
- 2
-
- String
-
-
-
- true
-
-
- true
-
-
-
- ПараметрыОткрываемойФормы
-
- ru
- Параметры открываемой формы
-
- 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 @@
PersonalComputerMobileDevice
-
- НаселенныйПунктАдреса
-
- ru
- Населенный пункт адреса
-
- PersonalComputer
- MobileDevice
-
-
- Форма
-
- ru
- Форма
-
- PersonalComputer
- MobileDevice
- ВводТелефона
@@ -52,4 +33,13 @@
PersonalComputerMobileDevice
+
+ НаселенныйПунктАдреса
+
+ 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 @@
63ru
- Для того чтобы синхронизировать данные необходимо указать пароль.
+ Введите пароль для входа в приложение в Интернетеtruetrue
@@ -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
+ 96Labeltruetrue
@@ -215,7 +181,7 @@
ФормаЗакрыть2РасширеннаяПодсказка
- 99
+ 97Labeltruetrue
@@ -241,7 +207,7 @@
КоманднаяПанельВыполненияОбменаРасширеннаяПодсказка
- 97
+ 95Labeltruetrue
@@ -259,6 +225,10 @@
true
+
+ ru
+ Запрос пароля пользователя
+ ruЗагрузка данных
@@ -296,7 +266,7 @@
ДлительнаяОперацияРасширеннаяПодсказка
- 101
+ 99Labeltruetrue
@@ -334,7 +304,7 @@
СтатусЗагрузкиДанныхРасширеннаяПодсказка
- 102
+ 100Labeltruetrue
@@ -371,7 +341,7 @@
ОжиданиеСинхронизацииДанныхРасширеннаяПодсказка
- 100
+ 98Labeltruetrue
@@ -407,7 +377,7 @@
КартинкаОбменЗавершенУспешноРасширеннаяПодсказка
- 106
+ 104Labeltruetrue
@@ -422,7 +392,7 @@
7true
- 3
+ 2true
@@ -444,7 +414,7 @@
СтатусОбменЗавершенУспешноРасширеннаяПодсказка
- 107
+ 105Labeltruetrue
@@ -459,7 +429,7 @@
Labeltrue
- 3
+ 2trueLeft
@@ -481,7 +451,7 @@
ОбменЗавершенУспешноРасширеннаяПодсказка
- 105
+ 103Labeltruetrue
@@ -511,7 +481,7 @@
КартинкаОбменЗавершенСОшибкойРасширеннаяПодсказка
- 109
+ 107Labeltruetrue
@@ -526,7 +496,7 @@
7true
- 3
+ 2true
@@ -549,7 +519,7 @@
СтатусОбменЗавершенСОшибкойРасширеннаяПодсказка
- 110
+ 108Labeltruetrue
@@ -564,7 +534,6 @@
Labeltrue
- 3trueLeft
@@ -586,7 +555,7 @@
ОбменЗавершенСОшибкойРасширеннаяПодсказка
- 108
+ 106Labeltruetrue
@@ -616,7 +585,7 @@
КартинкаОбменЗавершенСОшибкой1РасширеннаяПодсказка
- 112
+ 110Labeltruetrue
@@ -631,7 +600,7 @@
7true
- 3
+ 2true
@@ -656,7 +625,7 @@
СтатусОбменЗавершенСОшибкойДляАдминистратораРасширеннаяПодсказка
- 114
+ 112Labeltruetrue
@@ -671,7 +640,6 @@
Labeltrue
- 2truefalse
@@ -689,7 +657,7 @@
ПерейтиВЖурналРегистрацииРасширеннаяПодсказка
- 115
+ 113Labeltruetrue
@@ -721,7 +689,7 @@
СтатусноеСообщениеРасширеннаяПодсказка
- 113
+ 111Labeltruetrue
@@ -754,7 +722,7 @@
ОбменЗавершенСОшибкойДляАдминистратораРасширеннаяПодсказка
- 111
+ 109Labeltruetrue
@@ -784,7 +752,7 @@
КартинкаОбменЗавершенСОшибкой2РасширеннаяПодсказка
- 117
+ 115Labeltruetrue
@@ -799,7 +767,7 @@
7true
- 3
+ 2true
@@ -821,7 +789,7 @@
NoneСообщениеОбОшибкеПользователюРасширеннаяПодсказка
- 118
+ 116Labeltruetrue
@@ -866,7 +834,7 @@
ОбменЗавершенСОшибкойПодключенияРасширеннаяПодсказка
- 116
+ 114Labeltruetrue
@@ -896,7 +864,7 @@
КартинкаТребуетсяОбновлениеРасширеннаяПодсказка
- 121
+ 119Labeltruetrue
@@ -911,7 +879,7 @@
5true
- 3
+ 2truefalse
@@ -927,7 +895,7 @@
ТребуетсяОбновлениеОграниченныеПрава39
- ТекстТребуетсяОбновлениеОрганиченныеПрава
+ ТекстТребуетсяОбновлениеОграниченныеПрава40ru
@@ -940,8 +908,8 @@
true
- ТекстТребуетсяОбновлениеОрганиченныеПраваРасширеннаяПодсказка
- 124
+ ТекстТребуетсяОбновлениеОграниченныеПраваРасширеннаяПодсказка
+ 122Labeltruetrue
@@ -950,7 +918,7 @@
- ТекстТребуетсяОбновлениеОрганиченныеПраваКонтекстноеМеню
+ ТекстТребуетсяОбновлениеОграниченныеПраваКонтекстноеМеню41true
@@ -978,7 +946,7 @@
ТребуетсяОбновлениеОграниченныеПраваРасширеннаяПодсказка
- 123
+ 121Labeltruetrue
@@ -1010,7 +978,7 @@
ТекстТребуетсяОбновлениеПолныеПраваРасширеннаяПодсказка
- 126
+ 124Labeltruetrue
@@ -1047,7 +1015,7 @@
ТребуетсяОбновлениеПолныеПраваРасширеннаяПодсказка
- 125
+ 123Labeltruetrue
@@ -1077,7 +1045,7 @@
1ПанельТребуетсяОбновлениеРасширеннаяПодсказка
- 122
+ 120Labeltruetrue
@@ -1105,7 +1073,7 @@
ТребуетсяОбновлениеРасширеннаяПодсказка
- 120
+ 118Labeltruetrue
@@ -1133,7 +1101,7 @@
СтатусЗавершенияОбменаРасширеннаяПодсказка
- 104
+ 102Labeltruetrue
@@ -1165,7 +1133,7 @@
ФормаЗакрытьРасширеннаяПодсказка
- 130
+ 128Labeltruetrue
@@ -1195,7 +1163,7 @@
КоманднаяПанельЗакрытьРасширеннаяПодсказка
- 129
+ 127Labeltruetrue
@@ -1223,7 +1191,7 @@
ДействияЗакрытьРасширеннаяПодсказка
- 128
+ 126Labeltruetrue
@@ -1253,7 +1221,7 @@
УстановитьОбновлениеРасширеннаяПодсказка
- 133
+ 131Labeltruetrue
@@ -1279,7 +1247,7 @@
ФормаЗакрыть1РасширеннаяПодсказка
- 134
+ 132Labeltruetrue
@@ -1309,7 +1277,7 @@
КоманднаяПанельУстановитьЗакрытьРасширеннаяПодсказка
- 132
+ 130Labeltruetrue
@@ -1337,7 +1305,7 @@
ДействияУстановитьЗакрытьРасширеннаяПодсказка
- 131
+ 129Labeltruetrue
@@ -1366,7 +1334,7 @@
ПанельДействийРасширеннаяПодсказка
- 127
+ 125Labeltruetrue
@@ -1394,7 +1362,7 @@
ЗавершениеОбменаРасширеннаяПодсказка
- 103
+ 101Labeltruetrue
@@ -1777,42 +1745,6 @@
true
-
- WSURLВебСервиса
-
- ru
- WSURLВеб сервиса
-
- 9
-
- String
-
-
-
- true
-
-
- true
-
-
-
- WSИмяПользователя
-
- ru
- WSИмя пользователя
-
- 10
-
- String
-
-
-
- true
-
-
- true
-
- WSПароль
@@ -1953,23 +1885,6 @@
true
-
- WSЗапомнитьПароль
-
- ru
- Запомнить пароль
-
- 20
-
- Boolean
-
-
- true
-
-
- true
-
- АдресДляВосстановленияПароляУчетнойЗаписи
@@ -2019,6 +1934,91 @@
true
+
+ ИспользоватьТекущегоПользователяДляАутентификации
+
+ ru
+ Использовать текущего пользователя для аутентификации
+
+ 23
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ПарольСинхронизацииЗадан
+
+ ru
+ Пароль синхронизации задан
+
+ 9
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ЗакрытьПриУспешнойСинхронизации
+
+ ru
+ Закрыть при успешной синхронизации
+
+ 10
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ИспользоватьСохраненныеПараметрыАутентификации
+
+ ru
+ Использовать сохраненные параметры аутентификации
+
+ 20
+
+ Boolean
+
+
+ true
+
+
+ true
+
+
+
+ ЗавершениеРаботыСистемы
+
+ ru
+ Завершение работы системы
+
+ 25
+
+ Boolean
+
+
+ true
+
+
+ true
+
+ ПерейтиВЖурналРегистрации
@@ -2120,6 +2120,18 @@
+
+ ЗакрытьПриУспешнойСинхронизации
+
+ Boolean
+
+
+
+ ЗавершениеРаботыСистемы
+
+ Boolean
+
+
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 @@
OnCreateAtServerПриСозданииНаСервере
- DontBlock
+ LockOwnertruetrueVertical
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 @@
-
-
Если в процессе записи при установленном флажке Изменять в транзакции не удается записать один из элементов (например, потому что он редактируется другим пользователем), то будут отменены изменения во всех элементах. По умолчанию флажок не установлен.
-
Если изменение элементов выполняется не в транзакции, то рекомендуется выполнять ее с установленным флажком Прерывать по ошибке. В этом случае, если запись элементов по каким-либо причинам не возможна, система выдаст предупреждение и предложит продолжить изменение оставшихся элементов, либо прервать для выяснения причин проблемы. Если флажок не установлен, а элемент записать нельзя, то он будет пропущен и продолжится изменение оставшихся элементов.
-
Установка флажка Обрабатывать дочерние элементы (по умолчанию флажок не установлен) позволяет изменять дочерние элементы выбранных групп и родительских элементов без необходимости установки флажков у всех элементов групп и дочерних элементах. Если флажок снят, то система обрабатывает саму группу, а не ее дочерние элементы.
\ No newline at end of file
+
+
Дополнительно на первой странице помощника можно задать особые настройки с помощью команды Настроить параметры изменения. Система позволяет обрабатывать объекты в транзакции. Если в процессе записи при установленном флажке Изменять в транзакции не удается записать один из объектов (например, потому что объект редактируется другим пользователем), то будут отменены изменения во всех объектах. По умолчанию флажок не установлен.
+
Если изменение объектов выполняется не в транзакции, то рекомендуется выполнять ее с установленным флажком Прерывать по ошибке. В этом случае, если запись объекта по каким-либо причинам не возможна, система выдаст предупреждение и предложит продолжить изменение оставшихся объектов, либо прервать для выяснения причин проблемы. Если флажок не установлен, а объект записать нельзя, то обработка пропустит такой объект и продолжит изменение оставшихся объектов.
+
Установка флажка Обрабатывать дочерние элементы (по умолчанию флажок не установлен) позволяет изменять дочерние элементы выбранных групп и родительских объектов без необходимости установки флажков у всех элементов групп и дочерних объектов. Если флажок снят, то система обрабатывает саму группу, а не ее дочерние элементы.
\ 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 @@
truetruetrue
-
- Отбор._Владелец
-
- Items.ТаблицаОпераций.CurrentData.Свойство
-
- Normal
@@ -542,6 +536,10 @@
ОбъектыДляИзмененияИзменять53
+
+ ru
+
+ truetrue
@@ -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
- Изменение выделенных элементов
+ Групповое изменение объектовtrueDataProcessor.ГрупповоеИзменениеОбъектов.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 @@
RetrySaveValuesYes
- DontBlock
+ LockOwnertruetrueVertical
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 событий) можно ввести произвольное количество событий, которое будет запомнено.
Для того, чтобы отобрать события по некоторому критерию, служит команда Установить отбор, которая позволяет задать отбор записей журнала регистрации. Будут отображены записи, удовлетворяющие заданному отбору в количестве, не большем, чем значение поля Количество отбираемых событий. Для того, чтобы отключить отбор, служит команда Отключить отбор.
Предназначен для загрузки курсов валют с сайта РБК.
Нажмите "Добавить все валюты", удалите из списка валюты, курсы которых не требуется загружать, в полях "с" и "по" укажите интервал загружаемых курсов и затем нажмите "Загрузить".
В этой форме выводится справочная, нормативная и другая информация, поставляемая в составе программы.
Для открытия формы откройте Рабочий стол и вызовите команду "Информация при запуске" из группы "Информация" панели действий. При открытии сразу показывается одна из страниц дополнительной информации.
В командной панели формы размещены навигационные кнопки "Назад" и "Вперед", с помощью которых осуществляется переход по уже просмотренным страницам, а также пункты меню, соответствующие названиям разделов дополнительной информации. При выборе в командной панели раздела открывается список страниц дополнительной информации, относящихся к данному разделу. Страница показывается в форме при выборе пункта меню с названием страницы.
Текст страницы может содержать ссылки на другие страницы дополнительной информации (внутренние ссылки), а также ссылки на разделы сайтов, размещенных в сети Интернет (внешние ссылки). Для перехода по внешним ссылкам необходимо, чтобы компьютер имел доступ в сеть Интернет.
-
Для пользователей конфигураций ПРОФ-версий доступна настройка показа дополнительной информации при начале работы программы. Если дополнительная информация показывается в режиме рабочего стола, то в командной панели размещается флажок "Показывать при начале работы". Если снять его установку, то дополнительная информация не будет показываться при начале работы.
+
Для пользователей конфигураций ПРОФ-версий доступна настройка показа дополнительной информации при начале работы программы. Если дополнительная информация показывается в режиме рабочего стола, то в командной панели размещается флажок "Показывать при начале работы". Если снять его установку, то дополнительная информация не будет показываться при начале работы. Флажок "Показывать при начале работы" автоматически сбрасывается два раза в месяц и после обновления версии программы.
Для пользователей базовых версий конфигураций показ дополнительной информации при начале работы программы выполняется всегда.
\ 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/КонвертацияОбъектовИнформационныхБаз/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 @@
ruКонвертация объектов информационных баз
+ DataProcessor.КонвертацияОбъектовИнформационныхБаз.Form.ФормаВыводВОкноСообщенийИнформационныхСообщений
@@ -513,4 +514,13 @@
+
+ Форма
+
+ ru
+ Форма
+
+ PersonalComputer
+ MobileDevice
+
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/КонвертацияОбъектовРаспределенныхИнформационныхБаз/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 @@
Конвертация объектов распределенных информационных базtrue
+ DataProcessor.КонвертацияОбъектовРаспределенныхИнформационныхБаз.Form.ФормаУзелИнформационнойБазы
@@ -64,4 +65,13 @@
+
+ Форма
+
+ ru
+ Форма
+
+ PersonalComputer
+ MobileDevice
+
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 @@
OnCreateAtServerПриСозданииНаСервере
+
+ OnClose
+ ПриЗакрытии
+ 75
- DontBlock
+ LockOwnertruetruetrue
@@ -233,6 +237,23 @@
true
+
+ Результат
+
+ ru
+ Результат
+
+ 4
+
+ Boolean
+
+
+ true
+
+
+ true
+
+ Продолжить
@@ -260,6 +281,7 @@
Boolean
+ trueПринудительныйЗапуск
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 @@
-
+
УСЛОВИЯ РАСПРОСТРАНЕНИЯ ОБНОВЛЕНИЙ ПРОГРАММ "1С:ПРЕДПРИЯТИЕ"
Обновления к программам производства фирмы "1С", также как и сами программы, являются объектами исключительного права фирмы "1С" и распространяются по правилам, установленным фирмой "1С" как правообладателем в соответствии со ст. 1225 Гражданского кодекса.
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 @@
ruЛегальность получения обновлений
- trueDataProcessor.ЛегальностьПолученияОбновлений.Form.ПроверкаЛегальностиПолученияОбновленияПроверкаЛегальностиПолученияОбновления
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 @@
КартинкаВниманиеРасширеннаяПодсказка
- 266
+ 271Labeltruetrue
@@ -60,7 +60,7 @@
НадписьВниманиеРасширеннаяПодсказка
- 267
+ 272Labeltruetrue
@@ -100,7 +100,7 @@
Группа1РасширеннаяПодсказка
- 268
+ 273Labeltruetrue
@@ -135,7 +135,7 @@
ГруппаОповещенияОбОпасностиРасширеннаяПодсказка
- 265
+ 270Labeltruetrue
@@ -181,7 +181,7 @@
ПереключательКодТипаРезервногоКопированияРасширеннаяПодсказка
- 269
+ 274Labeltruetrue
@@ -213,7 +213,7 @@
ru
- Резервное копирование выполняется сторонними средствами
+ Не требуется резервное копирование, так как оно выполняется средствами СУБД или другими сторонними программами2
@@ -247,7 +247,7 @@
ПустаяНадписьРасширеннаяПодсказка
- 273
+ 278Labeltruetrue
@@ -282,7 +282,7 @@
ПустаяСтраницаРасширеннаяПодсказка
- 272
+ 277Labeltruetrue
@@ -320,7 +320,7 @@
LeftПериодОповещения1РасширеннаяПодсказка
- 276
+ 281Labeltruetrue
@@ -368,7 +368,7 @@
NoneЕдиницаИзмеренияПериодаОповещения2РасширеннаяПодсказка
- 278
+ 283Labeltruetrue
@@ -451,7 +451,7 @@
ГруппаПараметровНапоминания1РасширеннаяПодсказка
- 275
+ 280Labeltruetrue
@@ -483,7 +483,7 @@
СтраницаПараметровОтложенногоОповещенияРасширеннаяПодсказка
- 274
+ 279Labeltruetrue
@@ -513,7 +513,7 @@
trueСтраницыПараметровОтложенногоОповещенияРасширеннаяПодсказка
- 271
+ 276Labeltruetrue
@@ -540,7 +540,7 @@
ИнформационнаяНадписьРасширеннаяПодсказка
- 280
+ 285Labeltruetrue
@@ -577,7 +577,7 @@
СтраницаНачальногоОповещенияРасширеннаяПодсказка
- 264
+ 269Labeltruetrue
@@ -618,7 +618,7 @@
ВариантПроведенияРезервногоКопированияРасширеннаяПодсказка
- 283
+ 288Labeltruetrue
@@ -674,7 +674,7 @@
ГруппаПриветствияПриНастройкеРасписанияРКРасширеннаяПодсказка
- 282
+ 287Labeltruetrue
@@ -704,7 +704,7 @@
Декорация2РасширеннаяПодсказка
- 286
+ 291Labeltruetrue
@@ -748,7 +748,7 @@
ВариантРасписанияРезервногоКопированияРасширеннаяПодсказка
- 287
+ 292Labeltruetrue
@@ -816,7 +816,7 @@
ИзменитьРасписаниеРасширеннаяПодсказка
- 289
+ 294Labeltruetrue
@@ -849,7 +849,7 @@
trueГруппаНастройкиРасписанияКопированияРасширеннаяПодсказка
- 285
+ 290Labeltruetrue
@@ -883,7 +883,7 @@
НадписьПутьКопирования1РасширеннаяПодсказка
- 291
+ 296Labeltruetrue
@@ -922,7 +922,7 @@
NoneПутьККаталогуАрхивов2РасширеннаяПодсказка
- 292
+ 297Labeltruetrue
@@ -971,7 +971,7 @@
НадписьРекомендацииПоВыборуПути2РасширеннаяПодсказка
- 294
+ 299Labeltruetrue
@@ -1012,7 +1012,7 @@
trueГруппаЗаведенияПутиКопирования1РасширеннаяПодсказка
- 290
+ 295Labeltruetrue
@@ -1047,7 +1047,7 @@
АдминистраторИБ1РасширеннаяПодсказка
- 296
+ 301Labeltruetrue
@@ -1089,7 +1089,7 @@
ПарольАдминистратораИБ1РасширеннаяПодсказка
- 298
+ 303Labeltruetrue
@@ -1134,7 +1134,7 @@
ГруппаАвторизацииРасширеннаяПодсказка
- 295
+ 300Labeltruetrue
@@ -1179,7 +1179,7 @@
ОчисткаКаталогаСРезервнымиКопиямиПриПереполнении1РасширеннаяПодсказка
- 301
+ 306Labeltruetrue
@@ -1216,7 +1216,7 @@
NoneТипОграниченияКаталогаСРезервнымиКопиямиРасширеннаяПодсказка
- 304
+ 309Labeltruetrue
@@ -1282,7 +1282,7 @@
NoneДатаПоследнегоАктуальногоАрхива1РасширеннаяПодсказка
- 308
+ 313Labeltruetrue
@@ -1328,7 +1328,7 @@
NoneЕдиницаИзмеренияПериодаХраненияРезервныхКопийРасширеннаяПодсказка
- 310
+ 315Labeltruetrue
@@ -1400,7 +1400,7 @@
Группа4РасширеннаяПодсказка
- 307
+ 312Labeltruetrue
@@ -1435,7 +1435,7 @@
NoneКоличествоКопийВКаталоге1РасширеннаяПодсказка
- 312
+ 317Labeltruetrue
@@ -1473,7 +1473,7 @@
Группа5РасширеннаяПодсказка
- 306
+ 311Labeltruetrue
@@ -1506,7 +1506,7 @@
ГруппаВыбораТипаОчисткиРасширеннаяПодсказка
- 303
+ 308Labeltruetrue
@@ -1540,7 +1540,7 @@
trueГруппаВыбораОчисткиКаталогаОтСтарыхФайлов1РасширеннаяПодсказка
- 300
+ 305Labeltruetrue
@@ -1580,7 +1580,7 @@
RightВыполнитьРезервноеКопированиеСейчасРасширеннаяПодсказка
- 315
+ 320Labeltruetrue
@@ -1616,7 +1616,7 @@
ГруппаФлажкаРасширеннаяПодсказка
- 314
+ 319Labeltruetrue
@@ -1649,7 +1649,7 @@
СтраницаНастройкиПараметровРезервногоКопированияРасширеннаяПодсказка
- 281
+ 286Labeltruetrue
@@ -1683,7 +1683,7 @@
КартинкаВнимание1РасширеннаяПодсказка
- 319
+ 324Labeltruetrue
@@ -1711,7 +1711,8 @@
155ru
- Внимание! Данные информационной базы подвергаются риску, так как не выполняется их резервное копирование
+ Внимание! Данные информационной базы подвергаются риску,
+так как не выполняется их резервное копирование.truetrue
@@ -1720,7 +1721,7 @@
НадписьВнимание1РасширеннаяПодсказка
- 320
+ 325Labeltruetrue
@@ -1764,7 +1765,7 @@
ГруппаОповещенияОбОпасности1РасширеннаяПодсказка
- 318
+ 323Labeltruetrue
@@ -1789,7 +1790,7 @@
158ru
- Недостаточно прав для выполнения операции резервного копирования данных. Пожалуйста, обратитесь к администратору.
+ Недостаточно прав для выполнения операции резервного копирования данных. Обратитесь к администратору.truetrue
@@ -1798,7 +1799,7 @@
НадписьНедостаточноПравРасширеннаяПодсказка
- 322
+ 327Labeltruetrue
@@ -1830,7 +1831,7 @@
ГруппаПоясненияДальнейшихДействийРасширеннаяПодсказка
- 321
+ 326Labeltruetrue
@@ -1859,7 +1860,7 @@
Декорация4РасширеннаяПодсказка
- 323
+ 328Labeltruetrue
@@ -1894,7 +1895,7 @@
НадписьГотовоРасширеннаяПодсказка
- 324
+ 329Labeltruetrue
@@ -1930,7 +1931,7 @@
СтраницаДляПользователяБезПравРасширеннаяПодсказка
- 317
+ 322Labeltruetrue
@@ -1964,7 +1965,7 @@
КартинкаВнимание2РасширеннаяПодсказка
- 327
+ 332Labeltruetrue
@@ -1992,7 +1993,8 @@
164ru
- Внимание! Данные информационной базы подвергаются риску, так как не выполняется их резервное копирование.
+ Внимание! Данные информационной базы подвергаются риску,
+так как не выполняется их резервное копирование.truetrue
@@ -2001,7 +2003,7 @@
НадписьВнимание2РасширеннаяПодсказка
- 328
+ 333Labeltruetrue
@@ -2045,7 +2047,7 @@
ГруппаОповещенияОбОпасности2РасширеннаяПодсказка
- 326
+ 331Labeltruetrue
@@ -2091,7 +2093,7 @@
ПереключательКодТипаРезервногоКопированияКСРасширеннаяПодсказка
- 329
+ 334Labeltruetrue
@@ -2148,7 +2150,7 @@
ПустаяНадпись1РасширеннаяПодсказка
- 333
+ 338Labeltruetrue
@@ -2183,7 +2185,7 @@
ПустаяСтраница1РасширеннаяПодсказка
- 332
+ 337Labeltruetrue
@@ -2221,7 +2223,7 @@
LeftПериодОповещения2РасширеннаяПодсказка
- 336
+ 341Labeltruetrue
@@ -2266,7 +2268,7 @@
NoneЕдиницаИзмеренияПериодаОповещения3РасширеннаяПодсказка
- 338
+ 343Labeltruetrue
@@ -2349,7 +2351,7 @@
ГруппаПараметровНапоминания2РасширеннаяПодсказка
- 335
+ 340Labeltruetrue
@@ -2381,7 +2383,7 @@
СтраницаПараметровОтложенногоОповещения1РасширеннаяПодсказка
- 334
+ 339Labeltruetrue
@@ -2410,7 +2412,7 @@
СтраницыПараметровОтложенногоОповещения1РасширеннаяПодсказка
- 331
+ 336Labeltruetrue
@@ -2433,7 +2435,7 @@
Декорация5РасширеннаяПодсказка
- 340
+ 345Labeltruetrue
@@ -2468,7 +2470,7 @@
ИнформационнаяНадпись1РасширеннаяПодсказка
- 341
+ 346Labeltruetrue
@@ -2505,7 +2507,7 @@
СтраницаНачальногоОповещенияКлиентСерверРасширеннаяПодсказка
- 325
+ 330Labeltruetrue
@@ -2536,7 +2538,7 @@
НадписьШапкаДополнительныеНастройкиРасширеннаяПодсказка
- 343
+ 348Labeltruetrue
@@ -2580,7 +2582,7 @@
Картинка12РасширеннаяПодсказка
- 345
+ 350Labeltruetrue
@@ -2625,7 +2627,7 @@
NoneОбнаруженнаяОшибкаПодключения1РасширеннаяПодсказка
- 347
+ 352Labeltruetrue
@@ -2674,7 +2676,7 @@
НадписьПерейтиВЖурналРегистрации1РасширеннаяПодсказка
- 349
+ 354Labeltruetrue
@@ -2717,7 +2719,7 @@
ГруппаОшибкиРасширеннаяПодсказка
- 346
+ 351Labeltruetrue
@@ -2743,7 +2745,7 @@
falseГоризонтальнаяГруппаОшибкаПодключенияРасширеннаяПодсказка
- 344
+ 349Labeltruetrue
@@ -2780,7 +2782,7 @@
АдминистраторИБРасширеннаяПодсказка
- 351
+ 356Labeltruetrue
@@ -2825,7 +2827,7 @@
ПарольАдминистратораИБРасширеннаяПодсказка
- 353
+ 358Labeltruetrue
@@ -2870,7 +2872,7 @@
falseАвторизацияАдминистратораИнформационнойБазыРасширеннаяПодсказка
- 350
+ 355Labeltruetrue
@@ -2911,7 +2913,7 @@
НадписьОбновитьВерсиюКомпоненты1РасширеннаяПодсказка
- 356
+ 361Labeltruetrue
@@ -2948,7 +2950,7 @@
falseКнопкаОбновитьВерсиюКомпоненты1РасширеннаяПодсказка
- 357
+ 362Labeltruetrue
@@ -2972,7 +2974,7 @@
ГруппаComcntrФайловыйРежимРасширеннаяПодсказка
- 355
+ 360Labeltruetrue
@@ -3004,7 +3006,7 @@
falseВертикальнаяГруппаНадписиЖР3РасширеннаяПодсказка
- 359
+ 364Labeltruetrue
@@ -3030,7 +3032,7 @@
falseПанельЖурналРегистрации4РасширеннаяПодсказка
- 358
+ 363Labeltruetrue
@@ -3063,7 +3065,7 @@
ДополнительныеНастройкиРасширеннаяПодсказка
- 342
+ 347Labeltruetrue
@@ -3092,7 +3094,7 @@
СтраницыПомощникаРасширеннаяПодсказка
- 263
+ 268Labeltruetrue
@@ -3105,6 +3107,120 @@
Auto
+
+ ГруппаПояснениеДляLinuxКлиента
+ 260
+
+ КартинкаИнформация
+ 261
+
+ ru
+
+
+ true
+ true
+
+ true
+
+
+ КартинкаИнформацияРасширеннаяПодсказка
+ 366
+ Label
+ true
+ true
+
+ Left
+
+
+
+ КартинкаИнформацияКонтекстноеМеню
+ 262
+ true
+
+ 2
+ true
+ 1
+ true
+
+
+ CommonPicture.Информация
+
+
+
+
+ ПояснениеДляLinuxКлиента
+ 263
+
+ ru
+ Резервное копирование программы может запускаться
+только на компьютере под управлением ОС Windows
+
+ true
+ true
+
+ true
+
+
+ ПояснениеДляLinuxКлиентаРасширеннаяПодсказка
+ 367
+ Label
+ true
+ true
+
+ Left
+
+
+
+ ПояснениеДляLinuxКлиентаКонтекстноеМеню
+ 264
+ true
+
+ Label
+ true
+ true
+
+ Style.ПоясняющийТекст
+
+
+ Left
+
+
+ true
+ true
+
+ true
+
+
+ ru
+
+
+
+ ru
+
+
+ true
+ 86
+ false
+
+ ГруппаПояснениеДляLinuxКлиентаРасширеннаяПодсказка
+ 365
+ Label
+ true
+ true
+
+ Left
+
+
+ UsualGroup
+
+ Auto
+ StrongSeparation
+ true
+ true
+ Auto
+ Auto
+
+ Bottomtrue
@@ -3123,7 +3239,7 @@
НазадРасширеннаяПодсказка
- 260
+ 265Labeltruetrue
@@ -3153,7 +3269,7 @@
ДалееРасширеннаяПодсказка
- 261
+ 266Labeltruetrue
@@ -3183,7 +3299,7 @@
ОтменаРасширеннаяПодсказка
- 262
+ 267Labeltruetrue
@@ -3210,6 +3326,10 @@
OnCreateAtServerПриСозданииНаСервере
+
+ OnClose
+ ПриЗакрытии
+ 75LockOwnerUse
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/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
-
- ru
- Все пользователи
-
- true
- true
-
- true
-
-
- ВсеПользователиРасширеннаяПодсказка
- 114
- Label
- true
- true
-
- Left
-
-
-
- ВсеПользователиКонтекстноеМеню
- 33
- true
-
- Label
- true
- true
-
- Left
-
-
- true
- true
-
- true
-
-
- ru
- Группа нельзя установить свойство
-
-
- ru
- Группа нельзя установить свойство
-
-
- ГруппаНельзяУстановитьСвойствоРасширеннаяПодсказка
- 113
- Label
- true
- true
-
- Left
-
-
- Page
-
- Vertical
- auto
-
- ГруппаУстановитьСвойство36
@@ -1047,7 +981,7 @@
ПоказыватьПользователейДочернихГруппРасширеннаяПодсказка
- 116
+ 114Labeltruetrue
@@ -1082,7 +1016,7 @@
ГруппаУстановитьСвойствоРасширеннаяПодсказка
- 115
+ 113Labeltruetrue
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 @@
-
+
Копирование настроек пользователей:
"Скопировать настройки от пользователя" - пользователь (или внешний пользователь), чьи настройки будут использоваться для копирования другим пользователям.
"Кому копировать" - выбираются пользователи, которым необходимо скопировать настройки. При отметке значения "Выбранным пользователям" становится доступен выбор пользователей.
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
Просмотр, очистка и копирование пользовательских настроек отчетов, настроек внешнего вида программы и прочих настроек:
Список пользовательских настроек отчетов сгруппирован по названиям вариантов отчетов.
В списке Внешний вид выводятся настройки внешнего вида форм, рабочего стола и командного интерфейса программы.
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 @@
-
+
Очистка настроек пользователей:
"Очистить настройки" - выбираются пользователи, которым необходимо очистить настройки. При отметке значения "Выбранным пользователям" становится доступен выбор пользователей.
"Что очистить" - выбирается, какие настройки очищать. Если в поле "Кому очистить" выбран один пользователь, то есть возможность выбора отдельных настроек. При выборе нескольких пользователей или всех пользователей возможна очистка только всех настроек каждого пользователя.
\ 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 @@
Labeltrue
- 4
+ 5truetruetrue
@@ -390,12 +390,16 @@